├── .DS_Store
├── .gitignore
├── 12Step_Bitwig
├── 12Step
│ ├── 12Step.html
│ ├── 12Step_functions.js
│ ├── 12step.control.js
│ ├── 12step_outline.png
│ └── bitwig.css
├── Bitwig Clip Launching.twelvesteppreset
└── README.md
├── K-Board
├── .DS_Store
├── K-Board
│ └── KBoard.control.js
└── README.md
├── K-Board_Scales
├── .DS_Store
├── KBoard_Scales.control.js
├── KBoard_Scales.js
└── README.md
├── QUNEO
├── .DS_Store
├── Documentation
│ ├── .DS_Store
│ ├── Instructions_versionNotes.txt
│ ├── QuNeo.Bitwig.quneopreset
│ ├── QuNeo_Bitwig_Documentation.pdf
│ └── QuNeo_Bitwig_Layout.pdf
├── QUNEO_Script
│ ├── .DS_Store
│ ├── QUNEO.control.js
│ ├── QUNEO.html
│ ├── QUNEO.png
│ ├── QUNEO_clips.js
│ ├── QUNEO_functions.js
│ ├── QUNEO_notes.js
│ ├── QUNEO_pages.js
│ ├── QUNEO_parameterPage.js
│ └── bitwig.css
└── README.md
├── QuNexus
├── .DS_Store
└── qunexus.control.js
├── README.md
└── SoftStep_Bitwig
├── .DS_Store
├── Bitwig_Clips.softsteppreset
├── Bitwig_FX.softsteppreset
├── README.md
└── Softstep
├── .DS_Store
├── softstep.control.js
└── softstep_functions.js
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | K_Mix/
3 |
--------------------------------------------------------------------------------
/12Step_Bitwig/12Step/12Step.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
24 |
25 |

