ASM Hydrasynth
Single Patch Editor
This editor should work properly with the Hydrasynth Keyboard, Deluxe, Desktop, and Explorer. It can read 1.5.5 and 2.0.0 sysex dumps and can write 2.0.0.
Communicating with Edisyn
If you're connecting via USB, set Edisyn's incoming and outgoing MIDI devices to HYDRASYNTH KB. Set Edisyn's MIDI channel to the same as the synth's RX and TX MIDI channels. You can set the synth's RX MIDI channel to OMNI if you liked. Set up Parameter RX and TX both to be NRPN. Turn on Program Change RX (it's particularly important).
Current Editor Status
The Hydrasynth's sysex spec is closed and ASM has not been forthcoming: developing Edisyn required reverse engineering it. As such Edisyn can do most things you'd need, but a few items (such as requesting current memory) are still out of reach.
Edisyn does not yet support the Deluxe's multimode, though I would like to ultimately. But it may be quite a while as I do not have access to a Deluxe.
Warning about Send to Current Patch and Flash RAM
Edisyn performs Send to Current Patch, and Undo/Redo, and Hill-Climbing, and Morphing, etc. using a sysex command which writes to current working memory of the synth, but does not save the patch permanently. This is the same strategy employed by Sigabort MIDISynth. This isn't very problematic for Send to Current Patch or for Undo/Redo, but Hill-climbing and Morphing audition sounds many times in sequence, so it'd be good to make sure that this procedure not save to Flash RAM, which has a limited number of write cycles (perhaps 100,000) before it fails. I'm pretty certain that this procedure does not write to Flash for two main reasons. (1) Writing to Flash generally takes a long time (see how long Write to Patch... takes), but this sysex command is quite fast. (2) The operation is not permanent: reboot your Hydrasynth and the results are gone (that wouldn't happen with Flash of course, which is permanent). However ASM will not verify it. So you have been warned just in case. Hopefully ASM will fess up soon.
Windows Warning
Java MIDI on Windows does not play nicely with the Hydrasynth, either through its USB port or through another USB device's USB port:
- MIDI and sysex messages often get lost or are duplicated. Edisyn tries its best to compensate but you may run into issues. It's also a bit slower than MacOS and Linux: but direct USB connection to the Hydrasynth is faster than going through 5-pin DIN MIDI.
- You may find that the first time you launch Edisyn, it won't communicate with the Hydrasynth at all. However if you unplug your USB cable, quit Edisyn, plug in the cable again, and relaunch Edisyn, you may have more luck (this really does seem to work often).
Edisyn uses Patch H 128 to Send to Current Patch
The Hydrasynth is a very strange syntheszier in that it doesn't have a patch in current memory: it has all patches stored in current memory. When you write a patch to Flash RAM, what the Hydrasynth does is write all of them. That's why it takes so long.
However the Hydrasynth has no way to Send to Current Patch: it can only send to a specific patch. As a result, Edisyn is forced to use Patch H 128 as a “scratch pad”. When you Send to Current Patch (or undo/redo/nudge/randomize/hill-climb/morph/etc.), it actually gets sent to Patch H 128, which is then loaded so you can hear the sound. If you Write to Patch, it'll get written to the patch you expect.
This works but can be very confusing, for two reasons. First, the patch name of H 128 won't change: the Hydrasynth only shows the name of the patch that's currently written to Flash. Second, that if you write a patch (say, A 32), it will also write H 128 -- it writes everything, remember -- and so whatever had been sent to H128 in the past (including the name) will get written to Flash. After that, H 128 will show the newly written name.
It's probably best to just ignore the fact that the Hydrasynth is switching to Patch H 128, and that it's sometimes seemingly displaying the wrong name. Just trust that the sound is getting sent to the machine and you can now audition it. Also this means that you can't really store things in Patch H 128: Edisyn will eventually overwrite it. Treat H 128 as a scratch pad for Edisyn.
To make it clear that Edisyn is sending to H 128, Edisyn will display a little “Sent -> H 128” underneath its Patch Number.
About the Menu
- Ignore Parameters from Synth When you set various parameters in Edisyn (such as BPM Sync), the Hydrasynth rather unhelpfully will send its current settings to Edisyn, changing the settings you had made. To deal with this, by default Edisyn ignores all incoming NRPN messages from your Hydrasynth. If you'd like to make real-time changes to Edisyn by ahcnging values on the Hydrasynth, uncheck this option.
- Disallow CC Mutation CC (and CV) options dominate the Hydrasynth's Mod Matrix Source and Destination lists, so mutation will select a CC or CV with a good probability, and you probably don't want that. Selecting this menu prevents CC and CV options from being randomly selected during mutation. As an alternative, you could simply disable the entire Mod Matrix category's mutable parameters (see the manual). You might do this for the Macros as well.
- Lock User LFO Steps to Notes If you would like to restrict LFO steps to notes only when you change Edisyn's dials, you can check this. This does not restrict LFO steps to notes in any other situation, even when receiving NRPN from the Hydrasynth.
- Lock All LFO Steps to Notes If you would like to restrict LFO steps to notes only in all cases, you can check this. This will restrict to notes when you change dials, randomize, morph, hill-climb, blend, nudge, merge, load files, and even receive parameters from the Hydrasynth. Additionally if the Hydrasynth sends you a new patch, and this is turned on, then the steps will be modified so that they are restricted. You probably only want to set this temporarily prior to a mutation operation such as randomization, morphing, hill-climbing, nudging, blending, and merging, so you can restrict mutation to just notes: you can then then turn it off again. You almost certainly don't want it on when you load or save a patch. For this reason, this option is not retained and is always reset when you create a new patch editor window.
Issues Sending Parameters in Real-Time
There are a number of parameters that can't be sent via NRPN to the Hydrasynth in real-time. These are:
- Patch Name, Category, and Color
- Scale Type, Keyboard Lock, and Custom Notes
- Ribbon Scale Type, Ribbon Keyboard Lock, and Ribbon Custom Notes
- Ribbon Mod Hold
- Filter 1 Vowel Order (though the Hydrasynth will emit this)
- Arpeggiator Tempo (though the Hydrasynth will emit this), Clock Lock, Latch, and Step Offset
- All Macro Names and Macro Button States
By default Edisyn doesn't try to send these in real-time at all: you can manually send them with Send to Current Patch. But if you turn on Auto-Sends Patches in the MIDI menu, then Edisyn will send the whole patch automatically exactly one second after you have made your most recent change to reflect these parameters (except Name, Category, and Color, which can't be set unless you Write the patch).
Gotchas and Hydrasynth Bugs to Be Aware Of
The Hydrasynth has a great many bugs and oddities: but Edisyn tries to work around them and hide them as best it can. A few are still exposed and mentioned here, plus some general gotchas.
Yes, Envelope 2 really doesn't have modifiable a Trigger Source 1.
If TempoLck is ON then the Hydrasynth will ignore all Arp Tempo changes made by Edisyn. You might want to turn that OFF at least for editing.
The Hydrasynth handles custom scale notes oddly. If you create notes in Edisyn that are out of order, and write them to the Hydrasynth, the synth will store them internally as you wrote them, but will sort them before displaying them on-screen for you to modify. Thus they will appear in different order on the front panel than in Edisyn.
In 2.0.0, the Hydrasynth does not emit Voice Vibrato Amount values less than 1.3 via NRPN. It's a bug.
The Envelope's Attack Curve labeling is incorrect: negative values are actually LOG and positive values are actually EXP. Edisyn follows the Hydrasynth's incorrect labelling. I do not know if ASM mislabeled the attack knob by accident or intentionally because they imagined people wouldn't understand exponential curves: but it is wrong. An exponential envelope curve doesn't mean it's increasing with an exponential rate of speed. It means that there is an exponential dropoff in the absolute rate of change. For the decay/release, we start by moving very fast, and then as we approach the target we exponentially slow down (go horizontal). Similarly for attack, we start by moving very fast (this time upwards), then as we approach the target we again slow down (go horizontal). The Attack Curve knob behavior is identical to the Decay and Release knobs and should have been labelled the same.
Certain individual parameter changes will cause the Hydrasynth to foolishly respond with its current settings for a set of parameters. This in turn will cause Edisyn to update those parameters, erasing any changes you may have made but not yet sent. This is unlikely to bite you, but you should be aware of it. You can prevent this entirely by selecting Ignore Parameters from Synth in the Hydrasynth menu.
Sometimes when the Hydrasynth wakes up from going to sleep, sending it parameter values from Edisyn will cause it to update those values with an offset (and thus incorrectly).
The Hydrasynth has repurposed the very important CC 120 (All Sounds Off) to be used as Arp Octave.
When you update the Mod Matrix or any Macro Assignments in Edisyn, the Hydrasynth does not update its display to reflect this. You have to page away and come back to see the updates properly displayed.
The first WaveScan wave goes Sin...Harmon23. The other waves go Off, Silence, Sin, ... Harmon23. This means that when you use the Category's distribute procedure to distribute waves, it won't work right for the first wave.
You can't set the LFO Steps parameter unless the corresponding LFO Wave parameter has been first set to “Step”. You can set the individual steps themselves. Also you can set the LFO One Shot to Step even though you're not in Step: but the Hydrasynth will ignore this and set it to On (when you get into Step you'll have to reset LFO One Shot back to Step again). Go figure.
Even if you turn OFF a macro destination, a modmatrix destination, or a modmatrix source, you can still set its depth and button depth! Don't ask.
Hints
- When you edit a macro name, notice that the text field is actually a drop-down combo-box: it has all the default Hydrasynth macro names available.
-
Edisyn can send the Hydrasynth microtuning scales via Midi Tuning Standard (MTS) sysex. Just use Edisyn's MIDI Tuning Standard editor (under “General”), which can also load Scala files as well as the microtonal .mid file provided on ASM's website. Go to the Microtuning menu in the System Setup, choose the scale number you want to overwrite, and select “Receive Scale...”. Then in Edisyn you can either send the scale to current patch or write it: it doesn't matter because the scale patch number Edisyn sends is ignored by the Hydrasynth.
About Hydrasynth Manager Files
ASM provides a librarian called the ASM Hydrasynth Manager. This software saves patches in proprietary bank file formats with the extension “hydra” or “hydramulti”. Edisyn instead saves as standard sysex files, and does not read these proprietary files. To convert them to Edisyn, you'll have to load them into your Hydrasynth, then dump them out to Edisyn.
About the NRPN and Sysex Specs
The Hydrasynth does not have a public sysex spec, and so building Edisyn's editor necessitated completely reverse engineering it. The Hydrasynth does have a public NRPN spec, but it is missing a lot of parameters, lacks a great deal of critical information, and has many errors. You can find a reverse engineered sysex protocol and patch format, along with a heavily revised NRPN spec, in this directory.
Thanks
Thanks to Thierry Rochebois Zic for making his stunning Hydrasynth wave and harmonics figures available under Creative Commons CC-BY. Thanks to Robin Chard for going above and beyond in identifying preset values, and in testing assistance. Thanks to Herbert Boland (hboland@ziggo.nl), Andrew Macaulay (andrew@macaulay.me.uk), and Russell Dawson-Butterworth (info@dbentertainments.com) for testing assistance and suggestions. Thanks to Erich Izdepski (mogrifier@gmail.com), Adrian Croft (adriancroft@msn.com), and Tim Burgess (tim@raisedbar.net) for help in reverse engineering.
By
| Sean Luke
|
Date
| May 22, 2023
|