用 Javascript 播放音符

man*_*men 5 javascript audio android

我正在开发一个小型免费软件项目,它基本上是一个音乐键盘和乐谱编辑器。

\n\n

我在这个项目中的第一步是演奏音符或构思音符本身。我使用音色,这是一些有记录的http://mohayonao.github.io/timbre.js。我的第一个功能是将“C4”(do4 en fran\xc3\xa7ais)转换为正弦函数的音频。

\n\n

但我现在不能做的是演奏和停止音符。播放适用于开始正弦波,但是当我演奏第二个音符时,第一个音符不会消失,所以我得到了 2 个正弦波,然后是 3 个正弦波

\n\n

我的脚本\n https://gitlab.com/mdahmen/Laterreestron.de/blob/master/pagesandapps/partgenie/js/lecture.js

\n\n

http://mohayonao.github.io/timbre.js

\n\n

测试页面: http: //laterreestron.de/pagesandapps/partgenie/index.php

\n

Rob*_*rto 1

我能够使用演奏音符synth.noteOnWithFreq(),然后使用结束它们。synth.noteOff() 代码基于timbre.js项目页面上的合成器示例。确保包含Keyboard.js库,如下所示。

运行代码片段,点击输入框,输入一些字母

var synth = T("OscGen", {
  wave: "saw",
  mul: 0.25
}).play();

var keydict = T("ndict.key");

var midicps = T("midicps");

T("keyboard").on("keydown", function(e) {
  var midi = keydict.at(e.keyCode);
  if (midi) {
    var freq = midicps.at(midi);
    synth.noteOnWithFreq(freq, 100);
    window.key.innerHTML = midi;
    window.freq.innerHTML = freq.toFixed(2);
  }
}).on("keyup", function(e) {
  var midi = keydict.at(e.keyCode);
  if (midi) {
    synth.noteOff(midi, 100);
  }
}).start();
Run Code Online (Sandbox Code Playgroud)
<script src="http://mohayonao.github.io/timbre.js/timbre.js"></script>
<script src="http://mohayonao.github.io/timbre.js/src/extras/keyboard.js"></script>
<div>KeyCode: <span id="key"></span>, Freq: <span id="freq"></span></div>
<input id="keyboard" placeholder="Type some letters here">
Run Code Online (Sandbox Code Playgroud)