moOde

Audio Config

I2S Audio Device

Named devices provide descriptive information and may also provide configurable driver and/or chip options accessible from the UI. Device Tree (DT) overlays provide an I2S interface for a device but without integrated UI access to any driver or chip options. Contact the device manufacturer for information on which overlay to use.


NOTE: Set both to "None" if using a USB audio device, Pi HDMI or Pi Headphone jack.
Auto-play will be turned off as part of updating this setting.
slave: If enabled, Boss and MiniBOSS DAC operate in slave mode required by Kali.
glb_mclk: If enabled, Kali MCLK is used and PLL for Piano 2.1 is disabled for best SQ.
NOTE: The options in this section cannot be changed while Multiroom Sender is On.
ALSA Options

Advanced Linux Sound Architecture (ALSA) is a software framework and part of the Linux kernel that provides an application programming interface (API) for sound card device drivers and audio applications.


Establish 0dB when MPD volume control is set to Software or Fixed, or when any Renderers are active.
NOTE: The HDMI port will be correctly set to 0dB instead of +4dB at 100%.
Default (plughw)
Perform automatic conversions if needed for example zero-pad the bit depth to a width supported by the audio device.
Enable a mechanism for creating a Loopback device that provudes a copy of the PCM stream.
Direct (hw)
No automatic conversions are performed. The audio device must support the output format or playback will not occur.
Supported by MPD, Bluetooth (inbound), Airplay and Spotify renderers and CamillaDSP.
NOTE: Loopback is not supported in Direct mode.
NOTE: Crossfeed, Parametric EQ and Graphic EQ output using plughw regardless of this setting.
The Loopback device provides a copy of the PCM stream being output to the audio device. The copy can be accessed by reading "hw:Loopback,1,0".
NOTE: Max sample rate is 384 kHz.
Set up multiroom audio sender and receivers.
NOTE: Requires Loopback to be ON.
MPD Options

Music Player Daemon (MPD) is a flexible, powerful, server-side application for playing music and is the primary audio application in moOde. MPD settings are configured via the EDIT button. They include Audio output, Volume type, SoX resampling and others.


General
 MPD
Start auto-shuffle random play if it was previously active or play last played item.
Auto-shuffle
When the last song in the Playlist has finished playing, Auto-shuffle adds two randomly selected songs from the music library to the end of the Playlist then repeats the process. This creates a continuous stream of music without growing the Playlist and having two tracks enables MPD Crossfade to be used. NOTE: Auto-shuffle replaces MPD random play as the method for the 'Random' button.
Play randomly selected track or whole album.
String of TAG VALUE pairs that Auto-shuffle uses to select the tracks being shuffled. Only one occurance of a given TAG is allowed. The filter is case insensitive and it performs a TAG contains VALUE substring match.
Ex:  genre "indie rock" artist coldplay
Ex:  filename "NAS/Music/Led Zeppelin"
Volume options
Sets the maximum amount the volume knob will advance when its clicked ahead of its current position.
Establishes the highest level that can be set by the Volume Knob and via vol.sh and rotvol.sh.
Display dB volume next to the 0-100 level in the volume knob.
Activates the triggerhappy key mapping daemon for USB volume knobs.
Refer to /etc/triggerhappy/triggers.d/media.conf for key/event mappings.
Enable a rotary encoder device to control MPD volume.
Driver args:
- poll_interval: Number of ms sleep for the volume update polling loop. Default = 100.
- accell_factor: Threshold (diff betw last/current enc pos) to determine whether to use 1 step or volume_step steps. Default = 2.
- volume_step: Number of steps to use when knob turns at fast rate. Default = 3.
- pin_a, pin_b: Broadcom SoC pin numbers. Default = 23, 24.
DSP options
MPD uses its audio buffer for crossfading thus there must be enough buffer space available to perform the requested number of seconds of crossfade for a given audio format.
NOTE: Set to 0 to disable crossfade.
700 Hz, 3.0 dB - Linkwitz
- Approximates an original Linkwitz crossfeeder with azimuth 40 degrees. Highest crossfeed level, lowest separation.
700 Hz, 4.5 dB - Bauer
- Approximates a virtual speaker placement with azimuth 30 degrees at about 3 meters distance.
800 Hz, 6.0 dB - Chu Moy
- Approximates a Chu Moy modified Linkwitz crossfeeder.
650 Hz, 10.0 dB - Jan Meier
- Approximates a Jan Meier natural crossfeeder. Lowest crossfeed level, highest separation.
Change the waveform on each channel from +/- to -/+.
HTTP streaming
Provide MPD output as an HTTP stream on the designated port.
Default port is 8000. Port number range is 8000 - 9000.
Encode the stream using either FLAC at compression level 0 (fastest, least compression) or LAME (MP3) at 320 kbps.
Equalizers

