Here’s a method I used to play a virtual synth drum patch with a cheap (£3 or £4 off eBay) USB game controller and the program MultiControl v0.4.
Here you can see the game controller I used (the type without joysticks), and the MultiControl window.
To set it up, plug in the game controller, open MultiControl and select ‘USB Gamepad’ or similar in the top right of the MultiControl window. There’s a drop-down list of devices that the program has detected, including the keyboard/mouse/trackpad of your computer, but it should be obvious which one is the game controller you want to use.
MultiControl is a MAX/MSP-based application, and will also open the MAX/MSP Status window. To start with, this window will probably show you some information relating the keyboard/mouse/trackpad of your computer, but once you’ve selected your game pad at the top, all you need to do is press each button: the program will detect each one and allocate it to a separate line in the MultiControl window.
There’s a video on YouTube explaining how to set up MultiControl, and how to use it. If you’re intending to do this, it would be good to look at that, here: www.youtube.com/watch?v=I0Z5WpiDQR8
This is the MAX/MSP Status window. On opening the program, it registered the information in the top half of the window; once I selected ‘USB Gamepad’ it began with ‘hi: focussing on USB Gamepad’ and waited for me to press the buttons; as I did so, it listed them (there are 11 on this device) and allocated them to lines 1-11 in the MultiControl window.
This is a general screen example, not from this Gamepad application, but you can see that the first column, ‘Input’, registers button presses – the shaded bar moves across the box as the button is pressed – and the 7th one, ‘Values’, shows (in the case of this Gamepad application) ’0′ when the button is not pressed (i.e. ‘off’), and ’1′ (i.e. ‘on’) while it’s pressed – except for the hatswitch buttons, which can register 0, 0.5 or 1 at different times.
The 4th column shows each button’s control number, ‘c1′ being line one, ‘c2′ being line 2, and so on. This information will be useful later on.
The rest of the left-hand side of the MultiControl window is not important for this purpose, but the right-hand side, the MIDI side, is. To allocate the 11 controls to particular MIDI drums, I had to turn MIDI output on by clicking the small box at the top marked ‘MIDI on’; change the first 11 boxes in the next column to ‘noteout’ rather than ‘ctlout’; and set the MIDI note number for each in the next column ‘MIDI range’.
You can see this in the instruction video, the range being set by clicking and dragging; but in the video you see a rather vague range being set. The boxes in the ‘MIDI range’ column are so small that it’s very difficult (well, I found it impossible) to set precise values – it was OK starting from 0 on the left-hand end of the box, actually, but getting the upper value correct was the hard bit. Unfortunately, this upper value is critical, as it represents the exact MIDI note number of the drum sound you want to make when you press that button.
However, this can easily be got round. This is because it’s possible, using the ‘Save file’ box at the bottom, to save your settings and then retrieve them later, so you don’t have to input them all again every time you want to use a particular gamepad or other device for a particular purpose. I used this feature to input the exact values I needed, in the following way:
First of all I worked out which buttons I wanted to operate which drums. Practising with the virtual synth I intended to use, I noted which drum was which, and which note of the keyboard produced that particular drum sound. Using my chart of notes and MIDI numbers I listed the 11 buttons and wrote the appropriate MIDI note against each one.
By clicking and dragging from the left hand side to somewhere in the middle of each of the 11 boxes in the ‘MIDI Range’ column, I produced a number in the next column, ‘values’, that was pretty close to the MIDI note number I needed for that particular drum sound when the button was pressed. In every case I had been able to get it to show 0 when the button was not pressed, which is what was needed. I then saved the settings file with an appropriate name. These files have the extension ‘.xml’.
I then opened the .xml file in a text program (e.g. BBEdit). Apart from some general stuff at the beginning, each button had a long entry between the tags <patcher name => and </patcher>. They didn’t come out in order from 1-11, but this is the entry for the button described on line one, as you can see from the line near the bottom, which says “text edit” value = “c1″.
You could, I suppose, edit any of the values in here. I’m not at all certain what they all are, but the one that needs editing in this instance is the 4th line: “X Range” value = “0 51″. The meaning of this is that pressing the button moves the value output from o (no note) to 51 (D#3 – can’t remember off the top of my head what drum sound that represented in the virtual synth I was using). If you go through each of the entries and make sure that the first number is 0 and the second one is the MIDI note that button is supposed to output, you can save the file when you’re done, with all the right numbers in it.
Next time you want to use this controller for this application, you can just click ‘Open file’ and ‘Load’, and all your saved settings will appear.
The only remaining thing you need to know is how to set up the inputs and outputs. MultiController has a window for this, which appears when you choose ‘MIDI Setup . . .’ from the ‘File’ menu. My notes to myself say to set it up like this:
(Although it seems likely that I meant “to MultiControl 1″ or “to MultiControl 2″ and “from MultiControl 1″ or “from MultiControl 2″. If no other MIDI devices are being used at the same time, it almost certainly doesn’t matter).
You might need to use the IAC Driver Bus 1 or 2, depending on the number of MIDI devices you’re using at the same time, but whatever you end up doing, you’ll need to change the ‘MIDI Device’ setting at the bottom of the main MultiControl window, and the input device setting of the synth you’re using, so that they agree.
If you need to change the ‘Audio MIDI Setup’ (on a Mac, at any rate), clicking the ‘System Setup . . .’ button in the bottom left of the MultiControl MIDI Setup window will open that for you, instead of you having to go to ‘System Preferences’.