Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER Q&A, Tips, Tricks and Howto

Reply
 
Thread Tools Display Modes
Old 08-23-2009, 11:26 PM   #1
Reverbio
Human being with feelings
 
Reverbio's Avatar
 
Join Date: Mar 2008
Posts: 168
Default Midi Controllable Sends Tutorial

After trawling through the forum desperately trying to figure out something that should be relatively simple, i have found a workaround that i would like to share with everyone who may find it useful.
.
Controlling sends to effects via midi or a control surface using cc's.
.
The key to this working is the JS: Utility/sender plugin by 'Biloon and Schwa' - http://forum.cockos.com/attachment.p...0&d=1186593070 Thank you ! i don't know what to say !
.
I make a lot of roots dub music and this has been bugging me for quite some time and i have seen countless posts about it.
.
First if someone has already explained how to do this then please add your thread
.

I will try to keep it as simple as possible, so here goes.

You need 2 tracks
One that has your Audio Part ( hotpantz for some reason here lol )
And One to Accommodate the dry signal.

Setup an FX chain on the first track ( hotpantz )that has JS: Utility/sender followed by the effect you wish to send to ( ReaDelay in this case ).
.
Setup the JS: Utility/sender as follows.



The Main Output 1+2 are switched off
And the send is assigned to output pins 3+4

Note: you can also edit the maximum point for the send slider to prevent it from going into clipping by editing the JS file.
Press the edit button and bring up the environment window and click on Open in external editor as follows.



Now change the maximum value for the slider to something that suits, let's say 0 for now .



Then hit save in the text editor and then click on Full recompile/reset and exit the Js environment, you should now see the send sliders maximum value at 0db.


Next setup the ReaDelay as follows.



Note that the input's are set to 3+4 matching the outputs of the JS send plugin. And the outputs are set to 1+2. Also i have removed the dry signal from the delay.

NOTE:If at this time you haven't created another track to put the dry signal now's the time to do so.

Next click on the Track 1's IO button ( hotpantz ) to bring up the routing window


Add a new send to the second track and set it to Pre-fx as follows


Next bring up the routing window for track 2 and set it to recieve from track 1 like this.


You should now have a dry version playing on track 2 and an effected version on track one.

And a midi controllable send !

There is also a multisend version in the download that can be used to send to more effects in the chain Thanks again to Biloon and Schwa for the plugs !

Hope this solves a few peoples headaches pm with any suggestions to improve this tutorial or for anything that maybe unclear etc.

DUB IT CHA !

I made an expanded sender plugin giving 7 inline automatable sends per track https://stash.reaper.fm/v/3534/sender_multi8.zip , for use with the 'Mixer_8xS-1xS' plugin ( put last in the chain ) gives you automatable return levels for each effect in line too much fun ! and you still have your dry version too of course !

Last edited by Reverbio; 08-26-2009 at 11:25 AM. Reason: add on
Reverbio is offline   Reply With Quote
Old 08-24-2009, 01:46 AM   #2
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,359
Default

Wow, that's a cool workaround . Thanks for pointing to the sender plugs.

You can also do the conventional "send several tracks to a single FX bus track" approach:

* Set the track(s) you want to send from to 4 channels

* insert the JS: sender plugin and set it up just as Reverbio describes above on each of those tracks. They need to send to channels 3/4 and Output 1/2 needs to be off. The "Send Level" fader is the one you want to control via MIDI.

* Create a track to contain the FX you want to send to. Obviously, set the FX to 100% wet.

* Create receives from all tracks that you want to be sended to the FX bus and make them receive from channel 3/4 of those tracks. Decide yourself if you want them pre or post fader, but they need to be post FX. I think it's best to set them to unity gain (zero dB).

Now you can MIDI control the send level faders (of that JS: sender plugin) for each of the sending tracks



good stuff!

Last edited by gofer; 08-26-2009 at 10:19 AM. Reason: cleaned it up a bit for (hopefully) easier reading
gofer is offline   Reply With Quote
Old 08-24-2009, 05:11 AM   #3
timbesamusca
Human being with feelings
 
Join Date: Jan 2009
Location: Utrecht, The Netherlands
Posts: 3
Default

Great, thanks!

Last edited by timbesamusca; 08-24-2009 at 05:15 AM.
timbesamusca is offline   Reply With Quote
Old 08-26-2009, 06:29 AM   #4
PiaKraft
Human being with feelings
 
Join Date: Jul 2009
Posts: 44
Default

