Last updated 5/15/2022. Added some more findings for audio.
Seeing the relative successes of others out on the internet, I acquired my first Raspberry Pi for the purpose of turning it into a dedicated DDR machine, since my main computer moved where my Cobalt Flux pad can’t (or at least shouldn’t) follow. With this, I could again play to my heart’s content.
Just a note for the items list, I’m using this as a DEDICATED OutFox device, no other significant uses. You’ll need:
- A Raspberry Pi 2 or later, with RP 4 with 4+ GB of RAM recommended. I’m using that very setup, a Raspberry Pi 4B with 4 GB of RAM (there’s also an 8 GB model). For performance reference, this is sufficient to achieve 1080p/60fps on the current default theme, but it can only achieve 60fps in 720p (menus are more like 30fps) on XX -STARLiGHT- two point zero, a popular theme for StepMania/OutFox.
- SD card for storage of OutFox, plus the Pi OS. I recommend at least a 16 GB card, but having larger amounts of content (>1000 songs, or a fair amount of videos or themes) may require more.
- A power cable to power the Pi. Make sure it supplies the recommended amount of power for the Pi, especially if you wish to overclock.
- Micro HDMI to HDMI cable, or other cable to hook up the Pi to your display.
- Keyboard and mouse to control the Pi, at least until it’s fully set up.
- DDR pad connected to the Pi, likely via USB.
- (Possibly optional, see instructions) Computer speakers
- (Optional but recommended) Cooling system for your Pi, such as a fan, to enable overclocking and increase performance.
- (Optional but recommended) On/off button for your Pi. This may come as part of your case, or your power cable, or may also be something you program yourself.
And now let’s get into the process:
- Setup Raspberry Pi OS
You may have gotten your Raspberry Pi like I did with a SD Card, with the 32-bit Raspberry Pi OS pre-installed. If that’s fine, great! If not, you can download the Raspberry Pi imager to install the OS on the SD card. Raspberry Pi OS with desktop is recommended, but you can install Lite or any other of the included operating systems if you know what you’re doing. Some of the OSs have different use cases.
There is a 64-bit beta of Raspberry Pi OS available (choose the latest available build from the link), which is generally recommended for use on newer Raspberry Pi models so you can get the most out of your Pi. I originally installed the standard 32-bit version, but then thought better of it, installed the 64-bit version, and experienced significantly better OutFox performance (case in point: 64-bit was better with OutFox WITHOUT overclocking the pi than the 32-bit was WITH overclocking). So yeah, do the 64-bit route if you have a RP 3 or 4 that supports 64-bit.
If you already have an OS installed and don’t know whether it’s 32 bit or 64 bit, go and type ‘uname -m’ into the console. If it shows something like armv7, you have 32-bit. armv8 indicates 64-bit. You can reinstall your OS at any point if you’d like, however, installing a new OS will wipe your entire SD card and you’ll have to start from square 1.
- Download/install Project OutFox
Project OutFox is a modern fork of StepMania, a decades-old (yikes!) open-source DDR clone. Originally, OutFox was in development as the latest version of StepMania, but they have recently chosen to instead be their own program with an increased focused on many other rhythm game modes (Beatmania, Guitar Hero, Taiko, etc.) while preserving backwards compatibility for StepMania file formats and such. And luckily for us, they release builds specifically for the Raspberry Pi.
If a Linux ARM (as opposed to just Linux) build is not available for the latest alpha, look to the past release. Sometimes Linux ARM builds may be uploaded up to a few days after an alpha version’s initial release.
You’ll want to know if you’re running 32 or 64 bit OS on your Pi so you know which build to download. As discussed beforehand, if you can run a 64 bit OS, you’ll be doing yourself a favor by taking advantage of it.
Once you’ve got it downloaded, you’ll need to install the libopengl0 package – open up the terminal and type ‘sudo apt install libopengl0’. This is described in the faqs as for Ubuntu 20.04-based Linux distributions. On Raspberry Pi OS, failure to install this didn’t give me an error, but the game simply failed to start after the splash screen loading. After installing, though, I was good to go.
For further details, OutFox now has an installation guide for Linux/Raspberry Pi.
- “WAIT, WHERE’S THE SOUND?”
Initially, you may not have any sound, or you may have sound but find that OutFox has poor stability (crashes to desktop, notes freeze and stutter, or the sound just quits suddenly). Long story short (and I might not have all the technical details correct), the Raspberry Pi comes with a pulseaudio audio layer on top of the more default alsa audio. Which is usually a good thing with pulseaudio being more advanced, but pulseaudio causes OutFox to stutter, or otherwise crash. Frequently. Since alsa is preferred (as stated by OutFox devs), you either want to bypass or delete pulseaudio. Since I’m only running OutFox on the Pi, I initially chose to outright delete pulseaudio. To delete it, type ‘sudo apt-get remove pulseaudio’, follow any other instructions that come up, and then reboot. This removes ALL of the stuttering and crashing I previously experienced, but in exchange, sound no longer works through HDMI. Instead, I hooked up some computer speakers via the Pi’s headphone jack. I do not yet know a way around this to restore audio via HDMI, but having the program or the sound not crash every second song is an acceptable trade-off for now, although it does bring down the system’s portability somewhat.
If you wish to simply bypass pulseaudio, OutFox’s installation guide for Linux/Raspberry Pi details some of the options for doing that, either by using pasuspender (‘pasuspender ./stepmania’ or ‘pasuspender ./outfox’ in the console depending on your folder’s name) or by setting the SoundDriver preference to ‘ALSA-sw’. I have not yet been able to test these to see if I can keep HDMI sound, but will do so very soon.
I also had success using HDMI when setting the SoundDevice property in my .project-outfox/save/Preferences.ini folder to plughw:0,2 (you don’t need to uninstall pulseaudio in this case). While this did work without having to attach extra speakers, performance does suffer significantly. Forget about playing songs with BGAs in 720p, as it will devolve into a laggy mess. If you turn them off on a per-song basis (by going to the song settings and selecting static background), you may be okay. I don’t recommend this (yet), but include it regardless for those setups where max portability is desired. Also, if you switch between HDMI and external speaker methods here, you should recalibrate the audio timings in the Outfox settings.
- Download all songs/themes/other addons
This is simple enough – search the web for any StepMania themes, songs, and anything else you want. Anything labeled for StepMania should work in OutFox. OutFox itself only comes with about 4 songs, so that’s not going to keep you interested for long. The Zenius-i-vanisher site is a good place for content. For themes, check out their forums. For songs, check out the Games > DDR & DS > Simfiles section. You can either download them to your Pi directly, or do what I did (because I already had OutFox on my main computer) and transfer them from elsewhere via a USB stick or cloud storage service.
- While you’re at it, get a Pi power cable with an on/off button
A power button is something the Pi woefully lacks, so you have to supply your own or get one integrated with a case or power supply. Doing so will allow you to safely shut down the Pi without having to unplug the system each time. Without a mouse and/or keyboard constantly hooked up to your Pi, you won’t be able to do a safe shutdown without a external button.
- Create script to automatically start game on boot
Since I didn’t want to have to use a mouse or keyboard once the system was set up, automatically starting OutFox on boot is a must. The third option in this article worked like a charm. Once that’s set up, the only thing you would really need is a DDR pad to play!
- Tweak options in OutFox for performance
A note before we begin tweaking for performance – I suggest doing this slowly, as a beta OS (64-bit Raspberry Pi OS) + relatively niche usecase (Raspberry Pi) + alpha software (OutFox) means things can potentially go wrong more often than you’d like. Doing things incrementally allows you to more easily track what’s to blame and to roll it back if possible. And if things do go horribly wrong, the OutFox team is pretty good about squashing submitted bugs and providing support in channels such as Discord.
Anyway, with our hardware looking good, now it’s time to boot OutFox. Adjust graphic settings and see how it reacts. Of course, your chosen resolution will be a huge factor. I would suggest starting at something like 1280×960 (for 4:3) or 1280×720 (720p, for 16:9). After that, you’ll also want to look at texture resolution, texture/video color depth, and turning fast note rendering on (which seems to give a significant boost alone). Your theme also contributes to performance, so try switching between themes as well. The default OutFox theme runs pretty well as expected, but it’s the other themes you’ll need to check on. You can also turn on ‘show stats’ in the graphic options to see your FPS at all times while you do this. It’s all about finding a balance between frame rate and beautiful graphics that’s acceptable to you.
- (Optional) Alter config.txt to enable overclocking for extra performance
See here for the various config.txt options you have at your disposal to alter the behavior of your Pi. Using this as a starting point, I started tweaking with overclocking my Pi. At first, I only did a bit, as I did not have a cooling fan (just a roomy case with simple heatsinks). I found arm_freq=1750 to be stable. You could push these values higher with a fan or other cooling options. Like mineral oil, I guess.
With a fan cooling the Pi, I was able to bump it up to arm_freq=2000 safely and have not seen the temp go past 60 degrees Celsius.
You can set a temperature monitor in the taskbar of the Raspberry Pi OS for constant monitoring of temperature. But the more serious things to look out for are certain icons in the upper-right corner of your pi’s screen. Lightning bolt icons mean your pi is not getting enough power for your settings (increase over_voltage or decrease overclocking in this case). Temperature icons mean your Pi is getting overheated (decrease overclocking or improve cooling to your Pi in this case). Having your Pi regularly overheat this much can shorten its life, so make sure it’s being cooled reasonably well. Lastly, some overclocking options (but not the ones provided here as far as I know, at least at the values shown) can void your warranty.
Once all that is done, sit back and enjoy the fruits of your labor! And then stand up and dance, because this isn’t the sitting kind of game!
Do you have a similar setup? Have you done things differently than me? Please drop a comment and let me know, so this guide can be the best it can be!