Vestax VCI-100mkII

  • Update for mixxx 1.12beta (4-deck and 4-fx ready)
  • Change the name from “Vestax VCI-100MKIIa” to “Vestax VCI-100MKII”

deck switch AC --> switch controls between Channel1 and Channel3
deck switch BD --> switch controls between Channel2 and Channel4

brower up --> SelectPrevTrack and scroll
brower down --> SelectNextTrack and scroll
brower left --> LoadSelectedTrack to left
brower right --> LoadSelectedTrack to right
brower push --> LoadSelectedIntoFirstStopped

play --> play
cue --> cue_default
I --> if the deck is playing then cue_gotoandplay, else cue_gotoandstop
II --> sync_enabled

cross fader (9-bit resolution) --> crossfader
input fader (9-bit resolution) --> volume
pitch fader (9-bit resolution) --> rate
wheel (2400 pulse/rotation) --> if touched then scratch (disable keylock), else if the output is downed by faders then jog

hi --> equalizer high
mid --> equalizer mid
low --> equalizer low
pan --> pregain
gain --> waveform_zoom and change jog speed

fx1 --> enable fx1
[shift] fx1 --> enable fx3
fx2 --> enable fx2
[shift] fx2 --> enable fx4
monitor --> pfl

key --> keylock
sync --> slip_enabled (affect scratch, loop and hotcue)
filter button --> enable filter
filter knob --> filter

loop --> if loop_enabled then exit loop, else beatloop in the default beat (4 at the beginning)
[shift] loop --> if loop_enabled then newly beatloop in the default beat, else reloop
back --> if loop_enabled then loop_halve, else halve the default beat
[shift] back --> loop_in
fwd --> if loop_enabled then loop_double, else double the default beat
[shift] fwd --> loop_out

fx parameter button --> hotcue_X_activate
[shift] fx parameter button --> hotcue_X_clear

fx type up --> prev_chain
[shift] fx type up --> switch controls to fx1/fx2
fx type down --> next_chain
[shift] fx type down --> switch controls to fx3/fx4

fx1/3 parameter knob 1 --> parameter1
fx1/3 parameter knob 2 --> parameter2
fx1/3 parameter knob 3 --> parameter3
fx1/3 parameter knob 4 --> mix

fx2/4 parameter knob 1 --> parameter1
fx2/4 parameter knob 2 --> parameter2
fx2/4 parameter knob 3 --> parameter3
fx2/4 parameter knob 4 --> mix

main --> master volume (from 0 to 1)
mix --> headMix
vol --> headVolume (from 0 to 1)
VCI100MKII20150507.tar.gz (5.01 KB)

  • Add some functions

[shift] key --> pitch_up (one semitone up)
[shift] sync --> pitch_down (one semitone down)
monitor --> pfl (if headMix is cue or master only then switch it automatically)
VCI100MKII20150524.tar.gz (5.25 KB)

  • Add one more pitch function.

[shift] pitch fader --> pitch (from -5 to 5 semitones)
VCI100MKII20150712.tar.gz (5.34 KB)

I notice that instant sync by the new sync_enabled control occasionally fails, although sync mode works fine. For the workaround,

  • back to use legacy beatsync control, or
  • continue to use sync mode with quantize (automatically sync on start)
    I’d rather choose the latter, but there is no button for quantize, so change the layout (same as the mapping for mixxx 1.11).

sync --> quantize (change from slip_enabled)
filter button --> slip_enabled (change from enable filter. To disable filter, use the options menu: preferences -> equalizers -> equalizer rack -> quick effect)

[shift] monitor --> pfl of the rear deck (add)
input fader --> volume (change to use engine.setParameter instead of engine.setValue function)
VCI100MKII20150716.tar.gz (5.38 KB)

  • A few improvements.

wheel (change the acceleration curve of jog, from slower than before)
gain --> pitch (change, integer only)
[shift] key --> waveform_zoom_up (change)
[shift] sync --> waveform_zoom_down (change)
[shift] pitch fader --> playposition (change)
[shift] fx1/2 --> enable fx3/4 (display states while shifting)
[shift] monitor --> pfl solo (change)
VCI100MKII20150815.tar.gz (5.55 KB)

  • Some changes.

[shift] back --> loop_move_0.5_backward (change)
[shift] fwd --> loop_move_0.5_forward (change)
filter knob --> filter (high-pass only)

Filter knobs of this controller have no mid stop, and the filter control is too critcal around the mid point, I think, and my usage of it is almost always for high-pass, so I restrict the knob control to high-pass. To restore the original behavior, replace the lines of the xml file:









