grimmdude / MidiPlayerJS

♬ MIDI parser & player engine for browser or Node. As a parser converts MIDI events into JSON. Works well with single or multitrack MIDI files.
https://grimmdude.com/MidiPlayerJS/
MIT License
359 stars 52 forks source link

Don't play some midi file on here with same on personal midi editor #42

Closed elixirdada closed 5 years ago

elixirdada commented 5 years ago

lilyallen_smile.mid.zip Please check this midi file on VLC or other midi player. Then check on your online midi player.

I think you can hear different midi playing each other player.

Let me know how can solve this issue. Regards.

grimmdude commented 5 years ago

Hi @FullStackerWeb ,

Thanks for your message! Listening to this file in the online midi player example linked in this repo sounds kinda rough I agree, but generally notes seem accurate. Keep in mind that in that browser player all note events are being played with a single instrument. Also only start events are handled, hence all the overlap.

To make this MIDI file sound better more work would need to be done on the browser player side to handle the notes more gracefully; something I'd like to do when I have the time. Will dig deeper into that when I can. PRs always welcome!

-Garrett

elixirdada commented 5 years ago

Hi @grimmdude

As matter of fact, I need to play that midi file on your online midi player with same on VLC player. How can I fix this issue?

And, I have one question. Did you check that midi file on both players?

elixirdada commented 5 years ago

I think It can fix when I add all kind of instruments package on your online midi player. What do you think about it?

grimmdude commented 5 years ago

Hi @FullStackerWeb,

I understand you would like to attain the same quality of playback from the example browser player as you do with VLC (I did listen, it sounds very good). It would require the browser player handle different instrumentation per track at least. Changes would need to be made around the soundfont area of the demo:

https://github.com/grimmdude/MidiPlayerJS/blob/master/demo/js/app.js#L39

MidiPlayerJS library is simply an engine for parsing and outputting MIDI events from a MIDI file. The browser player demo is just an example implementation and it's a bit limited.

-Garrett

elixirdada commented 5 years ago

Thanks for your support.

elixirdada commented 5 years ago

Hi @grimmdude I have one problem. That problem is how to use multi-instruments on SoundFont.

I'd like you to explain in detail. Regards.

elixirdada commented 5 years ago

Also, I have one question. Is it possible to get the correct instrument name from the midi file?

grimmdude commented 5 years ago

Hey @FullStackerWeb,

Check out this list of channels you can use to identify the instruments with: https://soundprogramming.net/file-formats/general-midi-instrument-list/

For implementing different soundfonts; I'm going to leave that up to you I'm afraid. I'd have to go through the code and figure it out myself and I don't have much extra time at the moment. It should be fairly self explanatory though if you look through the source code of the browser player. Assuming you want to use the same soundfont player.

-Garrett

elixirdada commented 5 years ago

Hi @grimmdude

Please check this demo player on Firefox and Safari. You can hear strange voice in middle part.

I need to play this player on firefox and safari. I'd like you to explain this issue.

Thank you.

SilverRainZ commented 3 years ago

/me meet the same issue.