Instrument definition: Elektron Analog Four

Hi!

Here’s an instrument definition file for the Elektron Analog Four.

Contains a selection of CC’s, the same CC’s assigned as AUTOMATION lanes, Filters & 3 performance controls assigned to ASSIGN menu.

Just change MIDI channels appropriately for channels 1–4 in your default project file.

Any mistakes, let me know!

VERSION 1 # Currently, this should only be 1.

# Supports all alphanumeric ASCII, and ' ', '_', '-', '+' - can also be NULL
TRACKNAME A4

# Can be POLY, DRUM, MPE, or NULL
TYPE POLY

# Can be A, B, C, D, USBD, USBH, CVGx (x between 1&4), CVx, Gx, or NULL
OUTPORT A

# Can be x (between 1-16), or NULL -- this is ignored if output port is not MIDI
OUTCHAN 1

# 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

# DRUMLANES
# Syntax: ROW:TRIG:CHAN:NOTENUMBER NAME
# ROW must be between 1 and 8
# TRIG can be between 0 and 127, or NULL
# CHAN can be a number between 1 and 16, Gx, CVx, CVGx (x between 1 and 4), or NULL
# NOTENUMBER can be between 0 and 127, or NULL
# NAME supports all alphanumeric ASCII, and ' ', '_', '-', '+' - can also be NULL
# Please note this section will be discarded for tracks which are not DRUM tracks
[DRUMLANES]
[/DRUMLANES]

# PC
# Syntax: NUMBER NAME
# number must be either:
#   - A number (for simple PC)
#   - Three numbers, delimited by ':', which represent PC:MSB:LSB. You can put 'NULL' to not set the MSB/LSB.
# PC must be between 1...128
# MSB/LSB must be between 0...127
[PC]
[/PC]

# CC
# Syntax: CC_NUMBER NAME or CC_NUMBER:DEFAULT=xx NAME
# DEFAULT_VALUE must be a valid number between 0 and 127
[CC]
18 F1 FREQ
89 F1 RESO
86 F1 OD
19 F2 FREQ
90 F2 RESO
3 PERF A
4 PERF B
8 PERF C
9 PERF D
11 PERF E
64 PERF F
65 PERF G
66 PERF H
67 PERF I
68 PERF J
95 TRACK LEVEL
70 OSC 1 WAVE
72 OSC 1 PW
77 NOISE LVL
79 OSC 2 WAVE
81 OSC 2 PW
84 SYNC AMT
85 BEND AMT
5 SLIDE TIME
88 VIB SPD
104 ENVA A
105 ENVA D
106 ENVA S
107 ENVA R
91 CHORUS SND
92 DEL SND
93 REVERB SND
[/CC]

# NRPN
# Syntax: "MSB:LSB:DEPTH NAME" or "MSB:LSB:DEPTH:DEFAULT=xx NAME"
# Lsb & msb should be between 0 and 127
# DEPTH can be 7 or 14
# For NRPN: DEFAULT_VALUE must be a valid number, either between 0 and 127 (for 7 bit NRPNs) or between 0 and 16383 (for 14bit NRPNs)
[NRPN]
[/NRPN]

# 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).
# Non explicitly-defined pots will be considered "NULL"
# VALUE VALIDATION
#### For CC: Value must be a valid number between 0 and 119
#### For PB and AT, any text after the TYPE will be ignored
#### For CV, value must be between 1 and 4
#### For NRPN, value must be MSB:LSB:DEPTH, with both lsb & msb bebtween 0 and 127, and DEPTH being either 7 or 14
# DEFAULT VALUE
#### For CC: DEFAULT_VALUE must be a valid number between 0 and 127
#### For PB: DEFAULT_VALUE must be a valid number between 0 and 16383
#### For NRPN: DEFAULT_VALUE must be a valid number, either between 0 and 127 (for 7 bit NRPNs) or between 0 and 16383 (for 14bit NRPNs)
#### For CV: DEFAULT_VALUE must be either a valid number between 0 and 65535, or a voltage between -5V and 5V, e.g. "-4.25V" or "1.7V"
#### Please note default value will be ignored for PB and AT messages.
[ASSIGN]
1 CC:18
2 CC:89
3 CC:86
4 CC:19
5 CC:90
6 CC:3
7 CC:4
8 CC:8
[/ASSIGN]

