サウンドデータを作成する
DevkitProのサウンドライブラリは音を鳴らすのに、チャネルにサンプリングした生波形データをセットします。そのため、あらかじめこの生波形を用意しておく必要があります。プログラム内で生波形を生成してもいいですが、とりあえず、先に作っておいた方が楽です。
この生波形の作り方を説明します。
SoXを使う
いろいろなサウンドデータから生波形を作るために、サウンドデータの変換プログラムを用いるのが簡単です。私はSoXという変換ツールを使っています。今、SoXのサイトを見てみたら、ずいぶんバージョンが上がっているので、最新のものを使った場合の変換方法を書いておきたいと思います。
SoXのWindows版のダウンロード
SoX - Sound eXchange | HomePageのDownloadからSoX 14.3.0 をダウンロードします。MS-Windows executableをクリックすると、SourceForgeのダウンロードサイトに行きます。そこで、sox-14.3.0-win32.zipをダウンロードします。
SoX14.3.0を使ってみる
sox-14.3.0-win32.zipを解凍すると、SoX一式がsox-14.3.0というフォルダに解凍されます。あとは、batch-example.batの中身をエディタで書き換えて実行すれば、変換できるはずです。やってみます。
wavファイルを用意します。SofTalkを使って読み上げた文章をwavファイルにしたいと思います。折角なので「チョコレートを受け取ってください」としゃべらせてみます。これをchocolate.wavとして保存しました。
SoX変換用バッチファイルを作る
次に、バッチファイルを作ります。最新のSoXのオプションを調べてみました。DevkitProのサウンドライブラリに必要なものを説明します。
- rate サンプリング周波数を設定します。"--rate 数値 "の書式で書くのがわかりやすいと思います。
- channel モノラルかステレオかを設定します。サウンドライブラリの場合は、常に1チャネルでいいので、"--channel 1 "と書くことになります。
- type 出力波形の形式を指定します。サウンドライブラリの場合は生波形なので、常に"--type raw "と書くことになります。
- Encoding type データのタイプを指定します。サウンドライブラリの場合は、signed-integerなので、常に"-s "と書くことになります。
- Encoded sample size in bits ビットサイズを指定します。8ビットか16ビットのどちらかをセットします。"--bits 数値 "の書式で書くのがわかりやすいと思います。
バッチファイルに記述した例を示します。
sox "chocolate.wav" --rate 11025 --channel 1 --type raw -s --bits 8 "chocolate.oto" pause
chocolate.wavをchocolate.otoに変換しています。サンプリングレートは11025Hz、ビットサイズは8ビットにセットしています。
このバッチファイルを実行すると、生波形データファイルchocolate.otoができます。
OsoScriptで再生する
chocolate.otoをOsoScriptで再生します。
soundset( 0, "chocolate.oto", 11025, 127, 64, 0, 0 ); soundplay( 0, 0 );
soundset( 0, "chocolate.oto", 11025, 127, 64, 0, 0 );は、チャネル 0に、chocolate.otoファイルを設定、サンプリング周波数は11025Hzで、音量は最大(127)、左右のスピーカーからは同じ大きさの音を出す(64)*1。データサイズが8ビット(0)、ループしない(0)という設定である。
soundplay( 0, 0 );でチャネル0を鳴り終わるまで待たない設定で鳴らしている。
これで、SoXを使ったdevkitProのサウンドデータの生成方法説明終わりです。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム
*1:0が左のみ、127が右のみから音が出て、0〜127の割合で左右の音量のバランスが決まる