2015年11月20日金曜日

リズムマシン デジタルフィルタ処理

リズムマシンのメイン基板のPSoC 5LPにデジタルフィルタの処理を追加してみた。

今のところ8kHzのサンプリング・レートでやっている。

サンプリング間隔のうちどれぐらい時間がかかっているかオシロで見てみた。

PSoC Creaatorのプロジェクト
https://github.com/ryood/RhythmMachine/tree/master_DFB_test/Master_PSoC5LP_Test/PSoC/Sequencer_Master/Sequencer_Master_PSoC5LP_ProtoKit_HD44780.cydsn

波形生成の処理時間


ch1:ISR_Check ch2:Timer_Sampling_TC

ch2はサンプリング周期でパルスを発生させて補足したもの。ch1は波形生成処理の前後でH/Lさせている。

サンプリング周期は0.126ms(126us)で波形生成は60.400us。8kHzだと約半分で処理が完了しているようだ。

プログラムはほとんど最適化していないので最終的にはサンプリング周波数をもう少しあげられるかもしれない。

デジタル・フィルターの処理時間



ch1:ISR_Check ch2:Ext_Check

ch2はデジタル・フィルタの処理の前後でH/Lさせたもの。2usで済んでいるようだ。

メモ:


  • 8kHzのサンプリング周波数だとカットオフ周波数は4kHzに制限される。ナイキスト周波数だからしかたない。ノイズにHPFをかけてみたがかなり変な音になってしまった(^q^;
  • PSoC 5LPのFilterコンポーネントは実行時にパラメータをいじれないようだ。カットオフ周波数ぐらいは変化させたかったので残念。
  • 自力でDFBをいじればできるかもしれないが、DSPプログラミングはやったことがないので保留。BlackFinをいじってからまた考えよう。
  • フィルターをCPUでプログラミングすればパラメータをいじれそうだが、確実に小数点演算なので実行時間がどれ位かかるか・・・
    →固定小数点演算でできれば現実的な範囲かな?