\ 2nd | ABCDEFGH IJKLMNOP 1 QRSTUVWX s YZabcdef t ghijklmn opqrstuv wxyz0123 _456789+/ // base64 ●データ形式 鍵盤開始(ver2認識コード):# (鍵盤自由)| 1小節 | ex.4/4 cf. 優先 奇数拍 B: oxxxxxxxoxxxxxxx 1+1=2byte // 4 *18 // 2分表>=1 偶数拍 b: xxxxoxxxxxxxoxxx 1=2 // 8 *16 // 2分裏>=1 正拍 Q: oxxxoxxxoxxxoxxx 2=3 // 8 *14 // 2分裏>=1&2分表>=1 裏拍 q: xxoxxxoxxxoxxxox 2=3 // 16 *12 // 4分裏>=1 >=2 8分表 O: oxoxoxoxoxoxoxox 4=5 // 16 *10 // 4分裏>=1&4分表>=1 >=2 8分裏 o: xoxoxoxoxoxoxoxo 4=5 // 32 * 8 // 8分裏>=1 >=2 16分表 X: oooooooooooooooo 8=9 // 32 * 7 // 8分裏>=1&8分表>=2 >=4 16分裏 x: ^ ^ ^ ^ 8=9 // 64 * 6 // 16分裏>=1 >=4 32分表 Z: 16=17 // 64 * 5 // 16分裏>=1&16分表>=3 >=6 (3連符) | 1小節 | 1/ 6表 S: oxxxoxxxoxxxoxxxoxxxoxxx 1+3=4byte // 12 *17 // 6分表>=1 >=2 1/ 6裏 s: xxoxxxoxxxoxxxoxxxoxxxox 3=4 // 24 *15 // 6分裏>=1 >=2 1/12表 T: oxoxoxoxoxoxoxoxoxoxoxox 6=7 // 24 *13 // 6分裏>=1&6分表>=2 >=3 1/12裏 t: xoxoxoxoxoxoxoxoxoxoxoxo 6=7 // 48 *11 // 12分裏>=1 >=3 1/24表 U: oooooooooooooooooooooooo 12=13 // 48 * 9 // 12分裏>=1&12分表>=3 >=5 ^ ^ ^ ^ (鍵盤固定) 2分表 C:) // C,cはスクラッチのみ 2分裏 c:) 4分表 R: 1+1=2byte // 8 * 4 4分裏 r: 1=2 // 16 * 3 8分表 P: 1=2 // 16 * 2 8分裏 p: 1=2 // 32 * 1 * 1〜 4のとき、選択した全てのオブジェの同時押し数が小節内のそれの最大値と等しい場合、* 5に移行。 (任意位置) 1〜7: 1+2(高さ)=3byte // 高さが同じものが2つ以上になれば(同時)にまとめる (同時) 1鍵含まない 8: 1+1(他の6鍵)+2(高さ)=4byte 1鍵含む 9: 4 スクラッチ開始:- 基本は鍵盤と同じでスクラッチの有無を0or1で表す。鍵盤位置指定部分は省略する。 ex. oxxxoxxxxxxxoxxx → (-)Q(110,1xx) → "-Qs"; ooxooxooxxxoxoox → (-)X(110,110/110,001/011,0xx) → "-XtpY"; oxoxoxoxoxoxoxox → "-P"; C,c,R,r,P,p: 1byte B,b,Q,q,S,s: 1+1=2 >=2 O,o,T,t : 2=3 >=2 X,x : 3=4 >=3 U : 4=5 >=3 Z : 6=7 >=4 スクラッチ開始(任意位置):_ // これで終わっている場合は小節先頭に1個 2(高さ)xα byte // 複数のオブジェの位置を続ける。 ●ver1→ver2への変換 ・ver1の文字列を行列に変換(オブジェがあるところに1、ないところに0)   ↓ ・拍子を割り出し、優先順位に従ってオブジェを抜き出す(抜き出したところは1→0)   ↓ ・行列の全てが0になったら文字列を連結して、ver1より短くなっていれば入れ替える