Waay cool! Thanks much...Pia
PiaKraft is offline   Reply With Quote
Old 12-10-2011, 03:12 AM   #5
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

So few replies to such a big topic? Interesting. Do we have any maximum limit to how many receives we can add to a track? For example if I have in the project 100 tracks, and 1 Send Delay Bus, and I want to be able to send all those 100 tracks to this delay, then I need to add 100 receives in this Delay Bus. In short, if you have N tracks, you need N receives in all of your SEND BUSSES, if you want to have the freedom of sending any of the N tracks to this SEND BUS.

Last edited by TonE; 12-10-2011 at 03:24 AM.
TonE is offline   Reply With Quote
Old 12-10-2011, 03:54 AM   #6
jedstar2000
Human being with feelings
 
jedstar2000's Avatar
 
Join Date: Apr 2009
Location: Bristol uk
Posts: 1,006
Default ^^^^^

Yes But watch out it can become cpu hungry.
Quote:
Originally Posted by jedstar2000 View Post
Hears a neat little track template that gives you 4 fx buses and 12 tracks all with send that can be controlled via midi using an audio spliter vst.

https://stash.reaper.fm/v/3829/Midi%20Sends.rar




Js version works but bleads signal threw and really power hungry

8 tracks killed my 1.8 centrino lappy


Console version

12 tracks uses 40% cpu with each track using 2 to 3%

60 tracks plus on my main DAW.

There are two vsts in each track.

The first a 4 way splitter for the 4 sends and the second a separate 2 way splitter which could be inserted at any place in the vst chain (pre/post eq .ETC)

Console can be downloaded at http://console.jp/en/download.html

I exspect you could run the installer and just use the vst's needed without needing to purchase a license (Although in my eys its the best modular vst host and worth the dollar ) . If not Maybe someone can write a more efficient 4 way js splitter for reaper

Or the devs could sort out the long awaited FR.

__________________
...............Reaper the DIY DAW.....................
MultiTrack Editing Macros http://forum.cockos.com/showthread.php?t=50111
Hybrid Theme http://forum.cockos.com/showthread.php?t=131090
jedstar2000 is offline   Reply With Quote
Old 12-10-2011, 03:58 AM   #7
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

My setup has 36 tracks, and I want 4 sends for each of them. If this does not work well, then I will use only for the FOLDER/BUS tracks the 4 sends. That should be then 8 busses going to 4 sends.
TonE is offline   Reply With Quote
Old 12-10-2011, 05:49 AM   #8
jules
Human being with feelings
 
jules's Avatar
 
Join Date: Jan 2007
Location: Europe
Posts: 36
Default

Thanks a lot Reverbio. I've had the same issue for years. I have tried many work arounds (using convoluted routings based on rederecting to certain tracks and midi control the proxy track's volume fader , vsts like Senderella or Sendreacontrol etc...) but they were all rather cumbersome to use.

I really like that your workaround makes it easy to cap the maximum level of the send.

Now does anyone know how to make the fader range logarithmic or exponential in JS?

I have dug an old thread on the topic, but I'm not sure to fully understand what some of savvy posters suggest there: http://forum.cockos.com/showthread.p...rithmic+slider

cheers,

Julien
jules is offline   Reply With Quote
Old 12-10-2011, 06:12 AM   #9
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by jedstar2000 View Post
Yes But watch out it can become cpu hungry.
It would be great if it would behave as follows: No audio sent -> 0 CPU consumption. I mean just for the added receives.
TonE is offline   Reply With Quote
Old 12-10-2011, 06:46 AM   #10
33tetragammon
Human being with feelings
 
33tetragammon's Avatar
 
Join Date: Jul 2011
Location: The Universe
Posts: 35
Default

Oh man....midi controllable sends..........thanks so much, Reverbio, Biloon and Schwa!!!!
This was the only thing i was missing in Reaper. Now i can finally tweak those with parameter modulation....especially powerful when i add the 'linker' utility, which can be found here:

http://forum.cockos.com/showthread.p...ameter+linking
33tetragammon is offline   Reply With Quote
Old 12-10-2011, 07:11 AM   #11
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
Default

If anyone should have missed it, SendReaControl is another possibilty for Midi controllable sends.

http://forum.cockos.com/showpost.php...2&postcount=69

More info here:

http://forum.cockos.com/showpost.php...0&postcount=62

and here:

http://forum.cockos.com/showpost.php...8&postcount=26
nofish is offline   Reply With Quote
Old 12-10-2011, 08:23 AM   #12
33tetragammon
Human being with feelings
 
