Old 12-16-2015, 05:17 AM   #1
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default Lua: Mapping Panel

The mpl Mapping Panel is a LUA script for REAPER.

Features:
  • 16 macro controls for any accesible plugin parameters in current active project
  • 8 maps of macro controls
  • linking map to track or fx
  • change map with MIDICC/OSC binded actions;
  • realtime modulation beetween macro controls, also through different maps;
  • 8 routing configuration per instance;
  • unlimited number of modulation links,
  • formula per modulation link
  • support feedback routing
  • support for executable lua code as formula
  • advanced formula functions (mouse xy, manual draw curve, lfo, cycle)
  • FixedLearn engine - allow learn/unlearn MIDI/OSC controller automatically depending on current map
  • dockable GUI without any external graphics
  • configuration stored automatically into project file


Because of API limitations you CAN use it as parameter modulation but only for online render. A way to use it with offline render is putting envelopes in touch mode, record automation while playing and close Mapping Panel before rendering.


GitHub, also accessible via ReaPack extension
Requiments: REAPER 5.1, SWS 2.8.1


RMM
Short "in action" video










General Discussion thread
Attached Images
File Type: jpg 3.JPG (40.1 KB, 2269 views)
File Type: jpg 4.JPG (46.4 KB, 2231 views)
File Type: jpg 2.JPG (62.2 KB, 2197 views)
File Type: jpg 1.JPG (58.5 KB, 2227 views)
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 11-02-2016 at 10:51 AM.
mpl is offline   Reply With Quote
Old 12-16-2015, 07:16 AM   #2
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: brighton, uk
Posts: 12,412
Default

Subscribed! That is going to be insanely useful MPL!
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is offline   Reply With Quote
Old 12-16-2015, 10:34 AM   #3
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 4,307
Default

You should make a video+audio demo !!
We want to see it in action
X-Raym is offline   Reply With Quote
Old 12-16-2015, 11:37 AM   #4
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Well, basic idea is simple - to get quick access for mostly used parameters in project. And with some future tweaks it will should make midi/osc learn for small controllers (up to 8 knobs/sliders) easy.

__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 12-16-2015, 11:45 AM   #5
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: brighton, uk
Posts: 12,412
Default

so awesome!

Will it be possible to save the settings/assignments with the project?
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is offline   Reply With Quote
Old 12-16-2015, 12:00 PM   #6
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Data is project related, so it automatically stored when you save project (no need external files), but there is possibility to save/load data to/from text file.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 12-16-2015, 12:26 PM   #7
Alex Philipp
Human being with feelings
 
Alex Philipp's Avatar
 
Join Date: Mar 2015
Posts: 31
Default

Really cool! Thank You for share!
Some thoughts for future development as it only beta.
Map multiple parameters on one handle, set controlled range, and direction. (Ableton style mapping) 😀
Alex Philipp is offline   Reply With Quote
Old 12-16-2015, 12:33 PM   #8
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Quote:
set controlled range
Nice, I will take a look.

