Non-linear mod matrix functions

This forum is for discussing Rack Extensions. Devs are all welcome to show off their goods.
Post Reply
User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

03 Feb 2020

Are there any Rack Extensions that support non-linear functions in a mod matrix?

By this I mean something other than the standard y=mx formula where x is the modulation source, y is the destination, and m is the modulation amount. Exponential, logarithmic, or stepped functions would open up a world of modulation possibilities, but I’m not aware of anything that does this.

User avatar
Stygian Abyss
Posts: 110
Joined: 17 Jun 2019

03 Feb 2020

Arcus User Knobs and Kron are the first to have come to my mind.

User avatar
Loque
Moderator
Posts: 11175
Joined: 28 Dec 2015

03 Feb 2020

There are a few devices which produce simple curves, ARCUS came to my mind too. But Shape would be another option.
Reason12, Win10

User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

03 Feb 2020

Arcus looks like exactly the tool for the job. Thanks!

It would be interesting to see this baked into a mod matrix, though. Europa could probably do it by repurposing the Scale column: Imagine adding an option in the menu to select a function instead of a time-based scaler. You could have presets like exponential and logarithmic, but what would really be cool is to use Europa's complex envelopes as functions!

This excited me enough that I put a mockup together: Image

User avatar
Jackjackdaw
Posts: 1400
Joined: 12 Jan 2019

03 Feb 2020

That's a cool idea. How is 'Envelope 1 as a function' different from just putting envelope 1 as the scale though?

User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

03 Feb 2020

Jackjackdaw wrote:
03 Feb 2020
That's a cool idea. How is 'Envelope 1 as a function' different from just putting envelope 1 as the scale though?
I think the best way to explain functions in this case might be with an example.

Let's say you have the following route set up in your mod matrix:

Code: Select all

SOURCE    AMOUNT     DESTINATION1  ...   SCALE
Velocity  100        F. Freq             Env 1
The higher the note velocity, the higher the filter cutoff. The amount that the velocity affects the frequency changes over time based on envelope 1.

Now, we change the scale from envelope 1 to my proposed "envelope 1 as function":

Code: Select all

SOURCE    AMOUNT     DESTINATION1  ...   SCALE
Velocity  100        F. Freq             Env 1 Function
The higher the note velocity, the higher the filter cutoff... as long as envelope 1 goes from 0 to 100%. The envelope is no longer working across the time domain, but rather on the domain of the velocity itself.

Image

If we set the envelope up like this, we reproduce the default, linear function. 0% velocity = 0% filter; 50% velocity = 50% filter; 100% velocity = 100% filter.

Image

But if we add a curve, we've effectively given the filter cutoff a velocity curve: You don't hear a lot of difference at lower velocities, but there's a pronounced difference at higher velocities. 50% velocity equates to only about 10% filter, but 100% velocity still equates to 100% filter.

Image

If we use a step function like this, velocity doesn't affect filter cutoff at all until you play a note at 50% velocity, at which point the filter goes all the way.

Image

We can even use an envelope that goes from high to low! This has the same effect as a negative value in the amount column.

Hope this helps explain the concept!

User avatar
Jackjackdaw
Posts: 1400
Joined: 12 Jan 2019

04 Feb 2020

I get it, thanks for the detailed and informative reply. Great idea. You can do stuff like this in Pigments but I much prefer the mod matrix format Reason uses, it's much more efficient on the mouse clicks.

User avatar
selig
RE Developer
Posts: 11685
Joined: 15 Jan 2015
Location: The NorthWoods, CT, USA

04 Feb 2020

I like this idea - I didn't get it at first, but I THINK it's similar to a suggestion I mocked up many years ago for the Combinator Programmer, which I think would also work in a mod matrix as you suggest here.
I envisioned a graphic approach using a transfer function graph (input vs output display). This is similar to the Oberheim Tracking Generator from the Matrix 12/6 series, but with more data points.
For example, by drawing an exponential curve, you would "shape" linear modulation to an exponential curve. You could also easily create switches, inverted values, and create "dead zones" (ranges of the input signal where there is no change on the output).
Is this the same concept you're describing here, but for a mod matrix?
:)
Selig Audio, LLC

User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

05 Feb 2020

selig wrote:
04 Feb 2020
Is this the same concept you're describing here, but for a mod matrix?
Exactly! I actually have Arturia's Matrix 12 VST, but had never used the tracking generator. I loaded it up to check, and it does indeed work the same as I'm imagining it would work in a mod matrix.

Oberheim's implementation is an interesting alternative in that the tracking generator is its own modulation destination and source. I wonder if that would be a better option for synths like Expanse.

Post Reply
  • Information
  • Who is online

    Users browsing this forum: ekss and 20 guests