Songフォーマットとモジュラーのフォーマットを考えつつ実装している。
何かテスト用のマシンが必要なので、PsycleWTL版のXMSamplerを改造してテストマシンとする予定だ。
Songフォーマットは、マルチパターンを基本にしている。
こんな感じである。
SONG FORMAT TIME +------------------------------------------> +--+------------+------------------------------------+ TRK | | PATTERN | SEQUENCE |
- +--+ ++-----------------------------+-----+ | | | ||PATTERN | | | +--+ +------+-----+---------+-------------+-----+ | | | |PATTERN | | | +--+------+-----+------+--------+--------------------+ | | |PATTERN | | | +---------------+Max:256 tracks +--------------------+ | | | | | | +---------------+ +--------------------+ | | | | | | +---------------+ +--------------------+ | | | | | | +---------------+---------------+--------------------+ | | | | +----------------------------------------------------+ V | | +----------------------------------------------------+ max 256 tracks.
Pattern DataのFormatはというと
という風である。PATTEN ROW = DELTA TICK + NOTE or COMMAND, NOTE or COMMAND .... DELTA TICK Bit 31 always 0. Bit 30 - 0 delta tick ( 0 - 2147483648 ); COMMAND CODE FORMAT 1st. DWORD Bit 31 always 1. Bit 30 always 1. Bit 29-16 COMMAND CODE (max 16384 commands) 0 - 4095 system command 4096 - 16384 user defined command Bit 15-0 COMMAND Parameter (0 - 65535) 2nd. DWORD (optional) COMMAND Parameter 3rd. DWORD (optional) . . . NOTE CODE FORMAT 1st. DWORD Bit 31 always 1. Bit 30 always 0. Bit 29-16 reserved. Bit 15 1 .. GATE TIME ON 0 .. GATE TIME OFF Bit 14 - 8 NOTE ( 0 - 127 ) Bit 7 - 0 Velocity ( 0 - 255 ) 0 .. NOTE OFF 2nd. DWORD if(Bit15 == 1) GATE TIME (0 - 2147483648 tick)
新しい?要素としては、Gate Time、Delta Timeを採用しているところだろう。
XMSamplerは、Multi Outにするつもりである。
なので、全面書き換えとなるかもしれない。