2023/10/09

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

マニュアルの「仕組み」の節で大まかな動作を解説しています。

2023/10/02

Preview of GenericDrum Plugin


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

---

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

2023/09/03

GenericDrum

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 のほうが適している気がします。

2023/08/22

HooverSynth

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 の動作とレシピを調べる時間のほうが長くかかりました。以下は作るときに参考にした資料の一覧です。

2023/08/19

ResonantDrop

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 次レゾネータの特性と似ていたのでそのまま使いました。

複素レゾネータの実部と虚部だけを取り出したときの伝達関数をソースコードのコメントに書いています。

2023/08/14

AdaptiveNotchComb

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 追記: ゲインの正規化の実装が間違っていたので修正しました。

2023/08/09

SlipOutComb

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

2023/08/04

FMGlassyPad

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" を最小に設定してください。

2023/07/29

TechnoSnare

 

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 のスネアのように聞こえました。そこからアザラシをそっちのけにして作ったのが、このシンセサイザです。

2023/07/22

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" のスケーリングが修正されました。

2023/07/18

IntegerArpeggio


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: エイリアシングに関する記述を変更。実験して確認したところ間違いがあった。

2023/07/12

FMTechnoBass

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

FMTechnoBass is an ordinary FM synthesizer. Sytrus can make almost same sounds, but it felt tedious to set envelopes for every time. So I made this to save time.

This one was made long time ago, but abandoned for a while because the sound wasn't interesting. FM algorithm is serially connected 3 operators. Pitch LFO is available to add some low frequencies.

---

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

FMTechnoBass はごく普通の FM シンセサイザです。 Sytrus で同じような音が出ますが、毎回エンベロープを設定するのが手間だったので作りました。

かなり前に作ったのですが、面白い音が出なかったので放置していました。FM アルゴリズムは 3 オペレータ直列で、低い周波数成分を足すためにピッチに緩やかな LFO をかけることができます。

2023/07/10

GlitchSprinkler

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

GlitchSprinkler is an usual synthesizer with oscillator and arpeggiator.

Oscillator is using polynomial approximation to generate waveform. The approximation only tries to cross the control points on top right canvas. That's why the waveform slithers. Also polynomial approximation only works for smooth functions, which means that it can't approximate sharp edges.

Arpeggiator is using overtone series to make variation for detune, as following.

  1. List all the prime numbers up to `2^(Pitch Variation)`.
  2. Convert the prime numbers into octave and take float modulo of 1, which is `fmod(log2(prime), 1.0)`.
  3. Add a variation if wrapped octave falls into a scale by computing `abs(octave - pitchInScale) < (Pitch Drift) / 2400`.

I'm not sure if this makes audible difference. Probably it's too subtle to distinguish from random detune.

---

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

GlitchSprinkler はオシレータとアルペジエータを備えたよくあるシンセサイザです。

オシレータは波形の生成に多項式近似を用いています。ここでの近似は、右上のキャンバスに表示されている制御点を通過する以外の制約を与えていません。なので、制御点を動かすと波形がくねります。また多項式近似は滑らかな関数しか近似できないので鋭い角は表現できません。

アルペジエータは倍音列からデチューンのバリエーションを生成しています。以下は手順です。

  1. `2^(Pitch Variation)` までの素数をリスト。
  2. 得られた素数をオクターブに変換して小数部のみを取り出す。 `fmod(log2(prime), 1.0)` 。
  3. 得られたオクターブの値がスケール内のいずれかのピッチに近ければバリエーションに追加。 `abs(octave - pitchInScale) < (Pitch Drift) / 2400` 。

耳でわかるような質感の差が出るかどうかはわかりません。ランダムにデチューンした音と区別がつかない気がします。

2023/07/08

MetalSqueak

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

MetalSqueak is a synthesizer which can make metal squeak sound. The squeaking comes from modulated all-pass filter on the feedback paths of FDN (feedback delay network).

This is yet another cymbal synthesizer. However, it's less CPU intensive than ClangCymbal, more stable than FDNCymbal and KSCymbal, and easier to make cymbal sounds than SerialCombCymbal.

Internal is serially connected 4*4 FDN. 2 cascaded FDN is sufficient for cymbal sound. Number of cascade can be changed from `Delay->Quantity`.

---

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

MetalSqueak は軋むような金属音が出るシンセサイザです。軋みは FDN (feedback delay network) のフィードバック経路に位置するオールパスフィルタのカットオフ周波数が内部の信号の振幅に応じて変調されることで生じています。

また新しいシンバルシンセですが、 ClangCymbal よりも軽く、 FDNCymbalKSCymbal よりも安定しており、 SerialCombCymbal よりも簡単にシンバルのような質感が出せます。

