This file is indexed.

/usr/share/mixxx/controllers/DJ-Tech-DJM-101-scripts.js is in mixxx-data 2.0.0~dfsg-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
/****************************************************************/
/*      DJ-Tech DJM101 controller script                        */
/*      For Mixxx version 1.11                                  */
/*      Author: zestoi                                          */
/****************************************************************/

DJTechDJM101 = {};
DJTechDJM101.vumeter = {};
DJTechDJM101.vumeter[1] = 0;
DJTechDJM101.vumeter[2] = 0;

DJTechDJM101.init = function(id) {
	DJTechDJM101.vumeter_select(true);
	engine.connectControl("[Master]", "VuMeterL", "DJTechDJM101.VuMeterMasterL");
	engine.connectControl("[Master]", "VuMeterR", "DJTechDJM101.VuMeterMasterR");
	engine.connectControl("[Channel1]", "VuMeter", "DJTechDJM101.VuMeterDeck1");
	engine.connectControl("[Channel2]", "VuMeter", "DJTechDJM101.VuMeterDeck2");
	engine.connectControl("[Channel1]", "pfl", "DJTechDJM101.pfl");
	engine.connectControl("[Channel2]", "pfl", "DJTechDJM101.pfl");
}

DJTechDJM101.shutdown = function() {}

//
// change output to vumeter and reset
//

DJTechDJM101.vumeter_select = function(master)
{
	DJTechDJM101.vumeter_master_mode = master;
	DJTechDJM101.update_vumeter(1, 0);
	DJTechDJM101.update_vumeter(2, 0);
}

//
// select what data is sent to the vumeter
//

DJTechDJM101.vumeter_select_master = function(channel, control, value, status, group)
{
	if (value > 0) {
		DJTechDJM101.vumeter_select(true);
	}
}

DJTechDJM101.vumeter_select_pfl = function(channel, control, value, status, group)
{
	if (value > 0) {
		DJTechDJM101.vumeter_select(false);
	}
}

//
// update a vumeter channel
//

DJTechDJM101.update_vumeter = function(channel, value)
{
	var newval = parseInt(value * 0xf7);
	if (DJTechDJM101.vumeter[channel] != newval) {
		DJTechDJM101.vumeter[channel] = newval;

		//
		// a bit nasty - four different cc's depending on master/pfl mode and which channel
		//

		midi.sendShortMsg(0xb0, DJTechDJM101.vumeter_master_mode ? 0x4f + channel : 0x51 + channel, newval);
	}
}

//
// only feed the correct levels to each channel of the vumeter
//

DJTechDJM101.VuMeterMasterL = function(value)
{
	if (DJTechDJM101.vumeter_master_mode == false) return;
	DJTechDJM101.update_vumeter(1, value);
}

DJTechDJM101.VuMeterMasterR = function(value)
{
	if (DJTechDJM101.vumeter_master_mode == false) return;
	DJTechDJM101.update_vumeter(2, value);
}

DJTechDJM101.VuMeterDeck1 = function(value)
{
	if (DJTechDJM101.vumeter_master_mode == true) return;
	DJTechDJM101.update_vumeter(1, value);
}

DJTechDJM101.VuMeterDeck2 = function(value)
{
	if (DJTechDJM101.vumeter_master_mode == true) return;
	DJTechDJM101.update_vumeter(2, value);
}

//
// led feedback for headphone cue buttons
//

DJTechDJM101.pfl = function(value, group)
{
	// has to be a noteon msg in both case and seems more reliable issuing 0x7f for 'on' amd 0x0 for 'off'
	midi.sendShortMsg(0x90, group == "[Channel1]" ? 0x21 : 0x22, value > 0 ? 0x7f : 0);
}