jp.crestmuse.cmx.filewrappers
クラス MusicXMLWrapper

java.lang.Object
  上位を拡張 jp.crestmuse.cmx.filewrappers.CMXFileWrapper
      上位を拡張 jp.crestmuse.cmx.filewrappers.MusicXMLWrapper
すべての実装されたインタフェース:
PianoRollCompatible

public class MusicXMLWrapper
extends CMXFileWrapper
implements PianoRollCompatible

The MusicXMLWrapper class wraps a MusicXML document.

MusicXMLWrapperクラスは, MusicXMLドキュメントをラップします.

MusicXMLについては, ここここなどを参照してください. 本クラスでは, PartwiseとTimewiseのうち, Partwiseのみをサポートします. また, ここの要素から情報を取り出すNodeInterfaceについては, MusicXMLのすべての要素に対応しているわけではありません.

MusicXMLWrapperオブジェクトからデータを取り出すためには, 主に2つの方法が あります. 1つは, getPartListメソッドを用いる方法です. これを用いると, Partクラスの配列が得られます. Partクラスはpart要素から情報を取り出すためのクラスです. その後, 各Partオブジェクトに対してgetMeasureListメソッドを呼び出します. そうすると, 当該part要素内のmeasure要素をラップするMeasureオブジェクトの 配列が得られます. 同様に, 各Measureオブジェクトに対してgetMusicDataListメソッドを呼び出して 当該measure要素内の要素を得ます. getMusicDataListメソッドで返されるのはMusicDataクラスの配列ですが, 実際は, その要素に合わせてNoteクラスだったりAttributeクラスだったり ForwardクラスだったりBackupクラスだったりしますので, instanceof演算子でどのクラスのインスタンスなのかを確かめた上で ダウンキャストしてすべき処理を行います. もう1つの方法は, processNotePartwiseメソッドを用いる方法です. NoteHandlerPartwiseインターフェイスを実装したクラスに 自分のしたい処理を記述して, processNotePartwiseメソッドの引数に渡すと, 上記の処理を自動的に行ってくれます.

PartwiseNoteViewとTimewiseNoteView

MusicXMLWrapperクラスでは, 各音符(Noteオブジェクト)を二分木に納めたTreeViewを 提供します. TreeViewで提供されている各種メソッドを利用することで, 指定した音(Noteオブジェクト)の次の音や同時になる他の音を探索することが可能です. 現在のバージョンでは, TreeViewは2種類提供されます. 1つがPartwiseTreeViewで, パートごとに別々の二分木を構成したものです. このTreeViewでは, backup要素を使って声部をわけてある場合に, 枝わかれするように要素が追加されていきます. これは, ある音に対して同一パート(あるいは声部内)で次の音や前の音をたどるのに 便利です. もう1つがTimewiseTreeViewで, すべてのパートの音を1つの二分木にまとめて 格納したものです. これは, ある音と同時に鳴る音をパートや声部を越えてすべて洗い出すといった場面で 便利です. また, スラーを自動的に検出し, スラーに続する音の列もTreeViewで管理します.

スラーの管理

スラーもTreeViewを利用して管理します. スラーごとにTreeViewオブジェクトが生成され, たとえば指定した音からはじまるスラーに対応するTreeViewのリストを取得するといった ことが簡単にできます. ただし, 現在のバージョンでは声部にまたがるスラーは対応しておらず, 無視されます.

バージョン:
0.21
作成者:
Tetsuro Kitahara (t.kitahara@ksc.kwansei.ac.jp)

