ステレオとモノラル

昨日波形の振幅を半分にしたら砂嵐状態になった現象ですが、単にバイナリデータを取り出したあとの数値変換の部分が符号なしでさらに量子化ビットのサイズが違っていました。

1チャンネルのモノラルと2チャンネルのステレオでは内部のデータが若干違います。なので1フレームごと取り出したあとに、何チャンネルで1フレームあたり何ビットのデータを扱い、サンプリング周波数は何Hzなのかを調べてからunpackしないととんでもない数値が出てきたりして砂嵐になったりします。

そんでそれから16ビットのステレオで録音した「あー」という声に対して値を取り出してみると一応 左右左右左右左右・・・ というような順番で並んでいるようです。左が16ビット、右も16ビットなので左右2バイトずつということでそれに合わせてunpackします。

このunpackした値に対して操作を行って今度はpackし直してバイナリファイルに書き込んでいくと変更が加わったwaveファイルの出来上がり。振幅の幅を1/10くらいにすれば音量を小さくできますし、逆にすれば大きくできます。左右のビットを入れ替えると逆のステレオ再生をすることもできます。ここまでの操作は特別何にもしなくても関数使えば簡単にできるのですがこのあとはもっと勉強しないと無理そーだ。