2022/09/03

Animals - A Showcase of Uhhyou Plugins

 

"Animals" is an album, and a showcase of Uhhyou Plugins (うっひょうプラグイン).

Animal names used in titles are cut up from random Wikipedia articles.

Most of the composition is made by improvisation and overdub. But I'm bad at playing instruments and that's why rhythm is so inconsistent. Once this waddling mess is recorded, there appears some sparse part and dense part. While overdubbing, I put more notes on dense part, and not so much for sparse part. After some iteration, that waddling mess becomes a mass of waddling mess, and ended up as this album.

Plugin development, especially testing DSP components, was the hardest part of making this album. The first commit was 3 years ago, and I didn't even know how to write C++ at that time. The strategy here was perfecting the sound design part by developing plugins, so that I can just drop the random sound and it will be good. I'd call this circuitous John Cage strategy. I went through great effort of developing plugins, and finally threw the resulting sounds into WAV files after 3 years. But John Cage just dropped real physical objects into bathtub, and it sounds plainly gorgeous compared to my bastardized synthesizers which have to run on real-time.

Let's move on to the contents, and the advertisement of my plugins. Distinctive short decaying high metal tones are mostly made from EnvelopedSine, and that's the most used synthesizer in this album. Low drums in "Crimson-headed partridge" is also made from it. If you hear long decaying reverb, that's almost certainly comes out from L3/L4Reverb. You can hear them in "Ibexes and deer" and "Tigerwings". Those reverbs are the savior of my bad plays. They are also good to use with CollidingCombSynth. "Quagga" is the loudest piece in this album. Typical sound of ParallelComb and UltrasonicRingMod can be heard.

---

"Animals" は Uhhyou Plugins (うっひょうプラグイン) の音の見本となるアルバムです。

曲のタイトルの動物の名前は適当な Wikipedia の記事からカットアップしました。

このアルバムで苦労した点はプラグインの開発、特に DSP のテストです。最初のコミットは 3 年前の 2019 年で、そのときは C++ をろくに理解できていませんでした。今でもよく分かりません。方針としては、いい音の出るプラグインを作って投げやりに鳴らすということを念頭に置いていました。この方針を私は勝手に「回りくどいジョン・ケージ戦略」と呼んでいます。 YouTube で John Cage と検索すると浴槽に実際の物を次々と投げ込む動画が出てきますが、そんな投げやりなパフォーマンスでもリアルタイムで動かすために質が下がってしまったシンセサイザに比べると遥かにいい音が出ています。 Animals ではマイクによる録音という手っ取り早い方法を使わずに、わざわざ手間をかけて微妙な出来のシンセサイザを作った上で、適当に演奏した音を次々と WAV ファイルに投げ込むという回りくどいことをしているわけです。

曲のほとんどは即興とオーバーダブで作りました。リズムが無い、というかよれているのは私の演奏が下手だからです。よれよれであっても一度録音してしまえば、密な部分と疎な部分が現れます。そこにオーバーダブで密な部分をさらに密にするということを繰り返した結果のよれよれの塊が、このアルバムです。

話を曲の内容とプラグインの宣伝に移します。アルバム全体を通して現れる、金属的な短い減衰音のほとんどは EnvelopedSine によるものです。そのおかげで、このアルバムで最も使ったシンセサイザは EnvelopedSine となっています。また Crimson-headed partridge の冒頭から入っている低いドラムの音も EnvelopedSine によるものです。やたらと長く残る残響はまず間違いなく L3/L4Reverb を使っています。 Ibexes and deer や Tigerwings では、この残響をはっきりと聴くことができます。 L3/L4Reverb は私のどうしようもない演奏を何とかしてくれる素晴らしいエフェクトでした。 CollidingCombSynth とも相性がいいです。このアルバムでおすすめの一曲は最も音が大きい Quagga です。 ParallelComb と UltrasonicRingMod の典型的な音を聴くことができます。

2022/08/31

レイテンシのない畳み込み

レイテンシのない畳み込みを読む (github.io)

MiniCliffEQ の FIR フィルタの畳み込みのレイテンシを何とかしたときに調べたことを記事にしました。リンク先では William G. Gardner さんによる "Efficient Convolution Without Latency" で紹介されている最小計算コスト法 (minimum computation cost solution) と一定計算コスト法 (constant demand solution) を参考にして改変した手法を紹介しています。

画像は改変した手法の計算の概要と、各部の出力の遅延を示した図です。

2022/08/28

二重 EMA フィルタによる AD エンベロープ

二重 EMA フィルタによる AD エンベロープを読む (github.io)

ClangSynth で使った二重 EMA フィルタによる AD エンベロープについて調べたことを記事にしました。以前に調べた ExpPoly エンベロープの高速な代替品として使うことを想定していたのですが、あまり似たような音にはなりませんでした。

