diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..7be5189 --- /dev/null +++ b/debug.log @@ -0,0 +1,2 @@ +[0903/220217.182:ERROR:crash_report_database_win.cc(428)] unexpected header +[0904/152354.511:ERROR:crash_report_database_win.cc(428)] unexpected header diff --git a/src/components/MidiComponent.js b/src/components/MidiComponent.js index 4c8c30a..9a940ca 100644 --- a/src/components/MidiComponent.js +++ b/src/components/MidiComponent.js @@ -79,34 +79,49 @@ function dumpBufferFromSysexFile(array) { } ); console.log(dump); + return dump; } -function MIDIComponent () { +function LoadSYSEXFile (props) { - // request midi access - navigator.requestMIDIAccess({sysex: true}).then(onMIDISuccess, onMIDIFailure); const fileInput = React.useRef(); + const [data, updateData] = React.useState(new Uint8ClampedArray()); + + React.useEffect(() => { + console.log(data); + }, [data]); // on file load, verify correct file format const getFile = (event) => { event.preventDefault(); - loadSysex(fileInput); - // enable the submit button + if (loadSysex(fileInput) !== null) { + let reader = new FileReader(); + reader.onload = (e) => { + let l_data = new Uint8ClampedArray(e.target.result); + updateData(dumpBufferFromSysexFile(l_data)); + } + reader.readAsArrayBuffer(fileInput.current.files[0]); + } + else { + alert("Please load a SYSEX File"); + return null; + } } // on submit button press, convert the file to correct Dump Format, as per microKORG MIDI Implementation Doc const handleInput = (event) => { - event.preventDefault(); - /*if (sysexFile == null) { - alert("Please load a SYSEX File"); - return; - }*/ - let reader = new FileReader(); - reader.onload = (e) => { - let data = new Uint8ClampedArray(e.target.result); - dumpBufferFromSysexFile(data); + if (!fileLoaded()) { + event.preventDefault(); } - reader.readAsArrayBuffer(fileInput.current.files[0]); + else { + props.sendFileData(data); + } + } + + const fileLoaded = () => { + return ( + data.length === 254 + ); } return( @@ -116,9 +131,28 @@ function MIDIComponent () {
- + ); +} + +function MIDIComponent () { + + // request midi access + navigator.requestMIDIAccess({sysex: true}).then(onMIDISuccess, onMIDIFailure); + const [loadedFile, loadFile] = React.useState(null); + + React.useEffect(() => { + console.log(loadedFile); + }, [loadedFile]); + + const getChildFile = (childData) => { + loadFile(childData); + } + + return( + + ); }