Subsystem Search

This page is read from MIDI Instrument Definitions, a Python library used in the author's other projects, in which every number is traced to a document its maker published. Its source is on GitHub.

ASM Hydrasynth Explorer MIDI implementation

The MIDI implementation of the ASM Hydrasynth Explorer: what it answers to, and the 112 controls it offers, on firmware 2.2.0.

At a glance

Firmware
This page describes firmware 2.2.0.
MIDI channel
1 to 16.
MPE
Sent and received: its voices are spread across its MIDI channels, a note to each.
Voices
8.
Note range
Not recorded.
Velocity
Sent and received.
Aftertouch
Answered, of a kind its documents do not say. It sends aftertouch too.
Pitch bend
Not recorded.
Program change
Received and sent, with 1024 presets.
MIDI clock
Sent and received.
Start and stop
Not recorded.
Control change
112 controls, in the tables below.
NRPN
Supported.
System exclusive
Not recorded.

Controls

In the order the definition gives them, by group. Under each control is the name a program calls it by, once pymidiinstrumentdefs.load("asm/hydrasynth_explorer") has loaded them.

Amp

Control CC Values
Amp LFO2amt
amp_lfo2amt
62 0-127

ARP

Control CC Values
ARP Division
arp_division
106 0-127
ARP Gate
arp_gate
107 0-127
ARP Mode
arp_mode
108 0-127
ARP Ratchet
arp_ratchet
109 0-127
ARP Chance
arp_chance
110 0-127

Delay

Control CC Values
Delay Feedback
delay_feedback
14 0-127
Delay Time
delay_time
15 0-127
Delay Wet tone
delay_wet_tone
63 0-127
Delay Dry/Wet
delay_dry_wet
92 0-127

ENV 1

Control CC Values
ENV1 Attack
env1_attack
81 0-127
ENV1 Decay
env1_decay
82 0-127
ENV1 Sustain
env1_sustain
83 0-127
ENV1 Release
env1_release
84 0-127

ENV 2

Control CC Values
ENV2 Attack
env2_attack
85 0-127
ENV2 Decay
env2_decay
86 0-127
ENV2 Sustain
env2_sustain
87 0-127
ENV2 Release
env2_release
88 0-127

ENV 3

Control CC Values
ENV3 Attack
env3_attack
89 0-127
ENV3 Decay
env3_decay
90 0-127
ENV3 Sustain
env3_sustain
96 0-127
ENV3 Release
env3_release
97 0-127

ENV 4

Control CC Values
ENV4 Attack
env4_attack
25 0-127
ENV4 Decay
env4_decay
27 0-127

ENV 5

Control CC Values
ENV5 Attack
env5_attack
102 0-127
ENV5 Decay
env5_decay
103 0-127
ENV5 Sustain
env5_sustain
104 0-127
ENV5 Release
env5_release
105 0-127

Filter 1

Control CC Values
Filter 1 Drive
filter_1_drive
50 0-127
Filter 1 Keytrack
filter_1_keytrack
51 0-127
Filter 1 LFO1amt
filter_1_lfo1amt
52 0-127
Filter 1 Vel Env
filter_1_vel_env
53 0-127
Filter 1 ENV1amt
filter_1_env1amt
54 0-127
Filter 1 Res
filter_1_res
71 0-127
Filter 1 Cutoff
filter_1_cutoff
74 0-127

Filter 2

Control CC Values
Filter 2 Cutoff
filter_2_cutoff
55 0-127
Filter 2 Res
filter_2_res
56 0-127
Filter 2 Type
filter_2_type
57 0-127
Filter 2 Keytrack
filter_2_keytrack
58 0-127
Filter 2 LFO1amt
filter_2_lfo1amt
59 0-127
Filter 2 Vel Env
filter_2_vel_env
60 0-127
Filter 2 ENV1amt
filter_2_env1amt
61 0-127

LFO 1

