OSMC latest version, Raspberry Pi 2, Linux Noob :(
Closed this issue · 9 comments
Hey RanzQ,
tryed a couple times to get your audio-effects working. Some other german mates are trying as well, but we can't get into it.
Maybe you could help a bit out?
first:
my hyperion config is located @ /etc/hyperion.config.json
the location of hyperion is /opt/hyperion
I moved all of your files into this folder.
root@Pi:/opt/hyperion# ls -l
total 44
-rw-r--r-- 1 osmc osmc 1073 Jul 25 2015 LICENSE
-rw-r--r-- 1 osmc osmc 3420 Jul 25 2015 README.md
drwxr-xr-x 2 root root 4096 Feb 6 18:44 bin
drwxr-xr-x 2 root root 4096 Feb 6 21:00 config
drwxr-xr-x 2 osmc osmc 4096 Feb 9 20:38 devkit
drwxr-xr-x 2 osmc osmc 4096 Feb 9 13:25 effects
drwxr-xr-x 4 osmc osmc 4096 Feb 9 13:09 hyperion-audio-effects-master
drwxr-xr-x 2 root root 4096 Feb 6 18:44 init.d
-rw-r--r-- 1 osmc osmc 5981 Jul 25 2015 main.py
-rw-r--r-- 1 osmc osmc 47 Jul 25 2015 requirements.txt
my /etc/modprobe.d/alsa-base.conf doesn't exists before i put in "snd-aloop index=-2". This is the whole content of this file now
root@Pi:/opt/hyperion# cat /etc/modprobe.d/alsa-base.conf
options snd-aloop index=-2
the .asoundrc was put into /root
this is what aplay -l tells me
root@Pi:/opt/hyperion# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
if i understand everything right, i have to put in the soundcard i'm actually using, so card 0, device 1 (HDMI).
here the content of .asoundrc
root@Pi:~# cat .asoundrc
pcm.!default {
type asym
playback.pcm "alsa_sink"
capture.pcm "alsa_monitor"
}pcm.alsa_sink {
type plug
slave {pcm "multi_dev"}
route_policy "duplicate"
}pcm.alsa_monitor {
type plug
slave {pcm "hw:Loopback,1,0"}
}pcm.multi_dev {
type multislaves.a.pcm "hw:0,1" # Match this to your sound card (aplay -l)
slaves.a.channels 2
slaves.b.pcm "hw:Loopback,0,0"
slaves.b.channels 2bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
alsa force-reload doesn't run :( i installed it this way
sudo apt-get install alsa-base alsa-utils
sudo reboot
sudo modprobe snd_bcm2835
sudo alsactl init
running your python script looks like this now.
root@Pi:/opt/hyperion# python main.py --config=/etc/hyperion.config.json
Exit by typing 'x' or 'exit'
[79, 80, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 62, 63]
[14, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 30](0, 255, 0)
(255, 0, 0)
[(0, 255, 0), (13, 241, 0), (26, 228, 0), (40, 214, 0), (53, 201, 0), (67, 187, 0), (80, 174, 0), (93, 161, 0), (107, 147, 0), (120, 134, 0), (134, 120, 0), (147, 107, 0), (161, 93, 0), (174, 80, 0), (187, 67, 0), (201, 53, 0), (214, 40, 0), (228, 26, 0), (241, 13, 0)]
Dunno what am I doing wrong. hyperion is just working like it does if i'm watching TV or a movie.
@nicedevil007 your alsa-config looks correct and you have the loopback enabled, read this and test gstreamer without python first: #9 (comment)
There might some other answers on that issue that could help too.
I've got a Pi2 lying aroung so I could install OSMC and try it myself but currently I'm too busy. :)
You can also debug the volumes by changing this line, set quiet=False
.
And you should start getting peak and decay levels like this:
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
Also make sure you music application uses default audio output, the alsa config then splits the audio stream to your HDMI and the loopback (and this python app listens for the loopback stream).
It doesn't seem to work for me neither now (I get only 0 levels), maybe some update has broken it or then my alsa-setup is fked up.
Like you said, I tested it with quiet=False
but it ends up like you wrote above.
root@Pi:/opt/hyperion# python main.py --config=/etc/hyperion.config.json --effect vumeter
Exit by typing 'x' or 'exit'
[79, 80, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 62, 63]
[14, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 30]
(0, 255, 0)
(255, 0, 0)
[(0, 255, 0), (13, 241, 0), (26, 228, 0), (40, 214, 0), (53, 201, 0), (67, 187, 0), (80, 174, 0), (93, 161, 0), (107, 147, 0), (120, 134, 0), (134, 120, 0), (147, 107, 0), (161, 93, 0), (174, 80, 0), (187, 67, 0), (201, 53, 0), (214, 40, 0), (228, 26, 0), (241, 13, 0)]
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
0.000 | 0.000 | 0.000 | 0.000
Mhhh i also tryed your Gui command from your mentioned post
root@Pi:/opt/hyperion# python main.py --effect vumeter --config /etc/hyperion.config.json --gui
Traceback (most recent call last):
File "main.py", line 197, in <module>
main()
File "main.py", line 174, in main
from devkit import gui
File "/opt/hyperion/devkit/gui.py", line 15, in <module>
master = Tk()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1813, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
[79, 80, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 62, 63]
[14, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 30]
(0, 255, 0)
(255, 0, 0)
[(0, 255, 0), (13, 241, 0), (26, 228, 0), (40, 214, 0), (53, 201, 0), (67, 187, 0), (80, 174, 0), (93, 161, 0), (107, 147, 0), (120, 134, 0), (134, 120, 0), (147, 107, 0), (161, 93, 0), (174, 80, 0), (187, 67, 0), (201, 53, 0), (214, 40, 0), (228, 26, 0), (241, 13, 0)]
Traceback (most recent call last):
File "/opt/hyperion/effects/spectrum_dump.py", line 308, in on_message
self.callback(magnitudes)
File "/opt/hyperion/effects/vumeter.py", line 89, in receive_magnitudes
self.update_leds()
File "/opt/hyperion/effects/vumeter.py", line 130, in update_leds
right = self.mag_to_idx(self.magnitudes[2])
IndexError: list index out of range
then i tryed color_spectrum
root@Pi:/opt/hyperion# python main.py --effect color_spectrum --config /etc/hyperion.config.json --json --host 127.0.0.1 --port 19444 --gui
Traceback (most recent call last):
File "main.py", line 197, in <module>
main()
File "main.py", line 174, in main
from devkit import gui
File "/opt/hyperion/devkit/gui.py", line 15, in <module>
master = Tk()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1813, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
My LEDs starts to blink i curious way o_O not to any beat or something like this. just in a way that is repeating after a few seconds.
@nicedevil007 --gui
opens a window, so you need a screen attached to your pi (or ssh screen forward). But yeah, there's something broken with gstreamer atm, I'll look into it when I have time.
The blinking is something that occurs for me too, it's some bug with gstreamer (color_spectrum effect uses fft instead of volume levels).
UPDATE: Actually tested again and I just had wrong output selected. Tried with spotify which uses default output and it works as before, I get levels above 90:
92.577 | 95.656 | 92.716 | 95.874
92.673 | 95.371 | 93.394 | 95.660
90.040 | 95.014 | 90.913 | 95.303
90.618 | 94.656 | 93.293 | 94.946
91.435 | 94.299 | 91.228 | 94.589
91.909 | 93.942 | 91.457 | 94.231
89.604 | 93.585 | 93.302 | 93.874
92.900 | 93.228 | 91.466 | 93.517
i have the same configuration like @nicedevil007 and it works if i change the audio output in Kodi directly to the loopback device and than use this command line:
osmc@osmc:/usr/local/src/hyperion-audio-effects$ python main.py --config=/opt/hyperion/config/hyperion.config.json --effect=color_spectrum --json
so i get outputs like this
75.326 | 79.194 | 75.920 | 79.184
71.531 | 79.194 | 71.319 | 79.184
69.917 | 79.194 | 65.843 | 79.184
76.072 | 79.194 | 75.122 | 79.184
74.984 | 79.194 | 75.162 | 79.184
66.977 | 79.051 | 68.140 | 79.041
x68.681 | 78.694 | 65.949 | 78.684
74.393 | 78.337 | 74.327 | 78.327
with the vumeter
effect i got no effect - has something to do with the low level?
are you sure thats our .asoundrc
is really match the aplay -l
output?
my loopback device does not work if i switch in Kodi to the alsa default output - but i have still sound on HDMI (also with DTS/AC3 over passtrough)
last question: should it work without the --json parameter
?
@b2un0 Sorry I've adjusted the effect levels to fit my setup. In effects/vumeter.json
you can adjust yours (if volume is already max in Kodi). I should make the levels self-adjusting but for now they are in config. Try first with min-level 0 and max-level 100. My levels varied from 90 to 100 so I set those limits to see more movement in leds. :)
I also had some problems with sound from Kodi (I have a custom linux HTPC) but I use Spotify for music and Kodi for videos only. And I don't use the alsa config anymore since I have elementary OS now instead of Kodibuntu, which has pulseaudio by default. It might take more CPU and have worse sound quality but it's a lot easier to config. Wouldn't recommend it for Pi though.
I think Kodi just doesn't support dual audio (I mean HDMI and Loobpack at the same time): https://discourse.osmc.tv/t/usb-and-hdmi-audio-at-the-same-time/10966/7
Try with some sound file first to see if the alsa config is ok: aplay somemusic.mp3
If that works, then the problem is within Kodi and I don't think it can be solved.
The --json
parameter tells to use hyperion json connection, so yes it must be used. WIthout it you can only see the effect in emulator with --gui
. See python main.py --help
for all options.
My suggestion is to buy a decent HTPC. :)
I've tested with RPi 2 and OSMC, works ok. Not the same performance as a decent PC though. Added instructions to readme.
Thx RanzQ!
Will test it until i find some time :)
Is it realy slow or just not as fast as on PC? I mean, slow as not useable.
@nicedevil007 @b2un0 Actually I've now confirmed the same you did. The loopback setup does not work from Kodi / OSMC. I have no idea why, alsa should split the stream when the "ALSA: default" is selected but wit Kodi I get sound or effect only, not both.
But it is possible to play music with effect using mpd
or some other player. I modified the default settings so that it is usable on Pi 2. CPU usage is high but it doesn't look bad. :)