UPDATE: Version 1.3.3 released, later in this thread!
== Intro ==
I recently purchased a VCI-100 SE. After reading a lot of different reviews about different USB DJ controller it seemed like the right choice. With all those good feedbacks and reviews I read, I was very surprised to receive a device with which you can't do serious beat matching. It's only after searching this forum that I found all the complaints about this particular problem and the workarounds.
But there's one really good thing about the VCI-100 it's the fact that you can reprogram it. I'm quite into hardware hacking in general, so I downloaded the 1.3 firmware, fired up my favorite disassembler, and wasted some time on it in order to fix it
I'm very happy to present an unofficial 1.3.1 version of the firmware that has a 4x better precision for pitch faders than previous firmwares, look at the attached picture to see what that means!
== New features ==
- Improved pitch faders resolution (512 steps instead of 128)
== Howto ==
To upgrade your firmware you need to follow the 1.3 upgrade instructions, but with the proper firmware file.
This new firmware sends the old messages as well as the new ones, so it's compatible with the DJtechtools Traktor settings out of the box, but if you want the extra bits of precision you need to remap your Tempo settings (someone please make an import file for Traktor?)
- Deck A/C Tempo = CH02.PitchBend
- Deck B/D Tempo = CH03.PitchBend
- Deck A/C Tempo Reset = CH02.Note.C0
- Deck B/D Tempo Reset = CH02.Note.C#0
== Technical Details ==
All the analog faders & knobs on the VCI-100 are read using the main MCU (h8/300) built-in AD converters. Those converters have a precision of 10 bits. The previous firmwares converted those signals to 7 bits so it can fit in a regular Control Change MIDI message. In my 1.3.1 firmware, the pitch faders are converted to 9 bits then sent as a Pitch Bend MIDI message which has a 14 bits precision.
Why using 9 bits instead of 10 bits ? I worry that if the analog value is just between two digital values, it may oscillate between the two (due to noise) and so MIDI messages may be sent even when the pitch fader didn't move. The extra bit is required to avoid this kind of situation.
In theory it's possible to use 14 bits of precision for the pitch faders using a small hardware mod involving an external AD. Is it worth it? I dont know!
For interested people I've attached a couple of screenshots from the reverse-engineering process showing the same piece of code before and after all the guesswork and analysis
== Closing words ==
While I tested it, this release is a beta version so I'm waiting for your feedback. I've taken great care of polishing all the details, and you don't risk anything as you can always downgrade to 1.3 or 1.2 afterwards.