How does "Assign" really work?

With 2nd+fill you can map the 8 encoders to MIDI CC. I notice an annoying thing, that often an external synthesizer gets a CC value for apparently no reason. For example: I have set the volume (or Cutoff) to let’s say encoder 1 and the value is 0. Then, when I try to play the Synth, I hear nothing. I turns out, that I have to turn up the volume (or Cutoff). Apparently Hapax had turned it down to Zero.

But why? As I understand, the Assign feature let’s you control external gear as soon as you turn the encoders, but it should not initialize external gear with the values, should it?

This, as said, it is quite annoying, and momentarily I’m thinking about not to use the assing feature, because I’m not in controll what’s happening.

Has anyone had the same experience?

Yes, it happens sometimes, but no every time I think. I’ve stopped using defaults (in the definition file) because that will mess with patches. But with no custom defaults everything will default to 0 and that will get sent sometimes. I consider this to be a bug. There should be a NONE state where no value gets sent.

I’d like the feature to work like this:

  1. No default + directly after assigning knob via interface => nothing gets sent until user actually moves the knob. There should also exist a way to bring the assign knob back into the NONE state.
  2. Assigned value via def file => again, nothing gets sent until user confirms value via interface. Otherwise all defaults will mess up patches.

So for both 1+2 there’d have to be a kind of transitional state where a value has been set but won’t get sent until confirmed. Does that make sense?

1 Like

I agree. Haven’t used assign knobs yet though, as I prefer tweaking the knobs on the synthesizer itself

Hi polynil, at least I’m not the only one to get messed patches. As long as I’m not missing something very fundamental here, this has to be a serious bug which make the assign feature pretty much useless. As I understand, the default value in the Assign section of the def-file just defaults the value when the def-file is being loaded. You can also set a value with the encoder and save the project - then from now on this is the new default.

I think def-file and default work as expected, but the problem is that Hapax for some reasons sends the CC values from the Assign mode randomly off. I say randomly, because at least I have not figured out yet what’s going on.

Does anyone else have an idea?

To what do you agree? Did you also have this problem?

I also prefer twaeking the knobs on the synth, but in my setup some devices are not within reach. Also some parameters are difficult or even impossible to reach on the synth side.

There is also the possibility to automate the assign encoders while recording, which I haven’t tried yet. That seems pretty coll, but before I do that, I have to understand what’s going on here.

A lot of synths have CC-able hard to get at functions and it’d be nice to have Hapax complement the synth’s interface. Or like @Steeldust said the synth may be hard to reach while working on Hapax.

I think the current assign values get sent on stop (or double stop) and probably project load. But I don’t think they always do. IIRC there was a thread about this a few months ago already and I had planned to dig deeper into what would get sent and when. Then an update came which made at least sending initial automation values more reliable. Decided to wait for the next update before spending more time on this. Alas, there hasn’t been any update since…

1 Like

Actually all the 8 values are being set on project load! I just tested it with my Hydrasynth: I have the 8 macros of the Hydra mapped to the 8 Hapax encoders, and while I load a Hapax project, I can watch how the values on the Hydras screen all turn to zero at once.

So workaround could be to 1st load a Hapax project and 2nd turn on all the attached synths. But when you have to reload the project, all patches are messed and must be recalled.

This is really not cool.

Btw. only CC values are being sent by project load, not program change (PC). This would at least make some sense.

For me, this makes sense. When I load a project, I want the CC values to be sent; that way I can start from where I left and saved the project.

1 Like

Exactly. Sending CC values on project load absolutely makes sense and it’s crucial that it works like this. BUT let’s say I load a definition file with a populated assign section into a track, don’t do anything else, then save the project. Next time I load the project all the assigned CCs will be set to 0. Which is not I want (and what I think is @Steeldust’s issue as well). I want them to be left alone until I actually turn the assign knobs and set a value in the current project. Once I’ve done this I want that value to be sent on project load. Again, let’s say I’ve defined two CCs in the assign section. CC 71 and 72. I’ve loaded the def files then set the assign encoder for CC 72 to a value of 20. I’ve not touched CC 71 so it’s still at 0. When loading the project next time, I’d like only the value of CC 72 to be sent because that’s the one I’ve manually dialled in.