# AUTOMATION
# Syntax: TYPE:VALUE
# TYPE can be "CC", "PB" (pitchbend), "AT" (aftertouch), "CV", or "NRPN"
# VALUE VALIDATION
#### For CC: Value must be a valid number between 0 and 119
#### For PB and AT, any text after the TYPE will be ignored
#### For CV, value must be between 1 and 4
#### For NRPN, value must be MSB:LSB:DEPTH, with both lsb & msb bebtween 0 and 127, and DEPTH being either 7 or 14
[AUTOMATION]
CC:18 #F1 FREQ
CC:89 #F1 RESO
CC:86 #F1 OD
CC:19 #F2 FREQ
CC:90 #F2 RESO
CC:3 #PERF A
CC:4 #PERF B
CC:8 #PERF C
CC:9 #PERF D
CC:11 #PERF E
CC:64 #PERF F
CC:65 #PERF G
CC:66 #PERF H
CC:67 #PERF I
CC:68 #PERF J
CC:95 #TRACK LEVEL
CC:70 #OSC 1 WAVE
CC:72 #OSC 1 PW
CC:77 #NOISE LVL
CC:79 #OSC 2 WAVE
CC:81 #OSC 2 PW
CC:84 #SYNC AMT
CC:85 #BEND AMT
CC:5 #SLIDE TIME
CC:88 #VIB SPD
CC:104 #ENVA A
CC:105 #ENVA D
CC:106 #ENVA S
CC:107 #ENVA R
CC:91 #CHORUS SEND
CC:92 #DEL SEND
CC:93 #REVERB SEND
[/AUTOMATION]

# This section will be readable from Hapax.
[COMMENT]
Analog Four
[/COMMENT]
5 Likes

Wonderful, thanks!

3 Likes

Here’s a def for the CV Track

VERSION 1
TRACKNAME A4 CV
TYPE POLY
OUTPORT NULL
OUTCHAN NULL
INPORT ALLACTIVE
INCHAN NULL

[DRUMLANES]
[/DRUMLANES]

[CC]
3 PERF A
4 PERF B
8 PERF C
9 PERF D
11 PERF E
64 PERF F
65 PERF G
66 PERF H
67 PERF I
68 PERF J
[/CC]

# NRPN
# Syntax: "MSB:LSB:DEPTH NAME" or "MSB:LSB:DEPTH:DEFAULT=xx NAME"
# Lsb & msb should be between 0 and 127
# DEPTH can be 7 or 14
# For NRPN: DEFAULT_VALUE must be a valid number, either between 0 and 127 (for 7 bit NRPNs) or between 0 and 16383 (for 14bit NRPNs)

[NRPN]
0:101:7 MUTE
0:100:7 TRK LVL

0:0:14 PERF A
0:1:14 PERF B
0:2:14 PERF C
0:3:14 PERF D
0:4:14 PERF E
0:5:14 PERF F
0:6:14 PERF G
0:7:14 PERF H
0:8:14 PERF I
0:9:14 PERF J

3:0:7 CVA COARSE TUNE
3:1:7 CVA FINE TUNE
3:2:7 CVA VALUE
3:3:7 CVA CLOCK
3:4:7 CVA SOURCE
3:5:7 CVA BEND DPTH
3:6:7 CVA NOTE SLIDE TIME

3:20:7 CVB COARSE TUNE
3:21:7 CVB FINE TUNE
3:22:7 CVB VALUE
3:23:7 CVB CLOCK
3:24:7 CVB SOURCE
3:25:7 CVB BEND DPTH
3:26:7 CVB NOTE SLIDE TIME

