A python script to run background music in EmulationStation for Retropie, inspired by the script posted here, but focusing on a script with well-written code, trying to follow good design practices and putting special attention on testability
Prerrequisites: python >=3.7 is required to install this application. You can check your version by executing this command on your machine:
python --version
or
python3 --version
Enter the RetroPie console (you can reach it by pressing the F4 key when EmulationStation is running) and run the following commands:
curl -sSL https://raw.githubusercontent.com/Rydra/bgm-for-es/main/scripts/install-esbgm.py | python3 -
After installing, reboot the machine:
sudo reboot
curl -sSL https://raw.githubusercontent.com/Rydra/bgm-for-es/main/scripts/install-esbgm.py > install-esbgm.py
python3 install-esbgm.py --uninstall
Under the config section of EmulationStation two new commands have been added:
Select one or the other to enable or disable the background music
Place your music in .mp3 or .ogg format in the folder that will be created in /home/pi/RetroPie/music
.
You can change the folder where you place your music in the config file (see Configuration section).
Once you reboot and the script
starts, a default config file will be created at /home/pi/.config/esbgm/config.yaml
If you want to manually execute the application you can execute the following command:
esbgm
The configuration file that you may find in /home/pi/.config/esbgm/config.yaml
(it will appear
once you start the esbgm
script for the first time) contains the following content:
# Value (in seconds) to delay audio start. If you have a splash screen with audio and the script is playing music over the top of it, increase this value to delay the script from starting.
startdelay: 0
# The directory where you will place your music in .mp3 or .ogg format
musicdir: ~/RetroPie/music
# Whether the music should restart upon unpausing or resume
# from where it was left out.
restart: true
startsong:
# The main process. Upon starting this process, the music will start playing...
mainprocess: emulationstatio
# unless one of these processes is running, then the music will fade out
# until only the mainprocess is running again
emulator_names:
- retroarch
- ags
- uae4all2
- uae4arm
- capricerpi
- linapple
- hatari
- stella
- atari800
- xroar
- vice
- daphne
- reicast
- pifba
- osmose
- gpsp
- jzintv
- basiliskll
- mame
- advmame
- dgen
- openmsx
- mupen64plus
- gngeo
- dosbox
- ppsspp
- simcoupe
- scummvm
- snes9x
- pisnes
- frotz
- fbzx
- fuse
- gemrb
- cgenesis
- zdoom
- eduke32
- lincity
- love
- kodi
- alephone
- micropolis
- openbor
- openttd
- opentyrian
- cannonball
- tyrquake
- ioquake3
- residualvm
- xrick
- sdlpop
- uqm
- stratagus
- wolf4sdl
- solarus
Description of the settings:
Option | Default value | Description |
---|---|---|
startdelay | 0 | How much time in second you want to wait once EmulationStation starts before playing the first song |
musicdir | /home/pi/RetroPie/music | The directory where the music is placed and where it should be played |
restart | True | If True, resets the song from the beginning upon resuming |
startsong | Empty | The exact name of the song you want to play in first place. Leave empty to let the player decide randomly |
mainprocess | emulationstatio | The name of the process which, when running, music will play |
emulator_names | list of common emulators | The name of the processes which, when running, music will pause/stop (not necessary anymore since version 1.2.2 |