26 |
27 |
28 |
29 |
12Step Clip Launching
30 |
31 |
This script allows you to control the Clip Launcher in bitwig Studio with the 12Step from Keith Mcmillen Instruments.
32 |
33 |
The first seven keys in the lower row fire clips in the designated tack bank.You can stop playing clips my holding down the corresponding key. The last key will fire the scene.
34 | The first two kesy in the top row will move the track bank up and down. The next two keys will fire the previous or next scene.
35 | The final key will stop all clips.
36 |
37 |
38 |
39 |
40 |
41 |
Upcoming features
42 |
43 |
There will be automatic parameter mapping coming soon.
44 |
45 |
46 |
47 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/12Step_Bitwig/12Step/12Step_functions.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Sofstep Controller Functions
4 |
5 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
6 |
7 | */
8 |
9 |
10 | function launchClipSlots(data1, data2)
11 | {
12 | if (data1 < 8 & data2 == 127)
13 | {
14 | trackBank.getTrack((data1)/2).getClipLauncher().launch(data1 % 2);
15 | }
16 | }
17 |
18 | function launchScenes(data1, data2)
19 | {
20 | if (data1 == 10 && data2 ==127)
21 | {
22 | trackBank.launchScene(0)
23 | }
24 | if (data1 == 11 && data2 == 127)
25 | {
26 | trackBank.launchScene(1)
27 | }
28 |
29 | }
30 |
31 | function getGridObserverFunc(track, varToStore)
32 | {
33 | return function(scene, value)
34 | {
35 | varToStore[scene*4 + track] = value;
36 | clipLED()
37 | }
38 | }
39 |
40 | function scrollTrackBank(data1, data2)
41 | {
42 | if (data1 == 8 && data2 == 127)
43 | {
44 | trackBank.scrollScenesUp()
45 |
46 | }else if (data1 == 9 && data2 == 127)
47 | {
48 | trackBank.scrollScenesDown()
49 | }
50 |
51 | }
52 |
53 |
54 |
55 | function contentLED()
56 | {
57 | for(i = 0; i < 8; i++){
58 | if (hasContent[i] == true){
59 | pendingLEDs[i] = 1
60 | }else if (hasContent[i] == false){
61 | pendingLEDs[i] = 0
62 | }
63 | }
64 |
65 | }
66 |
67 |
68 | function playingLED()
69 | {
70 | for(i = 0; i < 8; i++){
71 | if (isPlaying[i] == true){
72 | pendingLEDs[i] = 2
73 | }
74 | }
75 | }
76 |
77 | function recordingLED()
78 | {
79 | for (i = 0 ; i <8; i ++){
80 | if (isRecording[i] == true){
81 | pendingLEDs[i] = 3
82 | }
83 | }
84 |
85 | }
86 |
87 |
88 | function clipUpdate()
89 | {
90 | for(i = 0; i < 8; i ++){
91 | if (pendingLEDs[i] != currentLEDs[i]){
92 | currentLEDs[i] = pendingLEDs[i]
93 | sendClipLEDs(i)
94 |
95 | }
96 |
97 |
98 |
99 | }
100 |
101 | }
102 |
103 | function clipLED()
104 | {
105 | contentLED();
106 | playingLED();
107 | recordingLED();
108 | clipUpdate();
109 |
110 | }
111 |
112 |
113 | function sendClipLEDs(index){
114 | switch(index){
115 | case 0:
116 | if(currentLEDs[index] == 0){
117 | sendMidi(176, 25, 0)
118 | sendMidi(176, 115, 0)
119 |
120 | }else if (currentLEDs[index] == 1){
121 | sendMidi(176, 25, 2)
122 | sendMidi(176, 115, 2)
123 |
124 | }else if (currentLEDs[index] == 2){
125 | sendMidi(176, 25, 0)
126 | sendMidi(176, 115, 3)
127 | }else if (currentLEDs[index] == 3){
128 | sendMidi(176, 25, 3)
129 | sendMidi(176, 115, 0)
130 | }
131 | break;
132 | case 1:
133 | if(currentLEDs[index] == 0){
134 | sendMidi(176, 26, 0)
135 | sendMidi(176, 116, 0)
136 |
137 | }else if (currentLEDs[index] == 1){
138 | sendMidi(176, 26, 2)
139 | sendMidi(176, 116, 2)
140 |
141 | }else if (currentLEDs[index] == 2){
142 | sendMidi(176, 26, 0)
143 | sendMidi(176, 116, 3)
144 | }else if (currentLEDs[index] == 3){
145 | sendMidi(176, 26, 3)
146 | sendMidi(176, 116, 0)
147 | }
148 | break;
149 | case 2:
150 | if(currentLEDs[index] == 0){
151 | sendMidi(176, 27, 0)
152 | sendMidi(176, 117, 0)
153 |
154 | }else if (currentLEDs[index] == 1){
155 | sendMidi(176, 27, 2)
156 | sendMidi(176, 117, 2)
157 |
158 | }else if (currentLEDs[index] == 2){
159 | sendMidi(176, 27, 0)
160 | sendMidi(176, 117, 3)
161 | }else if (currentLEDs[index] == 3){
162 | sendMidi(176, 27, 3)
163 | sendMidi(176, 117, 0)
164 | }
165 | break;
166 | case 3:
167 | if(currentLEDs[index] == 0){
168 | sendMidi(176, 28, 0)
169 | sendMidi(176, 118, 0)
170 |
171 | }else if (currentLEDs[index] == 1){
172 | sendMidi(176, 28, 2)
173 | sendMidi(176, 118, 2)
174 |
175 | }else if (currentLEDs[index] == 2){
176 | sendMidi(176, 28, 0)
177 | sendMidi(176, 118, 3)
178 | }else if (currentLEDs[index] == 3){
179 | sendMidi(176, 28, 3)
180 | sendMidi(176, 118, 0)
181 | }
182 | break;
183 | case 4:
184 | if(currentLEDs[index] == 0){
185 | sendMidi(176, 20, 0)
186 | sendMidi(176, 110, 0)
187 |
188 | }else if (currentLEDs[index] == 1){
189 | sendMidi(176, 20, 2)
190 | sendMidi(176, 110, 2)
191 |
192 | }else if (currentLEDs[index] == 2){
193 | sendMidi(176, 20, 0)
194 | sendMidi(176, 110, 3)
195 | }else if (currentLEDs[index] == 3){
196 | sendMidi(176, 20, 3)
197 | sendMidi(176, 110, 0)
198 | }
199 | break;
200 | if(currentLEDs[index] == 0){
201 | sendMidi(176, 21, 0)
202 | sendMidi(176, 111, 0)
203 |
204 | }else if (currentLEDs[index] == 1){
205 | sendMidi(176, 21, 2)
206 | sendMidi(176, 111, 2)
207 |
208 | }else if (currentLEDs[index] == 2){
209 | sendMidi(176, 21, 0)
210 | sendMidi(176, 111, 3)
211 | }else if (currentLEDs[index] == 3){
212 | sendMidi(176, 21, 3)
213 | sendMidi(176, 111, 0)
214 | }
215 | break;
216 | case 6:
217 | if(currentLEDs[index] == 0){
218 | sendMidi(176, 22, 0)
219 | sendMidi(176, 112, 0)
220 |
221 | }else if (currentLEDs[index] == 1){
222 | sendMidi(176, 22, 2)
223 | sendMidi(176, 112, 2)
224 |
225 | }else if (currentLEDs[index] == 2){
226 | sendMidi(176, 22, 0)
227 | sendMidi(176, 112, 3)
228 | }else if (currentLEDs[index] == 3){
229 | sendMidi(176, 22, 3)
230 | sendMidi(176, 112, 0)
231 | }
232 | break;
233 | case 7:
234 | if(currentLEDs[index] == 0){
235 | sendMidi(176, 23, 0)
236 | sendMidi(176, 113, 0)
237 |
238 | }else if (currentLEDs[index] == 1){
239 | sendMidi(176, 23, 2)
240 | sendMidi(176, 113, 2)
241 |
242 | }else if (currentLEDs[index] == 2){
243 | sendMidi(176, 23, 0)
244 | sendMidi(176, 113, 3)
245 | }else if (currentLEDs[index] == 3){
246 | sendMidi(176, 23, 3)
247 | sendMidi(176, 113, 0)
248 | }
249 | break;
250 | }
251 | }
--------------------------------------------------------------------------------
/12Step_Bitwig/12Step/12step.control.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
4 |
5 |
6 | */
7 |
8 |
9 |
10 | //Load the bitwig API, obviously.
11 | loadAPI(1);
12 |
13 | //Define/set our controller properties [ company, device, version, uuid ]
14 | host.defineController("Keith McMillen Instruments", "12Step", "1.0", "63723F80-4FEE-11E4-916C-0800200C9A66");
15 | host.defineMidiPorts(1, 1);
16 |
17 | //Define/set input/output port names (both i/o are the same)
18 | var portNames = ["12Step Port 1"];
19 | host.addDeviceNameBasedDiscoveryPair(portNames, portNames);
20 |
21 | //Loading external Files
22 | load("12Step_functions.js")
23 |
24 | //Declare some global vars for a few of the interface types defined in the API
25 | var application, arranger, mixer, transport;
26 | var HIGHEST_CC = 119;
27 | var LOWEST_CC = 1;
28 | var NUM_TRACKS = 7;
29 | var NUM_SCENES = 1;
30 | var NUM_SENDS = 2;
31 | var hasContent = initArray(0, 8);
32 | var isPlaying = initArray(0, 8);
33 | var isRecording = initArray(0, 8);
34 | var isQueued = initArray(0, 8);
35 | var pendingLEDs = initArray(0, 8);
36 | var currentLEDs = initArray(0,8);
37 | var selectedTrack = 0;
38 | var canScrollUp = false
39 | //------------------------------------ Init -----------------------------------//
40 | function init()
41 | {
42 | //-------- Set MIDI callbacks / port
43 | host.getMidiInPort(0).setMidiCallback(onMidi);
44 |
45 | //host.getMidiInPort(0).setSysexCallback(onSysexPort1);
46 |
47 |
48 | //-------- Note Inputs (see REF below for argument details
49 | noteIn = host.getMidiInPort(0).createNoteInput("12Step Port 1");
50 | noteIn.setShouldConsumeEvents(false);
51 |
52 |
53 | userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);
54 |
55 | for(var i=LOWEST_CC; i<=HIGHEST_CC; i++)
56 | {
57 | userControls.getControl(i - LOWEST_CC).setLabel("CC" + i);
58 | }
59 |
60 |
61 | application = host.createApplication();
62 | trackBankMain = host.createTrackBank(NUM_TRACKS, NUM_SENDS, NUM_SCENES);
63 | trackBankAbove = host.createTrackBank(NUM_TRACKS, NUM_SENDS, NUM_SCENES)
64 | trackBankBelow = host.createTrackBank(NUM_TRACKS, NUM_SENDS, NUM_SCENES)
65 | cursorTrack = host.createCursorTrack(2, NUM_SCENES);
66 | transport = host.createTransport();
67 | arranger = host.createArranger(0);
68 | master = host.createMasterTrack(8);
69 | cursorTrack = host.createCursorTrack(2, 0);
70 | primaryDevice = cursorTrack.getPrimaryDevice();
71 | //println("This is the SoftStep Script")
72 |
73 | cursorTrack.addPositionObserver(function(track)
74 | {
75 | selectedTrack = track
76 | trackBankMain.scrollToTrack(track)
77 | })
78 |
79 | trackBankMain.addCanScrollScenesUpObserver(function(scrollUp)
80 | {
81 |
82 | if (scrollUp == true)
83 | {
84 |
85 | sendMidi(176, 21, 1)
86 | }else
87 | {
88 |
89 | sendMidi(176, 21, 0)
90 |
91 | }
92 | })
93 |
94 | trackBankMain.addCanScrollScenesDownObserver(function(scrollDown)
95 | {
96 |
97 | if (scrollDown == true)
98 | {
99 |
100 | sendMidi(176, 23, 1)
101 | }else
102 | {
103 |
104 | sendMidi(176, 23, 0)
105 | }
106 | })
107 |
108 | for (var t = 0; t < NUM_TRACKS; t++)
109 | {
110 | var track = trackBankMain.getTrack(t);
111 | var clipLauncher = track.getClipLauncher();
112 | clipLauncher.setIndication(true);
113 |
114 | clipLauncher.addHasContentObserver(getGridObserverFunc(t, hasContent));
115 | clipLauncher.addIsPlayingObserver(getGridObserverFunc(t, isPlaying));
116 | clipLauncher.addIsRecordingObserver(getGridObserverFunc(t, isRecording));
117 | clipLauncher.addIsQueuedObserver(getGridObserverFunc(t, isQueued));
118 | }
119 |
120 | }
121 |
122 | //--------------------------- MIDI Callbacks / Port ---------------------------//
123 | function onMidi(status, data1, data2)
124 | {
125 | //println("Port 1 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
126 |
127 |
128 | if(status == 233)
129 | {
130 | //println("pitchBend" + " " + data1 + " " + data2)
131 |
132 | }else if(status == 145){
133 |
134 | //println("Notes" + " " + data1 + " " + data2)
135 | launchClipSlots(data1, data2);
136 | scrollTrackBank(data1, data2);
137 | launchScenes(data1, data2)
138 |
139 | }else if (status == 185){
140 |
141 | //println("CC" + " " + data1 + " " + data2)
142 |
143 | }
144 |
145 |
146 | if (isChannelController(status))
147 | {
148 | if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC)
149 | {
150 | var index = data1 - LOWEST_CC;
151 | userControls.getControl(index).set(data2, 128);
152 | }
153 | }
154 |
155 |
156 | }
157 |
158 |
159 |
160 | function exit()
161 | {
162 | println("exit.");
163 | }
164 |
165 |
166 |
167 |
168 | //--------------------------------- Interfaces --------------------------------//
169 |
170 |
171 |
172 |
173 |
174 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
175 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
176 | //////////////////////////////////////////////////////////////// REF ////////////////////////////////////////////////////////////////
177 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
178 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
179 |
180 | //--------------------- Note Input Filters
181 |
182 | // These filters args are used in the createNoteInput method/function for a midi input port [ see init() ].
183 |
184 | // See http://www.midi.org/techspecs/midimessages.php for midi message types.
185 |
186 | // Studying up on hexadecimal could be helpful also if it's new to you.
187 |
188 |
189 | //---- Note Off
190 | // "80????" - Sees all note offs on channel 1
191 | // "8?????" - Sees all note offs on any channel
192 |
193 | //---- Note On
194 | // "90????" - Sees all note ons on channel 1
195 | // "9?????" - Sees all note offs on any channel
196 | // "90607F" - Sees all note number 60s with a velocity of 127 (this is a very specific filter)
197 |
198 | //---- Polyphonic Aftertouch
199 | // "A0????" - Sees all note ons on channel 1
200 | // "A?????" - Sees all note offs on any channel
201 |
202 | //---- Controller Messages
203 | // "B0????" - Sees all cc messages on channel 1
204 | // "B?????" - Sees all cc messages on all channels
205 |
206 | //---- Program Changes
207 | // "C0????" - Sees all pgm changes on channel 1
208 | // "C?????" - Sees all pgm changes on all channels
209 |
210 | //---- Channel Aftertouch
211 | // "D0????" - Sees all ch. aftertouch on channel 1
212 | // "D?????" - Sees all ch. aftertouch on all channels
213 |
214 | //---- Pitch Wheel
215 | // "E0????" - Sees all ch. aftertouch on channel 1
216 | // "E?????" - Sees all ch. aftertouch on all channels
217 | // "E???00" - Sees all ch. aftertouch on all channels with an MSB of zero
218 | // "E?00??" - Sees all ch. aftertouch on all channels with an LSB of zero
219 |
220 | //---- SysEx start/end, esoteric MIDI mysticism (wouldn't use these filters unless your traversing some kind of musical 3-byte worm hole)
221 | //---- For sysex, just use the callbacks defined above
222 | // "F0????" - Sees all ch. aftertouch on channel 1
223 | // "D?????" - Sees all ch. aftertouch on all channels
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
--------------------------------------------------------------------------------
/12Step_Bitwig/12Step/12step_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/12Step_Bitwig/12Step/12step_outline.png
--------------------------------------------------------------------------------
/12Step_Bitwig/12Step/bitwig.css:
--------------------------------------------------------------------------------
1 | #page-container {
2 | width: 100%;
3 | margin: 0;
4 | }
5 |
6 | #header {
7 | height: 43px;
8 | padding-left: 20px;
9 | padding-right: 20px;
10 | color: white;
11 | background: #000000;
12 | }
13 |
14 | #footer {
15 | clear: both;
16 | height: 30px;
17 | margin-top: 30px;
18 | padding-top: 3px;
19 | margin-left: 20px;
20 | margin-right: 20px;
21 | border-top: 1px solid #000000;
22 | font: 10px "Lucida Grande", Lucida, Verdana, sans-serif;
23 | color: #505050;
24 | }
25 |
26 | #footer a {
27 | color: #505050;
28 | text-decoration: none;
29 | }
30 |
31 | #illustration {
32 | margin-top: 5px;
33 | margin-left: 0px;
34 | margin-right: 20px;
35 | margin-bottom: 20px;
36 | float: left;
37 | }
38 |
39 | #introduction {
40 | margin-top: 5px;
41 | margin-left: 20px;
42 | margin-right: 20px;
43 | margin-bottom: 20px;
44 | float: left;
45 | }
46 |
47 | #illustration-text {
48 | width: 200px;
49 | margin-top: 30px;
50 | margin-right: 20px;
51 | margin-bottom: 30px;
52 | padding-left: 25px;
53 | float: right;
54 | background-image: url("important.png");
55 | background-repeat: no-repeat;
56 | background-position: left 0 top 3px;
57 | }
58 |
59 | #sticker {
60 | width: 400px;
61 | margin-top: 30px;
62 | margin-right: 20px;
63 | margin-bottom: 30px;
64 | padding-left: 25px;
65 | float: right;
66 | }
67 |
68 | #legend {
69 | clear: both;
70 | padding-top: 30px;
71 | margin: 0 20px 30px 20px;
72 | margin-top: 0px;
73 | border-top: 1px solid #000000;
74 | }
75 |
76 | #legend h2{
77 | font-weight: bold;
78 | font-size: 12px;
79 | text-decoration: underline;
80 | margin: 20px 0 10px 0;
81 | }
82 |
83 | #legend h3{
84 | font-weight: bold;
85 | font-size: 12px;
86 | margin: 10px 0 0 0;
87 | }
88 |
89 | #legend p{
90 | margin: 0 0 10px 0;
91 | }
92 |
93 | #logo {
94 | width: 170px;
95 | height: 20px;
96 | background-image: url("logo.png");
97 | background-repeat: no-repeat;
98 | display: inline-block;
99 | float: left;
100 | margin-top: 12px;
101 | margin-right: 20px;
102 | vertical-align: middle;
103 | }
104 |
105 | #title {
106 | display: inline-block;
107 | float: left;
108 | margin-top: 7px;
109 | margin-left: 20px;
110 | vertical-align: text-bottom;
111 | }
112 |
113 | html, body {
114 | margin: 0;
115 | padding: 0;
116 | background-color: white;
117 | color: black;
118 | font: 12px "Lucida Grande", Lucida, Verdana, sans-serif;
119 | }
120 |
121 | h1 {
122 | margin: 0;
123 | padding: 0;
124 | font: 26px Helvetica, Arial, sans-serif;
125 | font-weight: bold;
126 | }
127 |
128 | a {
129 | color: #ee7700;
130 | }
131 |
132 | ul {
133 | list-style-type: disc;
134 | list-style-position: outside;
135 | margin: 0 0 10px 0;
136 | padding: 0 0 10px 0;
137 | }
138 |
139 | li {
140 | /*position: relative;*/
141 | margin-left: 15px;
142 | margin-bottom: 10px;
143 | padding-left: 0px;
144 | }
145 |
146 | li span {
147 | /*position: absolute;*/
148 | left: -5px;
149 | }
150 |
151 |
152 | table.legend-column {
153 | border-width: 0px;
154 | border: none;
155 | border-collapse: collapse;
156 | text-align: left;
157 | vertical-align: top;
158 | background-color: #ffffff;
159 | border-color: #000000;
160 | margin-bottom: 15px;
161 | }
162 | table.legend-column th {
163 | border-bottom:1px dotted;
164 | height: 15px;
165 | font-weight: bold;
166 | padding: 2px 0px 2px 0px;
167 | vertical-align: top;
168 | }
169 | table.legend-column td {
170 | border-bottom:1px dotted;
171 | padding: 2px 0px 2px 0px;
172 | vertical-align: top;
173 | }
174 |
175 | .first-column-table-row
176 | {
177 | float: left;
178 | }
179 |
180 | .legend-section
181 | {
182 | float: left;
183 | }
184 |
185 | .legend-column
186 | {
187 | width : 240px;
188 | display: inline-block;
189 | margin-right: 20px;
190 | margin-bottom: 20px;
191 | vertical-align: top;
192 | }
193 |
194 | .legend-column p {
195 | margin: 5px 0 10px 0;
196 | }
197 |
198 | .legend-column-header
199 | {
200 | width : 100%;
201 | height: 20px;
202 | font-weight: bold;
203 | text-decoration: underline;
204 | margin-bottom: 5px;
205 | }
206 |
207 | .legend-control-column
208 | {
209 | width : 90px;
210 | font-weight: bold;
211 | }
212 |
213 | .legend-explanation-column
214 | {
215 | width : 150px;
216 | }
217 |
218 | .hidden {
219 | display: none;
220 | }
221 |
--------------------------------------------------------------------------------
/12Step_Bitwig/Bitwig Clip Launching.twelvesteppreset:
--------------------------------------------------------------------------------
1 | {
2 | "key01_note1": 0,
3 | "key01_note2": -1,
4 | "key01_note3": -1,
5 | "key01_note4": -1,
6 | "key01_note5": -1,
7 | "key02_note1": 8,
8 | "key02_note2": -1,
9 | "key02_note3": -1,
10 | "key02_note4": -1,
11 | "key02_note5": -1,
12 | "key03_note1": 1,
13 | "key03_note2": -1,
14 | "key03_note3": -1,
15 | "key03_note4": -1,
16 | "key03_note5": -1,
17 | "key04_note1": 9,
18 | "key04_note2": -1,
19 | "key04_note3": -1,
20 | "key04_note4": -1,
21 | "key04_note5": -1,
22 | "key05_note1": 2,
23 | "key05_note2": -1,
24 | "key05_note3": -1,
25 | "key05_note4": -1,
26 | "key05_note5": -1,
27 | "key06_note1": 3,
28 | "key06_note2": -1,
29 | "key06_note3": -1,
30 | "key06_note4": -1,
31 | "key06_note5": -1,
32 | "key07_note1": 10,
33 | "key07_note2": -1,
34 | "key07_note3": -1,
35 | "key07_note4": -1,
36 | "key07_note5": -1,
37 | "key08_note1": 4,
38 | "key08_note2": -1,
39 | "key08_note3": -1,
40 | "key08_note4": -1,
41 | "key08_note5": -1,
42 | "key09_note1": 11,
43 | "key09_note2": -1,
44 | "key09_note3": -1,
45 | "key09_note4": -1,
46 | "key09_note5": -1,
47 | "key10_note1": 5,
48 | "key10_note2": -1,
49 | "key10_note3": -1,
50 | "key10_note4": -1,
51 | "key10_note5": -1,
52 | "key11_note1": 12,
53 | "key11_note2": -1,
54 | "key11_note3": -1,
55 | "key11_note4": -1,
56 | "key11_note5": -1,
57 | "key12_note1": 6,
58 | "key12_note2": -1,
59 | "key12_note3": -1,
60 | "key12_note4": -1,
61 | "key12_note5": -1,
62 | "key13_note1": 7,
63 | "key13_note2": -1,
64 | "key13_note3": -1,
65 | "key13_note4": -1,
66 | "key13_note5": -1,
67 | "modline1_cc_number": -1,
68 | "modline1_destination": "Note",
69 | "modline1_gain": 1,
70 | "modline1_max": 127,
71 | "modline1_min": 0,
72 | "modline1_offset": 0,
73 | "modline1_smooth": 0,
74 | "modline1_source_a": "Velocity",
75 | "modline1_source_b": "Off",
76 | "modline1_table": "Linear",
77 | "modline2_cc_number": 7,
78 | "modline2_destination": "CC",
79 | "modline2_gain": 1,
80 | "modline2_max": 127,
81 | "modline2_min": 0,
82 | "modline2_offset": 0,
83 | "modline2_smooth": 0,
84 | "modline2_source_a": "Pedal",
85 | "modline2_source_b": "Off",
86 | "modline2_table": "Linear",
87 | "modline3_cc_number": 7,
88 | "modline3_destination": "Off",
89 | "modline3_gain": 1,
90 | "modline3_max": 127,
91 | "modline3_min": 0,
92 | "modline3_offset": 0,
93 | "modline3_smooth": 0,
94 | "modline3_source_a": "Off",
95 | "modline3_source_b": "Off",
96 | "modline3_table": "Linear",
97 | "modline4_cc_number": 21,
98 | "modline4_destination": "Off",
99 | "modline4_gain": 1,
100 | "modline4_max": 127,
101 | "modline4_min": 0,
102 | "modline4_offset": 0,
103 | "modline4_smooth": 0,
104 | "modline4_source_a": "Off",
105 | "modline4_source_b": "Off",
106 | "modline4_table": "Linear",
107 | "modline5_cc_number": 0,
108 | "modline5_destination": "Off",
109 | "modline5_gain": 1,
110 | "modline5_max": 127,
111 | "modline5_min": 0,
112 | "modline5_offset": 0,
113 | "modline5_smooth": 0,
114 | "modline5_source_a": "Off",
115 | "modline5_source_b": "Off",
116 | "modline5_table": "Linear",
117 | "modline6_cc_number": 0,
118 | "modline6_destination": "Off",
119 | "modline6_gain": 1,
120 | "modline6_max": 127,
121 | "modline6_min": 0,
122 | "modline6_offset": 0,
123 | "modline6_smooth": 0,
124 | "modline6_source_a": "Off",
125 | "modline6_source_b": "Off",
126 | "modline6_table": "Linear",
127 | "preset_displayname_1": "C",
128 | "preset_displayname_2": "L",
129 | "preset_displayname_3": "I",
130 | "preset_displayname_4": "P",
131 | "preset_name": "Bitwig Clip Launching",
132 | "settings_key_safety_mode": "SingleKey",
133 | "settings_note_mode": "Normal",
134 | "voice_a_bank": 0,
135 | "voice_a_bend_range": 2,
136 | "voice_a_channel": 3,
137 | "voice_a_programchange": -1,
138 | "voice_a_transpose": 0,
139 | "voice_b_bank": 0,
140 | "voice_b_bend_range": 2,
141 | "voice_b_channel": 0,
142 | "voice_b_programchange": -1,
143 | "voice_b_transpose": 0
144 | }
145 |
--------------------------------------------------------------------------------
/12Step_Bitwig/README.md:
--------------------------------------------------------------------------------
1 | 12Step_Bitwig
2 | =============
3 |
4 | Bitwig Script for the KMI 12Step
5 |
--------------------------------------------------------------------------------
/K-Board/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/K-Board/.DS_Store
--------------------------------------------------------------------------------
/K-Board/K-Board/KBoard.control.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
4 |
5 |
6 | */
7 |
8 |
9 |
10 | //Load the bitwig API, obviously.
11 | loadAPI(1);
12 |
13 | //Define/set our controller properties [ company, device, version, uuid ]
14 | host.defineController("Keith McMillen Instruments", "K-Board", "1.0", "8A016650-586B-11E4-8ED6-0800200C9A66");
15 | host.defineMidiPorts(1, 1);
16 |
17 | //Define/set input/output port names (both i/o are the same)
18 | var portNames = ["K-Board"];
19 | host.addDeviceNameBasedDiscoveryPair(portNames, portNames);
20 |
21 | //Define/set sysex call/response (deprecated, included for good measure)
22 | host.defineSysexDiscovery("F0 7E 7F 06 01 F7", "F0 7E 00 06 02 00 01 5F 19 00 00 00 ?? ?? ?? ?? ?? ?? F7");
23 |
24 | //Declare some global vars for a few of the interface types defined in the API
25 | var application, arranger, mixer, transport;
26 | var HIGHEST_CC = 119;
27 | var LOWEST_CC = 1;
28 | //------------------------------------ Init -----------------------------------//
29 | function init()
30 | {
31 | //-------- Set MIDI callbacks / port
32 | host.getMidiInPort(0).setMidiCallback(onMidiPort1);
33 |
34 |
35 | //-------- Note Inputs (see REF below for argument details
36 | noteIn = host.getMidiInPort(0).createNoteInput("K-Board");
37 | noteIn.setShouldConsumeEvents(false);
38 |
39 |
40 | userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);
41 |
42 | for(var i=LOWEST_CC; i<=HIGHEST_CC; i++)
43 | {
44 | userControls.getControl(i - LOWEST_CC).setLabel("CC" + i);
45 | }
46 |
47 | //-------- Initialize bitwig interfaces
48 | //application = host.createApplication();
49 | //arranger = host.createArranger(0);
50 | //mixer = host.createMixer("perspective?",0);
51 | transport = host.createTransport();
52 | println("This is the K-Board Script")
53 | }
54 |
55 | //--------------------------- MIDI Callbacks / Port ---------------------------//
56 | function onMidiPort1(status, data1, data2)
57 | {
58 | //println("Port 1 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
59 |
60 |
61 | if(status == 233)
62 | {
63 | println("pitchBend" + " " + data1 + " " + data2)
64 |
65 | }else if(status == 153){
66 |
67 | println("Notes" + " " + data1 + " " + data2)
68 |
69 | }else if (status == 185){
70 |
71 | println("CC" + " " + data1 + " " + data2)
72 | sendMidi(status, data1, data2)
73 | }
74 |
75 |
76 | if (isChannelController(status))
77 | {
78 | if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC)
79 | {
80 | var index = data1 - LOWEST_CC;
81 | userControls.getControl(index).set(data2, 128);
82 | }
83 | }
84 |
85 |
86 | }
87 |
88 | function onMidiPort2(status, data1, data2)
89 | {
90 | println("Port 2 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
91 | }
92 |
93 | function onMidiPort3(status, data1, data2)
94 | {
95 | println("Port 3 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
96 | }
97 |
98 | function onSysexPort1(data)
99 | {
100 | println("Port 1 [sysex data]: " + data);
101 | }
102 |
103 | function onSysexPort2(data)
104 | {
105 | println("Port 2 [sysex data]: " + data);
106 | }
107 |
108 | function onSysexPort3(data)
109 | {
110 | println("Port 3 [sysex data]: " + data);
111 | }
112 |
113 | function exit()
114 | {
115 | println("exit.");
116 | }
117 |
118 | //--------------------------------- Interfaces --------------------------------//
119 |
120 |
121 |
122 |
123 |
124 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
125 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
126 | //////////////////////////////////////////////////////////////// REF ////////////////////////////////////////////////////////////////
127 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
128 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
129 |
130 | //--------------------- Note Input Filters
131 |
132 | // These filters args are used in the createNoteInput method/function for a midi input port [ see init() ].
133 |
134 | // See http://www.midi.org/techspecs/midimessages.php for midi message types.
135 |
136 | // Studying up on hexadecimal could be helpful also if it's new to you.
137 |
138 |
139 | //---- Note Off
140 | // "80????" - Sees all note offs on channel 1
141 | // "8?????" - Sees all note offs on any channel
142 |
143 | //---- Note On
144 | // "90????" - Sees all note ons on channel 1
145 | // "9?????" - Sees all note offs on any channel
146 | // "90607F" - Sees all note number 60s with a velocity of 127 (this is a very specific filter)
147 |
148 | //---- Polyphonic Aftertouch
149 | // "A0????" - Sees all note ons on channel 1
150 | // "A?????" - Sees all note offs on any channel
151 |
152 | //---- Controller Messages
153 | // "B0????" - Sees all cc messages on channel 1
154 | // "B?????" - Sees all cc messages on all channels
155 |
156 | //---- Program Changes
157 | // "C0????" - Sees all pgm changes on channel 1
158 | // "C?????" - Sees all pgm changes on all channels
159 |
160 | //---- Channel Aftertouch
161 | // "D0????" - Sees all ch. aftertouch on channel 1
162 | // "D?????" - Sees all ch. aftertouch on all channels
163 |
164 | //---- Pitch Wheel
165 | // "E0????" - Sees all ch. aftertouch on channel 1
166 | // "E?????" - Sees all ch. aftertouch on all channels
167 | // "E???00" - Sees all ch. aftertouch on all channels with an MSB of zero
168 | // "E?00??" - Sees all ch. aftertouch on all channels with an LSB of zero
169 |
170 | //---- SysEx start/end, esoteric MIDI mysticism (wouldn't use these filters unless your traversing some kind of musical 3-byte worm hole)
171 | //---- For sysex, just use the callbacks defined above
172 | // "F0????" - Sees all ch. aftertouch on channel 1
173 | // "D?????" - Sees all ch. aftertouch on all channels
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
--------------------------------------------------------------------------------
/K-Board/README.md:
--------------------------------------------------------------------------------
1 | K-Board
2 | =======
3 |
4 | Bitwig script for the KMI K-Board
5 |
--------------------------------------------------------------------------------
/K-Board_Scales/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/K-Board_Scales/.DS_Store
--------------------------------------------------------------------------------
/K-Board_Scales/KBoard_Scales.control.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
4 |
5 |
6 | */
7 |
8 |
9 |
10 | //Load the bitwig API, obviously.
11 | loadAPI(1);
12 |
13 | //Define/set our controller properties [ company, device, version, uuid ]
14 | host.defineController("Keith McMillen Instruments", "K-BoardScales", "1.0", "138433C0-5B06-11E4-8ED6-0800200C9A66");
15 | host.defineMidiPorts(1, 1);
16 |
17 | //Define/set input/output port names (both i/o are the same)
18 | var portNames = ["K-Board"];
19 | host.addDeviceNameBasedDiscoveryPair(portNames, portNames);
20 |
21 | //Define/set sysex call/response (deprecated, included for good measure)
22 | host.defineSysexDiscovery("F0 7E 7F 06 01 F7", "F0 7E 00 06 02 00 01 5F 19 00 00 00 ?? ?? ?? ?? ?? ?? F7");
23 |
24 | load ("KBoard_Scales.js")
25 |
26 | var HIGHEST_CC = 119;
27 | var LOWEST_CC = 1;
28 | var selectMode = false;
29 | var translationTable = initArray(-1, 128)
30 | var noteOffTable = initArray(-1, 128)
31 |
32 |
33 |
34 | //------------------------------------ Init -----------------------------------//
35 | function init()
36 | {
37 | //-------- Set MIDI callbacks / port
38 | host.getMidiInPort(0).setMidiCallback(onMidi);
39 |
40 |
41 | //-------- Note Inputs (see REF below for argument details
42 | noteIn = host.getMidiInPort(0).createNoteInput("K-Board", "80????", "90????");
43 | noteIn.setShouldConsumeEvents(false);
44 | updateTranslationTable()
45 | noteIn.setKeyTranslationTable(translationTable);
46 |
47 | userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);
48 |
49 | for(var i=LOWEST_CC; i<=HIGHEST_CC; i++)
50 | {
51 | userControls.getControl(i - LOWEST_CC).setLabel("CC" + i);
52 | }
53 |
54 |
55 | notif = host.getNotificationSettings();
56 |
57 | notif.setShouldShowChannelSelectionNotifications(true);
58 | notif.setShouldShowDeviceLayerSelectionNotifications(true);
59 | notif.setShouldShowDeviceSelectionNotifications(true);
60 | notif.setShouldShowMappingNotifications(false);
61 | notif.setShouldShowPresetNotifications(true);
62 | notif.setShouldShowSelectionNotifications(true);
63 | notif.setShouldShowTrackSelectionNotifications(true);
64 | notif.setShouldShowValueNotifications(false);
65 |
66 |
67 | //println("This is the K-Board_SCales Script")
68 | lights()
69 | }
70 |
71 | //--------------------------- MIDI Callbacks / Port ---------------------------//
72 | function onMidi(status, data1, data2)
73 | {
74 | //println(status, data2)
75 | if(status == 224)
76 | {
77 | //println("pitchBend" + " " + data1 + " " + data2)
78 | if(data2 != 64){
79 | for (i = 0; i < 24; i ++){
80 | sendMidi(144, i, 16)
81 | }
82 | selectMode = true
83 | noteIn.setKeyTranslationTable(noteOffTable)
84 | }else if(data2 == 64){
85 | for (i = 0 ;i < 26; i ++){
86 | sendMidi(144, i, 0)
87 | }
88 | selectMode = false
89 | lights()
90 | host.showPopupNotification("Root = " + root + " : Scale =" + scaleName)
91 | noteIn.setKeyTranslationTable(translationTable)
92 |
93 | }
94 |
95 | }
96 |
97 |
98 | if(status == 144){
99 | //println(data1, data2)
100 | if (selectMode == true)
101 | {
102 | selector = data1 % 24
103 | if (selector < 12){
104 | scaleSelect(selector)
105 | host.showPopupNotification("Scale =" + scaleName)
106 | }else if(selector>=12){
107 | rootSelect(selector - 12)
108 | host.showPopupNotification("Root = " + root)
109 | }
110 | }
111 | }
112 |
113 | if(status == 128)
114 | {
115 | lights()
116 | }
117 |
118 | if (isChannelController(status))
119 | {
120 | if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC)
121 | {
122 | var index = data1 - LOWEST_CC;
123 | userControls.getControl(index).set(data2, 128);
124 | }
125 | }
126 |
127 |
128 | }
129 |
130 | function lights()
131 | {
132 | for (i = 0 ; i < scale.length ; i ++)
133 | {
134 | if(scale[i] + offset == 24){
135 | sendMidi(144, 24, 16)
136 | sendMidi(144, 0, 16)
137 | }else if (scale[i] + offset > 24)
138 | {
139 | sendMidi(144, (scale[i] + offset) - 24, 16)
140 | //println ((scale[i] + offset) - 25)
141 | }else{
142 | sendMidi(144, scale[i] + offset, 16)
143 | //println (scale[i] + offset)
144 | }
145 |
146 | }
147 |
148 | }
149 |
150 | function updateTranslationTable()
151 | {
152 | for (i = 0; i < 128; i ++)
153 | {
154 | translationTable[i] = i
155 | }
156 | }
157 |
158 |
159 | function exit()
160 | {
161 | println("exit.");
162 | }
163 |
164 |
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/K-Board_Scales/KBoard_Scales.js:
--------------------------------------------------------------------------------
1 | //KBoard Scale Definitions
2 |
3 |
4 | var major = [0, 2, 4, 5, 7, 9, 11, 12, 14, 16, 17, 19, 21, 23, 24];
5 | var minor = [0, 2, 3, 5, 7, 8, 10, 12, 14, 15, 17, 19, 20, 22, 24];
6 | var dorian = [0, 2, 3, 5, 7, 9, 10, 12, 14, 15, 17, 19, 21, 22, 24];
7 | var phrygian = [0, 1, 3, 5, 7, 8, 10, 12, 13, 15, 17, 19, 20, 22, 24];
8 | var lydian = [0, 2, 4, 6, 7, 9, 11, 12, 14, 16, 18, 19, 21, 23, 24];
9 | var mixolydian = [0, 2, 4, 5, 7, 9, 10, 12, 14, 16, 17, 19, 21, 22, 24];
10 | var locrian = [0, 1, 3, 4, 6, 8, 10, 12, 13, 15, 16, 18, 20, 22, 24];
11 | var pentatonicMajor = [0, 2, 4, 7, 9, 12, 14, 16, 19, 21, 24];
12 | var pentatonicMinor = [0, 3, 5, 7, 10, 12, 15, 17, 19, 22, 24];
13 | var wholetone = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24];
14 | var halfdiminished = [0, 2, 3, 5, 6, 8, 10, 12, 14, 15, 17, 18, 20, 22, 24];
15 | //var diminishedwhole = [0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24];
16 | var octatonic = [0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 24];
17 | var scale = major
18 | var scaleName = "Major"
19 | var offset = 0
20 | root = "C"
21 |
22 |
23 | function scaleSelect(x){
24 | switch(x){
25 | case 0:
26 | scale = major
27 | scaleName = "Major"
28 | break;
29 | case 1:
30 | scale = pentatonicMajor
31 | scaleName = "Pentatonic Major"
32 | break;
33 | case 2:
34 | scale = dorian
35 | scaleName = "Dorian"
36 | break;
37 | case 3:
38 | scale = pentatonicMinor
39 | scaleName ="Pentatonic Minor"
40 | break;
41 | case 4:
42 | scale = phrygian
43 | scaleName = "Phrygian"
44 | break;
45 | case 5:
46 | scale = lydian
47 | scaleName = "Lydian"
48 | break;
49 | case 6:
50 | scale = wholetone
51 | scaleName ="Whole Tone"
52 | break;
53 | case 7:
54 | scale = mixolydian
55 | scaleName = "Mixolydian"
56 | break;
57 | case 8:
58 | scale = halfdiminished
59 | scaleName = "Half Diminished"
60 | break;
61 | case 9:
62 | scale = minor
63 | scaleName = "Minor"
64 | break;
65 | case 10:
66 | scale = octatonic
67 | scaleName = "Octatonic"
68 | break;
69 | case 11:
70 | scale = locrian
71 | scaleName = "Locrian"
72 | break;
73 | }
74 |
75 | }
76 |
77 | function rootSelect(x){
78 | switch(x){
79 | case 0:
80 | offset = x
81 | root = 'C'
82 | break;
83 | case 1:
84 | offset = x
85 | root = "C#/Db"
86 | break;
87 | case 2:
88 | offset = x
89 | root = "D"
90 | break;
91 | case 3:
92 | offset = x
93 | root = "D#/Eb"
94 | break;
95 | case 4:
96 | offset = x
97 | root = "E"
98 | break;
99 | case 5:
100 | offset = x
101 | root = "F"
102 | break;
103 | case 6:
104 | offset = x
105 | root = "F#/Gb"
106 | break;
107 | case 7:
108 | offset = x
109 | root = "G"
110 | break;
111 | case 8:
112 | offset = x
113 | root = "G#/Ab"
114 | break;
115 | case 9:
116 | offset = x
117 | root = "A"
118 | break;
119 | case 10:
120 | offset = x
121 | root = "A#/Bb"
122 | break;
123 | case 11:
124 | offset = x
125 | root = "B"
126 | break;
127 | }
128 |
129 | }
--------------------------------------------------------------------------------
/K-Board_Scales/README.md:
--------------------------------------------------------------------------------
1 | K-Board_Scales
2 | ==============
3 |
4 | Bitwig script for displaying scales on the K-Board
5 |
--------------------------------------------------------------------------------
/QUNEO/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QUNEO/.DS_Store
--------------------------------------------------------------------------------
/QUNEO/Documentation/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QUNEO/Documentation/.DS_Store
--------------------------------------------------------------------------------
/QUNEO/Documentation/Instructions_versionNotes.txt:
--------------------------------------------------------------------------------
1 |
2 | This is the KMI bigwig script for the QuNeo controller
3 |
4 | Import the QuNeo preset to your QuNeo using the editor. I recommend using slot 16 (the upper right corner. I have included a syses callback that restore all the LED feedback when returning to slot 16. If you use a different slot, and change presets, or accidentally hit the blue preset selection button in the upper left, the LED feedback will not be visible until you interact with the device.
5 |
6 | Drop The 'QUNEO_Script'folder into the 'ControlSurfaceScripts' folder in the User Control script folder:
7 |
8 | Mac and Linux: ~/Documents/Bitwig Studio/Controller Scripts/
9 | On Windows: %USERPROFILE%\Documents\Bitwig Studio\Controller Scripts\
10 |
11 | Documentation on the layout is included in the KMI_BitwigScripts Folder.
12 |
13 | Ver 0.1 - Basic parameter control, transport control, track select,
14 | send levels and note input.
15 |
16 | Ver 0.2 - Added scales, root offset, and scale scrolling.
17 | Added macro/parameter control switching
18 |
19 | Ver 0.3 - Added in key scales. Control surface .html File, and documentation
20 |
21 | Ver 1.0 - Added Clip Launching Mode.
22 |
23 | This is a first version! Please email me at evanbeta@keithmcmillen.com for bug reporting, feature requests, fan mail etc.
24 |
--------------------------------------------------------------------------------
/QUNEO/Documentation/QuNeo.Bitwig.quneopreset:
--------------------------------------------------------------------------------
1 | { "ComponentSettings" : { "HSliders" : { "HSlider0" : { "hB1Channel" : 0, "hB1inLocation" : 0, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 8, "hB1outNote" : -1, "hB1outNotePressMode" : 0, "hB1outPress" : -1, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 0, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : -1, "hB2outNote" : -1, "hB2outNotePressMode" : 0, "hB2outPress" : -1, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 0, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : -1, "hB3outNote" : -1, "hB3outNotePressMode" : 0, "hB3outPress" : -1, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 0, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : -1, "hB4outNote" : -1, "hB4outNotePressMode" : 0, "hB4outPress" : -1, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "HSlider1" : { "hB1Channel" : 0, "hB1inLocation" : 0, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 7, "hB1outNote" : -1, "hB1outNotePressMode" : 0, "hB1outPress" : -1, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 0, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : -1, "hB2outNote" : -1, "hB2outNotePressMode" : 0, "hB2outPress" : -1, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 0, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : -1, "hB3outNote" : -1, "hB3outNotePressMode" : 0, "hB3outPress" : -1, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 0, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : -1, "hB4outNote" : -1, "hB4outNotePressMode" : 0, "hB4outPress" : -1, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "HSlider2" : { "hB1Channel" : 0, "hB1inLocation" : 0, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 6, "hB1outNote" : -1, "hB1outNotePressMode" : 0, "hB1outPress" : -1, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 0, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : -1, "hB2outNote" : -1, "hB2outNotePressMode" : 0, "hB2outPress" : -1, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 0, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : -1, "hB3outNote" : -1, "hB3outNotePressMode" : 0, "hB3outPress" : -1, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 0, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : -1, "hB4outNote" : -1, "hB4outNotePressMode" : 0, "hB4outPress" : -1, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "HSlider3" : { "hB1Channel" : 0, "hB1inLocation" : 0, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 5, "hB1outNote" : -1, "hB1outNotePressMode" : 0, "hB1outPress" : -1, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 0, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : -1, "hB2outNote" : -1, "hB2outNotePressMode" : 0, "hB2outPress" : -1, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 0, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : -1, "hB3outNote" : -1, "hB3outNotePressMode" : 0, "hB3outPress" : -1, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 0, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : -1, "hB4outNote" : -1, "hB4outNotePressMode" : 0, "hB4outPress" : -1, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "hSliderInChannel" : 0, "hSliderLocalLEDControl" : 0, "hSliderOffThreshold" : 5, "hSliderOnThreshold" : 10, "hSliderSensitivity" : 100 }, "LeftRightButtons" : { "LeftRightButton0" : { "leftrightChannel" : 1, "leftrightEnableSwitch" : 0, "leftrightLInNote" : 0, "leftrightLOutNote" : 19, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : 0, "leftrightROutNote" : 20, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "LeftRightButton1" : { "leftrightChannel" : 1, "leftrightEnableSwitch" : 0, "leftrightLInNote" : 0, "leftrightLOutNote" : 21, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : 0, "leftrightROutNote" : 22, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "LeftRightButton2" : { "leftrightChannel" : 1, "leftrightEnableSwitch" : 0, "leftrightLInNote" : 0, "leftrightLOutNote" : 23, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : 0, "leftrightROutNote" : 24, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "LeftRightButton3" : { "leftrightChannel" : 1, "leftrightEnableSwitch" : 0, "leftrightLInNote" : 0, "leftrightLOutNote" : 17, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : 0, "leftrightROutNote" : 18, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "leftrightInChannel" : 0, "leftrightLocalLEDControl" : 0, "leftrightOffThreshold" : 5, "leftrightOnThreshold" : 10, "leftrightSensitivity" : 66 }, "LongSliders" : { "LongSlider0" : { "lB1Channel" : 1, "lB1inLocation" : 0, "lB1inWidth" : -1, "lB1outLocPassThruRange" : 127, "lB1outLocation" : 11, "lB1outNote" : -1, "lB1outNotePressMode" : 0, "lB1outPress" : -1, "lB1outPressValue" : -1, "lB1outVelocityValue" : 127, "lB1outWidth" : -1, "lB2Channel" : 0, "lB2inLocation" : -1, "lB2inWidth" : -1, "lB2outLocPassThruRange" : 127, "lB2outLocation" : -1, "lB2outNote" : -1, "lB2outNotePressMode" : 0, "lB2outPress" : -1, "lB2outPressValue" : -1, "lB2outVelocityValue" : 127, "lB2outWidth" : -1, "lB3Channel" : 0, "lB3inLocation" : -1, "lB3inWidth" : -1, "lB3outLocPassThruRange" : 127, "lB3outLocation" : -1, "lB3outNote" : -1, "lB3outNotePressMode" : 0, "lB3outPress" : -1, "lB3outPressValue" : -1, "lB3outVelocityValue" : 127, "lB3outWidth" : -1, "lB4Channel" : 0, "lB4inLocation" : -1, "lB4inWidth" : -1, "lB4outLocPassThruRange" : 127, "lB4outLocation" : -1, "lB4outNote" : -1, "lB4outNotePressMode" : 0, "lB4outPress" : -1, "lB4outPressValue" : -1, "lB4outVelocityValue" : 127, "lB4outWidth" : -1 }, "lSliderInChannel" : 0, "lSliderLocalLEDControl" : 0, "lSliderOffThreshold" : 5, "lSliderOnThreshold" : 10, "lSliderSensitivity" : 100 }, "ModeButtons" : { "ModeButton0" : { "modeChannel" : 0, "modeEnableSwitch" : 0, "modeInNote" : -1, "modeOutNote" : -1, "modeOutPress" : -1, "modeOutVelocityValue" : 127 }, "modeLocalLEDControl" : 2, "modeOffThreshold" : 5, "modeOnThreshold" : 10, "modeSensitivity" : 66 }, "Pads" : { "Pad0" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 0, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : 5, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad1" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 1, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 0, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad10" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 10, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad11" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 11, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad12" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 12, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad13" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 13, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad14" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 14, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad15" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 15, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad2" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 2, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 0, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad3" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 3, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad4" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 4, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad5" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 5, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad6" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 6, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad7" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 7, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad8" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 8, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad9" : { "enableGrid" : 0, "inDmNoteG" : 0, "inDmNoteR" : 0, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 9, "outDmNotePressMode" : 0, "outDmPress" : 40, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 60, "outDmXReturn" : 63, "outDmXYReturn" : 63, "outDmYCC" : 61, "outDmYReturn" : 63, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : 127, "outGmVelocityValueNW" : 127, "outGmVelocityValueSE" : 127, "outGmVelocityValueSW" : 127, "padChannel" : 2, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "bank1TransposeInterval" : 0, "bank2TransposeInterval" : 16, "bank3TransposeInterval" : 32, "bank4TransposeInterval" : 48, "cornerIsolation" : 80, "localLEDControl" : 0, "padBankChangeMode" : 1, "padDrumInChannel" : 0, "padGridDiscreteInChannel" : 1, "padGridDualInChannel" : 2, "padOffThreshold" : 5, "padOffset" : 0, "padOnThreshold" : 25, "padSensitivity" : 88, "padVelocityTable" : [ 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21, 22, 23, 24, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 52, 53, 54, 55, 57, 58, 60, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 84, 85, 87, 89, 90, 92, 94, 96, 97, 99, 101, 103, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 125, 127 ], "padVelocityTableID" : "Medium" }, "RhombusButtons" : { "RhombusButton0" : { "rhombusBankControl" : 0, "rhombusChannel" : 1, "rhombusEnableSwitch" : 0, "rhombusInNoteG" : 0, "rhombusInNoteR" : 0, "rhombusOutNote" : 32, "rhombusOutNotePressMode" : 0, "rhombusOutPress" : -1, "rhombusOutPressValue" : -1, "rhombusOutVelocityValue" : 127 }, "rhombusInChannel" : 0, "rhombusLocalLEDControl" : 2, "rhombusOffThreshold" : 5, "rhombusOnThreshold" : 10, "rhombusSensitivity" : 66 }, "Rotaries" : { "Rotary0" : { "rB1Channel" : 0, "rB1DirStorage" : 4, "rB1LocStorage" : -1, "rB1inLocation" : 0, "rB1outDirection" : 0, "rB1outDirectionEnable" : 0, "rB1outLocPassThruRange" : 115, "rB1outLocation" : 9, "rB1outNote" : -1, "rB1outNotePressMode" : 0, "rB1outPress" : -1, "rB1outPressValue" : -1, "rB1outSpeed" : 5, "rB1outVelocityValue" : 127, "rB2Channel" : 0, "rB2DirStorage" : -1, "rB2LocStorage" : -1, "rB2inLocation" : -1, "rB2outDirection" : -1, "rB2outDirectionEnable" : 0, "rB2outLocPassThruRange" : 127, "rB2outLocation" : -1, "rB2outNote" : -1, "rB2outNotePressMode" : 0, "rB2outPress" : -1, "rB2outPressValue" : -1, "rB2outSpeed" : 5, "rB2outVelocityValue" : 127, "rB3Channel" : 0, "rB3DirStorage" : -1, "rB3LocStorage" : -1, "rB3inLocation" : -1, "rB3outDirection" : -1, "rB3outDirectionEnable" : 0, "rB3outLocPassThruRange" : 127, "rB3outLocation" : -1, "rB3outNote" : -1, "rB3outNotePressMode" : 0, "rB3outPress" : -1, "rB3outPressValue" : -1, "rB3outSpeed" : 5, "rB3outVelocityValue" : 127, "rB4Channel" : 0, "rB4DirStorage" : -1, "rB4LocStorage" : -1, "rB4inLocation" : -1, "rB4outDirection" : -1, "rB4outDirectionEnable" : 0, "rB4outLocPassThruRange" : 127, "rB4outLocation" : -1, "rB4outNote" : -1, "rB4outNotePressMode" : 0, "rB4outPress" : -1, "rB4outPressValue" : -1, "rB4outSpeed" : 5, "rB4outVelocityValue" : 127 }, "Rotary1" : { "rB1Channel" : 0, "rB1DirStorage" : 5, "rB1LocStorage" : -1, "rB1inLocation" : 0, "rB1outDirection" : 0, "rB1outDirectionEnable" : 0, "rB1outLocPassThruRange" : 127, "rB1outLocation" : 10, "rB1outNote" : -1, "rB1outNotePressMode" : 0, "rB1outPress" : -1, "rB1outPressValue" : -1, "rB1outSpeed" : 5, "rB1outVelocityValue" : 127, "rB2Channel" : 0, "rB2DirStorage" : -1, "rB2LocStorage" : -1, "rB2inLocation" : -1, "rB2outDirection" : -1, "rB2outDirectionEnable" : 0, "rB2outLocPassThruRange" : 127, "rB2outLocation" : -1, "rB2outNote" : -1, "rB2outNotePressMode" : 0, "rB2outPress" : -1, "rB2outPressValue" : -1, "rB2outSpeed" : 5, "rB2outVelocityValue" : 127, "rB3Channel" : 0, "rB3DirStorage" : -1, "rB3LocStorage" : -1, "rB3inLocation" : -1, "rB3outDirection" : -1, "rB3outDirectionEnable" : 0, "rB3outLocPassThruRange" : 127, "rB3outLocation" : -1, "rB3outNote" : -1, "rB3outNotePressMode" : 0, "rB3outPress" : -1, "rB3outPressValue" : -1, "rB3outSpeed" : 5, "rB3outVelocityValue" : 127, "rB4Channel" : 0, "rB4DirStorage" : -1, "rB4LocStorage" : -1, "rB4inLocation" : -1, "rB4outDirection" : -1, "rB4outDirectionEnable" : 0, "rB4outLocPassThruRange" : 127, "rB4outLocation" : -1, "rB4outNote" : -1, "rB4outNotePressMode" : 0, "rB4outPress" : -1, "rB4outPressValue" : -1, "rB4outSpeed" : 5, "rB4outVelocityValue" : 127 }, "rotaryInChannel" : 0, "rotaryLocalLEDControl" : 0, "rotaryOffThreshold" : 5, "rotaryOnThreshold" : 10, "rotarySensitivity" : 100 }, "TransportButtons" : { "TransportButton0" : { "transportChannel" : 1, "transportInNote" : 0, "transportOutNote" : 29, "transportOutNotePressMode" : 0, "transportOutPress" : -1, "transportOutPressValue" : 1, "transportOutVelocityValue" : 127 }, "TransportButton1" : { "transportChannel" : 1, "transportInNote" : 0, "transportOutNote" : 30, "transportOutNotePressMode" : 0, "transportOutPress" : -1, "transportOutPressValue" : 1, "transportOutVelocityValue" : 127 }, "TransportButton2" : { "transportChannel" : 1, "transportInNote" : 0, "transportOutNote" : 31, "transportOutNotePressMode" : 0, "transportOutPress" : -1, "transportOutPressValue" : 1, "transportOutVelocityValue" : 127 }, "transportInChannel" : 0, "transportLocalLEDControl" : 0, "transportOffThreshold" : 5, "transportOnThreshold" : 10, "transportSensitivity" : 66 }, "UpDownButtons" : { "UpDownButton0" : { "updownBankControl" : 3, "updownChannel" : 1, "updownDInNote" : 0, "updownDOutNote" : 26, "updownDOutNotePressMode" : 0, "updownDOutPress" : -1, "updownDOutPressValue" : -1, "updownDOutVelocityValue" : 127, "updownEnableSwitch" : 0, "updownUInNote" : 0, "updownUOutNote" : 25, "updownUOutNotePressMode" : 0, "updownUOutPress" : -1, "updownUOutPressValue" : -1, "updownUOutVelocityValue" : 127 }, "UpDownButton1" : { "updownBankControl" : 3, "updownChannel" : 1, "updownDInNote" : 0, "updownDOutNote" : 28, "updownDOutNotePressMode" : 0, "updownDOutPress" : -1, "updownDOutPressValue" : -1, "updownDOutVelocityValue" : 127, "updownEnableSwitch" : 0, "updownUInNote" : 0, "updownUOutNote" : 27, "updownUOutNotePressMode" : 0, "updownUOutPress" : -1, "updownUOutPressValue" : -1, "updownUOutVelocityValue" : 127 }, "updownInChannel" : 0, "updownLocalLEDControl" : 2, "updownOffThreshold" : 5, "updownOnThreshold" : 10, "updownSensitivity" : 66 }, "VSliders" : { "VSlider0" : { "vB1Channel" : 0, "vB1inLocation" : 0, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 1, "vB1outNote" : -1, "vB1outNotePressMode" : 0, "vB1outPress" : -1, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 0, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : -1, "vB2outNote" : -1, "vB2outNotePressMode" : 0, "vB2outPress" : -1, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 0, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : -1, "vB3outNote" : -1, "vB3outNotePressMode" : 0, "vB3outPress" : -1, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 0, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : -1, "vB4outNote" : -1, "vB4outNotePressMode" : 0, "vB4outPress" : -1, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "VSlider1" : { "vB1Channel" : 0, "vB1inLocation" : 0, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 2, "vB1outNote" : -1, "vB1outNotePressMode" : 0, "vB1outPress" : -1, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 0, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : -1, "vB2outNote" : -1, "vB2outNotePressMode" : 0, "vB2outPress" : -1, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 0, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : -1, "vB3outNote" : -1, "vB3outNotePressMode" : 0, "vB3outPress" : -1, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 0, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : -1, "vB4outNote" : -1, "vB4outNotePressMode" : 0, "vB4outPress" : -1, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "VSlider2" : { "vB1Channel" : 0, "vB1inLocation" : 0, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 3, "vB1outNote" : -1, "vB1outNotePressMode" : 0, "vB1outPress" : -1, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 0, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : -1, "vB2outNote" : -1, "vB2outNotePressMode" : 0, "vB2outPress" : -1, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 0, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : -1, "vB3outNote" : -1, "vB3outNotePressMode" : 0, "vB3outPress" : -1, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 0, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : -1, "vB4outNote" : -1, "vB4outNotePressMode" : 0, "vB4outPress" : -1, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "VSlider3" : { "vB1Channel" : 0, "vB1inLocation" : 0, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 4, "vB1outNote" : -1, "vB1outNotePressMode" : 0, "vB1outPress" : -1, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 0, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : -1, "vB2outNote" : -1, "vB2outNotePressMode" : 0, "vB2outPress" : -1, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 0, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : -1, "vB3outNote" : -1, "vB3outNotePressMode" : 0, "vB3outPress" : -1, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 0, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : -1, "vB4outNote" : -1, "vB4outNotePressMode" : 0, "vB4outPress" : -1, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "vSliderInChannel" : 0, "vSliderLocalLEDControl" : 0, "vSliderOffThreshold" : 5, "vSliderOnThreshold" : 10, "vSliderSensitivity" : 100 } }, "presetName" : "Bitwig Script Preset", "revisionNumber" : 576 }
--------------------------------------------------------------------------------
/QUNEO/Documentation/QuNeo_Bitwig_Documentation.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QUNEO/Documentation/QuNeo_Bitwig_Documentation.pdf
--------------------------------------------------------------------------------
/QUNEO/Documentation/QuNeo_Bitwig_Layout.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QUNEO/Documentation/QuNeo_Bitwig_Layout.pdf
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QUNEO/QUNEO_Script/.DS_Store
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO.control.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
4 |
5 |
6 | */
7 |
8 |
9 |
10 | //Load the bitwig API, obviously.
11 | loadAPI(1);
12 |
13 | //Define/set our controller properties [ company, device, version, uuid ]
14 | host.defineController("Keith McMillen Instruments", "QUNEO", "1.0", "A323D780-5AF5-11E4-8ED6-0800200C9A66");
15 | host.defineMidiPorts(1, 1);
16 |
17 | //Define/set input/output port names (both i/o are the same)
18 | var portNames = ["QUNEO"];
19 | host.addDeviceNameBasedDiscoveryPair(portNames, portNames);
20 | //host.addDeviceNameBasedDiscoveryPair(["QUNEO MIDI 1"], ["QUNEO MIDI 1"]);
21 |
22 | /////Loading external Files
23 | load("QUNEO_functions.js")
24 | load("QUNEO_pages.js")
25 | load("QUNEO_parameterPage.js")
26 | load("QUNEO_notes.js")
27 | load("QUNEO_clips.js")
28 |
29 | ////Defining Variables
30 |
31 | var on = true;
32 | var initialize = 0;
33 | var paramPage = 1;
34 | var pageNames = [8];
35 | var isMacroMapping = [];
36 | var transportPlay = 0
37 | var transportRec = 0
38 | var masterValue = 0;
39 | var sendValues = [0,0]
40 | var paramValues = initArray(0, 8);
41 | var macroValues = initArray(0, 8);
42 | var trackName = "tracks";
43 | var activePage = parameterPage;
44 | var translationTable = initArray(60, 128);
45 | var noteOffTable = initArray(-1, 128);
46 | var selectionTable = initArray(60,128)
47 | var translate = new Object();
48 | var padPage = notePage;
49 | var pageIndex = pageNames.length
50 | var modeSelect = false;
51 | var trackHasChanged = 0;
52 | var parameterHasChanged = 0;
53 | var hasContent = initArray(0, 16);
54 | var isPlaying = initArray(0, 16);
55 | var isRecording = initArray(0, 16);
56 | var isQueued = initArray(0, 16);
57 | var pendingLEDs = initArray(0, 15);
58 | var currentLEDs = initArray(0,15);
59 | var HIGHEST_CC = 119;
60 | var LOWEST_CC = 12;
61 |
62 |
63 | function init()
64 | {
65 | host.getMidiInPort(0).setMidiCallback(onMidi);
66 | host.getMidiInPort(0).setSysexCallback(onSysex);
67 | noteIn = host.getMidiInPort(0).createNoteInput("QUNEO", "82????", "92????")
68 | noteIn.setShouldConsumeEvents(false);
69 | //println("These ARE the pads you're looking....guy")
70 | sendMidi(144, 36, 127);
71 | sendMidi(144, 37, 127);
72 | sendMidi(144, 38, 127);
73 | sendMidi(144, 39, 127);
74 | sendMidi(144, 42, 127);
75 | sendMidi(144, 43, 127);
76 |
77 | updateTranslationTable();
78 | noteIn.setKeyTranslationTable(translationTable);
79 |
80 | //standardVelocity();
81 | //
82 | notif = host.getNotificationSettings();
83 |
84 | notif.setShouldShowChannelSelectionNotifications(true);
85 | notif.setShouldShowDeviceLayerSelectionNotifications(true);
86 | notif.setShouldShowDeviceSelectionNotifications(true);
87 | notif.setShouldShowMappingNotifications(true);
88 | notif.setShouldShowPresetNotifications(false);
89 | notif.setShouldShowSelectionNotifications(true);
90 | notif.setShouldShowTrackSelectionNotifications(true);
91 | notif.setShouldShowValueNotifications(false);
92 |
93 | //////User Control Settings
94 |
95 | userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);
96 | for(var i=LOWEST_CC; i<=HIGHEST_CC; i++)
97 | {
98 | userControls.getControl(i - LOWEST_CC).setLabel("CC" + i);
99 | }
100 | ////////Views
101 |
102 | transport = host.createTransport();
103 | application = host.createApplication();
104 | trackBank = host.createTrackBank(4, 2, 4);
105 | cursorTrack = host.createCursorTrack(2, 0);
106 | //cursorDevice = host.createCursorDeviceSection(8);
107 | primaryDevice = cursorTrack.getPrimaryDevice();
108 | primaryInstrument = cursorTrack.getPrimaryInstrument();
109 | arranger = host.createArranger(0);
110 | master = host.createMasterTrack(8);
111 |
112 | //Observers
113 |
114 | master.getVolume().addValueObserver(128, function(value)
115 | {
116 | sendMidi(176, 5, value)
117 | masterValue = value
118 |
119 | })
120 |
121 | cursorTrack.addTrackTypeObserver(10, "track", function(name)
122 | {
123 | if (name == "Effect" || name == "Master"){
124 | sendMidi(176, 6, 0)
125 | sendMidi(176, 7, 0)
126 |
127 | }
128 | })
129 |
130 | cursorTrack.getSend(0).addValueObserver(128 ,function(value)
131 | {
132 | display = (value + 64) % 128
133 | if (display > 63 && display < 72){
134 | display = 72
135 | }
136 | sendMidi(176, 6, display)
137 | sendValues[0] = value
138 |
139 | })
140 |
141 | cursorTrack.getSend(1).addValueObserver(128 ,function(value)
142 | {
143 | display = (value + 64) % 128
144 | if (display > 63 && display < 72){
145 | display = 72
146 | }
147 | sendMidi(176, 7, display)
148 | sendValues[1] = value
149 | })
150 |
151 | transport.addIsPlayingObserver(function(on)
152 | {
153 | playObserver(on);
154 |
155 | })
156 |
157 | transport.addIsRecordingObserver(function(on)
158 | {
159 | recObserver(on);
160 | });
161 |
162 |
163 | ///////DEPRECATED_ All is handled by Bitwig.
164 | /*primaryDevice.addPageNamesObserver(function(names)
165 | {
166 | pageNames = arguments;
167 |
168 | });
169 |
170 | primaryDevice.addSelectedPageObserver(8, function(page)
171 | {
172 |
173 | paramPage = page;
174 | /*if (parameterHasChanged == 1){
175 | if (pageNames[paramPage] != undefined){
176 | host.showPopupNotification("Parameter Page = " + pageNames[paramPage]);
177 | }
178 | parameterHasChanged = 0;
179 | }
180 | })*/
181 |
182 |
183 |
184 | //Parameters
185 |
186 | for ( var p = 0; p < 8; p++)
187 | {
188 |
189 | var parameter = primaryDevice.getParameter(p);
190 | parameter.addValueObserver(128, makeIndexedFunction(p, function(index, value)
191 | {
192 | paramValues[index] = value;
193 | if (activePage == parameterPage)
194 | {
195 | paramLED(index, value);
196 |
197 | }
198 |
199 | }));
200 | }
201 |
202 | for (var p = 0; p < 8; p++)
203 | {
204 |
205 | var macro = primaryDevice.getMacro(p).getAmount();
206 | macro.addValueObserver(128, makeIndexedFunction(p, function(index, value)
207 | {
208 |
209 | macroValues[index] = value;
210 | if (activePage == macroPage)
211 | {
212 | macroLED(index, value);
213 | }
214 | }));
215 |
216 | for (var t = 0; t < 4; t++)
217 | {
218 | var track = trackBank.getTrack(t);
219 | var clipLauncher = track.getClipLauncher();
220 | clipLauncher.setIndication(true);
221 |
222 | clipLauncher.addHasContentObserver(getGridObserverFunc(t, hasContent));
223 | clipLauncher.addIsPlayingObserver(getGridObserverFunc(t, isPlaying));
224 | clipLauncher.addIsRecordingObserver(getGridObserverFunc(t, isRecording));
225 | clipLauncher.addIsQueuedObserver(getGridObserverFunc(t, isQueued));
226 | {
227 |
228 | };
229 |
230 |
231 |
232 | }
233 |
234 |
235 |
236 | }
237 |
238 |
239 |
240 | devicePage.updateIndications();
241 |
242 | if (initialize == 0){
243 | padLED();
244 | initialize = 1
245 | }
246 | padPage = notePage
247 | }
248 | /////Functions!
249 |
250 |
251 | function makeIndexedFunction(index, f)
252 | {
253 | return function(value)
254 | {
255 | f[index] = value;
256 | };
257 | }
258 |
259 | function getGridObserverFunc(track, varToStore)
260 | {
261 | return function(scene, value)
262 | {
263 | varToStore[scene*4 + track] = value;
264 | if (padPage == clipPage){
265 | clipLED();
266 | }
267 | }
268 | }
269 |
270 | var devicePage = new Object{};
271 |
272 | devicePage.updateIndications = function()
273 | {
274 | for ( var p = 0; p < 8; p++)
275 | {
276 | macro = primaryDevice.getMacro(p).getAmount();
277 | parameter = primaryDevice.getParameter(p);
278 | track = trackBank.getTrack(p);
279 | //parameter.setIndication(false);///Tells Bitwig to delete previous color association.
280 | parameter.setIndication(true);///Tells BitWig to associate the color with the parameters.
281 | macro.setIndication(true);
282 | //track.getVolume().setIndication(false);
283 | //track.getPan().setIndication(false);
284 | }
285 | }
286 |
287 |
288 | function onMidi(status, data1, data2)
289 | {
290 |
291 | //printMidi(status, data1, data2)
292 |
293 | if (isChannelController(status))
294 | {
295 | if (data1 <= 8)
296 | {
297 | if (activePage == parameterPage)
298 | {
299 | paramControl(data1, data2)
300 | }
301 | if (activePage == macroPage)
302 | {
303 | macroControl(data1,data2)
304 | }
305 | }else if (data1 > 8 && data1 < 11)
306 | { if (data1 == 9)
307 | {
308 | cursorTrack.getSend(0).set((data2 + 64) % 128,128);
309 | }else
310 | {
311 | cursorTrack.getSend(1).set((data2 + 64) % 128, 128);
312 | }
313 | }else if (data1 == 11){
314 | master.getVolume().set(data2, 128)
315 | }
316 |
317 | if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC)
318 | {
319 | var index = data1 - LOWEST_CC;
320 | userControls.getControl(index).set(data2, 128);
321 | }
322 |
323 | }else{
324 |
325 | rootOffsetIndex(data1, data2)
326 | scaleTypeScroll(data1, data2);
327 | scaleIndexScroll(data1, data2);
328 | transportControl(status, data1, data2);
329 | parameterSelect(data1, data2);
330 | trackSelect(data1, data2);
331 | pageSelect(data1, data2);
332 | clipLaunching(data1, data2)
333 | clipScroll(data1, data2)
334 |
335 | if (modeSelect == true && data1 < 8)
336 | {
337 |
338 | padPage = notePage
339 |
340 | }else if (modeSelect == true && data1 > 7 && data1 < 16 )
341 | {
342 | padPage = clipPage
343 |
344 | }
345 |
346 |
347 | if (data1 == 32 && data2 == 127)
348 | {
349 | println(padPage)
350 | noteIn.setKeyTranslationTable(noteOffTable)
351 | for (var i = 0; i < 32; i ++)
352 | {
353 | sendMidi(144, i, 0); //clear all Pads
354 | }
355 | for (var i = 0; i < 16; i +=2 )
356 | {
357 | sendMidi(144, i, 127)
358 | }
359 | for (var i = 17; i < 32; i +=2 )
360 | {
361 | sendMidi(144, i, 127)
362 | }
363 |
364 | modeSelect = true;
365 |
366 |
367 | //println(modeSelect)
368 | }
369 |
370 |
371 | if (data1 == 32 && data2 == 0)
372 | {
373 | for (var i = 0; i < 32; i ++)
374 | {
375 | sendMidi(144, i, 0); //clear all Pads
376 | }
377 | modeSelect = false
378 | if (padPage == notePage)
379 | {
380 | padLED();
381 | noteIn.setKeyTranslationTable(translationTable);
382 | }else if(padPage == clipPage)
383 | {
384 |
385 | clipLED();
386 | for (i = 0; i <16 ;i ++){
387 | sendClipLEDs(i)
388 | }
389 | noteIn.setKeyTranslationTable(noteOffTable);
390 | }
391 |
392 | }
393 |
394 | }
395 |
396 | }
397 |
398 | function onSysex(data)
399 | {
400 | if (String(data) == "f07e00060300015f1e0000001e12000ff7")
401 | {
402 |
403 | sendMidi(144, 36, 127);
404 | sendMidi(144, 37, 127);
405 | sendMidi(144, 38, 127);
406 | sendMidi(144, 39, 127);
407 | sendMidi(144, 42, 127);
408 | sendMidi(144, 43, 127);
409 | if (padPage == notePage)
410 | {
411 | padLED();
412 |
413 | }
414 |
415 | if(padPage == clipPage)
416 | {
417 | clipLED();
418 | for (i = 0; i <16 ;i ++){
419 | sendClipLEDs(i)
420 | }
421 | }
422 |
423 | if (activePage == parameterPage){
424 | host.scheduleTask(function()
425 | {restoreParameters()
426 | },null,30)
427 | }
428 | if (activePage == macroPage){
429 | host.scheduleTask(function()
430 | {restoreMacros()
431 | },null,30)
432 | }
433 | sendMidi(176, 5, masterValue)
434 | restoreTransport()
435 | restoreSends()
436 | }
437 |
438 | }
439 |
440 |
441 |
442 | function exit()
443 | {
444 | for (var i = 0; i < 32; i ++)
445 | {
446 | sendMidi(144, i, 0); //clear all Pads
447 | }
448 |
449 | }
450 |
451 |
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Bitwig Studio | KMI QuNeo
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
25 |

26 |
27 |
28 |
29 |
NOTE INPUTS
30 |
31 |
The Note Input section is used to (you guessed it!) input notes into BitWigs built in instruments or VSTs on an midi or hybrid track.
32 |
On load the QuNeo will display the major scale, orange pads indicate the root, and green pads indicate notes in the key. scrolling up using the bottom right arrows will then display a minor scale, followed by major and minor in key modes. Orange still indicates roots. You can change your root note with the pair of arrows second from the top on the left.
33 |
34 |
35 |
You can scroll the playable notes by using the arrows on the bottom left. While in normal scale display, the pattern will shift by one row, making the roots appear in different places on the grid. While using in key scales, the notes will shift by an octave, maintaining the same display regardless of position.
36 |
To Change to Clip Launching Mode, hold the rhombus button. The grid will split in half, and hitting any pad in the top half (red) will switch to clip launching mode, and hitting any pad in the lower half (green) will switch back to Note input. While in this mode the two pair of arrows next to the long slider will move around the clip launcher. The left pair will scroll vertically and the right pair will scroll horizontally.
37 |
38 |
39 |
40 |
41 |
PARAMETER/MACRO sliders
42 |
43 |
The sliders on the QuNeo automatically map to the primary device in the selected track. You can navigate through your sessions track using the top pair of the arrows on the left. You can select whether you want to grab the parameter pages, or the macros, using the third pair of arrows on the left. When in parameter mode, you can scroll through the eight parameter pages using the bottom pair of arrows.
44 |
The two rotaries control the send amount for the selected track.
45 |
46 |
47 |
48 |
TRANSPORT
49 |
50 |
The transport section is pretty self explanatory. These buttons are used to play, stop, and record arm your session
51 |
The long slider on the bottom is a Master Volume Control.
52 |
53 |
54 |
55 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QUNEO/QUNEO_Script/QUNEO.png
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO_clips.js:
--------------------------------------------------------------------------------
1 | //Clip Launching Mode
2 |
3 | function GREEN(pad){
4 | sendMidi(144, pad * 2, 127)
5 | sendMidi(144, pad * 2 + 1, 0)
6 | }
7 |
8 | function RED(pad){
9 | sendMidi(144, pad * 2, 0)
10 | sendMidi(144, pad * 2 + 1, 127)
11 | }
12 |
13 | function YELLOW1(pad){
14 | sendMidi(144, pad * 2, 50)
15 | sendMidi(144, pad * 2 + 1, 5)
16 | }
17 |
18 | function OFF(pad){
19 | sendMidi(144, pad * 2, 0)
20 | sendMidi(144, pad * 2 + 1, 0)
21 | }
22 |
23 | function clipLED()
24 | {
25 | contentLED();
26 | playingLED();
27 | recordingLED();
28 | clipUpdate();
29 |
30 | }
31 |
32 |
33 | function clipScroll(data1, data2)
34 | {
35 | if (padPage == clipPage){
36 | if(data1 == 25 && data2 == 127){
37 | trackBank.scrollScenesUp()
38 |
39 | }else if(data1 == 26 && data2 == 127){
40 | trackBank.scrollScenesDown()
41 |
42 | }else if(data1 == 28 && data2 == 127){
43 | trackBank.scrollTracksDown()
44 |
45 | } else if(data1 == 27 && data2 == 127){
46 | trackBank.scrollTracksUp()
47 |
48 | }
49 | }
50 |
51 |
52 |
53 |
54 |
55 | }
56 |
57 |
58 |
59 |
60 | function clipLaunching(data1, data2)
61 | {
62 | if (padPage == clipPage && modeSelect == false){
63 | if((data1 % 4 == 0) && (data2 > 0)){
64 | trackBank.getTrack(0).getClipLauncher().launch(3 - (data1/4))
65 | }else if ((data1 % 4 == 1) && (data2 > 0)){
66 | trackBank.getTrack(1).getClipLauncher().launch(3 - ((data1 - 1)/4))
67 | }else if ((data1 % 4 == 2) && (data2 > 0)){
68 | trackBank.getTrack(2).getClipLauncher().launch(3 - ((data1 - 2)/4))
69 | }else if ((data1 % 4 == 3) && (data2 > 0)){
70 | trackBank.getTrack(3).getClipLauncher().launch(3 - ((data1 - 3)/4))
71 | }
72 |
73 |
74 |
75 | }
76 |
77 |
78 | }
79 |
80 | function contentLED()
81 | {
82 | for(i = 0; i < 16; i++){
83 | if (hasContent[i] == true){
84 | pendingLEDs[i] = 1
85 | }else if (hasContent[i] == false){
86 | pendingLEDs[i] = 0
87 | }
88 | }
89 |
90 | }
91 |
92 |
93 | function playingLED()
94 | {
95 | for(i = 0; i < 16; i++){
96 | if (isPlaying[i] == true){
97 | pendingLEDs[i] = 2
98 | }
99 | }
100 | }
101 |
102 | function recordingLED()
103 | {
104 | for (i = 0 ; i <16; i ++){
105 | if (isRecording[i] == true){
106 | pendingLEDs[i] = 3
107 | }
108 | }
109 |
110 | }
111 |
112 |
113 | function clipUpdate()
114 | {
115 | for(i = 0; i < 16; i ++){
116 | if (pendingLEDs[i] != currentLEDs[i]){
117 | currentLEDs[i] = pendingLEDs[i]
118 | sendClipLEDs(i)
119 |
120 | }
121 |
122 |
123 |
124 | }
125 |
126 | }
127 |
128 | function sendClipLEDs(index){
129 | switch(index){
130 | case 0:
131 | if(currentLEDs[index] == 0){
132 | OFF(12)
133 |
134 | }else if (currentLEDs[index] == 1){
135 | YELLOW1(12)
136 |
137 | }else if (currentLEDs[index] == 2){
138 | GREEN(12)
139 | }else if (currentLEDs[index] == 3){
140 | RED(12)
141 | }
142 | break;
143 | case 1:
144 | if(currentLEDs[index] == 0){
145 | OFF(13)
146 |
147 | }else if (currentLEDs[index] == 1){
148 | YELLOW1(13)
149 |
150 | }else if (currentLEDs[index] == 2){
151 | GREEN(13)
152 | }else if (currentLEDs[index] == 3){
153 | RED(13)
154 | }
155 | break;
156 | case 2:
157 | if(currentLEDs[index] == 0){
158 | OFF(14)
159 |
160 | }else if (currentLEDs[index] == 1){
161 | YELLOW1(14)
162 |
163 | }else if (currentLEDs[index] == 2){
164 | GREEN(14)
165 | }else if (currentLEDs[index] == 3){
166 | RED(14)
167 | }
168 | break;
169 | case 3:
170 | if(currentLEDs[index] == 0){
171 | OFF(15)
172 |
173 | }else if (currentLEDs[index] == 1){
174 | YELLOW1(15)
175 |
176 | }else if (currentLEDs[index] == 2){
177 | GREEN(15)
178 |
179 | }else if (currentLEDs[index] == 3){
180 | RED(15)
181 | }
182 | break;
183 | case 4:
184 | if(currentLEDs[index] == 0){
185 | OFF(8)
186 |
187 | }else if (currentLEDs[index] == 1){
188 | YELLOW1(8)
189 |
190 | }else if (currentLEDs[index] == 2){
191 | GREEN(8)
192 |
193 | }else if (currentLEDs[index] == 3){
194 | RED(8)
195 | }
196 | break;
197 | case 5:
198 | if(currentLEDs[index] == 0){
199 | OFF(9)
200 |
201 | }else if (currentLEDs[index] == 1){
202 | YELLOW1(9)
203 |
204 | }else if (currentLEDs[index] == 2){
205 | GREEN(9)
206 |
207 | }else if (currentLEDs[index] == 3){
208 | RED(9)
209 | }
210 | break;
211 | case 6:
212 | if(currentLEDs[index] == 0){
213 | OFF(10)
214 |
215 | }else if (currentLEDs[index] == 1){
216 | YELLOW1(10)
217 |
218 | }else if (currentLEDs[index] == 2){
219 | GREEN(10)
220 |
221 | }else if (currentLEDs[index] == 3){
222 | RED(10)
223 | }
224 | break;
225 | case 7:
226 | if(currentLEDs[index] == 0){
227 | OFF(11)
228 |
229 | }else if (currentLEDs[index] == 1){
230 | YELLOW1(11)
231 |
232 | }else if (currentLEDs[index] == 2){
233 | GREEN(11)
234 |
235 | }else if (currentLEDs[index] == 3){
236 | RED(11)
237 | }
238 | break;
239 | case 8:
240 | if(currentLEDs[index] == 0){
241 | OFF(4)
242 |
243 | }else if (currentLEDs[index] == 1){
244 | YELLOW1(4)
245 |
246 | }else if (currentLEDs[index] == 2){
247 | GREEN(4)
248 |
249 | }else if (currentLEDs[index] == 3){
250 | RED(4)
251 | }
252 | break;
253 | case 9:
254 | if(currentLEDs[index] == 0){
255 | OFF(5)
256 |
257 | }else if (currentLEDs[index] == 1){
258 | YELLOW1(5)
259 |
260 | }else if (currentLEDs[index] == 2){
261 | GREEN(5)
262 |
263 | }else if (currentLEDs[index] == 3){
264 | RED(5)
265 | }
266 | break;
267 | case 10:
268 | if(currentLEDs[index] == 0){
269 | OFF(6)
270 |
271 | }else if (currentLEDs[index] == 1){
272 | YELLOW1(6)
273 |
274 | }else if (currentLEDs[index] == 2){
275 | GREEN(6)
276 |
277 | }else if (currentLEDs[index] == 3){
278 | RED(6)
279 | }
280 | break;
281 | case 11:
282 | if(currentLEDs[index] == 0){
283 | OFF(7)
284 |
285 | }else if (currentLEDs[index] == 1){
286 | YELLOW1(7)
287 |
288 | }else if (currentLEDs[index] == 2){
289 | GREEN(7)
290 |
291 | }else if (currentLEDs[index] == 3){
292 | RED(7)
293 | }
294 | break;
295 | case 12:
296 | if(currentLEDs[index] == 0){
297 | OFF(0)
298 |
299 | }else if (currentLEDs[index] == 1){
300 | YELLOW1(0)
301 |
302 | }else if (currentLEDs[index] == 2){
303 | GREEN(0)
304 |
305 | }else if (currentLEDs[index] == 3){
306 | RED(0)
307 | }
308 | break;
309 | case 13:
310 | if(currentLEDs[index] == 0){
311 | OFF(1)
312 |
313 | }else if (currentLEDs[index] == 1){
314 | YELLOW1(1)
315 |
316 | }else if (currentLEDs[index] == 2){
317 | GREEN(1)
318 |
319 | }else if (currentLEDs[index] == 3){
320 | RED(1)
321 | }
322 | break;
323 | case 14:
324 | if(currentLEDs[index] == 0){
325 | OFF(2)
326 |
327 | }else if (currentLEDs[index] == 1){
328 | YELLOW1(2)
329 |
330 | }else if (currentLEDs[index] == 2){
331 | GREEN(2)
332 |
333 | }else if (currentLEDs[index] == 3){
334 | RED(2)
335 | }
336 | break;
337 | case 15:
338 | if(currentLEDs[index] == 0){
339 | OFF(3)
340 |
341 | }else if (currentLEDs[index] == 1){
342 | YELLOW1(3)
343 |
344 | }else if (currentLEDs[index] == 2){
345 | GREEN(3)
346 |
347 | }else if (currentLEDs[index] == 3){
348 | RED(3)
349 | }
350 | break;
351 | }
352 |
353 |
354 |
355 |
356 | }
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO_functions.js:
--------------------------------------------------------------------------------
1 | function transportControl(status, data1, data2){
2 | if (data1 == 29 && data2 == 127){
3 | transport.record();
4 | }else if (data1 == 30 && data2 == 127){
5 | transport.stop();
6 | }else if (data1 == 31 && data2 == 127){
7 | transport.play();
8 | }
9 | };
10 |
11 | function restoreTransport()
12 | {
13 | if (transportPlay)
14 | {
15 | sendMidi(144, 35, 127);
16 | sendMidi(144, 34, 0);
17 |
18 | }else
19 | {
20 | sendMidi(144, 35, 0);
21 | sendMidi(144, 34, 127)
22 |
23 | }
24 |
25 | if (transportRec)
26 | {
27 | sendMidi(144, 33, 127);
28 | }else
29 | {
30 | sendMidi(144, 33, 0);
31 | }
32 | }
33 |
34 | function restoreMaster()
35 | {
36 |
37 | }
38 |
39 | function restoreSends()
40 | {
41 | sendMidi(176, 6, sendValues[0]);
42 | sendMidi(176, 7, sendValues[1]);
43 | }
44 |
45 | function playObserver(on)
46 | {
47 | transportPlay = on;
48 | if (on == true){
49 | sendMidi(144, 35, 127);
50 | sendMidi(144, 34, 0);
51 | }else{
52 | sendMidi(144, 35, 0);
53 | sendMidi(144, 34, 127)
54 | }
55 | };
56 |
57 | function recObserver(on)
58 | {
59 | transportRec = on;
60 | if (on == true){
61 | sendMidi(144, 33, 127);
62 | }else{
63 | sendMidi(144, 33, 0);
64 | }
65 | };
66 |
67 | function trackSelect(data1, data2)
68 | {
69 | if(data1 == 19 && data2 != 0)
70 | {
71 | trackHasChanged = 1;
72 | parameterHasChanged = 0;
73 | cursorTrack.selectPrevious();
74 |
75 | if (trackName == "Master")
76 | {
77 | sendMidi(144, 37, 0)
78 | }else{
79 | sendMidi(144,37,127)
80 | }
81 |
82 | } else if(data1 == 20 && data2 != 0)
83 | {
84 | trackHasChanged = 1;
85 | parameterHasChanged = 0;
86 | cursorTrack.selectNext();
87 |
88 | if (trackName == "Master")
89 | {
90 | sendMidi(144, 37, 0)
91 | }else{
92 | sendMidi(144,37,127)
93 | }
94 |
95 | }
96 | }
97 |
98 |
99 |
100 |
101 |
102 |
103 | function parameterSelect(data1, data2)
104 | {
105 | if (activePage == parameterPage){
106 | if(data1 == 18 && data2 != 0)
107 | {
108 | parameterHasChanged = 1;
109 | for ( var p = 0; p < 8; p++)
110 | {
111 |
112 | parameter = primaryDevice.getParameter(p);
113 | track = trackBank.getTrack(p);
114 | parameter.setIndication(false);///Tells Bitwig to delete previous color association.
115 |
116 | }
117 | primaryDevice.nextParameterPage();
118 | devicePage.updateIndications();
119 | if (pageNames[paramPage] == undefined){
120 | parameterHasChanged = 0;
121 | }
122 |
123 | }else if(data1 == 17 && data2 != 0)
124 | {
125 | parameterHasChanged = 1;
126 | primaryDevice.previousParameterPage();
127 | devicePage.updateIndications();
128 | if (pageNames[paramPage] == undefined){
129 | parameterHasChanged = 0;
130 | }
131 |
132 | }
133 | }
134 | };
135 |
136 | function paramControl(data1, data2)
137 | {
138 | primaryDevice.getParameter(data1 - 1).set(data2,128);
139 | };
140 |
141 | function macroControl(data1, data2)
142 | {
143 | primaryDevice.getMacro(data1 - 1).getAmount().set(data2,128);
144 | };
145 |
146 | function paramLED(index, value)
147 | {
148 | if(activePage == parameterPage)
149 | {
150 | if (index == 0)
151 | { sendMidi(176, 1, value)
152 |
153 | }else if (index == 1)
154 | {
155 | sendMidi(176, 2, value)
156 |
157 | }else if (index == 2)
158 | {
159 | sendMidi(176, 3, value)
160 |
161 | }else if (index == 3)
162 | {
163 | sendMidi(176, 4, value)
164 |
165 | }else if (index == 4)
166 | {
167 | sendMidi(176, 8, value)
168 |
169 | }else if (index == 5)
170 | {
171 | sendMidi(176, 9, value)
172 |
173 | }else if (index == 6)
174 | {
175 | sendMidi(176, 10, value)
176 |
177 | }else if (index == 7)
178 | {
179 | sendMidi(176,11, value)
180 | }
181 | }
182 | }
183 |
184 | function macroLED(index, value)
185 | {
186 | if (activePage == macroPage)
187 | {
188 | if (index == 0)
189 | { sendMidi(176, 1, value)
190 |
191 | }else if (index == 1)
192 | {
193 | sendMidi(176, 2, value)
194 |
195 | }else if (index == 2)
196 | {
197 | sendMidi(176, 3, value)
198 |
199 | }else if (index == 3)
200 | {
201 | sendMidi(176, 4, value)
202 |
203 | }else if (index == 4)
204 | {
205 | sendMidi(176, 8, value)
206 |
207 | }else if (index == 5)
208 | {
209 | sendMidi(176, 9, value)
210 |
211 | }else if (index == 6)
212 | {
213 | sendMidi(176, 10, value)
214 |
215 | }else if (index == 7)
216 | {
217 | sendMidi(176,11, value)
218 | }
219 | }
220 | }
221 |
222 | function pageSelect(data1, data2)
223 | {
224 | if (data1 == 23)
225 | {
226 |
227 | activePage = parameterPage
228 | for (var p = 1; p < 5; p ++)
229 | for (var p = 8; p < 12; p ++)
230 | {
231 | sendMidi(176, p, 0)
232 | }
233 | restoreParameters();
234 | host.showPopupNotification("Parameter Page");
235 |
236 |
237 | sendMidi(144, 40, 127)
238 | sendMidi(144, 41, 0)
239 | sendMidi(144, 42, 127)
240 | sendMidi(144, 43, 127)
241 |
242 |
243 |
244 | }else if (data1 == 24)
245 | {
246 | activePage = macroPage
247 | for (var p = 1; p < 5; p ++)
248 | for (var p = 8; p < 12; p ++)
249 | {
250 | sendMidi(176, p, 0)
251 | }
252 | restoreMacros();
253 | host.showPopupNotification("Macro Page");
254 | sendMidi(144, 40, 0)
255 | sendMidi(144, 41, 127)
256 | sendMidi(144, 42, 0)
257 | sendMidi(144, 43, 0)
258 | }
259 |
260 |
261 |
262 |
263 | };
264 |
265 | function restoreParameters()
266 | {
267 | sendMidi(176, 1, paramValues[0]);
268 | sendMidi(176, 2, paramValues[1]);
269 | sendMidi(176, 3, paramValues[2]);
270 | sendMidi(176, 4, paramValues[3]);
271 | sendMidi(176, 8, paramValues[4]);
272 | sendMidi(176, 9, paramValues[5]);
273 | sendMidi(176, 10, paramValues[6]);
274 | sendMidi(176, 11, paramValues[7]);
275 | }
276 |
277 | function restoreMacros()
278 | {
279 | sendMidi(176, 1, macroValues[0]);
280 | sendMidi(176, 2, macroValues[1]);
281 | sendMidi(176, 3, macroValues[2]);
282 | sendMidi(176, 4, macroValues[3]);
283 | sendMidi(176, 8, macroValues[4]);
284 | sendMidi(176, 9, macroValues[5]);
285 | sendMidi(176, 10, macroValues[6]);
286 | sendMidi(176, 11, macroValues[7]);
287 | }
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO_notes.js:
--------------------------------------------------------------------------------
1 | //Notes
2 |
3 |
4 | var majorScaleOne = [0, 2, 4, 5, 7, 9, 11, 12, 14];
5 | var majorScaleTwo = [0, 1, 3, 5, 7, 8, 10, 12, 13, 15];
6 | var majorScaleThree = [1, 3, 4, 6, 8, 9, 11, 13, 15];
7 |
8 | var minorScaleOne = [0, 2, 3, 5, 7, 8, 10, 12, 14, 15];
9 | var minorScaleTwo = [1, 3, 4, 6, 8, 10, 11, 13, 15];
10 | var minorScaleThree = [0, 2, 4, 6, 7, 9, 11, 12, 14];
11 |
12 | var majorScaleInKey = [0, 2, 4, 5, 7, 9, 11, 12, 14, 16, 17, 19, 21, 23, 24, 26]
13 | var minorScaleInKey = [0, 2, 3, 5, 7, 8, 10, 12, 14, 15, 17, 19, 20, 22, 24, 26]
14 | var scaleInKey = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
15 |
16 | var majorScales =
17 | {
18 | one: majorScaleOne,
19 | two: majorScaleTwo,
20 | three: majorScaleThree,
21 | };
22 |
23 | var minorScales =
24 | {
25 | one: minorScaleOne,
26 | two: minorScaleTwo,
27 | three: minorScaleThree,
28 | };
29 |
30 | var scaleName = ["Major", "Minor", "Major In Key", "Minor In Key"];
31 | var scaleTypeIndex = 0
32 | var scaleLength = 9;
33 | var scale = majorScales.one;
34 | var GREEN_LEDS = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30];
35 | var RED_LEDS = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31];
36 | var scaleRoot = (scaleIndex % 3) * 4;
37 | var scaleIndex = 9;
38 | var scaleIndexInKey = 3;
39 | var rootOffset = 60;
40 | var roots = ["C", "C#/Db", "D", "D#/Eb", "E","F", "F#/Gb", "G", "G#/Ab", "A", "A#/Bb", "B"];
41 |
42 | function scaleScroll(){
43 | if (scaleTypeIndex == 0)
44 | {
45 | if (scaleIndex % 3 == 0)
46 | {
47 | scale = majorScales.one
48 | }else if(scaleIndex % 3 == 1)
49 | {
50 | scale = majorScales.two
51 | }else if(scaleIndex % 3 == 2)
52 | {
53 | scale = majorScales.three
54 | }
55 | scaleLength = scale.length
56 | }else if (scaleTypeIndex == 1)
57 | {
58 | if (scaleIndex % 3 == 0)
59 | {
60 | scale = minorScales.one
61 | }else if(scaleIndex % 3 == 1)
62 | {
63 | scale = minorScales.two
64 | }else if(scaleIndex % 3 == 2)
65 | {
66 | scale = minorScales.three
67 | }
68 | scaleLength = scale.length
69 | }else if (scaleTypeIndex > 1)
70 | {
71 |
72 | scale = scaleInKey
73 |
74 | }
75 | }
76 |
77 |
78 | function octaveNotification()
79 | {
80 | switch (scaleIndex / 3)
81 | {
82 | case 0:
83 | host.showPopupNotification("Octave -2")
84 | break;
85 |
86 | case 1:
87 | host.showPopupNotification("Octave -1")
88 | break;
89 |
90 | case 2:
91 | host.showPopupNotification("Octave 0")
92 | break;
93 |
94 | case 3:
95 | host.showPopupNotification("Octave 1")
96 | break;
97 |
98 | case 4:
99 | host.showPopupNotification("Octave 2")
100 | break;
101 |
102 | case 5:
103 | host.showPopupNotification("Octave 3")
104 | break;
105 |
106 | case 6:
107 | host.showPopupNotification("Octave 4")
108 | break;
109 |
110 | case 7:
111 | host.showPopupNotification("Octave 5")
112 | break;
113 |
114 | case 8:
115 | host.showPopupNotification("Octave 6")
116 | break;
117 |
118 | case 9:
119 | host.showPopupNotification("Octave 7")
120 | break;
121 |
122 | case 10:
123 | host.showPopupNotification("Octave 8")
124 | break;
125 | }
126 | };
127 |
128 | function padLED ()
129 | {
130 | for (var i = 0; i < 32; i ++)
131 | {
132 | sendMidi(144, i, 0); //clear all Pads
133 | };
134 |
135 |
136 | if (scaleTypeIndex == 0 || scaleTypeIndex == 1)
137 | {
138 | scaleScroll();
139 | for (var i = 0 ; i < scale.length ; i++)
140 | {
141 | sendMidi(144 , GREEN_LEDS[scale[i]], 127)
142 | if (scaleIndex % 3 == 0)
143 | {
144 | if ( i % 7 == 0)
145 | {
146 | sendMidi(144 , (RED_LEDS[scale[i]]), 80)
147 | }
148 | }else if (scaleIndex %3 == 1)
149 | {
150 | if (scaleTypeIndex == 0)
151 | {sendMidi(144 , (RED_LEDS[scale[5]]), 80)
152 | }else if (scaleTypeIndex == 1)
153 | {sendMidi(144 , (RED_LEDS[scale[4]]), 80)}
154 | }else if (scaleIndex % 3 == 2)
155 | {
156 | sendMidi(144 , (RED_LEDS[scale[2]]), 80)
157 | }
158 | }
159 | }else if (scaleTypeIndex == 2 || scaleTypeIndex == 3)
160 | {
161 | for (var i = 0; i < 16; i++)
162 | {
163 | sendMidi(144, GREEN_LEDS[i], 127)
164 | if(i % 7 == 0)
165 | {
166 | sendMidi(144, RED_LEDS[i], 127)
167 | }
168 | }
169 | }
170 | }
171 |
172 | function scaleIndexScroll(data1, data2)
173 | {
174 | if (padPage == notePage)
175 | {
176 | if (scaleTypeIndex == 0 || scaleTypeIndex == 1)
177 | {
178 | if (data1 == 25 && data2 == 127)
179 | {
180 | if (scaleIndex == 32){
181 | scaleIndex == 32
182 | }else{
183 | scaleIndex ++;
184 | }
185 | padLED();
186 | updateTranslationTable();
187 | octaveNotification();
188 | }
189 |
190 | if (data1 == 26 && data2 == 127)
191 | {
192 | if (scaleIndex == 0){
193 | scaleIndex == 0
194 | }else{
195 | scaleIndex --;
196 | }
197 | padLED();
198 | updateTranslationTable();
199 | octaveNotification();
200 |
201 | }
202 |
203 |
204 | }else if (scaleTypeIndex == 2 || scaleTypeIndex == 3)
205 | {
206 | if (data1 == 25 && data2 == 127)
207 | {
208 | if (scaleIndex >= 30){
209 | scaleIndex == 30
210 | }else{
211 | scaleIndex += 3;
212 | }
213 |
214 | updateTranslationTable();
215 | octaveNotification();
216 |
217 | }
218 |
219 | if (data1 == 26 && data2 == 127)
220 | {
221 | if (scaleIndex == 0){
222 | scaleIndex == 0
223 | }else{
224 | scaleIndex -= 3;
225 | }
226 |
227 | updateTranslationTable();
228 | octaveNotification();
229 | }
230 |
231 | }
232 | }
233 | }
234 |
235 | function scaleNotifications (){
236 | if (scaleTypeIndex == 0)
237 | {
238 | host.showPopupNotification("Major")
239 | }else if (scaleTypeIndex == 1)
240 | {
241 | host.showPopupNotification("Minor")
242 | }else if (scaleTypeIndex == 2)
243 | {
244 | host.showPopupNotification("Major In Key")
245 | }else if (scaleTypeIndex == 3)
246 | host.showPopupNotification("Minor In Key")
247 | }
248 |
249 | function scaleTypeScroll(data1, data2)
250 | {
251 | if (padPage == notePage)
252 | {
253 | if (data1 == 27 && data2 == 127)
254 | {
255 | if (scaleTypeIndex == 3)
256 | {scaleTypeIndex = 3
257 | }else
258 | {
259 | scaleTypeIndex ++;
260 | }
261 |
262 | padLED();
263 | scaleNotifications();
264 | if (scaleTypeIndex > 1)
265 | updateTranslationTable();
266 |
267 |
268 | }
269 |
270 | if (data1 == 28 && data2 ==127)
271 | {
272 | if (scaleTypeIndex == 0)
273 | {scaleTypeIndex = 0
274 | }else
275 | {
276 | scaleTypeIndex --;
277 | }
278 |
279 | padLED();
280 | scaleNotifications();
281 | updateTranslationTable();
282 | }
283 | }
284 | }
285 |
286 |
287 | function updateTranslationTable ()
288 | {
289 | if (scaleTypeIndex < 2)
290 | {
291 |
292 | for (var i = 0; i < 127; i ++)
293 | {
294 | var offset = (i + scaleIndex * 4) + (rootOffset % 12);
295 | if (offset >= 127)
296 | {
297 | offset = 127
298 | }
299 |
300 | translationTable[i] = offset;
301 | }
302 | }else
303 | {
304 | if (scaleTypeIndex > 1)
305 | {
306 |
307 | if (scaleIndex % 3 == 0)
308 | {
309 | scaleIndex = scaleIndex;
310 | }else if(scaleIndex % 3 == 1)
311 | {
312 | scaleIndex = (scaleIndex - 1);
313 | }else if(scaleIndex % 3 == 2)
314 | {
315 | scaleIndex = (scaleIndex + 1);
316 | }
317 | }
318 | }
319 |
320 | if (scaleTypeIndex == 2)
321 | {
322 | for (var i = 0; i < 16; i ++)
323 | {
324 | var offset = (majorScaleInKey[i] + scaleIndex * 4) + (rootOffset % 12);
325 | if (offset >= 127)
326 | {
327 | offset = 127
328 | }
329 | translationTable[i] = offset;
330 | }
331 | }else if (scaleTypeIndex == 3)
332 | {
333 | for (var i = 0; i < 127; i ++)
334 | {
335 | var offset = (minorScaleInKey[i] + scaleIndex * 4) + (rootOffset % 12);
336 | if (offset >= 127)
337 | {
338 | offset = 127
339 | }
340 | translationTable[i] = offset;
341 |
342 | }
343 |
344 | }
345 | noteIn.setKeyTranslationTable(translationTable);
346 | //noteIn.setShouldConsumeEvents(true);
347 |
348 | }
349 |
350 |
351 | function rootOffsetIndex(data1, data2)
352 | {
353 | if (data1 == 22 && data2 == 127)
354 | {
355 | rootOffset ++ ;
356 | host.showPopupNotification("Root = " + roots[rootOffset % 12])
357 | updateTranslationTable();
358 |
359 | }else if (data1 == 21 && data2 == 127)
360 | {
361 | rootOffset -- ;
362 | host.showPopupNotification("Root = " + roots[rootOffset % 12])
363 | updateTranslationTable();
364 | }
365 | }
366 |
367 |
368 |
369 |
370 |
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO_pages.js:
--------------------------------------------------------------------------------
1 | function Page()
2 | {
3 |
4 | }
5 |
6 | var parameterPage = new Page();
7 | var macroPage = new Page();
8 | var userPage = new Page();
9 | var notePage = new Page();
10 | var clipPage = new Page();
11 | var pageIndex = 0
12 |
13 | function standardVelocity ()
14 | {
15 | for (var i = 0 ; i < 128; i ++)
16 | {
17 | velocityTable[i] = i
18 | noteIn.setVelocityTranslationTable(velocityTable);
19 | }
20 | }
21 |
22 | function zeroVeloicty ()
23 | {
24 | for (var i = 0; i < 128; i ++)
25 | {
26 | velocityTable[i] = 0
27 | noteIn.setVelocityTranslationTable(velocityTable);
28 | }
29 | }
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/QUNEO_parameterPage.js:
--------------------------------------------------------------------------------
1 |
2 | var parameterPage = new Page();
--------------------------------------------------------------------------------
/QUNEO/QUNEO_Script/bitwig.css:
--------------------------------------------------------------------------------
1 | #page-container {
2 | width: 100%;
3 | margin: 0;
4 | }
5 |
6 | #header {
7 | height: 43px;
8 | padding-left: 20px;
9 | padding-right: 20px;
10 | color: white;
11 | background: #000000;
12 | }
13 |
14 | #footer {
15 | clear: both;
16 | height: 30px;
17 | margin-top: 30px;
18 | padding-top: 3px;
19 | margin-left: 20px;
20 | margin-right: 20px;
21 | border-top: 1px solid #000000;
22 | font: 10px "Lucida Grande", Lucida, Verdana, sans-serif;
23 | color: #505050;
24 | }
25 |
26 | #footer a {
27 | color: #505050;
28 | text-decoration: none;
29 | }
30 |
31 | #illustration {
32 | margin-top: 5px;
33 | margin-left: 0px;
34 | margin-right: 20px;
35 | margin-bottom: 20px;
36 | float: left;
37 | }
38 |
39 | #introduction {
40 | margin-top: 5px;
41 | margin-left: 20px;
42 | margin-right: 20px;
43 | margin-bottom: 20px;
44 | float: left;
45 | }
46 |
47 | #illustration-text {
48 | width: 200px;
49 | margin-top: 30px;
50 | margin-right: 20px;
51 | margin-bottom: 30px;
52 | padding-left: 25px;
53 | float: right;
54 | background-image: url("important.png");
55 | background-repeat: no-repeat;
56 | background-position: left 0 top 3px;
57 | }
58 |
59 | #sticker {
60 | width: 400px;
61 | margin-top: 30px;
62 | margin-right: 20px;
63 | margin-bottom: 30px;
64 | padding-left: 25px;
65 | float: right;
66 | }
67 |
68 | #legend {
69 | clear: both;
70 | padding-top: 30px;
71 | margin: 0 20px 30px 20px;
72 | margin-top: 0px;
73 | border-top: 1px solid #000000;
74 | }
75 |
76 | #legend h2{
77 | font-weight: bold;
78 | font-size: 12px;
79 | text-decoration: underline;
80 | margin: 20px 0 10px 0;
81 | }
82 |
83 | #legend h3{
84 | font-weight: bold;
85 | font-size: 12px;
86 | margin: 10px 0 0 0;
87 | }
88 |
89 | #legend p{
90 | margin: 0 0 10px 0;
91 | }
92 |
93 | #logo {
94 | width: 170px;
95 | height: 20px;
96 | background-image: url("logo.png");
97 | background-repeat: no-repeat;
98 | display: inline-block;
99 | float: left;
100 | margin-top: 12px;
101 | margin-right: 20px;
102 | vertical-align: middle;
103 | }
104 |
105 | #title {
106 | display: inline-block;
107 | float: left;
108 | margin-top: 7px;
109 | margin-left: 20px;
110 | vertical-align: text-bottom;
111 | }
112 |
113 | html, body {
114 | margin: 0;
115 | padding: 0;
116 | background-color: white;
117 | color: black;
118 | font: 12px "Lucida Grande", Lucida, Verdana, sans-serif;
119 | }
120 |
121 | h1 {
122 | margin: 0;
123 | padding: 0;
124 | font: 26px Helvetica, Arial, sans-serif;
125 | font-weight: bold;
126 | }
127 |
128 | a {
129 | color: #ee7700;
130 | }
131 |
132 | ul {
133 | list-style-type: disc;
134 | list-style-position: outside;
135 | margin: 0 0 10px 0;
136 | padding: 0 0 10px 0;
137 | }
138 |
139 | li {
140 | /*position: relative;*/
141 | margin-left: 15px;
142 | margin-bottom: 10px;
143 | padding-left: 0px;
144 | }
145 |
146 | li span {
147 | /*position: absolute;*/
148 | left: -5px;
149 | }
150 |
151 |
152 | table.legend-column {
153 | border-width: 0px;
154 | border: none;
155 | border-collapse: collapse;
156 | text-align: left;
157 | vertical-align: top;
158 | background-color: #ffffff;
159 | border-color: #000000;
160 | margin-bottom: 15px;
161 | }
162 | table.legend-column th {
163 | border-bottom:1px dotted;
164 | height: 15px;
165 | font-weight: bold;
166 | padding: 2px 0px 2px 0px;
167 | vertical-align: top;
168 | }
169 | table.legend-column td {
170 | border-bottom:1px dotted;
171 | padding: 2px 0px 2px 0px;
172 | vertical-align: top;
173 | }
174 |
175 | .first-column-table-row
176 | {
177 | float: left;
178 | }
179 |
180 | .legend-section
181 | {
182 | float: left;
183 | }
184 |
185 | .legend-column
186 | {
187 | width : 240px;
188 | display: inline-block;
189 | margin-right: 20px;
190 | margin-bottom: 20px;
191 | vertical-align: top;
192 | }
193 |
194 | .legend-column p {
195 | margin: 5px 0 10px 0;
196 | }
197 |
198 | .legend-column-header
199 | {
200 | width : 100%;
201 | height: 20px;
202 | font-weight: bold;
203 | text-decoration: underline;
204 | margin-bottom: 5px;
205 | }
206 |
207 | .legend-control-column
208 | {
209 | width : 90px;
210 | font-weight: bold;
211 | }
212 |
213 | .legend-explanation-column
214 | {
215 | width : 150px;
216 | }
217 |
218 | .hidden {
219 | display: none;
220 | }
221 |
--------------------------------------------------------------------------------
/QUNEO/README.md:
--------------------------------------------------------------------------------
1 | QUNEO
2 | =====
3 |
4 | QUNEO bitwig script from KMI
5 |
--------------------------------------------------------------------------------
/QuNexus/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/QuNexus/.DS_Store
--------------------------------------------------------------------------------
/QuNexus/qunexus.control.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
4 |
5 |
6 | */
7 |
8 |
9 |
10 | //Load the bitwig API, obviously.
11 | loadAPI(1);
12 |
13 | //Define/set our controller properties [ company, device, version, uuid ]
14 | host.defineController("Keith McMillen Instruments", "QuNexus", "1.0", "860FA290-9111-11E3-BAA8-0800200C9A66");
15 | host.defineMidiPorts(3, 3);
16 |
17 | //Define/set input/output port names (both i/o are the same)
18 | var portNames = ["QuNexus Port 1", "QuNexus Port 2", "QuNexus Port 3"];
19 | host.addDeviceNameBasedDiscoveryPair(portNames, portNames);
20 |
21 | //Define/set sysex call/response (deprecated, included for good measure)
22 | host.defineSysexDiscovery("F0 7E 7F 06 01 F7", "F0 7E 00 06 02 00 01 5F 19 00 00 00 ?? ?? ?? ?? ?? ?? F7");
23 |
24 | //Declare some global vars for a few of the interface types defined in the API
25 | var application, arranger, mixer, transport;
26 | var HIGHEST_CC = 119;
27 | var LOWEST_CC = 1;
28 | //------------------------------------ Init -----------------------------------//
29 | function init()
30 | {
31 | //-------- Set MIDI callbacks / port
32 | host.getMidiInPort(0).setMidiCallback(onMidiPort1);
33 | host.getMidiInPort(1).setMidiCallback(onMidiPort2);
34 | host.getMidiInPort(2).setMidiCallback(onMidiPort3);
35 | host.getMidiInPort(0).setSysexCallback(onSysexPort1);
36 | host.getMidiInPort(1).setSysexCallback(onSysexPort2);
37 | host.getMidiInPort(2).setSysexCallback(onSysexPort3);
38 |
39 | //-------- Note Inputs (see REF below for argument details
40 | noteIn = host.getMidiInPort(0).createNoteInput("QuNexus Port 1");
41 | noteIn.setShouldConsumeEvents(false);
42 | noteIn2 = host.getMidiInPort(1).createNoteInput("QuNexus Port 2", "80????", "90????");
43 | noteIn3 = host.getMidiInPort(2).createNoteInput("QuNexus Port 3", "80????", "90????");
44 |
45 | userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);
46 |
47 | for(var i=LOWEST_CC; i<=HIGHEST_CC; i++)
48 | {
49 | userControls.getControl(i - LOWEST_CC).setLabel("CC" + i);
50 | }
51 |
52 | //-------- Initialize bitwig interfaces
53 | //application = host.createApplication();
54 | //arranger = host.createArranger(0);
55 | //mixer = host.createMixer("perspective?",0);
56 | transport = host.createTransport();
57 | println("This is the QuNexus Script")
58 | }
59 |
60 | //--------------------------- MIDI Callbacks / Port ---------------------------//
61 | function onMidiPort1(status, data1, data2)
62 | {
63 | //println("Port 1 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
64 |
65 |
66 | if(status == 233)
67 | {
68 | println("pitchBend" + " " + data1 + " " + data2)
69 |
70 | }else if(status == 153){
71 |
72 | println("Notes" + " " + data1 + " " + data2)
73 |
74 | }else if (status == 185){
75 |
76 | println("CC" + " " + data1 + " " + data2)
77 | sendMidi(status, data1, data2)
78 | }
79 |
80 |
81 | if (isChannelController(status))
82 | {
83 | if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC)
84 | {
85 | var index = data1 - LOWEST_CC;
86 | userControls.getControl(index).set(data2, 128);
87 | }
88 | }
89 |
90 |
91 | }
92 |
93 | function onMidiPort2(status, data1, data2)
94 | {
95 | println("Port 2 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
96 | }
97 |
98 | function onMidiPort3(status, data1, data2)
99 | {
100 | println("Port 3 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
101 | }
102 |
103 | function onSysexPort1(data)
104 | {
105 | println("Port 1 [sysex data]: " + data);
106 | }
107 |
108 | function onSysexPort2(data)
109 | {
110 | println("Port 2 [sysex data]: " + data);
111 | }
112 |
113 | function onSysexPort3(data)
114 | {
115 | println("Port 3 [sysex data]: " + data);
116 | }
117 |
118 | function exit()
119 | {
120 | println("exit.");
121 | }
122 |
123 | //--------------------------------- Interfaces --------------------------------//
124 |
125 |
126 |
127 |
128 |
129 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
130 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
131 | //////////////////////////////////////////////////////////////// REF ////////////////////////////////////////////////////////////////
132 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
133 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
134 |
135 | //--------------------- Note Input Filters
136 |
137 | // These filters args are used in the createNoteInput method/function for a midi input port [ see init() ].
138 |
139 | // See http://www.midi.org/techspecs/midimessages.php for midi message types.
140 |
141 | // Studying up on hexadecimal could be helpful also if it's new to you.
142 |
143 |
144 | //---- Note Off
145 | // "80????" - Sees all note offs on channel 1
146 | // "8?????" - Sees all note offs on any channel
147 |
148 | //---- Note On
149 | // "90????" - Sees all note ons on channel 1
150 | // "9?????" - Sees all note offs on any channel
151 | // "90607F" - Sees all note number 60s with a velocity of 127 (this is a very specific filter)
152 |
153 | //---- Polyphonic Aftertouch
154 | // "A0????" - Sees all note ons on channel 1
155 | // "A?????" - Sees all note offs on any channel
156 |
157 | //---- Controller Messages
158 | // "B0????" - Sees all cc messages on channel 1
159 | // "B?????" - Sees all cc messages on all channels
160 |
161 | //---- Program Changes
162 | // "C0????" - Sees all pgm changes on channel 1
163 | // "C?????" - Sees all pgm changes on all channels
164 |
165 | //---- Channel Aftertouch
166 | // "D0????" - Sees all ch. aftertouch on channel 1
167 | // "D?????" - Sees all ch. aftertouch on all channels
168 |
169 | //---- Pitch Wheel
170 | // "E0????" - Sees all ch. aftertouch on channel 1
171 | // "E?????" - Sees all ch. aftertouch on all channels
172 | // "E???00" - Sees all ch. aftertouch on all channels with an MSB of zero
173 | // "E?00??" - Sees all ch. aftertouch on all channels with an LSB of zero
174 |
175 | //---- SysEx start/end, esoteric MIDI mysticism (wouldn't use these filters unless your traversing some kind of musical 3-byte worm hole)
176 | //---- For sysex, just use the callbacks defined above
177 | // "F0????" - Sees all ch. aftertouch on channel 1
178 | // "D?????" - Sees all ch. aftertouch on all channels
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # KMI_Bitwig_Scripts
2 | This is a collection of Bitwig Scripts for KMI gear
3 |
--------------------------------------------------------------------------------
/SoftStep_Bitwig/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/SoftStep_Bitwig/.DS_Store
--------------------------------------------------------------------------------
/SoftStep_Bitwig/Bitwig_Clips.softsteppreset:
--------------------------------------------------------------------------------
1 | { "10_key_displaymode" : "Always", "10_key_name" : "ScUp", "10_key_prefix" : "", "1_key_displaymode" : "Always", "1_key_name" : "CL_5", "1_key_prefix" : "", "2_key_displaymode" : "Always", "2_key_name" : "CL_6", "2_key_prefix" : "", "3_key_displaymode" : "Always", "3_key_name" : "CL_7", "3_key_prefix" : "", "4_key_displaymode" : "Always", "4_key_name" : "CL_8", "4_key_prefix" : "", "5_key_displaymode" : "Always", "5_key_name" : "ScDN", "5_key_prefix" : "", "6_key_displaymode" : "Always", "6_key_name" : "CL_1", "6_key_prefix" : "", "7_key_displaymode" : "Always", "7_key_name" : "CL_2", "7_key_prefix" : "", "8_key_displaymode" : "Always", "8_key_name" : "CL_3", "8_key_prefix" : "", "9_key_displaymode" : "Always", "9_key_name" : "CL_4", "9_key_prefix" : "", "key10_modline1_bankmsb" : 0, "key10_modline1_cc" : 119, "key10_modline1_channel" : 2, "key10_modline1_destination" : "Note Set", "key10_modline1_device" : "SSCOM Port 1", "key10_modline1_displaylinked" : false, "key10_modline1_enable" : true, "key10_modline1_gain" : 1.0, "key10_modline1_ledgreen" : "None", "key10_modline1_ledred" : "None", "key10_modline1_max" : 127, "key10_modline1_min" : 0, "key10_modline1_mmcfunction" : "Stop", "key10_modline1_mmcid" : 1, "key10_modline1_note" : 24, "key10_modline1_offset" : 0, "key10_modline1_oscroute" : "None", "key10_modline1_slew" : 0, "key10_modline1_source" : "Foot On", "key10_modline1_table" : "Linear", "key10_modline1_velocity" : 127, "key10_modline2_bankmsb" : 0, "key10_modline2_cc" : 75, "key10_modline2_channel" : 2, "key10_modline2_destination" : "Note Set", "key10_modline2_device" : "SSCOM Port 1", "key10_modline2_displaylinked" : 0, "key10_modline2_enable" : true, "key10_modline2_gain" : 1.0, "key10_modline2_ledgreen" : "None", "key10_modline2_ledred" : "None", "key10_modline2_max" : 127, "key10_modline2_min" : 0, "key10_modline2_mmcfunction" : "Stop", "key10_modline2_mmcid" : 1, "key10_modline2_note" : 26, "key10_modline2_offset" : 0, "key10_modline2_oscroute" : "None", "key10_modline2_slew" : 0, "key10_modline2_source" : "Long Trig", "key10_modline2_table" : "Linear", "key10_modline2_velocity" : 127, "key10_modline3_bankmsb" : 0, "key10_modline3_cc" : 70, "key10_modline3_channel" : 9, "key10_modline3_destination" : "None", "key10_modline3_device" : "SSCOM Port 1", "key10_modline3_displaylinked" : true, "key10_modline3_enable" : false, "key10_modline3_gain" : 1.0, "key10_modline3_ledgreen" : "True", "key10_modline3_ledred" : "None", "key10_modline3_max" : 127, "key10_modline3_min" : 0, "key10_modline3_mmcfunction" : "Stop", "key10_modline3_mmcid" : 1, "key10_modline3_note" : 60, "key10_modline3_offset" : 0, "key10_modline3_oscroute" : "None", "key10_modline3_slew" : 0, "key10_modline3_source" : "None", "key10_modline3_table" : "Linear", "key10_modline3_velocity" : 127, "key10_modline4_bankmsb" : 0, "key10_modline4_cc" : 0, "key10_modline4_channel" : 1, "key10_modline4_destination" : "None", "key10_modline4_device" : "SSCOM Port 1", "key10_modline4_displaylinked" : 0, "key10_modline4_enable" : 0, "key10_modline4_gain" : 1.0, "key10_modline4_ledgreen" : "None", "key10_modline4_ledred" : "None", "key10_modline4_max" : 127, "key10_modline4_min" : 0, "key10_modline4_mmcfunction" : "Stop", "key10_modline4_mmcid" : 1, "key10_modline4_note" : 60, "key10_modline4_offset" : 0, "key10_modline4_oscroute" : "None", "key10_modline4_slew" : 0, "key10_modline4_source" : "None", "key10_modline4_table" : "Linear", "key10_modline4_velocity" : 127, "key10_modline5_bankmsb" : 0, "key10_modline5_cc" : 0, "key10_modline5_channel" : 1, "key10_modline5_destination" : "None", "key10_modline5_device" : "SSCOM Port 1", "key10_modline5_displaylinked" : 0, "key10_modline5_enable" : 0, "key10_modline5_gain" : 1.0, "key10_modline5_ledgreen" : "None", "key10_modline5_ledred" : "None", "key10_modline5_max" : 127, "key10_modline5_min" : 0, "key10_modline5_mmcfunction" : "Stop", "key10_modline5_mmcid" : 1, "key10_modline5_note" : 60, "key10_modline5_offset" : 0, "key10_modline5_oscroute" : "None", "key10_modline5_slew" : 0, "key10_modline5_source" : "None", "key10_modline5_table" : "Linear", "key10_modline5_velocity" : 127, "key10_modline6_bankmsb" : 0, "key10_modline6_cc" : 0, "key10_modline6_channel" : 1, "key10_modline6_destination" : "None", "key10_modline6_device" : "SSCOM Port 1", "key10_modline6_displaylinked" : 0, "key10_modline6_enable" : 0, "key10_modline6_gain" : 1.0, "key10_modline6_ledgreen" : "None", "key10_modline6_ledred" : "None", "key10_modline6_max" : 127, "key10_modline6_min" : 0, "key10_modline6_mmcfunction" : "Stop", "key10_modline6_mmcid" : 1, "key10_modline6_note" : 60, "key10_modline6_offset" : 0, "key10_modline6_oscroute" : "None", "key10_modline6_slew" : 0, "key10_modline6_source" : "None", "key10_modline6_table" : "Linear", "key10_modline6_velocity" : 127, "key1_modline1_bankmsb" : 0, "key1_modline1_cc" : 115, "key1_modline1_channel" : 2, "key1_modline1_destination" : "Note Set", "key1_modline1_device" : "SSCOM Port 1", "key1_modline1_displaylinked" : 1, "key1_modline1_enable" : true, "key1_modline1_gain" : 1.0, "key1_modline1_ledgreen" : "None", "key1_modline1_ledred" : "None", "key1_modline1_max" : 127, "key1_modline1_min" : 0, "key1_modline1_mmcfunction" : "Stop", "key1_modline1_mmcid" : 1, "key1_modline1_note" : 0, "key1_modline1_offset" : 0, "key1_modline1_oscroute" : "None", "key1_modline1_slew" : 0, "key1_modline1_source" : "Foot On", "key1_modline1_table" : "Linear", "key1_modline1_velocity" : 127, "key1_modline2_bankmsb" : 0, "key1_modline2_cc" : 0, "key1_modline2_channel" : 2, "key1_modline2_destination" : "Note Set", "key1_modline2_device" : "SSCOM Port 1", "key1_modline2_displaylinked" : 0, "key1_modline2_enable" : true, "key1_modline2_gain" : 1.0, "key1_modline2_ledgreen" : "None", "key1_modline2_ledred" : "None", "key1_modline2_max" : 127, "key1_modline2_min" : 0, "key1_modline2_mmcfunction" : "Stop", "key1_modline2_mmcid" : 1, "key1_modline2_note" : 8, "key1_modline2_offset" : 0, "key1_modline2_oscroute" : "None", "key1_modline2_slew" : 0, "key1_modline2_source" : "Long Trig", "key1_modline2_table" : "Linear", "key1_modline2_velocity" : 127, "key1_modline3_bankmsb" : 0, "key1_modline3_cc" : 0, "key1_modline3_channel" : 2, "key1_modline3_destination" : "Note Set", "key1_modline3_device" : "SSCOM Port 1", "key1_modline3_displaylinked" : 0, "key1_modline3_enable" : true, "key1_modline3_gain" : 1.0, "key1_modline3_ledgreen" : "None", "key1_modline3_ledred" : "None", "key1_modline3_max" : 127, "key1_modline3_min" : 127, "key1_modline3_mmcfunction" : "Stop", "key1_modline3_mmcid" : 1, "key1_modline3_note" : 16, "key1_modline3_offset" : 0, "key1_modline3_oscroute" : "None", "key1_modline3_slew" : 0, "key1_modline3_source" : "Dbl Trig", "key1_modline3_table" : "Linear", "key1_modline3_velocity" : 127, "key1_modline4_bankmsb" : 0, "key1_modline4_cc" : 0, "key1_modline4_channel" : 1, "key1_modline4_destination" : "None", "key1_modline4_device" : "SSCOM Port 1", "key1_modline4_displaylinked" : 0, "key1_modline4_enable" : 0, "key1_modline4_gain" : 1.0, "key1_modline4_ledgreen" : "None", "key1_modline4_ledred" : "None", "key1_modline4_max" : 127, "key1_modline4_min" : 0, "key1_modline4_mmcfunction" : "Stop", "key1_modline4_mmcid" : 1, "key1_modline4_note" : 60, "key1_modline4_offset" : 0, "key1_modline4_oscroute" : "None", "key1_modline4_slew" : 0, "key1_modline4_source" : "None", "key1_modline4_table" : "Linear", "key1_modline4_velocity" : 127, "key1_modline5_bankmsb" : 0, "key1_modline5_cc" : 0, "key1_modline5_channel" : 1, "key1_modline5_destination" : "None", "key1_modline5_device" : "SSCOM Port 1", "key1_modline5_displaylinked" : 0, "key1_modline5_enable" : 0, "key1_modline5_gain" : 1.0, "key1_modline5_ledgreen" : "None", "key1_modline5_ledred" : "None", "key1_modline5_max" : 127, "key1_modline5_min" : 0, "key1_modline5_mmcfunction" : "Stop", "key1_modline5_mmcid" : 1, "key1_modline5_note" : 60, "key1_modline5_offset" : 0, "key1_modline5_oscroute" : "None", "key1_modline5_slew" : 0, "key1_modline5_source" : "None", "key1_modline5_table" : "Linear", "key1_modline5_velocity" : 127, "key1_modline6_bankmsb" : 0, "key1_modline6_cc" : 0, "key1_modline6_channel" : 1, "key1_modline6_destination" : "None", "key1_modline6_device" : "SSCOM Port 1", "key1_modline6_displaylinked" : 0, "key1_modline6_enable" : 0, "key1_modline6_gain" : 1.0, "key1_modline6_ledgreen" : "None", "key1_modline6_ledred" : "None", "key1_modline6_max" : 127, "key1_modline6_min" : 0, "key1_modline6_mmcfunction" : "Stop", "key1_modline6_mmcid" : 1, "key1_modline6_note" : 60, "key1_modline6_offset" : 0, "key1_modline6_oscroute" : "None", "key1_modline6_slew" : 0, "key1_modline6_source" : "None", "key1_modline6_table" : "Linear", "key1_modline6_velocity" : 127, "key2_modline1_bankmsb" : 0, "key2_modline1_cc" : 115, "key2_modline1_channel" : 2, "key2_modline1_destination" : "Note Set", "key2_modline1_device" : "SSCOM Port 1", "key2_modline1_displaylinked" : 1, "key2_modline1_enable" : true, "key2_modline1_gain" : 1.0, "key2_modline1_ledgreen" : "None", "key2_modline1_ledred" : "None", "key2_modline1_max" : 127, "key2_modline1_min" : 0, "key2_modline1_mmcfunction" : "Stop", "key2_modline1_mmcid" : 1, "key2_modline1_note" : 2, "key2_modline1_offset" : 0, "key2_modline1_oscroute" : "None", "key2_modline1_slew" : 0, "key2_modline1_source" : "Foot On", "key2_modline1_table" : "Linear", "key2_modline1_velocity" : 127, "key2_modline2_bankmsb" : 0, "key2_modline2_cc" : 0, "key2_modline2_channel" : 2, "key2_modline2_destination" : "Note Set", "key2_modline2_device" : "SSCOM Port 1", "key2_modline2_displaylinked" : 0, "key2_modline2_enable" : true, "key2_modline2_gain" : 1.0, "key2_modline2_ledgreen" : "None", "key2_modline2_ledred" : "None", "key2_modline2_max" : 127, "key2_modline2_min" : 0, "key2_modline2_mmcfunction" : "Stop", "key2_modline2_mmcid" : 1, "key2_modline2_note" : 10, "key2_modline2_offset" : 0, "key2_modline2_oscroute" : "None", "key2_modline2_slew" : 0, "key2_modline2_source" : "Long Trig", "key2_modline2_table" : "Linear", "key2_modline2_velocity" : 127, "key2_modline3_bankmsb" : 0, "key2_modline3_cc" : 0, "key2_modline3_channel" : 2, "key2_modline3_destination" : "Note Set", "key2_modline3_device" : "SSCOM Port 1", "key2_modline3_displaylinked" : 0, "key2_modline3_enable" : true, "key2_modline3_gain" : 1.0, "key2_modline3_ledgreen" : "None", "key2_modline3_ledred" : "None", "key2_modline3_max" : 127, "key2_modline3_min" : 0, "key2_modline3_mmcfunction" : "Stop", "key2_modline3_mmcid" : 1, "key2_modline3_note" : 18, "key2_modline3_offset" : 0, "key2_modline3_oscroute" : "None", "key2_modline3_slew" : 0, "key2_modline3_source" : "Dbl Trig", "key2_modline3_table" : "Linear", "key2_modline3_velocity" : 127, "key2_modline4_bankmsb" : 0, "key2_modline4_cc" : 0, "key2_modline4_channel" : 1, "key2_modline4_destination" : "None", "key2_modline4_device" : "SSCOM Port 1", "key2_modline4_displaylinked" : 0, "key2_modline4_enable" : 0, "key2_modline4_gain" : 1.0, "key2_modline4_ledgreen" : "None", "key2_modline4_ledred" : "None", "key2_modline4_max" : 127, "key2_modline4_min" : 0, "key2_modline4_mmcfunction" : "Stop", "key2_modline4_mmcid" : 1, "key2_modline4_note" : 60, "key2_modline4_offset" : 0, "key2_modline4_oscroute" : "None", "key2_modline4_slew" : 0, "key2_modline4_source" : "None", "key2_modline4_table" : "Linear", "key2_modline4_velocity" : 127, "key2_modline5_bankmsb" : 0, "key2_modline5_cc" : 0, "key2_modline5_channel" : 1, "key2_modline5_destination" : "None", "key2_modline5_device" : "SSCOM Port 1", "key2_modline5_displaylinked" : 0, "key2_modline5_enable" : 0, "key2_modline5_gain" : 1.0, "key2_modline5_ledgreen" : "None", "key2_modline5_ledred" : "None", "key2_modline5_max" : 127, "key2_modline5_min" : 0, "key2_modline5_mmcfunction" : "Stop", "key2_modline5_mmcid" : 1, "key2_modline5_note" : 60, "key2_modline5_offset" : 0, "key2_modline5_oscroute" : "None", "key2_modline5_slew" : 0, "key2_modline5_source" : "None", "key2_modline5_table" : "Linear", "key2_modline5_velocity" : 127, "key2_modline6_bankmsb" : 0, "key2_modline6_cc" : 0, "key2_modline6_channel" : 1, "key2_modline6_destination" : "None", "key2_modline6_device" : "SSCOM Port 1", "key2_modline6_displaylinked" : 0, "key2_modline6_enable" : 0, "key2_modline6_gain" : 1.0, "key2_modline6_ledgreen" : "None", "key2_modline6_ledred" : "None", "key2_modline6_max" : 127, "key2_modline6_min" : 0, "key2_modline6_mmcfunction" : "Stop", "key2_modline6_mmcid" : 1, "key2_modline6_note" : 60, "key2_modline6_offset" : 0, "key2_modline6_oscroute" : "None", "key2_modline6_slew" : 0, "key2_modline6_source" : "None", "key2_modline6_table" : "Linear", "key2_modline6_velocity" : 127, "key3_modline1_bankmsb" : 0, "key3_modline1_cc" : 115, "key3_modline1_channel" : 2, "key3_modline1_destination" : "Note Set", "key3_modline1_device" : "SSCOM Port 1", "key3_modline1_displaylinked" : 1, "key3_modline1_enable" : true, "key3_modline1_gain" : 1.0, "key3_modline1_ledgreen" : "None", "key3_modline1_ledred" : "None", "key3_modline1_max" : 127, "key3_modline1_min" : 0, "key3_modline1_mmcfunction" : "Stop", "key3_modline1_mmcid" : 1, "key3_modline1_note" : 4, "key3_modline1_offset" : 0, "key3_modline1_oscroute" : "None", "key3_modline1_slew" : 0, "key3_modline1_source" : "Foot On", "key3_modline1_table" : "Linear", "key3_modline1_velocity" : 127, "key3_modline2_bankmsb" : 0, "key3_modline2_cc" : 0, "key3_modline2_channel" : 2, "key3_modline2_destination" : "Note Set", "key3_modline2_device" : "SSCOM Port 1", "key3_modline2_displaylinked" : 0, "key3_modline2_enable" : true, "key3_modline2_gain" : 1.0, "key3_modline2_ledgreen" : "None", "key3_modline2_ledred" : "None", "key3_modline2_max" : 127, "key3_modline2_min" : 0, "key3_modline2_mmcfunction" : "Stop", "key3_modline2_mmcid" : 1, "key3_modline2_note" : 12, "key3_modline2_offset" : 0, "key3_modline2_oscroute" : "None", "key3_modline2_slew" : 0, "key3_modline2_source" : "Long Trig", "key3_modline2_table" : "Linear", "key3_modline2_velocity" : 127, "key3_modline3_bankmsb" : 0, "key3_modline3_cc" : 0, "key3_modline3_channel" : 2, "key3_modline3_destination" : "Note Set", "key3_modline3_device" : "SSCOM Port 1", "key3_modline3_displaylinked" : 0, "key3_modline3_enable" : true, "key3_modline3_gain" : 1.0, "key3_modline3_ledgreen" : "None", "key3_modline3_ledred" : "None", "key3_modline3_max" : 127, "key3_modline3_min" : 0, "key3_modline3_mmcfunction" : "Stop", "key3_modline3_mmcid" : 1, "key3_modline3_note" : 20, "key3_modline3_offset" : 0, "key3_modline3_oscroute" : "None", "key3_modline3_slew" : 0, "key3_modline3_source" : "Dbl Trig", "key3_modline3_table" : "Linear", "key3_modline3_velocity" : 127, "key3_modline4_bankmsb" : 0, "key3_modline4_cc" : 0, "key3_modline4_channel" : 1, "key3_modline4_destination" : "None", "key3_modline4_device" : "SSCOM Port 1", "key3_modline4_displaylinked" : 0, "key3_modline4_enable" : 0, "key3_modline4_gain" : 1.0, "key3_modline4_ledgreen" : "None", "key3_modline4_ledred" : "None", "key3_modline4_max" : 127, "key3_modline4_min" : 0, "key3_modline4_mmcfunction" : "Stop", "key3_modline4_mmcid" : 1, "key3_modline4_note" : 60, "key3_modline4_offset" : 0, "key3_modline4_oscroute" : "None", "key3_modline4_slew" : 0, "key3_modline4_source" : "None", "key3_modline4_table" : "Linear", "key3_modline4_velocity" : 127, "key3_modline5_bankmsb" : 0, "key3_modline5_cc" : 0, "key3_modline5_channel" : 1, "key3_modline5_destination" : "None", "key3_modline5_device" : "SSCOM Port 1", "key3_modline5_displaylinked" : 0, "key3_modline5_enable" : 0, "key3_modline5_gain" : 1.0, "key3_modline5_ledgreen" : "None", "key3_modline5_ledred" : "None", "key3_modline5_max" : 127, "key3_modline5_min" : 0, "key3_modline5_mmcfunction" : "Stop", "key3_modline5_mmcid" : 1, "key3_modline5_note" : 60, "key3_modline5_offset" : 0, "key3_modline5_oscroute" : "None", "key3_modline5_slew" : 0, "key3_modline5_source" : "None", "key3_modline5_table" : "Linear", "key3_modline5_velocity" : 127, "key3_modline6_bankmsb" : 0, "key3_modline6_cc" : 0, "key3_modline6_channel" : 1, "key3_modline6_destination" : "None", "key3_modline6_device" : "SSCOM Port 1", "key3_modline6_displaylinked" : 0, "key3_modline6_enable" : 0, "key3_modline6_gain" : 1.0, "key3_modline6_ledgreen" : "None", "key3_modline6_ledred" : "None", "key3_modline6_max" : 127, "key3_modline6_min" : 0, "key3_modline6_mmcfunction" : "Stop", "key3_modline6_mmcid" : 1, "key3_modline6_note" : 60, "key3_modline6_offset" : 0, "key3_modline6_oscroute" : "None", "key3_modline6_slew" : 0, "key3_modline6_source" : "None", "key3_modline6_table" : "Linear", "key3_modline6_velocity" : 127, "key4_modline1_bankmsb" : 0, "key4_modline1_cc" : 115, "key4_modline1_channel" : 2, "key4_modline1_destination" : "Note Set", "key4_modline1_device" : "SSCOM Port 1", "key4_modline1_displaylinked" : 1, "key4_modline1_enable" : true, "key4_modline1_gain" : 1.0, "key4_modline1_ledgreen" : "None", "key4_modline1_ledred" : "None", "key4_modline1_max" : 127, "key4_modline1_min" : 0, "key4_modline1_mmcfunction" : "Stop", "key4_modline1_mmcid" : 1, "key4_modline1_note" : 6, "key4_modline1_offset" : 0, "key4_modline1_oscroute" : "None", "key4_modline1_slew" : 0, "key4_modline1_source" : "Foot On", "key4_modline1_table" : "Linear", "key4_modline1_velocity" : 127, "key4_modline2_bankmsb" : 0, "key4_modline2_cc" : 0, "key4_modline2_channel" : 2, "key4_modline2_destination" : "Note Set", "key4_modline2_device" : "SSCOM Port 1", "key4_modline2_displaylinked" : 0, "key4_modline2_enable" : true, "key4_modline2_gain" : 1.0, "key4_modline2_ledgreen" : "None", "key4_modline2_ledred" : "None", "key4_modline2_max" : 127, "key4_modline2_min" : 0, "key4_modline2_mmcfunction" : "Stop", "key4_modline2_mmcid" : 1, "key4_modline2_note" : 14, "key4_modline2_offset" : 0, "key4_modline2_oscroute" : "None", "key4_modline2_slew" : 0, "key4_modline2_source" : "Long Trig", "key4_modline2_table" : "Linear", "key4_modline2_velocity" : 127, "key4_modline3_bankmsb" : 0, "key4_modline3_cc" : 0, "key4_modline3_channel" : 2, "key4_modline3_destination" : "Note Set", "key4_modline3_device" : "SSCOM Port 1", "key4_modline3_displaylinked" : 0, "key4_modline3_enable" : true, "key4_modline3_gain" : 1.0, "key4_modline3_ledgreen" : "None", "key4_modline3_ledred" : "None", "key4_modline3_max" : 127, "key4_modline3_min" : 0, "key4_modline3_mmcfunction" : "Stop", "key4_modline3_mmcid" : 1, "key4_modline3_note" : 22, "key4_modline3_offset" : 0, "key4_modline3_oscroute" : "None", "key4_modline3_slew" : 0, "key4_modline3_source" : "Dbl Trig", "key4_modline3_table" : "Linear", "key4_modline3_velocity" : 127, "key4_modline4_bankmsb" : 0, "key4_modline4_cc" : 0, "key4_modline4_channel" : 1, "key4_modline4_destination" : "None", "key4_modline4_device" : "SSCOM Port 1", "key4_modline4_displaylinked" : 0, "key4_modline4_enable" : 0, "key4_modline4_gain" : 1.0, "key4_modline4_ledgreen" : "None", "key4_modline4_ledred" : "None", "key4_modline4_max" : 127, "key4_modline4_min" : 0, "key4_modline4_mmcfunction" : "Stop", "key4_modline4_mmcid" : 1, "key4_modline4_note" : 60, "key4_modline4_offset" : 0, "key4_modline4_oscroute" : "None", "key4_modline4_slew" : 0, "key4_modline4_source" : "None", "key4_modline4_table" : "Linear", "key4_modline4_velocity" : 127, "key4_modline5_bankmsb" : 0, "key4_modline5_cc" : 0, "key4_modline5_channel" : 1, "key4_modline5_destination" : "None", "key4_modline5_device" : "SSCOM Port 1", "key4_modline5_displaylinked" : 0, "key4_modline5_enable" : 0, "key4_modline5_gain" : 1.0, "key4_modline5_ledgreen" : "None", "key4_modline5_ledred" : "None", "key4_modline5_max" : 127, "key4_modline5_min" : 0, "key4_modline5_mmcfunction" : "Stop", "key4_modline5_mmcid" : 1, "key4_modline5_note" : 60, "key4_modline5_offset" : 0, "key4_modline5_oscroute" : "None", "key4_modline5_slew" : 0, "key4_modline5_source" : "None", "key4_modline5_table" : "Linear", "key4_modline5_velocity" : 127, "key4_modline6_bankmsb" : 0, "key4_modline6_cc" : 0, "key4_modline6_channel" : 1, "key4_modline6_destination" : "None", "key4_modline6_device" : "SSCOM Port 1", "key4_modline6_displaylinked" : 0, "key4_modline6_enable" : 0, "key4_modline6_gain" : 1.0, "key4_modline6_ledgreen" : "None", "key4_modline6_ledred" : "None", "key4_modline6_max" : 127, "key4_modline6_min" : 0, "key4_modline6_mmcfunction" : "Stop", "key4_modline6_mmcid" : 1, "key4_modline6_note" : 60, "key4_modline6_offset" : 0, "key4_modline6_oscroute" : "None", "key4_modline6_slew" : 0, "key4_modline6_source" : "None", "key4_modline6_table" : "Linear", "key4_modline6_velocity" : 127, "key5_modline1_bankmsb" : 0, "key5_modline1_cc" : 114, "key5_modline1_channel" : 2, "key5_modline1_destination" : "Note Set", "key5_modline1_device" : "SSCOM Port 1", "key5_modline1_displaylinked" : 1, "key5_modline1_enable" : true, "key5_modline1_gain" : 1.0, "key5_modline1_ledgreen" : "None", "key5_modline1_ledred" : "None", "key5_modline1_max" : 127, "key5_modline1_min" : 0, "key5_modline1_mmcfunction" : "Stop", "key5_modline1_mmcid" : 1, "key5_modline1_note" : 25, "key5_modline1_offset" : 0, "key5_modline1_oscroute" : "None", "key5_modline1_slew" : 0, "key5_modline1_source" : "Foot On", "key5_modline1_table" : "Linear", "key5_modline1_velocity" : 127, "key5_modline2_bankmsb" : 0, "key5_modline2_cc" : 66, "key5_modline2_channel" : 9, "key5_modline2_destination" : "None", "key5_modline2_device" : "SSCOM Port 1", "key5_modline2_displaylinked" : 0, "key5_modline2_enable" : false, "key5_modline2_gain" : 1.0, "key5_modline2_ledgreen" : "None", "key5_modline2_ledred" : "None", "key5_modline2_max" : 127, "key5_modline2_min" : 0, "key5_modline2_mmcfunction" : "Stop", "key5_modline2_mmcid" : 1, "key5_modline2_note" : 60, "key5_modline2_offset" : 0, "key5_modline2_oscroute" : "None", "key5_modline2_slew" : 0, "key5_modline2_source" : "None", "key5_modline2_table" : "Linear", "key5_modline2_velocity" : 127, "key5_modline3_bankmsb" : 0, "key5_modline3_cc" : 0, "key5_modline3_channel" : 1, "key5_modline3_destination" : "None", "key5_modline3_device" : "SSCOM Port 1", "key5_modline3_displaylinked" : false, "key5_modline3_enable" : 0, "key5_modline3_gain" : 1.0, "key5_modline3_ledgreen" : "None", "key5_modline3_ledred" : "None", "key5_modline3_max" : 127, "key5_modline3_min" : 0, "key5_modline3_mmcfunction" : "Stop", "key5_modline3_mmcid" : 1, "key5_modline3_note" : 60, "key5_modline3_offset" : 0, "key5_modline3_oscroute" : "None", "key5_modline3_slew" : 0, "key5_modline3_source" : "None", "key5_modline3_table" : "Linear", "key5_modline3_velocity" : 127, "key5_modline4_bankmsb" : 0, "key5_modline4_cc" : 0, "key5_modline4_channel" : 1, "key5_modline4_destination" : "None", "key5_modline4_device" : "SSCOM Port 1", "key5_modline4_displaylinked" : 0, "key5_modline4_enable" : 0, "key5_modline4_gain" : 1.0, "key5_modline4_ledgreen" : "None", "key5_modline4_ledred" : "None", "key5_modline4_max" : 127, "key5_modline4_min" : 0, "key5_modline4_mmcfunction" : "Stop", "key5_modline4_mmcid" : 1, "key5_modline4_note" : 60, "key5_modline4_offset" : 0, "key5_modline4_oscroute" : "None", "key5_modline4_slew" : 0, "key5_modline4_source" : "None", "key5_modline4_table" : "Linear", "key5_modline4_velocity" : 127, "key5_modline5_bankmsb" : 0, "key5_modline5_cc" : 0, "key5_modline5_channel" : 1, "key5_modline5_destination" : "None", "key5_modline5_device" : "SSCOM Port 1", "key5_modline5_displaylinked" : 0, "key5_modline5_enable" : 0, "key5_modline5_gain" : 1.0, "key5_modline5_ledgreen" : "None", "key5_modline5_ledred" : "None", "key5_modline5_max" : 127, "key5_modline5_min" : 0, "key5_modline5_mmcfunction" : "Stop", "key5_modline5_mmcid" : 1, "key5_modline5_note" : 60, "key5_modline5_offset" : 0, "key5_modline5_oscroute" : "None", "key5_modline5_slew" : 0, "key5_modline5_source" : "None", "key5_modline5_table" : "Linear", "key5_modline5_velocity" : 127, "key5_modline6_bankmsb" : 0, "key5_modline6_cc" : 0, "key5_modline6_channel" : 1, "key5_modline6_destination" : "None", "key5_modline6_device" : "SSCOM Port 1", "key5_modline6_displaylinked" : false, "key5_modline6_enable" : 0, "key5_modline6_gain" : 1.0, "key5_modline6_ledgreen" : "None", "key5_modline6_ledred" : "None", "key5_modline6_max" : 127, "key5_modline6_min" : 0, "key5_modline6_mmcfunction" : "Stop", "key5_modline6_mmcid" : 1, "key5_modline6_note" : 60, "key5_modline6_offset" : 0, "key5_modline6_oscroute" : "None", "key5_modline6_slew" : 0, "key5_modline6_source" : "None", "key5_modline6_table" : "Linear", "key5_modline6_velocity" : 127, "key6_modline1_bankmsb" : 0, "key6_modline1_cc" : 115, "key6_modline1_channel" : 2, "key6_modline1_destination" : "Note Set", "key6_modline1_device" : "SSCOM Port 1", "key6_modline1_displaylinked" : 1, "key6_modline1_enable" : true, "key6_modline1_gain" : 1.0, "key6_modline1_ledgreen" : "None", "key6_modline1_ledred" : "None", "key6_modline1_max" : 127, "key6_modline1_min" : 0, "key6_modline1_mmcfunction" : "Stop", "key6_modline1_mmcid" : 1, "key6_modline1_note" : 1, "key6_modline1_offset" : 0, "key6_modline1_oscroute" : "None", "key6_modline1_slew" : 0, "key6_modline1_source" : "Foot On", "key6_modline1_table" : "Linear", "key6_modline1_velocity" : 127, "key6_modline2_bankmsb" : 0, "key6_modline2_cc" : 0, "key6_modline2_channel" : 2, "key6_modline2_destination" : "Note Set", "key6_modline2_device" : "SSCOM Port 1", "key6_modline2_displaylinked" : 0, "key6_modline2_enable" : true, "key6_modline2_gain" : 1.0, "key6_modline2_ledgreen" : "None", "key6_modline2_ledred" : "None", "key6_modline2_max" : 127, "key6_modline2_min" : 0, "key6_modline2_mmcfunction" : "Stop", "key6_modline2_mmcid" : 1, "key6_modline2_note" : 9, "key6_modline2_offset" : 0, "key6_modline2_oscroute" : "None", "key6_modline2_slew" : 0, "key6_modline2_source" : "Long Trig", "key6_modline2_table" : "Linear", "key6_modline2_velocity" : 127, "key6_modline3_bankmsb" : 0, "key6_modline3_cc" : 0, "key6_modline3_channel" : 2, "key6_modline3_destination" : "Note Set", "key6_modline3_device" : "SSCOM Port 1", "key6_modline3_displaylinked" : 0, "key6_modline3_enable" : true, "key6_modline3_gain" : 1.0, "key6_modline3_ledgreen" : "None", "key6_modline3_ledred" : "None", "key6_modline3_max" : 127, "key6_modline3_min" : 0, "key6_modline3_mmcfunction" : "Stop", "key6_modline3_mmcid" : 1, "key6_modline3_note" : 17, "key6_modline3_offset" : 0, "key6_modline3_oscroute" : "None", "key6_modline3_slew" : 0, "key6_modline3_source" : "Dbl Trig", "key6_modline3_table" : "Linear", "key6_modline3_velocity" : 127, "key6_modline4_bankmsb" : 0, "key6_modline4_cc" : 0, "key6_modline4_channel" : 1, "key6_modline4_destination" : "None", "key6_modline4_device" : "SSCOM Port 1", "key6_modline4_displaylinked" : 0, "key6_modline4_enable" : 0, "key6_modline4_gain" : 1.0, "key6_modline4_ledgreen" : "None", "key6_modline4_ledred" : "None", "key6_modline4_max" : 127, "key6_modline4_min" : 0, "key6_modline4_mmcfunction" : "Stop", "key6_modline4_mmcid" : 1, "key6_modline4_note" : 60, "key6_modline4_offset" : 0, "key6_modline4_oscroute" : "None", "key6_modline4_slew" : 0, "key6_modline4_source" : "None", "key6_modline4_table" : "Linear", "key6_modline4_velocity" : 127, "key6_modline5_bankmsb" : 0, "key6_modline5_cc" : 0, "key6_modline5_channel" : 1, "key6_modline5_destination" : "None", "key6_modline5_device" : "SSCOM Port 1", "key6_modline5_displaylinked" : 0, "key6_modline5_enable" : 0, "key6_modline5_gain" : 1.0, "key6_modline5_ledgreen" : "None", "key6_modline5_ledred" : "None", "key6_modline5_max" : 127, "key6_modline5_min" : 0, "key6_modline5_mmcfunction" : "Stop", "key6_modline5_mmcid" : 1, "key6_modline5_note" : 60, "key6_modline5_offset" : 0, "key6_modline5_oscroute" : "None", "key6_modline5_slew" : 0, "key6_modline5_source" : "None", "key6_modline5_table" : "Linear", "key6_modline5_velocity" : 127, "key6_modline6_bankmsb" : 0, "key6_modline6_cc" : 0, "key6_modline6_channel" : 1, "key6_modline6_destination" : "None", "key6_modline6_device" : "SSCOM Port 1", "key6_modline6_displaylinked" : 0, "key6_modline6_enable" : 0, "key6_modline6_gain" : 1.0, "key6_modline6_ledgreen" : "None", "key6_modline6_ledred" : "None", "key6_modline6_max" : 127, "key6_modline6_min" : 0, "key6_modline6_mmcfunction" : "Stop", "key6_modline6_mmcid" : 1, "key6_modline6_note" : 60, "key6_modline6_offset" : 0, "key6_modline6_oscroute" : "None", "key6_modline6_slew" : 0, "key6_modline6_source" : "None", "key6_modline6_table" : "Linear", "key6_modline6_velocity" : 127, "key7_modline1_bankmsb" : 0, "key7_modline1_cc" : 115, "key7_modline1_channel" : 2, "key7_modline1_destination" : "Note Set", "key7_modline1_device" : "SSCOM Port 1", "key7_modline1_displaylinked" : 1, "key7_modline1_enable" : true, "key7_modline1_gain" : 1.0, "key7_modline1_ledgreen" : "None", "key7_modline1_ledred" : "None", "key7_modline1_max" : 127, "key7_modline1_min" : 0, "key7_modline1_mmcfunction" : "Stop", "key7_modline1_mmcid" : 1, "key7_modline1_note" : 3, "key7_modline1_offset" : 0, "key7_modline1_oscroute" : "None", "key7_modline1_slew" : 0, "key7_modline1_source" : "Foot On", "key7_modline1_table" : "Linear", "key7_modline1_velocity" : 127, "key7_modline2_bankmsb" : 0, "key7_modline2_cc" : 0, "key7_modline2_channel" : 2, "key7_modline2_destination" : "Note Set", "key7_modline2_device" : "SSCOM Port 1", "key7_modline2_displaylinked" : 0, "key7_modline2_enable" : true, "key7_modline2_gain" : 1.0, "key7_modline2_ledgreen" : "None", "key7_modline2_ledred" : "None", "key7_modline2_max" : 127, "key7_modline2_min" : 0, "key7_modline2_mmcfunction" : "Stop", "key7_modline2_mmcid" : 1, "key7_modline2_note" : 11, "key7_modline2_offset" : 0, "key7_modline2_oscroute" : "None", "key7_modline2_slew" : 0, "key7_modline2_source" : "Long Trig", "key7_modline2_table" : "Linear", "key7_modline2_velocity" : 127, "key7_modline3_bankmsb" : 0, "key7_modline3_cc" : 0, "key7_modline3_channel" : 2, "key7_modline3_destination" : "Note Set", "key7_modline3_device" : "SSCOM Port 1", "key7_modline3_displaylinked" : 0, "key7_modline3_enable" : true, "key7_modline3_gain" : 1.0, "key7_modline3_ledgreen" : "None", "key7_modline3_ledred" : "None", "key7_modline3_max" : 127, "key7_modline3_min" : 0, "key7_modline3_mmcfunction" : "Stop", "key7_modline3_mmcid" : 1, "key7_modline3_note" : 19, "key7_modline3_offset" : 0, "key7_modline3_oscroute" : "None", "key7_modline3_slew" : 0, "key7_modline3_source" : "Dbl Trig", "key7_modline3_table" : "Linear", "key7_modline3_velocity" : 127, "key7_modline4_bankmsb" : 0, "key7_modline4_cc" : 0, "key7_modline4_channel" : 1, "key7_modline4_destination" : "None", "key7_modline4_device" : "SSCOM Port 1", "key7_modline4_displaylinked" : 0, "key7_modline4_enable" : 0, "key7_modline4_gain" : 1.0, "key7_modline4_ledgreen" : "None", "key7_modline4_ledred" : "None", "key7_modline4_max" : 127, "key7_modline4_min" : 0, "key7_modline4_mmcfunction" : "Stop", "key7_modline4_mmcid" : 1, "key7_modline4_note" : 60, "key7_modline4_offset" : 0, "key7_modline4_oscroute" : "None", "key7_modline4_slew" : 0, "key7_modline4_source" : "None", "key7_modline4_table" : "Linear", "key7_modline4_velocity" : 127, "key7_modline5_bankmsb" : 0, "key7_modline5_cc" : 0, "key7_modline5_channel" : 1, "key7_modline5_destination" : "None", "key7_modline5_device" : "SSCOM Port 1", "key7_modline5_displaylinked" : 0, "key7_modline5_enable" : 0, "key7_modline5_gain" : 1.0, "key7_modline5_ledgreen" : "None", "key7_modline5_ledred" : "None", "key7_modline5_max" : 127, "key7_modline5_min" : 0, "key7_modline5_mmcfunction" : "Stop", "key7_modline5_mmcid" : 1, "key7_modline5_note" : 60, "key7_modline5_offset" : 0, "key7_modline5_oscroute" : "None", "key7_modline5_slew" : 0, "key7_modline5_source" : "None", "key7_modline5_table" : "Linear", "key7_modline5_velocity" : 127, "key7_modline6_bankmsb" : 0, "key7_modline6_cc" : 0, "key7_modline6_channel" : 1, "key7_modline6_destination" : "None", "key7_modline6_device" : "SSCOM Port 1", "key7_modline6_displaylinked" : 0, "key7_modline6_enable" : 0, "key7_modline6_gain" : 1.0, "key7_modline6_ledgreen" : "None", "key7_modline6_ledred" : "None", "key7_modline6_max" : 127, "key7_modline6_min" : 0, "key7_modline6_mmcfunction" : "Stop", "key7_modline6_mmcid" : 1, "key7_modline6_note" : 60, "key7_modline6_offset" : 0, "key7_modline6_oscroute" : "None", "key7_modline6_slew" : 0, "key7_modline6_source" : "None", "key7_modline6_table" : "Linear", "key7_modline6_velocity" : 127, "key8_modline1_bankmsb" : 0, "key8_modline1_cc" : 115, "key8_modline1_channel" : 2, "key8_modline1_destination" : "Note Set", "key8_modline1_device" : "SSCOM Port 1", "key8_modline1_displaylinked" : 1, "key8_modline1_enable" : true, "key8_modline1_gain" : 1.0, "key8_modline1_ledgreen" : "None", "key8_modline1_ledred" : "None", "key8_modline1_max" : 127, "key8_modline1_min" : 0, "key8_modline1_mmcfunction" : "Stop", "key8_modline1_mmcid" : 1, "key8_modline1_note" : 5, "key8_modline1_offset" : 0, "key8_modline1_oscroute" : "None", "key8_modline1_slew" : 0, "key8_modline1_source" : "Foot On", "key8_modline1_table" : "Linear", "key8_modline1_velocity" : 127, "key8_modline2_bankmsb" : 0, "key8_modline2_cc" : 0, "key8_modline2_channel" : 2, "key8_modline2_destination" : "Note Set", "key8_modline2_device" : "SSCOM Port 1", "key8_modline2_displaylinked" : 0, "key8_modline2_enable" : true, "key8_modline2_gain" : 1.0, "key8_modline2_ledgreen" : "None", "key8_modline2_ledred" : "None", "key8_modline2_max" : 127, "key8_modline2_min" : 0, "key8_modline2_mmcfunction" : "Stop", "key8_modline2_mmcid" : 1, "key8_modline2_note" : 13, "key8_modline2_offset" : 0, "key8_modline2_oscroute" : "None", "key8_modline2_slew" : 0, "key8_modline2_source" : "Long Trig", "key8_modline2_table" : "Linear", "key8_modline2_velocity" : 127, "key8_modline3_bankmsb" : 0, "key8_modline3_cc" : 0, "key8_modline3_channel" : 2, "key8_modline3_destination" : "Note Set", "key8_modline3_device" : "SSCOM Port 1", "key8_modline3_displaylinked" : 0, "key8_modline3_enable" : true, "key8_modline3_gain" : 1.0, "key8_modline3_ledgreen" : "None", "key8_modline3_ledred" : "None", "key8_modline3_max" : 127, "key8_modline3_min" : 0, "key8_modline3_mmcfunction" : "Stop", "key8_modline3_mmcid" : 1, "key8_modline3_note" : 21, "key8_modline3_offset" : 0, "key8_modline3_oscroute" : "None", "key8_modline3_slew" : 0, "key8_modline3_source" : "Dbl Trig", "key8_modline3_table" : "Linear", "key8_modline3_velocity" : 127, "key8_modline4_bankmsb" : 0, "key8_modline4_cc" : 0, "key8_modline4_channel" : 1, "key8_modline4_destination" : "None", "key8_modline4_device" : "SSCOM Port 1", "key8_modline4_displaylinked" : 0, "key8_modline4_enable" : 0, "key8_modline4_gain" : 1.0, "key8_modline4_ledgreen" : "None", "key8_modline4_ledred" : "None", "key8_modline4_max" : 127, "key8_modline4_min" : 0, "key8_modline4_mmcfunction" : "Stop", "key8_modline4_mmcid" : 1, "key8_modline4_note" : 60, "key8_modline4_offset" : 0, "key8_modline4_oscroute" : "None", "key8_modline4_slew" : 0, "key8_modline4_source" : "None", "key8_modline4_table" : "Linear", "key8_modline4_velocity" : 127, "key8_modline5_bankmsb" : 0, "key8_modline5_cc" : 0, "key8_modline5_channel" : 1, "key8_modline5_destination" : "None", "key8_modline5_device" : "SSCOM Port 1", "key8_modline5_displaylinked" : 0, "key8_modline5_enable" : 0, "key8_modline5_gain" : 1.0, "key8_modline5_ledgreen" : "None", "key8_modline5_ledred" : "None", "key8_modline5_max" : 127, "key8_modline5_min" : 0, "key8_modline5_mmcfunction" : "Stop", "key8_modline5_mmcid" : 1, "key8_modline5_note" : 60, "key8_modline5_offset" : 0, "key8_modline5_oscroute" : "None", "key8_modline5_slew" : 0, "key8_modline5_source" : "None", "key8_modline5_table" : "Linear", "key8_modline5_velocity" : 127, "key8_modline6_bankmsb" : 0, "key8_modline6_cc" : 0, "key8_modline6_channel" : 1, "key8_modline6_destination" : "None", "key8_modline6_device" : "SSCOM Port 1", "key8_modline6_displaylinked" : 0, "key8_modline6_enable" : 0, "key8_modline6_gain" : 1.0, "key8_modline6_ledgreen" : "None", "key8_modline6_ledred" : "None", "key8_modline6_max" : 127, "key8_modline6_min" : 0, "key8_modline6_mmcfunction" : "Stop", "key8_modline6_mmcid" : 1, "key8_modline6_note" : 60, "key8_modline6_offset" : 0, "key8_modline6_oscroute" : "None", "key8_modline6_slew" : 0, "key8_modline6_source" : "None", "key8_modline6_table" : "Linear", "key8_modline6_velocity" : 127, "key9_modline1_bankmsb" : 0, "key9_modline1_cc" : 115, "key9_modline1_channel" : 2, "key9_modline1_destination" : "Note Set", "key9_modline1_device" : "SSCOM Port 1", "key9_modline1_displaylinked" : 1, "key9_modline1_enable" : true, "key9_modline1_gain" : 1.0, "key9_modline1_ledgreen" : "None", "key9_modline1_ledred" : "None", "key9_modline1_max" : 127, "key9_modline1_min" : 0, "key9_modline1_mmcfunction" : "Stop", "key9_modline1_mmcid" : 1, "key9_modline1_note" : 7, "key9_modline1_offset" : 0, "key9_modline1_oscroute" : "None", "key9_modline1_slew" : 0, "key9_modline1_source" : "Foot On", "key9_modline1_table" : "Linear", "key9_modline1_velocity" : 127, "key9_modline2_bankmsb" : 0, "key9_modline2_cc" : 0, "key9_modline2_channel" : 2, "key9_modline2_destination" : "Note Set", "key9_modline2_device" : "SSCOM Port 1", "key9_modline2_displaylinked" : 0, "key9_modline2_enable" : true, "key9_modline2_gain" : 1.0, "key9_modline2_ledgreen" : "None", "key9_modline2_ledred" : "None", "key9_modline2_max" : 127, "key9_modline2_min" : 0, "key9_modline2_mmcfunction" : "Stop", "key9_modline2_mmcid" : 1, "key9_modline2_note" : 15, "key9_modline2_offset" : 0, "key9_modline2_oscroute" : "None", "key9_modline2_slew" : 0, "key9_modline2_source" : "Long Trig", "key9_modline2_table" : "Linear", "key9_modline2_velocity" : 127, "key9_modline3_bankmsb" : 0, "key9_modline3_cc" : 0, "key9_modline3_channel" : 2, "key9_modline3_destination" : "Note Set", "key9_modline3_device" : "SSCOM Port 1", "key9_modline3_displaylinked" : 0, "key9_modline3_enable" : true, "key9_modline3_gain" : 1.0, "key9_modline3_ledgreen" : "None", "key9_modline3_ledred" : "None", "key9_modline3_max" : 127, "key9_modline3_min" : 0, "key9_modline3_mmcfunction" : "Stop", "key9_modline3_mmcid" : 1, "key9_modline3_note" : 23, "key9_modline3_offset" : 0, "key9_modline3_oscroute" : "None", "key9_modline3_slew" : 0, "key9_modline3_source" : "Dbl Trig", "key9_modline3_table" : "Linear", "key9_modline3_velocity" : 127, "key9_modline4_bankmsb" : 0, "key9_modline4_cc" : 0, "key9_modline4_channel" : 1, "key9_modline4_destination" : "None", "key9_modline4_device" : "SSCOM Port 1", "key9_modline4_displaylinked" : 0, "key9_modline4_enable" : 0, "key9_modline4_gain" : 1.0, "key9_modline4_ledgreen" : "None", "key9_modline4_ledred" : "None", "key9_modline4_max" : 127, "key9_modline4_min" : 0, "key9_modline4_mmcfunction" : "Stop", "key9_modline4_mmcid" : 1, "key9_modline4_note" : 60, "key9_modline4_offset" : 0, "key9_modline4_oscroute" : "None", "key9_modline4_slew" : 0, "key9_modline4_source" : "None", "key9_modline4_table" : "Linear", "key9_modline4_velocity" : 127, "key9_modline5_bankmsb" : 0, "key9_modline5_cc" : 0, "key9_modline5_channel" : 1, "key9_modline5_destination" : "None", "key9_modline5_device" : "SSCOM Port 1", "key9_modline5_displaylinked" : 0, "key9_modline5_enable" : 0, "key9_modline5_gain" : 1.0, "key9_modline5_ledgreen" : "None", "key9_modline5_ledred" : "None", "key9_modline5_max" : 127, "key9_modline5_min" : 0, "key9_modline5_mmcfunction" : "Stop", "key9_modline5_mmcid" : 1, "key9_modline5_note" : 60, "key9_modline5_offset" : 0, "key9_modline5_oscroute" : "None", "key9_modline5_slew" : 0, "key9_modline5_source" : "None", "key9_modline5_table" : "Linear", "key9_modline5_velocity" : 127, "key9_modline6_bankmsb" : 0, "key9_modline6_cc" : 0, "key9_modline6_channel" : 1, "key9_modline6_destination" : "None", "key9_modline6_device" : "SSCOM Port 1", "key9_modline6_displaylinked" : 0, "key9_modline6_enable" : 0, "key9_modline6_gain" : 1.0, "key9_modline6_ledgreen" : "None", "key9_modline6_ledred" : "None", "key9_modline6_max" : 127, "key9_modline6_min" : 0, "key9_modline6_mmcfunction" : "Stop", "key9_modline6_mmcid" : 1, "key9_modline6_note" : 60, "key9_modline6_offset" : 0, "key9_modline6_oscroute" : "None", "key9_modline6_slew" : 0, "key9_modline6_source" : "None", "key9_modline6_table" : "Linear", "key9_modline6_velocity" : 127, "nav_displaymode" : "Always", "nav_modline1_" : null, "nav_modline1_bankmsb" : 0, "nav_modline1_cc" : 71, "nav_modline1_channel" : 2, "nav_modline1_destination" : "Note Set", "nav_modline1_device" : "SSCOM Port 1", "nav_modline1_displaylinked" : 1, "nav_modline1_enable" : true, "nav_modline1_gain" : 1.0, "nav_modline1_max" : 127, "nav_modline1_min" : 127, "nav_modline1_mmcfunction" : "Stop", "nav_modline1_mmcid" : 1, "nav_modline1_note" : 126, "nav_modline1_offset" : 0, "nav_modline1_oscroute" : "None", "nav_modline1_slew" : 0, "nav_modline1_source" : "Init", "nav_modline1_table" : "Linear", "nav_modline1_velocity" : 127, "nav_modline2_bankmsb" : 0, "nav_modline2_cc" : 72, "nav_modline2_channel" : 9, "nav_modline2_destination" : "CC", "nav_modline2_device" : "SSCOM Port 1", "nav_modline2_displaylinked" : 0, "nav_modline2_enable" : true, "nav_modline2_gain" : 1.0, "nav_modline2_max" : 127, "nav_modline2_min" : 0, "nav_modline2_mmcfunction" : "Stop", "nav_modline2_mmcid" : 1, "nav_modline2_note" : 72, "nav_modline2_offset" : 0, "nav_modline2_oscroute" : "None", "nav_modline2_slew" : 0, "nav_modline2_source" : "Nav S Foot On", "nav_modline2_table" : "Linear", "nav_modline2_velocity" : 127, "nav_modline3_bankmsb" : 0, "nav_modline3_cc" : 73, "nav_modline3_channel" : 9, "nav_modline3_destination" : "CC", "nav_modline3_device" : "SSCOM Port 1", "nav_modline3_displaylinked" : 0, "nav_modline3_enable" : false, "nav_modline3_gain" : 1.0, "nav_modline3_max" : 127, "nav_modline3_min" : 0, "nav_modline3_mmcfunction" : "Stop", "nav_modline3_mmcid" : 1, "nav_modline3_note" : 60, "nav_modline3_offset" : 0, "nav_modline3_oscroute" : "None", "nav_modline3_slew" : 0, "nav_modline3_source" : "Nav N Foot On", "nav_modline3_table" : "Linear", "nav_modline3_velocity" : 127, "nav_modline4_bankmsb" : 0, "nav_modline4_cc" : 74, "nav_modline4_channel" : 9, "nav_modline4_destination" : "CC", "nav_modline4_device" : "SSCOM Port 1", "nav_modline4_displaylinked" : 0, "nav_modline4_enable" : false, "nav_modline4_gain" : 1.0, "nav_modline4_max" : 127, "nav_modline4_min" : 0, "nav_modline4_mmcfunction" : "Stop", "nav_modline4_mmcid" : 1, "nav_modline4_note" : 60, "nav_modline4_offset" : 0, "nav_modline4_oscroute" : "None", "nav_modline4_slew" : 0, "nav_modline4_source" : "Nav S Foot On", "nav_modline4_table" : "Linear", "nav_modline4_velocity" : 127, "nav_modline5_bankmsb" : 0, "nav_modline5_cc" : 0, "nav_modline5_channel" : 1, "nav_modline5_destination" : "None", "nav_modline5_device" : "SoftStep Expander", "nav_modline5_displaylinked" : 0, "nav_modline5_enable" : 0, "nav_modline5_gain" : 1.0, "nav_modline5_max" : 127, "nav_modline5_min" : 0, "nav_modline5_mmcfunction" : "Stop", "nav_modline5_mmcid" : 1, "nav_modline5_note" : 60, "nav_modline5_offset" : 0, "nav_modline5_oscroute" : "None", "nav_modline5_slew" : 0, "nav_modline5_source" : "None", "nav_modline5_table" : "Linear", "nav_modline5_velocity" : 127, "nav_modline6_bankmsb" : 0, "nav_modline6_cc" : 0, "nav_modline6_channel" : 1, "nav_modline6_destination" : "None", "nav_modline6_device" : "SoftStep Expander", "nav_modline6_displaylinked" : 0, "nav_modline6_enable" : 0, "nav_modline6_gain" : 1.0, "nav_modline6_max" : 127, "nav_modline6_min" : 0, "nav_modline6_mmcfunction" : "Stop", "nav_modline6_mmcid" : 1, "nav_modline6_note" : 60, "nav_modline6_offset" : 0, "nav_modline6_oscroute" : "None", "nav_modline6_slew" : 0, "nav_modline6_source" : "None", "nav_modline6_table" : "Linear", "nav_modline6_velocity" : 127, "nav_modlinemode" : 0, "nav_name" : "CLIP", "nav_prefix" : "", "preset_displayname" : "BwCL", "preset_name" : "Bitwig_Clips" }
--------------------------------------------------------------------------------
/SoftStep_Bitwig/Bitwig_FX.softsteppreset:
--------------------------------------------------------------------------------
1 | { "10_key_displaymode" : "Always", "10_key_name" : "On", "10_key_prefix" : "", "1_key_displaymode" : "Always", "1_key_name" : "TR_1", "1_key_prefix" : "", "2_key_displaymode" : "Always", "2_key_name" : "TR_2", "2_key_prefix" : "", "3_key_displaymode" : "Always", "3_key_name" : "TR_3", "3_key_prefix" : "", "4_key_displaymode" : "Always", "4_key_name" : "TR_4", "4_key_prefix" : "", "5_key_displaymode" : "Always", "5_key_name" : "DVCE", "5_key_prefix" : "", "6_key_displaymode" : "Always", "6_key_name" : "MA_1", "6_key_prefix" : "", "7_key_displaymode" : "Always", "7_key_name" : "MA_2", "7_key_prefix" : "", "8_key_displaymode" : "Always", "8_key_name" : "MA-3", "8_key_prefix" : "", "9_key_displaymode" : "Always", "9_key_name" : "MA_4", "9_key_prefix" : "", "key10_modline1_bankmsb" : 0, "key10_modline1_cc" : 108, "key10_modline1_channel" : 2, "key10_modline1_destination" : "CC", "key10_modline1_device" : "SSCOM Port 1", "key10_modline1_displaylinked" : false, "key10_modline1_enable" : true, "key10_modline1_gain" : 1.0, "key10_modline1_ledgreen" : "None", "key10_modline1_ledred" : "None", "key10_modline1_max" : 127, "key10_modline1_min" : 0, "key10_modline1_mmcfunction" : "Stop", "key10_modline1_mmcid" : 1, "key10_modline1_note" : 16, "key10_modline1_offset" : 0, "key10_modline1_oscroute" : "None", "key10_modline1_slew" : 0, "key10_modline1_source" : "Foot On", "key10_modline1_table" : "Linear", "key10_modline1_velocity" : 127, "key10_modline2_bankmsb" : 0, "key10_modline2_cc" : 75, "key10_modline2_channel" : 9, "key10_modline2_destination" : "CC", "key10_modline2_device" : "SSCOM Port 1", "key10_modline2_displaylinked" : 0, "key10_modline2_enable" : false, "key10_modline2_gain" : 1.0, "key10_modline2_ledgreen" : "None", "key10_modline2_ledred" : "None", "key10_modline2_max" : 127, "key10_modline2_min" : 0, "key10_modline2_mmcfunction" : "Stop", "key10_modline2_mmcid" : 1, "key10_modline2_note" : 73, "key10_modline2_offset" : 0, "key10_modline2_oscroute" : "None", "key10_modline2_slew" : 0, "key10_modline2_source" : "Long Trig", "key10_modline2_table" : "Linear", "key10_modline2_velocity" : 127, "key10_modline3_bankmsb" : 0, "key10_modline3_cc" : 70, "key10_modline3_channel" : 9, "key10_modline3_destination" : "None", "key10_modline3_device" : "SSCOM Port 1", "key10_modline3_displaylinked" : true, "key10_modline3_enable" : false, "key10_modline3_gain" : 1.0, "key10_modline3_ledgreen" : "True", "key10_modline3_ledred" : "None", "key10_modline3_max" : 127, "key10_modline3_min" : 0, "key10_modline3_mmcfunction" : "Stop", "key10_modline3_mmcid" : 1, "key10_modline3_note" : 60, "key10_modline3_offset" : 0, "key10_modline3_oscroute" : "None", "key10_modline3_slew" : 0, "key10_modline3_source" : "None", "key10_modline3_table" : "Linear", "key10_modline3_velocity" : 127, "key10_modline4_bankmsb" : 0, "key10_modline4_cc" : 0, "key10_modline4_channel" : 1, "key10_modline4_destination" : "None", "key10_modline4_device" : "SSCOM Port 1", "key10_modline4_displaylinked" : 0, "key10_modline4_enable" : 0, "key10_modline4_gain" : 1.0, "key10_modline4_ledgreen" : "None", "key10_modline4_ledred" : "None", "key10_modline4_max" : 127, "key10_modline4_min" : 0, "key10_modline4_mmcfunction" : "Stop", "key10_modline4_mmcid" : 1, "key10_modline4_note" : 60, "key10_modline4_offset" : 0, "key10_modline4_oscroute" : "None", "key10_modline4_slew" : 0, "key10_modline4_source" : "None", "key10_modline4_table" : "Linear", "key10_modline4_velocity" : 127, "key10_modline5_bankmsb" : 0, "key10_modline5_cc" : 0, "key10_modline5_channel" : 1, "key10_modline5_destination" : "None", "key10_modline5_device" : "SSCOM Port 1", "key10_modline5_displaylinked" : 0, "key10_modline5_enable" : 0, "key10_modline5_gain" : 1.0, "key10_modline5_ledgreen" : "None", "key10_modline5_ledred" : "None", "key10_modline5_max" : 127, "key10_modline5_min" : 0, "key10_modline5_mmcfunction" : "Stop", "key10_modline5_mmcid" : 1, "key10_modline5_note" : 60, "key10_modline5_offset" : 0, "key10_modline5_oscroute" : "None", "key10_modline5_slew" : 0, "key10_modline5_source" : "None", "key10_modline5_table" : "Linear", "key10_modline5_velocity" : 127, "key10_modline6_bankmsb" : 0, "key10_modline6_cc" : 0, "key10_modline6_channel" : 1, "key10_modline6_destination" : "None", "key10_modline6_device" : "SSCOM Port 1", "key10_modline6_displaylinked" : 0, "key10_modline6_enable" : 0, "key10_modline6_gain" : 1.0, "key10_modline6_ledgreen" : "None", "key10_modline6_ledred" : "None", "key10_modline6_max" : 127, "key10_modline6_min" : 0, "key10_modline6_mmcfunction" : "Stop", "key10_modline6_mmcid" : 1, "key10_modline6_note" : 60, "key10_modline6_offset" : 0, "key10_modline6_oscroute" : "None", "key10_modline6_slew" : 0, "key10_modline6_source" : "None", "key10_modline6_table" : "Linear", "key10_modline6_velocity" : 127, "key1_modline1_bankmsb" : 0, "key1_modline1_cc" : 104, "key1_modline1_channel" : 2, "key1_modline1_destination" : "CC", "key1_modline1_device" : "SSCOM Port 1", "key1_modline1_displaylinked" : 1, "key1_modline1_enable" : true, "key1_modline1_gain" : 1.0, "key1_modline1_ledgreen" : "None", "key1_modline1_ledred" : "None", "key1_modline1_max" : 127, "key1_modline1_min" : 0, "key1_modline1_mmcfunction" : "Stop", "key1_modline1_mmcid" : 1, "key1_modline1_note" : 0, "key1_modline1_offset" : 0, "key1_modline1_oscroute" : "None", "key1_modline1_slew" : 0, "key1_modline1_source" : "Foot On", "key1_modline1_table" : "Linear", "key1_modline1_velocity" : 127, "key1_modline2_bankmsb" : 0, "key1_modline2_cc" : 0, "key1_modline2_channel" : 2, "key1_modline2_destination" : "Note Set", "key1_modline2_device" : "SSCOM Port 1", "key1_modline2_displaylinked" : 0, "key1_modline2_enable" : true, "key1_modline2_gain" : 1.0, "key1_modline2_ledgreen" : "None", "key1_modline2_ledred" : "None", "key1_modline2_max" : 127, "key1_modline2_min" : 127, "key1_modline2_mmcfunction" : "Stop", "key1_modline2_mmcid" : 1, "key1_modline2_note" : 127, "key1_modline2_offset" : 0, "key1_modline2_oscroute" : "None", "key1_modline2_slew" : 0, "key1_modline2_source" : "Init", "key1_modline2_table" : "Linear", "key1_modline2_velocity" : 127, "key1_modline3_bankmsb" : 0, "key1_modline3_cc" : 0, "key1_modline3_channel" : 2, "key1_modline3_destination" : "Note Set", "key1_modline3_device" : "SSCOM Port 1", "key1_modline3_displaylinked" : 0, "key1_modline3_enable" : true, "key1_modline3_gain" : 1.0, "key1_modline3_ledgreen" : "None", "key1_modline3_ledred" : "None", "key1_modline3_max" : 127, "key1_modline3_min" : 0, "key1_modline3_mmcfunction" : "Stop", "key1_modline3_mmcid" : 1, "key1_modline3_note" : 8, "key1_modline3_offset" : 0, "key1_modline3_oscroute" : "None", "key1_modline3_slew" : 0, "key1_modline3_source" : "Long Trig", "key1_modline3_table" : "Linear", "key1_modline3_velocity" : 127, "key1_modline4_bankmsb" : 0, "key1_modline4_cc" : 0, "key1_modline4_channel" : 1, "key1_modline4_destination" : "None", "key1_modline4_device" : "SSCOM Port 1", "key1_modline4_displaylinked" : 0, "key1_modline4_enable" : 0, "key1_modline4_gain" : 1.0, "key1_modline4_ledgreen" : "None", "key1_modline4_ledred" : "None", "key1_modline4_max" : 127, "key1_modline4_min" : 0, "key1_modline4_mmcfunction" : "Stop", "key1_modline4_mmcid" : 1, "key1_modline4_note" : 60, "key1_modline4_offset" : 0, "key1_modline4_oscroute" : "None", "key1_modline4_slew" : 0, "key1_modline4_source" : "None", "key1_modline4_table" : "Linear", "key1_modline4_velocity" : 127, "key1_modline5_bankmsb" : 0, "key1_modline5_cc" : 0, "key1_modline5_channel" : 1, "key1_modline5_destination" : "None", "key1_modline5_device" : "SSCOM Port 1", "key1_modline5_displaylinked" : 0, "key1_modline5_enable" : 0, "key1_modline5_gain" : 1.0, "key1_modline5_ledgreen" : "None", "key1_modline5_ledred" : "None", "key1_modline5_max" : 127, "key1_modline5_min" : 0, "key1_modline5_mmcfunction" : "Stop", "key1_modline5_mmcid" : 1, "key1_modline5_note" : 60, "key1_modline5_offset" : 0, "key1_modline5_oscroute" : "None", "key1_modline5_slew" : 0, "key1_modline5_source" : "None", "key1_modline5_table" : "Linear", "key1_modline5_velocity" : 127, "key1_modline6_bankmsb" : 0, "key1_modline6_cc" : 0, "key1_modline6_channel" : 1, "key1_modline6_destination" : "None", "key1_modline6_device" : "SSCOM Port 1", "key1_modline6_displaylinked" : 0, "key1_modline6_enable" : 0, "key1_modline6_gain" : 1.0, "key1_modline6_ledgreen" : "None", "key1_modline6_ledred" : "None", "key1_modline6_max" : 127, "key1_modline6_min" : 0, "key1_modline6_mmcfunction" : "Stop", "key1_modline6_mmcid" : 1, "key1_modline6_note" : 60, "key1_modline6_offset" : 0, "key1_modline6_oscroute" : "None", "key1_modline6_slew" : 0, "key1_modline6_source" : "None", "key1_modline6_table" : "Linear", "key1_modline6_velocity" : 127, "key2_modline1_bankmsb" : 0, "key2_modline1_cc" : 105, "key2_modline1_channel" : 2, "key2_modline1_destination" : "CC", "key2_modline1_device" : "SSCOM Port 1", "key2_modline1_displaylinked" : 1, "key2_modline1_enable" : true, "key2_modline1_gain" : 1.0, "key2_modline1_ledgreen" : "None", "key2_modline1_ledred" : "None", "key2_modline1_max" : 127, "key2_modline1_min" : 0, "key2_modline1_mmcfunction" : "Stop", "key2_modline1_mmcid" : 1, "key2_modline1_note" : 2, "key2_modline1_offset" : 0, "key2_modline1_oscroute" : "None", "key2_modline1_slew" : 0, "key2_modline1_source" : "Foot On", "key2_modline1_table" : "Linear", "key2_modline1_velocity" : 127, "key2_modline2_bankmsb" : 0, "key2_modline2_cc" : 0, "key2_modline2_channel" : 2, "key2_modline2_destination" : "Note Set", "key2_modline2_device" : "SSCOM Port 1", "key2_modline2_displaylinked" : 0, "key2_modline2_enable" : true, "key2_modline2_gain" : 1.0, "key2_modline2_ledgreen" : "None", "key2_modline2_ledred" : "None", "key2_modline2_max" : 127, "key2_modline2_min" : 0, "key2_modline2_mmcfunction" : "Stop", "key2_modline2_mmcid" : 1, "key2_modline2_note" : 10, "key2_modline2_offset" : 0, "key2_modline2_oscroute" : "None", "key2_modline2_slew" : 0, "key2_modline2_source" : "Long Trig", "key2_modline2_table" : "Linear", "key2_modline2_velocity" : 127, "key2_modline3_bankmsb" : 0, "key2_modline3_cc" : 0, "key2_modline3_channel" : 1, "key2_modline3_destination" : "None", "key2_modline3_device" : "SSCOM Port 1", "key2_modline3_displaylinked" : 0, "key2_modline3_enable" : 0, "key2_modline3_gain" : 1.0, "key2_modline3_ledgreen" : "None", "key2_modline3_ledred" : "None", "key2_modline3_max" : 127, "key2_modline3_min" : 0, "key2_modline3_mmcfunction" : "Stop", "key2_modline3_mmcid" : 1, "key2_modline3_note" : 60, "key2_modline3_offset" : 0, "key2_modline3_oscroute" : "None", "key2_modline3_slew" : 0, "key2_modline3_source" : "None", "key2_modline3_table" : "Linear", "key2_modline3_velocity" : 127, "key2_modline4_bankmsb" : 0, "key2_modline4_cc" : 0, "key2_modline4_channel" : 1, "key2_modline4_destination" : "None", "key2_modline4_device" : "SSCOM Port 1", "key2_modline4_displaylinked" : 0, "key2_modline4_enable" : 0, "key2_modline4_gain" : 1.0, "key2_modline4_ledgreen" : "None", "key2_modline4_ledred" : "None", "key2_modline4_max" : 127, "key2_modline4_min" : 0, "key2_modline4_mmcfunction" : "Stop", "key2_modline4_mmcid" : 1, "key2_modline4_note" : 60, "key2_modline4_offset" : 0, "key2_modline4_oscroute" : "None", "key2_modline4_slew" : 0, "key2_modline4_source" : "None", "key2_modline4_table" : "Linear", "key2_modline4_velocity" : 127, "key2_modline5_bankmsb" : 0, "key2_modline5_cc" : 0, "key2_modline5_channel" : 1, "key2_modline5_destination" : "None", "key2_modline5_device" : "SSCOM Port 1", "key2_modline5_displaylinked" : 0, "key2_modline5_enable" : 0, "key2_modline5_gain" : 1.0, "key2_modline5_ledgreen" : "None", "key2_modline5_ledred" : "None", "key2_modline5_max" : 127, "key2_modline5_min" : 0, "key2_modline5_mmcfunction" : "Stop", "key2_modline5_mmcid" : 1, "key2_modline5_note" : 60, "key2_modline5_offset" : 0, "key2_modline5_oscroute" : "None", "key2_modline5_slew" : 0, "key2_modline5_source" : "None", "key2_modline5_table" : "Linear", "key2_modline5_velocity" : 127, "key2_modline6_bankmsb" : 0, "key2_modline6_cc" : 0, "key2_modline6_channel" : 1, "key2_modline6_destination" : "None", "key2_modline6_device" : "SSCOM Port 1", "key2_modline6_displaylinked" : 0, "key2_modline6_enable" : 0, "key2_modline6_gain" : 1.0, "key2_modline6_ledgreen" : "None", "key2_modline6_ledred" : "None", "key2_modline6_max" : 127, "key2_modline6_min" : 0, "key2_modline6_mmcfunction" : "Stop", "key2_modline6_mmcid" : 1, "key2_modline6_note" : 60, "key2_modline6_offset" : 0, "key2_modline6_oscroute" : "None", "key2_modline6_slew" : 0, "key2_modline6_source" : "None", "key2_modline6_table" : "Linear", "key2_modline6_velocity" : 127, "key3_modline1_bankmsb" : 0, "key3_modline1_cc" : 106, "key3_modline1_channel" : 2, "key3_modline1_destination" : "CC", "key3_modline1_device" : "SSCOM Port 1", "key3_modline1_displaylinked" : 1, "key3_modline1_enable" : true, "key3_modline1_gain" : 1.0, "key3_modline1_ledgreen" : "None", "key3_modline1_ledred" : "None", "key3_modline1_max" : 127, "key3_modline1_min" : 0, "key3_modline1_mmcfunction" : "Stop", "key3_modline1_mmcid" : 1, "key3_modline1_note" : 4, "key3_modline1_offset" : 0, "key3_modline1_oscroute" : "None", "key3_modline1_slew" : 0, "key3_modline1_source" : "Foot On", "key3_modline1_table" : "Linear", "key3_modline1_velocity" : 127, "key3_modline2_bankmsb" : 0, "key3_modline2_cc" : 0, "key3_modline2_channel" : 2, "key3_modline2_destination" : "Note Set", "key3_modline2_device" : "SSCOM Port 1", "key3_modline2_displaylinked" : 0, "key3_modline2_enable" : true, "key3_modline2_gain" : 1.0, "key3_modline2_ledgreen" : "None", "key3_modline2_ledred" : "None", "key3_modline2_max" : 127, "key3_modline2_min" : 0, "key3_modline2_mmcfunction" : "Stop", "key3_modline2_mmcid" : 1, "key3_modline2_note" : 12, "key3_modline2_offset" : 0, "key3_modline2_oscroute" : "None", "key3_modline2_slew" : 0, "key3_modline2_source" : "Long Trig", "key3_modline2_table" : "Linear", "key3_modline2_velocity" : 127, "key3_modline3_bankmsb" : 0, "key3_modline3_cc" : 0, "key3_modline3_channel" : 1, "key3_modline3_destination" : "None", "key3_modline3_device" : "SSCOM Port 1", "key3_modline3_displaylinked" : 0, "key3_modline3_enable" : 0, "key3_modline3_gain" : 1.0, "key3_modline3_ledgreen" : "None", "key3_modline3_ledred" : "None", "key3_modline3_max" : 127, "key3_modline3_min" : 0, "key3_modline3_mmcfunction" : "Stop", "key3_modline3_mmcid" : 1, "key3_modline3_note" : 60, "key3_modline3_offset" : 0, "key3_modline3_oscroute" : "None", "key3_modline3_slew" : 0, "key3_modline3_source" : "None", "key3_modline3_table" : "Linear", "key3_modline3_velocity" : 127, "key3_modline4_bankmsb" : 0, "key3_modline4_cc" : 0, "key3_modline4_channel" : 1, "key3_modline4_destination" : "None", "key3_modline4_device" : "SSCOM Port 1", "key3_modline4_displaylinked" : 0, "key3_modline4_enable" : 0, "key3_modline4_gain" : 1.0, "key3_modline4_ledgreen" : "None", "key3_modline4_ledred" : "None", "key3_modline4_max" : 127, "key3_modline4_min" : 0, "key3_modline4_mmcfunction" : "Stop", "key3_modline4_mmcid" : 1, "key3_modline4_note" : 60, "key3_modline4_offset" : 0, "key3_modline4_oscroute" : "None", "key3_modline4_slew" : 0, "key3_modline4_source" : "None", "key3_modline4_table" : "Linear", "key3_modline4_velocity" : 127, "key3_modline5_bankmsb" : 0, "key3_modline5_cc" : 0, "key3_modline5_channel" : 1, "key3_modline5_destination" : "None", "key3_modline5_device" : "SSCOM Port 1", "key3_modline5_displaylinked" : 0, "key3_modline5_enable" : 0, "key3_modline5_gain" : 1.0, "key3_modline5_ledgreen" : "None", "key3_modline5_ledred" : "None", "key3_modline5_max" : 127, "key3_modline5_min" : 0, "key3_modline5_mmcfunction" : "Stop", "key3_modline5_mmcid" : 1, "key3_modline5_note" : 60, "key3_modline5_offset" : 0, "key3_modline5_oscroute" : "None", "key3_modline5_slew" : 0, "key3_modline5_source" : "None", "key3_modline5_table" : "Linear", "key3_modline5_velocity" : 127, "key3_modline6_bankmsb" : 0, "key3_modline6_cc" : 0, "key3_modline6_channel" : 1, "key3_modline6_destination" : "None", "key3_modline6_device" : "SSCOM Port 1", "key3_modline6_displaylinked" : 0, "key3_modline6_enable" : 0, "key3_modline6_gain" : 1.0, "key3_modline6_ledgreen" : "None", "key3_modline6_ledred" : "None", "key3_modline6_max" : 127, "key3_modline6_min" : 0, "key3_modline6_mmcfunction" : "Stop", "key3_modline6_mmcid" : 1, "key3_modline6_note" : 60, "key3_modline6_offset" : 0, "key3_modline6_oscroute" : "None", "key3_modline6_slew" : 0, "key3_modline6_source" : "None", "key3_modline6_table" : "Linear", "key3_modline6_velocity" : 127, "key4_modline1_bankmsb" : 0, "key4_modline1_cc" : 107, "key4_modline1_channel" : 2, "key4_modline1_destination" : "CC", "key4_modline1_device" : "SSCOM Port 1", "key4_modline1_displaylinked" : 1, "key4_modline1_enable" : true, "key4_modline1_gain" : 1.0, "key4_modline1_ledgreen" : "None", "key4_modline1_ledred" : "None", "key4_modline1_max" : 127, "key4_modline1_min" : 0, "key4_modline1_mmcfunction" : "Stop", "key4_modline1_mmcid" : 1, "key4_modline1_note" : 6, "key4_modline1_offset" : 0, "key4_modline1_oscroute" : "None", "key4_modline1_slew" : 0, "key4_modline1_source" : "Foot On", "key4_modline1_table" : "Linear", "key4_modline1_velocity" : 127, "key4_modline2_bankmsb" : 0, "key4_modline2_cc" : 0, "key4_modline2_channel" : 2, "key4_modline2_destination" : "Note Set", "key4_modline2_device" : "SSCOM Port 1", "key4_modline2_displaylinked" : 0, "key4_modline2_enable" : true, "key4_modline2_gain" : 1.0, "key4_modline2_ledgreen" : "None", "key4_modline2_ledred" : "None", "key4_modline2_max" : 127, "key4_modline2_min" : 0, "key4_modline2_mmcfunction" : "Stop", "key4_modline2_mmcid" : 1, "key4_modline2_note" : 14, "key4_modline2_offset" : 0, "key4_modline2_oscroute" : "None", "key4_modline2_slew" : 0, "key4_modline2_source" : "Long Trig", "key4_modline2_table" : "Linear", "key4_modline2_velocity" : 127, "key4_modline3_bankmsb" : 0, "key4_modline3_cc" : 0, "key4_modline3_channel" : 1, "key4_modline3_destination" : "None", "key4_modline3_device" : "SSCOM Port 1", "key4_modline3_displaylinked" : 0, "key4_modline3_enable" : 0, "key4_modline3_gain" : 1.0, "key4_modline3_ledgreen" : "None", "key4_modline3_ledred" : "None", "key4_modline3_max" : 127, "key4_modline3_min" : 0, "key4_modline3_mmcfunction" : "Stop", "key4_modline3_mmcid" : 1, "key4_modline3_note" : 60, "key4_modline3_offset" : 0, "key4_modline3_oscroute" : "None", "key4_modline3_slew" : 0, "key4_modline3_source" : "None", "key4_modline3_table" : "Linear", "key4_modline3_velocity" : 127, "key4_modline4_bankmsb" : 0, "key4_modline4_cc" : 0, "key4_modline4_channel" : 1, "key4_modline4_destination" : "None", "key4_modline4_device" : "SSCOM Port 1", "key4_modline4_displaylinked" : 0, "key4_modline4_enable" : 0, "key4_modline4_gain" : 1.0, "key4_modline4_ledgreen" : "None", "key4_modline4_ledred" : "None", "key4_modline4_max" : 127, "key4_modline4_min" : 0, "key4_modline4_mmcfunction" : "Stop", "key4_modline4_mmcid" : 1, "key4_modline4_note" : 60, "key4_modline4_offset" : 0, "key4_modline4_oscroute" : "None", "key4_modline4_slew" : 0, "key4_modline4_source" : "None", "key4_modline4_table" : "Linear", "key4_modline4_velocity" : 127, "key4_modline5_bankmsb" : 0, "key4_modline5_cc" : 0, "key4_modline5_channel" : 1, "key4_modline5_destination" : "None", "key4_modline5_device" : "SSCOM Port 1", "key4_modline5_displaylinked" : 0, "key4_modline5_enable" : 0, "key4_modline5_gain" : 1.0, "key4_modline5_ledgreen" : "None", "key4_modline5_ledred" : "None", "key4_modline5_max" : 127, "key4_modline5_min" : 0, "key4_modline5_mmcfunction" : "Stop", "key4_modline5_mmcid" : 1, "key4_modline5_note" : 60, "key4_modline5_offset" : 0, "key4_modline5_oscroute" : "None", "key4_modline5_slew" : 0, "key4_modline5_source" : "None", "key4_modline5_table" : "Linear", "key4_modline5_velocity" : 127, "key4_modline6_bankmsb" : 0, "key4_modline6_cc" : 0, "key4_modline6_channel" : 1, "key4_modline6_destination" : "None", "key4_modline6_device" : "SSCOM Port 1", "key4_modline6_displaylinked" : 0, "key4_modline6_enable" : 0, "key4_modline6_gain" : 1.0, "key4_modline6_ledgreen" : "None", "key4_modline6_ledred" : "None", "key4_modline6_max" : 127, "key4_modline6_min" : 0, "key4_modline6_mmcfunction" : "Stop", "key4_modline6_mmcid" : 1, "key4_modline6_note" : 60, "key4_modline6_offset" : 0, "key4_modline6_oscroute" : "None", "key4_modline6_slew" : 0, "key4_modline6_source" : "None", "key4_modline6_table" : "Linear", "key4_modline6_velocity" : 127, "key5_modline1_bankmsb" : 0, "key5_modline1_cc" : 109, "key5_modline1_channel" : 2, "key5_modline1_destination" : "CC", "key5_modline1_device" : "SSCOM Port 1", "key5_modline1_displaylinked" : 1, "key5_modline1_enable" : true, "key5_modline1_gain" : 1.0, "key5_modline1_ledgreen" : "None", "key5_modline1_ledred" : "None", "key5_modline1_max" : 127, "key5_modline1_min" : 0, "key5_modline1_mmcfunction" : "Stop", "key5_modline1_mmcid" : 1, "key5_modline1_note" : 17, "key5_modline1_offset" : 0, "key5_modline1_oscroute" : "None", "key5_modline1_slew" : 0, "key5_modline1_source" : "X Live", "key5_modline1_table" : "Linear", "key5_modline1_velocity" : 127, "key5_modline2_bankmsb" : 0, "key5_modline2_cc" : 66, "key5_modline2_channel" : 9, "key5_modline2_destination" : "None", "key5_modline2_device" : "SSCOM Port 1", "key5_modline2_displaylinked" : 0, "key5_modline2_enable" : false, "key5_modline2_gain" : 1.0, "key5_modline2_ledgreen" : "None", "key5_modline2_ledred" : "None", "key5_modline2_max" : 127, "key5_modline2_min" : 0, "key5_modline2_mmcfunction" : "Stop", "key5_modline2_mmcid" : 1, "key5_modline2_note" : 60, "key5_modline2_offset" : 0, "key5_modline2_oscroute" : "None", "key5_modline2_slew" : 0, "key5_modline2_source" : "None", "key5_modline2_table" : "Linear", "key5_modline2_velocity" : 127, "key5_modline3_bankmsb" : 0, "key5_modline3_cc" : 0, "key5_modline3_channel" : 1, "key5_modline3_destination" : "None", "key5_modline3_device" : "SSCOM Port 1", "key5_modline3_displaylinked" : false, "key5_modline3_enable" : 0, "key5_modline3_gain" : 1.0, "key5_modline3_ledgreen" : "None", "key5_modline3_ledred" : "None", "key5_modline3_max" : 127, "key5_modline3_min" : 0, "key5_modline3_mmcfunction" : "Stop", "key5_modline3_mmcid" : 1, "key5_modline3_note" : 60, "key5_modline3_offset" : 0, "key5_modline3_oscroute" : "None", "key5_modline3_slew" : 0, "key5_modline3_source" : "None", "key5_modline3_table" : "Linear", "key5_modline3_velocity" : 127, "key5_modline4_bankmsb" : 0, "key5_modline4_cc" : 0, "key5_modline4_channel" : 1, "key5_modline4_destination" : "None", "key5_modline4_device" : "SSCOM Port 1", "key5_modline4_displaylinked" : 0, "key5_modline4_enable" : 0, "key5_modline4_gain" : 1.0, "key5_modline4_ledgreen" : "None", "key5_modline4_ledred" : "None", "key5_modline4_max" : 127, "key5_modline4_min" : 0, "key5_modline4_mmcfunction" : "Stop", "key5_modline4_mmcid" : 1, "key5_modline4_note" : 60, "key5_modline4_offset" : 0, "key5_modline4_oscroute" : "None", "key5_modline4_slew" : 0, "key5_modline4_source" : "None", "key5_modline4_table" : "Linear", "key5_modline4_velocity" : 127, "key5_modline5_bankmsb" : 0, "key5_modline5_cc" : 0, "key5_modline5_channel" : 1, "key5_modline5_destination" : "None", "key5_modline5_device" : "SSCOM Port 1", "key5_modline5_displaylinked" : 0, "key5_modline5_enable" : 0, "key5_modline5_gain" : 1.0, "key5_modline5_ledgreen" : "None", "key5_modline5_ledred" : "None", "key5_modline5_max" : 127, "key5_modline5_min" : 0, "key5_modline5_mmcfunction" : "Stop", "key5_modline5_mmcid" : 1, "key5_modline5_note" : 60, "key5_modline5_offset" : 0, "key5_modline5_oscroute" : "None", "key5_modline5_slew" : 0, "key5_modline5_source" : "None", "key5_modline5_table" : "Linear", "key5_modline5_velocity" : 127, "key5_modline6_bankmsb" : 0, "key5_modline6_cc" : 0, "key5_modline6_channel" : 1, "key5_modline6_destination" : "None", "key5_modline6_device" : "SSCOM Port 1", "key5_modline6_displaylinked" : false, "key5_modline6_enable" : 0, "key5_modline6_gain" : 1.0, "key5_modline6_ledgreen" : "None", "key5_modline6_ledred" : "None", "key5_modline6_max" : 127, "key5_modline6_min" : 0, "key5_modline6_mmcfunction" : "Stop", "key5_modline6_mmcid" : 1, "key5_modline6_note" : 60, "key5_modline6_offset" : 0, "key5_modline6_oscroute" : "None", "key5_modline6_slew" : 0, "key5_modline6_source" : "None", "key5_modline6_table" : "Linear", "key5_modline6_velocity" : 127, "key6_modline1_bankmsb" : 0, "key6_modline1_cc" : 100, "key6_modline1_channel" : 2, "key6_modline1_destination" : "CC", "key6_modline1_device" : "SSCOM Port 1", "key6_modline1_displaylinked" : 1, "key6_modline1_enable" : true, "key6_modline1_gain" : 1.0, "key6_modline1_ledgreen" : "None", "key6_modline1_ledred" : "None", "key6_modline1_max" : 127, "key6_modline1_min" : 0, "key6_modline1_mmcfunction" : "Stop", "key6_modline1_mmcid" : 1, "key6_modline1_note" : 1, "key6_modline1_offset" : 0, "key6_modline1_oscroute" : "None", "key6_modline1_slew" : 0, "key6_modline1_source" : "Y Live", "key6_modline1_table" : "Linear", "key6_modline1_velocity" : 127, "key6_modline2_bankmsb" : 0, "key6_modline2_cc" : 0, "key6_modline2_channel" : 2, "key6_modline2_destination" : "Note Set", "key6_modline2_device" : "SSCOM Port 1", "key6_modline2_displaylinked" : 0, "key6_modline2_enable" : false, "key6_modline2_gain" : 1.0, "key6_modline2_ledgreen" : "None", "key6_modline2_ledred" : "None", "key6_modline2_max" : 127, "key6_modline2_min" : 0, "key6_modline2_mmcfunction" : "Stop", "key6_modline2_mmcid" : 1, "key6_modline2_note" : 9, "key6_modline2_offset" : 0, "key6_modline2_oscroute" : "None", "key6_modline2_slew" : 0, "key6_modline2_source" : "Long Trig", "key6_modline2_table" : "Linear", "key6_modline2_velocity" : 127, "key6_modline3_bankmsb" : 0, "key6_modline3_cc" : 0, "key6_modline3_channel" : 1, "key6_modline3_destination" : "None", "key6_modline3_device" : "SSCOM Port 1", "key6_modline3_displaylinked" : 0, "key6_modline3_enable" : 0, "key6_modline3_gain" : 1.0, "key6_modline3_ledgreen" : "None", "key6_modline3_ledred" : "None", "key6_modline3_max" : 127, "key6_modline3_min" : 0, "key6_modline3_mmcfunction" : "Stop", "key6_modline3_mmcid" : 1, "key6_modline3_note" : 60, "key6_modline3_offset" : 0, "key6_modline3_oscroute" : "None", "key6_modline3_slew" : 0, "key6_modline3_source" : "None", "key6_modline3_table" : "Linear", "key6_modline3_velocity" : 127, "key6_modline4_bankmsb" : 0, "key6_modline4_cc" : 0, "key6_modline4_channel" : 1, "key6_modline4_destination" : "None", "key6_modline4_device" : "SSCOM Port 1", "key6_modline4_displaylinked" : 0, "key6_modline4_enable" : 0, "key6_modline4_gain" : 1.0, "key6_modline4_ledgreen" : "None", "key6_modline4_ledred" : "None", "key6_modline4_max" : 127, "key6_modline4_min" : 0, "key6_modline4_mmcfunction" : "Stop", "key6_modline4_mmcid" : 1, "key6_modline4_note" : 60, "key6_modline4_offset" : 0, "key6_modline4_oscroute" : "None", "key6_modline4_slew" : 0, "key6_modline4_source" : "None", "key6_modline4_table" : "Linear", "key6_modline4_velocity" : 127, "key6_modline5_bankmsb" : 0, "key6_modline5_cc" : 0, "key6_modline5_channel" : 1, "key6_modline5_destination" : "None", "key6_modline5_device" : "SSCOM Port 1", "key6_modline5_displaylinked" : 0, "key6_modline5_enable" : 0, "key6_modline5_gain" : 1.0, "key6_modline5_ledgreen" : "None", "key6_modline5_ledred" : "None", "key6_modline5_max" : 127, "key6_modline5_min" : 0, "key6_modline5_mmcfunction" : "Stop", "key6_modline5_mmcid" : 1, "key6_modline5_note" : 60, "key6_modline5_offset" : 0, "key6_modline5_oscroute" : "None", "key6_modline5_slew" : 0, "key6_modline5_source" : "None", "key6_modline5_table" : "Linear", "key6_modline5_velocity" : 127, "key6_modline6_bankmsb" : 0, "key6_modline6_cc" : 0, "key6_modline6_channel" : 1, "key6_modline6_destination" : "None", "key6_modline6_device" : "SSCOM Port 1", "key6_modline6_displaylinked" : 0, "key6_modline6_enable" : 0, "key6_modline6_gain" : 1.0, "key6_modline6_ledgreen" : "None", "key6_modline6_ledred" : "None", "key6_modline6_max" : 127, "key6_modline6_min" : 0, "key6_modline6_mmcfunction" : "Stop", "key6_modline6_mmcid" : 1, "key6_modline6_note" : 60, "key6_modline6_offset" : 0, "key6_modline6_oscroute" : "None", "key6_modline6_slew" : 0, "key6_modline6_source" : "None", "key6_modline6_table" : "Linear", "key6_modline6_velocity" : 127, "key7_modline1_bankmsb" : 0, "key7_modline1_cc" : 101, "key7_modline1_channel" : 2, "key7_modline1_destination" : "CC", "key7_modline1_device" : "SSCOM Port 1", "key7_modline1_displaylinked" : 1, "key7_modline1_enable" : true, "key7_modline1_gain" : 1.0, "key7_modline1_ledgreen" : "None", "key7_modline1_ledred" : "None", "key7_modline1_max" : 127, "key7_modline1_min" : 0, "key7_modline1_mmcfunction" : "Stop", "key7_modline1_mmcid" : 1, "key7_modline1_note" : 3, "key7_modline1_offset" : 0, "key7_modline1_oscroute" : "None", "key7_modline1_slew" : 0, "key7_modline1_source" : "Y Live", "key7_modline1_table" : "Linear", "key7_modline1_velocity" : 127, "key7_modline2_bankmsb" : 0, "key7_modline2_cc" : 0, "key7_modline2_channel" : 2, "key7_modline2_destination" : "Note Set", "key7_modline2_device" : "SSCOM Port 1", "key7_modline2_displaylinked" : 0, "key7_modline2_enable" : false, "key7_modline2_gain" : 1.0, "key7_modline2_ledgreen" : "None", "key7_modline2_ledred" : "None", "key7_modline2_max" : 127, "key7_modline2_min" : 0, "key7_modline2_mmcfunction" : "Stop", "key7_modline2_mmcid" : 1, "key7_modline2_note" : 11, "key7_modline2_offset" : 0, "key7_modline2_oscroute" : "None", "key7_modline2_slew" : 0, "key7_modline2_source" : "Long Trig", "key7_modline2_table" : "Linear", "key7_modline2_velocity" : 127, "key7_modline3_bankmsb" : 0, "key7_modline3_cc" : 0, "key7_modline3_channel" : 1, "key7_modline3_destination" : "None", "key7_modline3_device" : "SSCOM Port 1", "key7_modline3_displaylinked" : 0, "key7_modline3_enable" : 0, "key7_modline3_gain" : 1.0, "key7_modline3_ledgreen" : "None", "key7_modline3_ledred" : "None", "key7_modline3_max" : 127, "key7_modline3_min" : 0, "key7_modline3_mmcfunction" : "Stop", "key7_modline3_mmcid" : 1, "key7_modline3_note" : 60, "key7_modline3_offset" : 0, "key7_modline3_oscroute" : "None", "key7_modline3_slew" : 0, "key7_modline3_source" : "None", "key7_modline3_table" : "Linear", "key7_modline3_velocity" : 127, "key7_modline4_bankmsb" : 0, "key7_modline4_cc" : 0, "key7_modline4_channel" : 1, "key7_modline4_destination" : "None", "key7_modline4_device" : "SSCOM Port 1", "key7_modline4_displaylinked" : 0, "key7_modline4_enable" : 0, "key7_modline4_gain" : 1.0, "key7_modline4_ledgreen" : "None", "key7_modline4_ledred" : "None", "key7_modline4_max" : 127, "key7_modline4_min" : 0, "key7_modline4_mmcfunction" : "Stop", "key7_modline4_mmcid" : 1, "key7_modline4_note" : 60, "key7_modline4_offset" : 0, "key7_modline4_oscroute" : "None", "key7_modline4_slew" : 0, "key7_modline4_source" : "None", "key7_modline4_table" : "Linear", "key7_modline4_velocity" : 127, "key7_modline5_bankmsb" : 0, "key7_modline5_cc" : 0, "key7_modline5_channel" : 1, "key7_modline5_destination" : "None", "key7_modline5_device" : "SSCOM Port 1", "key7_modline5_displaylinked" : 0, "key7_modline5_enable" : 0, "key7_modline5_gain" : 1.0, "key7_modline5_ledgreen" : "None", "key7_modline5_ledred" : "None", "key7_modline5_max" : 127, "key7_modline5_min" : 0, "key7_modline5_mmcfunction" : "Stop", "key7_modline5_mmcid" : 1, "key7_modline5_note" : 60, "key7_modline5_offset" : 0, "key7_modline5_oscroute" : "None", "key7_modline5_slew" : 0, "key7_modline5_source" : "None", "key7_modline5_table" : "Linear", "key7_modline5_velocity" : 127, "key7_modline6_bankmsb" : 0, "key7_modline6_cc" : 0, "key7_modline6_channel" : 1, "key7_modline6_destination" : "None", "key7_modline6_device" : "SSCOM Port 1", "key7_modline6_displaylinked" : 0, "key7_modline6_enable" : 0, "key7_modline6_gain" : 1.0, "key7_modline6_ledgreen" : "None", "key7_modline6_ledred" : "None", "key7_modline6_max" : 127, "key7_modline6_min" : 0, "key7_modline6_mmcfunction" : "Stop", "key7_modline6_mmcid" : 1, "key7_modline6_note" : 60, "key7_modline6_offset" : 0, "key7_modline6_oscroute" : "None", "key7_modline6_slew" : 0, "key7_modline6_source" : "None", "key7_modline6_table" : "Linear", "key7_modline6_velocity" : 127, "key8_modline1_bankmsb" : 0, "key8_modline1_cc" : 102, "key8_modline1_channel" : 2, "key8_modline1_destination" : "CC", "key8_modline1_device" : "SSCOM Port 1", "key8_modline1_displaylinked" : 1, "key8_modline1_enable" : true, "key8_modline1_gain" : 1.0, "key8_modline1_ledgreen" : "None", "key8_modline1_ledred" : "None", "key8_modline1_max" : 127, "key8_modline1_min" : 0, "key8_modline1_mmcfunction" : "Stop", "key8_modline1_mmcid" : 1, "key8_modline1_note" : 5, "key8_modline1_offset" : 0, "key8_modline1_oscroute" : "None", "key8_modline1_slew" : 0, "key8_modline1_source" : "Y Live", "key8_modline1_table" : "Linear", "key8_modline1_velocity" : 127, "key8_modline2_bankmsb" : 0, "key8_modline2_cc" : 0, "key8_modline2_channel" : 2, "key8_modline2_destination" : "Note Set", "key8_modline2_device" : "SSCOM Port 1", "key8_modline2_displaylinked" : 0, "key8_modline2_enable" : false, "key8_modline2_gain" : 1.0, "key8_modline2_ledgreen" : "None", "key8_modline2_ledred" : "None", "key8_modline2_max" : 127, "key8_modline2_min" : 0, "key8_modline2_mmcfunction" : "Stop", "key8_modline2_mmcid" : 1, "key8_modline2_note" : 13, "key8_modline2_offset" : 0, "key8_modline2_oscroute" : "None", "key8_modline2_slew" : 0, "key8_modline2_source" : "Long Trig", "key8_modline2_table" : "Linear", "key8_modline2_velocity" : 127, "key8_modline3_bankmsb" : 0, "key8_modline3_cc" : 0, "key8_modline3_channel" : 1, "key8_modline3_destination" : "None", "key8_modline3_device" : "SSCOM Port 1", "key8_modline3_displaylinked" : 0, "key8_modline3_enable" : 0, "key8_modline3_gain" : 1.0, "key8_modline3_ledgreen" : "None", "key8_modline3_ledred" : "None", "key8_modline3_max" : 127, "key8_modline3_min" : 0, "key8_modline3_mmcfunction" : "Stop", "key8_modline3_mmcid" : 1, "key8_modline3_note" : 60, "key8_modline3_offset" : 0, "key8_modline3_oscroute" : "None", "key8_modline3_slew" : 0, "key8_modline3_source" : "None", "key8_modline3_table" : "Linear", "key8_modline3_velocity" : 127, "key8_modline4_bankmsb" : 0, "key8_modline4_cc" : 0, "key8_modline4_channel" : 1, "key8_modline4_destination" : "None", "key8_modline4_device" : "SSCOM Port 1", "key8_modline4_displaylinked" : 0, "key8_modline4_enable" : 0, "key8_modline4_gain" : 1.0, "key8_modline4_ledgreen" : "None", "key8_modline4_ledred" : "None", "key8_modline4_max" : 127, "key8_modline4_min" : 0, "key8_modline4_mmcfunction" : "Stop", "key8_modline4_mmcid" : 1, "key8_modline4_note" : 60, "key8_modline4_offset" : 0, "key8_modline4_oscroute" : "None", "key8_modline4_slew" : 0, "key8_modline4_source" : "None", "key8_modline4_table" : "Linear", "key8_modline4_velocity" : 127, "key8_modline5_bankmsb" : 0, "key8_modline5_cc" : 0, "key8_modline5_channel" : 1, "key8_modline5_destination" : "None", "key8_modline5_device" : "SSCOM Port 1", "key8_modline5_displaylinked" : 0, "key8_modline5_enable" : 0, "key8_modline5_gain" : 1.0, "key8_modline5_ledgreen" : "None", "key8_modline5_ledred" : "None", "key8_modline5_max" : 127, "key8_modline5_min" : 0, "key8_modline5_mmcfunction" : "Stop", "key8_modline5_mmcid" : 1, "key8_modline5_note" : 60, "key8_modline5_offset" : 0, "key8_modline5_oscroute" : "None", "key8_modline5_slew" : 0, "key8_modline5_source" : "None", "key8_modline5_table" : "Linear", "key8_modline5_velocity" : 127, "key8_modline6_bankmsb" : 0, "key8_modline6_cc" : 0, "key8_modline6_channel" : 1, "key8_modline6_destination" : "None", "key8_modline6_device" : "SSCOM Port 1", "key8_modline6_displaylinked" : 0, "key8_modline6_enable" : 0, "key8_modline6_gain" : 1.0, "key8_modline6_ledgreen" : "None", "key8_modline6_ledred" : "None", "key8_modline6_max" : 127, "key8_modline6_min" : 0, "key8_modline6_mmcfunction" : "Stop", "key8_modline6_mmcid" : 1, "key8_modline6_note" : 60, "key8_modline6_offset" : 0, "key8_modline6_oscroute" : "None", "key8_modline6_slew" : 0, "key8_modline6_source" : "None", "key8_modline6_table" : "Linear", "key8_modline6_velocity" : 127, "key9_modline1_bankmsb" : 0, "key9_modline1_cc" : 103, "key9_modline1_channel" : 2, "key9_modline1_destination" : "CC", "key9_modline1_device" : "SSCOM Port 1", "key9_modline1_displaylinked" : 1, "key9_modline1_enable" : true, "key9_modline1_gain" : 1.0, "key9_modline1_ledgreen" : "None", "key9_modline1_ledred" : "None", "key9_modline1_max" : 127, "key9_modline1_min" : 0, "key9_modline1_mmcfunction" : "Stop", "key9_modline1_mmcid" : 1, "key9_modline1_note" : 7, "key9_modline1_offset" : 0, "key9_modline1_oscroute" : "None", "key9_modline1_slew" : 0, "key9_modline1_source" : "Y Live", "key9_modline1_table" : "Linear", "key9_modline1_velocity" : 127, "key9_modline2_bankmsb" : 0, "key9_modline2_cc" : 0, "key9_modline2_channel" : 2, "key9_modline2_destination" : "Note Set", "key9_modline2_device" : "SSCOM Port 1", "key9_modline2_displaylinked" : 0, "key9_modline2_enable" : false, "key9_modline2_gain" : 1.0, "key9_modline2_ledgreen" : "None", "key9_modline2_ledred" : "None", "key9_modline2_max" : 127, "key9_modline2_min" : 0, "key9_modline2_mmcfunction" : "Stop", "key9_modline2_mmcid" : 1, "key9_modline2_note" : 15, "key9_modline2_offset" : 0, "key9_modline2_oscroute" : "None", "key9_modline2_slew" : 0, "key9_modline2_source" : "Long Trig", "key9_modline2_table" : "Linear", "key9_modline2_velocity" : 127, "key9_modline3_bankmsb" : 0, "key9_modline3_cc" : 0, "key9_modline3_channel" : 1, "key9_modline3_destination" : "None", "key9_modline3_device" : "SSCOM Port 1", "key9_modline3_displaylinked" : 0, "key9_modline3_enable" : 0, "key9_modline3_gain" : 1.0, "key9_modline3_ledgreen" : "None", "key9_modline3_ledred" : "None", "key9_modline3_max" : 127, "key9_modline3_min" : 0, "key9_modline3_mmcfunction" : "Stop", "key9_modline3_mmcid" : 1, "key9_modline3_note" : 60, "key9_modline3_offset" : 0, "key9_modline3_oscroute" : "None", "key9_modline3_slew" : 0, "key9_modline3_source" : "None", "key9_modline3_table" : "Linear", "key9_modline3_velocity" : 127, "key9_modline4_bankmsb" : 0, "key9_modline4_cc" : 0, "key9_modline4_channel" : 1, "key9_modline4_destination" : "None", "key9_modline4_device" : "SSCOM Port 1", "key9_modline4_displaylinked" : 0, "key9_modline4_enable" : 0, "key9_modline4_gain" : 1.0, "key9_modline4_ledgreen" : "None", "key9_modline4_ledred" : "None", "key9_modline4_max" : 127, "key9_modline4_min" : 0, "key9_modline4_mmcfunction" : "Stop", "key9_modline4_mmcid" : 1, "key9_modline4_note" : 60, "key9_modline4_offset" : 0, "key9_modline4_oscroute" : "None", "key9_modline4_slew" : 0, "key9_modline4_source" : "None", "key9_modline4_table" : "Linear", "key9_modline4_velocity" : 127, "key9_modline5_bankmsb" : 0, "key9_modline5_cc" : 0, "key9_modline5_channel" : 1, "key9_modline5_destination" : "None", "key9_modline5_device" : "SSCOM Port 1", "key9_modline5_displaylinked" : 0, "key9_modline5_enable" : 0, "key9_modline5_gain" : 1.0, "key9_modline5_ledgreen" : "None", "key9_modline5_ledred" : "None", "key9_modline5_max" : 127, "key9_modline5_min" : 0, "key9_modline5_mmcfunction" : "Stop", "key9_modline5_mmcid" : 1, "key9_modline5_note" : 60, "key9_modline5_offset" : 0, "key9_modline5_oscroute" : "None", "key9_modline5_slew" : 0, "key9_modline5_source" : "None", "key9_modline5_table" : "Linear", "key9_modline5_velocity" : 127, "key9_modline6_bankmsb" : 0, "key9_modline6_cc" : 0, "key9_modline6_channel" : 1, "key9_modline6_destination" : "None", "key9_modline6_device" : "SSCOM Port 1", "key9_modline6_displaylinked" : 0, "key9_modline6_enable" : 0, "key9_modline6_gain" : 1.0, "key9_modline6_ledgreen" : "None", "key9_modline6_ledred" : "None", "key9_modline6_max" : 127, "key9_modline6_min" : 0, "key9_modline6_mmcfunction" : "Stop", "key9_modline6_mmcid" : 1, "key9_modline6_note" : 60, "key9_modline6_offset" : 0, "key9_modline6_oscroute" : "None", "key9_modline6_slew" : 0, "key9_modline6_source" : "None", "key9_modline6_table" : "Linear", "key9_modline6_velocity" : 127, "nav_displaymode" : "Always", "nav_modline1_bankmsb" : 0, "nav_modline1_cc" : 71, "nav_modline1_channel" : 9, "nav_modline1_destination" : "CC", "nav_modline1_device" : "SSCOM Port 1", "nav_modline1_displaylinked" : 1, "nav_modline1_enable" : true, "nav_modline1_gain" : 1.0, "nav_modline1_max" : 127, "nav_modline1_min" : 0, "nav_modline1_mmcfunction" : "Stop", "nav_modline1_mmcid" : 1, "nav_modline1_note" : 71, "nav_modline1_offset" : 0, "nav_modline1_oscroute" : "None", "nav_modline1_slew" : 0, "nav_modline1_source" : "None", "nav_modline1_table" : "Linear", "nav_modline1_velocity" : 127, "nav_modline2_bankmsb" : 0, "nav_modline2_cc" : 72, "nav_modline2_channel" : 9, "nav_modline2_destination" : "CC", "nav_modline2_device" : "SSCOM Port 1", "nav_modline2_displaylinked" : 0, "nav_modline2_enable" : true, "nav_modline2_gain" : 1.0, "nav_modline2_max" : 127, "nav_modline2_min" : 0, "nav_modline2_mmcfunction" : "Stop", "nav_modline2_mmcid" : 1, "nav_modline2_note" : 72, "nav_modline2_offset" : 0, "nav_modline2_oscroute" : "None", "nav_modline2_slew" : 0, "nav_modline2_source" : "Nav S Foot On", "nav_modline2_table" : "Linear", "nav_modline2_velocity" : 127, "nav_modline3_bankmsb" : 0, "nav_modline3_cc" : 73, "nav_modline3_channel" : 9, "nav_modline3_destination" : "CC", "nav_modline3_device" : "SSCOM Port 1", "nav_modline3_displaylinked" : 0, "nav_modline3_enable" : false, "nav_modline3_gain" : 1.0, "nav_modline3_max" : 127, "nav_modline3_min" : 0, "nav_modline3_mmcfunction" : "Stop", "nav_modline3_mmcid" : 1, "nav_modline3_note" : 60, "nav_modline3_offset" : 0, "nav_modline3_oscroute" : "None", "nav_modline3_slew" : 0, "nav_modline3_source" : "Nav N Foot On", "nav_modline3_table" : "Linear", "nav_modline3_velocity" : 127, "nav_modline4_bankmsb" : 0, "nav_modline4_cc" : 74, "nav_modline4_channel" : 9, "nav_modline4_destination" : "CC", "nav_modline4_device" : "SSCOM Port 1", "nav_modline4_displaylinked" : 0, "nav_modline4_enable" : false, "nav_modline4_gain" : 1.0, "nav_modline4_max" : 127, "nav_modline4_min" : 0, "nav_modline4_mmcfunction" : "Stop", "nav_modline4_mmcid" : 1, "nav_modline4_note" : 60, "nav_modline4_offset" : 0, "nav_modline4_oscroute" : "None", "nav_modline4_slew" : 0, "nav_modline4_source" : "Nav S Foot On", "nav_modline4_table" : "Linear", "nav_modline4_velocity" : 127, "nav_modline5_bankmsb" : 0, "nav_modline5_cc" : 0, "nav_modline5_channel" : 1, "nav_modline5_destination" : "None", "nav_modline5_device" : "SoftStep Expander", "nav_modline5_displaylinked" : 0, "nav_modline5_enable" : 0, "nav_modline5_gain" : 1.0, "nav_modline5_max" : 127, "nav_modline5_min" : 0, "nav_modline5_mmcfunction" : "Stop", "nav_modline5_mmcid" : 1, "nav_modline5_note" : 60, "nav_modline5_offset" : 0, "nav_modline5_oscroute" : "None", "nav_modline5_slew" : 0, "nav_modline5_source" : "None", "nav_modline5_table" : "Linear", "nav_modline5_velocity" : 127, "nav_modline6_bankmsb" : 0, "nav_modline6_cc" : 0, "nav_modline6_channel" : 1, "nav_modline6_destination" : "None", "nav_modline6_device" : "SoftStep Expander", "nav_modline6_displaylinked" : 0, "nav_modline6_enable" : 0, "nav_modline6_gain" : 1.0, "nav_modline6_max" : 127, "nav_modline6_min" : 0, "nav_modline6_mmcfunction" : "Stop", "nav_modline6_mmcid" : 1, "nav_modline6_note" : 60, "nav_modline6_offset" : 0, "nav_modline6_oscroute" : "None", "nav_modline6_slew" : 0, "nav_modline6_source" : "None", "nav_modline6_table" : "Linear", "nav_modline6_velocity" : 127, "nav_modlinemode" : 0, "nav_name" : "FX", "nav_prefix" : "", "preset_displayname" : "BwFX", "preset_name" : "Bitwig_FX" }
--------------------------------------------------------------------------------
/SoftStep_Bitwig/README.md:
--------------------------------------------------------------------------------
1 | SoftStep_Bitwig
2 | ===============
3 |
4 | Bitwig Script for the KMI Softstep
5 |
6 | Import the Bitwig_Clips.softsteppreset and the Bitwig_FX.softsteppreset into Standalone mode of the Softstep Editor.
7 |
8 | Drop The 'Softstep'folder into the 'ControlSurfaceScripts' folder in the User Control script folder:
9 |
10 | Mac and Linux: ~/Documents/Bitwig Studio/Controller Scripts/
11 |
12 | On Windows: %USERPROFILE%\Documents\Bitwig Studio\Controller Scripts\
13 |
14 | Open Bitwig, and it should autoconnect. if not you can manually select it in the Bitwig Preferences.
15 |
--------------------------------------------------------------------------------
/SoftStep_Bitwig/Softstep/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dataf1ow/KMI_Bitwig_Scripts/ea709ada6dafe49fcb4e516ceb5e4a0472be687e/SoftStep_Bitwig/Softstep/.DS_Store
--------------------------------------------------------------------------------
/SoftStep_Bitwig/Softstep/softstep.control.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
4 |
5 | */
6 |
7 |
8 |
9 | //Load the bitwig API, obviously.
10 | loadAPI(1);
11 |
12 | //Define/set our controller properties [ company, device, version, uuid ]
13 | host.defineController("Keith McMillen Instruments", "SoftStep", "1.0", "FC5AB010-4FEE-11E4-916C-0800200C9A66");
14 | host.defineMidiPorts(1, 1);
15 |
16 | //Define/set input/output port names (both i/o are the same)
17 | var portNames = ["SSCOM Port 1"];
18 | host.addDeviceNameBasedDiscoveryPair(portNames, portNames);
19 | if(host.platformIsLinux())
20 | {
21 | host.addDeviceNameBasedDiscoveryPair(["SSCOM MIDI 1"],["SSCOM MIDI 1"])
22 |
23 | }
24 |
25 | //Loading external Files
26 | load("softstep_functions.js")
27 |
28 | //Declare some global vars for a few of the interface types defined in the API
29 | var application, arranger, mixer, transport;
30 | var HIGHEST_CC = 99;
31 | var LOWEST_CC = 1;
32 | var NUM_TRACKS = 4;
33 | var NUM_SCENES = 2;
34 | var NUM_SENDS = 2;
35 | var hasContent = initArray(0, 8);
36 | var isPlaying = initArray(0, 8);
37 | var isRecording = initArray(0, 8);
38 | var isQueued = initArray(0, 8);
39 | var pendingLEDs = initArray(0, 8);
40 | var currentLEDs = initArray(0,8);
41 | var macroValues = initArray(0, 8);
42 | var selectedTrack = 0;
43 | var canScrollUp = false
44 | var preset = 0 // 0 = clips, 1 = macros
45 | var mode = 1
46 | var scrollUp = 0
47 | var scrollDown = 0
48 | var deviceEnabled = 1
49 | //------------------------------------ Init -----------------------------------//
50 | function init()
51 | {
52 | //-------- Set MIDI callbacks / port
53 | host.getMidiInPort(0).setMidiCallback(onMidi)
54 |
55 | //-------- Note Inputs (see REF below for argument details
56 | noteIn = host.getMidiInPort(0).createNoteInput("SSCOM Port 1", "80????", "90????");
57 |
58 | noteIn.setShouldConsumeEvents(true);
59 |
60 |
61 | userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);
62 |
63 | for(var i=LOWEST_CC; i<=HIGHEST_CC; i++)
64 | {
65 | userControls.getControl(i - LOWEST_CC).setLabel("CC" + i);
66 | }
67 |
68 | //-------- Initialize bitwig interfaces
69 |
70 | application = host.createApplication();
71 | trackBank = host.createTrackBank(NUM_TRACKS, NUM_SENDS, NUM_SCENES);
72 | cursorTrack = host.createCursorTrack(2, NUM_SCENES);
73 | transport = host.createTransport();
74 | arranger = host.createArranger(0);
75 | master = host.createMasterTrack(8);
76 | primaryDevice = cursorTrack.getPrimaryDevice();
77 | cursorDevice = cursorTrack.createCursorDevice('Primary', 2);
78 | deviceBank = cursorTrack.createDeviceBank(4);
79 |
80 |
81 | //println("This is the SoftStep Script")
82 |
83 |
84 | /*deviceBank.addCanScrollUpObserver(function(deviceScroll)
85 | {
86 | println(deviceScroll)
87 | })*/
88 |
89 |
90 | trackBank.addCanScrollScenesUpObserver(function(value)
91 | {
92 | scrollUp = value
93 | if (mode == 1)
94 | {
95 | scrollLEDs()
96 | }
97 | })
98 |
99 | trackBank.addCanScrollScenesDownObserver(function(value)
100 | {
101 | scrollDown = value
102 | if(mode == 1)
103 | {
104 | scrollLEDs()
105 | }
106 | })
107 |
108 | trackBank.addSceneScrollPositionObserver(function(value)
109 | {
110 | //println(value)
111 | }, 0
112 | )
113 |
114 | primaryDevice.addIsEnabledObserver(function(value)
115 | {
116 | deviceEnabled = value
117 | deviceLED()
118 | })
119 |
120 | for (var p = 0; p < 4; p++)
121 | {
122 | var macro = primaryDevice.getMacro(p).getAmount();
123 | macro.addValueObserver(128, makeIndexedFunction(p, function(index, value)
124 | {
125 | macroValues[index] = value;
126 | }
127 | )
128 | )};
129 |
130 | for (var t = 0; t < NUM_TRACKS; t++)
131 | {
132 | var track = trackBank.getTrack(t);
133 | var clipLauncher = track.getClipLauncher();
134 | clipLauncher.setIndication(true);
135 |
136 | clipLauncher.addHasContentObserver(getGridObserverFunc(t, hasContent));
137 | clipLauncher.addIsPlayingObserver(getGridObserverFunc(t, isPlaying));
138 | clipLauncher.addIsRecordingObserver(getGridObserverFunc(t, isRecording));
139 | clipLauncher.addIsQueuedObserver(getGridObserverFunc(t, isQueued));
140 | }
141 |
142 | }
143 |
144 | //--------------------------- MIDI Callbacks / Port ---------------------------//
145 | function onMidi(status, data1, data2)
146 | {
147 | //println("Port 1 [status, data1, data2]: " + status + ", " + data1 + ", " + data2);
148 |
149 |
150 | if(status == 233)
151 | {
152 | //println("pitchBend" + " " + data1 + " " + data2)
153 |
154 | }else if(status == 145){
155 |
156 | //println("Notes" + " " + data1 + " " + data2)
157 | launchClipSlots(data1, data2);
158 | scrollTrackBank(data1, data2);
159 | //launchScenes(data1, data2);
160 | stopClips(data1, data2);
161 | deleteClips(data1, data2);
162 | if (data1 == 127)
163 | {
164 | mode = 2
165 | //println("FX Page")
166 | clearLEDs()
167 | trackLED()
168 | deviceLED()
169 | }
170 | if (data1 == 126)
171 | {
172 | mode = 1
173 | //println("Clip Page")
174 | clearLEDs()
175 | sendClipLEDs()
176 | scrollLEDs()
177 | }
178 |
179 | }else if (status == 185){
180 |
181 | //println("CC" + " " + data1 + " " + data2)
182 |
183 | }
184 |
185 |
186 | if (isChannelController(status))
187 | {
188 | if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC)
189 | {
190 | var index = data1 - LOWEST_CC;
191 | userControls.getControl(index).set(data2, 128);
192 | }
193 |
194 | if (data1 >= 100 && data1 < 104)
195 | {
196 | macroControl(data1, data2)
197 | }
198 |
199 | if (data1 >= 104 && data1 < 108 && data2 > 0)
200 | {
201 | trackSelect(data1,data2)
202 | }
203 |
204 | if (data1 == 108 && data2 > 0)
205 | {
206 | deviceOn()
207 | }
208 |
209 | if (data1 == 109)
210 | {
211 | deviceNavigation(data1,data2)
212 | }
213 | }
214 |
215 |
216 | }
217 |
218 |
219 |
220 | function exit()
221 | {
222 | println("exit.");
223 | }
224 |
225 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
226 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
227 | //////////////////////////////////////////////////////////////// REF ////////////////////////////////////////////////////////////////
228 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
229 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
230 |
231 | //--------------------- Note Input Filters
232 |
233 | // These filters args are used in the createNoteInput method/function for a midi input port [ see init() ].
234 |
235 | // See http://www.midi.org/techspecs/midimessages.php for midi message types.
236 |
237 | // Studying up on hexadecimal could be helpful also if it's new to you.
238 |
239 |
240 | //---- Note Off
241 | // "80????" - Sees all note offs on channel 1
242 | // "8?????" - Sees all note offs on any channel
243 |
244 | //---- Note On
245 | // "90????" - Sees all note ons on channel 1
246 | // "9?????" - Sees all note offs on any channel
247 | // "90607F" - Sees all note number 60s with a velocity of 127 (this is a very specific filter)
248 |
249 | //---- Polyphonic Aftertouch
250 | // "A0????" - Sees all note ons on channel 1
251 | // "A?????" - Sees all note offs on any channel
252 |
253 | //---- Controller Messages
254 | // "B0????" - Sees all cc messages on channel 1
255 | // "B?????" - Sees all cc messages on all channels
256 |
257 | //---- Program Changes
258 | // "C0????" - Sees all pgm changes on channel 1
259 | // "C?????" - Sees all pgm changes on all channels
260 |
261 | //---- Channel Aftertouch
262 | // "D0????" - Sees all ch. aftertouch on channel 1
263 | // "D?????" - Sees all ch. aftertouch on all channels
264 |
265 | //---- Pitch Wheel
266 | // "E0????" - Sees all ch. aftertouch on channel 1
267 | // "E?????" - Sees all ch. aftertouch on all channels
268 | // "E???00" - Sees all ch. aftertouch on all channels with an MSB of zero
269 | // "E?00??" - Sees all ch. aftertouch on all channels with an LSB of zero
270 |
271 | //---- SysEx start/end, esoteric MIDI mysticism (wouldn't use these filters unless your traversing some kind of musical 3-byte worm hole)
272 | //---- For sysex, just use the callbacks defined above
273 | // "F0????" - Sees all ch. aftertouch on channel 1
274 | // "D?????" - Sees all ch. aftertouch on all channels
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
--------------------------------------------------------------------------------
/SoftStep_Bitwig/Softstep/softstep_functions.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Sofstep Controller Functions
4 |
5 | Copyright 2014 Evan Bogunia_____evanbeta@keithmcmillen.com
6 |
7 | */
8 |
9 | var stopAll = 0;
10 | var device_select_state = 1;
11 | var selectedTrack = 0;
12 | var rate = 50;
13 | var padValue = 64;
14 | //var mode = 'clip'
15 |
16 | function trackSelect(data1, data2)
17 | {
18 | thisTrack = trackBank.getTrack(data1 - 104)
19 | thisTrack.selectInMixer()
20 | selectedTrack = data1 - 104
21 | trackLED()
22 | }
23 |
24 | function trackLED()
25 | {
26 | for (i = 0; i < 4; i ++)
27 | {
28 | if (i == selectedTrack)
29 | {
30 | sendMidi(176, 110 + i, 1)
31 | }else{
32 | sendMidi(176, 110 + i, 0)
33 | }
34 | }
35 | }
36 |
37 | function deviceLED()
38 | {
39 | if (deviceEnabled == 1)
40 | {
41 | sendMidi(176, 119, 1)
42 | sendMidi(176, 29, 0)
43 | }else{
44 | sendMidi(176, 119, 0)
45 | sendMidi(176, 29, 1)
46 | }
47 | }
48 |
49 | function macroInc(data1){
50 | primaryDevice.getMacro(data1-100).getAmount().inc(1,128)
51 | if (padValue > 64){
52 | host.scheduleTask(macroInc, [data1], rate)
53 | }
54 | }
55 |
56 | function macroDec(data1){
57 | primaryDevice.getMacro(data1-100).getAmount().inc(-1,128)
58 | if (padValue < 64){
59 | host.scheduleTask(macroDec, [data1], rate)
60 | }
61 | }
62 |
63 | function macroControl(data1, data2)
64 | {
65 | //rate = rate/(Math.abs(data2 - 64)/32))
66 | padValue = data2;
67 | if(data2 > 64){
68 | host.scheduleTask(macroInc,[data1], rate)
69 | }
70 | else if(data2<64){
71 | host.scheduleTask(macroDec,[data1], rate)
72 | }
73 |
74 |
75 | }
76 |
77 | function deviceOn()
78 | {
79 | primaryDevice.toggleEnabledState()
80 | }
81 |
82 | function deviceNavigation(data1, data2)
83 | {
84 | if (device_select_state = 1)
85 | {
86 | if (data2 > 64)
87 | {
88 | primaryDevice.switchToDevice(DeviceType.ANY, ChainLocation.NEXT)
89 | device_select_state = 0
90 | }
91 | if (data2 < 64)
92 | {
93 | primaryDevice.switchToDevice(DeviceType.ANY, ChainLocation.PREVIOUS)
94 | device_select_state = 0
95 | }
96 | }
97 | if (data2 == 64)
98 | device_select_state = 1
99 | }
100 |
101 | function launchClipSlots(data1, data2)
102 | {
103 | if (data1 < 8 && data2 == 127)
104 | {
105 | trackBank.getTrack((data1)/2).getClipLauncher().launch(data1 % 2);
106 | }
107 | }
108 |
109 | function stopClips(data1, data2)
110 | {
111 | if (data1 >= 8 && data1 < 16 && data2 == 127)
112 | {
113 | clip = data1 - 8
114 | trackBank.getTrack((clip)/2).stop();
115 | }
116 | }
117 |
118 | function deleteClips(data1, data2)
119 | {
120 | if (data1 >= 16 && data1 < 24 && data2 == 127)
121 | {
122 | clip = data1 - 16
123 | trackBank.getTrack((clip)/2).getClipLauncher().deleteClip(clip % 2);
124 | }
125 | }
126 |
127 | function launchScenes(data1, data2)
128 | {
129 | if (data1 == 10 && data2 ==127)
130 | {
131 | trackBank.launchScene(0)
132 | }
133 | if (data1 == 11 && data2 == 127)
134 | {
135 | trackBank.launchScene(1)
136 | }
137 |
138 | }
139 |
140 | function getGridObserverFunc(track, varToStore)
141 | {
142 | return function(scene, value)
143 | {
144 | varToStore[scene*4 + track] = value;
145 | LED()
146 | }
147 | }
148 |
149 | function scrollTrackBank(data1, data2)
150 | {
151 | if (data1 == 24 && data2 == 127)
152 | {
153 | trackBank.scrollScenesUp()
154 |
155 | }else if (data1 == 25 && data2 == 127)
156 | {
157 | trackBank.scrollScenesDown()
158 | }else if (data1 == 26 && data2 == 127)
159 | {
160 | for(i = 0; i < 4; i ++)
161 | {
162 | trackBank.getTrack(i).stop();
163 | }
164 | }
165 |
166 | }
167 |
168 | function scrollLEDs()
169 | {
170 | if (scrollUp == true)
171 | {
172 | sendMidi(176, 119, 1)
173 | sendMidi(176, 29, 0)
174 | }else
175 | {
176 | sendMidi(176, 29, 1)
177 | sendMidi(176, 119, 2)
178 | }
179 | if (scrollDown == true)
180 | {
181 | sendMidi(176, 114, 1)
182 | sendMidi(176, 24, 0)
183 | }else
184 | {
185 | sendMidi(176, 114, 0)
186 | sendMidi(176, 24, 1)
187 | }
188 |
189 | }
190 |
191 |
192 | function contentLED()
193 | {
194 | for(i = 0; i < 8; i++){
195 | if (hasContent[i] == true){
196 | pendingLEDs[i] = 1 //Has Content
197 | }else if (hasContent[i] == false){
198 | pendingLEDs[i] = 0
199 | }
200 | }
201 |
202 | }
203 |
204 |
205 | function playingLED()
206 | {
207 | for(i = 0; i < 8; i++){
208 | if (isPlaying[i] == true){
209 | pendingLEDs[i] = 2 //Is Playing
210 | }
211 | }
212 | }
213 |
214 | function recordingLED()
215 | {
216 | for (i = 0 ; i <8; i ++){
217 | if (isRecording[i] == true){
218 | pendingLEDs[i] = 3 //Is Recording
219 | }
220 | }
221 |
222 | }
223 |
224 |
225 | function clipUpdate()
226 | {
227 | for(i = 0; i < 8; i ++)
228 | {
229 | if (pendingLEDs[i] != currentLEDs[i]){
230 | currentLEDs[i] = pendingLEDs[i]
231 | sendClipLEDs(i)
232 | }
233 | }
234 | }
235 |
236 | function LED()
237 | {
238 | if (mode == 1)
239 | {
240 | contentLED();
241 | playingLED();
242 | recordingLED();
243 | clipUpdate();
244 | }
245 | if (mode == 2)
246 | {
247 |
248 | }
249 | }
250 |
251 | function clearLEDs()
252 | {
253 | for (i=20; i <= 30; i ++)
254 | {
255 | sendMidi(176, i, 0)
256 | sendMidi(176, (i + 90), 0)
257 | }
258 | if (mode == 1)
259 | {
260 | for(i = 0; i < 8; i ++)
261 | {
262 | sendClipLEDs(i)
263 | }
264 | }
265 | }
266 |
267 |
268 | function sendClipLEDs(index){
269 | switch(index){
270 | case 4:
271 | if(currentLEDs[index] == 0){
272 | sendMidi(176, 25, 0)
273 | sendMidi(176, 115, 0)
274 |
275 | }else if (currentLEDs[index] == 1){
276 | sendMidi(176, 25, 2)
277 | sendMidi(176, 115, 2)
278 |
279 | }else if (currentLEDs[index] == 2){
280 | sendMidi(176, 25, 0)
281 | sendMidi(176, 115, 3)
282 | }else if (currentLEDs[index] == 3){
283 | sendMidi(176, 25, 3)
284 | sendMidi(176, 115, 0)
285 | }
286 | break;
287 | case 5:
288 | if(currentLEDs[index] == 0){
289 | sendMidi(176, 26, 0)
290 | sendMidi(176, 116, 0)
291 |
292 | }else if (currentLEDs[index] == 1){
293 | sendMidi(176, 26, 2)
294 | sendMidi(176, 116, 2)
295 |
296 | }else if (currentLEDs[index] == 2){
297 | sendMidi(176, 26, 0)
298 | sendMidi(176, 116, 3)
299 | }else if (currentLEDs[index] == 3){
300 | sendMidi(176, 26, 3)
301 | sendMidi(176, 116, 0)
302 | }
303 | break;
304 | case 6:
305 | if(currentLEDs[index] == 0){
306 | sendMidi(176, 27, 0)
307 | sendMidi(176, 117, 0)
308 |
309 | }else if (currentLEDs[index] == 1){
310 | sendMidi(176, 27, 2)
311 | sendMidi(176, 117, 2)
312 |
313 | }else if (currentLEDs[index] == 2){
314 | sendMidi(176, 27, 0)
315 | sendMidi(176, 117, 3)
316 | }else if (currentLEDs[index] == 3){
317 | sendMidi(176, 27, 3)
318 | sendMidi(176, 117, 0)
319 | }
320 | break;
321 | case 7:
322 | if(currentLEDs[index] == 0){
323 | sendMidi(176, 28, 0)
324 | sendMidi(176, 118, 0)
325 |
326 | }else if (currentLEDs[index] == 1){
327 | sendMidi(176, 28, 2)
328 | sendMidi(176, 118, 2)
329 |
330 | }else if (currentLEDs[index] == 2){
331 | sendMidi(176, 28, 0)
332 | sendMidi(176, 118, 3)
333 | }else if (currentLEDs[index] == 3){
334 | sendMidi(176, 28, 3)
335 | sendMidi(176, 118, 0)
336 | }
337 | break;
338 | case 0:
339 | if(currentLEDs[index] == 0){
340 | sendMidi(176, 20, 0)
341 | sendMidi(176, 110, 0)
342 |
343 | }else if (currentLEDs[index] == 1){
344 | sendMidi(176, 20, 2)
345 | sendMidi(176, 110, 2)
346 |
347 | }else if (currentLEDs[index] == 2){
348 | sendMidi(176, 20, 0)
349 | sendMidi(176, 110, 3)
350 | }else if (currentLEDs[index] == 3){
351 | sendMidi(176, 20, 3)
352 | sendMidi(176, 110, 0)
353 | }
354 | break;
355 | case 1:
356 | if(currentLEDs[index] == 0){
357 | sendMidi(176, 21, 0)
358 | sendMidi(176, 111, 0)
359 |
360 | }else if (currentLEDs[index] == 1){
361 | sendMidi(176, 21, 2)
362 | sendMidi(176, 111, 2)
363 |
364 | }else if (currentLEDs[index] == 2){
365 | sendMidi(176, 21, 0)
366 | sendMidi(176, 111, 3)
367 | }else if (currentLEDs[index] == 3){
368 | sendMidi(176, 21, 3)
369 | sendMidi(176, 111, 0)
370 | }
371 | break;
372 | case 2:
373 | if(currentLEDs[index] == 0){
374 | sendMidi(176, 22, 0)
375 | sendMidi(176, 112, 0)
376 |
377 | }else if (currentLEDs[index] == 1){
378 | sendMidi(176, 22, 2)
379 | sendMidi(176, 112, 2)
380 |
381 | }else if (currentLEDs[index] == 2){
382 | sendMidi(176, 22, 0)
383 | sendMidi(176, 112, 3)
384 | }else if (currentLEDs[index] == 3){
385 | sendMidi(176, 22, 3)
386 | sendMidi(176, 112, 0)
387 | }
388 | break;
389 | case 3:
390 | if(currentLEDs[index] == 0){
391 | sendMidi(176, 23, 0)
392 | sendMidi(176, 113, 0)
393 |
394 | }else if (currentLEDs[index] == 1){
395 | sendMidi(176, 23, 2)
396 | sendMidi(176, 113, 2)
397 |
398 | }else if (currentLEDs[index] == 2){
399 | sendMidi(176, 23, 0)
400 | sendMidi(176, 113, 3)
401 | }else if (currentLEDs[index] == 3){
402 | sendMidi(176, 23, 3)
403 | sendMidi(176, 113, 0)
404 | }
405 | break;
406 | }
407 | }
--------------------------------------------------------------------------------