Moode Audio Player for Raspberry Pi

Thanks for the quick reply

Code:
pi@moode:~ $ mount
/dev/sda1 on / type ext4 (rw,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=469536k,nr_inodes=117384,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
/dev/sdb1 on /media/USB type vfat (rw,nosuid,nodev,noexec,noatime,nodiratime,sync,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks)
/dev/mmcblk0p2 on /media/4D32-1997 type vfat (rw,nosuid,nodev,noexec,noatime,nodiratime,sync,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks)
/dev/sda2 on /mnt/null1 type ext4 (rw,nodev,noexec,noatime,nodiratime,data=ordered)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=94776k,mode=700,uid=1000,gid=1000)
The boot is on the microSD card, root is on a USB flash drive so I modified /etc/fstab accordingly (also the /dev/sda2 mount is added by me).

Code:
pi@moode:~ $ ./mlog.sh
20160915 231915 worker: Startup
20160915 232006 engine-mpd: Connect
20160915 232006 engine-mpd: Session loaded
20160915 232006 openMpdSocket(): could not connect to MPD
20160915 232006 engine-mpd: Connection to mpd failed
20160915 232007 worker: Host (moode)
20160915 232007 worker: Hdwr (Pi-2B 1GB)
20160915 232007 worker: Arch (armv7l)
20160915 232007 worker: Krnl (4.4.19-v7+)
20160915 232007 worker: OS   (moodeOS 1.0)
20160915 232008 worker: Rel  (Moode 2.7 2016-08-28)
20160915 232008 worker: Upd  (None)
20160915 232008 worker: MPD  (0.19.19)
20160915 232008 worker: Session loaded
20160915 232008 worker: Debug logging (on)
20160915 232008 worker: File check...
20160915 232008 worker: File check ok
20160915 232017 worker: Auto-shuffle deactivated
20160915 232017 engine-mpd: Connect
20160915 232017 engine-mpd: Session loaded
20160915 232017 openMpdSocket(): could not connect to MPD
20160915 232017 engine-mpd: Connection to mpd failed
20160915 232017 worker: USB sources (4D32-1997)
20160915 232017 worker: MPD started
20160915 232017 worker: wlan0 does not exist
20160915 232017 worker: Audio (I2S audio device)
20160915 232017 worker: Audio (Audiophonics ES9023 DAC)
20160915 232018 worker: ALSA outputs unmuted
20160915 232018 worker: ALSA mixer name (Digital)
20160915 232018 worker: MPD volume control (disabled)
20160915 232021 engine-mpd: Connect
20160915 232021 engine-mpd: Session loaded
20160915 232022 worker: MPD output 1 ALSA default (enabled)
20160915 232022 worker: MPD output 2 ALSA crossfeed (disabled)
20160915 232022 engine-mpd: Generating enhanced metadata
20160915 232022 engine-mpd: Metadata returned to client
20160915 232022 worker: Hdwr volume controller not detected
20160915 232022 engine-mpd: Connect
20160915 232022 engine-mpd: Session loaded
20160915 232022 engine-mpd: Idle
20160915 232022 engine-mpd: Idle timeout event=(changed: mixer)
20160915 232022 engine-mpd: Generating enhanced metadata
20160915 232022 engine-mpd: Metadata returned to client
20160915 232022 worker: Volume level (0) restored
20160915 232022 worker: wlan0 address not assigned
20160915 232022 worker: eth0 exists
20160915 232022 engine-mpd: Connect
20160915 232022 engine-mpd: Session loaded
20160915 232022 engine-mpd: Idle
20160915 232022 worker: eth0 (192.168.2.14)
20160915 232022 worker: NAS sources (mountall initiated)
20160915 232022 worker: MPD consume reset to off
20160915 232022 worker: Watchdog started
20160915 232022 worker: End startup
20160915 232022 worker: Ready

Hi,

I'd suggest testing with a stock image. If issue occurs then it might be possible to debug.

-Tim
 
Thanks Tim.
I just followed your instructions and am now listening to some great blues with no wire tethering my pi to my router. The last time I had time to play with this was before you added the on/off capabilities for the on board WiFi and I was probably not blacklisting the on board WiFi properly. Your support for this player has been second to none.
Graham

Hi Graham,

Thanks for the nice compliment! Much appreciated and glad to hear WiFi is working :)

-Tim
 
Hello Tim.

First of all, let me congratulate you for the amazing work you did with MoodeAudio. I'm currently using it on a Raspberry Pi Zero connected to a generic PCM5102 DAC, and it's been working amazingly well.

