=begin
= SMF モジュ〖ル

== クラス

* Sequence <format, division>

* Track

* Event <offset>
  * MIDIMessage
    * ChannelMessage <..., ch>
      * VoiceMessage
        * NoteOff <..., note, vel>
        * NoteOn <..., note, vel>
        * PolyphonicKeyPressure <..., note, val>
        * ControlChange <..., num, val>
        * ProgramChange <..., num>
        * ChannelPressure <..., val>
        * PitchBendChange <..., val>
      * ChannelModeMessage <..., num, val>

  * SystemMessage
    * Exclusive
      * ExclusiveF0 <..., data>
      * ExclusiveF7 <..., data>

  * Meta <..., type>
    * SequenceNumber <..., num>
    * Text <..., text>
      * GeneralPurposeText (Text01)
      * CopyrightNotice (Text02)
      * TrackName (SequenceName, Text03)
      * InstrumentName (Text04)
      * Lyric (Text05)
      * Marker (Text06)
      * CuePoint (Text07)
      * ProgramName (Text08)
      * DeviceName (Text09)
      * Text0A
      * Text0B
      * Text0C
      * Text0D
      * Text0E
      * Text0F
    * ChannelPrefix <..., ch>
    * MIDIPort <..., num>
    * EndOfTrack
    * SetTempo <..., tempo>
    * SMPTEOffset <..., hr, mn, se, fr, ff>
    * TimeSignature <..., nn, dd, cc, bb>
    * KeySignature <..., sf, mi>
    * SequencerSpecific <..., data>

== Sequence

シ〖ケンスを山附するクラスです。シ〖ケンスはトラックをもちます。

=== ス〖パ〖クラス

Object

=== クラスメソッド

: decode(str)
  矢机误から粕みこみます。

: decodeio(io)
  IO から粕みこみます。

: decodefile(fn)
  ファイルから粕みこみます。

: new([format=1[, division=96]])
  シ〖ケンスオブジェクトを侯喇します。

=== アクセサ

: format
: division

=== メソッド

: length
: size
  妥燎眶を手します。

: ntrks
  妥燎眶を手します。

  nil の妥燎は椽年しません。

: self << tr
  琐萨に纳裁します。

: self >> tr
  妥燎を近きます。

: push(tr)
  琐萨に纳裁します。

: pop
  琐萨の妥燎を艰り近きます。

: unshift(tr)
  黎片に纳裁します。

: shift
  黎片の妥燎を艰り近きます。

: self[n]
  n 戎誊の妥燎を手します。

: self[n]=tr
  n 戎誊の妥燎を恃构します。

: each{|tr| ...}
  妥燎について帆り手します。

  nil の妥燎は痰浑されます。

: encode
  矢机误に今きます。

  もし、トラックに EOT がなければ、
  トラックの呵稿にデルタ雾の EOT を纳裁します。

: encodeio(io)
  IO に今きます。

: encodefile(fn)
  ファイルに今きます。

== Track

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

=== ス〖パ〖クラス

Object

=== クラスメソッド

: new
  トラックオブジェクトを侯喇します。

=== メソッド

: length
: size
  妥燎眶を手します。

: nevts
  妥燎眶を手します。

  nil の妥燎は椽年しません。

: self << ev
  琐萨に纳裁します。

: self >> ev
  妥燎を近きます。

: push(ev)
  琐萨に纳裁します。

: pop
  琐萨の妥燎を艰り近きます。

: unshift(ev)
  黎片に纳裁します。

: shift
  黎片の妥燎を艰り近きます。

: self[n]
  n 戎誊の妥燎を手します。

: self[n]=ev
  n 戎誊の妥燎を恃构します。

: each{|ev| ...}
  妥燎について帆り手します。

  nil の妥燎は痰浑されます。また、イベントはソ〖トされます。

== Event

イベントの藐据クラスです。

=== ス〖パ〖クラス

Object

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

Comparable

=== アクセサ

: offset

=end