February 24, 2023
I cannot wait for my son to start playing video games.
Don’t get me wrong; I cannot wait for him to start playing a number of sports and have tons of fun outdoors, indoors, and wherever he likes. But I seriously cannot wait to play some video games with him, or against him, and hopefully lose miserably in the latter case.
When I first put one of my arcade sticks in front of Pietro, he immediately started pushing all the buttons and pulling the lever towards all directions. Of course, after that, he grabbed the entire box and tried to smash it on the ground. As one of my best friends – and fellow father – wisely commented at the time, “destruction is a priority at this age”.
After that initial experiment, I set up one of my sticks on my desk and fired up Street Fighter 30th Anniversary Collection. I went into Street Fighter Alpha 3 – my favorite SF game – and entered training mode. I held Pietro on my lap and tried to help him understand how moving the stick and pressing the buttons related to what the character did on screen. Considering how he grabs the mouse every chance he gets and starts clicking away while looking at the screen, he probably understood the stick-to-character relation, but he didn’t much care about it.
I started pondering if there’s a way to have an arcade stick return more immediate outputs upon receiving button presses and stick movements; maybe even as a standalone device, avoiding cables and the use of a PC or console. The first thing that popped to my mind was making an arcade stick that is actually a soundboard.
The regular arcade sticks I make use a small printed circuit board (PCB) to translate your inputs on the stick into signals that then reach your gaming console or PC through USB directly affecting what your character does on screen – “uh, yeah, that’s how a controller works, brah”.
I thought (and hoped) that there must be a simple way to use a similar PCB that would directly reproduce sounds and output them through a speaker. My first search results were some guides featuring an Αrduino board and a separate audio amplifier board. While the Arduino is an incredibly interesting world per se, I thought that it would make this project a bit more complicated than necessary.
Thankfully, it didn’t take long for me to find the very fine people of Adafruit and the wonderful PCBs they make. Their Audio FX board seemed to perfectly fit the needs of this project. The board has an onboard flash memory – either 2 or 16 MB – where you can upload compressed ogg or uncompressed wav audio files via USB. By adequately naming the different files, you can assign them to one of the 11 different inputs that the board can receive.
So, in my case, you would connect all the different buttons and stick directions to the inputs, as you would do with a regular game interface PCB; but instead of a USB output towards the PC, you have direct audio output through the board’s amplifier, either through a 3.5 jack connection or directly to two stereo speaker connections.
I decided to buy most of the electronic components I needed from Mouser Electronics. They ship from Texas, in the United States, but, at least as far as Europe is concerned, you don’t have to worry about customs fees or added tax. What you see is what you get. If your shopping cart reaches 50 euro, you get free shipping and you’ve got nothing more to think about. This is not an ad, but it was the first time I ever encountered this concept.
My shopping list was:
While you don’t technically need a breadboard for this project, the Adafruit Audio FX PCB comes with pins that are not attached to the board, and having a breadboard helps you a lot with soldering those pins to the PCB – more on that below. The Pimoroni essentials pack also had Dupont cables in it that helped me perform some testing.
The only parts I didn’t buy from Mouser Electronics were the three-seat AA battery pack and the arcade parts; I got all those from the Italian Amazon Marketplace. As far as the battery pack is concerned, I went with a classic open style of battery pack; i.e. the one you would find inside your childhood talking plushies. I got the generic, cheap arcade lever and buttons as I was pretty sure that this toy would receive its fair share of abuse, and I couldn’t bring myself to put high end parts in that position. I chose multicolor buttons – black, white, yellow, green, blue and red – and a pink lever to top it off; this wasn’t a testament to my own personal sense of aesthetics, but I wanted this to look as colorful and as exciting as possible, to make it interesting for Pietro.
The stuff from Amazon was home the very next day, and it only took three days for the Mouser Electronics package to arrive; I was absolutely blown away by the shipping and the overall shopping experience, so I really couldn’t recommend Mouser Electronics enough for EU buyers – and I doubt the experience will be much different in the US. Again, this is not an ad.
When I had all the electronic components, we were off to the races. As I mentioned, the Adafruit board comes with unattached pins and unattached line out connections, so the first step was soldering those. I hadn’t soldered things on a PCB in ages, so that part was basically the one that worried me the most. Thankfully, I found a very simple and easy to follow guide on how to do it: I pushed the included pins in one of the breadboards, placed the Audio FX PCB on top of them and then soldered the pins to the PCB.
I then soldered the two line out connections, connected the battery pack and the speakers and started checking the quality of my soldering with a tester; surprisingly, everything worked great! So I proceeded to testing the circuit with the actual arcade buttons and lever, and at that point I was definitely feeling this project coming to life.
The next step was designing and making the wooden chassis. Since Adafruit’s Audio FX Board can handle up to eleven inputs, I went with a six button arcade stick layout; basically a Sega Astro City Player 2 layout – my favorite – minus the two buttons farthest to the right. Adding the four lever directions to the six buttons would give me ten different inputs, just one shy of the total available inputs on the Adafruit board.
Contrary to my regular sticks, the box would feature neither the two side Start-Select buttons, nor the side USB port. The two speakers would take their place, instead. Last but not least, I would add the rocker switch to make sure I can shut the circuit down and save some of that battery power.
I made the box following my usual arcade stick building MO, albeit making it a bit smaller. I added the extra slot on the front panel for the rocker switch, partially “burying” it into the panel to avoid accidental presses, and made two stadium-shaped holes to the side panels for the two speakers. Then, I cut out a piece of plexi with rounded corners to use as the bottom panel, so that Pietro could see the components and the PCB’s lights while on.
I initially painted the box in a bluish grey, that would look quite nice with the rest of the colors, but after a while I realized that there was something missing. So I designed and printed a stencil: a lightning just like the one featured on Quicksilver’s uniform.
And then came arguably the longest part of the process: choosing the right sounds and assigning them to the buttons and lever directions in a way that made sense – at least to me; I doubt that it would have made any difference to Pietro.
This device’s purpose is to introduce Pietro to fighting games, so I wanted to put fighting game sounds coming out of it, like grunts from punches and kicks and special move shouts. I went for the most famous series of the genre, Street Fighter, and chose my favorite chapter from it: Street Fighter Alpha 3. In particular, I decided to use the sounds from Street Fighter Alpha 3 MAX, the Playstation Portable (PSP) version from 2006, which featured the biggest available cast of characters. I got all the sounds from the amazing site “The Sounds Resource” and then came the hardest part: deciding how to assign the different sounds.
You can assign up to ten different sounds to every input, and, depending on how you name those sounds, the Adafruit Audio FX board will either play them in a sequence upon consecutive button presses, or randomly.
The configuration I settled for was: use male voices for the upper three buttons – that would have been the punches in a standard Street Fighter button layout – and female voices for the lower three buttons – where you’d normally find the kicks. The voices I chose were grunts of increasing intensity, going left to right, just like LP, MP, HP, and I assigned an average of nine to ten different sounds on each of the buttons.
Since a player has to perform specific lever movements to execute special moves, those went to the four lever directions: down featured all the quarter circle moves, like Ryu and Ken’s Hadoken and Tatsumaki Senpukyaku; right featured the dragon punch moves, like Ryu and Ken’s Shoryuken; left featured the back dragon punch moves, like Adon’s Jaguar Kick, and back charging moves, like E. Honda’s Sumo Headbutt; down featured the down charging moves, like Guile’s Flash Kick.
With an arrangement of sounds that seemed to make sense semantically, the Arcade Soundstick was finally assembled, loaded with sounds and ready to roll!
I immediately gave it to Pietro and he immediately proved to be an excellent beta tester… After pushing various buttons and pulling the lever in various directions, he grabbed the box and threw it on the floor and it immediately stopped working; he had discovered the first of the Soundstick’s weak points: the open-style battery pack. The impact had made one of the AA batteries pop out of the pack. So I went to Amazon, got a new, closed-style battery pack, and glued it underneath the top panel. Pietro continued his drop-tests, proving that neither of the different types of glue that I used could actually keep the battery pack firmly attached. I managed to screw it directly to the chassis, solving the problem once and for all.
His testing also showed me that plexiglass isn’t a great choice for the transparent bottom panel, as cracks were quickly formed around the screw holes. This allowed me to discover polycarbonate, a transparent material which is softer, more elastic and therefore a significantly better choice for the job.
And thus, the first Arcade Soundstick was complete!
Of course, Pietro still mostly uses it as a step, activating the different sounds with his feet…
Kids these days…