SMF モジュール クラス * Sequence * Track * Event + 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! トラックをひとつにします。 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