MXXX: Use bezier curves (not ADSR) to draw triggered curve that shortens/lenghthens by host tempo?

Official support for: meldaproduction.com
RELATED
PRODUCTS

Post

I'm now to MXXX, so it may be obvious to more experienced users if such a thng is possible or not, but I'm trying to do something essentially analagous to ShaperBox which uses an audio or midi trigger to then control the output volume via a predetermined envelope.

I can see how to do this with a modulator in Envelope mode, but the type of envelope I want to trigger isn't possible with ADSR type controls (even as augmented as they are within the modulator).

The beauty of ShaperBox (and the several other similar tools available in the past few years from other developers) is that they have bezier drawing tools which can be used to create complex best fitted curves, and then apply those to volume, panning, etc.

It's not lost on me that MXXX essentially has all those same tools, though they are applied to different purposes. After all, LOTS of Melda plugs and modules have bezier curves to draw a variety of different types of response curves. What I'm not seeing at the moment, though, is a way to trigger such a curve so that it's x-axis is time over a given tempo locked interval (2 beats, 1 measure, etc), and it's y-axis can be applied to a parameter (like output gain) over that timeframe.

Is such a thing possible... or if not, is there some alternative that is possible like triggering an automation snippet? (Logic)

Ultimately, I'd like to find a way to create an triggered envelope that manipulates the output gain according to a custom curve which then automatically shortens/lengthens to match the tempo.

Actually, that brings up another thing I've been wondering: Is there a way to attach to the host DAW's project tempo as a parameter value to then manipulate that value and use it in other parameters? (I'm in Logic)

Post

Simply use these two buttons:
You do not have the required permissions to view the files attached to this post.
Jason @ Melda Production

Post

^^^
You need to select the Attach or Release tabs to do the editing (at least I do), Preview shows the overall shape.

And, of course you can save each shape as a Preset (click the "9-dots" button).
DarkStar, ... Interesting, if true
Inspired by ...

Post

Awesome. Just made my day.

The videos I watched must have been older as these features were not mentioned. Don't remember seeing that in whichever manual I checked out either, but maybe I missed it.

Post

That's half the fun with these plug-ins - we all keep on finding functionality that we never knew existed.
:)
DarkStar, ... Interesting, if true
Inspired by ...

Post

Actually, after some experimentation, it seems what I'm looking to do may not be possible as configured. Maybe I'm missing something, though.

I need an envelope that goes both above and below the default (before and after the envelope) value. ADSR's by design appear to only go in one direction since the default value is at the bottom of the graph. You could invert it, but then you're still only getting the negative half. What I need does both positive and negative translation before returning to default:

Image

I thought maybe I could get around this by stringing together multiple modulators such that the first does the positive portion of the envelope, the second waits until it is done, then inverts it's curve to do the negative portion, etc.

Unfortunately, this doesn't work as both modulators are then attempting to control the same parameter simultaneously. This brings me back to the issue in another thread about needing math module or other fix to allow multiple MP's to control a single parameter. It would work if instead of the MP's sending to the parameter directly, they both fed a math module that adds them together and feeds the sum to the parameter.

That way, each could just send a 0 until triggered. The second envelope has a hold set to match the length of the first envelope. When they are both triggered, the second holds while the first does it's (positive) envelope. When the first returns to the default value at the end of it's envelope, the hold elapses on the second, and it begins it's negative (inverted) envelope. Since they are timed to just miss eachother, one value is always zero whenever the other is non-zero. As such, the proper value of the parameter is always the sum of the two.

It's just one idea for how to approach this. It would require figuring out how to use the math module (which still eludes me in general) to allow a sum of two MP's to control a parameter. I'm open to other solutions... especially any simpler ones.

Basically, how can I trigger an envelope that creates values both higher and lower than the default (starting and ending) value?

Post

It still seems to me this is doable via the math module, but if I'm trying to do fit a square peg in a round hole there...

... is there some completely other (and hopefully simpler) approach to trigger an envelope that goes both above and below it's starting and ending point?

Post

Can you use an LFO in one shot trigger mode?
Jason @ Melda Production

Post

Interesting idea. I had originally included something about a possible solution involving modulating a sine wave source, and deleted it to clean up and make the post a bit clearer. I've simplified it to make the basic concept easier to understand, but as you're nudging closer to my original thoughts, perhaps I should elaborate:

What I'm actually trying to do is create a "bounce" knob that dials in a decreasing oscillating overshoot like this:

Image

Essentially, 0% bounce is the initial release only with no overshoot. 100% bounce overshoots back and forth per quarter note decreasing each time until it returns to the default state at 1 measure. Depending on how that sounds, I might or might not need to do things like alter the shape a bit to tighten up the initial release as I wasn't planning on quite constricting to a sine wave, but it's a close approximation, and might be tweakable from there.

I'm actually surprised this stuff isn't standard in audio gear by now. Visual editing has had these built in "easing types" for many years now. In After Effects, it really is just as simple as selecting a behavior and turning a knob to get all kinds of behavior that mimics the way things actually behave in the physical world. The result is nearly always better, and smooths out everything from video edits to iphone swipe behavior.

I've only used the LFO's so far to do some steady basic modulation. I don't necessarily see why that couldn't work though.

Thoughts?

Post

Try this patch in MXXX (drag through it to select it)

Code: Select all