In the meantime, I was also able to make the same DAC work with an Orange Pi Lite (uses an AllWinner H3 processor) by enabling the I2S pins in this board and using a Debian Jessie based distribution (Armbian). I would like to try to get MoodeAudio working on this board, at least for generic I2S DACs that don't need any special kernel drivers. Do you happen to distribute a source only package? Do you also have any instructions on which changes are need to a regular Linux distribution so that MoodeAudio works?

Thank you again for your amazing work.

Best.
 
Hello Tim.

First of all, let me congratulate you for the amazing work you did with MoodeAudio. I'm currently using it on a Raspberry Pi Zero connected to a generic PCM5102 DAC, and it's been working amazingly well.

In the meantime, I was also able to make the same DAC work with an Orange Pi Lite (uses an AllWinner H3 processor) by enabling the I2S pins in this board and using a Debian Jessie based distribution (Armbian). I would like to try to get MoodeAudio working on this board, at least for generic I2S DACs that don't need any special kernel drivers. Do you happen to distribute a source only package? Do you also have any instructions on which changes are need to a regular Linux distribution so that MoodeAudio works?

Thank you again for your amazing work.

Best.

Hi,

Thanks for the compliment! I really appreciate that :)

I don't publish the build recipe for moodeOS because doing so would create a another support vector for me. I also avoid cross-platform development because it's enough of a challenge to dev and test on just a single platform!

Regards,
Tim
 
ALSA Setting won't save

Hello,

I hope this is not an annoying question:

I have an RPI2 with a PCM5122 Picobber I2S dac from Geekeroo. Sound is very good. Set up is stable using the Audiophionics 5122 I2S setting.

My problem is that I can't seem to save any of the ALSA related settings like the volume or resampling. i will set it, for example, to disable the volume, and set it to resample 24/192, then apply and reboot and my settings go right back to the defaults of volume:software, and Resample:disable

Am I doing something wrong here? Or do I just need to re-flash my Micro SD card and reload Moode?

Thanks for your help!

Best,
John
 
Hello,

I hope this is not an annoying question:

I have an RPI2 with a PCM5122 Picobber I2S dac from Geekeroo. Sound is very good. Set up is stable using the Audiophionics 5122 I2S setting.

My problem is that I can't seem to save any of the ALSA related settings like the volume or resampling. i will set it, for example, to disable the volume, and set it to resample 24/192, then apply and reboot and my settings go right back to the defaults of volume:software, and Resample:disable

Am I doing something wrong here? Or do I just need to re-flash my Micro SD card and reload Moode?

Thanks for your help!

Best,
John

Hi John,

Does the manufacturer of that board specify which I2S driver to use?

-Tim
 
Hello Tim,

Thanks for your speedy reply!

No, Geekeroo has no info on their site about drivers, other than they say it will work with Volumio.

I had read that the Picobber and Audiophonics PCM5122 boards were identical, and looking at images, they do look exactly a like, right down to the silk-screening. Audiophonics was sold out when I wanted to order, so that is how I ended up with the Geekeroo Picobber version.

The volume and resample settings should work without some other secret fiddling, correct? Just set, apply, and reboot?

I may just re-flash the Moode image to see what happens. Now that I think about it, I couldn't save the resampling setting when I was using the Hifiberry Digi board with the correct driver. Maybe my Moode image is a slightly corrupted.

Best,
John
 
Hello Tim,

Thanks for your speedy reply!

No, Geekeroo has no info on their site about drivers, other than they say it will work with Volumio.

I had read that the Picobber and Audiophonics PCM5122 boards were identical, and looking at images, they do look exactly a like, right down to the silk-screening. Audiophonics was sold out when I wanted to order, so that is how I ended up with the Geekeroo Picobber version.

The volume and resample settings should work without some other secret fiddling, correct? Just set, apply, and reboot?

I may just re-flash the Moode image to see what happens. Now that I think about it, I couldn't save the resampling setting when I was using the Hifiberry Digi board with the correct driver. Maybe my Moode image is a slightly corrupted.

Best,
John

Hi John,

No double-secret settings, lol.

1) System config: select I2S driver then press SET
2) reboot
3) MPD config: verify Audio output = "I2S audio driver" then press APPLY. Not necessary to reboot.

Leave MPD set to Software volume, no resampling and confirm that radio station plays. Then set to Hardware volume, resampling, etc.

-Tim
 
Hi Graham,

Try the following:

1) plug in WiFi adapter
2) System config, Maintenance section, Pi3 WiFi-BT adapter OFF, SET
3) Network config, enter WiFi (wlan0) SSID and password, APPLY
4) reboot

