maidata.txtの譜面書式

  1. BPMの設定/○分音符の設定
  2. TAP・BREAKを配置する
  3. HOLDを配置する
  4. SLIDEを配置する
  5. EACHを設定する
  6. 終了地点を定義する


maimaiにおけるボタン配置

 ⑧① 
⑦  ②
⑥  ③
 ⑤④ 

①="1"、②="2"……⑧="8"、のように、ボタン番号の数字をそのまま譜面の中に書き入れます。
以下、「ボタン番号」という言葉が出てきた場合は、1~8の数字を入れると思ってください。

基本的な書式

BPMを設定

<例>
(120)

<書式>
(b)

b……BPMの値

<備考>
譜面の初めに"(120){4}"のような形でBPMと使用する音符を必ず定義しておかないといけない。しないとsimaiが泣く
曲中でBPMの値だけを変更した場合、使用する音符の値は変わらない
不安なら"(135){4}"のように音符の設定とセットで書いてあげれば安心
○分音符はBPMがあってこそ決まるものなので、譜面の初めに"{4}(120)"のように逆に書いてしまうとバグってしまう
小数使用可

○分音符を設定

<例>
{4}

<書式>
{x}

x……○分音符の○の数字

<備考>
譜面の初めに"(120){4}"のような形でBPMと使用する音符を必ず定義しておかないといけない。しないとsimaiが泣く
小数は多分使えるが、使う人はまずいないと思われる

TAPを配置

<例>
1,
2,

<書式>
B,

B……ボタン番号

<備考>
特になし。基本中の基本のリング

☆TAPを配置

<例>
1$,
2$,

<書式>
B$,

B$……ボタン番号

<備考>
$をつけると強制的に☆TAPに変更。BREAKと組み合わせることもできる

HOLDを配置

<例>
1h[4:3],
2h[1:3],

<書式>
Bh[x:y],

B……ボタン番号
h……HOLDであることを表す文字
x……○分音符の○の数字
y……x分音符の個数

<備考>
4分音符3個分なら[4:3]。全音符3個分なら[1:3]
要は1小節という長さに「x分のy」をかけた長さになると思えばいい
「x分のy」が約分できる分数であった場合、約分することができる。できるならしておくことを推奨
h1、h2のように数字とhを逆に書いてしまうとバグってしまう

SLIDEを配置

<例>
1-5[4:3],
2^7[1:3],

<書式>
直線 :F-E[x:y],
弧形 :F^E[x:y],
左回転:F<E[x:y],
右回転:F>E[x:y],
v形 :FvE[x:y],
p形 :FpE[x:y],
q形 :FqE[x:y],
s形 :FsE[x:y],
z形 :FzE[x:y],
pp形:FppE[x:y],
qq形:FqqE[x:y],
屈折形:FvRE[x:y],
扇形 :FwE[x:y],

同始点:1-4[4:1]*-6[4:1]  ※一例。この場合だと1-4と1-6のスライドが組み合わさった同始点スライドになる
BREAK :1b-4[4:1]     ※一例。この場合だと1-4のスライドの始点がBREAKになる

F……始点のボタン番号
R……屈折点のボタン番号
E……終点のボタン番号
x……○分音符の○の数字
y……x分音符の個数

<備考>
4分音符3個分なら[4:3]。全音符3個分なら[1:3]
要は1小節という長さに「x分のy」をかけた長さになると思えばいい
「x分のy」が約分できる分数であった場合、約分することができる。できるならしておくことを推奨
始点に対して終点の位置がおかしかった場合、☆は動くが矢印が全く表示されなくなる
☆TAPが判定ラインに重なると、☆が動き出すまでのわずかな時間「タメ時間」が発生
タメ時間の長さは、☆TAPが判定ラインに到着した時点でのBPMにおける4分音符1つ分

すべてのスライドの始点と終点の関係を表す表です。"○"になっているところに終点を持ってくることができます。


BREAKを配置

<例>
1b,
2b,

<書式>
Bb,

B……ボタン番号
b……BREAKであることを表す文字

<備考>
b1、b2のように数字とbを逆に書いてしまうとバグってしまう
EACHの対象になっても黄色にならない
「1b$」または「1$b」のように書くと☆BREAKとして表示できる

EACHを設定

<例>
※ T……TAP H……HOLD S……SLIDE B……BREAK

(T/T) 1/2,                          (T/T) 12,
(T/H) 1/2h[x:y],
(T/S) 1/2^7[x:y],
(T/B) 1/2b,
(H/H) 1h[x:y]/2h[x:y],
(H/S) 1h[x:y]/2^7[x:y],
(H/B) 1h[x:y]/2b,
(S/S) 1-5[x:y]/2^7[x:y],
(S/B) 1-5[x:y]/2b,
(B/B) 1b/2b,

<書式>
リングAの情報/リングBの情報