3:40:7 CVC COARSE TUNE
3:41:7 CVC FINE TUNE
3:42:7 CVC VALUE
3:43:7 CVC CLOCK
3:44:7 CVC SOURCE
3:45:7 CVC BEND DPTH
3:46:7 CVC NOTE SLIDE TIME

3:50:7 CVD COARSE TUNE
3:51:7 CVD FINE TUNE
3:52:7 CVD VALUE
3:53:7 CVD CLOCK
3:54:7 CVD SOURCE
3:55:7 CVD BEND DPTH
3:56:7 CVD NOTE SLIDE TIME

3:60:7 ENVF ATK
3:61:7 ENVF DEC
3:62:7 ENVF SUS
3:63:7 ENVF REL
3:64:7 ENVF SHAPE
3:65:7 ENVF GATE LEN
3:66:7 ENVF DEST A
3:67:14 ENVF DPTH A
3:68:7 ENVF DEST B
3:69:14 ENVF DPTH B

3:70:7 ENV2 ATK
3:71:7 ENV2 DEC
3:72:7 ENV2 SUS
3:73:7 ENV2 REL
3:74:7 ENV2 SHAPE
3:75:7 ENV2 GATE LEN
3:76:7 ENV2 DEST A
3:77:14 ENV2 DPTH A
3:78:7 ENV2 DEST B
3:79:14 ENV2 DPTH B

3:80:7 LFO1 SPEED
3:81:7 LFO1 SPD MULT
3:82:7 LFO1 FADE
3:83:7 LFO1 PHASE
3:84:7 LFO1 MODE
3:85:7 LFO1 WAVE
3:86:7 LFO1 DEST A
3:87:14 LFO1 DPTH A
3:88:7 LFO1 DEST B
3:89:14 LFO1 DPTH B

3:90:7 LFO2 SPEED
3:91:7 LFO2 SPD MULT
3:92:7 LFO2 FADE
3:93:7 LFO2 PHASE
3:94:7 LFO2 MODE
3:95:7 LFO2 WAVE
3:96:7 LFO2 DEST A
3:97:14 LFO2 DPTH A
3:98:7 LFO2 DEST B
3:99:14 LFO2 DPTH B
[/NRPN]

[ASSIGN]
1 CC:3
2 CC:4
3 CC:8
4 CC:9
5 CC:11
6 CC:64
7 CC:65
8 CC:66
[/ASSIGN]

[AUTOMATION]
[/AUTOMATION]

[COMMENT]
Elektron A4 CV Track
[/COMMENT]
1 Like

And here’s the FX track

VERSION 1
TRACKNAME A4 FX
TYPE POLY
OUTPORT NULL
OUTCHAN NULL
INPORT ALLACTIVE
INCHAN NULL

[DRUMLANES]
[/DRUMLANES]

[CC]
3 PERF A
4 PERF B
8 PERF C
9 PERF D
11 PERF E
64 PERF F
65 PERF G
66 PERF H
67 PERF I
68 PERF J
[/CC]

# NRPN
# Syntax: "MSB:LSB:DEPTH NAME" or "MSB:LSB:DEPTH:DEFAULT=xx NAME"
# Lsb & msb should be between 0 and 127
# DEPTH can be 7 or 14
# For NRPN: DEFAULT_VALUE must be a valid number, either between 0 and 127 (for 7 bit NRPNs) or between 0 and 16383 (for 14bit NRPNs)

[NRPN]
0:101:7 MUTE
0:100:7 TRK LVL

2:0:7 CH1 CHRS SEND
2:1:7 CH1 DLY SEND
2:2:7 CH1 RVB SEND
2:3:7 CH1 PAN
2:4:7 CH1 LVL
2:5:7 CH2 CHRS SEND
2:6:7 CH2 DLY SEND
2:7:7 CH2 RVB SEND
2:8:7 CH2 PAN
2:9:7 CH2 LVL

