使用Javascript演奏音乐符号

5

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

我的第一步是播放音符或构思音符。我使用了一些经过记录的 timbre ,可以在这里找到 http://mohayonao.github.io/timbre.js 。我的第一个函数是将例如 "C4"(法语中的 do4)转换为正弦函数的音频声音。

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

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

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

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


2
你已经有用于生成声音的代码了吗? - user2950720
它在timbre.js库中(对我来说不可读)https://gitlab.com/mdahmen/Laterreestron.de/blob/master/pagesandapps/partgenie/js/libs/timbre/timbre.js - manueldahmen
1个回答

1
我能够使用 synth.noteOnWithFreq() 播放音符,然后使用 synth.noteOff() 结束它们。该代码基于 Synthesizer 示例,并在 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();
<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">


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接