The Femulator now looks almost identical to the USBlyzer output of the F1, except that it is only a Full-Speed device, not a high-speed device. The Arduino UNO uses the ATMEGA8U2, which is not capable of High-Speed. This means there is no “Other Speed Device Configuration” section in the USB descriptor, and the endpoint interrupt timing is 4ms instead of 1ms.
According to this forum post:
Currently DJTT has no plan to open source the 3D firmware – this may change in the future as personally I prefer it that way.
The AT90USB162 used in the classic & pro has 16K of Flash, the ATMEGA32U4 used in the MF3D has 32K of flash, if I recall correctly the last build was at 86% of the total memory, 12.5% is used by the bootloader, leaving 1.5% free.
Furthermore – and this is the real reason why the Classic and Pro cannot have HID support added, the AT90USB162 only has two data endpoints in its USB controller, making it impossible to use both USB Audio MIDI and HID interfaces at the same time.
So the MF3D (which is able to emulate the F1) uses the newer 3U chip, which is high-speed. Should high-speed become an issue, the Arduino Leonardo uses a 3U chip, which can be high-speed, and will work with the same LUFA code just by changing the MCU in the project Makefile. The only reason I’m using an UNO for this project is because I had one on-hand already. If this thing actually works, using an ATMEGA8U2 breakout board might be a cheaper alternative to the UNO ($19 vs. $29).
It is disappointing to read that the source for the MF3D will not be released, especially since the founder of the hack-the-f1 project, fatlimey (aka Robin Green, author or the Midi Fighter Classic and Pro firmware) most likely wrote the remix deck / f1 code for the MF3D, which I think is what he was hinting at in this post, made just shortly before the Remix Deck upgrade was announced for the MF3D:
Sorry for the slow progress people (especially fellow developers), the day job is kicking my ass currently (if I could tell you you’d understand why).
In any case, having Windows recognize the UNO as an F1 (and automatically installing the drivers) is encouraging enough to keep working on this project. Traktor isn’t recognizing the UNO yet, but that isn’t surprising since it doesn’t actually communicate any data yet.