Androboiceってアプリを作ったときのメモ

AndroidではAudioRecordとAudioTrackという方法でマイクの音を音データにしたり、音データをスピーカーに送ることができる。
その前にまず、そもそも音データってなに?ってところから始まる。他のOSとかで音データを触ったことがないから。

音ってのは空気の振動で、コンピュータで音データを扱うということは空気の振動を0と1に置き換えること、0と1の信号を使って空気を振動させることになる。 私の理解では。

大きな音がマイクに入ると、大きな電流がコンピュータに流れ、小さな音だと小さな電流がコンピュータに流れる。

コンピュータは流れてきた電流を一定時間ごとにデータを記録していく。大・小・大・小・中・大・小・・・・などと。

実際には20,000 ・-20,000 ・ 200 ・100 ・ -100 ・・・・みたいな感じで。

記録した音データに何らかの処理をして、マイクの逆パターンでスピーカーに大・小・大・小・中・大・小・・・・と電流を送れば音が出る。

サンプリングレート

一定時間ごとにマイクからの電流を計測して記録する(サンプリングする)けど、どれくらいの間隔で記録するかは『1秒間に何回記録するか「Hz ヘルツ」』であらわす。

音楽CDだと1秒間に44,100回=44100Hz。他にも22,050Hzとか16,000Hzとか11,025Hzとか8,000Hzとかがよく使われるみたい。実際の音波はもっと細かいけど連続毎秒44,100回記録しておけば、それ以上記録してても人間の耳には違いが分からないらしい。

ビット/サンプル  BitPerSample

マイクから流れてくる電流を記録するときどれくらいの細かさで記録するかは16ビットとか8ビットとかがよく使われるらしい。

それぞれ、65,535段階か256段階。16ビットとか8ビットはコンピュータでデータを扱いやすい。音楽CDは16ビットらしい。

だから、モノラルでサンプリングレート44100Hzで16Bit/Sampleで10秒間録音したら、データサイズは

1チャンネル x 44,100回 x 10秒 x 16Bit = 7,056,000Bit = 882キロバイトになると。

ステレオでサンプリングレート44100Hzで16Bit/Sampleで80分間録音したら、データサイズは

2チャンネル x 44,100回 x 4,800秒 x 16Bit = 6,773,760,000Bit =846,720キロバイト(約800MB)になると。

80分のCD-Rの容量と大体あったので、こんな考えで間違ってはいないだろう。

これらのデータを切ったりつなげたりすれば、マイクからの音にエフェクトをかけられると思った。つづく

No related posts.

関連記事はYARPP関連記事プラグインによって表示されています。