2017-11-18 16 views

답변

0

저는 현재 midi 이벤트 수신기에서 작업 중이므로 간단한 MIDI 파서를 만들었습니다. here 프로젝트를 다운로드 한 다음/build에서 MidiParser.js 파일을 프로젝트로 복사 할 수 있습니다.

당신은 그 (전체 예제 here)처럼 사용할 수 있습니다

// Create midi parser 
var parser = new MidiParser(); 

// Load file and parse midi 
var fileReader = new FileReader(); 
var midiFileInput = document.getElementById('midiFileInput'); 
midiFileInput.addEventListener('change', function(inputEvent) { 
    if (!inputEvent.target.files.length) 
     return false; 

    fileReader.readAsArrayBuffer(inputEvent.target.files[0]); 
    fileReader.onload = function(file) { 
     var uint8Midi = new Uint8Array(file.target.result); 
     var parsedMidi = parser.parseUint8(uint8Midi); 
     // Use parsed midi 
     document.body.innerHTML += '<pre>' + JSON.stringify(parsedMidi, null, 2) + '</pre>'; 
    }; 
}); 

그것의 출력 포맷 noteOn의 및 이벤트 noteOff 배열 될 것입니다.

예를 들어, 키를 누를 때마다 var event = parsedMidi.shift()을 사용하여 다음 이벤트를 얻거나 오름차순 색인 (var event = parsedMidi[yourIndex])으로 액세스 할 수 있습니다.

소리를 재생하려면 midi.js 또는 sample-player을 사용할 수 있습니다. (아직이 하나를 테스트하지 않았습니다)

편집 :

자습서 : https://github.com/Otto-AA/MidiPlayer/blob/master/tutorials/MidiParser.md

문서 : https://github.com/Otto-AA/MidiPlayer/blob/master/docs/MidiParser.md

+0

감사가! 정말 도움이되었습니다. 나는 파스 미드 미를 연주하는 데 약간의 문제가있다. 정확히 어떻게 미디 js 플레이어에게 이벤트를 전달할 수 있습니다. 키 입력이 감지되면 전체 미디 노트를 읽으려고합니다. 추가 도움을 주셔서 감사합니다. 친구. –

+0

'MIDI.noteOn (채널, 음, 속도, 지연) '과 같은 것' https://github.com/mudcube/MIDI.js#midipluginjs---controls-midi-output 또는 https : // github를 참조하십시오. co.kr/mudcube/MIDI.js/blob/master/examples/Basic.html –

+0

선생님! const parsedMidi는 익명 함수 내에서 만들어지며 전역 범위에서 어떻게 액세스 할 수 있습니까? 그래서 나는 그것으로 일할 수있다. 나는 parsedMidi를 돌려 보았지만 didnt는 일했다. –