Hybrid IIDX-SDVX Controller (DIY)
Last update: February 24th 2017 Note: I am no longer supporting this as a Hybrid Controller because it was way too complicated to put everything inside the box. So, as of now there will be no more updates to this tutorial.
Instead I did a copy of this and made a DIY IIDX Controller only (No Hybrid). You can check it out here:
- Sound Voltex PC Controller, using a Teensy 3.2 PCB
- IIDX Beatmania PC Controller, using a Leonardo Arduino
- Sound Voltex Minicon for $90
This how-to is based on two other instructions on how to make a DIY controller using an Arduino PCB. Many thanks to:
LEONARDOjoy For the style and useful info regarding the Leonardo PCB
Original Hybrid IIDX-SDVX instructions, by 4yn For the original code and the original sketch for the acrylic base.
At the end of this tutorial you’ll know how to make a Beatmania IIDX Controller + Soundvoltex keypad, and what you need to make one.
- Parts List / Hardware
- Parts List / Building Materials
- Software & Wiring
- Asembly /Building the controller
Why would you do this? (A.K.A. the part you can skip)
Where I come from we have just a few options to play Beatmania:
- 1 or 2 arcades without E-Amusement support
- Buying the japanese or american KOC for $100+ US Dollars locally
- Importing a DJDAO FPS form gamo2.com for $199 + $100 shipping
- Importing any other controller from EBAY or such.
- Doing your own controller, importing all the smaller stuff.
So basically this instructions cover the last option.
Following these instructions you will end up with a controller that works on PC, and that’ll cost you about 100 total in the cheapest version (even cheaper if you use cardboard, I’d say 60), or even 200+ if you go for Sanwa buttons and Omron switches.
The code and CAD files included will let you make a DJDAO-size controller with interchangeable button plates, using an Arduino Leonardo to wire everything up.
Included in this tutorial you can choose from 2 variations:
Beatmania IIDX Controller (9 buttons + Turntable + 9 LEDs)
Beatmania IIDX+SDVX Controller (9 buttons + Turntable + 2 Knobs + 5 LEDs)
You can either build just one of them or build both. But you’d have to change the code everytime you change the button keypad layout.
Due to the number of pins it’s imposible to have 3 encoders, 9 buttons and also have 9 LED’s, so you either use me code (with only 5 LED’s) or modify it to remove 1 encoder for 2 more LED’s.
Initial code here
It has the untested code for the IIDX only layout.
Part List / Hardware
Most of these links are from chinese webpages that give world-wide free shipping (if you can wait 2 months). Buying locally is also a good option.
Arduino Leonardo $10 Chinese shop Chinese knock-off works just fine.
High Quality rotary Encoders (600ppm) $10 This one is for the turntable. Alternatively you can use optical encoders, but those are not included in the code, nor do I know how to use them.
Low Quality Encoders (24ppm) $0.70 You’ll need 2 of these for both knobs. Alternatively you can use 2 High Quality encoders for the knobs, but I found that the cheap ones works just fine. Using 3 high quality encoders would need a new code anyway.
Option 1 (recomendable): 25x22 aluminium knobs $7.20 each The hybrid controller is smaller than a arcade SDVX controller, so it’s a little better to have thinner knobs.
Option 2 (Arcade size): 30x22 aluminium knobs $5 each
Option 3 Cheap-o small knobs $1.70 each Check the Gallery, these are really cheap aluminium knobs, but they do the job.
We need 15 Beatmania buttons + 2 start buttons for the full setup, or just 9 beatmania buttons + 2 start buttons if you don’t mind changing the buttons between keypads.
Here you can go full cheap using the included microswitches that come with the buttons, or go full Arcade Style with Omron microswitches.
FYI: D2MV-01-1C1 = 10g. pressure D2MV-01-1C2 = 25g. pressure D2MV-01-1C3 = 50g. pressure
Original Arcade Feel = 100g spring + 50g microswitch
Jumper Wires $9 Jumper wires are cheap and you can buy them locally or in china, and will make this work 200% easier. 40 cm long male-female jumper wires are ok, you’ll need one for each conection, so it’ll be 4 per button (36 total) and 3 per encoder (6 total).
Crimp conectors 50 pcs. $5 Solder these to the jumper cables to make it easier to change microswitches if they fail.You can also buy them on your local hardware store.
Protobar / Breadboard 400pin $2.20 You will need this.
Part List / Building Materials
Most of these parts should be CNC cut or laser cut (which is a little expensive). You can also use a cardboard box or wood planks. I used clear acrylic because it’s cheaper, also using only one thickness will make it even less expensive.
Main mounting plate
3 or 5mm Black/Clear Acrylic with holes for button pad and disc encoder, also screw holes. I used 5mm clear acrylic, but I found out it’s better to use 3mm black acrylic fr the DJDAO FPS look.
5mm Black/Clear acrylic with holes for buttons and encoders. Black looks way better, I used clear.
Turntable mounting plate
5mm Clear acrylic with holes for encoder and screws.
10mm (or 2x5mm) round discs with holes for encoder and mounting screws. Use this base to bring your turntable to your desirable height.
- 3mm or 5mm round disc with hole to fit the encoder. You can also cover this with a rubber skin for maximum gripness. The acrylic itself is really slippery.
- I used 9-12mm MDF for the box walls, 5,5mm MDF for the base and 3mm MDF for the back door. Every cut and hole was made by me with a saw and some sandpaper. Using an electric saw and a sandpaper machine is a lot easier.
I used what was available on the store, but on a next revision I’d go for 9mm walls, 3mm base and 3mm door, posibly made of acrylic.
You can find the CAD file in the github code page. (coming soon)
Software and Wiring
The wiring process is really simple using the stuff I told you to buy. The crimp conectors, the jumper wires and the breadboard will come in handy when you have to mount all up.
First let’s talk about microswitches.
Microswitches can have 2 or 3 contacts depending if they’re chinese or Omron brand switches. The first one usually have 3 contacts: the one from bellow it’s the ground (GND) and the lower right one is the input. The third one on the upper right it’s always closed, we won’t use it. Omron switches come only with the lower and lower right contacts. Check out this diagram:
You can daisy-chain all the grounds in a single wire like this diagram:
Thanks to LEONARDOjoy tutorial for this image.
But what I’m doing is have a single wire that has both the Input pin and the LED pin, with one common ground. The three wires then go to the breadboard.
That way you’ll have one single wire coming from a single button, instead of a single wire connected to every button (which is kind of messy)
Then we have the encoders.
This is how you wire the cheap ones (24ppr)
You’ll end up with a single wire like this:
And for the high quality encoders (600ppr) you should wire it like this:
These encoders nees a 5v input from the PCB. The Leaonardo PCB has a 5v output (marked as 5v pin) so that’s where you should plug that wire.
The pins are assigned to every button and encoder. You’ll see that the PCB has many pins from A0 to A5, and from 0 to 13, so you’ll have 19 pins in total. Remember that buttons use one pin, but encoders will use 2 pins for the cheap ones and 3 pins for the high quality (Pending revision). The PCB also has 3 grounds (GND) to choose from.
This table shows configuration for both keypad layouts.
Hybrid IIDX-SDVX Layout
|Button||Pin #||Button #||LED Pin #|
|FxR||11||Button 8||no LED|
|FxL||12||Button 9||no LED|
|Button 6||A4||Button 6||no LED|
|Button 2||A5||Button 2||no LED|
BUtton 2 and 6 are not used in SoundVoltex unless you want to use them as the Service button and Test button (which I don’t recommend)
|ENCODERS||DATA 1||DATA 2|
|Encoder Turntable||4||5</tr> </tbody></table> That leaves pin 6 to 10 for LEDS (5 buttons) **Beatmania IIDX only Layout**|
|Button||Pin #||Button #||LED Pin #|
|Button 1||13||Button 1||4|
|Button 2||A0||Button 2||5|
|Button 3||A1||Button 3||6|
|Button 4||A2||Button 4||7|
|Button 5||A3||Button 5||8|
|Button 6||A4||Button 6||9|
|Button 7||A5||Button 7||10|
|ENCODERS||DATA 1||DATA 2|
|Encoder Tuntable||0||1</tr> </tbody></table> That leaves pins 2 to 10 for LEDS (9 LEDS, enough for each button)|