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.

Другие вопросы по тегам