Virtual F1 --> Opening up the Remix Decks

Virtual F1 → Opening up the Remix Decks

Hi guys,
We were just brainstorming how to go about making the Remix Decks open to all controllers when we were cordially requested to post this in the modding part of the forum, so here it goes.
The proposition is to see if we can get some of you modding guru’s to work together on a Virtual F1 driver that translates the MIDI outputs and inputs of controller X to a virtual replicant of the Kontrol F1 and let this driver communicate with Traktor.

The idea:
To create a driver that acts a a Virtual F1 (let’s name it that way for now), that listens to MIDI signals from your controller, and maps these signals to the same HID messages that the Kontrol F1 sends and receives.

Now that might sound too easy, and of course it is. If we look at it, there’s communication in two ways, some of which might be quite straightforward, but some might prove difficult
1: controller → Traktor:
Controller sends message to Virtual F1 via MIDI
Virtual F1 analyses the MIDI message and maps it to the relevant HID message
Virtual F1 triggers the HID message
Traktor get’s the HID message and acts on it following the original Kontrol F1 mapping.

2: Traktor → Controller
Traktor outputs HID message (for instance, RGB LED variables)
Virtual F1 interprets the HID message and breaks it down into MIDI
Virtual F1 sends MIDI message to controller x
Controller x outputs the MIDI messages (by triggering the LED)

I’d say we need to try and break this into steps and see how far we get: first try to get MIDI messages translated into HID and see if can control some of the locked features. If that works we have a proof of concept and we try to map all of the F1’s commands to Traktor. If we get that far we might have some idea of how to translate the more complex messages from Traktor to your controller, but for me that’s a ‘nice to have’.

So how could we go about it?
1 find out exactly what messages the F1 sends out for each button, get a read-out of all of Kontrol F1’s messages
2 write a driver that can send those messages to Traktor
3 create a mapping table in which we can link MIDI messages to the according HID messages

Some remarks that were made in the original thread

[QUOTE]"indeed. in midimasher a hid device is defined in similar manor to a midi device - just that you’re defining hidpackets with offsets+bitmasks instead of midi messages of type cc/note/pc/pb etc

they all get converted to event names - pretty similar to how vdj does it. then piping these event names from a hid device to a midi device is as simple as from midi to midi etc.

fyi hid support is going into mixxx 1.11 not that it helps in any way here."[/QUOTE]

[QUOTE]“someone reverse engineered the X1 I believe.”[/QUOTE] Does anybody know about this?

[QUOTE]“You could also put it in the modding forum, where the modders could see it.”[/QUOTE] Okay

this^

I wonder if that’s even possible

First of all, MIDI is out of the question here. It’s HID, which is going to make this a pain.
Second, you’re gonna need an F1 to find out what HID commands it uses, and then build a MIDI to HID translator (which afaik doesn’t really exist yet)

Hate to be that guy, but this might be a tougher nut to crack than you think. You’re going to need some very skilled and dedicated people to pull this off.

I thought so too. will NI ever unlock it?

It’s a good idea, it would actually be easier to write a driver that just pretends to be an f1 and outputs the same hid commands. you just need sum1 to write it for you and buy them an f1. I dont know a single person who writes drivers who is ever out of work tho, so by the time they wrote it in there spare time NI would of probs opened up the extra controls

have you guys heard of midimasher? if zestoi gets the hid messages he should be able to make it work with his app as it uses both midi and HID, if he doesn’t chime in send him a p.m.

Ever heard of a HID to midi converter? Ever seen any one of the thousands of videos of people using Wiimotes, x box controllers, joysticks, or really anything that isn’t a midi controller, to control software?
this is going to be a fairly easy project. NI could have done it in a couple of hours if they weren’t greedy and wanting to sell more F1’s

HID isn’t really a standard in the same way as MIDI is. The implementation is different and proprietary.

Sure have, but that’s irrelevant. This project needs a midi to HID converter, and I’ve never heard of such thing.

Having said that, someone reverse engineered the X1 I believe, so it should all be possible

You could also put it in the modding forum, where the modders could see it.

Really? Where’d you read that? Can’t find anything about it, and considering the MIDI compatibility of the X1 I don’t really see the use of reverse engineering it in the first place tbh..

Would be a great point to start though!

as I said b4 all that is needed is a driver that sends the same hid messages as the f1, obv a differnt driver would need to be written for each device. 200 quid for the f1 is a bit steep in my opinion

Errr… I read it on here somewhere. Somewhere.

agreed - this is more the issue than just translating between hid and midi - the fact that someone would need to write a driver that pretends to be an F1 sufficiently well to fool traktor…

indeed. in midimasher a hid device is defined in similar manor to a midi device - just that you’re defining hidpackets with offsets+bitmasks instead of midi messages of type cc/note/pc/pb etc

they all get converted to event names - pretty similar to how vdj does it. then piping these event names from a hid device to a midi device is as simple as from midi to midi etc.

fyi hid support is going into mixxx 1.11 :wink: not that it helps in any way here :stuck_out_tongue:

that’s going the easy way tho - from a hid input to a virtual midi port and thru to the midi device/app. you’d still need a virtual F1 hid device driver since traktor needs to that talk to.

reading from and writing to a hid device is simple once you’ve mapped out the hid packets and any pre-amble handshaking that the device needs. i don’t have any NI controller so don’t know much about their hid format(s).

its funny you should mention mixxx, id really love to help out on that project I just dont have enough time

same here really - but u can always find time for things that u really want to :wink: i’ve often thought about getting involved but stuck with traktor after buying it. there’s just sooo much potential with mixxx tho, esp if you’re handy with C++ for the engine or javascript for the mappings

for now i’m just spending the time i would have been coding midimasher for mixxx work. bit of a shame as the new mini language for midimasher was almost done - but seems i was just in time to get up to speed and at least help out a bit with 1.11 of mixxx. i’ll hopefully be working on some traktor style modifier type functionality as well as midi stuff and general mapping enhancements for 1.12. with the new waveforms and recentish quantize + looping functionality it’s really not bad :slight_smile: will even have builtin key detection soon (for those that care about that kind of thing)

merged

In this thread another approach is mentioned: mimicking mouse movements in Lemur. Not perfect, but a creative workaround…