The Equalizers are supported by MPD and the Airplay and Spotify renderers.
NOTE: The Equalizers, Crossfeed, and Polarity inversion are mutually exclusive. Enabling one will disable the SET button on the others.


Three x Four Mitra-Regalia peaking equaliser filters in series; a vector arithmetic re-implementation of Fons Adriaensens "Parametric1" equaliser[fafil] with minor differences. Parallelisation of the serial filter organisation causes the output to lag by three samples. This EQ uses the @bitlab custom eqfa12p component of the CAPS suite of DSP programs written by Tim Goetze
Note: Equalizer processing applies to MPD, Airplay and Spotify output.
 EQ curve
A classic octave-band, constant-Q, second-order filter design. Frequency bands centered above Nyquist are automatically disabled. This EQ uses the Eq10X2 component of the CAPS suite of DSP programs written by Tim Goetze.
Note: Equalizer processing applies to MPD, Airplay and Spotify output.
 EQ curve
CamillaDSP is a general purpose tool for routing and filtering sound. It can be used for example for building crossovers for active speakers, or for performing room correction. CamillaDSP was written by Henrik Enquist and integrated into moOde by @bitlab.
Feature summary:
- IIR filters (BiQuad)
- FIR filters (Convolution via FFT)
- Built-in sample rate converter
- Filters can be chained freely
- Flexible routing
- Simple YAML configuration
- All calculations done with 64-bit floats
- ARM Neon 64-bit instruction set is used
- Pipeline editor with expert mode
Configurations can be managed at the CamillaDSP settings page.
  CamillaDSP settings
Audio Renderers

The audio renderers are playback applications separate from MPD. When a client connects to one of the renderers MPD will stop and the renderer will begin playback. When the client stops or disconnects MPD can resume playback depending on the "Resume MPD" setting.


Bluetooth renderer
Bluetooth controller by Johan Hedberg (BlueZ) and Arkadiusz Bokowy (Bluez-alsa).
WARNING: A Bluetooth adapter must be physically attached and enabled before turning this ON otherwise moOde startup will fail.
The pairing agent automatically accepts incoming pairing/connect requests from clients and eliminates the need to perform a manual SCAN from the BlueZ screen.
Allow the Bluetooth speaker to be shared by multiple clients.
Resume MPD playback after Bluetooth client disconnects.
 BlueZ config
 Bluetooth controller
Airplay renderer
Shairport-sync by Mike Brady, the wonderful fork of the original Shairport by James "Abrasive" Laird.
Resume MPD playback after Airplay client stops playing.
 Airplay config
 Airplay renderer
Spotify renderer
librespot by the Librespot Organization, the wonderful fork of the original librespot by Paul Lietar
NOTE: This service requires a Spotify Premium account.
Resume MPD playback after Spotify Connect client stops playing.
 Spotify config
 Spotify renderer
 Credential cache
Squeezelite renderer
Squeezelite renderer by Adrian Smith and Ralph Irving (@triode).
NOTE: This service requires Logitech Media Server (LMS) to be running on the network.
Resume MPD playback after LMS power off.
 Squeezelite config
 Squeezelite renderer
RoonBridge renderer
This component is provided by the manufacturer. Visit their website for installation instructions.
RoonBridge renderer by the Roon Audio team. WARNING: 100% volume when playback starts has occurred during testing when Roon endpoint volume control is configured to use "Device volume".
Resume MPD playback after RoonBridge is disconnected.
 RoonBridge renderer
UPnP/DLNA

These applications allow moOde to function as a UPnP media renderer, media server and a browser for remote media servers.


upmpdcli (UPnP Client for MPD) by Jean-Francois Dockes.
- Supports Open Home Media (ohMedia).
- Radio station url's can be added to /etc/upmpdcli-radio.conf.
 UPnP config
 UPnP renderer
DLNA media server (miniDLNA) by Justin Maggard.
 DLNA database
View Database status
NOTE: This component is a long since unmaintained project and therefore YMMV when using it. Djmount by Rémi Turboult. Mount UPnP/DLNA Media Servers as FUSE file systems to /mnt/UPNP.
Use Library Config to create and index a UPnP music source.
 UPnP browser
Reconnect
Reconnect System restarted
Reconnect System shut down