内部では行列の大きさが 4 の FDN を直列につないでいます。シンバルであれば FDN を 2 つ直列につなげば十分なのでかなり軽量です。直列接続数は `Delay->Quantity` から変更できます。

2023/07/03

GrowlSynth

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

GrowlSynth is a synthesizer that resembles animal growl.

Internal is similar to vocal tract model. Most of the development time was spent on oscillator to resemble glottis. Vocal tract part is just some feedback comb filters (short delays). The synth has 3 oscillators that are noise generator, granular synth, and BLIT + formant filter. Original intention was to make successor of Pluck with adding all-pass filter on feedback path. However, the synth became totally different thing after some trial and error.

Edited on 2023-07-04: I noticed that sine sweep of accumulative AM is adding some tones that's not suitable for animal growl. Sound becomes a bit more plausible by increasing oversampling ratio.

---

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

GrowlSynth は動物のうなり声のような音を出すことができるシンセサイザです。

中身は声道・声帯モデルに似た構造になっています。声帯にあたるオシレータには力を入れましたが、声道にあたる部分は単純なフィードバックコムフィルタ(ディレイ)です。オシレータはノイズ、グラニュラーシンセ、 BLIT + フォルマントフィルタの 3 つを混ぜることができます。元は Pluck のフィードバック経路にオールパスフィルタを挟んで Pluck2 とするつもりだったのですが、音がいまいちだったので色々と試しているうちに脱線しました。

2023-07-04 追記: オーバーサンプリング比を上げると AM によるトーンが目立たなくなります。

2023/06/29

Slope Filter

Download Slope Filter (github.com)
Read Source Code (github.com)

Slope Filter is a filter to approximate arbitrary slope in decibel per octave (dB/oct). Perhaps useful to change the overall brightness of sound.

Internal is a cascade of high-shelf filters. Cutoff is set to `f_c * 2^n`, where n is index of cascade, and f_c is cutoff frequency. Slope Filter is using matched 1-pole high-shelf, but RBJ high-shelf also can be used with `Q=1/sqrt(2)`. In case of RBJ, it's possible to reduce the number of filters 1/2, 1/3, and so on, by changing cutoff interval to `f_c * 4^n`, `f_c * 6^n`, and so on. However, accuracy decreases as the number of filters decreases.

I also tried to turn this IIR cascade into linear phase using the method of "A New Reverse IIR Filtering Algorithm", but it didn't work. It's probably better to use bidirectional filtering to get impulse response, then convolve it.

Image is example gain response of -1 dB/oct.

-

Slope Filte をダウンロード (github.com)
ソースコードを読む (github.com)

Slope Filter は任意の dB/oct の傾きを近似するフィルタです。音の明るさを変更するときに使えるかもしれません。

中身は直列に接続したハイシェルフフィルタで、各段のカットオフ周波数を 1 倍, 2 倍, 4 倍, 8 倍, ... と設定しています。式にまとめると `f_c * 2^n` で n は直列接続されたフィルタのインデックス、 f_c はカットオフ周波数です。 Slope Filter では整合 1 次ハイシェルフを使っていますが RBJ のハイシェルフでも `Q=1/sqrt(2)` とすれば、ほぼ同じことができます。 RBJ のハイシェルフでは Q を調整しつつフィルタの数を 1/2, 1/3, ... と減らすこともできます。このときカットオフ周波数の間隔は `f_c * 4^n`, `f_c * 6^n`, ... となります。ただしフィルタの数が減っただけ近似の精度も落ちます。

この IIR フィルタを "A New Reverse IIR Filtering Algorithm" の手法を使って線形位相にしようと試みたのですが、うまく動きませんでした。おそらく、双方向フィルタリングを使用してインパルス応答を取得し、それを畳み込む方が良いでしょう。

画像は -1 dB/oct の傾きのあるゲイン応答の例です。

2023/06/27

MaybeCabinetIR

Try MaybeCabinetIR (github.io)
See list of other web synthesizers (github.io)

MaybeCabinetIR is impulse response (IR) generator which resembles guitar cabinets.

The sound is a bit too clean, but it works okay. When `Source -> LP Q` is high, strange delays are added to IR. Maybe this can be used for another reverb IR generator.

At start, I analyzed several cabinet IRs and came up with the recipe below:

  • Peaking at 100 to 200 Hz, around +20 dB. Broad Q.
  • Peaking at 1000 to 3000 Hz, +10 to +20 dB. Less broad Q.
  • (Optional) Negative peaking or notch at 500 to 1000 Hz. Narrow Q.

Character is mostly decided by the ratio between lower and higher peak.

