Midi.js как играть?
Я хочу услышать звук на примере mudcube Midi.js demo-basic.html, но не слышу звука. кто-нибудь может мне помочь? я просто новичок спасибо
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!-- midi.js package -->
<script src="./js/MIDI/AudioDetect.js" type="text/javascript"></script>
<script src="./js/MIDI/LoadPlugin.js" type="text/javascript"></script>
<script src="./js/MIDI/Plugin.js" type="text/javascript"></script>
<script src="./js/MIDI/Player.js" type="text/javascript"></script>
<script src="./js/Window/DOMLoader.XMLHttp.js" type="text/javascript"></script>
<!-- extras -->
<script src="./inc/Base64.js" type="text/javascript"></script>
<script src="./inc/base64binary.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
window.onload = function () {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
callback: function() {
var delay = 0; // play one note every quarter second
var note = 50; // the MIDI note
var velocity = 127; // how hard the note hits
// play the note
MIDI.setVolume(0, 127);
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);
}
});
};
</script>
</body>
</html>
3 ответа
Происходит перекрестный запрос о происхождении, который не позволяет загружать Soundfont. Вы сможете увидеть это в консоли Google Chrome. В настоящее время это открытый вопрос о репозитории midi.js Github. ( https://github.com/mudcube/MIDI.js/issues/63). Там есть несколько предложений, которые помогут вам запустить его и запустить до тех пор, пока они не предоставят версию, в которой это исправлено.
Работает в браузере FireFox. Я не мог заставить его играть по одной ноте за раз. У меня было в цикле палить 3 разные ноты по одной, но все они играли как аккорд.
Попробуйте этот код. Время не является правильным, так как это работа в процессе LOL, но он должен играть с днем рождения.
onsuccess: function() { var delay = 0; // play one note every quarter second
var note = 50; // the MIDI note
var velocity = 127; // how hard the note hits
var i;
var Note1Play = [60, 60, 62, 60, 65, 64, 60, 60];
var Length1_Note = [0.455, 0.455, 0.91, 0.91, 0.91, 1.82, 0.455, 0.455];
MIDI.setVolume(0, 127);
delay = .455;
for (i=0; i<=24; i++){
delay = delay + Length1_Note[i];
MIDI.noteOn(0, Note1Play[i], velocity,delay);
MIDI.noteOff(0,Note1Play[i],delay + 32);
} } }); };
Если у вас есть правильные исходные коды скрипта, этот код воспроизводит песню "Happy Birthday":
<script type="text/javascript">
function myFunction() {
MIDI.loadPlugin({
onsuccess: function () {
var delay = 0; // play one note every quarter second
var note = 50; // the MIDI note
var velocity = 127; // how hard the note hits
var i;
var Note1Play = [60, 60, 67, 67, 69, 69, 67, 65, 65, 64, 64, 62, 62, 60 ];
var Length1_Note = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5];
MIDI.setVolume(0, 127);
delay = 0;
for (i = 0; i <= Length1_Note.length; i++) {
delay = delay + Length1_Note[i];
MIDI.noteOn(0, Note1Play[i], velocity, delay);
MIDI.noteOff(0, Note1Play[i], delay + 25);
}
}
});
};
</script>
(есть кнопка с функцией onclick с именем myFunction) Я запускаю ее в Microsoft Edge. Я не могу слышать звук в Chrome из-за политики CORS.