Instrument definition: Moog Sub37

VERSION 1 # Currently, this should only be 1.

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

# 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 USBD

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

# 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]
1 MOD.WHL
3 LFO1RATE
4 MOD1PITC AMT
5 GLIDTIME
7 MSTR.VOL
8 LFO2RATE
9 OSC1WAVE
11 MOD1FILT AMT
12 OSC2FREQ
13 OSC2BEAT FREQ
14 OSC2WAVE
15 MOD2PITC AMT
16 MOD2FILT AMT
17 MOD2PGMDEST AMT
20 MOD1PGMDEST AMT
21 F.RESONANCE
22 F.KB AMT
23 F.ATTACK TIME
24 F.DECAY TIME
25 F.SUSTAIN TIME
26 F.RELEASE TIME
27 F.EG AMT
28 AMP.ATK
29 AMP.DECAY
30 AMP.SUSTAIN
31 AMP.RELEASE
73 OSC1OCTAVE
74 OSC2OCTAVE
86 F.VEL.AMT
103 F.DELAY
104 AMP.DELAY
105 F.HOLD
106 AMP.HOLD
107 BEND UP AMT
108 BEND DWN AMT
114 OSC1LEVEL
115 OSC1SUB LEVEL
116 OSC2LEVEL
117 NOISELEVEL
118 FEEDBACK EXTLEVEL
[/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]
[/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]
[/AUTOMATION]


# This section will be readable from Hapax.
[COMMENT]
Moog Sub37, Updated 220808 (based on pyramid def file)
[/COMMENT]
2 Likes

hello there. I noticed that you didn’t directly modify the cutoff. And when I try to do it, it does not work. Do you know why the cutoff doesn’t work when coming from a sequencer such as hapax? I had the same issue sending cutoff automation from my syntakt. So, it must be a known issue since you purposely didn’t include it.

Is it a issue? or is that just something about the sub37 design. Whatever it is, it’s extremely annoying. I can automate it from ableton but that doesn’t really help in this case. Why can’t cutoff be automated from hardware sequencers :thinking:

edit: i asked chat gtp lol and it says it doesn’t work because cutoff doesn’t have CC support but i thought it worked via ableton but maybe I am misremembering. it’s weird that it doesn’t seem clearly stated anywhere that cc is not supported for the cutoff but maybe i’m oblivious and missing it.

edit2: i figured it out you have to use the mod matrix and mod wheel to access filter cutoff automation. which is annoying because you have to manually configure that for every single patch.

Filter Cutoff (and a few other parameters) are only accessible via 14bit NRPN on the Sub37. Which makes sense because filter cutoff is one of those areas where you can most easily hear stepping in certain patches with regular Midi CC’s 7bit value range.

Fortunately Hapax supports NRPN really well so it shouldn’t be too hard to amend the Sub37 definition file above with those parameters. They’re all in the Sub37 manual.

1 Like

This was based on a instrument definition I used for my pyramid, note sure why F Cutoff not part of it :slight_smile:

Midi CC 19 does control the cutoff, and seems to work fine when I tested it now

midi cc list from moog (page 53)

Added cutoff and drive

1 Like

my sub37 cutoff must be broken then. i’ll have to try using nprn. it responds to the sub37 plug-in which i assume is CC, but won’t respond to hardware sequencers sending cutoff. responds to everything else. super weird.

seems strange, i have the sub 37 tribute, not sure if this differs in the newer model (seems strange?)

maybe check input w/ usb and/or midi and make sure that not something else is making the connection busy or something (atleast if using usb).

is it only the cutoff thats not working? notes and other cc goes through? :disguised_face:

yeah it’s only the cutoff. hurts my head lol.

Weird. Do both of you have the same Sub37 firmware version? Latest is 1.2.0

Does this definition work with the SubSequent 37?