• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

moOde audio player for Raspberry Pi

Doomed. We're all doomed. This AI is eating up all the available RAM on the planet; everybody wants more, and we, the mere mortals (and mortals can only die - cit.) have to pay the consequencies. And not only the consequencies... I mean... the new RAM too!
 
Doomed. We're all doomed. This AI is eating up all the available RAM on the planet; everybody wants more, and we, the mere mortals (and mortals can only die - cit.) have to pay the consequencies. And not only the consequencies... I mean... the new RAM too!

Once everyone realizes AI is unreliable and useless for anything technical, memory prices will return to normal. :D

It's OK for book summaries or basic math but I have had to reformat Moode installs several times following AI instructions offered by Perplexity in Terminal using SSH. The AI gives out instructions pretending it knows what to do. When it fails the AI comes back with a different code for the solution (that may likely fail as well). By this time, you run a 50% chance of having to reformat the drive and start from scratch. Even after Perplexity totally destroys the drive it never admits there is a problem and says I hope you enjoy these new features. It's like being in a comedy and you are the joke. I learned not to follow that rabbit hole logic very far. Verify first, before accepting any AI input as helpful.

If people rely on AI for anything important, the world is in trouble.
 
Hola chicos, soy nuevo en el foro. Estoy intentando usar moOde para ver cómo funciona. La primera impresión es buena, pero dependo mucho de los archivos FIFO. Mi pregunta es: ¿cómo puedo hacer que moOde guarde la configuración FIFO para que no se borre cada vez que se reinicia? Es decir, ¿cuándo tendremos integración nativa con Snapserver? Disculpen si esto ya se ha discutido y no lo he visto. Gracias.
 
@ciky75
hi, I'd like to remind you that it's better to post in English, here around.
Then, you might want to join moOde's forum; there is at least one discussion about snapcast.
 
Hi,

moOde 10.1.1 (Trixie) is available in the Media Player OS section of the Raspberry Pi Imager or as a direct download from the Release archive at moodeaudio.org. Visit the Forum for more information https://moodeaudio.org/forum/showthread.php?tid=8531&pid=70742#pid70742

Enjoy the new Radio station track covers feature :)

moode10-1024x768.png
 
If you have been considering a new Raspberry Pi for your Moode Audio system this weekend looks promising.
MicroCenter has the Raspberry Pi on sale for a limited period. In store only.
These discounts drop prices closer to levels prior to the Feb 2026 price increase.

Raspberry Pi 5 4GB - 64.99 (Ideal for Moode Audio)

Raspberry Pi 5 8GB - $89.99

Raspberry Pi 5 16GB - $139.99

For Moode use, the 4GB model is ideal. It provides plenty of memory.
If a video server is in your future consider the 8GB model.
And if you want to go a little crazy get the 16GB model for AI processing?

Enjoy!
 
Hi,

Here's a nice project I'm working on thats based on the new IanCanada StationPi CM5 integration board.

cm5 plus protodac.png


Enjoying that great ProtoDAC sound :-)

Platform
- Raspberry Pi CM5 2GB RAM, 32 GB eMMC, WiFi/Bluetooth
- Raspberry Pi CM5 Passive Heatsink
- Raspberry Pi CM5 I-O board
- Raspberry Pi CM5 External WiFi Antenna (not used at this time)
- IanCanada StationPi CM5 integration board
- IanCanada FiFoPi Q7 III
- Pi4 official Power Supply

Audio
- ProtoDAC TDA1387 X8 NOS DAC

Other
- Moode is loaded into the CM5 eMMC RAM
- CPU temps are around 40 - 45C

Some nice aspects of the CM5 Integration board
- Power filtering for both 3.3V and 5V
- Standard Raspberry Pi4/5 PSU for entire stack
- Lots of other power, audio and peripheral options
https://iancanada.ca/blogs/news/raspberrypi-cm5-based-streamer-dac-project-diy-guide

On the TODO list
- Clear acrylic top and bottom plates
- Enable power button on CM5 integration board (when Ian publishes the manual)
- Locally attached Pi Touch 2 for PeppyMeter
 