33tetragammon's Avatar
 
Join Date: Jul 2011
Location: The Universe
Posts: 35
Default

Quote:
Originally Posted by nofish View Post
If anyone should have missed it, SendReaControl is another possibilty for Midi controllable sends.

http://forum.cockos.com/showpost.php...2&postcount=69

More info here:

http://forum.cockos.com/showpost.php...0&postcount=62

and here:

http://forum.cockos.com/showpost.php...8&postcount=26
Thanks for the links, but unfortunately those are Windows only, and i'm on a Mac...bummer....
33tetragammon is offline   Reply With Quote
Old 01-03-2012, 05:18 PM   #13
Jeronimo
Human being with feelings
 
Jeronimo's Avatar
 
Join Date: Sep 2007
Location: Montreal, QC
Posts: 518
Default

Did I miss something?
Can't we do that with the action "Adjust track send X volume (MIDI CC Only)"??
__________________
www.jeracravo.com
Jeronimo is offline   Reply With Quote
Old 01-03-2012, 06:23 PM   #14
33tetragammon
Human being with feelings
 
33tetragammon's Avatar
 
Join Date: Jul 2011
Location: The Universe
Posts: 35
Default

Quote:
Originally Posted by Jeronimo View Post
Did I miss something?
Can't we do that with the action "Adjust track send X volume (MIDI CC Only)"??
Yes, you can. But that way you can't modulate sends with audio, lfo's etc.
33tetragammon is offline   Reply With Quote
Old 01-03-2012, 06:41 PM   #15
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Is this data written as automation?
TonE is offline   Reply With Quote
Old 01-03-2012, 08:21 PM   #16
Jeronimo
Human being with feelings
 
Jeronimo's Avatar
 
Join Date: Sep 2007
Location: Montreal, QC
Posts: 518
Default

oops, my bad!
__________________
www.jeracravo.com
Jeronimo is offline   Reply With Quote
Old 01-04-2012, 06:03 AM   #17
33tetragammon
Human being with feelings
 
33tetragammon's Avatar
 
Join Date: Jul 2011
Location: The Universe
Posts: 35
Default

Quote:
Originally Posted by TonE View Post
Is this data written as automation?
Yes it is.
33tetragammon is offline   Reply With Quote
Old 01-04-2012, 06:08 AM   #18
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by 33tetragammon View Post
Yes it is.
Hmm, then we have automatable sends, at least for my manual-use-purposes this would be enough, I just want to be able to modify them over my hardware midi controls, plus recording it as automation to be able to make edits on them, sometimes. Thanks for the hints. No need to do complicated routing then.
TonE is offline   Reply With Quote
Old 01-09-2012, 04:33 AM   #19
evanrabby
Human being with feelings
 
evanrabby's Avatar
 
Join Date: Dec 2007
Location: Please add midi learn to sends. Nuts and bolts before games!
Posts: 296
Default long ignored send learn

amazing how this isnt addressed still. i just checked in today for the first time in close to a year, and 2 years past the original FR.
there is not even a FR for it anymore.
is this sabotage?
yes im a bit annoyed, but it isnt even addressed.
id quit ever looking or responding if the devs simply reply and say NGH....
for now, the easiest no load workaround is to use the free g free gain plugin which is learnable, per send learn per track, on the track, and route it using an unused internal routing channel to a send set to that channel, turnd up to 0db.
works perfect but requires many clicks and a long stare at the routing channel window.
__________________
"The Hottest places in Hell are reserved for those who, in time of moral crisis, maintain their neutrality." --Dante, "The Inferno"
and: www.larouchepub.com organize to effect change
evanrabby is offline   Reply With Quote
Old 01-16-2012, 06:16 AM   #20
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by evanrabby View Post
for now, the easiest no load workaround is to use the free g free gain plugin which is learnable, per send learn per track, on the track, and route it using an unused internal routing channel to a send set to that channel, turnd up to 0db.
works perfect but requires many clicks and a long stare at the routing channel window.
Why not doing as mentioned above instead?
TonE is offline   Reply With Quote
Old 01-16-2012, 07:37 AM   #21
evanrabby
Human being with feelings
 
evanrabby's Avatar
 
Join Date: Dec 2007
Location: Please add midi learn to sends. Nuts and bolts before games!
Posts: 296
Default

to stay totally on point, why cant i do as above?
im saying, all we should be doing now is right click learning the send like any plugin window can.
but otherwise, i do as i said because its actualy the easiest way to get a NO CPU LOAD send automation for a whole set of sends, anywhere on the mixer.

