2022/07/18

ClangSynth β Version

ClangSynth Download & User Manual (github.io)

β version of ClangSynth is now available. ClangSynth is a metal percussion synthesizer using feedback delay network (FDN). With some tuning, it can resemble the sound of real cymbals.

If you have some feedback, please let me know through discussion or issue on GitHub repository, or email (ryukau@gmail.com).

Note that breaking change might be introduced. If you are considering to use it for production, make sure to render the result to file before closing DAW.

  • β2: Reset behavior is fixed.
  • β1: Reset behavior is not tested, so reopening the project may break the settings in some way.

This one is the same synthesizer showed in the video in previous blog post, which was PluckSynth. Name is changed to be more descriptive.

The CPU load is high. To reduce CPU load, decrease `nVoice` parameter on bottom left. CPU load also spikes at note on, either if the note is in resting state, or `Reset at Note On` parameter is checked.

Some tips to make percussion sounds:

  • Make oscillator to resemble the hit of stick.
    • Switch `FDN`  to check the raw oscillator output.
    • Shorten `Decay` to less than 0.01 second.
    • Emphasize higher overtones by changing `Denom. Slope` and `OT Amp.`
  • Tune FDN well.
    • Increase `Identity` for more cross feedback between delays.
    • Change `OT` parameters to tune delay time. OT stands for overtone.
    • Change lowpass or highpass. Q is as important as cutoff.
  • Add accent with Envelope.
    • Shorten `Decay` to around 0.1 second.
    • Press Shift + R on `Envelope Wave` to randomize, then press F to smooth.
    • Change `HP Cut`. 

---

ClangSynth のダウンロードとマニュアル (github.io)

ClangSynth の β 版を公開しました。 ClangSynth はフィードバック・ディレイ・ネットワーク (FDN) を使った、金属的な打楽器の音が得意なシンセサイザです。いくらかチューニングすれば本物のシンバルと似たような音が作れます。

バグやその他のご意見があれば GitHub の discussion あるいは issue 、またはメール (ryukau@gmail.com) でお知らせください。

β 版なので後方互換性のない変更を行うことがあります。制作に使うときは DAW を閉じる前にファイルへと書き出してください。

  • β2: リセットの動作を修正しました。
  • β1: リセットの動作をテストしていないので、プロジェクトを開きなおすと以前の設定から音が変わってしまうかもしれません。

このシンセサイザはひとつ前の投稿で紹介しているものと同じです。金属音が出るということをわかりやすくするために PluckSynth から ClangSynth へと名前を変えました。

CPU 負荷は高めです。負荷を減らすには、GUI 左下の `nVoice` の値を下げてください。またノートオンの瞬間に CPU 負荷のスパイクが起こることがあります。スパイクは内部的なノートの状態が休止中であるか、 `Reset at Note On` にチェックが入っているときに起こります。

以下は打楽器の音を作るときのコツです。 

  •  オシレータは、ばちの衝突音に似せるように調整する。
    • `FDN` を切ってオシレータの出力を直に確認できる。
    • `Decay` を 0.01 秒以下に短くする。
    • `Denom. Slope` と `OT Amp.` を変えて高い倍音を強調する。
  • FDN は念入りにチューニングする。
    • `Identity` を上げてディレイ間のクロス・フィードバックを増やす。
    • `OT` とついたパラメータを変更してディレイ時間を調整する。 OT は overtone の略。
    • ローパスとハイパスを変える。 Q はカットオフと同等に重要。
  • エンベロープでアクセントをつける。
    • `Decay` を 0.1 秒くらいに短くする。
    • `Envelope Wave` のコントロール上で Shift + R を押してランダマイズ、 F を押して平滑化できる。
    • `HP Cut` を変える。

---

  • 2022-07-18: Added a basic hi-hat setup video.
  • 2022-07-26: Download link is changed to β2. Manual link is added.
  • 2022-07-18: 基本的なハイハットの設定の動画を追加。
  • 2022-07-26: ダウンロードリンクを β2 に変更。マニュアルへのリンクを追加。

2022/07/12

開発中の新しいシンバルシンセサイザ

 

The video shows my new cymbal synthesizer in development. It sounds better than previous cymbal synths I made, however it still sounds artificial.

---

動画では開発中の新しいシンバルシンセサイザを紹介しています。以前に作ったシンバルシンセサイザよりもそれらしい音が出ていますが、本物と比べると物足りない感じがします。

2022/06/10

MiniCliffEQ

macOS build is partially resumed now.

macOS ビルドが部分的に復帰しました。

---

Download MiniCliffEQ (github.io)

MiniCliffEQ is a FIR filter with 2^15 = 32768 taps. Because of this too many taps, latency is massive that it exceeds 1 second in 48000 Hz sampling rate. The primary purpose is to suppress direct current. It can also be used as very sharp low-pass, high-pass, low-shelf, and high-shelf filter.

Edited on 2022-06-11: Experimental macOS build is available now. Note that all the explicit SIMD options on FFTW3 are disabled, so it may runs slow. The manual is also work in progress.

