MapleBeatsテキストを置換する最適化する再びテキストを置換するMS2MMLに変換するメイプル2で演奏するコメント世界樹について世界樹はMIDI編集ソフト。midファイルをmmlファイルに変換しやすいように編集するのに使用する。クオンタイズやストロークといった文字数を節約できそうな機能もあるので便利。基本的にフリーウェアとして使用できるが、スクリプト機能だけはシェアウェア。このスクリプト機能が非常に便利なので課金したほうが作業効率は上がる。↓LegacyMDITabLegacyMDITab-2019-11-24.zip世界樹のような古いタイプのMDIアプリケーションにタブを追加するユーティリティ。子ウィンドウを最大化したまま素早く切り替えたい人向け。必須ではないがあったら便利かも。ターゲットのMDIアプリケーション(世界樹)を起動する前にLegacyMDITab.exeを実行して常駐させておく。ターゲットのMDIアプリケーションを起動する。不必要なイベントを削除する不必要なイベントが混ざっていると編集しにくい上、再生しても音が出なかったりする。それに、MapleBeatsでインポートしたときに問題が発生することもある。clean.salで不必要なイベントを削除しておく。LSBの値によっては無効なプログラムチェンジになってしまい音が出ない場合があるので、これらの値を0にしてとりあえず音が出るようにもする。Ctrl+Aキーで全てのイベントを選択する。clean.salを実行する。このスクリプトはかなりたくさんの種類のイベントを消してしまう。そのため、消したくないイベントがある場合はスクリプトファイルをテキストエディタで開いて該当箇所をコメントアウトしておく必要がある。↓クオンタイズする世界樹のクオンタイズ機能ではノート以外のイベントをクオンタイズすることができない。MapleBeatsと同じ精度の64分音符でクオンタイズすることができない。quantize.salを使えば、この両方の問題を解決することができる。クオンタイズするイベント選択する。quantize.salを実行する。うまくいけばイベントが整列する。それでもズレている部分があれば手動で調整する。休符を節約する休符を節約して文字数を減らす。メイプル2の空き楽譜はちょい高めの価格設定で、その中でも文字数の大きいものは結構なお値段になる。文字数を節約したほうが経済的。MapleBeatsにも休符を節約する機能があるが、曲全体に適用されてしまうため、若干使い勝手が悪い。extend.salを使って、曲の一部分だけを休符節約する。休符を節約するノートが存在するトラックをアクティブにする。休符を節約するノートを選択する。extend.salを実行する。うまくいけばノートが長くなり、休符部分が消える。Ctrl+Delキーを押して元のノートを削除する。休符を節約すると曲の印象が変わってしまうため、節約前と節約後をよく聴き比べてやったほうがいい。pitch_bend_12.sal(簡易版)で擬似的にピッチベンドを再現する。ピッチベンドが適用されるノートの後ろにダミーのノートを追加する。※エンドオブトラックを選択していてpitch_bend_2.salを使用する場合はダミーのノートは必要ない。ピッチベンドとピッチベンドの影響を受けるノート、及びダミーのノートを選択する。pitch_bend_2.salまたはpitch_bend_12.salを実行する。うまくいけばノートの音程が変わる。Ctrl+Delキーを押して元のノートとピッチベンドを削除する。↓ボリュームとエクスプレッションをベロシティに変換するボリューム(CC7-Volume)やエクスプレッション(CC11-Expression)といったコントロールチェンジはメイプル2では使うことができない。そのため、これらの効果はベロシティを使って擬似的に表現しなければならない。volume.salを使って擬似的に再現する。音量の変化が適用されるノートの後ろにダミーのノートを追加する。音量系コントロールチェンジとそれの影響を受けるノート、及びダミーのノートを選択する。volume.salを実行する。うまくいけばノートのベロシティが変わる。Ctrl+Delキーを押してコントロールチェンジ、元のノート、ダミーノートを削除する。ベロシティが変化するたびに音の出だし(アタック音)が発生するため、再現できたと言えるレベルではないかも。(2)https://www.vgmusic.com/music/console/sega/genesis/GoldenAxe-DeathAdder.midをメイプル2で演奏可能な状態まで編集してみる。分解能を設定するメニューの[ファイル]->[プロパティ]で[分解能]を[960]に設定する。↓skjファイルで保存するmidファイルだと保存できない情報があるのでskjファイルで保存する。↓クリーンclean.salで不必要なイベントを削除しておく。↓トラック名を変更するここでは"A出力チャンネル番号"のようにトラック名を変更する。演奏が不可能なトラックを削除する演奏ができなさそうなトラックを思い切って削除する。すると編集対象が減って作業が楽だし、文字数も減らせる。A1は空なので削除する。A10はドラムなので削除する。A8はA2と同じメロディなので削除する。A9はA5と同じメロディなので削除する。A11はA6と同じメロディなので削除する。削除しすぎて音が欠けていないか、一度再生して確認する。↓フェードアウトを削除する最後のフェードアウトの部分を選択して削除する。↓クオンタイズCtrl+Aキーですべてのイベントを選択する。メニューの[編集]->[クォンタイズ]を選択する。[クォンタイズ]ダイアログが表示される。[スナップタイム]を[16分音符]にする。[強度]を[100]にする。[ノートオン]と[ノートオフ]にチェックを入れる。[OK]ボタンを押す。問題ないか、再生して確認する。出力チャンネルを統一する[トラックリスト]ウィンドウでトラックの[出力チャンネル]を[2]で統一する。A2のプログラムチェンジをクラリネットに変更する。A2にボリュームを追加して96に設定する。その他のトラックはトラック名とノート以外のイベントを削除する。Ctrl+Aキーですべてのイベントを選択してベロシティを111に変更する。この時点で再生するとメイプル2でクラリネットv13で演奏した場合とほぼ同じ音になる。音の重なりを減らすこの時点で再生してみると、出だしの小節1~2でいきなりメインメロディ(A2)が欠けて聞こえる。メイプル2では同じ高さの音は複数同時に出せない。後から音を出すと前の音は上書きされて消える。今回の場合だと、メインメロディ(A2)の音の後に同じ高さのサブメロディ(A3)の音が出るので、そこでメインメロディの音が消えてしまう。音程を変更するA3の小節1~24のノートを選択する。メニューの[編集]->[イベントの音程の変更]->を選択する。[イベントの音程変更]ダイアログが表示される。[音程の変更量]を[1]にする。[単位]を[オクターブ]にする。[対象]の[ノートオン・ノートオフ]にチェックを入れる。[OK]ボタンを押してダイアログを閉じる。サブメロディを1オクターブ上げたので音の重なりは少なくなった。音程を変えてしまったが、再生して聞いてみてもそこまで劣化はしていないと思う。音を整理する小節33~36、47~54のA3の音は他の音と重なっているので1オクターブ下げる。小節37~46、55~64のA7の音はA3と同じなので削除する。A3の小節25以降はベースっぽいので同じくベースっぽいA7に移動する。和音をなくす小節28のA6に和音があるので、和音にならないように調整する。休符を節約するこのステップは必要ないならやらなくてよい。小節28や32などでノートを伸ばして次のノートまでつなげる。↓ベースを簡略化するこのステップも必要ないならやらなくてよい。今回はどうしても文字数を節約したかったからやっているだけ。小節25以降のA7の音をほぼ全音符だけのシンプルな形にする。音の大きさを調整するA3の音が大きすぎるので調整する。A3のイベントをすべて選択する。メニューの[編集]->[イベントのベロシティ変更]を選択する。[ベロシティ又は変更量]を[60]にする。[単位]を[絶対指定]にする。[対象]の[ノートオン]と[ノートオフ]にチェックを入れる。[OK]ボタンを押してダイアログを閉じる。↓テンポ変更位置にテキストを挿入する小節33からテンポが変わっているので、その位置にテキストを挿入する。[イベントリスト]ウィンドウでA0のテンポの位置を確認し、時間文字列(この場合00033:01:000)をクリップボードにコピーしておく。[イベントリスト]ウィンドウでA2のイベントを表示する。ノートオンとノートオフは非表示にしておく。時間はどこでもいいのでA2にテキストイベントを作成する。テキストイベントの時間をさっきコピーした文字列(00033:01:000)にする。テキストイベントの値をChangeTempoにする。同様に、小節37、47、55にもテキストを挿入する。A2に挿入したテキストをコピペして、A5、A6、A7にも同じ様に配置する。↓ホールドを追加する小節17の先頭にホールドオン、小節33の先頭にホールドオフ、小節47の先頭にホールドオンを追加する。やり方はテキストの挿入と同じ。チャンネルを統一しているので、ホールドは1つのトラックで指定すればすべてのトラックに適用される。よって、ホールドはA2にだけ配置すればよい。このままホールドを追加した状態でクラリネットで再生すると音がおかしくなるので、一旦プログラムをピアノ、ボリュームを121に変えてから再生して確認する。演奏速度と特殊モーションを追加する小節1のA2にテキストを追加する。小節1のA2にテキストを追加する。小節25のA2にテキストを追加する。小節33のA2にテキストを追加する。小節37のA2にテキストを追加する。小節47のA2にテキストを追加する。小節55のA2にテキストを追加する。世界樹での仕上げCtrl+Aキーで全てのイベントを選択する。find_chord.salを実行して和音が残ってないか確認する。reset_time_of_note.salを実行して同一時間のイベントがある場合、ノートを最後に配置するようにする。[編集]->[イベントのチャンネル変更]でトラックの出力チャンネルに合わせる。midファイルに保存する。MapleBeatsmidファイルを読み込む。[インポート設定]では[MIDIチャンネル]、[プログラムチェンジ]、[コントロールチェンジ]、[ベロシティ]、[MIDIコメント]にチェックを入れる。[クオンタイズ単位]は[64分音符]でよい。[休符節約]、[1MIDIトラック→複数MMLトラック変換]にはチェックを入れない。再生できるか確認する。問題なければmmlファイルに保存する。※まだ最適化はしない。ReplaceMML.htmlを使用して一旦ホールドなどをテンポに置換する。mmlファイルをテキストエディタで開く。テキストをすべて選択してクリップボードにコピーする。ReplaceMML.htmlをブラウザで開く。入力(左下)のテキストエリアにさっきコピーしたテキストを貼り付ける。出力(右下)のテキストエリアのテキストをすべて選択してクリップボードにコピーする。このテキストをテキストエディタに貼り付けてmmlファイルとして保存する。MapleBeatsでmmlファイルを開く。すべてのトラックを最適化する。mmlファイルに保存する。テキストを置換するReplaceMS2MML.htmlを使用してテンポに変換されているホールドなどをサステインなどに置換する。手順はReplaceMML.htmlと同じ。↓MS2MMLに変換するMMLConverterを使用してmmlファイルからms2mmlファイルを作成する。↓メイプル2で演奏するトライアで空き楽譜を買う。空き楽譜にms2mmlファイルを読み込む。動作速度の指定(P255)、動作指定(M0~5)、サステイン(S0、S1)、テンポの変更(t150、t112)が正しく機能しているか確認する。↓コメントコメントはありません。