2014年9月1日月曜日

DSソフトのBGMの改造方法

お久しぶりです!

さて、今回はブログ名と全く関係ない話題です。
DSソフトのBGMの改造方法を紹介します。
ここではNewスーパーマリオブラザーズで説明します。

さて、紹介しますか。長くなるぞぅ……
やり方を理解してしまえば1時間かからずに改造できます。
長いのは最初の設定だけです。頑張ってください!
ちなみに他のDSソフトも同様に改造できます。
今回は地上BGMを改造します。



改造例

こんな感じです。宣伝乙。





必要なファイルやソフトたち

たくさん(?)あります。

MIDI2SSEQ
 (「Part Three- Inserting the song」と書いてあるところの真下)
 MIDIファイルをDS用のファイルに変換します。

libgcc_s_dw2-1.dll
 (下から五番目の「libgcc_s_dw2-1.dll (32bit)」)

libstdc++-6.dll
 (「libstdc++-6.dll」をクリック)

VGMtrans (「vgmtrans-interim-~~.7z」をクリック)
 DSの曲のデータを再生・吸出しできます。

Tinke (「Tinke rev153.zip」をクリック)
 DSのROM内のファイルを編集、置き換えができます。
 このソフトでROMを保存したらROMが破損するので別のソフトも併用します。

NSMB Editor (真ん中にある「Download NSMB Editor」をクリック)
 ファイルの置き換えに使います。


Domino (右にあるオレンジ色のボタンをクリック)
 Dominoは自分が使っているMIDI編集ソフトで、この記事ではこいつで説明します。

TiMidity++ (「TiMidity-CVS081206_setup_JPN.exe」をクリック)
 サウンドフォントを読み込み、MIDIを演奏できます。
 BASSMIDIの方が初心者向けですがこちらのほうが便利です。

MIDI Yoke (「Download」をクリック→「Supports Windows NT4, 2000, XP:」のところの「Download Now」をクリック)
 TiMidity++とDominoを接続するのに使います。
 BASSMIDIを使っている方は必要ありません。

 非公式版ですが3Dの設定によって高解像度でプレイしてもギザギザになりません。
 おすすめです。うまく起動しなければ公式のものを使用してください。

うーん、日本語非対応のソフトがあるかもしれないので「C:」のすぐ下に「DS」フォルダでも作成して全部まとめて入れておきましょう。
別のところでもいいですが、日本語が入ったフォルダに入れないように注意してください。


初期設定(BASSMIDIの方は不要)

まず、TiMidity++」と「MIDI Yoke」をインストールします。
次にTiMidity++」をインストールしたところ(初期設定ではC:」のすぐ下の「timidity」フォルダ)
にある「twsyng.exe」を起動し、タスクバーの右下にアイコンが表示されている(ないなら△マークをクリックしたところ)ので、右クリック→設定→シンセサイザーの順にクリックします。
MIDI IN デバイス」の項目を「In From MIDI Yoke: 1」に設定し適用をクリックします。
エフェクト」をクリックし、リバーブを「リバーブなし」にし、適用、OKをクリックします。

次に「Domino」を起動し、右上の設定のアイコンをクリックしてください。
MIDI-OUT」の「ポートA」の「MIDI OUT デバイス」を「Out To MIDI Yoke: 1」にし、音源を「GSm (Microsoft GS Wavetable SW Synth)」にしOKをクリックします。
これで初期設定は完了です。


DS音源をDominoで使う

VGMTrans」を起動し、NewスーパーマリオブラザーズのROMをドラッグ&ドロップしてください。

なんかたくさん表示されたと思いますが、ウィンドウの下の「NCS~」と書かれたものがいっぱいあるところから「BGM_CHIJOU_CONT」を見つけ出してください。
それをクリックすると右の枠に「BGM_CHIJOU_CONT」、「BANK_CHIJOU_CONT」と表示されると思います。