Quote:
direction
I`ll add FL Studio style mapping (by user typed formula + some presets).
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-16-2015 at 12:47 PM.
mpl is offline   Reply With Quote
Old 12-16-2015, 01:45 PM   #9
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: brighton, uk
Posts: 12,412
Default

Quote:
Originally Posted by mpl View Post
Data is project related, so it automatically stored when you save project (no need external files), but there is possibility to save/load data to/from text file.
Awesome!
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is offline   Reply With Quote
Old 12-16-2015, 01:59 PM   #10
semiquaver
Human being with feelings
 
Join Date: Jun 2008
Posts: 4,880
Default

nice!!!
semiquaver is offline   Reply With Quote
Old 12-16-2015, 01:59 PM   #11
Spacemen Tree
Human being with feelings
 
Spacemen Tree's Avatar
 
Join Date: Mar 2013
Posts: 484
Default

Mpl, this script is awesome!!!

A while back I was trying to find some plugin to do this so I could have some sort of a customized VST "pedalboard" for guitar playing.

Really looking forward to V1.

Will you make some sort of a load/save map? That make it even more awesome. Just a suggestion.
EDIT: I see you've already answered that. Very nice. Very very nice!
__________________
"After silence, that which comes nearest to expressing the inexpressible is music", Aldous Huxley
Spacemen Tree is offline   Reply With Quote
Old 12-16-2015, 03:53 PM   #12
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 4,307
Default

@mpl
This script is just WOW.
We will see how well it perform with MIDI (latency etc...).
Well done !!
X-Raym is offline   Reply With Quote
Old 12-17-2015, 12:37 AM   #13
vanhaze
Human being with feelings
 
vanhaze's Avatar
 
Join Date: Jul 2012
Location: Netherlands
Posts: 3,839
Default

Wow mpl, this is great stuff, thank you !!
vanhaze is offline   Reply With Quote
Old 12-17-2015, 04:14 AM   #14
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 7,305
Default

Cool idea, thank you.
nofish is offline   Reply With Quote
Old 12-17-2015, 09:43 AM   #15
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 503
Default

Good stuff here!

On a slightly related note, would a script be capable of mimicing a Bitwig-like macro control workflow? Here's a video demonstration of the basics:

https://www.youtube.com/watch?v=rRZd...youtu.be&t=313

This kind of functionality where you can assign a single macro control to modulate any amount of fx parameters in their own respective ranges, is one of the best features in Bitwig in my opinion. ReaScript should be capable to provide something similiar I think?
Sju is offline   Reply With Quote
Old 12-17-2015, 09:49 AM   #16
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 4,307
Default

@Sju
Nice feature indeed
X-Raym is offline   Reply With Quote
Old 12-17-2015, 11:06 AM   #17
_TIP_
Human being with feelings
 
_TIP_'s Avatar
 
Join Date: Apr 2014
Location: NY
Posts: 75
Default

First of all a HUGE thank you to mpl, amazing work as always my friend!!!
Great post Sju, this is exactly what i was looking for.
That's why i love Reaper, it's not only the program it self that ROCKS, it's also this amazing community with all the creative and thoughtful people like mpl, thank you all and happy holidays!!!

Quote:
Originally Posted by Sju View Post
Good stuff here!

On a slightly related note, would a script be capable of mimicing a Bitwig-like macro control workflow? Here's a video demonstration of the basics:

https://www.youtube.com/watch?v=rRZd...youtu.be&t=313

This kind of functionality where you can assign a single macro control to modulate any amount of fx parameters in their own respective ranges, is one of the best features in Bitwig in my opinion. ReaScript should be capable to provide something similiar I think?
_TIP_ is offline   Reply With Quote
Old 12-17-2015, 01:56 PM   #18
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Instead linking multiple parameters to one slider actually I building routing matrix for sliders with formula control and multiple linking. I found this more logical (though a bit painful to setup first time) than just have some parameters linked to one slider.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-18-2015 at 04:12 AM.
mpl is offline   Reply With Quote
Old 12-17-2015, 02:04 PM   #19
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 503
Default

Sounds awesome! By the way, is there any way to automate the parameter group? One of the parameters is the "master"?
Sju is offline   Reply With Quote
Old 12-17-2015, 09:01 PM   #20
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

I guess it should be master/slave system. Maybe "Create/Show automation lane for master" action for slave sliders or something?
The thing I don`t know is checking/returning a lot parameters will be CPU friendly. I testing everything on lightweight projects (some VST, some midi/audio items). But I didn`t tested it on my big projects yet.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-17-2015 at 11:02 PM.
mpl is offline   Reply With Quote
Old 12-18-2015, 04:11 AM   #21
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Ok, seems read mode for matrix works already))
Its time to think is it better to place routing in specified place in chunk (and stored ids and their connections) or make it slider chunk related (so removing slider remove routing).

__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 12-18-2015, 04:32 AM   #22
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 4,307
Default UI and ToolTip

@mpl
Hi !
A small UI proposition:
Having sliders/knobs infos as tooltip is not very convenient, as text scroll with the cursor.

IMHO, it would be better to have an extra lines below the sliders to display this infos, in a fixed way, to ease the reading.

Also, it would allow to display the infos without mouse over (which will be handy when we will trigger the sliders from other controller than the mouse).

Also, I'm sure it require less code than the tooltip :P

What do you think of that ?

Congrats for all the great stuff you did on this project so far !
X-Raym is offline   Reply With Quote
Old 12-18-2015, 04:45 AM   #23
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Can you draw what do you mean?
Note, I want also display this info related to slider:
- internal sends (name + thin meter)
- internal returnes (name + thin meter)
- internal mapping formula / small rectangle to showing this formila graph
- external MIDI/OSC routing info.
Cant placed it just as text somewhere currently.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-18-2015 at 04:58 AM.
mpl is offline   Reply With Quote
Old 12-18-2015, 04:59 AM   #24
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 4,307
Default

Quote:
Can you draw what do you mean?
I mean that the tooltip that is displayed on mouse hover over the sliders and know and that display track/vst infos could be displayed in a dedicated space at the bottom of the script (so yes the script will be a bit taller), to make it more readable.
Indeed, as it follows the mouse, it is not very convenient to read while adjusting.
Also, the more infos you will have to display, the more it will make sense.
You can even think of a side pannel rather than a bottom place if you want. As log as the text is fixed :P
X-Raym is offline   Reply With Quote
Old 12-19-2015, 04:44 PM   #25
J Reverb
Human being with feelings
 
J Reverb's Avatar
 
Join Date: Jul 2009
Posts: 449
Default

Hats off to you mpl, this is genius !
Especially with the parameter modulation/link to bind it to cc.

Thank you Just so so cool !

Looking forward eagerly to future updates.
__________________
I've been imitated so well I've heard people copy my mistakes. - Jimi Hendrix
J Reverb is offline   Reply With Quote
Old 12-20-2015, 07:36 AM   #26
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

modulation matrix in progress



todo for today:
-parsing routing chunk back
-damn wires
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-20-2015 at 08:17 AM.
mpl is offline   Reply With Quote
Old 12-20-2015, 08:01 AM   #27
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: brighton, uk
Posts: 12,412
Default

wow!
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is offline   Reply With Quote
Old 12-28-2015, 01:04 PM   #28
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

testing linking parameters by formula



also multiple (gui bugs fixed already, but wires would be better with curves)



and link maps to track / fx

__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-29-2015 at 12:01 AM.
mpl is offline   Reply With Quote
Old 12-29-2015, 11:32 AM   #29
Alex Philipp
Human being with feelings
 
Alex Philipp's Avatar
 
Join Date: Mar 2015
Posts: 31
Default

Just WOW!
Another script from Michael which REAPER should have natively! Thank You so much for hardworking and sharing with all us!
Alex Philipp is offline   Reply With Quote
Old 12-29-2015, 12:04 PM   #30
digitalfix
Human being with feelings
 
Join Date: Nov 2015
Posts: 84
Default

Obviously I've missed this thread .. That looks crazy clever Michael. Will check it out tomorrow hopefully.
digitalfix is online now   Reply With Quote
Old 12-29-2015, 12:11 PM   #31
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

Thanks!
Note, there are still many bugs here. And also a lot of things todo. Current developing: relative midi/osc learn (when change active map, all learn goes to same sliders in new map)
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 12-29-2015, 10:18 PM   #32
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

testing quick mapping (I just took an fx, but this feature will be mostly for sliders)



Here GetSetMIDIOSCLearn for test, if anyone interested (updated today)

Oh, and ugly visualization for wires

__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-30-2015 at 02:55 AM.
mpl is offline   Reply With Quote
Old 12-30-2015, 01:30 AM   #33
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 6,794
Default

Didn't yet get around to testing this, but looks pretty epic for a Lua script!
__________________
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
http://www.sws-extension.org/
https://github.com/Jeff0S/sws
--
Xenakios blog (about HourGlass and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 12-30-2015, 04:07 AM   #34
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: brighton, uk
Posts: 12,412
Default

indeed! awesome as usual!
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is offline   Reply With Quote
Old 12-30-2015, 04:29 AM   #35
Pasajeromoronmoreno
Human being with feelings
 
Join Date: Nov 2013
Location: Argentina
Posts: 301
Default

Woooooooaaaaa!!! Truly Epic! No better description than that!!! Thanks for this and all your contributions, one better than the other.
__________________
Living la vida loca
Pasajeromoronmoreno is offline   Reply With Quote
Old 12-30-2015, 05:26 AM   #36
noise_construct
Human being with feelings
 
Join Date: Nov 2015
Posts: 1,565
Default

Very, very impressive!

The wires are very clever and allow for quite versatile setups. Will the formulas include a relative value mode setting per knob? In your example the changes were absolute across all knobs.
noise_construct is offline   Reply With Quote
Old 12-30-2015, 06:09 AM   #37
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

noise_construct, when write mode is active (red frame) then you drag wire from output to input. When you release mouse in this mode, it checks is routing beetween these knobs already exists and if not, it creates a record in script data and store it to external state like this:

Code:
[routing]
<R_CONF_1 (first configurtion chunk)
  2 3 7 8 y=x (from map2slider3 to map7slider8 by formula y = x)
  5 5 7 8 y=x
>
...so yes, formula is per knob wire (it can be multiple wires from one knob). It is currently create links with default linear relation, editable only by hand, but I`ll do some tests with formula parser and will add some presets for formula and option to define it via native userinput dialog (unfortunately it is too small and size of this window is not scriptable).
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-30-2015 at 06:58 AM.
mpl is offline   Reply With Quote
Old 12-30-2015, 06:34 AM   #38
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 4,307
Default

This is madness ^^

@mpl

Can't wait to have an audio+video demo from you to see how well it perform :P
X-Raym is offline   Reply With Quote
Old 12-30-2015, 06:50 AM   #39
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 1,562
Default

X-Raym, It performs relatively ok for me (I tested it on small projects though). As with mouse withing script, as from midi/osc control, as from envelope/native parameter modulation.

But of course it gets a lot of variables every defer cycle, so performance can potentially make a problem with that.

I tried to minimize all graphics performance issues by blitting that stuff (there is 12 buffers already) and splitting to minor(sliders/knobs) and major(static buttons, backgrounds etc) updates to make it not so hungry for cpu. I also asked schwa about LuaJT, I`ve heard it can increase Lua performance in some way, he didn`t asked yet...

Anyway, you can try it by yourself since I shared a GitHub link.
Happy new year
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate

Last edited by mpl; 12-30-2015 at 07:06 AM.
mpl is offline   Reply With Quote
Old 12-30-2015, 07:12 AM   #40
spk77
Human being with feelings
 
Join Date: Aug 2012
Location: Finland
Posts: 2,286
Default

Awesome
Happy new year!
spk77 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 02:34 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2017, vBulletin Solutions Inc.