This is made as an experiment to see how efficient FFT convolution (overlap-add method) is. That many number of taps is used to enable lower cutoff frequency. The filter design method is windowed sinc. Nuttall window is used.

The range of gain is ±144.5 dB, which is slightly above/below 24bit dynamic range. This can be useful to catch dither, and subtle discontinuity. Two common subtle discontinuities are caused by transition of envelope state (attack to decay, and so on), and integer arithmetic. This is sometimes useful to guess the internal of plugins.

Edited on 2022-07-26: Change download link. 

---

MiniCliffEQ のダウンロード (github.io)

MiniCliffEQ はタップ数 2^15 = 32768 の FIR フィルタです。あまりにもタップ数が多いのでレイテンシがサンプリング周波数 48000 Hz のときに 1 秒を超えます。主な用途は直流信号 (DC) の抑制ですが、とても急峻なローパス、ハイパス、ローシェルフ、ハイシェルフフィルタとしても使えます。

2022-06-11 追記: 実験的な macOS ビルドを作りました。 FFTW3 の SIMD オプションをすべて無効にしているので遅いかもしれません。マニュアルも作成中です。

FFTを使った畳み込み (overlap-add 法) がどれくらい効率がいいのかを試す目的で作りました。フィルタのタップ数がやたら多いのは FIR フィルタのカットオフ周波数を低くするためです。フィルタ設計法は windowed sincNuttall 窓を使っています。

ゲインの範囲は 24bit のダイナミックレンジを少し超える ±144.5 dB となっていて、ディザや、細かい不連続点を見つけることができます。よくある細かい不連続点の原因としては整数演算とエンベロープの状態遷移 (アタックからディケイへの切り替えなど) の 2 つが挙げられます。こうした情報はプラグインの内部の動作を推測するときに役立ちます。

2022-07-26 編集: ダウンロードリンクを変更。

2022/06/09

Partially Resuming macOS Build/macOSビルドの部分的な復帰

In the early part of this week, I was working to resume on macOS build for some plugins. Download link can be found in the issue on GitHub.

MacOS build · Issue #17 · ryukau/VSTPlugins · GitHub

Note that the build is experimental, and as same as previous releases, it wasn't tested on macOS. If the plugins are working on your environment, please let me know. (Edit on 2022-06-10: nekotaro6 reported that they are working on M1 mac. Thank you nekotaro6!)

ParallelComb and PitchShiftDelay are not up to date. They are built from beta code.

Below is a list of missing plugins from current macOS build.

  • CubicPadSynth
  • EnvelopedSine
  • EsPhaser 
  • IterativeSinCluster

---

今週の頭に macOS ビルドの復帰に取り組んでいました。一部のプラグインを除けば以下のリンク先からダウンロードできます。

MacOS build · Issue #17 · ryukau/VSTPlugins · GitHub 

現状のビルドは、以前と同様に macOS 上で動作確認できていません。もしプラグインが動くようであればメールや GitHub の issue などでご一報いただければ助かります。 (2022-06-10 追記: nekotaro6 さんによると M1 mac で動作確認できたようです。ありがとうございました!)

ParallelComb と PitchShiftDelay はひとつ前の記事のベータ版のコードからビルドしているので、次のバージョンではパラメータや音が変わります。

以下は現在の macOS ビルドから除かれているプラグインの一覧です。

  • CubicPadSynth
  • EnvelopedSine
  • EsPhaser 
  • IterativeSinCluster

2022/06/04

ParallelComb と PitchShiftDelay

Uhhyou Plugins に 2 つの新しいプラグインを加えました。 Windows と Linux (Ubuntu) のバイナリは以下のリンク先からダウンロードして試すことができます。マニュアルとプリセットはまだできていません。

ParallelComb 0.1.0 (github.com) 
PitchShiftDelay 0.1.0 (github.com) 

PitchShiftDelay はベータ版です。次のバージョンではディレイ時間が長くなります。

---

ParallelComb の音のサンプル (Google Drive)

ParallelComb は 1 つのディレイから異なる 4 つの時点の値を取り出してフィードバックするコムフィルタです。 Freeverb アルゴリズムなどで使われている初期反響音 (early reflection) のディレイと同じ構造です。書き込むバッファを 1 つに節約したことで、そのままだとフィードバックが強くかけられず面白い音は出ませんでした。そこでフィードバック経路にリミッタを挿して音が止まらないディレイへと変えることにしました。

リミッタのリリース時間 (Limiter R.) を 0 に近づけるとソフトクリッピング、 0 から離すとクリーンな音になります。クリーンな音にすると Highpass の値に近い周波数のサイン波になることがほとんどです。

フィードバック信号によるディレイ時間の変調 (Self Mod.) で変な歪みが出せます。 

不要なフィードバックを打ち切るためのゲートもついています。

---

PitchShiftDelay の音のサンプル (Google Drive)

