<?xml version="1.0" encoding="utf-8"?>
<MixxxControllerPreset mixxxVersion="1.11.0+" schemaVersion="1">
	<info>
		<name>Vestax VCI-300</name>
		<author>Uwe Klotz</author>
		<forums>http://www.mixxx.org/forums/viewtopic.php?f=7&amp;t=4021</forums>
                <wiki>http://mixxx.org/wiki/doku.php/vestax_vci-300</wiki>
	</info>
	<controller id="Vestax VCI-300">
		<scriptfiles>
			<file filename="Vestax-VCI-300-scripts.js" functionprefix="VestaxVCI300"/>
		</scriptfiles>
		<controls>
<!-- Master Controls -->
			<control>
				<group>[Master]</group>
				<midino>0x18</midino>
				<status>0xB0</status>
				<key>crossfader</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x1A</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onCrossfaderCurve</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x1B</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onLinefaderCurve</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x19</midino>
				<status>0xB0</status>
				<key>headMix</key>
				<options>
					<invert/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x52</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onScrollButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Navigation Controls -->
			<control>
				<group>[Master]</group>
				<midino>0x4A</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCratesButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x4B</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onFilesButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x4C</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onBrowseButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x4D</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onNavigationUpButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x4E</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onNavigationDownButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x4F</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onNavigationBackButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x50</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onNavigationFwdButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Master]</group>
				<midino>0x51</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onNavigationTabButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Monitor Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x36</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPFLButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x49</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPFLButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Shift Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x31</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onShiftButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x44</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onShiftButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Cue/Play Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x24</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCueButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x37</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCueButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x25</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPlayButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x38</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPlayButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x32</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCensorReverseButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x45</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCensorReverseButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Volume Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x0E</midino>
				<status>0xB0</status>
				<key>pregain</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x14</midino>
				<status>0xB0</status>
				<key>pregain</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x0C</midino>
				<status>0xB0</status>
				<key>volume</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x12</midino>
				<status>0xB0</status>
				<key>volume</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
<!-- Deck Filter Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x0F</midino>
				<status>0xB0</status>
				<key>filterHigh</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x10</midino>
				<status>0xB0</status>
				<key>filterMid</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x11</midino>
				<status>0xB0</status>
				<key>filterLow</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x15</midino>
				<status>0xB0</status>
				<key>filterHigh</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x16</midino>
				<status>0xB0</status>
				<key>filterMid</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x17</midino>
				<status>0xB0</status>
				<key>filterLow</key>
				<options>
					<normal/>
					<soft-takeover/>
				</options>
			</control>
<!-- Deck Pitch/Sync Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x0D</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onPitchHighValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x2D</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onPitchLowValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x13</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onPitchHighValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x33</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onPitchLowValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x26</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onKeyLockButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x39</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onKeyLockButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x29</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onAutoTempoButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3C</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onAutoTempoButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x27</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPitchShiftDownButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x28</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPitchShiftUpButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3A</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPitchShiftDownButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3B</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onPitchShiftUpButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Jog Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x2D</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onScratchButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x53</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onJogTouch</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x1C</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onJogHighValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x3C</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onJogLowValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x40</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onScratchButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x54</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onJogTouch</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x1D</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onJogHighValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3D</midino>
				<status>0xB0</status>
				<key>VestaxVCI300.onJogLowValue</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Hotcue/Loop Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x2A</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCue1InButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x2B</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCue2InButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x2C</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCue3InButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x2E</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onOut1LoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x2F</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onOut2LoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x30</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onOut3LoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3D</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCue1InButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3E</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCue2InButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x3F</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onCue3InButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x41</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onOut1LoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x42</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onOut2LoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x43</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onOut3LoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
<!-- Deck Beatloop Controls -->
			<control>
				<group>[Channel1]</group>
				<midino>0x33</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onAutoLoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x34</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onHalfPrevButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel1]</group>
				<midino>0x35</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onDoubleNextButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x46</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onAutoLoopButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x47</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onHalfPrevButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
			<control>
				<group>[Channel2]</group>
				<midino>0x48</midino>
				<status>0x90</status>
				<key>VestaxVCI300.onDoubleNextButton</key>
				<options>
					<script-binding/>
				</options>
			</control>
		</controls>
		<outputs/>
	</controller>
</MixxxControllerPreset>
