コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

3DViewerDS用音楽データの作り方

前回のブログに続いて、音楽データの作り方を説明します。音楽データは音波形の生データですので、作り方は簡単です。
前回用いたサンプル(3dtest.mp4)から音データを生成する方法を書きたいと思います。

私の使用ツール

使用ツールは前回使ったffmpegsoxという音楽データ変換ツールを用います。

  • ffmpeg : ffmpegはflvやmp4ファイルから音データも取り出すことができます。ダウンロードはここからできます。StaticのLastestを選択すれば問題無く動くのではないでしょうか。
  • sox : soxはいろいろな音楽データ形式の変換ツールです。ダウンロードはここからできます。最新版をダウンロードすればいいと思います。

やり方の解説

音データの作り方を順に説明します。前回と同様に下記のニコニコ動画にfeifei22さんが投稿された動画をサンプルに使わせていただきました。
D
上の動画をmp4ファイルとして保存します。このやり方の説明は省きます。「ニコニコ動画 保存」などでググレばわかると思います。

wavファイルの生成

先ずはmp4ファイルからffmpegを用いて、wavデータを抽出します。モノラル(ac 1)サンプリング周波数44.1kHz(ar 44100)、データビット8ビット(acodec pcm_u8)の3dtest.wavというデータを生成します。

ffmpeg -i "3dtest.mp4" -ac 1 -ar 44100 -acodec pcm_u8 "3dtest.wav"

3DViewerDSが1チャネルデータビット8ビットにしか対応していないので、このように抽出しました。

生波形データの生成

ダウンロードしたsoxファイルを解凍します。そして、sox.exeと3つのdll(libgomp-1.dll, pthreadgc2.dll, zlib1.dll)を、3dtest.wavのフォルダにコピーします。そして、soxを起動して生波形データを生成します。
サンプリングレートは20000Hzにしました。こんなに速くなくてもいいと思います。チャネルは1つ、rawデータを生成して、8ビットデータとしています。

sox "3dtest.wav" --rate 20000 --channel 1 --type raw -s --bits 8 "3dtest.oto"

3DViewerDSのINIファイル設定

これで、3dtest.otoデータが生成されています。このデータをマイクロSDメモリにコピーして、前回と同様に3DViewerDSのINIファイルに登録すれば終了です。前回の登録で、otoname = noneとたところのotoデータのファイル名を書き換えます。sHzは20000にしたので20000と書きます。
音データは、実行時にメモリに読み込むため、大きなサイズだとオーバーフローしてハングアップします。サンプリングレートを適度に変更して、3MBを超えないようにしてください。DSのメインメモリは4MBです。

[Read File Suu]
 kosuu = 1
[Read File Data1]
 leftFilename = FAT:/3dViewer/test/left.bin
 rightFilename = FAT:/3dViewer/test/right.bin
 title   = Do-Dai
 otoname = FAT:/3dViewer/test/3dtest.oto
 komaCnt = 1280
 sHz = 20000
 repeatCnt = 1

以上が3DViewerDSの音データの生成方法です。