2019/12/12

IterativeSinCluster

ダウンロードとマニュアル (github.io)
ソースコード (github.com)

IterativeSinCluster は 1 つのノートごとに 512 のサイン波を計算する加算合成シンセサイザです。

sin の計算方法は Martin Vicanek さんによる A New Recursive Quadrature Oscillator の appendix で紹介されていた biquad oscillator を使いました。このアルゴリズムは周波数が変更されないときに限って高速に sin を計算できます。

これだけ多くのサイン波を足し合わせたら色々な音が出るだろうと思っていたのですが、わりと似たような音しか出ないシンセになりました。適当に Gain, Semi, Milli と Overtone を動かして Random->To Pitch を9 時くらいにするとそれっぽい音が出ます。

コーラスは FDNCymbal のトレモロを 3 つ並列につないでいます。

2019/11/30

TrapezoidSynth


ダウンロードとマニュアル (github.io)
ソースコード (github.com)

TrapezoidSynth は PTR 台形オシレータを使ったモノシンセです。台形の斜辺の傾きを変えることで、三角波と矩形波に近い波形を出力できます。

 PTR 台形オシレータは PTR の次数とノイズが乗らない音程の上限との間でトレードオフがあります。どちらにしてもオーバーサンプリングしないと 20000 Hz 以下でノイズが乗ってしまうので、いまいちなアルゴリズムです。

PTR 台形オシレータのアルゴリズムの説明 (github.io)

バージョン 0.1.0 ではアルゴリズムの実装に間違いがあったのでノイズが乗っています。 バージョン 0.1.1 で間違いを修正しました。

2019/11/02

FDNCymbal のプラグイン版


ダウンロードとマニュアル (github.io)
ソースコード (github.com)

前に作った FDNCymbal を VST3 と LV2 プラグインにしました。 WaveCymbal よりはシンバルに近い音が出ます。

2019/10/28

WaveCymbal のプラグイン版


ダウンロードとマニュアル (github.io)
ソースコード (github.com)

前に作った WaveCymbal を VST3 と LV2 プラグインにしました。相変わらずシンバルのような音は出ません。

GitHub Actions を使って macOS ビルドも追加しました。ただし mac を持っていないのでテストできていません。問題を見つけたときは GitHub のリポジトリまで報告をお願いします。

WaveCymbal ではシンバルを上から見て同心円状に切った各部を Karplus-Strong の弦で近似しています。そして同心円状の金属の切れ端を 1 次元の波のシミュレーションでつないでいます。さらにハイハットのような音を出すために複数枚のシンバルを用意してぶつけています。次の図はシンバル 1 枚分のモデルを表しています。 nCymbal の値を 1 にしたときに相当します。


2019/10/02

SyncSawSynth


ダウンロードとマニュアル (github.io)
ソースコード (github.com)

SyncSawSynth は 0 から 10 次までの PTR オシレータで鋸歯波をばりばり鳴らせる VST3 のシンセサイザです。

10 次の PTR は明らかに耳でわかるノイズが乗ります。 5 次くらいのほうがノイズが少ないように聞こえます。周波数変調をかけるときは加わったノイズが面白い味になるので全部まとめて使えるようにしました。

追記 2019-10-17: バージョン 0.1.1 で double 型の PTR オシレータを追加しました。 SyncType で Order 10 double を選べばエイリアシングノイズがかなり減ります。

フィルタは RBJ の biquad を使いました。今のところ係数を更新する式の sin と cos の計算がボトルネックになっています。

2019/09/20

SevenDelay


SevenDelay をダウンロード (github.io)

SevenDelay というディレイの VST 3 プラグインを作りました。分数ディレイに7次のラグランジュ補間を使って7倍のオーバーサンプリングをしています。

デモ演奏の動画です。


技術的なことはディレイの実装にまとめています。VST 3 の開発で引っかかったこともまとめておきました。

VST3 の開発を読む (github.io)

VST compatible logo です。 VST は Steinberg の登録商標です。

2019/09/11

PTR オシレータ



PTR オシレータを読む (github.io)

