2021/01/24

ウェーブテーブルのピッチベンド

ウェーブテーブルのピッチベンドを読む (github.io)

Laurent de Soras さんによる The Quest For The Perfect Resampler を参考にして、ウェーブテーブルをピッチベンドしたときにエイリアシングノイズを出さないようにする方法を試しました。 

オクターブごとにウェーブテーブルを用意して、線形補間と2倍のオーバーサンプリングを組み合わせることでエイリアシングノイズは消せました。ただしピッチベンド中にウェーブテーブルが切り替わるとポップノイズが出ます。ポップノイズを抑えたいときは4倍以上にオーバーサンプリングするとよさそうです。

De Soras さんの資料ではミップマップとアップサンプラを組み合わせていますが、フィルタ係数の補間と FIR の畳み込みが重たそうだったので今回は実装していません。

画像の上は今回実装したオーバーサンプリングを行うウェーブテーブルオシレータでのこぎり波を出力したときのスペクトログラムです。下はウェーブテーブルが切り替わるタイミングを示しています。

2021/02/24追記: リンク先の記事を大幅に加筆修正しました。

2021/01/11

ステレオパンニング

ステレオパンニングを読む (github.io)

ステレオ → ステレオパンニングの計算式をいくつか作りました。ステレオ → モノラルパンニングについては Loudness Concepts & Panning Laws を参考にしました。

画像はステレオ → ステレオパンニングのブロック線図です。

2021/01/08

リミッタの実装

リミッタの実装を読む (github.io)

リミッタの実装についてまとめました。「ステップ応答が S 字を描くフィルタ」と「ピークホールドによるエンベロープ」で作った部品を使っています。

今回作ったリミッタは musicdsp.orgLookahead Limiter の記事で紹介されているレシピとほとんど同じです。この記事の翻訳版もあります。レシピにはピークホールドの詳細が書いていなかったので、そこだけ試行錯誤しました。

画像は実装したリミッタの大まかなブロック線図です。

2021/01/06

ダウンサンプリング

ダウンサンプリングを読む (github.io) 

今まで適当にやっていたダウンサンプリングについて調べたことをまとめました。

画像は FIR フィルタのポリフェイズ分解を表したブロック線図です。

ピークホールドによるエンベロープ

 

ピークホールドによるエンベロープを読む (github.io)

リミッタで使うためのピークホールドを使ったエンベロープの実装について調べました。

画像は理想的なピークホールドの出力です。