all others are either cpu using, or buggy, or even slower to implement...
__________________
"The Hottest places in Hell are reserved for those who, in time of moral crisis, maintain their neutrality." --Dante, "The Inferno"
and: www.larouchepub.com organize to effect change
evanrabby is offline   Reply With Quote
Old 01-16-2012, 09:53 AM   #22
Andy Hamm
Human being with feelings
 
Andy Hamm's Avatar
 
Join Date: May 2011
Location: Canada
Posts: 1,371
Default

Why don't you just do this?

See attached pic

Asssign key, adjust track send x?
Attached Images
File Type: jpg Add CC.jpg (66.1 KB, 262 views)
Andy Hamm is offline   Reply With Quote
Old 01-16-2012, 10:19 AM   #23
evanrabby
Human being with feelings
 
evanrabby's Avatar
 
Join Date: Dec 2007
Location: Please add midi learn to sends. Nuts and bolts before games!
Posts: 296
Default

each send has to be simultaneously on its own unique, separate knob, ready to be turned along with 2 or even more other sends (2 engineers) simultaneously, in real time, no time for paging or selecting knob functions.

there is a group action:
select action:
'select n channel'
combine with action:
'adjust send #n' (up to 8 tho i have 9 in my board per channel...)
assign multiple action to a midi knob
but alas, it lags, is sluggish and takes up cpu time strangely, and also fails to update send GUI all the time.

also its still a convoluted workaround for any new send learn needed.

btw that pic is too small to see... lol!
__________________
"The Hottest places in Hell are reserved for those who, in time of moral crisis, maintain their neutrality." --Dante, "The Inferno"
and: www.larouchepub.com organize to effect change
evanrabby is offline   Reply With Quote
Old 01-25-2012, 10:42 AM   #24
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by evanrabby View Post
for now, the easiest no load workaround is to use the free g free gain plugin which is learnable, per send learn per track, on the track, and route it using an unused internal routing channel to a send set to that channel, turnd up to 0db.
works perfect...
Hmm, why is this better than the utility/sender from above?
TonE is offline   Reply With Quote
Old 02-08-2012, 05:13 AM   #25
strinxx
Human being with feelings
 
strinxx's Avatar
 
Join Date: Jun 2009
Posts: 300
Default

Quote:
Originally Posted by nofish View Post
If anyone should have missed it, SendReaControl is another possibilty for Midi controllable sends.

http://forum.cockos.com/showpost.php...2&postcount=69

More info here:

http://forum.cockos.com/showpost.php...0&postcount=62

and here:

http://forum.cockos.com/showpost.php...8&postcount=26
I just found out about this cool plugin! Thanx for that!

Though I have to say, it's a shame that we don't have this natively in Reaper now. How many years are gone since this FR came up...?

This plugin is 32bit only, any chance we get this for Reaper4 64?
Jeffos pleeeeeaaaaaseee...?
strinxx is offline   Reply With Quote
Old 04-22-2012, 08:50 PM   #26
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by Jeronimo View Post
Did I miss something?
Can't we do that with the action "Adjust track send X volume (MIDI CC Only)"??
The problem with this approach is you have to select a particular track. I want to do this without having to select anything. Also manipulating multiple sends in parallel up to 100 or more, all in constant movement. When will Reaper leave the current stone-age-state regarding sends midi hardware control? NEVER or at some point in future? This is for sure a showstopper for Reaper live-usage.
TonE is offline   Reply With Quote
Old 04-25-2012, 01:37 PM   #27
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

Quote:
Originally Posted by 33tetragammon View Post
Thanks for the links, but unfortunately those are Windows only, and i'm on a Mac...bummer....
Quote:
Originally Posted by strinxx View Post
This plugin is 32bit only, any chance we get this for Reaper4 64?
Jeffos pleeeeeaaaaaseee...?
haha! yeah, this should come at some point, mac builds too..
@nofish ..and proper doc
Jeffos is offline   Reply With Quote
Old 04-25-2012, 02:28 PM   #28
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Fwiw, imho the OSC<-->MIDI route is the best way to do this. For now, at least.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 04-25-2012, 02:56 PM   #29
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