Control CC Values
LFO1 Gain
lfo1_gain
70 0-127
LFO1 Rate
lfo1_rate
72 0-127

LFO 2

Control CC Values
LFO2 Gain
lfo2_gain
28 0-127
LFO2 Rate
lfo2_rate
73 0-127

LFO 3

Control CC Values
LFO3 Gain
lfo3_gain
75 0-127
LFO3 Rate
lfo3_rate
76 0-127

LFO 4

Control CC Values
LFO4 Gain
lfo4_gain
77 0-127
LFO4 Rate
lfo4_rate
78 0-127

LFO 5

Control CC Values
LFO5 Gain
lfo5_gain
79 0-127
LFO5 Rate
lfo5_rate
80 0-127

Macros

Control CC Values
Macro 1
macro_1
16 0-127
Macro 2
macro_2
17 0-127
Macro 3
macro_3
18 0-127
Macro 4
macro_4
19 0-127
Macro 5
macro_5
20 0-127
Macro 6
macro_6
21 0-127
Macro 7
macro_7
22 0-127
Macro 8
macro_8
23 0-127

Mixer

Control CC Values
Noise Vol
noise_vol
3 0-127
Noise Pan
noise_pan
8 0-127
Ring Mod Vol
ring_mod_vol
9 0-127
Ring Mod Pan
ring_mod_pan
10 0-127
RM12 Depth
rm12_depth
43 0-127
OSC1 Vol
osc1_vol
44 0-127
OSC1 Pan
osc1_pan
45 0-127
OSC2 Vol
osc2_vol
46 0-127
OSC2 Pan
osc2_pan
47 0-127
OSC3 Vol
osc3_vol
48 0-127
OSC3 Pan
osc3_pan
49 0-127
OSC 3 FRate
osc_3_frate
114 0-127
Noise FRate
noise_frate
115 0-127
Ring Mod FRate
ring_mod_frate
116 0-127
OSC1 FRate
osc1_frate
118 0-127
OSC2 FRate
osc2_frate
119 0-127

Mutator 1

Control CC Values
Mutator1 Ratio
mutator1_ratio
29 0-127
Mutator1 Depth
mutator1_depth
30 0-127
Mutator1 Dry/Wet
mutator1_dry_wet
31 0-127

Mutator 2

Control CC Values
Mutator2 Ratio
mutator2_ratio
33 0-127
Mutator2 Depth
mutator2_depth
34 0-127
Mutator2 Dry/Wet
mutator2_dry_wet
35 0-127

Mutator 3

Control CC Values
Mutator3 Ratio
mutator3_ratio
36 0-127
Mutator3 Depth
mutator3_depth
37 0-127
Mutator3 Dry/Wet
mutator3_dry_wet
39 0-127

Mutator 4

Control CC Values
Mutator4 Ratio
mutator4_ratio
40 0-127
Mutator4 Depth
mutator4_depth
41 0-127
Mutator4 Dry/Wet
mutator4_dry_wet
42 0-127

OSC 1

Control CC Values
OSC1 wavscan
osc1_wavscan
24 0-127
OSC 1 Cent
osc_1_cent
111 0-127

OSC 2

Control CC Values
OSC2 WavScan
osc2_wavscan
26 0-127
OSC 2 Cent
osc_2_cent
112 0-127

OSC 3

Control CC Values
OSC 3 Cent
osc_3_cent
113 0-127

Post-fx

Control CC Values
POST-FX Param1
post_fx_param1
68 0-127
POST-FX Param2
post_fx_param2
69 0-127
POST FX Mix
post_fx_mix
94 0-127

Pre-fx

Control CC Values
PRE-FX Param1
pre_fx_param1
12 0-127
PRE-FX Param2
pre_fx_param2
13 0-127
PRE-FX Mix
pre_fx_mix
93 0-127

Reverb