IR is generated by following steps:

  1. Generate random noise.
  2. Apply low-pass bidirectionally.
  3. Apply inverse FFT.
  4. Rotate half to move peak into center
  5. Apply peaking filters bidirectionally.
  6. Transform 5 into minimum phase FIR.
  7. Apply highpass and lowpass to remove direct current and Nyquist frequency.
  8. Normalize amplitude.

The recipe is used at step 5. Bidirectional filtering is a technique to apply IIR filter as linear phase. It can only work on offline (or non real-time) processing as all the signal has to be known beforehand. Minimum phase algorithm is ported from `scipy.signal.minimum_phase`.

---

MaybeCabinetFIR を試す (github.io)
Web シンセサイザの一覧を見る (github.io)

MaybeCabinetIR はギターキャビネットに似せたインパルス応答 (IR) の Web シンセです。

クリーンすぎる感じもしますが、それなりに使えます。 `Source -> LP Q` の値が大きいとき変なディレイが現れます。また別のリバーブ IR 合成器へと応用できそうです。

制作にあたっては、いくつかキャビネット IR を分析して以下のレシピにたどり着きました。

  • ピーキング、 100 ~ 200 Hz, +20 dB 付近。広めの Q 。
  • ピーキング、 1000 ~ 3000 Hz, +10 ~ +20 dB。やや狭めた Q 。
  • (任意) 負のピーキングかノッチ、 500 ~ 1000 Hz。狭い Q 。

音のキャラクターは高低のピーキングのゲイン差で決まります。

IR は以下の手順で合成しています。

  1. ランダムなノイズを生成。
  2. 双方向にローパスを適用。
  3. 逆 FFT 。
  4. ピークを中央に動かすように半分回転。
  5. 双方向にピーキングを適用。
  6. 最小位相 (minimum phase) FIR に変換。
  7. ローパスとハイパスで直流とナイキスト周波数を除去。
  8. 振幅の正規化。

先のレシピはステップ 5 で適用されます。双方向フィルタリングは IIR フィルタを線形位相を保ったままかけるテクニックです。事前に信号がすべて分かっている必要があるのでオフライン (あるいは非リアルタイム) 処理でなければ使えません。最小位相に変換するアルゴリズムは `scipy.signal.minimum_phase` から移植しました。

2023/06/26

1 次ローパスのバイリニア変換

1 次ローパスのバイリニア変換を読む (github.io)

EasyOverdrive の適当にノイズを混ぜたピークホールドのエイリアシングの低減策として、ナイキスト周波数のゲインを 0 にした 1 次ローパスが使えるのではないかと思い調べました。

実装してからもう一度考え直したところ、後段のスムーシングに使っている 2 次ローパスがバイリニア変換してあるので特に意味がないことに気づきました。今回考えていた応用は分数ディレイのかかったインパルスを得ることなので、ラグランジュ補間か PolyBLIT 系のテクニックのほうがアンチエイリアシングに向いている気がします。

2023/06/25

EasyOverdrive


Source Code (github.com)

Download (github.com)

EasyOverdrive is an overdrive plugin stemmed from low quality limiter algorithm. JUCE framework is used.

---

ソースコード (github.com)

ダウンロード (github.com)

EasyOverdrive は質の悪いリミッターのアルゴリズムをもとにして作ったオーバードライブです。今回は JUCE を使いました。

2023/06/22

クロスオーバーフィルタの実装

クロスオーバーフィルタの実装を読む (github.io)

クロスオーバーフィルタの実装について調べたことをまとめました。

窓関数法による素朴な FIR 、 IIR の Linkwitz-Riley 、 FIR の Linkwitz-Riley の 3 つを実装しています。前 2 つはよく知られた手法ですが、 FIR の Linkwitz-Riley は Martin Vicanek さんによる "A New Reverse IIR Filtering Algorithm" で紹介されていた手法を実装しています。

画像は FIR の Linkwitz-Riley のインパルス応答です。

2023/06/16

アナログの周波数特性に一致する二次のデジタルフィルタの実装

アナログの周波数特性に一致する二次のデジタルフィルタの実装を読む (github.io)

Martin Vicanek さんによる "Matched Second Order Digital Filters" と "Matched One-Pole Digital Shelving Filters" で紹介されていた整合フィルタ (matched filter) を実装しました。

整合フィルタとはアナログの周波数特性にほぼ一致する離散フィルタのことです。主にバイリニア変換よりもアナログ特性をよく近似するフィルタを指しています。

画像は整合ピーキングフィルタ (matched peaking)  の周波数特性です。ナイキスト周波数 (10^0) でのゲインが 0 dB でないことが見て取れます。

2023/06/15

Biquad フィルタの比較

Biquad フィルタの比較を読む (github.io)

Biquad フィルタについて、 Web Audio などで使われている Audio EQ Cookbook に基づく実装と、 The Art of VA Filter Design という本で紹介されている topology-preserving transform (TPT) という離散化の手法に基づく実装を比較しました。

