「SPRESENSEでデジタルエフェクターを作ろう!」ーコンプレッサーとディストーションの実現ー [SPRESENSE]
いよいよ今回から、デジタルエフェクターらしくギターの生音に信号処理を加えていきます。
ギターのエフェクターは次のように接続するのが一般的なようです。今回は、コンプレッサーとディストーションをまず実現したいと思います。ボリュームはアンプの抵抗定数変更やマイク入力のゲイン変更で行うことできます。
信号処理は次の本を参考にしました。音声音響信号処理の基本が身につきますのでおすすめです。
■ コンプレッサーの信号処理
コンプレッサーは設定した閾値から観測信号を圧縮する処理を行います。変換を表すグラフと式を次に表します。グラフを見ても明らかなように、小さい音を持ち上げて大きな音を抑制する働きをします。
■ ノイズゲートの信号処理
ノイズを除去するフィルターとしてノイズゲートというものもあります。これはある閾値以下の値はノイズとして処理するものです。あまりやり過ぎると音が不自然になるのでこれはなくてもよいかも知れません。
■ ディストーションの信号処理
ディストーションはある閾値以上の音をクリップしてしまう処理です。ロックでは非常に重要なエフェクトですね。信号処理でゲインを与えるというやり方はありますが、情報が欠落してしまうのであまりおすすめしません。
ゲインを上げたい時はアンプのボリューム抵抗で入力信号を増幅するか、マイク入力のゲインをあげたほうがロックらしい音が得られます。
ディストーションは、あるレベルで信号をクリップしてしまうので、音のレベルを小さくしてしまうのに注意してください。出来る限りアンプの増幅度をあげてアナログ的にクリップしたほうがいいかも知れません。ここは、アナログとデジタルをうまく使い分けたいところです。
■ コンプレッサー、ノイズゲート、ディストーションの実装
これらの処理を実装してみました。前回紹介したコードの中の singnal_process 関数部分だけを掲載します。
処理時間を計測してみると最大で1.6ミリ秒でした。トータル15ミリ秒ありますので、まだ処理を追加できそうですね。SPRESENSEの計算能力恐るべしです。
■ 効果を確認
実際の効果を確認してみました。なかなかそれらしい音を出せました。全部プログラムで処理しているので、自分好みの音を自分で作れるのが醍醐味ですね。
次は空間系エフェクターの実装をしてみたいと思います。(⌒▽⌒)/~
「SPRESENSEでデジタルエフェクターを作ろう!」ープリアンプの製作編
「SPRESENSEでデジタルエフェクターを作ろう!」ー低遅延入出力の実現ー
「SPRESENSEでデジタルエフェクターを作ろう!」ーコンプレッサーとディストーションの実現ー
「SPRESENSEでデジタルエフェクターを作ろう!」ー空間系エフェクターの実現ー
「SPRESENSEでデジタルエフェクターを作ろう!」ーモジュレーション系エフェクターの実現ー
ギターのエフェクターは次のように接続するのが一般的なようです。今回は、コンプレッサーとディストーションをまず実現したいと思います。ボリュームはアンプの抵抗定数変更やマイク入力のゲイン変更で行うことできます。
信号処理は次の本を参考にしました。音声音響信号処理の基本が身につきますのでおすすめです。
音声音響信号処理の基礎と実践 - フィルタ,ノイズ除去,音響エフェクトの原理 - (次世代信号情報処理シリーズ 2)
- 出版社/メーカー: コロナ社
- 発売日: 2021/04/08
- メディア: 単行本
■ コンプレッサーの信号処理
コンプレッサーは設定した閾値から観測信号を圧縮する処理を行います。変換を表すグラフと式を次に表します。グラフを見ても明らかなように、小さい音を持ち上げて大きな音を抑制する働きをします。
■ ノイズゲートの信号処理
ノイズを除去するフィルターとしてノイズゲートというものもあります。これはある閾値以下の値はノイズとして処理するものです。あまりやり過ぎると音が不自然になるのでこれはなくてもよいかも知れません。
■ ディストーションの信号処理
ディストーションはある閾値以上の音をクリップしてしまう処理です。ロックでは非常に重要なエフェクトですね。信号処理でゲインを与えるというやり方はありますが、情報が欠落してしまうのであまりおすすめしません。
ゲインを上げたい時はアンプのボリューム抵抗で入力信号を増幅するか、マイク入力のゲインをあげたほうがロックらしい音が得られます。
ディストーションは、あるレベルで信号をクリップしてしまうので、音のレベルを小さくしてしまうのに注意してください。出来る限りアンプの増幅度をあげてアナログ的にクリップしたほうがいいかも知れません。ここは、アナログとデジタルをうまく使い分けたいところです。
■ コンプレッサー、ノイズゲート、ディストーションの実装
これらの処理を実装してみました。前回紹介したコードの中の singnal_process 関数部分だけを掲載します。
void signal_process(int16_t* mono_input, int16_t* stereo_output, uint32_t sample_size) { /* clean up the output buffer */ memset(stereo_output, 0, sizeof(int16_t)*sample_size*2); /* volume (gain setting) */ static int16_t gain = 0; /* 0dB */ theFrontEnd->setMicGain(gain); /* compressor & distotin*/ static int16_t comp_th = 0x7fff/128; static int16_t noise_g = 0x0005; static int16_t dist_th = 0x7fff/32; static float alpha = 0.5; for (int n = SAMPLE_SIZE-1; n >= 0; --n) { /* compressor process */ if (abs(mono_input[n]) > comp_th) { int32_t value = mono_input[n]; mono_input[n] = value/abs(value)*(abs(value)*alpha + (1.-alpha)*comp_th); } /* noise gate process */ if (abs(mono_input[n]) < noise_g) { mono_input[n] = 0; } /* distortion process */ if (abs(mono_input[n]) > dist_th) { int32_t value = mono_input[n]; mono_input[n] = value/abs(value)*dist_th; } } /* copy the signal to output buffer */ for (int n = SAMPLE_SIZE-1; n >= 0; --n) { stereo_output[n*2] = stereo_output[n*2+1] = mono_input[n]; } return; }
処理時間を計測してみると最大で1.6ミリ秒でした。トータル15ミリ秒ありますので、まだ処理を追加できそうですね。SPRESENSEの計算能力恐るべしです。
■ 効果を確認
実際の効果を確認してみました。なかなかそれらしい音を出せました。全部プログラムで処理しているので、自分好みの音を自分で作れるのが醍醐味ですね。
”Spresense デジタルエフェクター”
— よしのたろう 純国産ボード”スプレッセンス”応援団長(仮) (@Taro_Yoshino) May 3, 2022
コンプレッサーとディストーションを真面目に実装。
効果を確認。なかなか良い感じ。 pic.twitter.com/xpdNsyhwbK
次は空間系エフェクターの実装をしてみたいと思います。(⌒▽⌒)/~
「SPRESENSEでデジタルエフェクターを作ろう!」ープリアンプの製作編
「SPRESENSEでデジタルエフェクターを作ろう!」ー低遅延入出力の実現ー
「SPRESENSEでデジタルエフェクターを作ろう!」ーコンプレッサーとディストーションの実現ー
「SPRESENSEでデジタルエフェクターを作ろう!」ー空間系エフェクターの実現ー
「SPRESENSEでデジタルエフェクターを作ろう!」ーモジュレーション系エフェクターの実現ー
音声音響信号処理の基礎と実践 - フィルタ,ノイズ除去,音響エフェクトの原理 - (次世代信号情報処理シリーズ 2)
- 出版社/メーカー: コロナ社
- 発売日: 2021/04/08
- メディア: 単行本
SPRESENSEではじめるローパワーエッジAI (Make: PROJECTS)
- 出版社/メーカー: オライリージャパン
- 発売日: 2022/02/28
- メディア: 単行本(ソフトカバー)
SONY SPRESENSE メインボード CXD5602PWBMAIN1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SONY SPRESENSE 拡張ボード CXD5602PWBEXT1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware