裏目小僧の部屋

JavaScript Audio.playで音を出す


wavFileでダウンロード

  1. make_snd 関数で 波形を作って
  2. viwWaveでcanvasに表示し(内部でマウス処理)
  3. makeWavMono関数でWavHdrを付けて play=trueならFileReaderでBase64にして Audio .playで再生

という流れです.

:このページ上ではサンプルレートを遅くしているので気づかないかもしれませんが、サンプルレートを上げると反応が遅い。どうやらFileReaderのBase64エンコードが原因のようです。これでだいぶ遅れますから、これをなんとかしないといけない。URL.createObjectURL(blob)は早いし、

 sound.src=URL.createObjectURL(blob)
 sound.play();

で再生出来れば 遅延はあまりなくなるのだけど・・・ Web Audio APIを使うしかないのかな

  • もう一つの問題はAudioオブジェクトでは単音しか出ない事。やはりWebAudioを学ぶしかないのか
  • ピアノ鍵盤表示をJavaScriptにPas2JavaSc.pasで変換して必要部分を組み込んでみました。
    • 鍵盤があるとなおさら1音縛りが厳しく感じますね

 3音



wavFileでダウンロード

  • 3音分のAudioオブジェクトを確保して順に使ってみました。
  • ソースは[https:./inc/makeSnd3.html]+[https:./inc/uPianoKey.js]
  • 同時に音が出るとクリップするので少し音量を下げています。
  • 上の1音のものと比べてブツブツ切れる感じが減っていると思います。

これで「計算による音作りを楽しんでもらう」という目標の為にはEVALでJavaScriptを直接入れてもらうと達成なわけですが、そうするとJavaScriptで悪戯も可能なので、何か制限をかけて(簡易言語のような方式で)出来ないか考慮中。

プライバシーポリシー本文は日本語以外に翻訳禁止