結論としては速くてコードも短い TPT フィルタを使えばよさそうです。

画像は Python 3 で計算した TPT フィルタの特性です。

2023/06/13

一次ローパスと一次オールパスからなるレゾナントフィルタ

一次ローパスと一次オールパスからなるレゾナントフィルタを読む (github.io)

TestBedSynth に組み込むために適当にでっち上げたフィルタのレゾナンスをチューニングしました。

伝達関数は得られたのですが Maxima で楽に解けなかったので、あきらめて数値計算で発散しないレゾナンスの最大値を求めました。いま改めて安定条件の式を見ると 4 つの場合分け (絶対値で 2 つ、二次方程式の解の公式で 2 つの場合分け) で解けそうな感じがします。

2023-06-13 追記: 伝達関数の安定条件の解から、より手軽なレゾナンスの最大値の計算式が得られました (qMax = c2 - c2*c1 + 1) 。

画像はでっち上げたフィルタのブロック線図です。

2023/06/10

Maboroshi

Maboroshi (illusion) is an album that features high emphasized tone cluster and repetitive rhythms. While checking the album, my ears started hurt because of the emphasized high.

Maboroshi is also my first track that is using a method to construct high emphasized tone cluster. The method starts from pretty fast arpeggio of high-pitched sound with release. The time scale of arpeggio is then shrinked, and the resulted tone cluster is repeated with 16th note cycle. Similar sound can be found in Grow Home, which is 3D action game. The sound is used to indicate the presence of crystals, and there's also a message in game that is like "this sound might be interesting for some, but it might be just a noise for others." When I started using this method, I was thinking about music that can only be made with computers. Then I got an inspiration that combining high frequency emphasis and unplayable fast phrases might be good. To emphasize high, there's already guitar amps. To play fast phrases, there's already player pianos. So the idea was mostly about combining the two to create something new. But in hindsight, the idea wasn't well executed. An previous album 旋回 was made from a realization that drums are harming the texture, years after practicing the method.

---

幻は反復的なリズムと高い音のトーンクラスターが目立つ曲を集めたアルバムです。高い音が始終隙間なく鳴り続けるので聴いていると耳が痛くなってきます。

アルバムのタイトルともなっている幻は、リリースのある高い音でとても速いアルペジオを組み、16分音符の周期で繰り返すことでトーンクラスターを作る、という手法を初めて使った古い曲です。 Grow Home というゲームのクリスタルの効果音でも同様の手法が使われていて、「面白い音に聞こえる人と、ただの騒音に感じる人に別れる」という趣旨のメッセージがゲーム中に登場します。この手法を見つけたときはコンピュータに全て演奏させる音楽でしかできないことは何か、ということを考えていました。そして閃いたのが音の高い部分を強調することと、人間には演奏不能な速いフレーズを使うことでした。音の高い部分を強調するだけならギターアンプ、演奏不能なフレーズだけであればプレイヤーピアノが既にあります。この二つを組み合わせると新しいのでは、ということだったのですが、今思えば適当な閃きでした。また、当時は手法の徹底が不十分でした。よくわからない閃きから数年後、ドラムによって質感が損なわれていること気づいて作ったのが、以前に公開したアルバム「旋回」です。

2023/06/05

Libre Music Challenge #18

Uhhyou Plugins are chosen for Libre Music Challenge #18.

View submissions (archive.org)

Libre Music Challenge is held by people using free software to make music. Below is a quote from official description.

This is a friendly contest where we make music with free (libre) software exclusively. Everyone is welcome to join, at any skill level. This is a place for learning and sharing knowledge, and an opportunity to explore creativity through limitation. But most importantly, we just hope it inspires you to make some music!

The challenge for this month is to make a track using only the Uhhyou set of plugins.

I made plugins as a convenient surplus to make some sound effects. So it was a surprise that all the submission went for tonal composition, and they are all well done!

I also got a report that GUI aren't working well on some Linux system. There are also related issues remain opened on GitHub (#35, #36). I haven't tested, but at least for Ardour, building both the host and the plugins might solve the problem, so to ensure that they both link to the same shared libraries on system. But it's also far from smooth experience.

---

Uhhyou Plugins が Libre Music Challenge #18 に選ばれました。

投稿を見る (archive.org)

Libre Music Challenge はフリーソフトウェアで音楽を作っている方々によって開かれています。以下は公式な説明の訳です。

これはフリー (自由) ソフトウェアのみで音楽を作るフレンドリーなコンテストです。誰でも、どのようなスキルであっても参加を歓迎します。ここは、学び、知識を共有し、制限の中で創造性を探求する機会となる場です。ただ、最も大事なことはあなたが音楽を作るきっかけになれば幸いだということです。