VCI100MKII20150913.tar.gz (5.57 KB)

Hello Sohet, I have also this controller, i tried to use your mapping files wthout any luck it says about it couldn’t find some functions on the script.

let me see which error i got.

how do i need to use these files? i have Ubuntu 14.04


Hi, freakbeat! I’m testing my latest mapping with Mixxx 1.12 beta on Debian jessie. What is your Mixxx version? If yours is old one (Ubuntu trusty’s official package is 1.10), please update it following the instruction.

sohet, i will check my version, my problem is to load the js script, i found somewhere in this forum that i need to place the files under /usr/share/mixxx/controller right? well i only have /usr/share/mixxx/midi let me know if i need to create the folder controllers? thanks

BTW this controller is amazing, i used with traktor before and i don’t need anything else,but i would like to get fully working on mixxx more stable in linux with more RAM Processor etc…


Versions before Mixxx 1.11 used the folder name ‘midi’ instead of ‘controllers’.

I got it!!, sohet, i don’t know why but on my controller didn’t work any of my EQ, the Gains was for the LOW EQ, the sliding faders didn’t work properly, they go all the way down but they are going up only to 3/4 of the way, i don’t know what’s wrong with my controller or they are different versions?

I see that yu have scratch control for the jog wheel, what about the ± BPM adjustment turning the outside of the jogwheel? it works?


Mixxx version is IMPORTANT! My latest mapping is exclusively for Mixxx 1.12. Many functions as EQ, FX, pitch, 14-bit control … are newly added to 1.12. Your Mixxx version seems to be before 1.11, so you need to update it as written before.

Or if you stick to old version for some special reason, download my old mapping “VCI100MKIIa20150402.tar.gz” for 1.11, though I’m not sure it works fine with 1.10.

“± BPM adjustment” is assigned to wheel as usual, but the function is valid only when input fader or cross fader is downed on the deck. Of course you can hear the sound through PFL.

Anyway, not all the mappings are same as Traktor’s defaults. For details, please read my “mappingVCI-100MKII.txt” with the Wiki page:

Can you please update the wiki page for this controller with a description and labeled diagrams of the mapping? Also, could you submit your updated mapping for inclusion in Mixxx? See the Contributing Mappings wiki page for more information.

I have no GitHub experience, but I’ll try it.

sohet, can you explain me on the script how to get modify about the jog wheel, i have just basic knowledge about programming, is more helpful for me to adjust the speed of the song all the time, no only when the fader is down, sometimes happen when you are mixing and the crossfader is in the middle, one of the two songs go out of sync, i use manual beatmatching to mix.


You can get it by replacing “else if” phrase of the funtion “VCI102.jog” with simple non conditional “else”.

VCI102.jog = function (ch, midino, value, status, group) {
    var deck = ch + 1;
    value -= 64;
    if (engine.isScratching(deck)) {
        engine.scratchTick(deck, value);
    } else {
        engine.setValue(group, "jog", value * value * value / 512);

The motive for inhibiting jog is to avoid harmful pitch bend after scratch in the slip mode, and one caused by careless touch. So, it’s better not to permit jog completely. A point of compromise may be inhibiting jog only if cross fader is max for the deck.

VCI102.jog = function (ch, midino, value, status, group) {
    var deck = ch + 1;
    value -= 64;
    if (engine.isScratching(deck)) {
        engine.scratchTick(deck, value);
    } else if ((engine.getValue(group, "orientation") - 1) * engine.getValue("[Master]", "crossfader") != 1) {
        engine.setValue(group, "jog", value * value * value / 512);

How do you think about this solution?

Sohet! wow! that’s a nice solution, i change the code and adjust some of the jogging and i got almost the same as the traktor.

i guess i need more get into javascript ? hahaha

your are awesome.

  • Loosen the permitting condition of jog.
    wheel --> if touched then scratch, else jog unless crossfader is at the max side

The mapping table is now available online.
You can also download the latest mapping files from there.

Great job Sohet, have you tried effects like spinback? there any option to configure the scratching, like when release the wheel and starts playing the song? how to do it i little bit slower.

Thank you!

There may be two ways to perform spinback.

#1 (At first, unlock jog by settting cross fader to mid in the case of my mapping.) Spin the wheel and press the start/stop button at the same time.
#2 Map the function “script.spinback” to a button in the XML file, and press it.

#1 is easy to be realized and affords flexible effects, but it may be difficult to get your favorite effect. #2 needs rewriting the XML and does not afford variable effects, but offers an easy way to get the stable effect.

The mapping does not include yet special effects as spinback, brake, reverse, … , but I think there is no room for them except one.