VERSION 1 # Currently, this should only be 1.
# Supports all alphanumeric ASCII, and ' ', '_', '-', '+' - can also be NULL
TRACKNAME SP16
# Can be POLY, DRUM, MPE, or NULL
TYPE DRUM
# Can be A, B, C, D, USBD, USBH, CVGx (x between 1&4), CVx, Gx, or NULL
OUTPORT NULL
# Can be x (between 1-16), or NULL -- this is ignored if output port is not MIDI
OUTCHAN NULL
# Can be NONE, ALLACTIVE, A, B, USBH, USBD, CVG, or NULL
INPORT NULL
# Can be x (between 1-16), ALL, or NULL. This definition will be ignored if INPORT is NONE, ALLACTIVE or CVG
INCHAN NULL
# This defines the default 'MAX RATE' for automation lanes.
# Can be NULL, 192, 96, 64, 48, 32, 24, 16, 12, 8, 6, 4, 3, 2, 1
MAXRATE NULL
# DRUMLANES
# Syntax: ROW:TRIG:CHAN:NOTENUMBER NAME
[DRUMLANES]
1:0:1:48 TRACK01
2:1:2:48 TRACK02
3:2:3:48 TRACK03
4:3:4:48 TRACK04
5:4:5:48 TRACK05
6:5:6:48 TRACK07
7:6:7:48 TRACK08
8:7:8:48 TRACK08
# 9:8:9:48 TRACK09
# 10:9:10:48 TRACK10
# 11:10:11:48 TRACK11
# 12:11:12:48 TRACK12
# 13:12:13:48 TRACK13
# 14:13:14:48 TRACK14
# 15:14:15:48 TRACK15
# 16:15:16:48 TRACK16
[/DRUMLANES]
# PC
# Three numbers, delimited by ':', which represent PC:MSB:LSB.
# PC must be between 1...128
# MSB/LSB must be between 0...127
[PC]
1:0:0 SCN_01-PAT_01
1:0:1 SCN_01-PAT_02
1:0:2 SCN_01-PAT_03
1:0:3 SCN_01-PAT_04
1:0:4 SCN_01-PAT_05
1:0:5 SCN_01-PAT_06
1:0:6 SCN_01-PAT_07
1:0:7 SCN_01-PAT_08
1:0:8 SCN_01-PAT_09
1:0:9 SCN_01-PAT_10
1:0:10 SCN_01-PAT_11
1:0:11 SCN_01-PAT_12
1:0:12 SCN_01-PAT_13
1:0:13 SCN_01-PAT_14
1:0:14 SCN_01-PAT_15
1:0:15 SCN_01-PAT_16
2:1:0 SCN_02-PAT_01
2:1:1 SCN_02-PAT_02
2:1:2 SCN_02-PAT_03
2:1:3 SCN_02-PAT_04
2:1:4 SCN_02-PAT_05
2:1:5 SCN_02-PAT_06
2:1:6 SCN_02-PAT_07
2:1:7 SCN_02-PAT_08
2:1:8 SCN_02-PAT_09
2:1:9 SCN_02-PAT_10
2:1:10 SCN_02-PAT_11
2:1:11 SCN_02-PAT_12
2:1:12 SCN_02-PAT_13
2:1:13 SCN_02-PAT_14
2:1:14 SCN_02-PAT_15
2:1:15 SCN_02-PAT_16
3:2:0 SCN_03-PAT_01
3:2:1 SCN_03-PAT_02
3:2:2 SCN_03-PAT_03
3:2:3 SCN_03-PAT_04
3:2:4 SCN_03-PAT_05
3:2:5 SCN_03-PAT_06
3:2:6 SCN_03-PAT_07
3:2:7 SCN_03-PAT_08
3:2:8 SCN_03-PAT_09
3:2:9 SCN_03-PAT_10
3:2:10 SCN_03-PAT_11
3:2:11 SCN_03-PAT_12
3:2:12 SCN_03-PAT_13
3:2:13 SCN_03-PAT_14
3:2:14 SCN_03-PAT_15
3:2:15 SCN_03-PAT_16
4:3:0 SCN_04-PAT_01
4:3:1 SCN_04-PAT_02
4:3:2 SCN_04-PAT_03
4:3:3 SCN_04-PAT_04
4:3:4 SCN_04-PAT_05
4:3:5 SCN_04-PAT_06
4:3:6 SCN_04-PAT_07
4:3:7 SCN_04-PAT_08
4:3:8 SCN_04-PAT_09
4:3:9 SCN_04-PAT_10
4:3:10 SCN_04-PAT_11
4:3:11 SCN_04-PAT_12
4:3:12 SCN_04-PAT_13
4:3:13 SCN_04-PAT_14
4:3:14 SCN_04-PAT_15
4:3:15 SCN_04-PAT_16
5:4:0 SCN_05-PAT_01
5:4:1 SCN_05-PAT_02
5:4:2 SCN_05-PAT_03
5:4:3 SCN_05-PAT_04
5:4:4 SCN_05-PAT_05
5:4:5 SCN_05-PAT_06
5:4:6 SCN_05-PAT_07
5:4:7 SCN_05-PAT_08
5:4:8 SCN_05-PAT_09
5:4:9 SCN_05-PAT_10
5:4:10 SCN_05-PAT_11
5:4:11 SCN_05-PAT_12
5:4:12 SCN_05-PAT_13
5:4:13 SCN_05-PAT_14
5:4:14 SCN_05-PAT_15
5:4:15 SCN_05-PAT_16
6:5:0 SCN_06-PAT_01
6:5:1 SCN_06-PAT_02
6:5:2 SCN_06-PAT_03
6:5:3 SCN_06-PAT_04
6:5:4 SCN_06-PAT_05
6:5:5 SCN_06-PAT_06
6:5:6 SCN_06-PAT_07
6:5:7 SCN_06-PAT_08
6:5:8 SCN_06-PAT_09
6:5:9 SCN_06-PAT_10
6:5:10 SCN_06-PAT_11
6:5:11 SCN_06-PAT_12
6:5:12 SCN_06-PAT_13
6:5:13 SCN_06-PAT_14
6:5:14 SCN_06-PAT_15
6:5:15 SCN_06-PAT_16
7:6:0 SCN_07-PAT_01
7:6:1 SCN_07-PAT_02
7:6:2 SCN_07-PAT_03
7:6:3 SCN_07-PAT_04
7:6:4 SCN_07-PAT_05
7:6:5 SCN_07-PAT_06
7:6:6 SCN_07-PAT_07
7:6:7 SCN_07-PAT_08
7:6:8 SCN_07-PAT_09
7:6:9 SCN_07-PAT_10
7:6:10 SCN_07-PAT_11
7:6:11 SCN_07-PAT_12
7:6:12 SCN_07-PAT_13
7:6:13 SCN_07-PAT_14
7:6:14 SCN_07-PAT_15
7:6:15 SCN_07-PAT_16
8:7:0 SCN_08-PAT_01
8:7:1 SCN_08-PAT_02
8:7:2 SCN_08-PAT_03
8:7:3 SCN_08-PAT_04
8:7:4 SCN_08-PAT_05
8:7:5 SCN_08-PAT_06
8:7:6 SCN_08-PAT_07
8:7:7 SCN_08-PAT_08
8:7:8 SCN_08-PAT_09
8:7:9 SCN_08-PAT_10
8:7:10 SCN_08-PAT_11
8:7:11 SCN_08-PAT_12
8:7:12 SCN_08-PAT_13
8:7:13 SCN_08-PAT_14
8:7:14 SCN_08-PAT_15
8:7:15 SCN_08-PAT_16
9:8:0 SCN_09-PAT_01
9:8:1 SCN_09-PAT_02
9:8:2 SCN_09-PAT_03
9:8:3 SCN_09-PAT_04
9:8:4 SCN_09-PAT_05
9:8:5 SCN_09-PAT_06
9:8:6 SCN_09-PAT_07
9:8:7 SCN_09-PAT_08
9:8:8 SCN_09-PAT_09
9:8:9 SCN_09-PAT_10
9:8:10 SCN_09-PAT_11
9:8:11 SCN_09-PAT_12
9:8:12 SCN_09-PAT_13
9:8:13 SCN_09-PAT_14
9:8:14 SCN_09-PAT_15
9:8:15 SCN_09-PAT_16
10:9:0 SCN_10-PAT_01
10:9:1 SCN_10-PAT_02
10:9:2 SCN_10-PAT_03
10:9:3 SCN_10-PAT_04
10:9:4 SCN_10-PAT_05
10:9:5 SCN_10-PAT_06
10:9:6 SCN_10-PAT_07
10:9:7 SCN_10-PAT_08
10:9:8 SCN_10-PAT_09
10:9:9 SCN_10-PAT_10
10:9:10 SCN_10-PAT_11
10:9:11 SCN_10-PAT_12
10:9:12 SCN_10-PAT_13
10:9:13 SCN_10-PAT_14
10:9:14 SCN_10-PAT_15
10:9:15 SCN_10-PAT_16
11:10:0 SCN_11-PAT_01
11:10:1 SCN_11-PAT_02
11:10:2 SCN_11-PAT_03
11:10:3 SCN_11-PAT_04
11:10:4 SCN_11-PAT_05
11:10:5 SCN_11-PAT_06
11:10:6 SCN_11-PAT_07
11:10:7 SCN_11-PAT_08
11:10:8 SCN_11-PAT_09
11:10:9 SCN_11-PAT_10
11:10:10 SCN_11-PAT_11
11:10:11 SCN_11-PAT_12
11:10:12 SCN_11-PAT_13
11:10:13 SCN_11-PAT_14
11:10:14 SCN_11-PAT_15
11:10:15 SCN_11-PAT_16
12:11:0 SCN_12-PAT_01
12:11:1 SCN_12-PAT_02
12:11:2 SCN_12-PAT_03
12:11:3 SCN_12-PAT_04
12:11:4 SCN_12-PAT_05
12:11:5 SCN_12-PAT_06
12:11:6 SCN_12-PAT_07
12:11:7 SCN_12-PAT_08
12:11:8 SCN_12-PAT_09
12:11:9 SCN_12-PAT_10
12:11:10 SCN_12-PAT_11
12:11:11 SCN_12-PAT_12
12:11:12 SCN_12-PAT_13
12:11:13 SCN_12-PAT_14
12:11:14 SCN_12-PAT_15
12:11:15 SCN_12-PAT_16
13:12:0 SCN_13-PAT_01
13:12:1 SCN_13-PAT_02
13:12:2 SCN_13-PAT_03
13:12:3 SCN_13-PAT_04
13:12:4 SCN_13-PAT_05
13:12:5 SCN_13-PAT_06
13:12:6 SCN_13-PAT_07
13:12:7 SCN_13-PAT_08
13:12:8 SCN_13-PAT_09
13:12:9 SCN_13-PAT_10
13:12:10 SCN_13-PAT_11
13:12:11 SCN_13-PAT_12
13:12:12 SCN_13-PAT_13
13:12:13 SCN_13-PAT_14
13:12:14 SCN_13-PAT_15
13:12:15 SCN_13-PAT_16
14:13:0 SCN_14-PAT_01
14:13:1 SCN_14-PAT_02
14:13:2 SCN_14-PAT_03
14:13:3 SCN_14-PAT_04
14:13:4 SCN_14-PAT_05
14:13:5 SCN_14-PAT_06
14:13:6 SCN_14-PAT_07
14:13:7 SCN_14-PAT_08
14:13:8 SCN_14-PAT_09
14:13:9 SCN_14-PAT_10
14:13:10 SCN_14-PAT_11
14:13:11 SCN_14-PAT_12
14:13:12 SCN_14-PAT_14
14:13:13 SCN_14-PAT_14
14:13:14 SCN_14-PAT_15
14:13:15 SCN_14-PAT_16
15:14:0 SCN_15-PAT_01
15:14:1 SCN_15-PAT_02
15:14:2 SCN_15-PAT_03
15:14:3 SCN_15-PAT_04
15:14:4 SCN_15-PAT_05
15:14:5 SCN_15-PAT_06
15:14:6 SCN_15-PAT_07
15:14:7 SCN_15-PAT_08
15:14:8 SCN_15-PAT_09
15:14:9 SCN_15-PAT_10
15:14:10 SCN_15-PAT_11
15:14:11 SCN_15-PAT_12
15:14:12 SCN_15-PAT_13
15:14:13 SCN_15-PAT_14
15:14:14 SCN_15-PAT_15
15:14:15 SCN_15-PAT_16
16:15:0 SCN_16-PAT_01
16:15:1 SCN_16-PAT_02
16:15:2 SCN_16-PAT_03
16:15:3 SCN_16-PAT_04
16:15:4 SCN_16-PAT_05
16:15:5 SCN_16-PAT_06
16:15:6 SCN_16-PAT_07
16:15:7 SCN_16-PAT_08
16:15:8 SCN_16-PAT_09
16:15:9 SCN_16-PAT_10
16:15:10 SCN_16-PAT_11
16:15:11 SCN_16-PAT_12
16:15:12 SCN_16-PAT_13
16:15:13 SCN_16-PAT_14
16:15:14 SCN_16-PAT_15
16:15:15 SCN_16-PAT_16
[/PC]
# CC
# Syntax: CC_NUMBER:DEFAULT=xx NAME
# DEFAULT_VALUE must be a valid number between 0 and 127
[CC]
7:DEFAULT=100 VOL
10:DEFAULT=64 PAN
14:DEFAULT=0 TIME STRETCH # OFF
15:DEFAULT=0 LOOP_MOD # OFF
16:DEFAULT=0 TRIG_MOD # ONE SHOT
17:DEFAULT=0 SEND_AMNT
18:DEFAULT=0 MUTE_TRACK
20:DEFAULT=64 PITCH
21:DEFAULT=0 START
22:DEFAULT=0 LOOPSTART
23 LENGTH
26:DEFAULT=127 VELOCITY # 127
27:DEFAULT=0 ATTACK # 0
28:DEFAULT=127 HOLD # INF
29:DEFAULT=0 RELEASE #0
46 FX1_P1
47 FX1_P2
48 FX1_P3
49 FX1_P4
50 FX1_P5
51:DEFAULT=0 FX1_AMNT
63 FX2_P1
64 FX2_P2
65 FX2_P3
66 FX2_P4
67 FX2_P5
68:DEFAULT=0 FX2_AMNT
54:DEFAULT=64 OFFSET SEQ # 0
55:DEFAULT=0 RETRIG COUNT # 1
56:DEFAULT=43 RETRIG SPEED # 1/16T
60:DEFAULT=0 LFO_SPD # 1
61:DEFAULT=0 LFO_DEP # 0
62:DEFAULT=0 LFO_OFF # 0
[/CC]
# ASSIGN
# Syntax: POT_NUMBER TYPE:VALUE or POT_NUMBER TYPE:VALUE DEFAULT=DEFAULT_VALUE
# POT_NUMBER must be between 1 and 8
# TYPE can be "CC", "PB" (pitchbend), "AT" (aftertouch), "CV", "NRPN", or "NULL" (this won't assign the pot).
[ASSIGN]
1 CC:63 # FX2_P1
2 CC:64 # FX2_P2
3 CC:64 # FX2_P3
4 CC:66 # FX2_P4
5 CC:67 # FX2_P5
6 CC:68 DEFAULT=0 # FX2_AMNT
7 CC:60 DEFAULT=0 # LFO_SPD
8 CC:61 DEFAULT=64 # LFO_DEP
[/ASSIGN]
# AUTOMATION
# Syntax: TYPE:VALUE
# TYPE can be "CC", "PB" (pitchbend), "AT" (aftertouch), "CV", or "NRPN"
[AUTOMATION]
CC:7 # VOLUME
CC:10 # PAN
CC:17 # SEND_AMNT
CC:18 # MUTE
CC:20 # PITCH
CC:21 # START
CC:22 # LOOPSTART
CC:23 # LENGTH
CC:26 # VELOCITY
CC:27 # ATTACK
CC:28 # HOLD
CC:29 # RELEASE
CC:46 # FX1_P1
CC:47 # FX1_P2
CC:48 # FX1_P3
CC:49 # FX1_P4
CC:50 # FX1_P5
CC:51 # FX1_AMNT
CC:63 # FX2_P1
CC:64 # FX2_P2
CC:65 # FX2_P3
CC:66 # FX2_P4
CC:67 # FX2_P5
CC:68 # FX2_AMNT
CC:54 # OFFSET
CC:55 # RETRG CNT
CC:56 # RETRG SPD
CC:60 # LFO SPEED
CC:61 # LFO DEPTH
CC:62 # PHASE OFFSET
[/AUTOMATION]
# This section will be readable from Hapax.
[COMMENT]
SP16 TRKS 1-8
[/COMMENT]
Nice one! I recently picked up a SP-16 and planned on making one. I’ll try it out.
I did figure out that you can map velocity to CC21 (playback start point) on the hapax to sequence slices on the SP. Not at all intuitive but at least doable.
https://gearspace.com/board/showpost.php?p=17413818&postcount=5272
the complete lack of direct midi mappability of the 16 possible pads each with a single slice assigned to it on a sampler designed by Dave Smith and the engineers at Pioneer DJ/TORAIZ is one of the great criminal oversites in the groovebox/workstation world. your technique of using CC 21 to mimic slices on one shot samples (or CC 22 if the sample is a loop) is a solid one.
it can be frustrating though because the super convenient auto-slices of the sp-16 and using CC 21 triggered slices based on the absolute sample position relative to where each 1/16th slice (each pad) falls on the 0-127 range (basically), are two completely different ‘things’. both have their merits but the lack of external control of the native slices is just a giant ‘ugh’. to avoid obsessing over slicing/sequencing externally, on the sp-16 i’ll assign START as the LFO target for the track in question and then use HAPAX to automate the LFO Speed (CC 60), LFO Depth (CC 61), Phase (CC 62) - and to make things more interesting use CC 55 and CC 56 slightly (re-trigger amount and re-trigger speed with SYNC on) - which gives you significantly more control (or totally randomizes) how start point is triggered. one nice thing about external control of the LFO is that you can watch the LFO wave being shaped by the automations, something that doesn’t happen naively only using the sp-16 and parameter locks.
anyway, let me know how this definition works out for you and if you have suggestions - there’s no doubt a variety of equivalent (or more elegant) approaches to some of what’s in my definition. in opractive i tend to you use two versions of this drum track definition (tracks 1-8, 9-16 on Hapax track one and two) and then i have a non-drum mode version focused on a single sp-16 sample/track (eg. track three on Hapax) which can act kind of like a mono synth and harness all the other powerful abilities of the Hapax.