Web Audio API を使用して楽器を合成するライブラリをいくつか見つけました。
そのうちの 1 つ (Band.js) はcreateOscillator()
、オシレータ タイプ (sine、square、...) と組み合わせて使用します。 source を参照してください。
しかし、それはあまりにも合成に聞こえます (聞く例) もっとリアルに聞こえるものが欲しいのですが、プリコンパイルされたサウンドフォントを使用したくないので、合成する必要があります。モバイルデバイスでも動作するはずです。
createPeriodicWave
そこで、最初の 32 倍音を参照元と組み合わせてマトリックスとして使用する別のライブラリ (musical.js) を見つけました。音色は素晴らしいです、あなたはそれを聞くことができます
ソースコードのコメントに書いてある通り、ハーモニクスはこのピアノサンプルファイルから取っています。他の楽器のサンプルファイルはもっとたくさんあります。ハーモニクスをすべて 2000 でも置き換えてみましたが、常にピアノのように聞こえます。
高調波と ADSR 値を調整および補間するための値もいくつかあります。ピアノの音だけに最適化されているのでしょうか?
それから、ギターにとって本当に素晴らしい音色を持っている別のライブラリ(guitar-synth)を見つけたので、それを聞いてください。createPeriodicWave
ただし、このライブラリはAPIを使用しません。代わりに、いくつかの「単純な」計算と組み合わせて使用しますが、他のライブラリの高調波のようなものはありません。ソースをcreateScriptProcessor
参照してくださいgetChannelData
だから私の主な質問
createPeriodicWave
APIを使用するためにギター シンセサイザーを移植できますか? musicjsでギターの音色を使いたいです。ピアノの音色とギターの音色を切り替えられるように。
ところで: サウンド インストゥルメントを合成する別のライブラリが見つかりました。ここにデモがあり、ここにソースがあります。音もいいのですが、musical.js ライブラリの方がはるかに美しい音色です。getChannelData
しかし、WAVE としてエンコードされているようなものを使用しているようにも見えます。また、Android を搭載したモバイル デバイスでも動作しません。