Posts Tagged ‘arcade warrior’
After messing around with my own MIDI Fighter clone, I realized that although it had some very useful and expressive mappings for Traktor, its focus simply on the Drum Rack in Ableton Live is little bit… poor. That’s why I decided to create a little MIDI Script that would grant it some of the functionality that Launchpad or the APC has. More precisely Track, Clip, Device controls and of course keep the Drum Rack functionality.
For the purpose of developing and testing in hostile environments, where smuggling in a controller would be hard, I developed a simulation app in Processing, that would send the same MIDI values the MF Pro by simply using your computer keyboard. Also you can control the faders and knobs with the mouse. Simple, yet effective.
Now back to the Script. It consist of 4 pages, somehow similar to the Modes on the Novation Launchpad.
Page 1: is the General control page and consists of tempo controls, global play, stop and record and the controls to move around the “red box”
Page 2: is the Track control page. Each row corresponds to one of the rows inside of the red box. And it consits of Track select, Mut, Arm and Solo.
Page 3: is the Clip control page, you have a 4×3 grid and the top row is the stop button for each track.
Page 4: is the drum rack pad. It plays the highlighted 4×4 grid in the drum rack.
Also the knobs and faders get automatically mapped to the first effect device of the selected track.
Here is a detailed diagram of all the controls:
PS: thanks to gonecrazy3000 for pointing out that the preset buttons on the Beat Masher are arranged differently
so the pages would be like this:
preset button 1 =>page 3
preset button 2 =>page 1
preset button 3 =>page 4
preset button 4 =>page 2
Now go out, start a Fight and Loose. Peace!
Exams are finally over and I can spend much more time experimenting with controllers without any traces of guilt. The major highlight for this post will be my new Arcade Warrior controller, a shameless rip-off of the Midi Fighter Pro (thank you DJTT for being such a great source of inspiration), and the Teensy++ micro-controller board.
I will start off real quick with Teensy++, it’s a very nice and small AVR micro-controller, very similar to Arduino. In fact you can use the Arduino IDE and libraries to program Teensy, which is amazingly handy! But the reason I chose to try it was because of it’s MIDI Class Device support, something that Arduino can’t do. This means that it can act like any professional plug-and-play MIDI controller, no drivers, compatibility layers and virtual MIDI ports required!
Of course to test it out in practice, I had to build a new controller. And this one I wanted it to be a really fun to play and cool looking device, and what suits better than the old school arcade games that we all loved as kids. I wanted to build something as expressive as the Midi Fighter Pro, but throw couple of more extra controls in there and a Pac-Man era joystick. Also being able to use Midi Fighter’s already very developed Traktor mappings would save me tons of time and effort. Fortunately all the MIDI signals documentation and mappings are publicly available at DJ TechTools so it was very easy to implement.
Armed with ergonomically placed rapid fire arcade buttons, smooth professional audio gear potentiometers and the joystick controlling expressive gestures, it turned out to be a very nice and responsive controller.
PS: After a lot of questions about the wiring of the buttons I decided to update this post.
One of my goals when building this controller was to make things as simple as possible and use the least number of components. That’s one of the reason why I have included only 3 LEDs. The buttons and Joystick are wired in a very simple manner. All the ground pins (white cable in photo) are daisy chained together and end up on the ground pin of Teensy and all the colored wires are connected to one Digital Input pin on the Teensy, so no resistors required. In order to use this method, you have to enable the pull up resistor for each of the pins in your microcontroller, and this is done by setting the pin mode to
pinMode(buttons[i],INPUT_PULLUP); during initialization.
Also note that if you use the pin 6, which is the one that has a LED on the Teensy, you have to set it to
pinMode(6,OUTPUT); in order for it to function like the rest.
Finally, since now the buttons operate in active-low logic, this means that if the button is pressed it becomes LOW other wise its HIGH, you have to check for button presses like this
if (buttonState[i]->read()==LOW)//is pressed
Also all the analog controls are routed through the breadboards and ribbon cables directly to one analog input on the Teensy.
Here is one simple diagram and a photo of my wiring. Hopefully this clarifies things.
Enjoy and keep your emails coming!