{"id":21487484,"url":"https://github.com/dtinth/i2dx","last_synced_at":"2025-06-23T18:33:17.437Z","repository":{"id":63372647,"uuid":"2512609","full_name":"dtinth/i2DX","owner":"dtinth","description":"Web-based IIDX controller for iPad / iPhone / Android (with Opera Mobile) (with server for Mac / Windows)","archived":false,"fork":false,"pushed_at":"2014-07-09T13:11:11.000Z","size":7480,"stargazers_count":43,"open_issues_count":3,"forks_count":12,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-05-02T06:07:11.779Z","etag":null,"topics":["python","tornado","websocket"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dtinth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-10-04T15:06:42.000Z","updated_at":"2024-03-17T10:22:14.000Z","dependencies_parsed_at":"2022-11-17T19:31:17.027Z","dependency_job_id":null,"html_url":"https://github.com/dtinth/i2DX","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fi2DX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fi2DX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fi2DX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fi2DX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtinth","download_url":"https://codeload.github.com/dtinth/i2DX/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226048021,"owners_count":17565441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","tornado","websocket"],"created_at":"2024-11-23T13:29:13.699Z","updated_at":"2024-11-23T13:29:14.308Z","avatar_url":"https://github.com/dtinth.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"* __Scroll Down__ for installation instructions (Windows and Mac OS X).\n* Go to [__Download Page__](https://github.com/dtinth/i2DX/downloads) to download latest version of i2DX.\n\n\n\u0026nbsp;\n\n\n__Video Demos__\n\n* [1 iPad + 1 iPod Touch + StepMania](http://www.youtube.com/watch?v=C3cZsZYK4Jo) / Ristaccia\n* [2 iPads + StepMania](http://www.youtube.com/watch?v=f7GBGOO5DRw\u0026feature=channel) / garden\n* [2 iPads v.s. Home Controller + Lunatic Rave 2](http://www.youtube.com/watch?v=RfJ5FoVZiBs) / being torn the sky\n* [1 iPad](http://www.youtube.com/watch?v=tiuCW311GEA) / Elisha\n\n\u0026nbsp;\n\n\u0026nbsp;\n\n\u0026nbsp;\n\n\ni2DX\n=======\n\ni2DX is a web-based IIDX controller for iPad / Opera Mobile. One night project 2011-10-04.\n\nYou can use it with [StepMania 5](http://www.stepmania.com/), especially with the\n[beatmaniaIIDX15 theme](http://www.stepmania.com/forums/showthread.php?28308-SM5-beatmaniaIIDX15-theme-and-noteskin\u0026p=195991#post195991).\nYou can also use it with Lunatic Rave 2, or other sims as well.\n\nBecause it is __web based__, you just need to run the server application on your computer,\nand then point your device's web browser to the server (they must be on the same wireless network!).\n__No application installation needed on the device.__ (I particularly like this because I could borrow\nsomeone's device and use it as a scratch controller [see below] :P).\n\n--------------\n\nIt uses the following technologies:\n\n* [WebSocket](http://websocket.org/)\n* Python __2.7__\n\t* [Tornado Web Server](http://www.tornadoweb.org/)\n\t* [pyOSC](https://trac.v2.nl/wiki/pyOSC)\n* [OSCulator](http://www.osculator.net/) (Mac)\n* [autopy](http://www.autopy.org/) (Windows)\n\n\n\nHow it works\n------------\n\nThe server serves the file to the device's web browser, which connects back to\nthe server via WebSocket and send the press / release events.\n\n__On Mac__: The WebSocket server then sends these events via OSC to OSCulator, which can then be used to\nmap the received OSC events to joystick events and pass it to the game.\n\n__On Windows__: The WebSocket server then use autopy to press the keys.\n\n\n\nThe Controllers\n---------------\n\n![Main Controller](http://dl.dropbox.com/u/25097375/Documentation%20Images/i2DX/Main.png?x=1)\n\n![Alternate Controller (scratch on the right)](http://dl.dropbox.com/u/25097375/Documentation%20Images/i2DX/Alternate.png?x=1)\n\n![Scratch Controller for iPad](http://dl.dropbox.com/u/25097375/Documentation%20Images/i2DX/Scratch2.png?x=1)\n\n![Scratch Controller for Small Screens](http://dl.dropbox.com/u/25097375/Documentation%20Images/i2DX/Scratch.png?x=1)\n\n\n\nSetup\n-----\n\n* A computer with beatmaniaIIDX simulator (I use StepMania 5 with IIDX15 theme)\n* An iPad or an Android tablet device with Opera Mobile\n* An additional device (iPad, iPhone, iPod touch, or almost any touch Android phones) (optional, used as a dedicated scratch controller)\n* A working WiFi connection (may or may not have internet access. In my opinion, ad-hoc is the best)\n\n\n\nServer Instructions (Mac OS X + OSCulator)\n------------------------------------------\n\nInstall [Python 2.7](http://www.python.org/download/) first.\n\nThen you have to install OSCulator, and then use Terminal to install Tornado and pyOSC Python modules.\n\n    sudo easy_install-2.7 tornado\n    sudo easy_install-2.7 https://trac.v2.nl/raw-attachment/wiki/pyOSC/pyOSC-0.3.5b-5294.tar.gz\n\nOpen OSCulator and set it to port 9000.\n\nThen, `cd` to the __server__ directory and then\n\n    python2.7 server-mac-osculator.py\n\nto start the i2DX server on port 9876. Make sure the port is accessible from the device.\n\nNow navigate your client to the the server (see __Client Instructions__ below).\n\nIf you press a button and the text changes to \"Disconnected\", then the key presses\ncould not get through to OSCulator. Fix it and refresh the page and try again.\n\nPress the buttons and try out the scratches. The OSC messages should show up in OSCulator.\nThen in OSCulator, map the messages to the joystick events and enjoy!\n\n\n\n\n\n\u003cspan id=\"easy-installation-windows\"\u003eServer Instructions (Windows + autopy) (Easy)\u003c/span\u003e\n---------------------------------------------\n\nJust download the latest [i2DX-Windows-abcdefg.zip](https://github.com/dtinth/i2DX/downloads),\nextract, go to __server__, and run __server-windows-autopy.exe__.\n\nOn your device, open a web browser and go to i2DX (see __Client Instructions__ below).\nTry pressing the buttons, it should type something on your keyboard.\n\n__Then open your game, and set the keyboard config, and enjoy!!__\n\nOr if you want to change the key when the button is being pressed,\nedit `key-config.txt`. (Do not leave any blank line.)\n\n\nServer Instructions (Windows + autopy) (Advanced)\n-------------------------------------------------\n\nDownload __Python__ from [python.org](http://python.org/download/). I use Python 2.7 as of time of writing.\n\nThen download and install [__AutoPy__](http://pypi.python.org/pypi/autopy/).\n\nThen download and install [__setuptools__](pypi.python.org/pypi/setuptools).\n\nThen open command prompt and run\n\n    C:\\Python27\\Scripts\\easy_install tornado\n\n(replace `C:\\Python27` with where you installed Python)\n\nAnd then go to the __server__ directory and run __server-windows-autopy.py__.\n\nNow navigate your client to the the server (see __Client Instructions__ below).\nTry pressing some keys, it should type something on your keyboard.\n\nWith that set, open your game and map the pressed key to the corresponding input!\n\n\n\n\n\n\u003cspan id=\"client-instructions\"\u003eClient Instructions\u003c/span\u003e\n-------------------\n\n__Android Users:__ use Opera Mobile!\n\n__For Opera Mobile:__ before using, go to opera:config and search for WebSockets\nand __Enable WebSockets__ first, then tap __Save__.\n\nThen, use your device's web browser to navigate to\n\n    http://[your ip]:9876/\n\nYou will see a launcher. Set the settings and click Launch i2DX.\n\nIf everything works correctly, then it should say \"Ready\" at the top left corner.\n\nYou can bring another device to use it as a dedicated scratch controller.\nI borrowed my friend's iPod Touch for this.\nHe also has a mat for his iPod so that it doesn't slip when he plays jubeat or other music\ngames on his iPod. Just telling you a story. ;p\n\nOn the iPad, the dedicated scratch controller supports rotational movements, so if you\ncan borrow another iPad, then you can use it as a scratch controller! On other devices, it\nonly supports up / down movement, but it can be used to make the buttons and the turntable farther.\n\nNow that if you have a scratch controller, you may not want it on the main controller anymore,\nyou can move the scratch area of the main controller to the right.\n\n\n\nHard Mode\n---------\n\nIn normal mode, you can slide between buttons.\nOn real machines / controllers, you might not be able to do that, so in hard\nmode, you cannot slide between buttons.\n\n\n\n\nOSC Message maps\n----------------\n\n* `/key/0`: Key 1\n* `/key/1`: Key 2\n* `/key/2`: Key 3\n* `/key/3`: Key 4\n* `/key/4`: Key 5\n* `/key/5`: Key 6\n* `/key/6`: Key 7\n* `/key/8`: Scratch Up\n* `/key/9`: Scratch Down\n\n\n\nKeyboard maps (Windows)\n-----------------------\n\n* `m`: Key 1\n* `k`: Key 2\n* `,`: Key 3\n* `l`: Key 4\n* `.`: Key 5\n* `;`: Key 6\n* `/`: Key 7\n* `[`: Scratch Up\n* `]`: Scratch Down\n* `o`: Start\n* `p`: Select\n\nYou can change key mappings in `server\\key-config.txt`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtinth%2Fi2dx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtinth%2Fi2dx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtinth%2Fi2dx/lists"}