ここでは EMA (exponential moving average) フィルタを 2 つ直列につないだものを二重 EMA フィルタ (double EMA filter) と呼んでいます。異なるフィルタを指していることもあるようです。

画像は二重 EMA フィルタによる AD エンベロープの、ディケイの値を変えたときの出力です。

2022/08/22

"found in animals" on Electronic Frequencies

Thanks to Kirk Markarian, one of my improvisation "found in animals" is aired on a radio show called Electronic Frequencies, which is a program on Concertzender.nl. Below is a link to the show.

Electronic Frequencies | Concertzender.nl :: Radio

Electronic Frequencies is hosted by Kirk, also as known as his artist alias Neuro... No Neuro. I honestly recommend to listen to his music instead of mine. They are far more well tuned.

---

Kirk Markarian さんによって、私の "found in animals" という即興が Concertzender.nl というサイトの Electronic Frequencies というラジオ番組で紹介されました。 Kirk さん、ありがとうございました!下記は番組へのリンクです。

Electronic Frequencies | Concertzender.nl :: Radio

Electronic Frequencies のホストを務める Kirk さんは Neuro... No Neuro (NNN) というアーティスト名でも活動されています。正直なところ、私の曲よりも Kirk さんによる曲のほうが遥かに丁寧に作られているのでお勧めです。

2022/08/14

UltrasonicRingMod

 

Download and User Manual (github.io) 

Source Code (github.com)

UltrasonicRingMod is a ring modulator with 64-fold oversampling. Maximum modulator frequency is 1 MHz. That said, just modulating with ultrasonic frequency doesn’t produce anything audible. Therefore, phase modulation and hard clipping are added to make some noise in audible frequency.

---

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

ソースコード (github.com)

UltrasonicRingMod は 64 倍のオーバーサンプリングを行うリングモジュレータで、最高 1 MHz のサイン波による変調をかけることができます。とは言っても単に変調すると可聴域外なので何も聞こえなくなってしまいますが、フィードバックによる位相変調やハードクリッピングができるので、いくらかノイズが出せます。

---

I also made a demo video of PitchShiftDelay.

PitchShiftDelay のデモ動画も作りました。


2022/08/04

ClangCymbal β

ClangCymbal β Download & User Manual (github.io)

ClangCymbal is a spin off of ClangSynth, which is introduced in a previous post.

Note the β version. Bugs might be still remaining, and breaking change might be introduced. If you are planning to use it on production, make sure to write the result to file before closing DAW.

Below is a list of changes:

  • Increased FDN size from 8 * 8 to 64 * 64.
  • Added independent controls for each FDN filter on feedback path.
  • Added tremolo.
  • Added modulation envelope destination.
  • Changed oscillator from static wavetable to noise/pulse mix.
  • Reduced number of voice to 1, which means monophonic.
  • Removed LFO.

It can make more rich sounds because of the increased size of FDN. However, it also becomes monophonic due to the increased CPU load. To put more focus on percussion sounds, oscillator is changed to noise/pulse generator. Also LFO is omitted.

Change log:

  • 0.0.2 (β4): Fix initialization failure on Bitwig and Live 11.
  • β3: Fix to load saved state at the opening of project file on FL Studio.
  • β2: Fix BarBox to get focus on mouse down, and release focus on mouse exit.
  • β1: Initial release.

---

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

ClangCymbal は、一つ前の記事で β 版を公開した ClangSynth のスピンオフです。

β 版なのでバグが残っていたり、後方互換の無い変更が行われる可能性があります。制作に使用するときは DAW を閉じる前に必ずファイルに書き出すことをお勧めします。

以下は変更点の一覧です。

  • FDN のサイズを 8 * 8 から 64 * 64 へと増加。
  • FDN のフィードバック経路のフィルタを独立して操作できるように変更。
  • トレモロを追加。
  • エンベロープの変調先を追加。
  • オシレータをウェーブテーブルからノイズとパルス列の混合に変更。
  • 最大同時発音数を 1 に低減。
  • LFO を除去。

FDN が大きくなってリッチな倍音が出るようになった代わりに CPU 負荷が増えたのでモノフォニックになっています。また、打楽器に特化するためにオシレータを変更して、変調器をエンベロープのみに絞りました。

変更点:

  • 0.0.2 (β4): Bitwig と Live 11 で初期化に失敗するバグを修正。
  • β3: FL Studio のプロジェクトを開いた時に保存した状態が DSP 側に読み込まれない問題を修正。
  • β2: BarBox がマウスボタン押下 (mouse down イベント) でフォーカスを取得、マウスカーソルが領域外に出る (mouse exit イベント) とフォーカスを開放するように修正。
  • β1: 初期リリース。

 

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 秒前後に増やす予定です。