2:40:7 CHRS PREDLY
2:41:7 CHRS SPEED
2:42:7 CHRS DEPTH
2:43:7 CHRS WIDTH
2:44:7 CHRS FDBK
2:45:7 CHRS HP FLT
2:46:7 CHRS LP FLT
2:47:7 CHRS DLY SEND
2:48:7 CHRS RVB SEND
2:49:7 CHRS SEND LVL

2:50:7 DLY TIME
2:51:7 DLY MODE
2:53:7 DLY WIDTH
2:54:7 DLY FDBK
2:55:7 DLY HP FLT
2:56:7 DLY LP FLT
2:57:7 DLY OVERDRIVE
2:58:7 DLY RVB SEND
2:59:7 DLY SEND LVL

2:60:7 RVB PREDLY
2:61:7 RVB DEC TIME
2:62:7 RVB SHLV FREQ
2:63:7 RVB SHLV GAIN
2:65:7 RVB HP FLT
2:66:7 RVB LP FLT
2:69:7 RVB SEND LVL

2:80:7 LFO1 SPEED
2:81:7 LFO1 SPD MULT
2:82:7 LFO1 FADE
2:83:7 LFO1 PHASE
2:84:7 LFO1 MODE
2:85:7 LFO1 WAVE
2:86:7 LFO1 DEST A
2:87:14 LFO1 DPTH A
2:88:7 LFO1 DEST B
2:89:14 LFO1 DPTH B

2:90:7 LFO2 SPEED
2:91:7 LFO2 SPD MULT
2:92:7 LFO2 FADE
2:93:7 LFO2 PHASE
2:94:7 LFO2 MODE
2:95:7 LFO2 WAVE
2:96:7 LFO2 DEST A
2:97:14 LFO2 DPTH A
2:98:7 LFO2 DEST B
2:99:14 LFO2 DPTH B
[/NRPN]

[ASSIGN]
1 CC:3
2 CC:4
3 CC:8
4 CC:9
5 CC:11
6 CC:64
7 CC:65
8 CC:66
[/ASSIGN]

[AUTOMATION]
[/AUTOMATION]

[COMMENT]
Elektron A4 FX Track
[/COMMENT]
2 Likes

Thanks a lot! Should work with MK1 as well as MK2?

2 Likes

Thank you! I believe so, I don’t think any CC assignments were made/changed going from MKI to MKII :+1:

2 Likes

I’m using this with A4 mk2 as a Poly config and can confirm it works well, thank you, but have also adapted it for Drum Lane use too, if you want to use A4 as a drum machine, whereby CC’s are retained for automation etc.

In the Drum Lane config, you will need to set the A4 midi channels accordingly for this work i.e. channels 1, 2, 3, 4, 5 and 6. Finally, you may want to change the Outport and Outchan to suit your setup.

Cheers!

VERSION 1
TRACKNAME ANALOG 4
TYPE DRUM
OUTPORT A
OUTCHAN 3
INPORT NULL
INCHAN NULL

[DRUMLANES]
1:NULL:1:36 KICK
2:NULL:2:45 SNARE/CLAP
3:NULL:3:50 HIHAT
4:NULL:4:56 PERC
5:NULL:5:38 FX
6:NULL:6:44 CV
7:NULL:NULL:49 EMPTY
8:NULL:NULL:39 EMPTY
[/DRUMLANES]

[PC]
[/PC]

[CC]
18 F1 FREQ
89 F1 RESO
86 F1 OD
19 F2 FREQ
90 F2 RESO
3 PERF A
4 PERF B
8 PERF C
9 PERF D
11 PERF E
64 PERF F
65 PERF G
66 PERF H
67 PERF I
68 PERF J
95 TRACK LEVEL
70 OSC 1 WAVE
72 OSC 1 PW
77 NOISE LVL
79 OSC 2 WAVE
81 OSC 2 PW
84 SYNC AMT
85 BEND AMT
5 SLIDE TIME
88 VIB SPD
104 ENVA A
105 ENVA D
106 ENVA S
107 ENVA R
91 CHORUS SND
92 DEL SND
93 REVERB SND
[/CC]

