MusicPlayerDaemon / MPD

Music Player Daemon
https://www.musicpd.org/
GNU General Public License v2.0
2.15k stars 347 forks source link

Support for MIDI output #1208

Open koshisan opened 3 years ago

koshisan commented 3 years ago

Hi!

To my understanding currently MPD has two ways of playing back midi files - both of which rely on software synthesizer implementation.

I would love to see "real" midi support implemented, where the file is parsed by MPD itself and written to an alsa sequencer device...

While in theory it should be "easier" than the implementation already in place, since nothing needs to be interpreted, I am unsure how much work would really be required to implement such a feature, since it seems that MPD itself is only meant to handle PCM...

Or is there already a workaround I just didn't find?

MaxKellermann commented 3 years ago

This would be similar to something like MP3 pass-through for Shout/HTTP output (which has been requested for years). However, implementing this would be a lot of work, because everything inside MPD is about passing buffers of PCM data around.

koshisan commented 3 years ago

If it is any help - winamp has support for native MIDI playback. The support is implemented not as an output/audio renderer plugin, but as an input plugin. So the plugin basically knows which file is requested and just plays it on its own - while ignoring the rest of the pipeline. It could also deliver silent/empty PCM data back if that is required to keep the rest of the framework happy. The only problem would be commands like stop/play/pause and displaying the position. My guess is winamp has some kind of communication implemented with input plugins for this case.