BGM_CHIJOU_CONT」を右クリックし「Save as Midi」を選択
BANK_CHIJOU_CONT」を右クリックし「Convert to SoundFont 2」を選択

これで中身のファイルがPCで扱えるものに変換されました。

先ほど保存したBANK_CHIJOU_CONT.sf2」をTiMidity++」をインストールしたところ(初期設定では「C:」のすぐ下の「timidity」フォルダ)の中の「musix」フォルダに移動します。


最後にDominoで鳴らせるように設定します。
twsyng.exe」を起動し、設定で「プレイヤ」→「編集」の順にクリック
サウンドフォントと追加設定ファイル」の右下の「削除」をクリックし、左の欄を空にします。
そして右の欄から先ほど保存したファイルを選択し「追加」をクリック
一番下の一番右の保存終了をクリックし「設定ファイルの強制再読み込み」→「適用」→「OK」をクリック

これでDominoでDS音源の音が鳴ります。
正しくはNewスーパーマリオブラザーズの地上BGMの音源ですが。
曲ごとに音源が違うのでこの作業を覚えておくとよいでしょう。
「BASSMIDI」の方はサウンドフォントを普通に読み込めばOKです。


DS用のMIDIを作る

ここからはMIDI編集の知識が必要です。
では行きます。

まずBGM_CHIJOU_CONT.mid」をDominoで読み込みます。
再生してみます。
うまく鳴らない方は何か設定を間違えています。
ちなみにピコピコした音はなりません
DS内臓の音源だから?でしょう。
ROMの中にピコピコ音源のデータはないので。

うまく鳴ったらDS用に変換したい曲を読み込みます。
で、曲のプロパティ」で分解能48にします
そしてトラックのプロパティリズムチャンネル(10CHだと思われます)をメロディチャンネルしてください。

次にイベントリストペイン(左側にある文字がたくさん並んだ枠)を編集します。
本家のMIDIに使われてないパラメーター(リバーブとか)を削除します。
マリオで使われているパラメーターは「Program Change」、「Volume」、「Panpot
、「ベンド幅」(12固定?)、「Pitch Bend」、「Modulation」、「Tempo」の5つだと思うのでそれ以外を削除すればよいです。

音程や音色を調整して再生してみましょう。
ちゃんと聞ける曲になったら曲の最初の空白(1小節目)を詰めておきます。
プログラムチェンジやボリュームなどのパラメーターを消さないように注意してください。
終わったらループの開始地点の1Tick前の所に「loopStart」と書いたマーカーを作成
終了地点に(こちらは1Tick前ではない)に「loopEnd」と書いたマーカーを作成
MIDIをフォーマット 0」で保存します。

これでDS用に変換できるMIDIが完成しました。
ここが一番辛い作業かもしれません。


MIDIをDS用に変換する

この作業は楽です。

MIDI2SSEQを解凍したSSEQPlayer_demo」フォルダの中に「libgcc_s_dw2-1.dll」と「libstdc++-6.dll」をコピーしてください。
SSEQPlayer_demo」フォルダの中に新しくテキストファイルを作成します。
メモ帳などでテキストを開いて、「midi2sseq "DS.mid" "DS.sseq"」という右の文章をコピーして貼り付けます。
そしてテキストを保存して、そのファイル名を「midi2sseq.bat」に変更します。
これで変換の準備は完了です。

先ほど作成したMIDIを「DS.mid」というファイル名に変更し、SSEQPlayer_demo」フォルダにコピーします。
そしてmidi2sseq.bat」をダブルクリックすれば「DS.sseq」ファイルが作成されます。

ファイルのサイズを確認して本家より小さければOK、大きければ余分なところをできる限り削ります。
連続してピッチや音量が変化するところは分解能を下げたので必要ない部分が出てくるかも?

念のためDS.sseq」を「BGM_CHIJOU_CONT.sseq」(本家のファイル名)に変更するとよいかもしれません。


BGMを置き換える

さあ、いよいよ最後の作業です。

Tinke」を起動しNewスーパーマリオブラザーズのROMを読み込みます。
一番下にあるsound_data.sdat」を選択し「Extract」をクリック
上の「Open file(s)」をクリックし、sound_data.sdat」を読み込みます。
sound_data.sdat」を選択し「View」をクリックすると右になんか出てきます。
SSEQフォルダの左の+を押し、「BGM_CHIJOU_CONT」を見つけます。
BGM_CHIJOU_CONT」を選択したら「Change file」をクリックし、先ほど作ったBGM_CHIJOU_CONT.sseq」を読み込みます。
そしてSave SDAT」をクリックして保存したらウィンドウを閉じます。
次にNSMB Editor」を起動して「Open ROM...」をクリックし、NewスーパーマリオブラザーズのROMを読み込みます。
ROM Fle Browser」タブを開き、「FILESYSTEM [~]」→「root」の順に開きます
sound_data.sdat」を選択し「Replace」をクリックし、先ほど保存したsound_data.sdat」を読み込みます。
これで……






DeSmuME」を起動して1-1をプレイしてみましょう!
これで曲が流れていたら大成功です!
乙です!
無駄に長い記事を書いた自分にも乙です!

最後まで耐え抜いたあなたはもう改造方法を理解したはずです。
理解できたならもっと楽に改造できるようになったはずです。

かなり昔からある技術ですがね(;´∀`)
何か分かったことや不明なことがあれば聞いてください。

こんな記事を書いた自分が言うのもなんですが、声に合わせて敵が振り返ったり飛んだりするやつが分かりません(;´Д`)


O&A(どんどん増えていきます)

QMIDIの編集方法が分からない。もっと細かく説明できないの?
Aこの作業以外ではみなさんが自分と同じファイルを使っていたので解説できましたが、MIDIの編集ではみなさんが使いたい曲のMIDIを編集することになるので詳しく解説できません。
また、MIDIの編集にはMIDIについてある程度の知識が必要で、全く分からない方に1から説明するのは自分には難しいです。
またマリオの音源に合わせてうまくアレンジしなければならないため、曲のアレンジのセンスも求められます。
参考になりそうなサイトを探したのでURLを載せておきます。
これでも情報が足りていないのでそのうち解説するかもしれません。
が、期待しないようにお願いします。

Q書いてある通りにやったんだがMIDI再生するときに音が出んぞ?
A
自分は「TiMidity++」を長い間使ってきたので設定が皆様と異なる可能性があります。
「TiMidity++」の設定が間違っている可能性があるのでご確認お願いします。
また、設定後、適用→OKの順にクリックした後、「TiMidity++」を終了し、起動しなおして下さい。







Q
それでも音が出ない。
A
まず下のサイトにある「download」という文字をクリックしてダウンロードします。
ダウンロードした「sfz197.exe」を起動し、インストールします。
インストール先を覚えておいてください。
次に下のサイトにある「vsthostx86.zip」をクリックしてダウンロードしてください。
ダウンロードしたファイルを解凍し、中にある「vsthost.exe」を起動します。
上にある「Devices」→「MIDI」で設定を開いてください。
「MIDI Input Devices」のタブの「In From MIDI Yoke: 1」を選択し、OKをクリックします。
次に「File」→「New PlugIn」と進み、先ほどインストールした先にある「sfz.dll」を読み込みます。
小さな枠が表示されたと思うのでその枠を右クリックして、「Window」→「Edit」をクリック。
新しいウィンドウが表示されるので、左上の「MODE」の隣の三角をクリックし、「PR32」を選択します。
「FILE」の隣の空白をクリックし、サウンドフォントを読み込みます。
この状態で再生してみてください。

Q「Tinke」が使えん。
A
「.NET Framework 3.5」をインストールしてください。
それでも使えなければ「Crystal Tile 2」というソフトがあるのでそれが使えるかもしれません。