Kleimola と Valimaki による Reducing aliasing from synthetic audio signals using polynomial transition regions で紹介されていた PTR (Polynomial Transition Regions) オシレータを試しました。10次までの鋸歯波、三角波、ランプ関数、ステップ関数の計算式を求めています。

鋸歯波では PTR の次数が上がるとハードシンクをかけたときにオーバーシュートが起きて面白い音になります。鋸歯波以外の波形では周波数が高くなるとノイズが乗ります。

2019/09/08

PolyBLAMP Residual

PolyBLAMP Residual を読む (github.io)

Esqueda, Välimäki, Bilbao による ROUNDING CORNERS WITH BLAMP で紹介されていた、 polyBLAMP residual を波形の角に足し合わせてエイリアシングを減らす方法を試しました。

画像は三角波オシレータに polyBLAMP residual を適用したときのスペクトラムです。

オシレータへの応用は上手く行ったのですが、ハードクリップへの応用は失敗しました。いろいろ試したのですが論文で紹介されている波形の角の位置の推定は使い物にならない気がします。

2019/07/11

ウェーブテーブルのエイリアシングの低減


ウェーブテーブルのエイリアシングの低減を読む (github.io)

シンセサイザのオシレータとして使われるウェーブテーブルのエイリアシングを減らす方法について調べました。

YoshimiのADDsynthで使われていた手法でエイリアシングノイズを大幅に減らすことができました。ADDsynthではノートオンのたびに波形の周波数成分から不要な倍音を削った上で逆フーリエ変換してウェーブテーブルを合成しているようです。補間については、今回試した範囲では sinc 補間よりもキュービック補間のほうが良さそうに思えました。

画像はウェーブテーブルから生成する信号の周波数を変えたときのキュービック補間と sinc 補間の平均絶対誤差の比較です。

2019/07/04

WobblingMetalBoard

デモを見る (github.io)

WobblingMetalBoard は金属板を揺らしたときのような音を合成するシンセサイザです。

次のリンクは本物の金属板を揺らしたときの音です。 WobblingMetalBoard の Bounce -> Number を 1 にしたときの音と比べてみてください。

金属板を揺らしたときの音 (Google Drive)

2019/06/30

Bubbles


デモを見る (github.io)

Bubblesは泡の音を合成するシンセサイザです。 Kees van den Doel による Physically-based Models for Liquid Sounds に基づいています。

2019/06/29

AM変調によるピッチシフト


AM変調によるピッチシフトを読む (github.io)

Scott Wardle さんによる A Hilbert-Transformer Frequency Shifter for Audio で紹介されていたAM変調によるピッチシフトで遊びました。

画像は Olli Niemitalo さんによって紹介されていた analytic signal を近似する2つのオールパスフィルタの位相差の周波数特性です。

2019/06/26

凸最適化を用いた分数ディレイフィルタの設計

凸最適化を用いた分数ディレイフィルタの設計を読む (github.io)

PutnamとSmithによるDesign of fractional delay filters using convex optimizationで紹介されていた分数ディレイフィルタを設計して、ラグランジュ補間の分数ディレイフィルタと比べました。

上の画像は論文で紹介されていたフィルタの群遅延特性、下の画像はラグランジュ補間の群遅延特性です。論文のフィルタのほうが急峻な特性になっていますが、低域ではラグランジュ補間のほうがフラットに見えます。

ベンチマークをとってみないとはっきりとは言えませんが、論文のフィルタは単純なFIRフィルタなので場合によってはラグランジュ補間より高速かもしれません。

2019/06/24

ディレイの実装


ディレイの実装を読む (github.io)

ラグランジュ補間を使ったディレイの実装の詳細についてまとめました。画像は補間によって生じるずれの補正に関する図です。

 いろいろ試したところ、2倍のオーバーサンプリングと線形補間でノイズが十分に減ることがわかりました。 テープの低速再生などを再現するときはラグランジュ補間が役に立ちそうです。

2019/01/09

Inviscid な Burgers 方程式

Inviscid な Burgers 方程式を読む (github.io)

Landajuela さんの BURGERS EUQATION で紹介されていた Godunov’s method で変形した inviscid な Burgers 方程式を実装して音を入力しました。歪み系のエフェクトとして使えそうです。