久々にCsound小ネタ
サンプリング定理とエイリアシングについて、Csoundで実際に音を出して確認してみます。
サンプリング定理とエイリアシングについては、TIの記事があったのでとりあえず貼っておきますね。
サンプリング定理/エイリアシング - DSP の基礎・トレーニング - TI
書いてみる。
44.1kHzのサンプリング周波数なので、折り返し前を440Hzと設定した場合、行って帰って0Hzに戻る手前440Hzを引くので、
44100Hz*2-440Hz = 87760Hz
で同じ音になるはずです。
以前のサンプルコード中のinstrを少し修正し、パラメータとして周波数を受け取れるようにしています(p4で4番目の引数という意味らしい)
<CsoundSynthesizer> <CsOptions> -odac </CsOptions> <CsInstruments> instr 1 aSin poscil 0dbfs/4, p4 out aSin endin </CsInstruments> <CsScore> i 1 0 1 87760 i 1 2 1 440 </CsScore> </CsoundSynthesizer>
いかがでしょう?確かに同じ音がしてる気がしますね。しかし本当に87.76kHzが出力されているのでしょうか…?確かめようがないですねぇ。
そして、read_wavで読んでplotしたらread_wavのバグに気づきました…修正修正…