$eNqtVlFz4jYQfs+v0KivB9jGxjATckMC6TETEoppyKvOFliNLLmynAv367uSbXBIuGamDTORtFppd7-9duXLr68ZRy9UFUyKMXa7DkZUxDJhYjfGpd52hvjr1cXl4unpqaBag7hAv4EiRjeSc5IXNFmxXaqXRFA+xo6RC61gD+6cCfKd06QSK1kUEiwtZELH2POT656MdWtjvc9hYyIIlzuMpmq-odoe-f3PecR+Ug-Mem74JfQHB9mMFHuQO19A7Y6JZ6t-t4pyzrSmyqi4YxwG4akUDvX7PkYL8np3+3DNZfxsxCD1MHps8AiHoR8M8NXlwUnj3v4nVSjKpNSpoEUBNrtOgNGGiUT+qKL4RoSAY0tFt4yDScANVpIJjW452RXXEIsPIL4azPuO63ij0SgYDHDvnJp-qtY7uVzJGJyRykEH2OHkLePcTqJU-oCUSfVIeEkLK1unLLaQ9VrnXfQAcSqWUKt+XtH7rGL-s4r+vyj23qUBqPmdiMQ55eSi5JotiSIZZLfm5i84+44xfjjoesHQCwLf8z-gjjcadEPfDX0-CAdnWARELzlRB5tVGiinsabJkpc7JmrmRqVSshTJTQq0obyuG9Cv-wyTrH4BIDTKj5KXGQXBgoJfxdXlhiU6XYCCLFVMUZseDX6NSq8507PoAYrgPizhv4MmpZYZ0VAAG+vyGzop+ncJDWJvV1UpL+bTOSi9UC5zCglTRBSMCl3tzgQEFdPExGDyYQyj25LzFRE72Ad0D-J7GOA+i5uWqkAdYwJ5MB7PugZtS2IoVDPYDNrZNYmfy9zU49CE2-h0dTlJXqwTaKI1sXTqOsfIIkO4lJh0gHBJyfM3yROrBGlcLaI7KnY6bQQHdfDjDyMMndB1BuHQdYehib+k1XnXYn70wgDVrNAkNgg-bLdjHGmZowLSxCGkWi6MmCiNtlIZ9NBkGq3WNMtltBfxGMNBfIgGnLopC8halBLTfSCKeZbRhBFNV0A4UlQgHeddU1lvbzviVV37USP6oDs5VROjHRdm+zroM53uDR6NlWZdO4dm94-L1SyarWvSrhXNoBvY0GrG3UuVEY7RS5X+AHyPNM3RXNMMirdj4odp-zgNjtPQTuHih5wqS3NTVb22GVMgrVwBf8qEyUPqoF-9BUXchnTNMlpXAxGl8W2dKlqklgf2dEtik94JvC48Z-WvvQup73ijrjNqfripcePnG1cgbraDVgjpVwpKDmoeXun5dIyndEugB+JfI-YOheo62ARaoIb2ns2b6Q22Q7if7RDeifXzHaCpaAvpSTuAD4EefAmcLXa3Xeq9TyDS6E5pXhe1GwROfxgGo8Ho-wXMrYYCGqyp6xdauYPai+pFkCfvxCxh2kzg0wOKeCfV3nB3LrbSoJ+axxGUFoRxMzFyM242kBBjvI4eVRBad9o2jT8qRyu4uvL24r+8Ihcwa30fXl38AyxMTiY=
Copy the patch and Paste it into a spare A-H slot in MXXX
Modulator 1 is an Envelope, with a Custom Shape, Attack descends from 100% to 0% over 2000ms; its Action On is "Start forced" ("Start" did not work for some reason). Its target is Modulator 2's "Parameter 1 Max Value".

Modulator 2 is the standard sine wave, Frequency 2 Hz and its (first) target is the global Dry/Wet (just so that I could watch it).

I haven't got the settings quite right but it may give you some ideas.
DarkStar, ... Interesting, if true
Inspired by ...

Post

Annabanna: you’re obviously some kind of (most welcome) mad scientist/ programmer.
Makes me curious: is there somewhere you post where I can hear what sounds your experiments produce? (I am serious.)
Thanks!

Post

I was wondering how the ramp part should be done. I guess I need to start translating what I see as math operations into LFO translations wherever possible. Actually, that approach is elegant in it's own way since the ramp can be bent to emulate linear vs log decay behavior, etc.

Heading out to lunch, but I took a quick look, and it seems promising.

thx

Post

Annabanna wrote:I was wondering how the ramp part should be done. I guess I need to start translating what I see as math operations into LFO translations wherever possible. Actually, that approach is elegant in it's own way since the ramp can be bent to emulate linear vs log decay behavior, etc.

Heading out to lunch, but I took a quick look, and it seems promising.

thx
Enjoy your lunch, and post me some sound or music, please. :D

Post

Unfortunately, I'm not at liberty to post music at the moment, though that will change by the end of the year.

Working with the modulated LFO concept now. Seems to be working overall, though I've yet to figure out why the sine wave appears to be expanding asymmetrically (more negative than positive) in various configurations I've tried.

I couldn't quite make sense of something: It looks like mod 1 is set to control "Modulators LFO1 Parameter 2 Max value."

So, since it IS modulator LFO1, it appears to be trying to control it's own second parameter... of which there is none. Seems like I may be missing some alternate way of delegating control here. Why wouldn't it instead be assigned to "Modulators LFO2 Max value"?

Rewiring, syncing, and testing at the moment. I'll have some mods to post soon if it goes well, but is there something I should know about the code posting? I've done it twice in 2 threads between the code tags, and both times, it failed to format, and erased everything after the code. I checked by quoting someone else's code post, and it looks like theirs is just the same code between the same code tags, so not sure why mine won't post.

Post

It worked for me. Mod 1 modulates Mod 2.
Again, you need to update if you want copy/paste settings to work.
Jason @ Melda Production

Post Reply

Return to “MeldaProduction”