moOde 7.3 audio infrastructure

The moOde audio player contains a very rich features set. This article describes the audio infrastructure of moOde as per version 7.3. It show the general audio parts involved and an overview of the ALSA configurations.

moOde is fully GPL 3 based and only uses free available open source software. Shady origins of sources/packages are not used. The maintainer Tim Curtis is very strict on this, which is good thing.

Consequence is that for example some popular streaming service are not native available and only can be used by using something in the middle like UPnP Bubble and UPnP.

The image below shows an birdseye overview of the audio infrastructure:

moOdes audio chain

This is the infrastructure as moOde is configured and doesn’t necessarily relate to the all possibilities of the specific application or the entire chain in general.

When you select an audio device on the moOde configuration audio or MPD page, moOde update the configuration of all sources to use the correct device.

The blue blocks are possible audio sources. The first three source are inputs to MPD and have the most rich features. Second best are Spotify and Airplay. Bluetooth, LMS Client and Roon Bridge, can only be used the configured audio device, moOde doesn’t provide any DSP options for those. LMS an Roon provide there own DSP functions.

The following alsa dsp functions are available:

  • invert polarity
  • crossfeed with several modes available
  • 10 bands graphical EQ (Alsaequal)
  • 12 bands parameteric EQ (custom 12 bands based on caps EqFa4p).
  • CamillaDSP very flexible audio processing (think of EqualizerAPO but then for Linux)

When applying an alsa dsp plugin you can only choose one dsp function a time to be active. If you need a combination CamillaDSP is your friend.

In addition if your source is MPD related, first three input, you have also a powerful soxr resampler in MPD at your disposal. Including selective resampling and custom recipes.

Alsa audio path

moOde makes use of the Advanced Linux Sound Architecture (ALSA) for audio playback. The diagrams below provide an overview of the path audio has to take from source to device.

alsa configuration

The default the is to use alsa plughw to access a device. Plughw provides automatic, if needed, samplerate and bitdepth conversion. For example if Airplay provides 16 bit and your device expect 32bit, this would result without conversion in an playback error.

For the purist among us it also possible to use the direct mode (under alsa options at audio configuration page). In the case alsa hw is used to access the devices. This ensures no changes to the audio stream are made, but can result in audio device output errors.

Note: The direct (hw) option is only available for the first and last one configuration.

Loopback

moOde also support splitting the audio with a loopback. The output of the loopback device is intended to be used for visualization extensions.
Below are the alsa configuration provided with the loopback on. In this case alsa plughw is always used, mainly to correct bitdepth when required. Notice that the last configuration isn’t supported for now.

alsa configuration with loopback


We reached the end of the article and I hope you now have a better picture about how the moOde audio infrastructure is working.