https://codesandbox.io/s/v3y2xvo6wlarrow-up-right
ついに完成しましたね。MIDI キーボードを繋いで演奏すればあなたが作ったシンセがなります!
まだまだ改良の余地があります。それを列挙し、さらにそのための方向性と手法も紹介します。
ピッチベンドやモジュレーションホイールの値を受け取って、シンセに変化を与えたいはずです。その場合には command で分岐します。具体的な値はまだ自分もよくわかっていないのですが、console に command を出力して、自分のコントローラーを動かした時のコマンドを確認していけばいいでしょう。
音量やピッチやフィルターといった値は、.value で直接指定するだけではなく setValueAtTime や linearRampToValueAtTime を使って時間変化させることができます。これに関しては以下の記事が詳しいので参考にしてください。
setValueAtTime
linearRampToValueAtTime
今は一台のシンセしか使わない前提の構成になっていますが、できれば複数のシンセやフィルター、シーケンサーといったものをモジュールとして作り、つなげていきたいものです。
現時点でも、次につなぐ先を指定できるので、同じインターフェイスのエフェクト等を作っていけば、つなげていけます。
最終的にはインターフェイスを統一して、いろんな人がモジュールを npm パッケージとして公開する、なんてことになっていけばいいなと思っています。
ではお疲れ様でした!
Last updated 7 years ago
const synth = new Synth({ audioContext, nextNode: destination, })