fra / mvc

A music visualizer based on curses and written in C

GallaFrancesco authored on 3 Jun
pics sample pics 3 months ago
src utils2 3 months ago
LICENSE gpl 5 months ago sample pics 3 months ago
makefile cleaning 3 months ago


Minimal MPD music visualizer, based on curses. Works by reading the fifo output of an MPD instance.

Example1 Example2 Example3


ncurses and GCC (or another C99 compatible compiler).

Optional: libmpdclient to display current status (song / elapsed time / etc).

The fifo output of MPD needs to be enabled. To do so, simply place this in your mpd.conf:

audio_output {
    type                    "fifo"
    name                    "my_fifo"
    path                    "/tmp/mpd.fifo"
    format                  "44100:16:1"


Clone the repo:

git clone
cd mvc/

Build with status display (requires libmpdclient):

make all

Note: without libmpdclient installed, this is equivalent to 'make nostatus'.

Build without status display (without libmpdclient):

make nostatus

Install (to /usr/local/bin/):

sudo make install


An instance of MPD must be running for mvc to work.

From a console / terminal emulator:



  • Quitting: q.
  • Change drawing mode (style): Space bar
  • Move status panel (if built with libmpdclient): up / down / left / right keys
  • Reset status panel position: r
  • Toggle status display: t
  • Print help: h


Editing settings.h allows the configuration of:

  • Host, Port, Timeout and DB location of the mpd instance
  • Timeout for the connection to mpd to fail
  • Number of samples taken each read
  • Adaptive sampling on / off: whether to adapt the number of samples to the current sample rate. Might give fairly accurate results with high rates (> 96000 Hz)
  • Location of the MPD named pipe (fifo) from which mvc reads.
  • Seconds in between each status refresh
  • Niceness: number of reads to be skipped cyclically (reduces load on the cpu)
  • Y_Correction: integer value to be subtracted to the components in case the height of the screen wasn't sufficient
  • X_Correction: lateral shift in case the visualized spectrum is not perfectly aligned with the center of the screen.