今月のチャレンジは Uhhyou のプラグインを使って曲を作ることです。

私のプラグインは効果音を入れるときに便利な脇役というくらいで作っていたので、投稿された曲がすべて普通の音楽になっていたのは驚きました。どれもよくまとまっています。

また、開催されている方から Linux でプラグインの GUI が動かなかったという報告をいただきました。 GitHub にも関連する未解決の issue がいくつかあります (#35, #36) 。未検証ですが、 Ardour についてはホストとプラグインの両方をソースコードからビルドすれば、どちらもシステムの共有ライブラリ (shared library, *.so) にリンクするはずなので動くようになるかと思います。

2023/05/27

Recursive Nature

 

Recursive Nature is another album of my old electronic tracks. As same as Psychic Reporter, almost all sounds are synthesized. Most of the percussion sounds are made from Singen0.2. However, the texture is slightly warmer this time because more melodic elements are used. The tracks are sorted from the one with more melodies to the one with less.

At the time making Recursive Nature and Decathlon, I liked using simple 4 beat for melodies. It's too blatant, but it's also too sweet to miss. Some animal howling like sound in Decathlon was modified from "Echo crows" preset which is found in Sytrus. That sound is one of the reason I started making audio plugins. Isn't it cool that if there's a synthesizer which is specialized for animal noises? I still haven't figured out how, but that's one of my long term goal.

Step-free, Talking to You, and Mecahnical Heart are made much later than other tracks. They have different textures because of that. Mecahnical Heart was the most difficult one to put together, because it has less high frequency noise to mask other sounds. The loud metallic noise played throughout entire track is important to shape the rhythm, but it was too monotonous. In the end, several reverbs are used for that single sound, and subtle variation is made by automating the mixing ratio of reverbs. This method seems obvious in hindsight, but finding out the process is a fun part of making music.

---

Recursive Nature は Psychic Reporter と同じく私の古いエレクトロニック系のトラックを集めたアルバムです。ほとんどすべての音がシンセサイザで合成されていますが、今回はメロディーがはっきりした部分が多いので、より温かみのある質感になっています。また、パーカッションの音の大半は Singen0.2 で作られています。曲はメロディーの多いものから少ないものへと進むように並べられています。

Recursive Nature と Decathlon は 4 ビートのメロディーが好きだった時期に作りました。あからさまリズムですが、砂糖たっぷりのお菓子のような、くどくておいしい感じを狙っています。 Decathlon で使われている動物の鳴き声のような音は Sytrus というシンセサイザの "Echo crows" というプリセットを改変したものです。このような効果音を簡単に作りたい、という思いは音のプラグインを作り始めるきっかけの一つとなりました。動物の声の作り方はまだよくわかっていませんが長期的な目標の一つとしています。

Step-free, Talking to You, Mecahnical Heart の 3 つは他の曲よりもだいぶ後になってから制作されたので、質感が異なります。この中でも特に Mecahnical Heart はまとめるのに時間がかかりました。他の曲のように音の高い部分をマスキングする要素がないので、曲を通して聞き取れる金属的なパーカッションの音がどうにも浮いてしまったからです。最後にはリバーブを 3 つ用意して、それぞれのかかり具合をオートメーションしてわずかに変化をつけることで単調さをごまかしました。振り返ってみると、なぜこんな簡単なことを思いつかなかったのかという気もしますが、そうした手法を見つけることも音楽を作る楽しみの一つです。

2023/04/01

FeedbackPhaser

Download and User Manual (github.io)
Source Code (github.com)

FeedbackPhaser is a phaser but the modulation source is feedback signal rather than an LFO. It sounds more like a distortion rather than a phaser most of times.

The algorithm is an failed attempt to make "FM effect". I thought it's not possible to apply FM for arbitrary 2 signals. But if that's possible, phase must be rotated somehow. Then I got the idea to use all-pass filter.

It acts like a resonator when feedback is close to min/max and setting modulation close to 0. There's a quirk that changing `Stage` while using as resonator changes pitch. The reason is that `Stage` changes the number of all-pass filters and it consequently changes phase response. It's not implemented but pitch correction seems possible (1st order2nd order).

---

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

FeedbackPhaser は LFO ではなくフィードバックによってオールパスフィルタのカットオフ周波数を変調するフェイザです。主に歪み系の音が出ます。

アルゴリズムは「任意の入力をエフェクタで FM 変調する」というアイデアから適当に推定したものです。そもそも無理がありそうに思いましたが、とにかく何かの位相を回すことになるだろう、ということでオールパスフィルタの利用を思いつきました。

フィードバックを上げて変調を下げるとレゾネータのように働きますが、このとき `Stage` を変えるとピッチが変わります。これは直列に繋ぐオールパスフィルタの数が変わることによって位相特性が変わるからです。補正することもできるようです (1 次オールパス2 次オールパス) 。

AccumulativeRingMod


Download and User Manual (github.io)
Source Code (github.com)

AccumulativeRingMod is a ring modulator that uses accumulated amplitude of input signal as the phase. When applied to simple waveforms like a sine wave, it sounds similar to FM.

This is the same plugin previously named as ComplexRotation. Thanks to KlashKontakt for idea and testing.

---

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

AccumulativeRingMod は入力信号の振幅を積算した値を位相として使うリングモジュレータです。サイン波のようなシンプルな波形にかけると FM のような音がでます。

このプラグインは以前の記事で ComplexRotation と名前を付けていたものと同じです。アイデアの提供とテストを行っていただいた KlashKontakt さんに感謝します。

2023/03/25

TestBedSynth β (0.0.1)

β version of a new synthesizer is avaiable. Download link is found on the link below.

TestBedSynth β · ryukau/VSTPlugins · Discussion #34

Development was started because I felt that preparing wavetable for Vital was cumbersome. This synthesizer is using is the oscillator algorithm found in Vital's source code. The focus is to quickly make strange modulation sound.

Performance might be bad on low latency settings. CPU load spikes for every 7 ms, due to refreshing internal wavetable using FFT and IFFT. If the output is stuttering, increasing buffer size of audio interface might solve the problem.

---

新しいシンセサイザの β 版を公開しました。以下のリンクからダウンロードできます。

TestBedSynth β · ryukau/VSTPlugins · Discussion #34

このシンセサイザは Vital のウェーブテーブルを用意するのが面倒だと感じたことで開発を始めました。オシレータは Vital と同じアルゴリズムを使っています。用途としては変調をさくっとかけて変な音を作ることに特化しています。

レイテンシを減らすためにオーディオインターフェースのバッファを短く設定している環境ではパフォーマンスが悪いかもしれません。内部のウェーブテーブルを更新するため 7 ミリ秒ごとに FFT と逆 FFT を行っているので、その時点でのみ CPU 負荷が跳ね上がります。

2023/03/11

ComplexRotation and ImmediateSpacer

New plugins ComplexRotation and ImmediateSpacer are in development. Below are links to discussions on GitHub.

Update on 2023-03-19: Version 0.1.0 is available on GitHub release page. Names are changed as following.

  • ComplexRotation to AccumulativeRingMod.
  • ImmediateSpacer to RingModSpacer.

@KlashKontakt brought the idea, and I thought it's a nice small project to do.

ComplexRotation can add texture similar to FM for arbitrary signal. This one is a wild guess to imitate the sound of Phase Distortion. A bit of technical detail is written on this comment. It's basically AM modulation, but phase of modulator is accumulated from input signal.

ImmediateSpacer is side chain ring modulator described in this Renoise forum post. This method is described as a mixing technique. However, it sounds distorted compared to typical side chain limiter.

---

2023-03-19 更新: バージョン 0.1.0 を GitHub のリリースページで公開しました。以下のように名前を変えました。

  • ComplexRotation → AccumulativeRingMod
  • ImmediateSpacer → RingModSpacer

 ---

ComplexRotation と ImmediateSpacer というプラグインを作りました。以下は GitHub でのディスカッションへのリンクです。

2023-03-19 更新: バージョン 0.1.0 を GitHub のリリースページで公開しました。以下のように名前を変えました。

  • ComplexRotation → AccumulativeRingMod
  • ImmediateSpacer → RingModSpacer

@KlashKontakt さんのアイデアで話が始まり、簡単にできそうだったので開発を始めました。

ComplexRotation は任意の信号に FM シンセサイザのような癖をつけることができるエフェクタです。 Phase Distortion というプラグインの音から適当に推定したアルゴリズムを使っています。もう少し詳しいことをディスカッションのコメントに書いています。基本的には振幅変調ですが、それまでに入力された信号の振幅の和を変調波の位相として使っている点が異なります。

ImmediateSpacer は Renoise フォーラムの投稿で紹介されていたサイドチェインによるリングモジュレータです。ミキシングの手法として紹介されていますが、通常のサイドチェインリミッタに比べると音がかなり歪みます。

2023/01/26

UltraSynth

Download and User Manual (github.io)
Source Code (github.com)

UltraSynth is an ordinary synthesizer except 64-fold oversampling that is the same one used in UltrasonicRingMod. Because of the high oversampling ratio, modulation sound is okay. However CPU load is high.

LFO can be used as a ring modulator with `Pre Sat.`, when `Rate` is high.

---

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

UltraSynth は UltrasonicRingMod と同じく 64 倍のオーバーサンプリングを行っていることを除けば、これといった特長のないモノフォニックのシンセサイザです。オーバーサンプリングの倍率が高いので変調をかけた音が得意ですが、 CPU 負荷は高めです。

LFO の周波数を高くすれば、 `Pre Sat.` をリングモジュレータのように使えます。

2023/01/21

旋回

旋回 is an album made from fast and repetitive arpeggios and stacked chords. This album was originally made in 2017, and slightly modified in 2023.

Original track names were like ---0001, ---0002 and so on. They weren't good, so new names were assigned while compiling the album. I looked up through a window in my room and saw blue sky, then decided to put the names that implies "flying in the air".

The texture is similar to usual ambient drone tracks, except that I didn't attempt to suppress high frequencies. At the beginning, it was intended to be noise album. I was thinking that simple synthesizer sound like sawtooth or square wave are louder than typical harsh noise made from feedback and distortion. So the intention is to play with maximum gain of available sound system, possibly on outside of a sunny day while laying down on a bed.

Most of the tones are made by randomizing 3x Osc, which is a synthesizer available on FL Studio. I didn't turned on "HQ" (high quality) button to remove aliasing noise. This might be slightly contributed to the texture.

---

旋回は、早く、繰り返すアルペジオと多くのノートを積み重ねたコードからなるアルバムです。 2017 年に初版を作成して 2023 年に改変しました。

曲名は元の名前が ---0001 や ---0002 など、あまりにも適当だったのでアルバムの編集中につけました。窓の外に青い空が見えたので「空を飛んでいる」ということを、なんとなく意味するような名前にしています。

音は、よくあるアンビエント・ドローンと似たような質感ですが、高い部分を抑えていない点があまりアンビエントではありません。作り始めたときはノイズになる予定でした。のこぎり波や矩形波のような単純なシンセイサイザの音がフィードバックを歪ませてつくるノイズよりも音が大きく感じたので、それで曲を作ればうるさくなるだろうと思ったわけです。なので、できる限り大きな音で再生することを意図しています。できれば晴れた日の屋外で、ベッドに寝ころびながら聴くことができれば最高によく眠れる気がします。

ほとんどの音は 3x Osc という FL Studio 付属のシンセイサイザをランダマイズして作りました。 HQ (High Quality) ボタンを有効にせず、エイリアシングノイズはそのままにしています。これも少しは音の質感に貢献しているかもしれません。

2023/01/19

ParallelDetune

Download (github.com)
Source Code (github.com)

ParallelDetune is a detuning effect with 8 pitch shifters connected in parallel. It can be used to spread stereo image similar to chorus effect.

Pitch shifter is the same algorithm used in PitchShiftDelay and NarrowingDelay. It was designed to be thinly applied, so the oversampling ratio is set to 2-fold.

ParallelDetune and PitchShiftDelay can be used as barber-pole flanger by setting delay time to be short and subtly shifting the pitch. When looking at spectrogram of the output of barber-pole flanger, stripes that looks like always ascending or descending can be observed.

---

ダウンロード (github.com)
ソースコード (github.com)

ParallelDetune は 8 つのピッチシフタを並列につないだエフェクタです。モノラルの音に薄くかけてコーラスのようにパンを左右に広げることもできます。

ピッチシフタは PitchShiftDelay や NarrowingDelay と同じものを使っていますが、薄くデチューンをかけるという用途を念頭に置いて作ったのでオーバーサンプリングが 2 倍と低めになっています。

ParallelDetune と PitchShiftDelay はディレイ時間とピッチシフトの量を両方とも小さく設定することで、いわゆるバーバーポール・フランジャーとしても使えます。バーバーポールというのは理髪店の店頭によく置いてある赤白青の螺旋が回転している看板のことです。バーバーポール・フランジャーをかけた音は、スペクトログラムに上昇あるいは下降し続ける縞模様が現れるのですが、これを理髪店の看板に例えているのかと思います。

2023/01/18

NarrowingDelay

Download (github.com)
Source Code (github.com)

NarrowingDelay is a delay with serially connected pitch shifter and frequency shifter on feedback path. The spectrum of input signal can be narrowed or expanded for each feedback. It is more suitable for sound without stable pitch. Note event can be used to control frequency shift amount.

This one is made without much thought, and I have no concrete idea when to use it. From a bit of experimentation, I found that it can add some ambience for high frequency sounds like hi-hats. Feedback was set to low in this case. Perhaps the dissonance is hard to perceive in high frequency range.

---

ダウンロード (github.com)
ソースコード (github.com)

NarrowingDelay は直列につないだピッチシフタと周波数シフタがフィードバック経路に設けられたディレイです。フィードバックのたびに音のスペクトラムを周波数軸の方向に広げる、あるいは狭めることができます。どちらかと言えばピッチが一定しない音との相性がいいです。ノートイベントで周波数シフタのシフト量を制御することもできます。

適当に作ったので用途がよくわからないのですが、フィードバックを低めにしてハイハットなどの高い音に薄くかけると雰囲気がでます。周波数が高くなると音程があっていないことが分かりづらくなることが理由かと思います。

2023/01/08

Psychic Reporter

Psychic Reporter is an album of my old electronic tracks. Almost all sounds are synthesized, and that makes up the cold and hollow texture throughout the album.

The name of album comes from a sampling used in D40, which says 「超能力を発揮してみたいと思います。」 ("Let me exercise my psychic power.") This sample was obtained from an old video where a news reporter is interviewing someone. The phrase was a humorous way to say "Let me guess what you are thinking about." I found it funny because the phrase felt so outdated, but kind of refreshing at the same time. I haven't heard the word 超能力 for a long time. The reporter was saying the phrase in casual manner with full of a smile in his face, and that was also contributed to the humor.

The selling point of this album is saturated high frequencies. I was focusing too much to saturate high, and it basically masked all the mid components. This resulted in a bit monotonous texture. Most of the sounds are short decaying one-shot samples made from FM synthesizer. Short decaying part was important because I was trying to make percussive tracks. FM is good at saturating high with aliasing. The name of tracks like D something are meant to be used for those tracks that have similar texture. However, the naming scheme is bad. It's hard to remember which number corresponds to which sound.

From engineering point of view, high is usually reduced to prevent true-peak clipping. I wouldn't like to reduce any high, so made a true-peak limiter using FFT resampling. Not sure if it also works on other environment, but at least it stopped clipping on my cheap speaker.

---

Psychic Reporter は私の古いエレクトロニック系のトラックを集めたアルバムです。ほとんどすべての音がシンセサイザで合成されているので、冷たく、虚ろな質感になっています。

アルバム名は D40 で使った「超能力を発揮してみたいと思います」というサンプリングからつけました。このサンプルは何かの古いニュースで、レポーターがインタビューを行っている場面から切り取りました。文脈としては「あなたが何を考えているのか当ててみたいと思います」ということを冗談めかして言っていたのですが、超能力という言葉を長いこと耳にしていなかったので、古臭くも新鮮な感じがして何度聞いてもつい笑ってしまいます。レポーターが満面の笑みを湛えつつカジュアルにさらっと言っていたこともフレーズの面白さに一役買っています。

このアルバムの売りどころは音の高い部分が飽和しているところです。とにかく音の高い部分を強調したかったのですが、やりすぎてミッドの周波数成分がマスキングによってあまり聞こえなくなってしまいました。このおかげで、やや単調な質感になっています。ほとんどの音は FM シンセサイザで作った短く減衰するワンショット・サンプルです。パーカッシブな曲を作りたかったので減衰を短くしました。 FM はエイリアシングによって高い部分を飽和させることに適しています。似たような手法を使った曲に D(番号) という曲名をつけていたのですが、どの番号がどの音に対応するのか思い出しにくいので、いいアイデアではなかったです。

音のエンジニアリングとしてはトゥルーピークによるクリッピングを防ぐために通常は音の高い部分のゲインを下げます。しかし、私のこだわりとして飽和させた音の高い部分を下げたくなかったので FFT リサンプリングを行うトゥルーピーク・リミッタを作って使っています。このリミッタによって私の持っている安いスピーカーではクリッピングがなくなりましたが、他の環境でも効果があるかどうかはわかりません。

2023/01/01

CombDistortion

Download (github.com)
Source Code (github.com)

CombDistortion is a distortion using self-modulating comb filter. Raw output sounds harsh, and it is better to use with external cabinet impulse response. Note event can be used to control delay time of comb filter.

If it feels a bit cumbersome to prepare cabinet impulse response,  equalizer may be used instead. A trick is to cut the high from somewhere around 4000 Hz, and to create peaks and dips of about ±10 dB with peaking. Slightly mixing short delay or short reverb is also useful.

---

ダウンロード (github.com)
ソースコード (github.com)

CombDistortion は自己変調するコムフィルタを使ったディストーションです。そのままの出力はざらざらと耳障りなので、キャビネットのインパルス応答と併せて使うことを想定しています。ノートイベントでコムフィルタのディレイ時間を制御できます。

キャビネットのインパルス応答を用意するのが面倒であればイコライザでごまかすこともできます。コツは思い切って 4000 Hz あたりから上を落とすことと、ピーキングで適当に ±10 dB くらいの山と谷を作ることです。ショートディレイや短いリバーブを薄く混ぜると、より雰囲気が出ます。