もくじ ・譜面仕様詳細(#memo2/#boogie, #memo1, 1列形式, #memo 全て) ・#memo2 および #boogie のまとめ ・#memo2, #memo1, 1列形式, #memo の書き比べ例
※ iBoogie 形式に対応したついでに、iBoogie 形式の「全角版」にも対応するのが 良いだろうということで、#memo2 形式を新たに設けました。 この形式では、(iBoogie形式の譜面と同様に) 小節途中でのテンポ変更や待ち時間を (…) や […] で指定できます。また、"b=" 指定が不要です。 それ以外は大体従来の #memo1 形式と同じです。 「#memo2 および #boogie のまとめ」も参照ください。 ・改行コード:CR+LFまたはLF ・文字コード:SHIFT-JIS ・上から1行ずつ取り出して読んでいく。 各行において、最初の "//" 以降はコメントとして切り捨ててから、以降の処理を行う。 ・「#コマンド」 #memo, #memo1, #memo2 2列形式の譜面フォーマット指定 さらに #memo2 は次の効果をもつ: ・その時点で "o=" 指定がなされていなかった場合 "o=0" を設定する。 #pw= 横パネル枚数(4の場合は省略可) #ph= 縦パネル枚数(4の場合は省略可) #lev= レベル(整数値) #dif= 難易度(整数値:1 BSC 2 ADV 3 EXT) #title= タイトル(ダブルクォーテーションで囲んで指定する) #artist= アーティスト名(ダブルクォーテーションで囲んで指定する) #jacket= ジャケット画像ファイル名(譜面ファイルから見た相対パス、または絶対パス)(ダブルクォーテーションで囲んで指定する) #prevpos= 曲プレビュー開始位置(ms) ※「#コマンド」はプリアンブル(最初の「譜面行」が出てくる前まで)内にしか記述できない。その後に出てきた場合の処理は規定しない。 (ちなみに jubeat_analyser は、「途中での譜面形式の変更」を、ある程度は許してくれる。非推奨だけど。) ※ プリアンブル内に複数回、指定が出てくる場合、最後に出てきたものを有効とする。 【新しい #コマンド】 #boogie 半角2列形式(つまりiboogie形式)の譜面フォーマット指定。さらに、以下の効果をもつ: ・その時点で "o=" 指定がない場合、"o=0" を設定する。 ・その時点で "m=" 指定がない場合、"m=(譜面テキストファイル名(拡張子無し)の最後の文字を除いた文字列).mp3" を設定する。 ・その時点で "#dif=" 指定がなく、かつ譜面テキストファイル名(拡張子無し)の最後の文字が '0', '1', '2' のいずれかの場合、"#dif=(その数字+1)" を設定する。 ※ これらは、Youbeatから譜面を移してくるときの作業を少しラクにするために設けられた仕様です。 (譜面の1行目に "#boogie" 指定さえすれば "#dif=" 指定と "m=" 指定は不要になる、という仕組み) ※ iBoogie から移してくる場合は、音源ファイルを.cafから.mp3(または.wav)に変換する必要があります。 #bpp= Byte per panel のことで、1パネルを ・2バイト(全角文字1文字または半角文字2文字)で表現するか(←デフォルト) ・1バイト(半角文字1文字)で表現するか を設定できる。 実は #boogie は「#memo2」かつ「#bpp=1」かつ「上述の初期化」という扱い。 これによって、1列形式を半角文字で記述することもできるようになる。(#bpp=1 とだけ指定すればよい) ・その他の '#' で始まる行:何もしない(新たにコマンドを定義できるようにするための予約域) ・曲と時間に関するコマンド -- 1小節ぶん(b=で指定した拍数だけ)、時間を進める t= テンポ(1分間の拍数)変更(小数も指定可) r= オフセット増加(ms) o= オフセット指定(ms) b= 1小節の拍数を変更(デフォルト:4。小数も指定可) m= 鳴らす音楽ファイルを指定 ※ これらは、プリアンブル外でも指定は可能。ただし小節の頭(#memo2/#boogie では、譜面チャンクの頭)でしか指定できない。 ※ "m=" は最後に書かれたもののみが有効となる。プリアンブルでの指定推奨。 ※ "o=" は必ず一度以上プリアンブルで指定しなければならない (#memo2 指定や #boogie 指定がある場合は必ずしも必要ない)。 指定されていない場合の動作は規定しない。(←jubeat_analyserでは、指定されていない場合、オフセット100msで譜面を再生してしまう!!) ※ "--" は、1列形式譜面での利用しか想定していない。 ※ "b=" は、小節の概念が薄い #memo2/#boogie 形式では指定する必要がない(指定しても読み込みに反映されない)。 ・タイミングとマーカーを設定するコマンド *■: タイミング記号設定(■は全角1文字または半角2文字(#bpp=1の場合は半角1文字))。 *D:1 と設定すれば、小節内2拍目に"D"が設定される。 ("@"〜"O"はあらかじめ0〜3.75まで設定されている。) *◎:0.333333 と設定すれば、小節内の1拍目を3分割したうちの2つめのタイミングに"◎"が設定される。 (※ 小節の概念が薄い #memo2/#boogie ではこのコマンドは使用不可とします。ご了承ください。(実は、絶対時刻(ms)指定のコマンドとしては使える)) *■/ マーカー種類設定(■は全角1文字または半角2文字(#bpp=1の場合は半角1文字))。 *@/1 と設定すれば、@は、マーカー(0〜3)のうちマーカー1で表示される。 (※譜面再生オプションの「同時押し色分け」設定よりもこちらの設定が優先される) ・以上に該当しない、(bpp)×(横パネル枚数) バイト未満の行は、何もせず読み飛ばす。 (※ jubeat_memoの小節番号は、これのおかげでコメントアウトせずとも読み飛ばされる) ・以上に該当しない行を「譜面行」として、以下のように処理する。 説明の都合上、以下では 4x4 かつ #bpp=2 とする。 以下では、「譜面チャンク」の説明において ■は全て全角1文字か半角2文字を表す。(#bpp=1 の場合は、半角1文字を表す) * は適当な文字列を表す。 【1列形式モードの場合】 ■■■■* ■■■■* ■■■■* ■■■■* (ただし■に '#', '|', '*' を含むのは禁止とする) この形式のもの(「譜面チャンク」)が書かれていることが想定されている。 ■の文字と「タイミング記号設定」に従って、各パネルにノーツを追加していく。 「タイミング記号設定」のされていない文字が書いてある場合は、ノーツを追加しない。 (ノーツを追加しない場所には "□" が書かれていることが多い (#bpp=1 の場合は 'x' が多い)) (小節の更新について) 小節の更新("b=" で指定した拍数だけ時間が進む)は "--" コマンドでのみ行える。 【2列形式モードの場合】 ■■■■*|『リズム譜面』|* または ■■■■* (ただし、'#', '|', '*' を■や*に含むのは禁止とする) という形の行が4行連続で並んだもの(「譜面チャンク」)が書かれていることが想定されている。 『リズム譜面』部分は、 #memo, #memo1 形式では、いくつかの ■ を並べることのみが許され、 #memo2/#boogie 形式では、■ と "(数値)" と "[数値]" を並べることが許される。 (ただし■に '|', '(', '[' を含んではならない。また、リズム譜面内の■を「リズムブロック」と呼ぶことにする。) 一つのリズムブロックは、#memo1, #memo2/#boogie 形式では「1/(その行のリズムブロック数) 拍」を表す。 (#memo 形式では「0.25拍」を表す。これは不便…) #memo2 形式で、"(数値)" は、テンポをその数値(小数も指定可)に変更する、の意味。 #memo2 形式で、"[数値]" は、数値のミリ秒だけ待つ、の意味。 「パネル譜面」部分の■の文字と「リズム譜面」でのタイミング指定に従って、各パネルにノーツを追加していく。 (※ 実は、#memo2/#boogie 以外では「〜拍目」の形でタイミング指定が行われているのに対し、 #memo2/#boogie では「〜ms」の形でタイミング指定が行われている。) (パネル譜面中の、ノーツを追加しない場所には、"□" が書かれることが多い (#bpp=1 の場合は 'x' が多い)。) (リズム譜面中の、ノーツの無いリズムブロックには、"−" が用いられることが多い (#bpp=1 の場合は '-' が多い)。) (小節の更新について) #memo, #memo1形式では、リズム譜面に従って拍数をカウントしていき、 拍数が "b=" で指定した拍数以上に達すれば、小節の更新が起こる("b=" で指定した拍数だけ時間が進む)。 #memo2 では、"b=" 指定は不要(意味が無い)。小節ごとにではなく、1拍('|'〜'|')ごとに時間が進んでいく感じ。 多分こっちの方がスマート。(ただし「小数拍の小節」を指定する場合だけ厄介(後述)。) ※ ノーツは各パネルごとにおいて、時間順に「追加」されなければならない、ことはもうなくなった (最後にノーツを時刻順にソートするようにした)。
・#memo2 だと、テンポを小節途中でも変更可能。さらに "b=" 指定不要になった ・#memo2 では、小数拍の小節を書く場合のみ、テンポを変化させるなど工夫が必要(後述の例を参照) ・#memo2 では、'(', '[' はリズムブロックの文字としては使えない(テンポやウェイトを指定するための文字となったため) ・#memo2 では、*■: によるタイミング指定はできない ・#boogie は、iboogie や Youbeat と譜面の書式は大体同じ、ただし ・プリアンブルに "#boogie" (または "#memo2" と "#bpp=1") を書かなければならない ・タイトル、アーティスト、レベルなどは analyser 的なやり方で指定する ・"o=", "t=", "r=" などが認識される ・タイミング指定文字として '1'〜'9','a'〜'g' 以外の文字が認識される
#memo2 | #memo1 | 1列形式 | #memo | |
譜面冒頭の例 (アルストロメリア) |
#memo2 // 1 □@@□ |(144)[1459]@−AB| □□□□ |CDEF| BF□C ADEA MJKM □HI□ □□G□ |GHIJ| L□□L |KL−M| // 2 MJKM |−@AB| FHIG |CDEF| DBCE |GHIJ| L@AL |KL−M| ※ o= と t= の指定は 従来通りの方法でも可(右参照) ※【全形式共通】小節番号が コメントアウトされているが、 コメントアウトしなくても 正常に動作する(8byte未満の 行は読み飛ばされるため) |
t=144 o=1459 #memo1 // 1 □@@□ |@−AB| □□□□ |CDEF| BF□C ADEA MJKM □HI□ □□G□ |GHIJ| L□□L |KL−M| // 2 MJKM |−@AB| FHIG |CDEF| DBCE |GHIJ| L@AL |KL−M| |
t=144 o=1459 □@@□ □IJ□ CGHD BEFB OKLO □□□□ □□□□ M□□M ------------- 2 OKLO GIJH ECDF MABM ------------ 3 |
(#memo1 に同じ、ただし 譜面形式指定は "#memo" にする) |
32分音符の例 (FLOWER 大回転) |
(#memo1 に同じ) |
@□□□ |@−−−| □□A□ |−−−−| □□B□ |−−A−| □□C□ |B−C−| BCDE |−−@−| M@□F |−−A−| LA□G |BCDEFGHI| KJIH |JKLM−−−−| |
@□□□ □□J□ □□L□ □□N□ -- *A:2 //Hと同タイミング *B:2.125 *C:2.25 //Iと同じ *D:2.375 *E:2.5 //Jと同じ *F:2.625 *G:2.75 //Kと同じ *H:2.875 *I:3 //Lと同じ *J:3.125 *K:3.25 //Mと同じ *L:3.375 ABCD LB□E KF□F JIHG -- |
@□□□ |@−−−| □□A□ |−−−−| □□B□ |−−A−| □□C□ |B−C−| *A:2 *B:2.125 *C:2.25 *D:2.375 *E:2.5 *F:2.625 *G:2.75 *H:2.875 *I:3 *J:3.125 *K:3.25 *L:3.375 ABCD |−−@−| L@□E |−−A−| KA□F |−−−−| JIHG |−−−−| |
ハネリズムの例 (AIR RAID 中盤) |
(#memo1 に同じ) |
34 CDE口 |@−A| 口FGH |B−−| B口口B |CDE| A@@A |FGH| 35 CDE口 |@−A| 口G口F |B−−| B口口B |CDE| A@@A |F−G| |
*@:0.000 *B:0.667 *C:1.000 *F:2.000 *G:2.333 *H:2.667 *I:3.000 *J:3.333 *K:3.667 FGH□ □KJI C□□C B@@B ---------- FGH□ □K□I C□□B B@@C ---------- ※ ハネリズム終了後、 @〜Kを再定義する 必要がある。 |
*@:0.000 *B:0.667 *C:1.000 *F:2.000 *G:2.333 *H:2.667 *I:3.000 *J:3.333 *K:3.667 FGH□ |−−−−| □KJI |−−−−| C□□C |−−−−| B@@B |−−−−| FGH□ |−−−−| □K□I |−−−−| C□□B |−−−−| B@@C |−−−−| ※ リズム譜面は 4リズムブロックに しておく必要がある。 (#memo では1リズムブロック あたり0.25拍なので) |
7拍子曲の冒頭の例 (HEAT-BIT-HIT-BEAT) |
#memo2 口C@口 |(180)[1000]@−−−| @DAC |A−−−| A口口D |B−C−| B口口B |−−D−| A口口@ |−−@−| B口口B |A−−−| 口@A口 |B−−−| B口口B 口DC口 |@−−−| C@AD |A−−−| A口口@ |B−C−| 口BB口 |−−D−| @口口@ |−−@−| 口AA口 |A−−−| B口口B |B−−−| ABBA ※ "b=7" 指定は不要 ※ 曲の途中で拍子が 変わる場合も、"b=" 指定は不要 |
t=180 o=1000 b=7 #memo2 口C@口 |@−−−| @DAC |A−−−| A口口D |B−C−| B口口B |−−D−| A口口@ |−−@−| B口口B |A−−−| 口@A口 |B−−−| B口口B 口DC口 |@−−−| C@AD |A−−−| A口口@ |B−C−| 口BB口 |−−D−| @口口@ |−−@−| 口AA口 |A−−−| B口口B |B−−−| ABBA ※ "b=7" 指定が必要 ※ 曲の途中で拍子が 変わる場合、その都度 "b=" 指定が必要 |
t=180 o=1000 b=7 *R:4.5 *21:5 *25:6 口J@口 @NDJ D口口N H口口H 21口口R 25口口25 口R21口 25口口25 ---------- 口NJ口 J@DN D口口@ 口HH口 R口口R 口2121口 25口口25 21252521 ---------- |
(#memo1 に同じ) |
小数拍子の例 (GIGA BREAK 発狂地帯) |
※ 整数拍ずつしか時間を 進められないので、テンポ を変化させる必要がある。 @ILC |@ABC| MDAM |DEFG| FKHF |HIJK| GBEJ |(270)LM| @IIC |(135)@ABC| □DA□ |DEFG| FHHF |−H−I| GBEG |(540)−| @ILC |(135)@ABC| MDAM |DEFG| FKHF |HIJK| GBEJ |(270)LM| @IIC |(135)@ABC| □DA□ |DEFG| FHHF |−H−I| GBEG |(540)−| ※ ↓も↑と同じ意味に なる(シャッターの拍動の 仕方は、むしろ↓の方が自然。) @ILC |(180)@AB| MDAM |(135)CDEF| FKHF |(180)GHI| GBEJ |(135)JKLM| @IIC |(180)@AB| □DA□ |(135)CDEF| FHHF |(90)G−H−I−| GBEG @ILC |(180)@AB| MDAM |(135)CDEF| FKHF |(180)GHI| GBEJ |(135)JKLM| @IIC |(180)@AB| □DA□ |(135)CDEF| FHHF |(90)G−H−I−| GBEG |
b=3.5 @ILC |@ABC| MDAM |DEFG| FKHF |HIJK| GBEJ |LM−−| b=3.25 @IIC |@ABC| □DA□ |DEFG| FHHF |−H−I| GBEG |−−−−| b=3.5 @ILC |@ABC| MDAM |DEFG| FKHF |HIJK| GBEJ |LM−−| b=3.25 @IIC |@ABC| □DA□ |DEFG| FHHF |−H−I| GBEG |−−−−| ※ #memo のように書くと 意味が変わってしまう (Mのタイミングが 変わってしまう) |
b=3.5 @ILC MDAM FKHF GBEJ -- b=3.25 @KKC □DA□ FIIF GBEG -- b=3.5 @ILC MDAM FKHF GBEJ -- b=3.25 @KKC □DA□ FIIF GBEG -- |
b=3.5 @ILC |@ABC| MDAM |DEFG| FKHF |HIJK| GBEJ |LM| b=3.25 @IIC |@ABC| □DA□ |DEFG| FHHF |−H−I| GBEG |−| b=3.5 @ILC |@ABC| MDAM |DEFG| FKHF |HIJK| GBEJ |LM| b=3.25 @IIC |@ABC| □DA□ |DEFG| FHHF |−H−I| GBEG |−| ※ #memo1 のように 書いても同じ意味になる ※ jubeat_memo の GIGA BREAK の譜面は この表記になっている (少なくとも3年間以上) |
小節途中でBPM変化する例 (JOMANDA 加速地帯) |
HAAH |@−(95)A(100)−| BFFD |(110)BCDE| ICEJ |(120)−F−G| G@@G |H−IJ| |
※ #memo2 以外では、 「小節を分ける」しかなく、 かなり書きづらい。 b=0.5 □□□□ |@| □□□□ □□□□ □@@□ t=95 b=0.25 □AA□ |A| □□□□ □□□□ □□□□ t=100 □□□□ |−| □□□□ □□□□ □□□□ b=1 t=110 □□□□ |BCDE| B□□D □CE□ □□□□ b=2 t=120 H□□H |−F−G| □FF□ |H−IJ| I□□J G□□G ※ 必要に応じて この後 "b=4" に 戻す必要あり |
※ #memo2 以外では、 「小節を分ける」しかなく、 かなり書きづらい。 b=0.5 □□□□ □□□□ □□□□ □@@□ --------- t=95 b=0.25 □@@□ □□□□ □□□□ □□□□ --------- t=100 □□□□ □□□□ □□□□ □□□□ --------- b=1 t=110 □□□□ @□□B □AC□ □□□□ --------- b=2 t=120 D□□D □AA□ F□□G C□□C --------- ※ 必要に応じて この後 "b=4" に 戻す必要あり |
※ #memo2 以外では、 「小節を分ける」しかなく、 かなり書きづらい。 b=0.5 □□□□ |@−| □□□□ □□□□ □@@□ t=95 b=0.25 □AA□ |A| □□□□ □□□□ □□□□ t=100 □□□□ |−| □□□□ □□□□ □□□□ b=1 t=110 □□□□ |BCDE| B□□D □CE□ □□□□ b=2 t=120 H□□H |−F−G| □FF□ |H−IJ| I□□J G□□G ※ 必要に応じて この後 "b=4" に 戻す必要あり |