GenericDrum VST 3

Download GenericDrum Plugin (github.io)
Source Code (github.com)

VST 3 version of GenericDrum is now ready. I guess this one is easier to use than previous plugins because I did some musical tuning instead of exploring parameters.

GenericDrum is a generic drum synthesizer using delays. This one can make convincing snare and bass drum sounds. Cymbal sounds can be made, but it’s not good as good as more lower drum sounds.

For more information, the manual has a lengthy "Mechanism Overview" section.


GenericDrum プラグイン版をダウンロード (github.io)
ソースコード (github.com)

VST 3 版の GenericDrum が準備できました。このシンセではパラメータの探索をやめて音楽的なチューニングを心掛けたので今までのプラグインよりは使いやすいかと思います。

GenericDrum はディレイを使った汎用ドラムシンセサイザです。バスドラムやスネアドラムについては良い音が出ます。シンバルの音も出せますが、低いドラムの音ほど良くはありません。



Preview of GenericDrum Plugin

This video shows VST 3 version of GenericDrum. It's work in progress.


この動画は GenericDrum の VST 3 版のプレビューです。まだ作りかけです。



Try GenericDrum (github.io)
Read Source Code (github.com)

GenericDrum is a generic drum synthesizer based on ClangSnare. The number of parameters has been reduced for ease of use.

Noise generator, serial all-pass, feedback delay network (FDN) are connected in sequence.

The low-pass of noise generator is based on complex resonator, but the design is ad-hoc, so the sound changes depending on sampling rate. This ad-hoc filter is used because usual biquad low-pass is too steep for sound shaping. In hindsight, SlopeFilter might be more adequate. Maybe I'll change it later.


GenericDrum を試す (github.io)
ソースコードを読む (github.com)

GenericDrum は ClangSnare を基にして、使い易いようにパラメータを減らした汎用ドラムシンセサイザです。

中身は、ノイズジェネレータ → 直列オールパス → フィードバックディレイネットワーク (FDN) と順に接続されています。

複素レゾネータを基にしてノイズジェネレータのローパスをでっち上げたのですが、設計が適当なのでサンプリング周波数によって音が変わります。バイクアッドのローパスよりも緩やかな切れ味のフィルタが欲しかったのですが失敗でした。書いていて思い出したのですが SlopeFilter のほうが適している気がします。



Try HooverSynth (github.io)
Read Source Code (github.com)

HooverSynth is a hoover sound synthesizer.

Original hoover sound is made from Alpha Juno or MKS-50. This time, I spent more time on researching Alpha Juno rather than writing code. Following is a list of links I used while developing HooverSynth.


HooverSynth を試す (github.io)
ソースコードを読む (github.com)

HooverSynth はフーバーサウンドに特化したシンセサイザです。

元のフーバーサウンドは Alpha Juno や MKS-50 といったシンセサイザで作られていたそうです。今回はコードを書いているよりも Alpha Juno の動作とレシピを調べる時間のほうが長くかかりました。以下は作るときに参考にした資料の一覧です。



Try ResonantDrop (github.io)
Read Source Code (github.com)

ResonantDrop is a synthesizer that is made to test resonators. It can resemble the sound of small falling objects by using a multi-tap delay that shifts the start of the sound.

Complex one-pole resonator is used. I was wondering that if I could utilize this complex filter, and took imaginary part without much thought. It turned out that the gain response looks similar to second-order resonator.

Transfer function of real and imaginary output of complex resonator is currently documented as a comment in source code.


ResonantDrop を試す (github.io)
ソースコードを読む (github.com)

ResonantDrop はレゾネータを試すために作ったシンセサイザです。音の出だしをずらすディレイによって複数の小さな物が落ちたときのような音を作ることができます。

今回使ったレゾネータは 1 次複素レゾネータ (complex one-pole resonator) です。適当に虚部だけを取り出してみたところ、 2 次レゾネータの特性と似ていたのでそのまま使いました。




Try AdaptiveNotchComb (github.io)
Read Source Code (github.com)

AdaptiveNotchComb is a metallic sound synthesizer using a combination of serially connected comb filters and serially connected adaptive notch filters. Each comb filter also has an adaptive notch filter on their feedback path.

Adaptive notch filter is quite good at suppressing tones of feedback comb filter. However, this notch filter increases gain. So I made an attempt to normalize the maximum gain to 0 dB. It seems to be working on feedback path, but blows up when serially connected.

Edited on 2023-08-15: The gain normalization was wrong. It's fixed now.


AdaptiveNotchComb を試す (github.io)
ソースコードを読む (github.com)

AdaptiveNotchComb は直列につないだコムフィルタと、直列につないだ適応ノッチフィルタの組み合わせで金属音を出すシンセサイザです。各コムフィルタのフィードバック経路にも適応ノッチフィルタを挟んでいます。

適応ノッチフィルタはフィードバックコムフィルタのトーンを抑えて聞きやすい音に整えてくれます。ただし、カットオフ周波数から離れた部分はゲインが上がるという難点があります。最大ゲインが 0 dB となるように正規化を試みたところ、コムフィルタのフィードバック経路ではうまくいったのですが、直列につなぐと発散することがありました。

2023-08-15 追記: ゲインの正規化の実装が間違っていたので修正しました。



Try SlipOutComb (github.io)
Read Source Code (github.com)

SlipOutComb is a network of feedback comb filters that modulates band-pass cutoff to trying to slip out from blowing up condition. Note that sometimes SlipOutComb fails to slip out and outputs silence.

Internally, several comb filters are connected as a feedback delay network (FDN). Number of comb filters can be changed by `FDN -> Matrix Size`.