Control CC Values
Reverb Time
reverb_time
65 0-127
Reverb Tone
reverb_tone
67 0-127
Reverb Dry/Wet
reverb_dry_wet
91 0-127

System

Control CC Values
Bank select MSB
bank_select_msb
0 0-127
Modulation wheel.
modulation_wheel
1 0-127
Master Volume
master_volume
7 0-127
Expression pedal
expression_pedal
11 0-127
Bank select LSB
bank_select_lsb
32 0-127
Sustain pedal
sustain_pedal
64 0-127

Voice

Control CC Values
GlidTime
glidtime
5 0-127
Glide
glide
66 0-127
Detune
detune
95 0-127
StWidth
stwidth
117 0-127

Where these facts come from

Source documents

How they were read

Owner's Manual (98pp, version 2.2.0): the MIDI settings at pp. 82-83, the keyboard's velocity and aftertouch settings at p. 81, the program change settings at p. 83, the specifications at p. 97, and the MIDI CC Charts at pp. 94-96, which is where every number here comes from. The maker's comparison chart is cited for what separates the four Hydrasynths, and the Keyboard and Desktop's manual for nothing at all - see below.

THE CHART IS PRINTED TWICE AND THAT IS WHAT VERIFIED IT. Pages 94-96 carry the same list under two headings, "Sorted by Module" (p. 94) and "Sorted by CC Number" (p. 95). They are the same facts in two orders, so the reading could be checked against the document before any second reader saw it: both printings hold the same 117 entries with the same module and the same controller number every time. A maker who publishes one list twice has given a reader a free verification, and it is worth looking for.

AND THEY NAME NINETEEN PARAMETERS TWO WAYS. Same module, same number, two spellings: Filter 1 Cutoff against Filter1 Cutoff at 74, Filter 2 Cutoff against Flt2 Cutoff at 55, OSC 1 Cent against OSC1 Cent at 111, and - furthest apart of all - Ring Mod FRate against RM12 FRate at 116. Seven of Filter 1's rows, seven of Filter 2's, three oscillator Cents and two of the Mixer's. The module-sorted printing's names are the ones below, because it is the fuller of the two, and the other name is recorded here so that a reader meeting either can find the control.

THE SECOND READING CONFIRMED ALL 117 ENTRIES AND ALL NINETEEN NAME DIFFERENCES, read by eye off the pages rendered at up to 900 dots to the inch rather than from any text. It also settled which way to read CC 116: the same chart calls CC 43 RM12 Depth in both printings, so RM12 and Ring Mod are this maker's two names for one circuit rather than a slip in one place.

AND IT FOUND THAT THE CHART'S THIRD COLUMN HAS NO VISIBLE HEADING. Module and Parameter are set in white on the black header bar and CC is set in black on it, so the word is in the file and invisible on the page. A reader of the printed manual sees two labelled columns and a third with nothing over it. Nothing rests on it - the numbers are unmistakable - and it is recorded because a document that hides one of its own column headings may hide other things, and because this is the second instrument in two days whose text layer holds something the page does not show.

THE MAKER'S OWN INCONSISTENCIES, REPRODUCED AND NOT TIDIED. The module-sorted printing is not even consistent with itself: OSC 3 FRate at 114 has a space where OSC1 FRate at 118 and OSC2 FRate at 119, three rows below it, do not. OSC1 wavscan at 24 and OSC2 WavScan at 26 differ in a capital, in both printings. POST-FX Param1 and POST-FX Param2 keep their hyphen where POST FX Mix drops it, while all three Pre-FX rows keep theirs.

AND ENV 4 IS NUMBERED UNLIKE EVERY OTHER ENVELOPE, which is worth seeing beside the paragraph above about the reserved block. Envelopes 1, 2, 3 and 5 run Attack, Decay, Sustain, Release in ascending controller order. ENV 4 runs Attack 25, Decay 27, Release 124, Sustain 125 - a skipped 26, and Release numbered below Sustain. So the two parameters this file cannot carry are the two that were already the odd ones out.

