老大能翻多少就翻多少........如果一個人太累的話...就叫多幾個人把......
這個是我們修改BGM的步驟......太多日文了...我只能看懂一點
SR_MIDItoGBA 0.002
SMF1のMIDIファイルをGBAの音楽形式MP2000(Sappy)に変換するプログラムです
---------------------------------------------------------------------
注意点
作者は、SMFおよびP2000についてネットで軽く調べた程度の知識しかないので
嘘を言ってる可能性も大きいです。(ご指摘いただけるとありがたいです)
OG2へMIDIを移植するために作ったので、他のGBAでは試していません
他のGBAへの移植も同じ要領でいけるはずだと思います
楽器を探すときは付属のGBAtoPCMが便利だと思います
OG1とOG2にしか対応していないので他のものにも使いたいという方には
スレで言っていただければ、応答したいと思っています
---------------------------------------------------------------------
履歴
2007/12/19 公開(0.001)
2007/12/22 ループが4回でとまるバグを修正
デルタタイムの説明を少し変更(0.002)
---------------------------------------------------------------------
■使い方
□OG2への移植
ここではバイナリエディタを使いこなしている方を対象に
OG2への曲を組み込み方をざっと説明します
まずはデータの出力までを説明すると
① Midiを読み込む
② ループ開始時間と終了時間を入力する
③ 楽器番号やドラムセットの調節を行う
④ ROM開始アドレスを変更する
⑤ 左下の変換ボタンを押す
→ フォルダに"MPHeader.dat"と"MP2000.dat"が出力される
2のループ終了時間は0のままにしないでください。0だと演奏時間も0になります
それぞれデルタタイムでの入力なので、時間単位の値=四分音符一つとして計算してください
(例:時間単位=480で4拍子の20小節の長さにしたい場合、480x4=1920 1920x20 = 38400となります)
3の調整は色々あるので後回しでいいかも知れません。
あらかじめ作っておいた調節データを読み込むこともできます
4で指定したアドレスに曲データの先頭が来るようにしてください
フォルダに出力されたのは曲のヘッダと曲データ本体です。
"MPHeader"にはトラック数や各トラックへのオフセット、音源データへのオフセットなどが
"MP2000"には各トラックの演奏データがはいっています
次に、この曲データをROMに移植します。
バイナリエディタでROMとMPHeaderとMP2000の三つを開いておいてください
⑥ OG2構造体の「【3FA1AC】BGMデータのへのアドレス」を開く
⑦ 入替する曲のアドレスに飛んで、そこにMPHeader.datをコピペする
⑧ MP2000.datを4で指定したアドレスにコピペする
例えば、4でのアドレスが0x9000000で、AshToAshと置き換えたい場合
0x05315C4にMPHeader.datを
0x1000000にMP2000.datをそれぞれ貼り付けることになります
これで保存すれば入れ替えの完了です
------------------------------
□調節データの使用
サンプルとしていくつかMIDIと調節データを用意してみたので
②③の代わりに調節データ読込で*.mdfy2ファイルを読み込んでみてください
頑張れば割と綺麗に変換できることがわかると思います
------------------------------
□他のGBAソフトへの移植
基本的に同じですが、2点の注意が必要です
① GBAソフトがMP2000(Sappy)の規格を採用しているか
② BGMデータのへのアドレスと、音源アドレスの把握
任天堂の純正(?)のサウンドエンジンを搭載していないゲームにはSappyは使えません
同じGBAのスパロボでも、OG1とOG2はMP2000形式ですが、ARDJはそうではありません。
MP2000対応かどうかを判別するにはloveemu氏のgba2midiが一番楽だと思います
gba2midiで再生できなければ非対応ということで諦めてください(下記の参考サイト参照)
2のBGMデータのアドレスもgba2midiや同製作者のstosで取得することが出来ます
音源アドレスとは楽器の波形データや、効果音の情報が集まったところで、
各BGMのヘッダの4Byte目で指定されています(OG2だと一律で0x083F6AD4)
したがってBGMデータのアドレスが分かれば、そこから芋づる式でわかるはずです
付けたしとして、OG2では全楽曲同じ音源アドレスですが、
FF4-6など楽曲ごとに違う音源アドレスをもっているので注意が必要です
音源アドレスがわかったら変換ボタンを押す前に
GBASequenceの設定の音源アドレスを変更してください
---------------------------------------------------------------------
■うまく変換するためのTIPS
□楽器の変更
各トラックの各楽器ごとに、楽器番号、音量、音程が変化できます
楽器番号を探すときは付属のGBAtoPCMを使うと便利です
ROM内にあるPCM音源を再生することができます
GM規格の音色マップ等とにらめっこしながら頑張ってください
音量は1-255%まで変更可能
音程は100を基準にして、+12で1オクターブ高くなります
OG2限定でコツをいくつか言うと
PCM音源の音が高い時は、ノート(音階)は低い方がかっこよくなることが多い
3A(ラッパ)30(弦楽器)は聴き取りやすい音がよくメロディに使いやすい
音によって伸びる音と伸びない音があるので注意
ベース音には6A(ch3:三角波)が使いやすい
和音は表現されにくい。他の音を食うこと多いので注意
□ループ時間の設定
ループ開始と終了、および演奏開始時間を設定できます
デルタタイムなので初めての方は面をくらってしまうかも知れませんが
「時間単位の値=四分音符の長さ」ということさえ把握して計算すれば大丈夫です
CherryなどのMIDI編集ソフトで開いて、区切りのいい小節を探すのがオススメです
(下記の参考サイト参照)
□ドラム
MIDIデータだとチャンネル10はドラムパートと決まっているので
使用チャンネルが10のトラックは強制的にドラム化されています
(トラック情報の強制ドラム化にチェックされる)
しかし、PSのPgconvなど、ゲームからMIDIを抽出するソフトでは
必ずしもドラムパートがCh10ではないし、Ch10にメロディなこともあるので注意
適宜、トラック情報で変更してください
またドラムの音が合わないと思ったら、別のドラム定義ファイル読みこむか
Edtで自分でドラム定義情報を編集してください。
ドラムパートでは各ノートごとに楽器とノートを指定してすることが出来ます
トラック情報のNote分析を押すと、どのノートの使用状況が一目瞭然になります
注意点として、ドラムにPCM音源を使うと他のパートの音を食うことがあります
デフォルトのドラム定義ファイルでもPCM音源が使われているので、音が出ていないと思ったら
Noise(ch4)のみを使用したものに変えてみてください
□音源の種類
GBA音源には5つの種類があります
Ch1 Pulse1 矩形音
Ch2 Pulse2 矩形音
Ch3 波形メモリ 三角波
Ch4 リズム楽器 ノイズ
DirectSound PCM音源
Ch1-4は基本的に同時に1音しか出せないので注意
PCM音源は3音ぐらい(?)同時に発音できますが、効果音により音カケも留意してください
トラック一覧の上の方から順に優先度が高くなってます
またトラックの数が多すぎても下の方のトラックが再生されないことがあるようです
□MIDI自体の編集
発音数にかなり制限があるので、和音は変換の大敵になります
6つ、7つの音を同時に鳴らすトラックがあると、もう他の音がならなくなります(PCM音源の場合)
CherryなどのMIDI編集ソフトで音を減らす作業はかなり大事になります
□演奏精度の変更
SPCからMIDIに変換すると、テンポが25bpmなどの極めて少ない数字なることが多いです
こういう場合、リズムがきちんと再現されないことが多いので、MidiToGBA側で
テンポをn倍にしてリズムを再現することが出来ます
1Byteデータなので テンポ×n > 255になるとバグります
---------------------------------------------------------------------
■最後に
バグ報告、プログラムへのリクエスト等は
年内までだったら応答できると思いますスレまでどうぞ
おそらく似た名前のソフトが沢山あると思うので
スパロボのスレのという意味でSR_MIDItoGBAという名前にしました、
他ソフトとの混合しそうな時はSRつけてみてください
他人のサイトで公開されているMIDIを使うときは許可をもらってきてください
マナー違反であるし、スレが荒れるのが嫌なのでそこは厳しくお願いします
再配布は別にかまいませんが
付属したサンプルフォルダは消して下さい
---------------------------------------------------------------------
■参考サイト
Direct Art Studio
MIDI規格についてはここで勉強しました
http://www.pluto.dti.ne.jp/~daiki/
loveemu labo
ここの「Sappy解体新書」でMP2000について勉強しました
現在はそのページはありませんが、過去コンテンツをrarにして公開しており、
その中に解体新書やgba2midiやstosも入っています
http://loveemu.yh.land.to/
ふみぃのソフトウェア工房
Cherry(MIDI Sequencer)は非常に重宝しました
SMF0→SMF1への変換、ループタイミングの測定、和音の削除など
SR_MidiToGBAを使う上で必要な機能が全部そろっていると思います
http://hp.vector.co.jp/authors/VA010012/
---------------------------------------------------------------------
製作環境
ActiveBasic 4.24.00
WindowsXP HomeEdition SP2
Celeron(R) 2.40GHz
240MB
製作 295@スパロボ改造スレ11