Q曲のループってどうやるの?
A
ループの開始地点に「loopStart」と書いたマーカーを作成し、終了地点に「loopEnd」と書いたマーカーを作成してください。
マーカーの作成は、トラックを変えるところの下にあるMと書いてあるアイコンを押せばできます。
完了したら「Conductor」というトラックに移動し、「Mark: loopStart」をCtrlを押しながらクリックします。
そして右クリック→「一括変更」で「Tick(T)」のところに「-1」と書いてOKをクリックしてください。
これでループの設定は完了です。
Dominoではループして再生されませんが、エミュではループするはずです。

Q曲の最初の空白の削除がうまくできない。
A
空白部分には楽器の種類や音量などの設定が入っています。
なので、空白を削除すると楽器や音量が設定されなくなってしまいます。
つまり、それらのデータを音が鳴り始める部分に移動すれば問題ないです。
データを移動したら、「表示(V)」→「トラックリスト(L)」で空白部分を選択し時間削除すればよいです。

11 件のコメント:

  1. BGM改造の記事と貴方の動画を拝見させて頂きました
    初めまして、DSのNewマリ改造をしているanalogと申します
    メールフォームが見当たらないのでこちらで連絡をさせていただきました
    もしよろしければ相互リンクをして頂けませんでしょうか?
    私も改造マリオやDTMなどに興味があり貴方の記事に凄く惹かれました
    ご返答お待ちしています

    返信削除
    返信
    1. 返信が遅れてしまって申し訳ございません。
      相互リンクOKですよ!

      削除
    2. 相互リンクありがとうございます。リンク貼っておきました。
      これからも宜しくお願いします。

      削除
    3. DS用に変換したい曲を読み込みかたがわからないのですが教えていただけませんか

      削除
    4. 返信が遅れて申し訳ございません。
      まず確認しておきたいのが変換したい曲の拡張子です。
      使える拡張子は「.mid」のみです。
      「.mp3」や「.wav」など他の拡張子では読み込めません。

      次に「.mid」の読み込みかたですが、Dominoを起動して左上の「ファイル(F)」→「開く(O)」をクリックして読み込みたい曲をえらべばOKです。

      この時、「トラック内に複数のチャンネルが混合しています。読み込みを中止します。」と表示されて読み込め無かった場合は下のリンクを参考にMIDIを変換してください。
      http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1343022688

      削除
  2. BGMの差し替えに成功しました!ありがとうございます。
    ポケモンプラチナのBGMを変更した動画を投稿しました。
    https://www.youtube.com/watch?v=vKHT2eHM-t8&feature=youtu.be

    返信削除
  3. 少し本題とずれた質問で申し訳ありません。
    DSのROMから抽出したMIDIを再生したいと思ったのですが、WMPやTiMidity++で再生すると、
    http://www.nicovideo.jp/watch/sm4648650
    の動画のようにDS実機と違う音色というか楽器で演奏されてしまいます。
    VGMtransの再生はまだ近い方ですが……
    なにかこう、「DS用に作られたMIDIを実機と同じ音色、楽器で演奏する」にはどうしたらいいんでしょう?
    ソフトの設定変えればいいのか、あるいはDS実機と同じ楽器で演奏してくれるソフトがあったりするのでしょうか?

    返信削除
    返信
    1. この記事の通りに設定してもできなかったなら分からないですね……。
      音色がおかしくなる現象には遭遇したことが無いので対応策が……。
      申し訳ございません

      削除
    2. いえいえこちらこそ! 素早いご返信ありがとうございます。
      今確認したところ、「ピコピコした音がならない」というのをすっかり失念しておりました。
      よくよく聞くと主旋律というかベース?はDS音源で鳴ってました。
      ただDSのピコピコ音がないので違和感を覚えていたようです。お騒がせしました。
      しかしこのピコピコ音が鳴ってくれないのは困りますね……
      特にこのピコピコ音がDSソフトの曲の大部分を占めているので、これをなんとか抽出できればうれしい限りなのですが

      削除