Hi there everyone,

I have a question - as I understand, all moOde playback outputs to _audioout and this is accessed in CamillaDSP as Stdin input. I want to resample it to match my Hifiberry DAC8x, let's say 32/192k. When using AsyinSinc and enable_rate_adjust set to "yes", rate adjust instantly starts to drop to 0.9950 and stays there (probably lowest max value). I'm curious why this is happening?
 
Last edited:
When CamillaDSP is ON moode outputs PCM to the alsa_cdsp plugin which then pipes the PCM stream to CamillaDSP for processing. The alsa_cdsp plugin performs automatic source rate switching.

MPD - > alsa_cdsp -> CamillaDSP -> device
 
Thank you, Tim! So adjusting rate in CamillaDSP in this case is unnecessary, just use resampler to preferred rate? MPD playback can be resampled with SoX, but for Spotify and other sources CamillaDSP is the only option?
 
If you want all sources to be resampled then use CamillaDSP resampling.

Do you need to use resampling for a specific reason?
 
My theory is that it gives more headroom for filters in CamillaDSP. Or I got that wrong?
 
Hullo all, and thank you Mr. Curtis (and co) for your superb work. I wondered whether anyone has come across a way to "force" MPD in Moode to output a fixed number of channels >= to the number of channels in the source?
My use-case is that I have a mixture of monophonic, stereophonic, four (4.0), five (5.0) and six (5.1) channel source files. Five and one channel files do not play out via HDMI (on pi 4b), but this can be resolved via 1:2 and 5:6 channel mixers in CamillaDSP (for which thank you also Mr. Enquist!) Alas, mixers in CDSP require a fixed number of input channels, so I cannot use one CDSP configuration to handle all my source files.
Thus what I am looking for is a way to force MPD to output six channels: 1 passthrough channel +5 channels of silence for mono, 2 passthrough channels + 3 channels of silence for stereo, & cetera. I *think* (possibly incorrectly) I could do this by defining some kind of plug device or loopback, but the alsa configuration files I could see (e.g. /usr/share/alsa/alsa.conf and /etc/alsa/conf.d/_sndaloop.conf) are managed and overwritten by the operating system.
 
Hi! Just wanted to share how i added a Bluetooth remote to my Moode that are running on a Rpi4.
This is the BT remote I'm using and i bought it from Aliexpress very cheap .
1777546534141.png

Got the help from AI and i summarized what i did so maybe that can help someone that want to add a BT remote:


# Bluetooth Media Remote Setup for Moode Audio (RPi)

## Prerequisites

- Raspberry Pi running Moode Audio
- G20BTS Bluetooth remote (or similar)
- Connected display (optional, for CoverView)

## 1. Start Bluetooth Service

```bash
sudo systemctl start bluetooth
sudo systemctl enable bluetooth
```

## 2. Pair the Remote

```bash
bluetoothctl
```

Inside the bluetoothctl shell:

```
power on
agent on
default-agent
scan on
```

Put the remote in pairing mode, then when it appears:

```
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
```

Trusting ensures auto-reconnect after reboot.

## 3. Verify Input Events

```bash
sudo apt install evtest
sudo evtest
```

Select the G20BTS device from the list and press buttons to confirm keycodes.

### G20BTS Button Mapping

| Button | Keycode | Scancode |
|--------|---------|----------|
| Volume Up | KEY_VOLUMEUP (115) | c00e9 |
| Volume Down | KEY_VOLUMEDOWN (114) | c00ea |
| Play/Pause | KEY_PLAYPAUSE (164) | c00cd |
| Previous | KEY_PREVIOUSSONG (165) | c00b6 |
| Next | KEY_NEXTSONG (163) | c00b5 |
| Home | KEY_HOMEPAGE (172) | c0223 |
| Back | KEY_BACK (158) | c0224 |
| Up | KEY_UP (103) | 70052 |
| Down | KEY_DOWN (108) | 70051 |
| Left | KEY_LEFT (105) | 70050 |
| Right | KEY_RIGHT (106) | 7004f |
| OK/Center | KEY_COMPOSE (127) | 70065 |

