譜面の作り方

ここではゲーム本編で使える譜面データの作り方を紹介。
正直、少し面倒くさいです。
それでも興味があれば、現在公開中の追加楽曲を改造するなどの練習をしてから
作ってみることをおすすめします。

注意事項

このサイトで配布しているデータを元に譜面を作るのは自由です。
更に譜面データを配布するのも自由。
ですがネット上で購入した音楽など、自分が著作権を持っていない音源を同封して配布すると
音楽利権団体に目を付けられるので 著作権法に引っかかるのでやってはいけません(最重要事項)。
もちろん、自分で作った楽曲を同封することは自由ですし、二次配布の許可が降りれば大丈夫です。
また、二次創作楽曲については原作者・音源製作者の許可が必要になります。

あくまで問題となるのは音源を含めて配布した場合なので個人的に楽しむ分には問題ありません。
そしてニコニコ動画など原盤の利用が許諾されたサイトで公開するのもセーフ。
音源を同封せず譜面データだけ配布するのも大丈夫だけどあまり意味がないかも。
そもそも音源の入手方法がセーフかどうかはまた別な話。

楽曲データの構成

追加楽曲をダウンロードすると分かりますが、
楽曲データは以下の3ファイルから構成されています。
  • 音源データ(wav,mp3,ogg,midi形式)
  • 楽曲データ(jmd形式)
  • 譜面データ(jmf形式)
  • ここで重要なのは楽曲データ・譜面データは共にテキスト形式だということ。
    なのでwindous付属のメモ帳等で開くと、簡単に編集できます。

    音源は作りたい曲の音源を上記4形式のどれかに変換してください。
    おすすめはoggかmidi。
    ただしmidi形式は制作過程で使う数値の出し方が異なるので注意。
    (赤字はwav,mp3,ogg形式の説明青字はmidi形式の説明)

    楽曲データの構成

    というわけでまずは拡張子がjmd形式のファイルを開いてみましょう。
    それっぽい文字列の後にいくつか数字が並んでいるはずです。
    というわけで、各行の解説。 ちなみにこれらは順番を間違えると機能しないので注意!
    1行目 ゲーム中に表示される曲名 曲名
    2行目 ゲーム中に表示されるサブタイトル 歌っている人の名前など
    クラシックなら作曲者名
    3行目 著作権表記 作中では素材元サイト名
    サークル名等でも可
    4行目 音源ファイル名 同フォルダ内のみ
    サブディレクトリ無効
    5行目 譜面ファイル名 同フォルダ内のみ
    サブディレクトリ無効
    6行目 表記BPM 選曲画面で表示される数値
    実は文字などを使っても問題ない
    7行目 判定のゆるさ タイミングのズレの許容幅の基準値
    (単位:ミリ秒)
    (単位:tick数)
    8行目 試聴スタート地点 スタート地点のタイミング(単位:ミリ秒)
    スタート地点のタイミング(単位:tick数)
    9行目 「まったり」難易度表記 譜面に応じてご自由に
    10行目 「それなり」難易度表記 譜面に応じてご自由に
    11行目 「なにこれ」難易度表記 譜面に応じてご自由に
    12行目 譜面バージョン情報(任意) ここの文字列を変えると最高スコアがリセットされる
    譜面や難易度の変更があった際に変更すると吉
    13行目 曲名よみ情報(任意) ソート「曲名順」の並び替えに使う文字列
    使用可能な文字は「半角数字」「半角英字(小文字)」「ひらがな」「ー」のみ
    ぁぃぅぇぉ・ゐゑ不可

    判定のゆるさについて

    音符をクリックしたときの評価に関わる、地味だけど重要な数値。
    たとえば200ミリ秒に指定した場合、音符が実際のタイミングと±0.20秒くらいズレていてもBAD判定にはならない。
    (難易度「まったり」で上下の位置が完璧にあっていた場合)
    「それなり」だとこの数値の0.85倍、「なにこれ」だと0.75倍になる。
    同じく200ミリ秒の場合、「それなり」だと±0.17秒、「なにこれ」だと±0.15秒。
    200ミリ秒が標準で、これより大きいと判定が甘めになり、
    逆に小さいと厳しくなる。

    mp3・ogg音源の場合は200が最適。
    厄介なのはmidi音源の場合。
    200ミリ秒分のtick数は曲のBPMや分解能で変わる。
    結論だけ言えば BPM×分解能÷300 の値を計算すると出る。
    特に分解能が480のとき BPM×1.6 となる。
    尚、曲中でBPMが変わる場合、遅い箇所では判定が甘くなり、
    速い個所では判定が厳しくなるので注意。

    譜面データの構成

    続いて拡張子がjmf形式のファイルを開いてみましょう。
    たくさんの数字と@マークで始まる英単語と数字、
    たまにメモ書きがあるはずです。
    譜面は数字で表記され、@マークで始まる行がコマンド行です。
    というわけでまずは数字の意味から。

    0休符
    1ランダムに音符が出現
    2前の音符と似たような高さに向かって
    ランダムに出現
    3前の音符完全に同じルートで出現
    また、@Y1などの音符の移動に関する指示通りに動かす場合も使用。

    ゲーム中に同じ高さにまとまって音符が来たり
    同じルートで連続して来るのは偶然ではなく、実は譜面によるものなんです。
    もちろん、1が連続していてもたまたま似たようなルートになることはありますが・・・。
    尚、4〜9を入力しても音符は出現しますが、その法則については現時点では断言できません。あしからず

    続いて@コマンドについて。
    基本コマンド
    @start_easy「まったり」譜面スタート
    @start_normal「それなり」譜面スタート
    @start_hard「なにこれ」譜面スタート
    @start_common全難易度共通指示スタート
    主に歌詞の表示などに使用。
    @interval:音符の間隔を変更
    (単位:ミリ秒)
    (単位:tick)
    @speed:音符が画面に出現してからカーソルまでの移動時間
    (単位:ミリ秒)
    (単位:tick)
    @wait:次の音符の出現を遅らせる
    (単位:ミリ秒)
    (単位:tick)
    @jump次の音符の位置を強制的に変更。
    (単位:ミリ秒)
    (単位:tick)
    音符系コマンド
    @Y1音符の出現位置とカーソルにあったときの上下方向の位置の差を指定。
    @Y2音符がカーソルに合ったときの上下方向の位置を指定。
    最低80、最高360。
    @Y3音符が反射する回数を指定。
    0にすると反射しない。
    @X1音符の出現方向を指定。
    1:左側から 2:右側から -1:直前の音符の逆側 それ以外:ランダム
    @color音符の色あいを指定。
    RGBの順に各00〜99まで、-1を指定するまで解除されない
    演出系コマンド
    @bgpict:背景画像を指定。
    Dataフォルダ内のアドレスから入力(例:ExPicture/sample.jpg)
    @text:画面下部に文章(歌詞など)を表示
    ウディタ用各種制御文字が使用可能
    その他\nで改行も指定可能
    @textcolor:@textの文章の文字色を指定
    RGBの順に各00〜99まで
    @clickseクリック時のSEを強制的に変化
    Dataフォルダ内のアドレスから入力(例:ExData/sample.ogg)
    @closeclickse@clickseで変更したクリック時のSEを戻す
    その他コマンド
    @perfectbonus:パーフェクト時のボーナスを指定。
    最低0点、最高レベル×80000点に補正される。
    @notelimit:同時に処理する音符の数の最低値を指定する。デフォ値100
    一度に大量の音符が出現する譜面では
    大きめの数値を指定すると動作が軽くなることがある
    @banspeed:オプション画面で設定した再生速度を無視して
    強制的に再生速度を変更する。
    再生速度は%で指定、10%〜200%まで
    //メモ行 その行の指示は無視される

    この内@interval:と@speed:と@wait:のコマンドは冒頭で使うことが多いです。

    ほとんどの音源ファイルの場合、冒頭に空白部分があるので
    その長さだけ@wait:か@jump:で調整。
    曲のテンポに合わせて@interval:を設定、そこから@speed:を指定するのですが・・・。

    wav,mp3,ogg形式の場合

    まず、楽曲の適当な部分の長さをSound Engine等の波形編集ソフトを使用して計測してください。
    たとえば16拍分の長さが9.100秒くらいとします。
    その場合、1拍の長さは9.100÷16=0.56875(秒)。
    そこから4分音符主体の曲なら@interval:568.75、
    8分音符主体なら@interval:284.375にできればタイミングが合います。
    ただし、@interval:の値は整数しか使えないので、実際には工夫が必要。
    例えば前述で8分主体の場合、285で3小節の後に284で5小節、の繰り返しにするなど。

    ちなみに、曲のテンポが変わる箇所ではこの数値も変わります。
    このとき、@speed:の値を変えないと見かけのスピードは同じまま、タイミングだけが変わっていきます。
    頻繁にテンポが変わる曲だと、設定するのが少し面倒かも。

    midi形式の場合

    midi形式の場合、一番重要なのが分解能。
    これはCherryなどのmidi編集ソフトを使うとわかります。
    (Cherryの場合、編集→ファイル情報編集→分解能から)
    分解能とは、基本的に4分音符1拍分のtick数のこと。
    例えば分解能が480なら、4分音符主体の場合@interval:480、
    8分主体の場合は@interval:240にすればタイミングが合います。

    ちなみに、曲のテンポが変っても時間当たりのtick数は変わらないのでそのままでOK。
    ちなみにスピードは曲のテンポと一致します。
    テンポが変化するとき、全ての音符のスピードも変化します(例:蒼天疾駆の冒頭)

    @speed:は4拍分の時間を指定するのが基本。
    この数値は大きくなるほど音符が遅くなり、小さくなると速くなります。
    ギミックとしてわざと@speed:の値を変えるのも面白いかも。


    その他メモ

    よく使う音符色

    ボーカロイド使用曲にて使用している音符色。
    ・ミク色-996099/007099
    ・GUMI色-996000/206000
    ・IA 色-998590/333333


    ©sinusoidal wave 2012,2014