I don't see what you mean banned.. can you elaborate a bit?
(what we need here is to learn routings so that they still work when moving tracks, so that it works even if the track is not selected and to save learn data in project file, SendReaControl does that)
Jeffos is offline   Reply With Quote
Old 04-25-2012, 03:47 PM   #30
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by Jeffos View Post
I don't see what you mean banned.. can you elaborate a bit?
(what we need here is to learn routings so that they still work when moving tracks, so that it works even if the track is not selected and to save learn data in project file, SendReaControl does that)
Sure Jeffos, will be glad to (and please do tell if you need more).

What I mean is that I use an OSC configuration that allows me to get/set track send levels (like the default one does), and convert OSC<-->MIDI externall, using Pure data, Max, or similar (the possibilities are endless, but the point here is using OSC, not a particular method of doing the conversion). That works absolutely great for me. No need to mess around with plugins on each track, low overhead (compared to audio), works perfectly with high resolution MIDI (I'm using both 7 bit and 14 bit MSB/LSB paired modes, so I can switch between coarse/fine control modes), feedback to the controller works great (especially awesome if you have motorized faders), reconfigurable on-the-fly (unlike compiled code; if I suddenly decide I want to add a VCA style mixing feature to the sends, globally, it takes just a bit of clicking around, while I don't have to skip a beat), and no OS-specific or third party developer dependencies.

I don't see why MIDI controls would *have* to stick to moved tracks, as long as the system works for all track sends without having to select anything. In fact, I think that would be really stupid. Let's say you start with CC# 1 for send 1 on track 1, CC# 2 for send 1 on track 2, etc. Then after a while, having moved a few tracks around, the entire relation between CC# numbers and track numbers is broken. I don't want to clean uop that mess, sorry - workflow killer. And I also don't need 'learn' data in a project, imho it should work for every project as soon as you start one.
And thus, I also have no need to remap such MIDI controls: sends are and will be just that: sends. They don't change. *Ever.* The only thing I have to know about them, is that the master track doesn't have them - they're hardware outputs in that special case.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 04-26-2012, 01:35 AM   #31
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Welcome Banned also here with OSC

I would like to know what your concrete made assumptions are for your use case scenario? I suppose this would always make a difference in the used technology. Anyway, I would like to try out also OSC finally, with Reaper, if it can make things easier, e.g. for controling send levels. See my last post and problem definition: http://forum.cockos.com/showthread.php?t=101740

I would of course also like if every new project would have automatically, intelligently, exactly that midi/osc-control-mapping which I would like to have. However, so far, the only method I am aware of is changing the in-project-mapping definitions, by editing the .rpp files PARMLEARN values.

If you say, in a different use-case-scenario it is possible to achieve exactly the same result, without doing all this, and starting with an empty project, I would like to learn more about these possibilities. I can not imagine yet, how this should work?

Something like:
Code:
if (number-of-tracks == 0)
  no-midi-mapping
if (number-of-tracks > 0)
  for each track do
    midi-map parameter1 to ...
    midi-map parameter2 to ...
    ...
    midi-map parameterN to ...
So I would NEVER care about midi mapping, just add or remove tracks or sends, and automatically it would auto-add the desired midi mapping to my new setup. I would only need to define somewhere a default midi mapping algorithm for a single tracks parameters, also for a single send tracks parameters.

I want anyway just a fixed structure always, 8 bus tracks, from each outgoing 4 sends A,B,C,D. If they would auto-midi-map always, that would be another bonus.