入れ子のクラスの概要
 class MusicXMLWrapper.Attributes
          Attributes要素から情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.Backup
          backup要素から情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.BarLine
           
 class MusicXMLWrapper.Direction
          Direction要素から情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.DirectionType
          DirectionType要素から情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.Forward
          forward要素から情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.Measure
          This class provides methods for getting information from a measure element.
 class MusicXMLWrapper.MusicData
          MusicXMLドキュメントの要素のうち, score.dtdでmusic-dataエンティティに 指定されているもの, 具体的には note, backup, forward, direction, attributes, harmony, figured-bass, print, sound, barline, grouping, link, bookmark をラップするクラスです.
 class MusicXMLWrapper.Notations
          notations要素内で記述される情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.Note
          note要素からの情報を取り出すためのメソッドを提供します.
 class MusicXMLWrapper.Part
          This class provides methods for getting information from a "part" element.
 class MusicXMLWrapper.StartStopElement
          StartStopElementクラスは, type属性とnumber属性を持ち, type属性はstart, stop, continueのいずれか, number属性は正の整数を 値に持つ, という性質を満たす要素をラップするクラスです.
 
フィールドの概要
 
クラス jp.crestmuse.cmx.filewrappers.CMXFileWrapper から継承されたフィールド
catalogFileName, linkmanager
 
コンストラクタの概要
MusicXMLWrapper()
           
 
メソッドの概要
protected  void analyze()
          各種処理の準備として, 内部で各種ノートビューを作成します.
 int getCumulativeTicks(int measure, int ticksPerBeat)
           
 java.util.List<MusicXMLWrapper.Attributes> getMeasureAttributesList(int partIndex)
          小節のattributeタグを取得します.
 java.io.InputStream getMIDIInputStream()
           
 java.lang.String getMovementTitle()
          楽曲タイトルを取得します.
 java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getNoteViewsEndingWith(MusicXMLWrapper.Note note)
           
 java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getNoteViewsIncluding(MusicXMLWrapper.Note note)
           
 java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getNoteViewsStartingWith(MusicXMLWrapper.Note note)
           
 MusicXMLWrapper.Part[] getPartList()
          Returns the array of the parts contained in the MusicXML document.
 java.util.ArrayList<SimpleNoteList> getPartwiseNoteList(int ticksPerBeat)
           
 java.util.List<TreeView<MusicXMLWrapper.Note>> getPartwiseNoteView()
          Returns the partwise note view.
 java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getSlurredNoteViews(byte number)
           
 TreeView<MusicXMLWrapper.Note> getTimewiseNoteView()
          Returns the non-partwise note view.
 boolean hasMovementTitle()
           
 SCCXMLWrapper makeDeadpanSCCXML(int ticksPerBeat)
           
 void makeDeadpanSCCXML(SCCXMLWrapper dest, int ticksPerBeat)
           
 void processNotePartwise(NoteHandlerPartwise handler)
          Repeats the same process for each of music data in the MusicXML document based on the specified handler.
 void processNotes(CommonNoteHandler h)
           
 
クラス jp.crestmuse.cmx.filewrappers.CMXFileWrapper から継承されたメソッド
addChild, addChild, addChildAndText, addChildAndText, addChildAndText, addClassTable, addDocumentTypeTable, addLinks, addLinks, addSibling, addSibling, addText, addText, addText, checkFinalized, createDocument, finalizeDocument, getDocument, getFileName, getTopTagAttribute, getTopTagAttributeNS, init, isFinalized, readfile, readfile, readfile, returnToParent, selectNodeList, selectNodeList, selectSingleNode, selectSingleNode, setAttribute, setAttribute, setAttribute, setAttributeNS, setAttributeNS, setAttributeNS, setTopTagAttribute, setTopTagAttributeNS, write, write, writefile, writefile, writeGZippedFile, writeGZippedFile
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

MusicXMLWrapper

public MusicXMLWrapper()
メソッドの詳細

processNotePartwise

public void processNotePartwise(NoteHandlerPartwise handler)
                         throws javax.xml.transform.TransformerException

Repeats the same process for each of music data in the MusicXML document based on the specified handler.

指定されたハンドラに基づいて, MusicXMLドキュメントに含まれる各音楽要素に対して 同じ処理を繰り返します. このメソッドは基本的には以下の処理と等価です.

for (Part part : getPartList()) {
  handler.beginPart(part, this);
  for (Measure measure : part.getMeasureList()) {
    handler.beginMeasure(measure, this);
    for (MusicData md : measure.getMusicDataList())
      handler.processMusicData(md, this);
    handler.endMeasure(measure, this);
  }
  handler.endPart(part, this);
}

