• Hi Guest!

    We have posted a new VaM2 dev log on Patreon, starting a monthly cadence of written progress updates between Beta releases. Highlights include the new Gizmos System, Selection Carousel, and Modes System with Context-Specific Editing. Beta1.2 is 15 of 21 items complete.

    Read the full post on Patreon, or follow progress on the public Trello roadmap.
MultiCurveMapper

Plugins + Scripts MultiCurveMapper

Download [<1 MB]

14mhz

Well-known member
Joined
Oct 23, 2024
Messages
350
Solutions
7
Reactions
2,145
MultiCurveMapper
※ all demos have been deleted by the admin.
 
Last edited:
Any changes I make to the gain value is not registered, despite pressing the "Apply" button. Is this a bug or me missing something?
(The plugin is attached to an Empty-Atom, btw.)
To end on a high note: great plugin even when only using values +-1!
 
Last edited:
Any changes I make to the gain value is not registered, despite pressing the "Apply" button. Is this a bug or me missing something?
(The plugin is attached to an Empty-Atom, btw.)
To end on a high note: great plugin even when only using values +-1!
Please upload a screenshot or a short video. ^^ The issue needs to be reproducible in order to be resolved.
 
Last edited:
Please upload a screenshot or a short video. ^^ The issue needs to be reproducible in order to be resolved.
I could not reproduce the issue of the gain value not registering.
After restarting VaM, the gain value was applied properly and everything worked as intended.
Sorry for the stirrup.
Back to creating ballistic curves with this gem of a plugin...
 
I could not reproduce the issue of the gain value not registering.
After restarting VaM, the gain value was applied properly and everything worked as intended.
Sorry for the stirrup.
Back to creating ballistic curves with this gem of a plugin...
@BossG , after checking, it is indeed a bug.
When you click the filter button, change a value such as gain, press apply, and then—without clicking anywhere else—click the filter button again, the value is not saved.
Thank you for reporting this bug. (y)
Patched the bug done. I will release the next version including the bug fix. Much appreciated.
 
Last edited:
Could there possibly be a function to do a negative tether on values? For instance: morph A = 0.1 then morph B is automatically = 0.9, if morph A changes to = 0.2, then morph B automatically changes to = 0.8 and so on.
I'd really love to do something like an expression engine and if a lot of morphs are added it becomes a headache to try and write a lengthy path for all.

Or/Also if we could get a primary timeline upon which drawn segments are placed/related to so that you could draw segments and then have the plugin choose random segments to play. Would also help with lightshows that are not tied to any particular track.
 
김영오님?
1. about negative tether on values
The calculation formula of the filter is very simple.
C#:
val += shift;
val *= gains;
The negative tether you mentioned can be implemented as follows: By setting shift = -1 and gain = -1,
C#:
(0.1 - 1) * -1 = 0.9
(0.2 - 1) * -1 = 0.8
2. As you said,,, so that you could draw segments and then have the plugin choose random segments to play ...
I don’t quite understand what you mean. Could you please explain it a bit more?
 
Last edited:
김영오님?
1. about negative tether on values
The calculation formula of the filter is very simple.
C#:
val += shift;
val *= gains;
The negative tether you mentioned can be implemented as follows: By setting shift = -1 and gain = -1,
C#:
(0.1 - 1) * -1 = 0.9
(0.2 - 1) * -1 = 0.8
2. As you said,,, so that you could draw segments and then have the plugin choose random segments to play ...
I don’t quite understand what you mean. Could you please explain it a bit more?
1. Thanks! I'll try that when I have a chance.
2. Meaning you have a set of clips, say 10 of them, each a hand drawn path for 10 different morphs. You press play and the plugin randomly selects one of them, plays it, then randomly selects the next one out of the pool of 10, plays it and so on. Is that possible too and I haven't understood that yet or...?
 
1. Thanks! I'll try that when I have a chance.
2. Meaning you have a set of clips, say 10 of them, each a hand drawn path for 10 different morphs. You press play and the plugin randomly selects one of them, plays it, then randomly selects the next one out of the pool of 10, plays it and so on. Is that possible too and I haven't understood that yet or...?
The random playback feature is not currently supported.
 
14mhz updated MultiCurveMapper with a new update entry:

