mudcube / MIDI.js

:musical_keyboard: Making life easy to create a MIDI-app on the web. Includes a library to program synesthesia into your app for memory recognition or for creating trippy effects. Convert soundfonts for Guitar, Bass, Drums, ect. into code that can be read by the browser. Supports multiple simultaneous instruments and perfect timing.
http://mudcu.be/midi-js/
MIT License
3.81k stars 640 forks source link

Midi files with multi channels doesn't work using MIDI.Player.Loadfile #256

Open KomeijiSatori opened 4 years ago

KomeijiSatori commented 4 years ago

I have a midi file with three channels(both acoustic_grand_piano), when calling MIDI.Player.Loadfile, it only plays one track. Another problem is that the player dropped the very first note of the midi file, and the note is at time 0:00. After I move the first note 2 seconds later then it sounds good. And also I checkout to a branch called "abcjs", and I change the code to the newest commit, the two problems are resolved. Since there're too many commits(29commits ahead of HEAD), so I can't figure out which important part has been changed. But that commit has a problem with pause function, which will play one or two unexpected notes after 3 or 4 seconds after resume.

What's more is another project Color Piano (https://galactic.ink/piano/), which is awesome and it doesn't have any of issues described above. But it seems not open source. So @mudcube , would you mind creating a repo of that project? Much thanks!

MX-Qulin commented 4 years ago

yes. same problem.

KomeijiSatori commented 4 years ago

yes. same problem.

@MX-Qulin Hi, friend, I solved this problem by replacing the whole js/midi folder to single midi file used by https://galactic.ink/piano/ , and the problem resolved, cheers!

My github: https://github.com/KomeijiSatori/3d-piano-player

MX-Qulin commented 4 years ago

well, as i use the brach abcjs if this repo, it can't work...

i'll try your solution. Anyway, thank you:)

page200 commented 2 months ago

I solved this problem

@KomeijiSatori Do you mean that https://github.com/KomeijiSatori/3d-piano-player would be able to play MIDI files with several instruments without problems if the soundfont directory contained those instruments?

http://midi.chongliu.me/ redirects to a blank page. When I run https://github.com/KomeijiSatori/3d-piano-player locally (which requires starting Chromium with the --allow-file-access-from-files flag) after having replaced one of the MIDI files by a MIDI file with several instruments, all instruments still sound like the piano. Then I realized that https://github.com/KomeijiSatori/3d-piano-player/tree/master/soundfont doesn't contain many instruments. I haven't yet tried adding instruments there or making a MIDI file with only the two available instruments.

KomeijiSatori commented 2 months ago

I solved this problem

@KomeijiSatori Do you mean that https://github.com/KomeijiSatori/3d-piano-player would be able to play MIDI files with several instruments without problems if the soundfont directory contained those instruments?

http://midi.chongliu.me/ redirects to a blank page. When I run https://github.com/KomeijiSatori/3d-piano-player locally (which requires starting Chromium with the --allow-file-access-from-files flag) after having replaced one of the MIDI files by a MIDI file with several instruments, all instruments still sound like the piano. Then I realized that https://github.com/KomeijiSatori/3d-piano-player/tree/master/soundfont doesn't contain many instruments. I haven't yet tried adding instruments there or making a MIDI file with only the two available instruments.

Hi Page, I mean I solved the problem of playing mulitple tracks, but the soundfont is not supported. If you want the right mapping of the instruments, it requires a lot deeper and embeded development of the code.