
クラス

     * Sequence <format, division, tc=nil>
     * Track
     * Event <offset>
          + MIDIMessage
               o ChannelMessage <..., ch>
                    # VoiceMessage
                         @ NoteOff <..., note, vel>
                         @ NoteOn <..., note, vel>
                         @ PolyphonicKeyPressure <..., note, val>
                         @ ControlChange <..., num, val>
                         @ ProgramChange <..., num>
                         @ ChannelPressure <..., val>
                         @ PitchBendChange <..., val>
                    # ChannelModeMessage
                         @ AllSoundOff <..., ch>
                         @ ResetAllControllers <..., ch>
                         @ LocalControl <..., ch, val>
                         @ AllNotesOff <..., ch>
                         @ OmniOff <..., ch>
                         @ OmniOn <..., ch>
                         @ MonoMode <..., ch, val>
                         @ PolyMode <..., ch>
          + SystemMessage
               o ExclusiveMessage
                    # ExclusiveF0 <..., data>
                    # ExclusiveF7 <..., data>
          + Meta
               o SequenceNumber <..., num>
               o Text <..., text>
                    # GeneralPurposeText (Text01)
                    # CopyrightNotice (Text02)
                    # TrackName (SequenceName, Text03)
                    # InstrumentName (Text04)
                    # Lyric (Display, Text05)
                    # Marker (Text06)
                    # CuePoint (Text07)
                    # ProgramName (Text08)
                    # DeviceName (Text09)
                    # Text0A
                    # Text0B
                    # Text0C
                    # Text0D
                    # Text0E
                    # Text0F
               o ChannelPrefix <..., ch>
               o MIDIPort <..., num> (PR-001 にない)
               o EndOfTrack
               o SetTempo <..., tempo>
               o SMPTEOffset <..., hr, mn, se, fr, ff, tc>
               o TimeSignature <..., nn, dd, cc, bb>
               o KeySignature <..., sf, mi>
               o SequencerSpecific <..., data>

Sequence

   シーケンスを表現するクラスです。シーケンスはトラックをもちます。

  スーパークラス

   Object

  インクルードしているモジュール

   Enumerable

  クラスメソッド

   decode(str)
          文字列から読みこみます。

   read(io)
          IO から読みこみます。

   load(fn)
          ファイルから読みこみます。

          上記3つのメソッドは、ヴェロシティが零のときノートオンを ノートオフで置き換えられます。

   new([format=1[, division=96[,tc=nil]]])
          シーケンスオブジェクトを作成します。

  アクセサ

   format
   division
   tc

  メソッド

   ほぼ Array と同じメソッドがつかえます。 それ以外のもの、注意が必要なものを以下で説明します。

   ntrks
          nitems と同じです。

   self >> tr
          要素を除きます。

   each{|tr| ...}
          要素について繰り返します。

          nil の要素は無視されます。

   join
   join!
          トラックをひとつにします。 EOT は、オフセットがもっとも大きなものが採用されます。

   encode
          文字列に書きます。

          もし、トラックに EOT がなければ、 トラックの最後にデルタ零の EOT を追加します。

   write(io)
          IO に書きます。

   save(fn)
          ファイルに書きます。

Track

   トラックを表現するクラスです。トラックはイベントをもちます。

  スーパークラス

   Object

  インクルードしているモジュール

   Enumerable

  クラスメソッド

   new
          トラックオブジェクトを作成します。

  メソッド

   ほぼ Array と同じメソッドがつかえます。 それ以外のもの、注意が必要なものを以下で説明します。

   nevts
          nitems と同じです。

   self >> ev
          要素を除きます。

   each{|ev| ...}
          要素について繰り返します。

          nil の要素は無視されます。また、イベントはソートされます (安定)。

Event

   イベントの抽象クラスです。

  スーパークラス

   Object

  インクルードしているモジュール

   Comparable

  アクセサ

   offset