## 4. Remap Center Button (Optional)

The center/OK button sends KEY_COMPOSE instead of KEY_ENTER. To remap:

```bash
sudo nano /etc/udev/hwdb.d/99-g20bts-remote.hwdb
```

Add:

```
evdev:input:b0005v1D5Ap*
KEYBOARD_KEY_70065=enter
```

Apply:

```bash
sudo systemd-hwdb update
sudo udevadm trigger
```

## 5. Install Triggerhappy and MPC

Moode uses MPD which doesn't listen for input events directly. Use triggerhappy to bridge keypresses to MPD commands:

```bash
sudo apt install triggerhappy mpc
```

## 6. Configure Triggerhappy

```bash
sudo nano /etc/triggerhappy/triggers.d/g20bts-remote.conf
```

```
KEY_PLAYPAUSE 1 /usr/bin/mpc -h localhost toggle
KEY_NEXTSONG 1 /usr/bin/mpc -h localhost next
KEY_PREVIOUSSONG 1 /usr/bin/mpc -h localhost prev
KEY_VOLUMEUP 1 /usr/bin/mpc -h localhost volume +5
KEY_VOLUMEDOWN 1 /usr/bin/mpc -h localhost volume -5
KEY_COMPOSE 1 /usr/bin/mpc -h localhost toggle
```

Restart triggerhappy:

```bash
sudo systemctl restart triggerhappy
```

## 7. Troubleshooting Triggerhappy

If `thd --dump /dev/input/event*` doesn't show events, find the correct device:

```bash
cat /proc/bus/input/devices
```

Look for "G20BTS" and note the event number, then test:

```bash
sudo thd --dump /dev/input/eventX
```

## 8. Display Configuration

If the connected display shows a "Bluetooth active" screen instead of playback info:

1. Open Moode web UI (`http://moode.local`)
2. Go to **Menu → Configure → Peripherals**
3. Toggle **CoverView** on
4. Restart Local Display

This will show album art and playback info on the connected display.

## 9. Fix Remote Not Working After Reboot

Triggerhappy starts before the Bluetooth remote reconnects, so it doesn't monitor the remote's input device. Fix this by restarting triggerhappy automatically when the remote connects.

Create a udev rule:

```bash
sudo nano /etc/udev/rules.d/99-g20bts-remote.rules
```

Add:

```
ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="G20BTS Keyboard", RUN+="/bin/systemctl restart triggerhappy"
```

Apply:

```bash
sudo udevadm control --reload-rules
```

Now after every reboot, once the remote reconnects, triggerhappy will automatically restart and pick it up.
 
Last edited:
Hullo all, and thank you Mr. Curtis (and co) for your superb work. I wondered whether anyone has come across a way to "force" MPD in Moode to output a fixed number of channels >= to the number of channels in the source?
My use-case is that I have a mixture of monophonic, stereophonic, four (4.0), five (5.0) and six (5.1) channel source files. Five and one channel files do not play out via HDMI (on pi 4b), but this can be resolved via 1:2 and 5:6 channel mixers in CamillaDSP (for which thank you also Mr. Enquist!) Alas, mixers in CDSP require a fixed number of input channels, so I cannot use one CDSP configuration to handle all my source files.
Thus what I am looking for is a way to force MPD to output six channels: 1 passthrough channel +5 channels of silence for mono, 2 passthrough channels + 3 channels of silence for stereo, & cetera. I *think* (possibly incorrectly) I could do this by defining some kind of plug device or loopback, but the alsa configuration files I could see (e.g. /usr/share/alsa/alsa.conf and /etc/alsa/conf.d/_sndaloop.conf) are managed and overwritten by the operating system.

Zip up a 5 ch and a mono file and then PM me a download link. I'll see if I can reproduce the issue on my end. One of my systems is a Pi-5 HDMI connected to a 5.1 channel Yammy AVR.

There are some channel options with MPD + SoX and ALSA can perform channel remapping.
 
Back
Top Bottom