Program change definitely gets sent on project load (here) as well. That’s the one I use with every synth and it’s really reliable.

@polynil That would be a thoughtful and perfect approach. I hope the Squarp team reads this and considers it as a potential update.

I think program changes are per clip and are only loaded when you launch the clip? (Which is desirable)

I tested it several times yesterday and it did not work. Only CC.

To your answer: CC send on project load in conjunction with PC would make a little sense, though I still prefer not to have sent anything as long as I touch an encoder.

Assuming the PC had been sent sucessfully: Why would I send 8 values? A patch has dozens of parameters if not hundreds. What I do, I save the patch on the synth.

The only use case I see are synths like Korg Volca, where you have like a couple of parameters and no presets. But the Volcas CC capabilities are very limited also.

I use CCs for example on the Roland MX-1 or TR-8S where I have different initial volume levels depending on the pattern. So sending those values on project load and pattern/clip change makes sense to me. I also use PC on both which can also differ between patterns. And btw. it works quite well like this for me (IIRC). The only thing that annoys me is that I can’t assign a list of CCs in the def file because then they will always be either 0 or set to a fixed default value. Although TBH I’d have to test this again right now to be sure what works (for me) and what doesn’t. I haven’t spent much time on Hapax in the last 2 or 3 months for different reasons.

For me, this is one of my favourite features of the Hapax, its amazing.

Here’s my use case:

I have a synth (my Bass Station 2). I love it but it only stores 128 patches. I have a couple of patches that I use very often in my songs.

Now, I often need a favourite patch, but slightly tweaked from it’s original state. Maybe a touch more glide than usual, maybe a little less distortion, etc.

The way the Hapax works, when I load my song, it can select the patch I want with PC, then it can modify that patch to my liking.

That way, it saves me from having several very similar sounding patches, taking up valuable patch slots on my BS2.

I don’t use Assigns for this though, I use Default values on automation lanes instead.

Hope this makes sense!

There’s a LOT of stuff that the Hapax needs, bug fixes, basic functionality, additional features etc. But the stuff that’s there is great, extremely well-thought out. I can’t think of anything else on the market that lets me do what the Hapax does.

Now we just need those sweet sweet updates to come. Come on Squarp!!!


I wrote in a previous post that Program Change (PC) in Assign-Mode is not being sent on project load. I tested it today methodically, and apparently things are more complicate. Here is what I have set for my Waldorf Pulse 2 synthesizer:

Knob 1 is Bank Change and knob 5 is Program Change. This should load patch #243 on project load. But actually patch #043 is being loaded, ignoring CC32 Bank Change. Apparently on project load Hapax 1st sends PC and 2nd sends CC32. This should be the other way around to make PC work.

I’m still struggling to make any use of Hapaxes assign mode and was hoping to at least make Program Change work.

Anyone any idea?

have you tried switching knob positions for #32 and PC? Maybe they don’t get sent first to last but the other way around?
I still think using assign for PC and Bank is wasting that function since there already is a way to set these (reliably) per pattern (in pattern mode, hold pattern button, select PC plus MSB, LSB for bank).

Haven’t tried switching the knobs, because why should Hapax send last to first? But I will try.

Not using assign for PC and Bank, then Hapax would send the Assign Values to some Patch on the synth on program start. Does this make any sense?

As you can see on the screenshot I put ap a test by assigning bank to the upper left knob, which should be the first knob being send, and assigning PC to another know. Turning the first knob to 2 manually and then turn the other knob to 42 does load patch #243. So it works in principle.

As I’m writing this, the proper order sending values on project load, seems following:

  1. Bank (which normally is CC32 or CC0)
  2. PC
  3. The rest

I think the assign mode needs more options. I would be happy to turn off the send on project load feature in general. In its current state the Assing Mode at least for me is useless, because if I cannot control the patch number, why should I send any values at all?

Any news on this topic? There is also a problem with the fact that hapax sends values from assign on project load, even if the values are 0 and overwrites patches.