例外:
javax.xml.transform.TransformerException

processNotes

public void processNotes(CommonNoteHandler h)
                  throws javax.xml.transform.TransformerException
定義:
インタフェース PianoRollCompatible 内の processNotes
例外:
javax.xml.transform.TransformerException

getPartList

public MusicXMLWrapper.Part[] getPartList()

Returns the array of the parts contained in the MusicXML document.

MusicXMLドキュメントに含まれるパート(Partオブジェクト)の配列を返します.


makeDeadpanSCCXML

public SCCXMLWrapper makeDeadpanSCCXML(int ticksPerBeat)
                                throws javax.xml.transform.TransformerException,
                                       java.io.IOException,
                                       javax.xml.parsers.ParserConfigurationException,
                                       org.xml.sax.SAXException
例外:
javax.xml.transform.TransformerException
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException

makeDeadpanSCCXML

public void makeDeadpanSCCXML(SCCXMLWrapper dest,
                              int ticksPerBeat)
                       throws javax.xml.transform.TransformerException,
                              java.io.IOException,
                              javax.xml.parsers.ParserConfigurationException,
                              org.xml.sax.SAXException
例外:
javax.xml.transform.TransformerException
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException

getPartwiseNoteView

public java.util.List<TreeView<MusicXMLWrapper.Note>> getPartwiseNoteView()
                                                                   throws javax.xml.transform.TransformerException

Returns the partwise note view.

パートごとのノートビューを取得します.

例外:
javax.xml.transform.TransformerException

getTimewiseNoteView

public TreeView<MusicXMLWrapper.Note> getTimewiseNoteView()
                                                   throws javax.xml.transform.TransformerException

Returns the non-partwise note view.

パートごとでないノートビュー(すべての音符を1つのノートビューに納めてある)を 取得します.

例外:
javax.xml.transform.TransformerException

getMeasureAttributesList

public java.util.List<MusicXMLWrapper.Attributes> getMeasureAttributesList(int partIndex)

小節のattributeタグを取得します.

パラメータ:
partIndex - 声部番号(0始まり)
戻り値:

getMovementTitle

public java.lang.String getMovementTitle()

楽曲タイトルを取得します.

導入されたバージョン:
20007.8.31

hasMovementTitle

public boolean hasMovementTitle()

getCumulativeTicks

public int getCumulativeTicks(int measure,
                              int ticksPerBeat)

getPartwiseNoteList

public java.util.ArrayList<SimpleNoteList> getPartwiseNoteList(int ticksPerBeat)
                                                        throws javax.xml.transform.TransformerException
定義:
インタフェース PianoRollCompatible 内の getPartwiseNoteList
例外:
javax.xml.transform.TransformerException

getMIDIInputStream

public java.io.InputStream getMIDIInputStream()
                                       throws java.io.IOException,
                                              javax.xml.transform.TransformerException,
                                              org.xml.sax.SAXException,
                                              javax.xml.parsers.ParserConfigurationException
定義:
インタフェース PianoRollCompatible 内の getMIDIInputStream
例外:
java.io.IOException
javax.xml.transform.TransformerException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException

analyze

protected void analyze()
                throws javax.xml.transform.TransformerException
各種処理の準備として, 内部で各種ノートビューを作成します.

オーバーライド:
クラス CMXFileWrapper 内の analyze
例外:
javax.xml.transform.TransformerException

getSlurredNoteViews

public java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getSlurredNoteViews(byte number)

getNoteViewsIncluding

public java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getNoteViewsIncluding(MusicXMLWrapper.Note note)

getNoteViewsStartingWith

public java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getNoteViewsStartingWith(MusicXMLWrapper.Note note)

getNoteViewsEndingWith

public java.util.List<? extends TreeView<MusicXMLWrapper.Note>> getNoteViewsEndingWith(MusicXMLWrapper.Note note)