To return to using Pi3 integrated adapter

1) System config, Maintenance section, Pi3 WiFi-BT adapter ON, SET
2) shutdown
3) unplug WiFi adapter
4) power up

-Tim
thanks for responding
ok I followed steps 1 through 4
see attached screen capture that shows wifi network is recognized
after reboot I loose connection when I pull Ethernet cable
 

Attachments

  • moode_network.jpg
    moode_network.jpg
    55.7 KB · Views: 216
thanks for responding
ok I followed steps 1 through 4
see attached screen capture that shows wifi network is recognized
after reboot I loose connection when I pull Ethernet cable

Hi,

Change eth0 to DHCP, APPLY then unplug the cable.

If you are going to use a static ip address for eth0 at some point then Primary DNS should be set to same as Gateway addr 192.168.1.1, leave secondary DNS blank.

-Tim
 
First impressions going from Volumio -> Rune -> Moode

I have Raspberry Pi's with HifiBerry and IQaudIO cards. I started on Volumio, moved to Rune, and now I just installed Moode on my living room player. It seems like Moode has the most advanced UI as well as the most development. Rune has much better (5-10X faster) performance by using Redis. Ideally I would like to have my players access the same shared Percona (MySQL) or Redis DB running on my ZFS NAS. Migrating from a local SQLlite to a remote MySQL instance should eliminate the performance issues. I briefly looked at Moode maybe 6 months ago and was surprised by the positive and helpful response on the forum to a post. Seems like a way better community.

Rune has a dedicated app which makes life easy. I tried MPDroid but it thinks all my single file flacs are just songs.

I figured out that you have to enable Configure -> Services -> External metadata to get "currentsong.txt working.

root@moodeLV:/var/www# df /var/www/currentsong.txt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 1537808 1170576 276244 81% /

This is bad for two reasons:
1. Statistics should be in /proc
2. This will kill an SD card rather quickly. I wrote on blog post that talks about an SSD I killed in 2 months by excessive writes here: https://www.sendthemtomir.com/blog/what-is-idempotence

I think writing this to /proc/moode/currentsong will require a small C kernel module. c - kernel module write to proc - Stack Overflow This looks prety simple and once created would allow php to just write to it instead of the SD card. It would be easy enough to symlink the existing location of /var/www/currentsong.txt to /proc/moodle/status. It might make sense to have /proc/moodle/currentsong and /proc/moodle/status (volume, mute, state).

I love that this is here for two features I would like to add:
1. A SPI TFT display for cover-art / artist / album / song info
2. A relay to shut off my amp after 2 minutes of being stopped (or 5 minutes of being paused). It would be great to also have a time field that would relate to "play", "pause", or stop. This should not be added until currentsong is moved to a RAM disk (/proc)

My files are organized on the file-system. It would be nice to have an option to remove the "Library" tab; I just don't need it.

It would be nice to support syslog-NG and offloading the logs to a logging server. Less writes to the SD card = longer life before corruption. Probably not a popular request, and this is possibly something I could do down the road.

In browse the top left back arrow looks just like the back button in Chrome; I've hit the browser back numerous times meaning to hit the other back button. This was in Rune, but the UI is the exactly the same.

Search currently searches everything, which makes a huge mess, especially considering all my music is in single file flac's. The flacs are almost worthless without the associated cuesheet, I don't want to play an album as one 50 minute song. It would be nice if there was a pull-down that offered All (like right now), artist, album, song. There should be some config for directory structure. Search under Browse should search filenames/paths, not Library metadata.

The cuesheet support in minimal, but this is the same on all players. I would like to find time to clean this up so under browse the flac and cue are hidden is there is a cue, and instead the songs are independently listed. Also selecting "Play" (Under Browse) on an album with a single file flac and it's associated cuesheet in the directory just plays the entire album flac as one song ignoring the cuesheet.

Moode is looking good, thanks for all the effort everyone has put into this project!
 
Error Code 3 WinSCF

When copying m3u playlists from a backup folder in Win10 pc to /var/lib/mpd/playlists I get Error Code 3. This also happens when I try to create a new file within WinSCF panel. No issue copying radio stations.

This is with moode v2.7, never had this problem before with moode v2.4.

I've cleaned pc registry to no avail. Is there something else I can do?
 
I have Raspberry Pi's with HifiBerry and IQaudIO cards. I started on Volumio, moved to Rune, and now I just installed Moode on my living room player. It seems like Moode has the most advanced UI as well as the most development. Rune has much better (5-10X faster) performance by using Redis. Ideally I would like to have my players access the same shared Percona (MySQL) or Redis DB running on my ZFS NAS. Migrating from a local SQLlite to a remote MySQL instance should eliminate the performance issues. I briefly looked at Moode maybe 6 months ago and was surprised by the positive and helpful response on the forum to a post. Seems like a way better community.

