Adventures in Rock Band on Linux

It's no RB3Dx but it will do.


March 27, 2025
Category: Project


Introduction

I played a bit of Rock Band with my family as a kid. I didn't pay much attention to it thought, you know. We mostly played LEGO Rock Band because it was more kid-friendly, with a "cleaner" song selection and a No-Fail mode. Then life got busy for about and fast forward to now, where it had been about ten years since we last played. I hadn't missed it up until recently, where I spent an evening at a friend's flat, and she has this fancy studio-grade MIDI drum kit attached to an Xbox 360 with a fancy MIDI-to-XInput adapter made specifically for Rock Band 3. I believe the drum kit was an Alesis Nitro Mesh.



Anyway, she also had this whole collection of guitars and that weird keyboard instrument, all made for a Rock Band 3 setup on her (unmodded) Xbox 360, complete with all sorts of custom tracks. We played songs like Cat Food by King Crimson, KOMM, SUSSER TOD from The End of Evangelion, Snow Halation from Love Live!, the uncensored version of Sir Psycho Sexy by Red Hot Chili Peppers, and my personal favorite, Live & Learn by Crush 40. It was an amazing night and I had forgetten how much fun Rock Band actually was with a group of people.

It really got me thinking of ways to replicate a setup that would allow me to play Rock Band with my family just like how I did as a wee one. A bit of asking around and Googling led me to this little game called YARG, or Yet Another Rhythm Game, and down the rabbit hole I went.

Yet Another Rhythm Game

A rather tongue-in-cheek name, but it's a free and open-source game for Windows, macOS, and Linux that aims to basically port Rock Band to PC.

Anyway, YARG, right, it looks like this in practice:
Used to Be Valentines - Beverly (The Good Years), YARG Chart

I think you see the idea, yes? This video only has a single player in it but it doesn't seem to have a limit on simultaneous players unlike Rock Band.

As for the program itself, I find it mostly nice to use!


It comes with a lot of options for tailoring your experience to your specific audio setup, as well as graphics settings for low-end computers, and chainging the highway presets just for fun!


The song selection is very reminiscent of the Rock Band titles as well, which is a nice touch in my opinion.


So, first thoughts are that YARG shows some great promise for those wanting to play all of their Guitar Hero and Rock Band charts!

Songs and CONs

YARG ships with a good amount of tracks on its own, from some lovely artists like Used to Be Valenties and Nine Inch Nails, but we're here to focus on bringing our tracks from Rock Band to PC.

The game is compatible with Clone Hero charts and Rock Band 3 CONs. Reading this at first, I was confused as to what a CON was, until I started examining ones that I found on RhythmVerse. Turns out that a CON is basically just an Xbox 360 STFS package containing a track for Rock Band, usually used with Rock Band 3, in fact the fan-made ones are in the exact same format as what Harmonix distributed on the Xbox LIVE Marketplace.


Most of our tracks will be fetched originally in Rock Band 3 CON format, which often works, but sometimes the encryption is incompatible with YARG, so the safer bet is to convert them using a suite of tools called Nautilus.


Using the "Clone Hero Converter," we're able to convert these files into Clone Hero charts for better compatibility with YARG!


There are a good 100,000 or so charts available over on RhythmVerse, however one of my pet peeves is when you find a track that you want, but it was only charted for Guitar on Expert difficulty. I get why people do it, but it's a bit annoying if you're looking for stuff to play with multiple people.

Still, between that and ripping songs from Guitar Hero and Rock Band, you're able to make yourself a pretty extensive collection of nicely charted songs to play! My personal collection is currently about 165 songs, with a decent chunk coming from Rock Band DLC and LEGO Rock Band.

There was one track, that being The Distance by CAKE, which was distributed as a chart for the Wii version of Rock Band 3. Some extra TLC had to go into that one. Firstly editing the song.dta file to remove a Wii-specific path that we don't need, and then using a tool called Onyx to convert it to a Rock Band 3 CON, and then using Nautilus to convert it to a Clone Hero chart. Yeah, it gets convoluted and you'll often be engineering solutions to problems on your own.
Cake - The Distance (Fashion Nugget), Chart by TheSpike/Nyxyxylyth

At some point I do wanna learn to make my own charts so that I can make people play along to silly SiIvaGunner tracks. :3

Input and Hardware

This one's probably the most troublesome with YARG on Linux, mostly because Unity's input system is straight-up busted over here. Xbox 360 peripherals do not work out of the box and you *have* to use Steam in order for it to be usable.

YARG is capable of accepting MIDI devices, audio devices and SDL2 devices under Linux. Steam Input will properly expose input devices as SDL2 gamepads named "Steam Virtual Gamepad."

Speaking of input devices, we need a way to actually use our instruments with a PC, which a cheap (and possibly crappy) Xbox 360 Wireless adapter from AliExpress does the job just fine.


From here, we can sync our instruments as if they were standard controllers. We run into another problem though, as Unity is incapable of determining what port each virtual gamepad is attached to. We have to blindly pick a device, numerous of which can be named "Steam Virtual Gamepad" for them to be properly detected. There's no real workaround and when you're trying to quickly set everything up it is a struggle, but it comes with the territory.

Another roadblock, since we're on Linux tricking Unity into believing that we are using generic controllers out of necessity, we have to configure our instruments ourselves. For the guitars, this isn't so bad since they have enough inputs to combine menu controls and gameplay without and conflicts, but for drums it is a struggle.

The drum set I was using was the set included with The Beatles Rock Band. Here's a helpful diagram to show what each button maps to:


I'm sure the MIDI keyboard controller has an even more cursed layout than this.

Anyway, this layout causes many problems with YARG, as YARG cannot interpret drum inputs with generic controllers at the time of writing. No matter how much I tried, I could not get a layout that did not have any conflicts. It was playable, sure, but hitting certain drums would break the current combo or one drum would fire two or more drums in-game. It's a mess, and this hassle is entirely the fault of Unity's input code being absolutely broken under Linux, as well as the xpad driver not reporting anything about device capabilities.

The bottom line though, it can be done. There's just a lot of hoops to jump through here in penguin-land.

For vocals, it's all pretty straightforward. Any wired or Bluetooth microphone will work just fine, including ones made specifically for Rock Band.

Venues

YARG has support for what are called "Venues," which are little Unity scenes made to behave as a background. They can have animated environments and characters as well, so some talented folks can recreate background scenes like those seen in Rock Band.
There's a catch though on Linux, and it's that most of the Venues you find only have shaders made for Direct3D 11, whereas on Linux, we only have OpenGL and Vulkan. This causes incompatible scenes to render as mostly magenta. You need to be careful about what venues you have installed.


A good fallback option is to render WEBMs of scenes from Fortnite Festival or Rock Band, and they get the job done.

Closing thoughts

  • Unity's input system is an absolute travesty under Linux.
  • YARG is great, but it's missing the bit of flair that RB3 does. I wonder if it's possible to do that in the future?
  • YARG needs to implement workarounds for xpad's inability to detect device features. The input issues here are entirely a combination of Unity's crappiness and the Linux kernel but please PLEASE implement this down the line!
  • Oh, also a workaround for blindly selecting SDL devices to see if it works. Maybe like some kind of listen feature that allows the user to press a button on the device they want to use.
  • Custom charting tools for Linux?
  • Would it be more worth it to use RB3DX under RPCS3?
  • I missed playing Rock Band with my family. :3