PeppyMeter

Hi ,
I found it strange that even I have configured peppyalsa in mpd.conf I hear sound but the meter is not functional meaning that pepyalsa is configured ok but maybe somthing is wrong with pipe or no because it is working from usr/share..i think it is something with mpd ,,

Regards
 
Hello ,

I have tried all combinations , I also have a post in volumio comunity
.Maybe you have an idee :

1. aplay -l
Code:
volumio@volumio:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 4/4
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 3/3
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
card 5: E30 [E30], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
volumio@volumio:~$

2.mpd.conf from /etc/
Code:
volumio@volumio:~$ cat /etc/mpd.conf

# Volumio MPD Configuration File

# Files and directories #######################################################
music_directory         "/var/lib/mpd/music"
playlist_directory              "/var/lib/mpd/playlists"
db_file                 "/var/lib/mpd/tag_cache"
log_file                        "/var/log/mpd.log"
#pid_file                       "/var/run/mpd/pid"
#state_file                     "/var/lib/mpd/state"
#sticker_file                   "/var/lib/mpd/sticker.sql"
###############################################################################

# General music daemon options ################################################
user                            "mpd"
group                          "audio"
bind_to_address         "any"
#port                           "6600"
#log_level                      "default"
gapless_mp3_playback                    "no"
#save_absolute_paths_in_playlists       "no"
#metadata_to_use        "artist,album,title,track,name,genre,date,composer,performer,disc"
auto_update    "yes"
#auto_update_depth "3"
###############################################################################
# Symbolic link behavior ######################################################
follow_outside_symlinks "yes"
follow_inside_symlinks          "yes"
###############################################################################
# Input #######################################################################
#
input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}
###############################################################################

# Decoder ################################################################





###############################################################################

# Audio Output ################################################################

resampler {
                plugin "soxr"
                quality "high"
                threads "1"
}

audio_output {
                type            "alsa"
                name            "peppyalsa"
                device          "peppyalsa"
                dop                     "no"

}

audio_output {
    type            "fifo"
    enabled         "no"
    name            "multiroom"
    path            "/tmp/snapfifo"
    format          "44100:16:2"
}

2.1 mpd.conf volumio specific :
Code:
 cat/volumio/app/plugins/music_service/mpd/mpd.conf.tmpl
# Volumio MPD Configuration File

# Files and directories #######################################################
music_directory         "/var/lib/mpd/music"
playlist_directory              "/var/lib/mpd/playlists"
db_file                 "/var/lib/mpd/tag_cache"
log_file                        "/var/log/mpd.log"
#pid_file                       "/var/run/mpd/pid"
#state_file                     "/var/lib/mpd/state"
#sticker_file                   "/var/lib/mpd/sticker.sql"
###############################################################################

# General music daemon options ################################################
user                            "mpd"
group                          "audio"
bind_to_address         "any"
#port                           "6600"
#log_level                      "default"
gapless_mp3_playback                    "${gapless_mp3_playback}"
#save_absolute_paths_in_playlists       "no"
#metadata_to_use        "artist,album,title,track,name,genre,date,composer,performer,disc"
auto_update    "yes"
#auto_update_depth "3"
###############################################################################
# Symbolic link behavior ######################################################
follow_outside_symlinks "yes"
follow_inside_symlinks          "yes"
###############################################################################
# Input #######################################################################
#
input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}
###############################################################################

# Decoder ################################################################

"${ffmpeg}"

"${sacdiso}"

###############################################################################

# Audio Output ################################################################

${sox}

audio_output {
                type            "alsa"
                name            "peppyalsa"
                device          "peppyalsa"
                dop                     "${dop}"
                ${mixer}
                ${format}
                ${special_settings}

}





audio_output {
    type            "fifo"
    enabled         "no"
    name            "multiroom"
    path            "/tmp/snapfifo"
    format          "44100:16:2"
}

#replaygain                     "album"
#replaygain_preamp              "0"
volume_normalization            "${volume_normalization}"
###############################################################################

# MPD Internal Buffering ######################################################
audio_buffer_size               "${audio_buffer_size}"
buffer_before_play              "${buffer_before_play}"
###############################################################################


# Resource Limitations ########################################################
#connection_timeout             "60"
max_connections                 "20"
max_playlist_length             "81920"
max_command_list_size           "81920"
max_output_buffer_size          "81920"
###############################################################################

# Character Encoding ##########################################################
filesystem_charset              "UTF-8"
id3v1_encoding                  "UTF-8"
###############################################################################
audio_output {
        type            "fifo"
        name            "mpd_oled_FIFO"
        path            "/tmp/mpd_oled_fifo"
        format          "44100:16:2"
}
3. asound.conf from /etc
Code:
volumio@volumio:~$ cat /etc/asound.conf

pcm.!default {
        type plug
        slave.pcm "softvol_and_peppyalsa"
}
ctl.!default {
        type plughw
        card 5
}
pcm.peppyalsa {
        type meter
        slave.pcm "plughw:5,0"
        scopes.0 peppyalsa
}
pcm.softvol_and_peppyalsa {
        type softvol
        slave.pcm "peppyalsa"
        control {
                name "PCM"
                card 5
        }
}
pcm_scope.peppyalsa {
        type peppyalsa
        decay_ms 400
        meter "/home/volumio/myfifo"
        meter_max 100
        meter_show 0
        spectrum "/home/pi/myfifosa"
        spectrum_max 100
        spectrum_size 30
}
pcm_scope_type.peppyalsa {
        lib /usr/local/lib/libpeppyalsa.so
}