PitchShiftDelay はディレイを使った時間領域ピッチシフタです。 16 倍のオーバーサンプリングによってピッチシフタ特有の癖を多少抑えています。また内部のバッファ長をリアルタイムで変更できます (Delay Time パラメータ) 。フォルマント補正がないので、声に使うとヘリウムを吸ったときのような音になります。

LFO の波形は 2 ミリ秒ごとにリアルタイムで更新されます。内部的には 2 つのテーブルを用意してクロスフェードしています。そしてクロスフェードの終了時に片方のテーブルを更新することで波形を次々と書き換えています。この手法は FFT によるアンチエイリアシングを行っていない点を除けば Vital のオシレータと同じです。

ピッチシフトの範囲は 0 から 1000 倍です。

バージョン 0.1.0 のディレイ時間は 1 秒とやや短いので、次の版では 10 秒前後に増やす予定です。

2022/05/25

BasicLimiterAutoMake

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

BasicLimiter に自動メイクアップゲイン、サイドチェイン、左右とミッド・サイドの切り替えをつけた BasicLimiterAutoGain を公開しました。マニュアルは BasicLimiter と共有しています。

自動メイクアップゲインを実装するコツは、しきい値をスムーシングすることのようです。ただし、今回の実装はやや不安定でオーバーシュートすることがあります。

REAPER はサイドチェインを設定すると、すべての入力のチャネル数が、すべての入力のチャネル数の総和と等しくなる、という変わった仕様になっていました。例えば 2 つのステレオ入力があると 2 * 2 = 4 チャネルを持つ 2 つの入力が VST 3 プラグインから見えるようになります。以下は BasicLimiterAutoMake のサイドチェインを使うときに設定した REAPER のルーティング・マトリックスの画像です。

2022/05/16

BasicLimiter と FDN64Reverb を公開

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

BasicLimiter と FDN64Reverb を公開しました。

SIMD 関連の問題で macOS 向けのユニバーサルバイナリのビルドができていません。開発用の M1 mac が必要ですが、今のところお財布が厳しいので、近々 PayPal のアカウントでも作ってお布施を募る予定です。

2022/05/13

Feedback Delay Network の実装

Feedback Delay Network の実装を読む (github.io) 

Feedback delay network (FDN) が発散しないフィードバック行列について調べました。配布準備がまだですが VST 3 プラグインの FDN64Reverb として実装もしました。画像は FDN のブロック線図です。

リバーブであれば、浮動小数点数が使えるならランダムな直交行列、整数演算ならアダマール行列conference 行列がよさそうです。巡回行列を作る方法は細長い管を通したような音がでます。フィードバック行列にこだわるよりも、ディレイ時間などの変調をうまくかけたほうが簡単に雰囲気がでます。

FDN は素朴な実装だと行列の乗算で N^2 の計算量がかかるのでかなり重たいです。行列の種類によっては FDN ではない形に実装を特殊化するほうがよさそうです。行列の乗算をより高速に計算できるアルゴリズムもあるようですが、 Eigen の開発者による 10 年前のコメントによると 2000*2000 ほどの大きさを超えないと高速化は期待できないそうです。オーディオレートに追いつけるのであれば GPU で計算という手もあるかもしれません。

2022/05/08

リミッタの改善

リミッタの実装を大幅に改善しました。移動平均フィルタの修正、トゥルーピークモードの設計と評価、リリースの計算あたりが大きな変更です。まだマニュアルを書いていないのでリリースはしていませんが、プラグインのリポジトリに BasicLimiter という名前で実装を追加しています。 

BasicLimiter は名前の通りベーシックなので特に目新しい音は出ませんが、オープンソースであることと、トゥルーピークモードがやや贅沢に作ってあることが特長です。トゥルーピークモードについてはオーバーサンプリングが 8 倍で、アップサンプラとダウンサンプラの FIR フィルタ係数の長さがどちらも 512 です。ナイキスト周波数付近の成分はトゥルーピークの検出が困難なので、オーバーサンプリングの前にプリフィルタをかけて落とすようにしています。

上の画像のようにデフォルトで Threshold が -0.1 dB になっているのは、 sinc 補間で得られる理論上のトゥルーピークを完全に制限することはできないからです。 BasicLimiter の性能を簡単に調べたところ +8.8 dB のトゥルーピークを +0.05 dB まで制限することができていました。 -0.1 という数字はこの 0.05 を 2 倍しただけのざっくりした値です。

ついでにすべてのプラグインでカスタムフォントを使うようにしたことで見た目がだいぶましになりました。

2022/05/07

3 次補間の比較

 3 次補間の比較を読む (github.io)

いろいろな 3 次補間の周波数特性を比較しました。線形補間もついでに特性を出しています。

音の補間では 3 次のラグランジュ補間がよさそうです。 PCHIP などの入力によって傾きの計算を変える方法は音の補間には不向きのようです。

画像は 3 次ラグランジュ補間の周波数特性です。

2022/01/11

Robert Cecil - Orbit EP

ハウスです。 This Time Around がいい感じです。 YouTube で公開されている動画ではアルバムアートが動きます。