View on GitHub

CONS&STUFF

Rhythm controllers DIY guides

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:

Image

Other Projects:

  1. Sound Voltex PC Controller, using a Teensy 3.2 PCB
  2. IIDX Beatmania PC Controller, using a Leonardo Arduino
  3. 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:

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.


Index

  1. Why?
  2. Variations
  3. Code
  4. Parts List / Hardware
  5. Parts List / Building Materials
  6. Software & Wiring
  7. Asembly /Building the controller
  8. Gallery

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:

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.


Variations

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:

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.


Code

Initial code here

https://github.com/lizardbeans/iidxsdvx

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

</img>

Arduino Leonardo $10 Chinese shop Chinese knock-off works just fine.

Arduino Leonardo $12 US Seller

Encoders

</img>

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.

</img>

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.

Knobs

</img>

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

</img>

Option 3 Cheap-o small knobs $1.70 each Check the Gallery, these are really cheap aluminium knobs, but they do the job.

Buttons

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.

Chinese Beatmania button pack 7 (50x33) + 2 (33x33)+ LED + Microswitch $30

Chinese Beatmania button pack 10 pcs. + LEDS + Microswitch $29

Chinese Start Button 33x33 $2

Sanwa Original Arcade 50x33 button $12 each

Microswitch

Here you can go full cheap using the included microswitches that come with the buttons, or go full Arcade Style with Omron microswitches.

Cheap Chinese Microswitch 10 pcs. $8

Omron D2MV-01-1C3 (50gr.) (10 pcs.)$75 Ebay

Omron D2MV-01-1C3 (50gr.) $3 each Rakuten Global

FYI: D2MV-01-1C1 = 10g. pressure D2MV-01-1C2 = 25g. pressure D2MV-01-1C3 = 50g. pressure

Original Arcade Feel = 100g spring + 50g microswitch

Misc

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).

</img>

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.

</img>

Main mounting plate

Button pads

Turntable mounting plate

Turntable base

Turntable disc

Mounting Box

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.

</img>

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:

</img>

You can daisy-chain all the grounds in a single wire like this diagram:

Thanks to LEONARDOjoy tutorial for this image.

</img>

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.

</img>

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)

</img>

You’ll end up with a single wire like this:

</img>

And for the high quality encoders (600ppr) you should wire it like this:

</img>

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.

PIN DIAGRAM

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.

</img>

This table shows configuration for both keypad layouts.

Hybrid IIDX-SDVX Layout

(revision pending)

Button Pin # Button # LED Pin #
FxR 11 Button 8 no LED
FxL 12 Button 9 no LED
BT-A 13 Button 7 6
BT-B A0 Button 5 7
BT-C A1 Button 3 8
BT-D A2 Button 1 9
Start A3 Button 4 10
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)

</tr> </tbody></table> That leaves pin 6 to 10 for LEDS (5 buttons) **Beatmania IIDX only Layout**
ENCODERS DATA 1 DATA 2
Encoder Right 0 1
Encoder Left 2 3
Encoder Turntable 4 5
Button Pin # Button # LED Pin #
Start 11 Button 8 2
VFX 12 Button 9 3
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
</tr> </tbody></table> That leaves pins 2 to 10 for LEDS (9 LEDS, enough for each button)


## Assembly / Building the controller 1. Take the keypad of your choose. In this case I'll be using the IIDX&SDVX hybrid keypad 2. Prepare buttons with the ammount of pressure you like (button + spring + led + microswitch) 3. Insert every button where it belongs and screw the plastic nut from bellow 4. Insert both cheap encoders and screw the nut from above. 5. Mount the disc mounting plate on the Main mounting plate with the screws. 6. Mount the disc base on top of the Disc mounting plate with screws. 7. Mount th ehigh quality encoder in it's place with 3 screws. 8. Turn around the main mounting plate and mount the Leonardo and Protoboard/Breadboard 9. Wire every pin on the Leonardo PCB with a pin on the Breadboard using jumper wires. 10. Also wire one Ground to the PCB. 11. Mount the keypad plate on the Main plate with screws. 12. Wire every button and LED with the breadboard using jumper wires. 13. Connect the PCB to the computer using a USB cable, and using Arduino IDE load the code into the Arduino Leonardo. 14. Finally mount the plate onto the mounting box and mount the disc on the high quality encoder. If everything went right there should be a new Arduino controller on your pc. Buttons 1 to 9 are the main buttons, and X and Y axis are both encoders.
## Gallery [Check out these awesome pictures!](http://imgur.com/a/Vh7uL) ## Troubleshooting **How do I insert the code into the Leonardo?** * Donwload Arduino IDE (version 1.6.5), then connect your board to your pc. **How do I literally insert THE code into the Leonardo??** * Inside the code folders there is a .ino file (leovx.ino, loevxhq.ino). Double click it and it'll open Arduino IDE. Connect your Arduino to your PC and click UPLOAD (arrow pointing to the right), and you're done. **Multiple errors with scary red font when I try to UPLOAD the code** * Inside Arduino IDE click *Tools*, then *Board:* and choose *Arduino Leonardo* **Still multiple errors, please?** * It depends on the situation and the error, I can't help you with that. **LED's are not turning on** * Be sure the LED is in the right position. Try taking it out and inserting it again rotating it 180°. **Button/Turntable is not working** * Each button needs to be connected to it's pin and to the ground (GND). If it's not connected to any GND pin it won't work. **Turntable is wonky and it'll skip frequently** * Adjunt the sensibility of your encoder inside the code, the instructions are inside the file.
ENCODERS DATA 1 DATA 2
Encoder Tuntable 0 1