niszetの日記

10年目エンジニアが最近勉強したことを忘れないようにメモをする

Csoundでエイリアシングの確認

久々に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のバグに気づきました…修正修正…