tech_note

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 60571f6a549caca26a976a525b0f5f7f068bf74f
parent 836007015d71efb47064cb1253fb69fdc76a05c2
Author: minerva-jupiter <ryouturn@gmail.com>
Date:   Wed, 17 Jun 2026 07:45:33 +0900

docs: add article about creating a CLAP plugin through simulation

Added a new markdown file documenting the design and implementation process of a CLAP plugin based on physical modeling of musical instruments.

Diffstat:
Apublic/creating_a_clap_plugin_through_simulation.md | 43+++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+), 0 deletions(-)

diff --git a/public/creating_a_clap_plugin_through_simulation.md b/public/creating_a_clap_plugin_through_simulation.md @@ -0,0 +1,43 @@ +--- +title: シミュレーションによるCLAPプラグインの作成 +tags: + - '' +private: false +updated_at: '' +id: null +organization_url_name: null +slide: false +ignorePublish: false +--- +# シミュレーションによるCLAPプラグインの作成 + +普段は大学で物理学徒をしている私が、シミュレーションを用いてCLAPプラグインを作ろうとする冒険譚です。 + +# 構想 + +少し前に私はAerophoneという楽器を頂く機会がありました。 +私はDAWをメインに曲を作っているのですが、どうにもAerophoneで演奏した音源をDAWに取り込む方式だと、Interfaceなどの関係で音の質があまりよろしくないということに気が付きました。 +そこで、楽器の発音と共鳴の機構をシミュレートしたプラグインを作成して、音源よりもリアルな音を出す電子的な楽器を作ってしまおうというのが今回の趣旨です。 +時代の後退ですし、録音をMidiで流したほうがずっとうまくいくのは理解していますが、SoundFont(sf2など)のようなものにはない表現力を持ってた方が面白いかなと思ったのが始まりです。 + +# 設計 +設計は大きく分けて次のふたつの部分をつなぎ合わせることで実現しています。 + +- 発信部(サックスでいうリードの部分) +- 共鳴部(サックスでいうボディの部分) + +個人的にはチェット・ベイカーのような優しいトランペットの音を目指したいのですが、サックスだろうがトランペットだろうがの発振は圧力駆動型バルブというモデルで説明できます。 +フルートやリコーダーは空気の渦を作って発振するので全然違うのですが、流体シミュレーションはまだ理解しきれてないので、今回はちょっと勘弁してもらって。 + +# 実装(TL;DR) +ここから長丁場です。実際、結構な時間を費やしています。 + +## 発信部の実装 +まず、圧力駆動型バルブの運動方程式を示します。 +変位はxで、kは弾性、P(t)は息による空気圧、rは振動の減衰のための定数です。 +$$ m \frac{d^2x}{dt^2} = -k x + f(P(t),x) + r \frac{dx}{dt} $$ +rの項の妥当性について一応述べておくと、例えば吹くのを止めて弾性によってのみリードが振動している場合、空気抵抗や構造への負担から振動が減衰していくことは経験的に理解できるでしょう。 +この方程式を解くうえで厄介なところはP(t)が目まぐるしく変わってしまうことに加え、fがx依存性を持っているところです。 +もしリードが息に押されてマウスピースに近づくと、その近さの2乗に応じて空気の通る速度は早くなります。(ロケットエンジンが吹き出し口からスカート型に広がっている理由なのですが。) +また、リードがマウスピースに触れた瞬間に空気の流れは0になり、十分に弱い圧力だけがリードにかかることになります。するとリードの弾性が優位になってリードはマウスピースから離れていきます。 +今回はこの空気のモデルを扱うために、f(P(t),x)についてもう少し考えていきます。(k,m,rもリードの噛む強さによって変化する(間接的にtに依存する)が、方程式を解くときは定数として扱います)