https:/
実装はSTKに書いてあるので、jsで真似して書いてみた。
http:/
それっぽいけどまだ何か変。
とりあえず分かったことをメモ。
簡単に言うと、管楽器というのは管とリードから成る。ブラスの場合はリードは奏者の唇となる。
唇は息と管の圧力を双2次フィルタで目的の周波数で共振させることで実装している。
息の圧力は単純にADSRで決める。ただそれだけだと単純すぎるのでサイン波でビブラートを入れる。ついでに雑音も入れてみた。
管はdigital waveguideで実装していると書いてあるけど、難しいことは無く、左へ進む波と右へ進む波をそれぞれ管理するバッファのこと。管の性質は端に到達したときにどう反射するかがで決まる。ちなみに、waveguideは 導波管 といって、通常はマイクロ波等を送るための金属の管のことらしい。
他に特性としては、いくら共振しても波の大きさには限度があるということ。つまり音が割れる。
あと、トランペットのように途中で管が曲がっていると単純なwave guideじゃ駄目らしい。高周波のロスや反射が起きる。これは実装されていない。
他にベル(管の先の朝顔みたいな部分)のようになっている部分は、そのインパルス応答を再現するには10次のIIRが必要らしいけど、簡単な多項式で近似できるらしい。理由はよく分かりません。。。
下記のページが音のサンプルも多く分かりやすかった。
Brass instrument (lip reed) acoustics: an introduction
http:/
これだけのコードでも、パラメータをいじるだけで尺八っぽい音になったりで、結構遊べる。ただ、本物にはまだ程遠くこれじゃ実用性はないな、という感じ。