Menu

en : Developer : MusicPlayers

developer (26)
Brad Lanam

Wiki Home : Developer : MusicPlayers

Music Players

What's required in a music player?

  • Support for Windows, Linux, Mac OS X. FreeBSD support is good also.
  • Support for many different audio formats.
  • Play a file from disk (many players are playlist oriented and can only play music from their own internal playlist.)
  • Either have an API available that can be used to play music (this is best as it reduces latency), or
  • Be able to play music via a socket interface.
  • Pause and Play
  • Seek in song.
  • Speed/Pitch control. Preferably this would be interactive, but a player that can speed/pitch control the entire song could be used also.
  • A GUI is not required.

Unfortunately this is a bit rare. I would like to find alternatives to VLC so I am not locked in to a single vendor.

VLC VLC has all of the above and is actively maintained.

MPV MPV now has a libmpv API and supports most all of the above. The libmpv interface has issues on Windows. At this time, MPV can be used on Linux 64-bit.

MPRIS-enabled (Linux Only)

MPRIS can be used on Linux for many players, but the support for speed/pitch control is not common. There may be subtle differences in how the MPRIS interface reacts for different players.

quod libet

No speed control on windows.
No way to get the status when using the fifo. Would require command line usage, latency unknown.
​http://quodlibet.readthedocs.io/en/latest/index.html#
Can use a FIFO to control it. Will need an interface to the Windows API FIFO functions (twapi? or our own?).
​https://github.com/quodlibet/quodlibet/blob/master/quodlibet/quodlibet/cli.py (process_arguments)

portaudio

portaudio library could be used for audio playback. But it has no speed/pitch control. Would need to use ​http://www.mega-nerd.com/SRC/ or somesuch. Probably would need libsndfile also, but it needs mp3 support ( ​https://github.com/erikd/libsndfile/issues/258 ). This is a major project, as it means that BallroomDJ would become an actual audio player.

mplayer and derivatives:

mplayer could be used, but there are a lot of problems with sound glitches during startup, etc. Also mplayer and mplayer2 do not seem to have an active development community. One of the forks of mplayer (MPV) dropped the socket API.

MPD

MPD can probably be used, but it is quite complicated to set up (and I did not want to subject my users to that). It is playlist oriented and can only play files from the same machine.

HQPlayer

Someone once wanted support for HQPlayer. HQPlayer would not process commands via the socket in a timely manner, making pause/play impossible to use. It also had very poor seek sound quality. It does not have a speed control.

Foobar2000

Foobar2000 does not provide a socket API to control music playback.

There are claims that Foobar2000 has better quality than VLC. This is answered in the Foobar2000 FAQs. Virtually all decent music players are playing a digital stream, and it should be what is known as "bit-perfect" (i.e. no changes) from input to output. It is literally quite impossible for one player to have quality any different than another unless there are bugs or audio decoder issues. VLC fixed a bug with sound quality issues in version 2.2.6 of VLC.


Related

Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.