Web-based IIDX controller for iPad / iPhone / Android (with Opera Mobile) (with server for Mac / Windows)
i2DX is a web-based IIDX controller for iPad / Opera Mobile. One night project 2011-10-04.
You can use it with StepMania 5, especially with the beatmaniaIIDX15 theme. You can also use it with Lunatic Rave 2, or other sims as well.
Because it is web based, you just need to run the server application on your computer, and then point your device's web browser to the server (they must be on the same wireless network!). No application installation needed on the device. (I particularly like this because I could borrow someone's device and use it as a scratch controller [see below] :P).
It uses the following technologies:
The server serves the file to the device's web browser, which connects back to the server via WebSocket and send the press / release events.
On Mac: The WebSocket server then sends these events via OSC to OSCulator, which can then be used to map the received OSC events to joystick events and pass it to the game.
On Windows: The WebSocket server then use autopy to press the keys.
Install Python 2.7 first.
Then you have to install OSCulator, and then use Terminal to install Tornado and pyOSC Python modules.
sudo easy_install-2.7 tornado sudo easy_install-2.7 https://trac.v2.nl/raw-attachment/wiki/pyOSC/pyOSC-0.3.5b-5294.tar.gz
Open OSCulator and set it to port 9000.
cd to the server directory and then
to start the i2DX server on port 9876. Make sure the port is accessible from the device.
Now navigate your client to the the server (see Client Instructions below).
If you press a button and the text changes to "Disconnected", then the key presses could not get through to OSCulator. Fix it and refresh the page and try again.
Press the buttons and try out the scratches. The OSC messages should show up in OSCulator. Then in OSCulator, map the messages to the joystick events and enjoy!
Just download the latest i2DX-Windows-abcdefg.zip, extract, go to server, and run server-windows-autopy.exe.
On your device, open a web browser and go to i2DX (see Client Instructions below). Try pressing the buttons, it should type something on your keyboard.
Then open your game, and set the keyboard config, and enjoy!!
Or if you want to change the key when the button is being pressed,
key-config.txt. (Do not leave any blank line.)
Download Python from python.org. I use Python 2.7 as of time of writing.
Then download and install AutoPy.
Then download and install setuptools.
Then open command prompt and run
C:\Python27 with where you installed Python)
And then go to the server directory and run server-windows-autopy.py.
Now navigate your client to the the server (see Client Instructions below). Try pressing some keys, it should type something on your keyboard.
With that set, open your game and map the pressed key to the corresponding input!
Android Users: use Opera Mobile!
For Opera Mobile: before using, go to opera:config and search for WebSockets and Enable WebSockets first, then tap Save.
Then, use your device's web browser to navigate to
You will see a launcher. Set the settings and click Launch i2DX.
If everything works correctly, then it should say "Ready" at the top left corner.
You can bring another device to use it as a dedicated scratch controller. I borrowed my friend's iPod Touch for this. He also has a mat for his iPod so that it doesn't slip when he plays jubeat or other music games on his iPod. Just telling you a story. ;p
On the iPad, the dedicated scratch controller supports rotational movements, so if you can borrow another iPad, then you can use it as a scratch controller! On other devices, it only supports up / down movement, but it can be used to make the buttons and the turntable farther.
Now that if you have a scratch controller, you may not want it on the main controller anymore, you can move the scratch area of the main controller to the right.
In normal mode, you can slide between buttons. On real machines / controllers, you might not be able to do that, so in hard mode, you cannot slide between buttons.
/key/0: Key 1
/key/1: Key 2
/key/2: Key 3
/key/3: Key 4
/key/4: Key 5
/key/5: Key 6
/key/6: Key 7
/key/8: Scratch Up
/key/9: Scratch Down
m: Key 1
k: Key 2
,: Key 3
l: Key 4
.: Key 5
;: Key 6
/: Key 7
[: Scratch Up
]: Scratch Down
You can change key mappings in