MixDaemon screenshot

Key features

  • Allows you to remotely view or change your volume levels via an easy telnet interface.
  • Supports continuous steaming of volume levels of different channels simultaniously, making it perfect for implementing remote vumeters etc...
  • You can stream volume levels continuously AND set volume levels at the same time, over the same tcp connection.
  • Very easy, human readable protocol, yet simple to parse programatically.

What is it?!

MixDaemon is a program which lets you remotely set and get volume levels on GNU/Linux machines. - Basically, is amixer with a built-in tcp server and an easier to use interface.

How it works:

When you run mixdaemon, it starts a tcp server on the specified port (configurable in config file). When connecting to the mixdaemon tcp port (using telnet or netcat, or a custom program you write.), you can do the following:

  • Get the volume level(s) for a specific channel. eg, type: GETS 27 ,which will get the alsa levels for the channel with numid 27.

    If you are unsure which numid is which channel, fire up a command prompt and type: amixer controls ; this will get you a list.

    MixDaemon will respond with something like: 29 = 80,80 if the channel is a stereo channel.
    It will respond with something like 29 = 80 if the channel is mono,
    and with 29 = 1 or 29 = 0 if the channel is a switch (0=off, 1=on).

  • Continuously get the volume level(s) for a specific channel. eg, type: GETC 27, which will do the same thing as GETS, only it will continuously keep outputting the levels.

    This is for when you want to constantly monitor the volume and notice any little change. This is particularly useful when implementing a graphical remote volume meter or anything like that.

    Note that while it's outputting you can still type commands!, so you can follow up with another GETC command if you want, and monitor multiple channels simultaniously, or run a SET command (explained below) to set the volume level as you're reading it.

    The STOPC command will stop all output started with GETC.

    The speed by which the volume levels are printed, is determined by the delay value in the configuration file.

  • Set the volume level for a channel. Eg: SETC 29 44,22 will set the volume for channel with numid 29 to 44 left and 22 right (if the channel is a stereo channel.)

  • Remaining commands not covered above are HELP, which will get you a brief overview of commands. and QUIT which will disconnect you from the mixdaemon server.

Some more info / documentation can be found in the README file inside the package. It covers the configuration options in some more detail, but is not quite as verbose as the text here.

Dependancies

MixDaemon only requires a sane build environment (with gcc, g++, automake, autoconf, the usual,...) which will usually already be present on your system. In addition to this, MixDaemon also requires the boost headers installed (no linking required). - And obviously alsa is also required.

Installation

Assuming you have taken care of the dependancies described below, you should be able to compile and install with the usual commands:

      ./configure
      make
      make install
    

(The make install step needs to be executed as the root user.)