Background Music [Continued from Help/Support]
-
Script is working for me -- Thanks for this!
I'm having one small issue where the music isn't fading out out properly when I start a game. I just cuts right out. If I set the fade delay to something really slow, the music comes back in partially faded after a couple of seconds and completes the fade out. So fade out is working but it is momentarily muted during the fade. Any ideas? If it helps, I'm using an MP3. I know you said there might be issues with MP3's... is this what you meant? Other than the fade problem, playback is fine.
Thanks!
- Jeff
-
@j.e.f.f Try the new code that synack has put up on the forum, it works like a charm and stops when it needs to and starts when it needs to.
Fantastic stuff, also fixes the issue with any slowdown in the mp3 tracks that pygame has.
-
@synack thanks I've tested ogg123 and it works fine.
But as the previous pyton script from Livewire, the music starts before my opening splash video ends...
-
@josete2k
In that case, edit /opt/retropie/configs/all/autostart.sh, before the ogg123 command, add the following:while pgrep omxplayer >/dev/null; do sleep 1; done
-
@synack said in Background Music [Continued from Help/Support]:
@josete2k
In that case, edit /opt/retropie/configs/all/autostart.sh, before the ogg123 command, add the following:while pgrep omxplayer >/dev/null; do sleep 1; done
Thanks for the quick fix, synack!
I think you should edit your how-to post and include this step in it, I had the same issue as josete2k right off the bat with splash videos.Alsom, quick verification. Can ogg123 play mp3 ffiles as well? Because if I have to call both mpg123 and ogg123, I'm scared of what will happen!
-
@felleg No problem, and good suggestion -- I updated the post.
Unfortunately ogg123 will not play mp3. The simple fix would be to convert your .ogg files to .mp3, or vice versa.
To mass convert .ogg files to .mp3 on your pi, you can do so by installing
libav-tools
sudo apt-get install libav-tools
then navigate to your folder with the .ogg files execute the following
for f in *.ogg; do avconv -i "$f" "${f%.*}.mp3"; done
-
@synack Sweet, thanks for the reply! Everything seems to be working smooth. Is it possible that your method doesn't "protect" against playing the same song twice? Maybe it's a mistake on my end, but somehow the same song played twice just now, and I have no duplicate in my playlist.
One last question: can you think of an easy way to output the name of the songs played to a text file (so that I can look via ssh what is currently playing and keep track of what has been played)? I had modified the Python script in such a way that, every time the program started, it appended "====== [date & time] ======" and the song names (as they came) at the end of a file called songs_played.txt. However, since your solution uses many script files, I don't really know where I could put this.
-
@felleg the randomization algorithm is within mpg123, and in my tests it worked as expected. You might have just gotten lucky :-)
If you'd like to see what is / has been playing, you can change the mpg123 command to the following
mpg123 -Z /home/pi/bgm/*.mp3 2>/dev/shm/playlist &
then
cat /dev/shm/playlist
to see what's been played (the last entry will be what's currently playing).Of course, you can change the output file to whatever you'd like.
-
@synack Awesome!
... And finally, one last last question, for real. I notice the only things your version are missing compared to Livewire's original method is the fadeout when starting a game, and the option to start a new song after quitting a game (instead of starting the song from where we left off). Can this be quickly implemented as well?
Thanks for your great help!
-
@felleg fade out is not possible with my method, as far as I know.
To start a new set of tracks (upon game exit) instead of continuing from the last, you'd replace the original instructions do the following
edit /opt/retropie/configs/all/runcommand-onstart.sh
pkill mpg123
edit /opt/retropie/configs/all/runcommand-onend.sh
mpg123 -Z /home/pi/bgm/*.mp3 >/dev/null 2>&1 &
or if you wanted to keep logging the played tracks, you'd use this line instead in the runcommand-onend.sh script
mpg123 -Z /home/pi/bgm/*.mp3 2>>/dev/shm/playlist &
-
Sorry but i have never wrote a script or know python or anything like that - this will be my first attempt to do it. but I was wondering about the muting of the sound while in emulation station.
from what i read this.
#Check to see if the DisableMusic file exists; if it does, stop doing everything!
if os.path.exists('/home/pi/PyScripts/DisableMusic'):if i create this folder or file the music will stop.
It sounds to me i have to ssh into the box to do this. (while in emulation station
is there a way to say another script to be written that when pressing a specif keyboard key or joystick key to write the file to that location?
and if another keyboard key or joystick key or maybe the same key, to remove the file?
if using the same key: when key is press it checks - if file is there remove it. if not there added.
Thank you
-
One simple and stupid suggestion.
Can you please add the version # to the top of the script.
Thank you
-
I finally installed the script and the music is working with no issues.
I am trying to disable the music.
But I cant get it to stop playing music.
-
I have change the time.sleep(15) to time.sleep(1) for testing purpose so i can test this within 1 minute
I tested this via ssh while emulation station (es) is live and running and still there is sound (I tried this with DisableMusic as a file or folder same result -
i also try this with file name or folder by creating them first - reboot and when the unit comes back up, there is still sound.
this file or the folder has pi ownership but with a chmod of 644 I also tried with 777
what could i be possibly doing wrong?
what was the intended use of the pause sound?
While in emulation station is running or only after boot? -
-
@dynaram Not sure I entirely understand your issue, but I know that if you want to shut down the player, you can always use top from ssh to kill PyGames or mpg123 (depending on which one you're using).
-
ok thank you. for the suggestion.
What i am trying to accomplish is to mute the player while emulation station is on and i am navigating around.
Sometimes the phone rings or someone rings the door bell. i want to be able to use the controller since is on my hand to mute the sound.
i can always put the controller down and hit mute on the tv. :), but if i put the pi on a dedicated cabinet. I will not have that option if i use a computer monitor.
I hope this helps understand what i am trying to do.
-
@dynaram Yeah, now I get it. Since the process is playing in the background and is independent of EmulationStation, I guess ES has no way of controlling the music right now and your best bet is just to mute the TV for the time being.
-
@felleg thank you. that makes sense.
-
@synack Hey I'm really new to this and I'm actually making this whole thing as a gift for my girlfriend and I would love to put background music. I installed mpg123, and I assumed I just copied all of the other lines of code onto the command line and press enter. I know it's not that easy all the time though and I can't figure out how to get it to work. If you could possibly give me the rundown like i'm a toddler, or possibly do the world a HUGEEEEE service and upload a video tutorial of sorts for us not as skilled with linux and how it works. Anyway awaiting your response, thank you in advance!
-
@Rao777 Where I say "edit the file [...]", use the command "nano" to do so. While in nano, control-o saves the file, control-x exits. Besides that, it really is just copy/paste. If you have trouble, let me know where you're getting stuck and I'll try to help.
-
@synack Okay quick question where exactly do I place the "[[ $(tty) == "/dev/tty1" ]] && pkill mpg123" code in the bashrc
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.