[Solved] Update to v4150 failed on clamp() (3 args)

Upgrading v4062 => v4150 and got:

Failed to load background rack. Unknown symbol: clamp (3 args).

May need @brad help …

Screenshot 2023-12-10 015110

Hope I can roll back … Gig on Wednesday …

Hi John,

Thanks for letting me know I’ll look into it.

If you’ve got a gig Wednesday I’d recommend rolling back to 4064 and restoring your old song/rack files. 4100 is a big upgrade and even though stable it’s probably a bit risky a few days before gig.


Clint here … I did roll back and all seems OK. No files seem to have been changed, and the download of .Net 6 should not mess anything up (right?)

I did the upgrade to be able to work with @dave_dore on a specialized rack for wind synths he’s developing.

All is good!

Hi Clint,

I just tried the clamp function here in a binding in the background rack and it seemed to work fine. Can you send me a copy of your background rack so I can try to reproduce this?

To be sure nothing has changed, do a scan of your racks directory any look for anything with a .pre4100 extension appended to it. If you find some, delete the file without that extension and remove the .pre4100 from the other file.


My Rack.cantabileRack => delete
My Rack.cantabileRack.pre4100 => rename to My Rack.cantabileRack

.NET 6 shouldn’t mess anything up.


Here’s my current background rack …

WindSynth_BkgRack_2023_0724a.cantabileRack (811.6 KB)

Hi Clint,

Still chasing this… are you using a custom gain control curve?


Yes … I use custom curves to match Cantabile to the curves used by RME TotalMix.

This lets me run Direct Monitoring for some signal paths, and have the Cantabile displays match the actual values used by TotalMix (and the various RME interfaces I use …)

In addition to the curves, I have formulas in lots of places that do custom translations from MIDI values to dB so I can display the correct values on the Controller Bar …

Had to stand on my head to get RME to release the formulas that they use for their control curves …

OK, that checks out and I’ve made sense of this now.

To explain… part of the work on the new bindings was to move much of mapping code to native unmanaged code. That meant that the control curves had to be able to be executed in native code too since the bindings mappers use those. That meant I had to make an unmanaged implementation of math expression engine used by control curves… and I some how missed the clamp function.

I’ve fixed it for the next build - I’d still leave moving to 41xx till after your gig.


On the road with two laptops, so I have good backup, so I’ll probably upgrade at the next release.

I’ve doubled-down on complexity - running both C4 and Live and it works … GREAT (so far). Each talks to the other in both MIDI (LoopMIDI) and audio (RME ADAT Channels), and that works well.

Thanks for the support!!

1 Like

On v4153 now, and clamp() is now implemented!

Hi @ClintGoss

Thanks for the update… glad it’s working now.