Music on Console

Music On Console (MOC) is an ncurses-based console audio player for Linux/UNIX. It was originally written by Damian Pietras, and is currently maintained by John Fitzgerald. It is designed to be powerful and easy to use, with an interface inspired by the Midnight Commander console file manager. The default interface layout comprises a file list in the left pane with the playlist on the right. It is configurable with customizable key bindings, color schemes and interface layouts. MOC comes with several themes defined in text files, which can be modified to create new layouts. It supports ALSA, OSS or JACK outputs.

Supported file formats include: MP3, Ogg Vorbis, FLAC, Musepack, Speex, WAV (and other less popular formats supported by libsndfile), MOD, WavPack, AAC, SID, MIDI. Moreover most audio formats recognized by FFMpeg/Libav are also supported (e.g. MP4, Opus, WMA, APE, AC3, DTS - even embedded in video files). New formats support is under development. Internet streams (Icecast, SHOUTcast) are also supported.

MOC has a single playlist (which can be saved in m3u format) and has the concept of a 'music directory' but it has no library file where metadata is saved. Instead this information is read as needed from tags in the files themselves or from tags cache, either upon access or during idle CPU time. If the playlist has extended m3u information, that will be read as well. If the playlist is saved, any read metadata will be stored.

Its text-only nature consumes very little system resources, and it uses an output buffer in a separate thread to avoid skipping under high system loads and to enable gapless playback. Normally, exiting the program only closes the interface - the program daemonizes itself so the audio continues playing in the background.

This client/server architecture is similar to MPD and XMMS2, but unlike those players, the MOC daemon is not accessible over a network, and does not have an open API to communicate with alternate clients. This has both advantages and disadvantages as, while MOC can't be controlled by a remote graphical client (it can be used via SSH), it can securely range the entire filesystem, which is not advisable by a remotely and anonymously accessible server such as MPD.

The binary is named mocp for "MOC Player" because of a conflict with a Qt utility called moc.