cant assign envelopes in macro designer

hi cant assign envelopes in macro designer. when im right clicking the envelopes in the editor and sending one of the parameters - adsr, to macro page, it doesnt reach there. when i right click a knob in macro designer the option to connect it to the desired ENV value does not exist.
cant also find the ADSR values in the layer param list…


it connects to zoneDCAXXXoffset and does not affect the envelope…

on the side: A search function in the parameter list would be very cool (that searches through program selection or everything in the tree :wink:

You can… but you have to use scripting. Here’s what I do for my “retro bass machine” to affect filter decay:

-- filter decay setting
function onFilterDecayChanged()
	zone = this.program:getZone(1)
	filterEnvPoints = zone:getParameter("Filter Env.EnvelopePoints")
	filterDecayEnvelopePoint = filterEnvPoints[3]
	filterDecayEnvelopePoint.duration = FilterDecay
	zone:setParameter("Filter Env.EnvelopePoints", filterEnvPoints)

defineParameter("FilterDecay", nil, 0.1, 0.0, 1.5, onFilterDecayChanged)

I speak music, not Lua :stuck_out_tongue:

Tell me, oh hacker, what do you do with that “script”?
(how and where do you implement it?) - can you make a quick video or so? :stuck_out_tongue:

You have to create a MIDI module with scripting and connect the UI item to the exposed parameter.

Fixed the code, btw… made a mistake when extracting out of the larger codebase for thhis synth.

Hopefully it will be fixed. Env is a basic control for macro page

This will not happen, I think. The envelopes are very flexible and can have multiple stages.

…and the feew lines of code necessary are not really hard to do.

Hi to everyone.

The parameters you see when you right-click an envelope editor are the envelope offsets. In the past we used them to assign quick controls or to modulate the envelopes via the modulation matrix. In HALion 6 you can use these envelope offsets also for an ADSR on your macro page, for example, we did that for the new instruments.

To setup an ADSR on the macro page via the envelope offsets is a bit more work. But, the envelopes behave less problematic, if the user tweaks envelope settings directly in the zone. For example, even if the user adds more envelope nodes in the zone, the ADSR controls on the macro page will still work.

For our instruments, the envelopes in the zone were setup so they work well with the offsets. We used four envelope nodes with the following settings.

Attack Time = 0 ms
Decay Time = 1000 ms
Sustain Level = 0 %
Release Time = 1000 ms

The envelope offsets are bipolar, i.e., they have a parameter range of -100% to +100%. For attack and sustain, with the settings from above, an offset of -100% wouldn’t make sense. Therefore, we created script parameters that clip the negative parameter range of the attack and sustain offset. Decay and release work fine with these settings and can be connected directly.

The parameters are available in Parameter List. They are called “DCAAttOffset”, “DCADecOffset”, and so on. You should find them more easily if you load a preset from Anima.

  1. Load a Program from Anima.
  2. Open the Parameter List.
  3. In the Program Tree, unfold the Anima Layer and select the “Zone”.

In the Parameter List you’ll see that “DCADecOffset” and “DCARelOffset” are already connected. They are directly connected to the decay and release faders on the macro page. The “DCAAttOffset” and “DCASusOffset” are not directly connected. Instead, they are set via parameters in the script. Like I wrote before, this was necessary to clip the negative range. So, in case of attack and sustain, the script serves as an interface to adjust the ranges of the offset parameters. If you want to inspect the script, open the script editor of the “Anima” module.

So, it can be done with the envelope offsets, but there’s scripting involved. Hopefully, I was able to give you enough hints where to look in the instruments and why we did it like that.

The way SqueekSqueek describes is another way to do this. See my next post.

Connecting ADSR offsets via the parameter list works fine.

However if you try to connecting the ADSR of any envelope in the zone by right clicking and “Connect to Macro Page” it connects the xxxRelOffset, no matter which envelope point you selected.

Hi SqueekSqueek.

It’s good to see that you’re into scripting already.

Here are some thoughts you might want to consider:

  • getZone and getParameter should be placed outside the change callback. Otherwise, they will get called each time you change the filter decay, which produces some overhead.
  • If someone adds nodes to the envelope, filterEnvPoints[3] might go to the wrong node. To avoid this, you can use the envelope offset like I described in my previous post. Alternatively, you can put the zone into a layer and protect this layer. This way, the user doesn’t get access to the zone. How to protect layer is described here:

Have fun!


You’re right. I made a bug entry…

Please use the Parameter List until we’ve fixed this.


Thank you, I usually do that, this was just a quick and dirty first try.

I’ll go with the “protect layer”-solution on this one, because it should be, more or less, a “self contained” synthesizer as part of a collection of easy to use building block style patches.

Hey guys:)

Nice stuff, squeek, aposmus n matthias:)

One thing that gets me though… Using the offset is fine…


In the macropage, i can only connect the offset from a single sample to the envelope… (Not the whole layer like how it acts in the zone tab)

  • does anybody know how i can map the offset to the whole layer in the macro page?

Thx n all the best, all of you:)

Nvm, mapped a new set of QCs and did it through them:p