I am working with this midi file. And I see that synthesia detects 2 recorders, 2 cellos and 1 contrabass for each one of the midi tracks respectively, but there is no any 'instrument name' meta event in the midi file.
What's happening here?
The MIDI specification itself does not define what instrument a program change message maps to. MIDI files are supposed to contain a System Exclusive message that initializes the synthesizer for the desired standard (e.g., "GM System On" for General MIDI, or "XG Reset" for the XG standed).
This file does not contain such an initialization. But most files are for General MIDI (and most other standards are compatible with GM), so Synthesia assumes that the MIDI file is for a synthesizer that supports General MIDI, and just takes the name from the GM instrument list.