Rune has a dedicated app which makes life easy. I tried MPDroid but it thinks all my single file flacs are just songs.

I figured out that you have to enable Configure -> Services -> External metadata to get "currentsong.txt working.

root@moodeLV:/var/www# df /var/www/currentsong.txt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 1537808 1170576 276244 81% /

This is bad for two reasons:
1. Statistics should be in /proc
2. This will kill an SD card rather quickly. I wrote on blog post that talks about an SSD I killed in 2 months by excessive writes here: https://www.sendthemtomir.com/blog/what-is-idempotence

I think writing this to /proc/moode/currentsong will require a small C kernel module. c - kernel module write to proc - Stack Overflow This looks prety simple and once created would allow php to just write to it instead of the SD card. It would be easy enough to symlink the existing location of /var/www/currentsong.txt to /proc/moodle/status. It might make sense to have /proc/moodle/currentsong and /proc/moodle/status (volume, mute, state).

I love that this is here for two features I would like to add:
1. A SPI TFT display for cover-art / artist / album / song info
2. A relay to shut off my amp after 2 minutes of being stopped (or 5 minutes of being paused). It would be great to also have a time field that would relate to "play", "pause", or stop. This should not be added until currentsong is moved to a RAM disk (/proc)

My files are organized on the file-system. It would be nice to have an option to remove the "Library" tab; I just don't need it.

It would be nice to support syslog-NG and offloading the logs to a logging server. Less writes to the SD card = longer life before corruption. Probably not a popular request, and this is possibly something I could do down the road.

In browse the top left back arrow looks just like the back button in Chrome; I've hit the browser back numerous times meaning to hit the other back button. This was in Rune, but the UI is the exactly the same.

Search currently searches everything, which makes a huge mess, especially considering all my music is in single file flac's. The flacs are almost worthless without the associated cuesheet, I don't want to play an album as one 50 minute song. It would be nice if there was a pull-down that offered All (like right now), artist, album, song. There should be some config for directory structure. Search under Browse should search filenames/paths, not Library metadata.

The cuesheet support in minimal, but this is the same on all players. I would like to find time to clean this up so under browse the flac and cue are hidden is there is a cue, and instead the songs are independently listed. Also selecting "Play" (Under Browse) on an album with a single file flac and it's associated cuesheet in the directory just plays the entire album flac as one song ignoring the cuesheet.

Moode is looking good, thanks for all the effort everyone has put into this project!

Hi,

Great analysis and suggestions. Couple of things:

1) The user feedback I receive in forums and via emails indicates that generally Moode performs well on entre family of Raspberry boards. I'll look into Redis but u need to explain in detail what part of Moode would experience 10X better performance. Is it boot time, UI response?

2) SD card wear has not been an issue but poor quality SD cards are YMMV. Personally, I've only experienced one SD card failure in two years. I use premium Sandisk Ultra cards and my 6 systems get completely hammered every week with software reloads, 7/24 playback runs, MPD database rebuilds, huge logs, pull-the-plug, 100's of reboots and cold starts, SD card swaps, you name it.

3) Locally attached displays, power buttons, etc are a DIY user responsibility, however Moode has a nice LCD updater feature that can automatically run a script whenever song metadata, volume or playback state change. Script needs to just parse currentsong,txt.

4) Browse panel should show flac and cue file and let u add the cue file to Playlist which will list the individual tracks. I haven't tested cue in a while so if basic cue is broken I can look into it.

-Tim
 
I'm bashing my head against a brick wall...

New Pi3, new copy of R27

Boots fine, connect to MOODE SSID perfectly, get the standard display.

When I go to config network to change the SSID from AP to 'HOME', I get an error message telling me to 'please use the correct format' (or something similar).

I have tried it three times, with three different SD cards and have re-downloaded the img file, just to be sure.
 
I'm bashing my head against a brick wall...

New Pi3, new copy of R27

Boots fine, connect to MOODE SSID perfectly, get the standard display.

When I go to config network to change the SSID from AP to 'HOME', I get an error message telling me to 'please use the correct format' (or something similar).

I have tried it three times, with three different SD cards and have re-downloaded the img file, just to be sure.

Hi Mike,

There is bug in the Network config html.

To fix, delete all the pattern="..." statements from the file

/var/www/templates/net-config.html

-Tim