When it blows up, try reducing following parameters from top to bottom.

  • FDN -> Cross Feedback Decay
  • Comb -> Feedback Decay
  • Comb -> Delay
  • Comb -> Cut Modulation Rise/Fall


SlipOutComb を試す (github.io)
ソースコードを読む (github.com)

SlipOutComb は発散からすり抜けるようにバンドパスのカットオフを変調するフィードバックコムフィルタです。ただし SlipOutComb は発散状態からすり抜けることに失敗して無音を出力することがあるので注意してください。 

内部では複数のコムフィルタがフィードバックディレイネットワーク (FDN) として互いに接続されています。コムフィルタの数は `FDN -> Matrix Size` から変更できます。


  • FDN -> Cross Feedback Decay
  • Comb -> Feedback Decay
  • Comb -> Delay
  • Comb -> Cut Modulation Rise/Fall



Try FMGlassyPad (github.io)
Read Source Code (github.com)

FMGlassyPad is an ordinary FM synthesizer specifically tailored for glassy pad sounds.

Same sound can be made from any FM synthesizers with unison. Corresponding DX7 algorithm (connection of oscillators) are number 5 or 6. I first created the recipe on Sytrus, then ported it as a web synthesizer.

The character is similar to additive synthesizer. It's easy to make dense tone cluster of sine waves.

Reverb acts like a pitch shifter. To remove low frequencies, set "Reverb → Mix" to minimum value.


FMGlassyPad を試す (github.io)
ソースコードを読む (github.com)

FMGlassyPad はガラスのような高くて澄んだ質感の音が出るようにチューニングした FM シンセサイザです。

ユニゾンつきの FM シンセサイザであれば、どれでも FMGlassyPad と同じ音を出すことができます。オシレータの接続は DX7 のアルゴリズムで言うと 5 あるいは 6 です。元は Sytrus で作ったレシピですが、曲ごとに調整する手間を省くために Web シンセへと移植しました。


"Reverb" は実質ピッチシフターとして動作します。低音が不要なら "Reverb → Mix" を最小に設定してください。




Try TechnoSnare (github.io)
Read Source Code (github.com)

TechnoSnare is a web synthesizer that resembles snare drums of old rhythm machines.

That said, default randomization doesn't sound like a snare drum. To increase the chance to get a snare sound, open menu on the left of Random button, then select Snare1 or Snare2.

I was trying to synthesize Weddell seal "ugh" noise, and one of the tuning sounded like 909 snare. Then I gathered all the half baked components and put them into this web synth.


TechnoSnare を試す (github.io)
ソースコードを読む (github.com)

TechnoSnare は古いリズムマシンのようなスネアドラムの音が出るシンセサイザです。

... というのは建前で、適当にランダマイズするとスネアドラムの音は出ません。  Random ボタンの左にあるメニューから Snare1 か Snare2 を選ぶとスネアドラムのような音になる確率が上がります。

ウェッデルアザラシの「うっ」という声を合成していたときに、チューニングの一つが TR-909 のスネアのように聞こえました。そこからアザラシをそっちのけにして作ったのが、このシンセサイザです。


GrowlSynth Plugin β

Download GrowlSynth β (github.com)

GrowlSynth is now ported to VST 3 plugin. More information is available on the link above.

2023-07-23: GrowlSynth is now updated to version 0.0.1. CPU load is slightly improved, and "AM Amount" parameter scaling is fixed.


GrowlSynth β をダウンロード (github.com)

GrowlSynth を VST 3 プラグインに移植しました。詳細は上のリンク先に掲載しています。 

2023-07-23: バージョン 0.0.1 にアップデートしました。 CPU 負荷がやや改善され、 "AM Amount" のスケーリングが修正されました。



Try IntegerArpeggio (github.io)
Read Source Code (github.com)

IntegerArpeggio is a synthesizer to render arpeggio. The arpeggio follows a musical scale which makes the period of oscillator to always be integer samples. It sounds more akin to just intonation rather than 12 equal temperament, especially at higher frequencies.

It's intended to be used with external slicer, for example slicex in FL. Start of each note is written in cue chunk of WAVE file, however it's not confirmed to work. It seems like FL Studio v21.0.3 doesn't support multiple cue or smpl point.

The idea is based on the observation that integer-sample periodic waveforms do not appear to be aliased when looking at the spectrum. In this case, aliasing isn't disappeared, but the aliased frequencies exactly overlaps to the original non-zero frequency. so it is not perceived as noise for human ears.

2023-07-18: Changed description about aliasing. I found that initial description was wrong with experiment.


IntegerArpeggio を試す (github.io)
ソースコードを読む (github.com)

IntegerArpeggio はオシレータの周期が整数のサンプル数となる音楽スケールに沿ってアルペジオを生成するシンセサイザです。高い周波数では 12 平均律よりも純正律に近い音程が得られます。

出力を slicex のようなスライサに読み込んで使うことを想定しています。WAVE の cue チャンクで各音程の開始位置を指定しているはずですが、 FL Studio v21.0.3 では複数の cue あるいは smpl ポイントがサポートされていないようなので動作確認はできていません。

アイデアとしては整数サンプルの周期波形は周波数成分を見てもエイリアシングが起きていないように見えるという観察に基づいています。実際にはエイリアシングは起こっているのですが、折り返してきた周波数成分が元の 0 でない周波数成分とちょうど重なるので、耳で聞き取れるようなノイズとはなりません。

2023-07-18: エイリアシングに関する記述を変更。実験して確認したところ間違いがあった。