Gottlieb Gold Wings/System 80B - RasPi Soundboard (Custom Sounds!)

WindDrake

Well-known member
Joined
Apr 3, 2011
Messages
3,009
Reaction score
58
Location
Round Lake, Illinois
Gottlieb Gold Wings/System 80B - RasPi Soundboard (Custom Sounds!)

Okay, so here's the writeup I've been working on for this RPI Sys80B soundboard.

Video!:


All of the original work was done by Pinside user "jhanson", with the last post made over a year ago.

Here's the original post:
https://pinside.com/pinball/forum/topic/gottlieb-system-80b-raspberry-pi-soundboard-emulator

I've made a few changes (and filled in a lot of blanks) to jhanson's original work, and I'll outline them as we go along.

Shopping List (Sparkfun):
Logic Level Converter - BOB12009 - Qty. 2
Audio Plug 3.5mm - COM-11143 - Qty. 1
Snappable Protoboard - PRT-13268 - Qty. 1
GPIO Header - PRT-13054 - Qty. 1
GPIO Cable - CAB-13028 - Qty. 1
Pi Tin (Blk) - PRT-13102 - Qty. 1
16gb Class10 MicroSD - COM-13833 - Qty. 1
RPi 3 - DEV-13825 - Qty. 1

I could have used a number of level shifters to do the work, and ultimately, I used Sparkfun's little $3 units because I was lazy. Go figure I never used the snappable protoboard, as it was flexible. I ended up using some small chinese ones I got on eBay a year or so ago, that I forgot I had. Really, it was just to hold the ribbon cable connector, and give me a place to more securely tack wires.

As jhanson helpfully provided, I used the Sys80B pinout here http://www.papinball.com/tips/gtb_sound.html to work out the pinout. Simple cheapo Jamma fingerboards work great for making the edge connector, just cut them down to 18 contacts with a dremel, and cut in the keying notches while you're at it. I used a nothing special dremel cutoff wheel.

Also, make sure to install pullups on the Pin side of the level shifting harness, otherwise things will float around and the soundboard will act quite nuts. Simple 1k resistors to the 5v rail for each signal (5+Reset).

Signal/Power/Audio Hookups:
Looking at his python script, you can work out what your pinout needs to be.

Code:
RPI Side - Pin Side - Signal Name
   40         5         Sound 1
   37         3         Sound 2
   35         2         Sound 4
   33         1         Sound 8
   31         8         Sound 16
   29         9         /RESET

This is where the level shifters come into play. We can't just hook the pin's signal directly to the RPI, or it would blow up. The pin uses 5v signals, and our Pi's GPIO header is 3.3v only. It is not 5v tolerant like the Arduino.

So, we need to put the level shifter in the middle. For the Sparkfun units, you will wire it like this.

Pin Signal > HV# > LV# > RPI Pin.

Put plainly, the pin signal enters a numbered HV pin, goes out the LV pin of the same number, and then heads to the Pi GPIO header.

On the Sparkfun level shifters, ground between HV and LV is shared, so you only need 1 ground wire, not two. You can get HV side power from the 5V rail on the pin, and 3.3v power from GPIO Pin 1 (~250mA current limit, so our little level shifters are just fine here.) Also, as you likely notice, we need two of the aforementioned level shifters, as we only have 4 channels per level shifter, and 6 lines to shift.

GPIO Pinout:
https://superpiboy.files.wordpress.com/2014/07/raspberry-pi-rev2-gpio-pinout.jpg

Hooking the whole thing up is pretty self-explanatory. Hook up your signal lines and level shifter as I've detailed, provide the Pi 5v power on GPIO pins 2 and 4, and finally ground on 9.

3.5mm Pinout:
http://suhastech.com/wp-content/uploads/images/3.5mmstereopinout2.gif

From there, you need to hook up audio. Audio can be piped into the pin from the edge connector on pins 17 (AGND) and 18 (Audio). Using that 3.5mm jack, tie the ring and tip together (L/R), then run that to pin 18. Sleeve to pin 17 (AGND). Plug that into your Pi's headphone jack.

Software:
Now that we're done hooking everything up, it's on to the software. For this, you'll need a linux installation of some sort. I used Raspian. You'll also need to install Python 3 and Pygame. If you want to use Remote Desktop, you might want to install xrdp and tightvnc (and remove realvnc if using raspian, it makes xrdp puke). I'll leave the software end up to individual tastes, as I am no Linux expert.

I personally have a @Reboot cronjob set up to max the volume out, set the analog out as the audio output device, and start the python script. Should be all you need.

Script:
Here's the meat and potatoes of it all. I am no programmer by any standard, and what we've got here is just my attempts at cleaning up or modifying what jhanson did originally. There is logic in this script that plays certain sounds to specific channels so that things don't smash into eachother. If you're using this on another game, you'll have to likely redo a lot of that section to suit your specific game and sound selection.

Here's the link: http://pastebin.com/nyM2TJKZ

So that's pretty much it. If I missed anything, let me know and I'll fill in the blanks.
 

Attachments

  • IMG_20161007_171215.jpg
    IMG_20161007_171215.jpg
    136.6 KB · Views: 39
  • IMG_20161007_174218.jpg
    IMG_20161007_174218.jpg
    123.6 KB · Views: 41
Swinging back around to this project again since I've had multiple people ask me to copy it.

Latest Script: https://pastebin.com/gvYdPjp7

Obviously only works for Gold Wings. You'd need to sit and sort/contextualize sounds for any other Sys80B game, but it's all there. Not super hard.

Also working on this. PCB's went to fab today.

KDdCAjZl.png


Final version will have a protruding volume control, I didn't feel like re-mating a new part.

Shell will be 3D Printed. Colors shown are just for modeling purposes.
 
Hello all, soon my Gold WIngs will be full playable (boards revisions, new fuses, some mods, etc).
And now I want to change the background music with Top Gun soundtrack.
I like your project WindDrake, but do you have any videos of the final result?
Thanks for your work.
 
Back
Top Bottom