リングAの情報……TAP、HOLD、SLIDE、BREAKの書式をそのまま書き入れる
リングBの情報……同上
/……EACHとして扱うことを表す文字

TAPとTAPのEACHに限り、"/"を省略してもよい

<備考>
基本的に2つのリングの情報を書き、リングとリングの間に"/"を入れればよい
リングの順番は関係なく、内部的には"2/1" = "1/2"として扱ってくれる
TAPとTAPのEACHに限り、"/"を省略して数字2文字で書いてもEACHとして扱ってくれる
EACHとして扱われたリングは黄色くなるが、BREAKだけは色が変わらない
また、SLIDEの矢印の色は、SLIDEとSLIDEのEACHの時だけ黄色になり、片方だけSLIDEの場合は水色になる(色が変わらない)
リングカウンターに表示されるEACHの値は、EACHとして登場するリングが何組あるかを表している
"組"なので、仮に譜面の全てがEACHだったとしても、EACHの最大数は最大コンボ数の半分になる
(最大コンボ数が奇数だった場合は、最後の1つはEACHにできないので、最大コンボ数÷2の商を切り捨てたものになる)

譜面の終了地点を定義

<例>
&inote_1=
(120){4}
1,2,3,4,
{1}
5h[4:3],
8^5[8:7],
,

2b/3b,
,

,
E ←これ

<備考>
譜面の終了地点に設定したいところに"E"を書く。"e"はダメ
もし"E"をどこにも書いていなかった場合、MP3が流れ終わって停止する瞬間を終了地点として扱う
SLIDEの☆が動いている途中だったり、HOLDを押し続けている間に終了地点を迎えてしまうと、
それらのリングの点数が入らないので、終了地点には注意すること

終了地点は、MP3の長さを超えることはできない
例えば、MP3の長さが2分00秒00だったとしたら、終了地点が2分02秒55だったとしても2分00秒00として扱われる
2分00秒00~2分02秒55の譜面は再生されないので注意

終了地点を迎えると、再生中の曲はそこでストップしてしまう
それがイヤなら、譜面の最後のリングを配置して、その後に、

(1){1}
,
E

とでも書いておけば大丈夫だと思われる。BPM1の全音符は秒数にして240秒であるためまず確実だろう

特殊な書式(直接秒数を指定する)

BPMの設定、HOLDを押し続ける長さ、SLIDEの☆が流れる速さの3つに対しては、
BPMの値や音符何個分の長さなのかが分からない時、"#xxx" (xxxは秒数)と書くことで、
入力した数字をそのまま秒数として設定することができます。

例えば、BPM120の8分音符の場合、単位時間は240÷8÷120=0.25秒になりますが、
これが「BPM120の8分音符」ということが分からないとした場合、"{#0.25"}と書けば、
それ以降のカンマの単位時間を0.25秒にすることができます。

したがって、