If you have 1000 additional tracks in your project, you only need to route those into the above 8 bus tracks. 8 * 4 = 32 send levels to play with in real-time should be more than enough.
TonE is offline   Reply With Quote
Old 04-26-2012, 01:55 AM   #32
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Banned, did you share your OSC configurations anywhere or not yet?
Quote:
Originally Posted by Banned View Post
What I mean is that I use an OSC configuration that allows me to get/set track send levels (like the default one does), and convert OSC<-->MIDI externall, using Pure data, Max, or similar (the possibilities are endless, but the point here is using OSC...

... And I also don't need 'learn' data in a project, imho it should work for every project as soon as you start one. And thus, I also have no need to remap such MIDI controls: sends are and will be just that: sends. They don't change. *Ever.*
TonE is offline   Reply With Quote
Old 04-27-2012, 01:39 AM   #33
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

@banned: thanks for the details, I see. I think we are just speaking of different things..

back to the roots: basically, what we want here is to move a send fader and learn it. what you're talking about is great but it won't help here. we also want the learned thing not being tied neither to track numbers nor to track selection, these are the requirements. I understand what you say but it is different, I'd say it is "control surface minded" if I may.
on a side note, changing track numbers, i.e. moving tracks is not stupid, it happens often here and BTW it also means "removing" tracks which happens -all the time- here. "arrgg! wait guys!! my expression pedal now controls the lights! Re-assigning!". There are some use cases where it should still work whatever happens.

EDIT: btw, I also like solutions w/o "third party developer dependencies" that requires "Pure data, Max, or similar" haha ha
Jeffos is offline   Reply With Quote
Old 04-27-2012, 02:51 AM   #34
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Does SendReaControl still work correctly after a track reordering, without any extra work, or not?
TonE is offline   Reply With Quote
Old 04-27-2012, 06:32 AM   #35
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by TonE View Post
[...] I would like to know what your concrete made assumptions are for your use case scenario? I suppose this would always make a difference in the used technology.
I'm not sure what you are getting at. Are there any specific assumptions you'd rather avoid?

I assume having a v4.20+ version of REAPER for OSC control surface support, and having it enabled with some appropriate OSC configuration, i.e. using a message pattern for the send levels. Generally speaking, I'm simply using the default OSC config (with various bits commented out, so nothing special there, but I'll be glad to post an example if that's helpful).

I also assume you have some way of handling OSC<-->MIDI conversion. I don't want to impose any specific choice for that, but I'm currently using mostly Pd for experimenting and prototyping, and discussing and sharing examples, because it's free and multi-platform. As it is just one example out of many, use whatever suits you best.

(Btw, Pd also seems like a good choice for extending/porting a custom system; I will probably try to put my entire custom system into a small and cheap piece of hardware, using Arduino, BeagleBoard or something like that, and then expand it with some custom (DIY) controllers. But that's a different story...)

Quote:
Originally Posted by TonE View Post
I would of course also like if every new project would have automatically, intelligently, exactly that midi/osc-control-mapping which I would like to have. However, so far, the only method I am aware of is changing the in-project-mapping definitions, by editing the .rpp files PARMLEARN values.

If you say, in a different use-case-scenario it is possible to achieve exactly the same result, without doing all this, and starting with an empty project, I would like to learn more about these possibilities. I can not imagine yet, how this should work?

Something like:
Code:
if (number-of-tracks == 0)
  no-midi-mapping
if (number-of-tracks > 0)
  for each track do
    midi-map parameter1 to ...
    midi-map parameter2 to ...
    ...
    midi-map parameterN to ...
That is how REAPER's OSC support works out-of-the-box.

So the MIDI-->OSC mapping is the only thing left to do (and OSC-->MIDI as well if you require feedback, which I typically assume, so I often just speak of MIDI<--OSC conversion), and you could of course come up with various ways to do that. Simple, complex, clever, stupid, you name it.

Your fixed structure example with 8 'bus tracks' resembles the default OSC specs a lot:
Code:
[...]
DEVICE_TRACK_COUNT 8
DEVICE_SEND_COUNT 4
...]
Assuming those 8 'bus tracks' have adjacent track numbers (that is the type of assumption you were referring to earlier, I guess?), you'd just point a virtual OSC control surface device to the first 'bus track', and be set and done. At least if you either don't change 'bus track' numbers, or update the settings whenever you do. That could be done manually, or if you use some more intelligence in the middleware, you could e.g. parse track names and figure out where the 'bus tracks' are, using a fixed naming scheme (e.g. 'bus track' names have to start with "BUS:") or something similar. For the latter option, you can also drop the assumptions that 'bus tracks' have to be adjacent, and that there is a fixed number of them.

The only other line you'd really need in the OSC config would then be:
Code:
TRACK_SEND_VOLUME n/track/@/send/@/volume
The default OSC config uses a similar line, but also supports a message pattern for controlling the sends of the currently selected track(s):
Code:
TRACK_SEND_VOLUME n/track/send/@/volume n/track/@/send/@/volume
And if you'd want individual controls for the send levels of every track, all of the time, you'd have to raise the value of DEVICE_TRACK_COUNT (which can also be done dynamically) to a suitably high number (NB: the track count number is a maximum: if you set it to 1000, but have only have 3 tracks in your project, no messages are sent for tracks 4 to 1000).

In the latter case, you probably also want to take a good look at what OSC messages you are using, what update frequency, etc., to prevent 'flooding' the system with messages you don't need anyway. I guess we have to worry about the bandwidth / latency / performance limitations of this method just about as much as if we'd be using external MIDI directly: attempting to send 100s of parameters for 100s of tracks 100s times a second is not always the smartest choice. So we need to balance our desire for getting/setting data a bit against our systems' overall performance for optimal results. In practical terms, none of this has been a problem for me yet. But then again, I'm not using 100s of tracks. YMMV.

I could prepare a more extensive demonstration, I guess...

(I'll try to clean up and finish the mixer-related parts of my OSC conversion patches a bit before doing so anyway. Since I'm more interested in other things myself, the support of the mixer functions in my Pd patch is almost permanently in a half-finished state, while I experiment with various approaches for controls on a more general level. For an on-topic example, when I build a MIDI learn feature, it should be useable for any parameter, not merely the track send level controls.)
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ

Last edited by Banned; 04-27-2012 at 06:58 AM.
Banned is offline   Reply With Quote
Old 04-27-2012, 07:23 AM   #36
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by Jeffos View Post
@banned: thanks for the details, I see. I think we are just speaking of different things..

back to the roots: basically, what we want here is to move a send fader and learn it. what you're talking about is great but it won't help here. we also want the learned thing not being tied neither to track numbers nor to track selection, these are the requirements. I understand what you say but it is different, I'd say it is "control surface minded" if I may.
on a side note, changing track numbers, i.e. moving tracks is not stupid, it happens often here and BTW it also means "removing" tracks which happens -all the time- here. "arrgg! wait guys!! my expression pedal now controls the lights! Re-assigning!". There are some use cases where it should still work whatever happens.
Of course that's what we all want REAPER to provide natively, no argument there.

But I'm not sure that you speak for all of us when it concerns workarounds (at least, not for me, and I do still count myself in the "we" group that wants MIDI controllable sends). The method I'm suggesting is (imho) at least a great workaround for the time being, while for some ("the control surface minded", perhaps, although I am arguably the exact opposite of that - I don't call things like MIDI keyboards "control surfaces", and generally consider products marketed as such to be vastly overpriced and poorly supported proprietary crap which in no way addresses my most important needs), it is arguably a superior approach anyway. But it's not a perfect substitute for native support of MIDI controllable sends. It may reduce my need for it, but not my support for that FR, standing firm as ever.

And I completely respect anyone's requirements or desires; when I say that I think some approach is stupid, I do not mean to imply at all that anyone who thinks differently is stupid - I'm sorry if it read that way and offended anyone. I was merely trying to summarize my own opinion there before providing the underlying arguments. I'm very interested to hear why people would follow different approaches and what *they* think are the merits of the alternatives, and use many different approaches myself for different workflows. For example, when controlling a VSTi/AUi instrument plugin, I'd typically prefer MIDI assignments to 'stick'. But I just don't like that approach *for track send levels* ...

... well, not yet, anyway. I've never tried to control the lights with an expression pedal via track send levels, but it is a *very* interesting suggestion indeed.
Quote:
Originally Posted by Jeffos View Post
EDIT: btw, I also like solutions w/o "third party developer dependencies" that requires "Pure data, Max, or similar" haha ha
Touché.

Let me try again: the method I propose (using REAPER's native OSC support, and converting to/from MIDI) does not depend on any particular platform or third party, because it does not rely on any specific solution to the problem of converting OSC<-->MIDI. And, at least theoretically, I can compile something like Pure data myself, if I'd need to. So strictly speaking, I still think it is correct what I said... but I didn't think as hard about the exact formulation as if I'd have been drafting a judicial or legislative document, and still haven't, sorry, busy busy you know.

And, as a distinct discussion from using OSC, it's not so much about Pd (etc.) as well as the patch you use with it, which is pretty user configurable. If you have ever got comfortable with the cable patching system of a (virtual) modular synthesizer or music related apps like Pd, Max, REAKTOR, Numerology, Reason, Bidule, etc., chances are that you'll feel right at home.

And if I compare using something like Pure data with your proposed solution: the last time I checked, it was not available for REAPER users on OS X. (Did I miss it perhaps? If not, I'll be glad to see if my noob-level OS X dev skills can provide any help there, btw.) I'm really interested to experiment with it for myself, which I haven't yet, mainly for that reason, and I hope you do understand that I'm not trying to put down your contributions to this community in any way (to the contrary, much respect and thanks!), but am sincerely interested in discussing the merits of any viable alternative approaches to issues like these.

Still, even if it would be available on all platforms, afaik, it would still require your help whenever the user would like to modify its functionality, or whenever there turns out to be a bug somewhere, unless it's also available as source code. And then that still wouldn't work dynamically (during runtime, not compile time). Of course, to most users, availability on their platform(s) is much more relevant than being able to modify functionality, let alone dynamically, all assuming the user even understands the source code / patch / whatever being used to a sufficient level. Nevertheless, I think those are distinct advantages worth mentioning for the power users - and we have many of those here, right? I still consider myself to be a musician rather than a coder, so I don't want to stop the music nor any creative 'flow' state of mind to get into an engineering/development workflow if I can avoid it. Using a high-level graphical cable-patching system like pd or Max helps me very much in that respect. Again, YMMV, and I'm very much open to discuss the merits of any alternatives, just adding my 2 cents.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 04-27-2012, 07:35 AM   #37
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Thanks Banned, for all the great explanations. My exact minimal-fixed-structure would be as follows:

tracks 1..36 are musical tracks
next 8 tracks are bus tracks, where previous 36 tracks are routed through
next 4 tracks are send tracks A,B,C,D, where each of the bus tracks are sent to

summing up everyting: 36 + 8 + 4 = 48 tracks

For those who are interested a little more details about the first 36 tracks, which is not important for the OSC story here, just for completeness of explanation: The 36 tracks are structured as double-dj-deck structure, each consisting of 24 tracks. How can this be? Left deck is first 12 tracks 1..12, right deck is last 12 tracks 25..36. Now we have a two decks as 12 tracks each, yes. To make each deck 24 tracks big, each time the middle 12 tracks are added to it, so we have each time 24 tracks for each deck. The idea is keeping the main musical ideas in the most-left and most-right 12 tracks, and adding supportive material into the middle 12 tracks. If I want to have a transition from deck-left to deck-right, I can always mute the middle 12 tracks, and would still have enough material playing on the most-left 12 tracks, then exchange the right-decks material, then do a transition to it, by fading out slowly the left-deck, bringing in the right deck, also slowly. Then the same game can be done with the oppositie decks. So you can have a live setup with unlimited songs in sequence. The difference to a vinyl dj is, instead of using a vinyl, you are using 24 Reaper tracks for each song.
TonE is offline   Reply With Quote
Old 04-27-2012, 07:49 AM   #38
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by Banned View Post
...music related apps like Pd, Max, REAKTOR, Numerology, Reason, Bidule...
Let me add my favourite tool for doing OSC <--> Midi conversions to your list: Keykit from Tim Thompson. http://nosuch.com/keykit

So I would use either Keykit or pd. I would call Keykit 1000**2 more elegant than anything else. Only lamers use Max for Live.
TonE is offline   Reply With Quote
Old 04-27-2012, 08:07 AM   #39
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by TonE View Post
Thanks Banned, for all the great explanations. My exact minimal-fixed-structure would be as follows:

tracks 1..36 are musical tracks
next 8 tracks are bus tracks, where previous 36 tracks are routed through
next 4 tracks are send tracks A,B,C,D, where each of the bus tracks are sent to

summing up everyting: 36 + 8 + 4 = 48 tracks[...]
You're welcome.

If you can spell out exactly how you'd like a simple MIDI Channel/CC#'s address space to be mapped to those 8x4 track send levels, I can perhaps turn your use case into a little example patch that's slightly more useful than serving as an illustration for discussion only. And, do you require MIDI feedback as well?

(For practical purposes, you may still want to use something much more refined. For example: I want my hardware controls to have a 0dB maximum range whenever they're targeting any track/send/receive volume levels, so I can 'safely' throw them up, while they still have a bigger range in REAPER's UI (e.g. +12dB maximum); I also want to be able to seamlessly switch between 7 and 14 bit resolution, use different curves, acceleration, and smoothing schemes, and send out SysEx to my controller to match such choices per parameter/control pair on-the-fly, but that's all much more complicated or very specific to the controllers you're using, and thus not very suitable for a simple and illustrative example at all).
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 04-27-2012, 08:16 AM   #40
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by TonE View Post
Let me add my favourite tool for doing OSC <--> Midi conversions to your list: Keykit from Tim Thompson. http://nosuch.com/keykit

So I would use either Keykit or pd. I would call Keykit 1000**2 more elegant than anything else. Only lamers use Max for Live.
Haven't ever seen or used it before, so thanks for sharing that!

Now let's see you (or anyone else up to the challenge) making it convert REAPER's default OSC config to a usable MIDI address space using it, elegance much appreciated but not strictly required. The screenie of the patch on its homepage sure *looks* about as elegant as something made with Pd rather than with Max though.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned 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 01:30 AM.


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