2016-03-13 51 views
0

我正在開發一個基本上是音樂鍵盤和樂譜表編輯器的小自由軟件項目。用Javascript發揮音樂筆記

我在這個項目中的第一步是演奏音符和或構思音符本身。我用音色,這是幾個記錄http://mohayonao.github.io/timbre.js。我的第一個功能是將例如「C4」(do4 enfrançais)轉換爲來自正弦函數的音頻聲音。

但我現在不能做的是玩和停止筆記。播放作品開始正弦波,但是當我打第二個音符,第一個音符也不會消失,所以我用了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

+0

它的任何代碼在timbre.js庫中(我無法閱讀)https://gitlab.com/mdahmen/Laterreestron.de/blob/master/pagesandapps/partgenie/js/libs/timbre/timbre.js – manueldahmen

回答

1

我能夠發揮利用synth.noteOnWithFreq()音符,然後使用synth.noteOff()的代碼是基於timbre.js項目頁面上的Synthesizer例子結束它們。確保您包含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">