&inote_1=
(120){#0.25}
1,3,5,7,2,4,6,8,

という譜面を書いた場合、これと、

&inote_1=
(120){8}
1,3,5,7,2,4,6,8,

という譜面は全く同じ意味を持つ譜面となります。

HOLDであれば以下のように書きます。

&inote_1=
(120){1}
2h[#1.5],

SLIDEだけちょっと特殊な書き方をします。

&inote_1=
(120){1}
3-7[160#2],

このように書いた場合、
タメ時間はBPM160の長さで、☆が動く時間は2秒という記述になります。

&inote_1=
(120){1}
3-7[160#8:3],

このように書いた場合、
タメ時間はBPM160の長さで、☆が動く時間はBPM160の8分音符3つ分という記述になります。
この書式は、創作譜面で時々見られる「曲自体のBPMは変わらないのにスライドのBPMだけ違う」という譜面を作るときに便利です。

&inote_1=
(120){1}
3-7[3##1.5],

このように書いた場合、
タメ時間は3秒、☆が動く時間は1.5秒という記述になります。
ネタ譜面を作る時はこの記述が役立つかもしれません。

例えばBPMがどんどん加速していく地帯にリングを配置する時に、どんどん加速していくごとに小数第何位までBPMを求めたりすることをせずに、
直接秒数を指定して少しずつ調整していくことができるため、多少楽になったりします。

改行とタブスペースの有効活用法

&inote_1~&inote_5の譜面データに関しては、改行のほかにタブスペースを入れても無視されます。
それは言いかえれば、いくらでも改行とタブスペースを使ってもいいということです。

改行に関しては、曲にもよりますがだいたい4・8・16小節で1行余分に改行すると見やすくなります。
AメロとBメロとサビで分ける、などでもいいでしょう。
そうしておくと、いざ譜面を修正しないといけなくなった時に、間違っている箇所を探す時に見つけやすくなります。

タブスペースに関しては、例えばこんな時に効果を発揮します。
例えばこんな譜面があったとします。

&inote_1=
{1}
1,
{4}
8,7,6,5,
{1}
4,
{8}
8,8,7,7,6,6,5,5,
{1}
4,
{2}
1^4[8:1],8^5[8:1],
{1}
1b,
{4}
1b/8b,2b/7b,3b/6b,,

(1){1}
,
E

適当に書いた譜面です。
書式的なエラーはどこにもないのですが、ちょっと見にくいと思いませんか?
1小節ごとに音符がいろいろ変わってしまっていて、音符の変更に律儀に1行使った結果、こうなってしまいました。

でも、タブスペースを使えばこんな風に書けます。
(このwikiではタブスペースを書けないので、半角スペース8つで代用します)

{1}        1,
{4}        8,7,6,5,
{1}        4,
{8}        8,8,7,7,6,6,5,5,
{1}        4,
{2}        1^4[8:1],8^5[8:1],
{1}        1b,
{4}        1b/8b,2b/7b,3b/6b,,

(1)
{1}        ,
           E

はい、こんな風に書けます。どちらが見栄えよく見えますか?
もちろん人によって見やすさが違うので、実際に譜面を書くときは自分が一番分かりやすい形で書いていただければ大丈夫です。

コメント文の挿入 (Ver1.10~)

<例>
(120){4}
1,3,5,7,

>>ここから8分音符
{8}
1,3,5,7,2,4,6,8,

<書式>
譜面のコメントしたい箇所に「>>コメント(改行)」のように記述する
最後の改行は必須

<備考>
「>>」は半角の「>」を2つ並べたもの、全角の「>>」は不可
コメントの内容は画面のどこにも表示されず、また譜面生成時にコメントの存在が譜面から消される
最後の改行がなければコメントとして認識してくれないため、バグの宝庫が出来上がる
改行が必須である関係で一番最後の行にはコメントを書けないことになるが、
大抵の場合、最後の行に書かれているのは「E」だと思われるのであまり不便はないと思われる
仕様上、プログラミングのように、「この行を取り除いたらどうなるか?」というテストも可能
コメントには基本的に何を(どんな文字を)記述してもいいが、使用不可文字にある半角の3文字は使わないこと

<使用不可文字>
半角の&、+、%を使用してはいけない
全角の&、+、%は使用可
どうしても半角の&、+、%を表示させたい場合は

「&」→「\&」
「+」→「\+」
「%」→「\%」
「\」→「\¥」

と書く


Active Message (Ver1.50~)

Ver1.50からActive Messageという機能が搭載され、再生中の好きなタイミングでfreemsgの内容を変更できるようになりました。
Active Messageに関連する変数は&amsg_first、&amsg_time、&amsg_contentの3つです。

&amsg_first

最初の文字列を表示するまでの時間(秒数)を設定する
&amsg_first=3 と設定すると、初めの3秒は自動で文字がない状態になり、3秒経つと1つ目の文字列を表示する
&firstは最初のリングが判定ラインに到達する時間だが、それのActive Message版

&amsg_time

基本的に&inote_1~&inote_7に譜面を書く時と同じ書式になる。よって、

(120){4}
1,,,
1,,1,
{2}
1,1,

のような書き方をする

&amsg_timeに使う文字は、カンマ、BPM設定、○分音符の設定を除くと、【1】と【0】だけ
※E はない。書いても無視される

1 …… このタイミングで文字列を表示させる
0 …… このタイミングで文字列を消す(何も表示させなくする)

例えば、

&amsg_first=5.000
&amsg_time=
(120){1}
1,
0,
{2}
1,1,

と書いたとすると、
5秒目に1つ目の文字列を表示し、
7秒目に文字を消し、
8秒目に2つ目の文字列を表示し、
9秒目に3つ目の文字列を表示する

&amsg_content

以下のような書式で、表示させる文字を記述する

&amsg_content
┃さいた さいた
┃チューリップのはなが
┃ならんだ ならんだ
┃あか しろ きいろ

┃どのはな みても
┃きれいだな

「┃」はけいせんで変換した時に出てくる太い縦棒。これを先頭に書く
どんな文字を記述してもよいが、やはり使用不可文字には気をつける
ちなみに「┃」自体は画面に表示させることができない

<使用不可文字>
半角の&、+、%を使用してはいけない
全角の&、+、%は使用可
どうしても半角の&、+、%を表示させたい場合は

「&」→「\&」
「+」→「\+」
「%」→「\%」
「\」→「\¥」

と書く

&amsg_timeの記述の中の「1」を通過するたびに、ひとつずつ次の文字列を読み込んでいく
上記のチューリップでは1行改行されている行があるが、何もない行は無視されるので
自分の見やすいように文字列を配置するとよい

なお、&amsg_timeの記述の中の「0」を通過しても、&amsg_contentには何も影響がない
「0」はただ単に【文字を消すだけ】のことしかしない
例えば曲の歌詞の字幕を表示させようとするときに、&amsg_timeで「0」をうまく使えば記述がしやすくなる

名前:
コメント:
添付ファイル