MultiCurveMapper v0.4 20260620

● Updates
- issue : changed the tab-level save location to \\MultiCurveMapper\\tab.
- issue : UI response speed has improved dramatically (can verify it yourself by running Plugin).
● Fixed Bug
- issue : fixed bug where filter value Apply/Cancel malfunctioned. (report by @BossG )
- issue : resolve hidden errors caused by graphic cyclic loops in Unity when editing graphs.

Read the rest of this update entry...
 
The random playback feature is not currently supported.
hi 14mhz,
- a+++ on your demos for multimapper, as usual :) Very thorough, and illustrative of potential.
- would +1 request for eventual rando playback

Love the custom graph. For my usage, find am so far anyway, using one morph per tab and triggering that.
The longer time period with Pro sure adds a nice variation, and is probably just about right maxed out for my needs.
Ideally, would prefer one morph (maybe odd time 2) per tab, but alot more tabs. And that would make the random option make more sense maybe?
Two versions maybe? No idea if viable/interested.
Just sharing some rando feedback. :coffee::)
 
hi 14mhz,
- a+++ on your demos for multimapper, as usual :) Very thorough, and illustrative of potential.
- would +1 request for eventual rando playback

Love the custom graph. For my usage, find am so far anyway, using one morph per tab and triggering that.
The longer time period with Pro sure adds a nice variation, and is probably just about right maxed out for my needs.
Ideally, would prefer one morph (maybe odd time 2) per tab, but alot more tabs. And that would make the random option make more sense maybe?
Two versions maybe? No idea if viable/interested.
Just sharing some rando feedback. :coffee::)
Hello, @FantasiWrapper
In the upcoming version, this will be implemented with the following considerations:
(1) Random playback is executed according to tab-level invocation.
(2) If the chosen graph is empty or identical to the last one, another will be selected.
(3) If the randomly chosen graph has a loop property, it will keep playing until the next random selection.
Are there further aspects to take into account? :D:D:D
 
Hello, @FantasiWrapper
In the upcoming version, this will be implemented with the following considerations:
(1) Random playback is executed according to tab-level invocation.
(2) If the chosen graph is empty or identical to the last one, another will be selected.
(3) If the randomly chosen graph has a loop property, it will keep playing until the next random selection.
Are there further aspects to take into account? :D:D:D
That sounds great! 🥰
Glad it will respect loops.
Am using this as arguably as an expression randomizer for certain penetrations (triggered).
In line with that, more tabs (less morphs) would be helpful, for my needs anyway.
This is kinda why raised question of 2 versions?
(1) # of morphs/tabs = stays the same as now
(2) more tabs/less morphs per tab (or maybe even one only)?

Whatever you do, is already so much better.
So if you can't make more tabs for any reasons, totally understand.
 
That sounds great! 🥰
Glad it will respect loops.
Am using this as arguably as an expression randomizer for certain penetrations (triggered).
In line with that, more tabs (less morphs) would be helpful, for my needs anyway.
This is kinda why raised question of 2 versions?
(1) # of morphs/tabs = stays the same as now
(2) more tabs/less morphs per tab (or maybe even one only)?

Whatever you do, is already so much better.
So if you can't make more tabs for any reasons, totally understand.
I implemented it like this:
1. The number of tabs remains the same - when the UI window is closed, there’s no performance overhead at all. However, during editing, if the number of graphs increases, the load becomes heavy (since each tab doubles the number of graphs).
2. The number of graphs per tab has been increased to 4 (in the Pro version it’s 8).
3. I added a Start (Random) button so that when clicked, if it’s not currently playing or if there are graphs not yet set up, one of them will be randomly executed.
That’s how it works. Would you like to take a look?
14mhz.Plugin-MultiCurveMapper.5a.gif

A point we need to consider together :
If Expression A is playing randomly and then switches to Expression B, the morph values of Expression A remain without being reset. When Expression A is randomly selected again, the difference between the starting value and the previously interrupted value causes the morph to jump erratically.
Of course, a solution is possible, but since the purpose of this plugin is simple mapping, handling it within the plugin would go beyond its intended scope and end up turning into spaghetti code. o_O
 
Last edited:
Back
Top Bottom