事前準備
- 事前にmp3→wav に変換しておく
- goldwave をインストールして、日本語化
- ATRAC3.zip と検索し、解凍して ATRAC3.infを 右クリックでインストール
- こちらのアップローダでgwat3.rarをDL
- OMA2AT3 OMA2AT3_ver3.11
通常変換
変換方法
- goldwave を起動し wavファイルをドラッグして ファイル→名前をつけて保存
ファイルの種類はwavで ファイルの属性を atrac3 ※※kbps stereo にして 変換する
そして出てきた ファイルの拡張子を.at3に変えておく(参考:下の例)
- 愛・おぼえていますか~bless the little queen.wavなら
愛・おぼえていますか~bless the little queen.at3にする
- 出てきたファイル を gwat3にドラッグ 変換が終わったら 名前をbgm※※.at3 とする
- 最後はUMDGenでiso のBGMを上書きして ISO を再構築すればOK
- BGMの位置は マクロスACE Fの場合 PSP_GAME\USRDIR\data\sound\bgm\
備考
- 事前にmp3→wav に変換しておく
- これは直接「mp3→at3」変換だと、タグ情報が残ってしまい、場合によっては再生できない可能性があるからです
タグ情報を削除できる人や、再生できているなら問題ありません
- mp3ファイルを例に挙げているだけなので、mp3にする必要性は無く、CD→wav→at3などでも良いです
- goldwaveで保存時に atrac3 ※※kbps stereo形式が見つからない
- 「ファイルの種類:wav」にして「ファイルの属性」を下にスクロールすれば見つかるはず
- UMDGen iso再構築
- 音楽差し替えと直接関係無いが、「UMD Properties」タグの「Optimize」ボタンを押すと不要ファイル100MB程が削除されるので、ついでにやっておくと良い
限りなく自然にシームレスループさせるには
- 上の方法だと、曲が終わる→曲の最初から演奏となる為、ループする位置を設定する必要がある
- 音楽のループ位置に拘らない人は上記の方法で良い
曲の先頭ゼロサンプル数を調べる
- ゼロサンプル:完全に無音の部分のこと
- Goldwaveでは調べられないようなのでWaveCompareを使う
この例の場合3982サンプル、これをメモする
- 音の途切れる部分を探すより似た波形を探す
おなじみのイントロ「デデデデデデドド」の直後がループ開始地点としては正しいが、あえてずらしてその後のトランペット部分の途中を開始地点とする
そして2ループ目の最初のトランペット部分の途中(開始地点と同じ部分)を終了地点とする。これで両者の波形は近くなる
- 上が開始地点、下が終了地点
ゼロクロスを選択する
- ゼロクロス:波形の中で振幅が0になる場所(中央の線)
ADXの場合はどうでも良いかも知れないがAT3をループさせるときは重要だと思う
- Goldwaveは任意の範囲を選択したとき自動的にゼロクロスを選択するようになっているので、
まずはさっき決めたループ開始地点付近で適当にゼロクロスを探す
- 白丸部分が開始地点のゼロクロス 参考画像
ループ終了地点も同じゼロクロスを探せばいいのだが、Goldwaveの自動選択が開始地点と同じゼロクロスを探してくれるとは限らないので、「開始地点と同じ(目立つ)波形から同じサンプル数の分だけたどる」という方法を取る
- 右の黄色丸部分がわかりやすいのでそこから白丸まで何サンプルあるかを測る 参考画像
- ある程度拡大するとゼロクロス自動選択は無効になるので 選択範囲で距離を測る
このときは202サンプルだったので、終了地点も同じ波形から202サンプルさかのぼる 参考画像
- 完全に同じとは言いがたいが終了地点も限りなくゼロに近いのでよしとする(画像の長さが違うのは単に拡大率の差異)参考画像
処理してWavファイルに保存
- あとはループ終了地点以降の不要な部分を削除してループ開始・終了地点、それと全体の総サンプル数をメモってwavを保存する
- この例の場合
ループ開始地点 193080サンプル
ループ終了地点 2522511サンプル
総サンプル数 2522512サンプル
WavからAT3ファイルに変換
このままGoldwaveからAT3(ATRAC3)を出力してもいいが、今回はSonicStage+OMA2AT3を使ってATRAC3plusにしてみる
(SonicStage入れたくねえとかどうでもいいという人は飛ばす)
- SonicStageを起動してマイライブラリにさっきのwavをつっこみ
右クリック→「フォーマット変換」→「OpenMG Audio (ATRAC3plus)に変換」で好きなビットレートを選択(今回は64kbps)→「変換後、著作権保護処理を行う」のチェックを必ず外す→変換
- OMAファイルが出力されたら、OMATAT3を使ってAT3ファイルに変換する
- 注:OMA2AT3の更新により この時点でfactチャンクとsmplチャンクの埋め込みが可能
AT3ファイルのループ処理設定
- ループさせるためにfactチャンクとsmplチャンクを埋め込む
市販のゲームのAT3を適当に拝借してfactチャンク&smplチャンクをコピーする
「fact」の部分から「data」の直前までコピーしたものを今度はさっき作ったAT3ファイルに貼り付ける 参考画像
Stirlingの場合「data」のdの部分に貼り付ければok 参考画像
- ヘッダのファイルサイズ部分を書き換える
この時点で上書き保存しAT3ファイルのプロパティを見るか、あるいは
「編集」→「全て選択」したあとバイナリエディタのステータスバーを見るかして AT3ファイルのサイズを調べる
この例の場合464148バイトだった
- AT3(に限った話でもないけど)は0x4~0x7にファイルサイズが書かれているので
7150Ch(464148-8を16進数にしたもの)に書き換える 参考画像
- factチャンクとsmplチャンクを書き換える 参考画像
factチャンクのうち書き換えるのは0x8~0xF
前4バイトが総サンプル数-先頭ゼロサンプル、後4バイトが先頭ゼロサンプルとなっている
さっきメモしたサンプル数を当てはめると
2522512-3982=2518530=266E02h
3982=F8Eh となる
- smplチャンクのうち書き換えるのは0x34~0x3B 参考画像
前4バイトがループ開始サンプル数、後4バイトがループ終了サンプル数となっている
さっきメモしたサンプル数を当てはめると
193080=2F238h
2522511=267D8Fh
となる
- あとは書き換えなくて良いので保存
LoopMachineバグについて
- LoopMachineを使ってループする時間をいじっていたんだけど、
これって何故か時間以外の部分も書き換えている事に気が付いた。
- その対策
- まずgwat3でループを加えるところまでは今まで通り。
- その後、ループを加えたファイルのコピーを取っておく。
- LoopMachineを使って時間をいじって保存。
- 時間いじったファイルと取っておいたファイルをバイナリエディタで比較すると、
明らかに時間以外の部分が書き換わっているので、そこを元の値に直す。
以上。
BGMリスト