[opendev] The Background Music Box
-
@ketaketish Thank you
I notice when I select a song, once that song is over mpg123 stops by default.
Yes that's a behaviour I'm aware of. But see my BGM tracks have a length of more then 60 min per track. If you want to continue music then you need a second call to mpg123 inside the script. But this is not good coding because the second will check every x seconds if the current session of mpg123 is still running or you can use
wait
command.I think it is not a great deal to restart the player in shuffle mode if you want to select a new track. Everything else is not clean coding imho. The best solution would be a player inside ES ;)
-
@cyperghost Thank you for your response!
I must admit, I have not listened to your tracks... I kind of immediately added my own :S
60min tracks would definitely be less of a nuance compared to my 2mins tracks haha.That explanation makes perfect sense. I am not as well-versed so I was more curious if it were possible but I do see that making a check every X seconds is a waste of resources.
Keep up the good work! :)
-
@cyperghost Just had a thought (if its a no then all good):
Would there be a way to analyse the selected mp3 file for its duration? Then output that into say "Length", then use "wait $Length" before returning to shuffle?
I love learning this stuff and have been doing most of it so far through these forums and "Trial and Error" and have learned all the Linux I know so far through it. So I do appreciate your explanations :)
-
@ketaketish about mp3 lenght... There are surly tools available that can analyse track length.
Easiest approch would be a small script like this
#!/bin/bash while pidof mpg123 > /dev/nul; do sleep 10 done mpg123 -q -Z /path/to/mp3files/*.mp3
Then you send this script to background alongside with the script. You add a line between 101 and 102 like
/path/to/script/above/shuffle.sh &
It's a dirty hack but will work
EDIT: Improved the dirty hack a bit
-
@ketaketish Even if this is a very old topic. I've added the length of mp3 files (for current song only)
There is a packagemp3info
- it's very capable in getting info of tracks ;)The whole script is improved alot.
Please install the tools lsof and mp3info before withsudo apt install lsof mp3info
The script will run without these but it will look more nice with the tools installed.Default player is mpg123
Please change the player inside the script or install withsudo apt install mpg123
mpg123 is the smallest mp3 I know for Debian .... it's very relyable and small in footprint and won't hurt your system setup!Changes:
- Code Cleanup
- Show length of current played song in mm:ss
- use realpath for path resolving
- use
/dev/null
hack to use mpg123 with Raspbian stretch (=RetroPie 4.5.1)
-
It's possible to see tracklength of current selected track...
Ugly hack!! removed!!!
and add
--item-help
to your dialog config, then you can see tracklength of selected mp3 title ;) Maybe somebody can improve the coding .... I did it just in a swift way. -
So this is an updated version of the music player with additional info to selected mp3 file. See bottom line ....
Get it from here
-
i understand that this topic is old. but a different bgm player is no longer woking properly. That and im having way more fun setting it up and having bgm work the way it should. That being said its kind of a shame this project didnt go far, i aim to change that. Is is possible to set a different volume level for mpg123 than master setting of ES? to keep the music at a tollerable level i cant hear the games. id have to set the volume the moment i get out of a game and that can be a hassle. so im hoping there is a script or something i can use to remedy this
-
@majikill said in [opendev] The Background Music Box:
That being said its kind of a shame this project didnt go far, i aim to change that. Is is possible to set a different volume level for mpg123 than master setting of ES.
You can, by defining a new ALSA device, with it's own volume - https://alsa.opensrc.org/How_to_use_softvol_to_control_the_master_volume.
Basically, you add in
$HOME/.asoundrc
pcm.mp3 { type softvol slave.pcm "default" control.name "Softmaster" control.card 0 }
then you instruct the audio application to use the
mp3
ALSA device. When you openalsamixer
to se the volume, you'll have 2 mixer elements, one of them called "Softmaster", and you can set the volume individually. -
-
@cyperghost where would i apply these changes exactly? unless i make the changes to any instance mpg123 starts?
-
@mitu this would go just in the /home directory?
-
@majikill You can try modifying the script that starts the BGM music and add the
-f
parameter as @cyperghost mentioned. The.asoundrc
configuration file I was mentioning should be added in$HOME
(which translates to/home/pi
). -
@mitu awesome. perfect guys thank you. im gonna try both and see what works best for me.
-
@mitu i managed to create the .asoundrc file where it should be. but when i launch alsasound i only have a single mixer. i did put the file in /home/pi
-
@majikill Can you run
speaker-test -D mp3
and see if you get any errors ? Then start
alsamixer
and see if you have 2 mixer devices. -
@mitu that worked! im curious why tho. once the test is run, does it force alsa to load the file i created?
-
@mitu ok well kinda worked. i see the softmaster in the mixer. but pcm still controls the volume for bgm
-
@majikill said in [opendev] The Background Music Box:
but pcm still controls the volume for bgm
You need to tell
mpg321
to use the newly created device - as I said in my initial post:mpg321 -o alsa --audiodevice mp3 <path/to/file>
-
@mitu ok, i think i get it now. im using this as a crash course in writing scripts, so im sorry if i dont understand how this should work. but this is a huge help, thank you.
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.