[NRPN]
[/NRPN]

[ASSIGN]
1 CC:18
2 CC:89
3 CC:86
4 CC:19
5 CC:90
6 CC:3
7 CC:4
8 CC:8
[/ASSIGN]

[AUTOMATION]
CC:18 #F1 FREQ
CC:89 #F1 RESO
CC:86 #F1 OD
CC:19 #F2 FREQ
CC:90 #F2 RESO
CC:3 #PERF A
CC:4 #PERF B
CC:8 #PERF C
CC:9 #PERF D
CC:11 #PERF E
CC:64 #PERF F
CC:65 #PERF G
CC:66 #PERF H
CC:67 #PERF I
CC:68 #PERF J
CC:95 #TRACK LEVEL
CC:70 #OSC 1 WAVE
CC:72 #OSC 1 PW
CC:77 #NOISE LVL
CC:79 #OSC 2 WAVE
CC:81 #OSC 2 PW
CC:84 #SYNC AMT
CC:85 #BEND AMT
CC:5 #SLIDE TIME
CC:88 #VIB SPD
CC:104 #ENVA A
CC:105 #ENVA D
CC:106 #ENVA S
CC:107 #ENVA R
CC:91 #CHORUS SEND
CC:92 #DEL SEND
CC:93 #REVERB SEND
[/AUTOMATION]

[COMMENT]
Analog Four Drum Lanes + CC
[/COMMENT]

2 Likes

Well how cool is that :heart: thanks @anon56542503 !

2 Likes

Nice! Thank you Jimbo!

1 Like

It’s maybe the wrong place for questions but
Is there a way to use this like the P-Lock’s on the Elektrons?
Just automation with different CC’s per Step? Or did I missed something?

I’m not sure on this - maybe there’s another thread on the subject somewhere…? I don’t know how Elektron p-locks are captured in terms of CC/NRPN messages.

I did request something similar via the Squarp team for programme changes that could lock external fx that are set up on different sequencer lanes, e.g. I have an Eventide H90, and I wanted to see if I could lock a step to a specific FX change, but they said that it may cause a memory issue, so would need to run it by their developer team.

If you wanted to create p-lock type behaviour on the Elektron kit via Hapax, a possible work around could be to create a Performance macro (A4/Rytm) or Scene macro (Rytm) on the hardware and then trigger the related CC as per listed in the above definition files

1 Like

My quick note: You can create per-step automation lanes, but they won’t be the same as P-locks on an Elektron sequencer.

With P-locks (Elektron sequencers), it’s single-shot. You attach a filter change to a single step on the sequencer by P-locking it, and when the sequencer reaches the next, non-P-locked step, that filter change won’t affect that trig.

With CC changes, the pairing between control change and trig isn’t as explicit. You can achieve the same, but slower than with Elektrons.

On the other hand, things like loong filter sweeps spanning multiple trigs are much simpler on a Hapax.

This might all be old news to you!

2 Likes

Thank you, I kind of understood the process in my head but wouldn’t have been able to articulate it technically :slight_smile:

1 Like

very cool thx for sharing. im new to hapax and i was wondering maybe noob question how to write it on hapax? the definition files are .txt files? i need to copy this to world and then send it on hapax via usb or sd card? can you explain the process like to a 3 old year kid?

They’re stored on Hapax as .txt files, too. There’s a section on it in the manual:

1 Like

Sorry, I sold my Hapax a year or so ago and so can’t remember the process fully. You can open and edit .txt files in notepad or text edit on Mac/Win.

Best to read the manual and/or use an existing Hapax instrument definition file and reverse engineer it from there. That’s what I did and it helped me to get the basics down quite quickly.

There may be some step by step instructions on the forum now, or perhaps on YouTube, but there weren’t a year ago so worked it out myself. Seems daunting at first but it’s actually more simpler than you might think.