2024/02/25

Release of UhhyouPluginsJuce / UhhyouPluginsJuce のリリース

Plugins in UhhyouPluginsJuce repository are now available on Release page. On Linux, it's probably better to build from source code, because some library versions may differ from the ones on GitHub Actions runner.

---

前 2 回の投稿でリンクした UhhyouPluginsJuce のプラグインを Release ページからダウンロードできるようにしました。 Linux 環境では動的リンクを行うライブラリのバージョンが一致しなければ動かないので、ソースコードからビルドすることを推奨します。

2024/02/24

TwoBandStereo

TwoBandStereo is a plugin to narrow down stereo spread.

This plugin is made to test FIR Linkwitz-Riley filter implementation linked in "クロスオーバーフィルタの実装". Currently only available as source code. Another reason this plugin was made is that it felt cumbersome to use Frequency Splitter in FL Studio just to narrow down the stereo spread of lower band.

---

TwoBandStereo は 2 バンドのステレオの狭さを調整するプラグインです。

クロスオーバーフィルタの実装」で紹介している FIR の Linkwitz-Riley フィルタのテスト用に作った簡易なプラグインなのでソースコードのみで公開しています。個人的な話ですが、低域だけステレオを狭めたいときに FL Studio の Frequency Splitter を使うのが手間だったので独立したプラグインにしました。

2024/02/17

AM のアンチエイリアシング

Read "AM のアンチエイリアシング" (github.io)

The above link is an article about anti-aliasing of amplitude modulation (AM). It's written in Japanese, so I'd recommend to use machine translation if you are interested in. The content is some basic application of multi-rate processing and frequency shift.

The image shows a block diagram of anti-aliasing of double side-band AM.

A tip is that it's better to set higher stop-band gain (-60 dB) for elliptic high-pass filter, which is used for lower side-band (LSB) anti-aliasing. For musical application, I'd like to set -145 dB as a stop-band gain. However higher stop-band gain makes the transition band narrower, and it prevents to remove too much contents from lower frequencies.

These anti-aliasing techniques are implemented as a plugin AmplitudeModulator. The sound is not interesting, so the plugin is currently only available as source code in the link below.

UhhyouPluginsJuce (github.com)

Edit on 2024-02-18: Fixed the image to the correct one. Previous image was anti-aliasing of lower side-band.

---

AM のアンチエイリアシングを読む (github.io)

GrowlSynth の音の改善のために AM のアンチエイリアシングについて試したことをまとめました。内容はマルチレート処理と周波数シフトの応用です。

記事のトップの画像は両側波帯が出る AM (DSB-AM) のアンチエイリアシングの処理を示したブロック線図です。

リンク先の記事で軽く触れていますが、コツは下側波帯のエイリアシングを抑える楕円ハイパスフィルタのストップバンドゲインを、音楽向けとしては高めの -60 dB に設定することです。 -145 dB に設定することが理想ですが、遷移帯の幅が広くなりすぎてエイリアシングか低域の低減が避けられなくなります。

AmplitudeModulator というプラグインとしても実装しました。音は面白くないので今のところソースコードのみを下のリンク先で配布しています。 

UhhyouPluginsJuce (github.com)

2024/02/18 変更: 画像を正しいブロック線図に修正。以前のものは下側帯波のアンチエイリアシングのブロック線図だった。

2024/01/24

Randomization Lock / ランダマイズのロック

Randomization lock is now available on UhhyouWebSynthesizers. Clicking a label next to a parameter enables a lock. The label becomes gray when the lock is enabled.

---

UhhyouWebSynthesizers のランダマイズをパラメータごとに有効、無効にできるロック機能を追加しました。パラメータの隣にあるラベルをクリックするとロックの切り替えができます。ロック有効時はラベルが灰色に変わります。

2024/01/23

Import/Export Is Now Available on UhhyouWebSynthesizers / インポート・エクスポートを UhhyouWebSynthesizers に追加

Import/Export functionality is added on UhhyouWebSynthesizers. They can be used to save the parameter state as a JSON file. The new buttons are added under Random button, which is placed on top-left part of the interface.

  • Export button opens a dialog to save parameters to a file.
  • Import button opens a dialog to load parameters from a file (.json).
  • Push button temporarily saves current parameters to the pull-down menu right next to Random button.
The temporary saves have names like `tmp - <timestamp>`. <timestamp> part will be replaced to an ISO 8601 time which looks like "2024-01-01T012345.678+0900" for example. Note that reloading the page clears the temporary saves.

---

UhhyouWebSynthesizers のパラメータの状態を JSON 形式でインポート・エクスポートできるようになりました。画面左上の Random ボタンの下に Push, Export, Import ボタンが増えています。

  • Export ボタンでパラメータをファイルに保存するダイアログを表示。
  • Import ボタンで保存したパラメータを読み込むダイアログを表示。
  • Push ボタンで一時的に現在のパラメータを保存。
Push ボタンで一時的に保存されたパラメータは Random ボタンの隣のメニューに `tmp - <タイムスタンプ>` という名前で追加されます。 <タイムスタンプ> の部分には "2024-01-01T012345.678+0900" のような ISO 8601 形式の時間が入ります。ブラウザの画面を更新すると Push ボタンの一時保存データは失われるので注意してください

2024/01/02

FV1Reverb

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

FV1Reverb is a reverb using the loop structure described in a page of Spin Semiconductor (Reverberation section).

Metallic texture can be obtained by lowering `Time Multiplier`. There's no multi-tap delay before inputting the loop, so it might be better to use with other short reverb.

---

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

FV1Reverb は Spin Semiconductor のページ (Reverberation の節) で紹介されていたループ構造を使ったリバーブです。

`Time Multiplier` を下げると金属音が出せます。ループの前のマルチタップディレイはついていないので、別の短いリバーブと組み合わせるといいかもしれません。

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

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