Modality supports using multiple controllers of the exact same type; one can make an MKtl for each one of them. In the following example, two Saitek Impact gamepads are connected to the computer.// find the 2 HID gamepads MKtl.find(\hid); // this is posted: MKtl('hid_5_usb_ga', 'hid_5_usb_game_controllers'); // [ "USB Game Controllers", "Mega World" ] // create from desc file: MKtl('hid_8_usb_ga', "saitek-impact-gamepad", multiIndex: 0); MKtl('hid_6_usb_ga', 'hid_6_usb_game_controllers'); // [ "USB Game Controllers", "Mega World" ] // create from desc file: MKtl('hid_8_usb_ga', "saitek-impact-gamepad", multiIndex: 1); // the posted code shows both options how to create the two MKtls: // 1. use the symbol which is a unique key for that device // - this key will be the same when the same set of controllers is connected again. MKtl('mygp1', 'hid_5_usb_game_controllers'); MKtl('mygp2', 'hid_6_usb_game_controllers'); MKtl('mygp1').trace.gui; MKtl('mygp2').trace.gui; // non-existent keys will not create an MKtl MKtl('mygp4', 'hid_12_usb_game_controllers'); // 2. use the line under // create from desc file: MKtl('gpL', "saitek-impact-gamepad", multiIndex: 0); // if you know the device index beforehand, // you can set the multiIndex on creation: MKtl('gpR', "saitek-impact-gamepad", multiIndex: 1); MKtl('gpR').trace; // MIDI works exactly the same way: // - connect 2 nanokontrol2, and find them: MKtl.find(\midi); // use desc filename and multiIndex as above: l = MKtl('nk2b', "korg-nanokontrol2", multiIndex: 0).trace; m = MKtl('nk2w', "korg-nanokontrol2", multiIndex: 1).trace; // In case you dont know the multiIndex beforehand, you can do this: MKtl('gpL', "saitek-impact-gamepad"); // ... which will post info and instructions on how to proceed: Meta_MKtlDevice:open: multiple device candidates found, please disambiguate by providing a multiIndex! The candidates are: multiIndex 0: ( 'idInfo': "USB Game Controllers_Mega World", 'protocol': 'hid', 'multiIndex': 0, 'filenames': [ "saitek-impact-gamepad" ], 'descs': [ ], 'lookupName': 'hid_7_usb_game_controllers', 'filename': "saitek-impact-gamepad", 'deviceInfo': HIDInfo.new ) multiIndex 1: ( 'idInfo': "USB Game Controllers_Mega World", 'protocol': 'hid', 'multiIndex': 1, 'filenames': [ "saitek-impact-gamepad" ], 'descs': [ ], 'lookupName': 'hid_8_usb_game_controllers', 'filename': "saitek-impact-gamepad", 'deviceInfo': HIDInfo.new ) // You can then continue by opening the device with a multiIndex MKtl('gpL').openDevice(true, 0);