ONE MORE THING SUGGESTS THIS MANUAL WAS NOT WRITTEN FROM SCRATCH FOR THIS MODEL. Its page 83 refers the reader to "MIDI page 4" for the transmit and receive channels, which this manual puts on MIDI: Page 7; to "MIDI page 5" for a setting it calls At TX, a name this manual never uses for the one it calls Aftertouch transmit on MIDI: Page 8; and to "MIDI page 6" for Overflow, which is on MIDI: Page 11. Three cross-references, none of them right for this document. Nothing below depends on them, and a reader following one will not find what it promises.

TWO THINGS HAD TO BE RIGHT BEFORE ANY OF IT COULD BE READ. Each page carries two half-width tables side by side, and they are read down, not across: a row of the page holds one entry from the left table and an unrelated one from the right, so page 94's left half runs Amp, ARP, Delay, ENV while its right half picks up at Filter 2. Reading by row interleaves two stretches of an alphabetical list and looks plausible. And pypdf's layout mode cannot see the rows at all on these pages - it returns each column as its own vertical run, every Module then every Parameter then every CC - so the words were taken with their coordinates instead.

BANK SELECT IS CARRIED, AS IT IS WHEREVER A MAKER NUMBERS IT. Bank select MSB (0) and Bank select LSB (32) are in the chart's System module, and what they do is said under program_change too: "To change banks, both types of Bank Select messages and a program change are needed, or else the Hydrasynth will only select patches within the current bank" (p. 84).

FIVE NUMBERS ARE NOT CARRIED, AND FOUR OF THEM ARE THE INTERESTING ONES. All notes off (123) is the specification's own message, correctly named, and this format refuses it as a control because it means the same thing everywhere.

AND FOUR PARAMETERS ARE PUT ON NUMBERS THE SPECIFICATION RESERVES FOR CHANNEL MODE. The chart assigns ARP Octave to 120, ARP Length to 122, ENV4 Release to 124 and ENV4 Sustain to 125 - which the MIDI specification keeps for All Sound Off, Local Control On/Off, Omni Mode Off and Omni Mode On. So a sequencer sending Omni Mode Off to this instrument moves its fourth envelope's release. The maker says nothing about it, and the chart has 123 beside them doing its standard job, so this is not a maker who has mistaken the block for free space.

This format refuses all four, on the rule that a channel mode message means the same on every instrument that has one - which is exactly what this instrument makes untrue. The four are therefore published, named, numbered and absent from the controls below, which is a real loss and the only one here. Recorded rather than worked around, and raised where the format's questions are kept. That leaves 112 of the chart's 117 rows.

THE GAPS ARE MOSTLY THE SPECIFICATION'S OWN. The chart uses 117 of the numbers between 0 and 125 and the nine it does not are 2 and 4 (breath and foot controller), 6 and 38 (data entry), 98 to 101 (the NRPN and RPN selects) and 121 (reset all controllers). The manual accounts for none of them and none is inferred here.

THE MAKER'S OWN SPELLINGS ARE KEPT, INCLUDING ONE THAT LOOKS LIKE A SLIP. Modulation wheel. carries a full stop no other label has, in both printings, so it is the document's and not an extraction's. GlidTime, StWidth, Flt2, LFO2amt and ENV1amt are the maker's abbreviations and are not expanded.

NRPN IS OFFERED AND NOT PUBLISHED. Two settings choose the format a parameter edit travels in - "Knob 1 Param TX Off, NRPN, CC" (manual p. 83) and "Knob 2 Param RX Off, NRPN, CC" (p. 83) - and the manual sends the reader to the CC charts for the one and publishes nothing at all for the other: no NRPN number, no parameter list, no address. So midi.nrpn says supported, which is what the setting establishes, and no NRPN appears on any control below because none is published.

NOT RECORDED: