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

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

サウンドデータを作成する

DevkitProのサウンドライブラリは音を鳴らすのに、チャネルにサンプリングした生波形データをセットします。そのため、あらかじめこの生波形を用意しておく必要があります。プログラム内で生波形を生成してもいいですが、とりあえず、先に作っておいた方が楽です。
この生波形の作り方を説明します。

SoXを使う

いろいろなサウンドデータから生波形を作るために、サウンドデータの変換プログラムを用いるのが簡単です。私はSoXという変換ツールを使っています。今、SoXのサイトを見てみたら、ずいぶんバージョンが上がっているので、最新のものを使った場合の変換方法を書いておきたいと思います。

SoXWindows版のダウンロード

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の割合で左右の音量のバランスが決まる