4.asoundrc from /home/volumio
Code:
volumio@volumio:~$ cat .asoundrc

pcm.!default {
        type plug
        slave.pcm "softvol_and_peppyalsa"
}
ctl.!default {
        type plughw
        card 5
}
pcm.peppyalsa {
        type meter
        slave.pcm "plughw:5,0"
        scopes.0 peppyalsa
}
pcm.softvol_and_peppyalsa {
        type softvol
        slave.pcm "peppyalsa"
        control {
                name "PCM"
                card 5
        }
}
pcm_scope.peppyalsa {
        type peppyalsa
        decay_ms 400
        meter "/home/volumio/myfifo"
        meter_max 100
        meter_show 0
        spectrum "/home/pi/myfifosa"
        spectrum_max 100
        spectrum_size 30
}
pcm_scope_type.peppyalsa {
        lib /usr/local/lib/libpeppyalsa.so
}
pcm.dsp0 peppyalsa

Thanks for you help
 
Hello ,

I guess is mpd :
Code:
volumio@volumio:~$ ps -elf | grep mpd
4 D root       719     1  3  80   0 - 14366 -      20:02 ?        00:02:28 /usr/local/bin/mpd_oled -o 6 -b 21 -g 1 -f 15 -P s
4 S mpd        774     1  0  80   0 - 44744 -      20:02 ?        00:00:10 /usr/bin/mpd --no-daemon
4 S volumio   1708     1  0  80   0 - 25665 futex_ 20:02 ?        00:00:09 /usr/bin/upmpdcli -c /tmp/upmpdcli.conf
0 S volumio   7695  2003  0  80   0 -   648 pipe_w 21:14 pts/0    00:00:00 grep mpd [/COD]

Thanks for  help
 
I have in /etc/passwd:
Code:
mpd:x:110:29::/var/lib/mpd:/bin/false
volumio:x:1000:1000:volumio:/home/volumio:/bin/bash

I have also the mpd_oled plugin which is working :

mpd_oled/INSTALL_VOLUMIO.md at master * antiprism/mpd_oled * GitHub
and here I saw that the configuration if audio player is done :
Configure copy of audio
The MPD audio output needs to be copied to a named pipe, where Cava can read it and calculate the spectrum. This should be configured in /etc/mpd.conf, but changes to this file will be overwritten by Volumio. Instead, edit the mpd.conf template file

sudo nano /volumio/app/plugins/music_service/mpd/mpd.conf.tmpl
And add the following lines at the end

Code:
audio_output {
        type            "fifo"
        name            "mpd_oled_FIFO"
        path            "/tmp/mpd_oled_fifo"
        format          "44100:16:2"
}
After editing the file it is important to force Volumio to regenerate mpd.conf and restart MPD. To do this, open the Web UI and go to Settings > Playback Options then click on Save in the Audio Output section.

So to add the peppymeter fifo in mpd conf directly like mpd_oled does ? f yes how ?
Mnay thanks for your help
 
I would start with the difference /home/volumio/myfifo, /home/pi/myfifosa, and /tmp/mpd_oled_fifo . While every user can create and use a file in /tmp, your mpd user is allowed to create and access files in /home/volumio and /home/pi only only very unlikely.
 
For peppymeter is used /home/volumio/myfifo , /tmp/mpd_oled_fifo is used by mpd_oled plugin it does nothing to do with peppymeter . I gave only as an example .
How should I continue ? I do not realy understand . I am not such experienced user in linux
 
The difference is access permissions. Your alsa process runs under the mpd user, yet the fifos are in home dirs of other users. How about trying to configure them into a directory which all users can access, e.g. /tmp, would it help?
 
Last edited:
Hi,
Now I have understood, I guess that's what also the mpd oled was adding the fifo part in the mpd conf directly as tmp folder.. To be accessible mpd user.. But if I know how to do it... Or will be great but like I said I am not experienced user.
Thanks a lot for finding the root cause of the issue
 
Fifos need two processes - one creates it and writes into it, another reads from it. When placing fifos into /tmp (where every user can write files - look at output of command ls -ld /tmp ) and creating them with appropriate permissions (e.g. everyone read), the communication can be established.

The creating/writing process is configured in the alsa config. I guess the peppy meter is configured in PeppyMeter/config.txt at master * project-owner/PeppyMeter * GitHub .
 
Hello my dear friends ,

I am so glad that the peppymeter plugin is fully working on my setup .
Like phoman pointed out and the end it was problem of integration fifo with mpd .
I have perfomed exactly the steps that you sugested and it working .
I am so glat that it is working .
Maybe this great plugin can be updated for Volumio OS

PS: now remain only the issue with hanging the pepymeter picture when killing the peppymeter process. It does not switching to Volumio UI just show the meter picture

My best regards .
Florin
 
Last edited: