Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER for Live Use

Reply
 
Thread Tools Display Modes
Old 01-17-2015, 12:02 AM   #1
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default Developing for live performance

Being a (rather experienced) programmer and a (rather infant) Musician, using Reaper (additionally to using it's great DAW features for post-production) as a realtime VST host for live playing, I'd like to do some home-brew additions to the obvious "standard" features.

- I might want to modify Midi messages sent from my master-keyboard and breath controller on their way to the VSTs and VSTi's I placed in Reaper tracks.
- I might want to modify the Midi and/or Audio Routing by remote controlling same via programmable algorithms that in turn are triggered by Midi messages.
- I might want to switch VSTs on and off to save CPU power consumed by VSTs that are not routed to the Audio output.

In fact I feel that it should be rather easily possible to do a (set of) add-on's for Reaper to create a functionality that otherwise could be obtained by a combination of tools (most of which I already did test) like "Boeme's MidiTranslator", "RackPerformer", "Forte", the (really sadly) discontinued Native Instruments' "Kore", Native Instruments' "KOMPLETE KONTROL-Software (which seems to require a rather expensive € 500 License of at least "Komplete"), "and/or (maybe) the AKAI "VIP" software coming with their upcoming controller keyboards. Also "Muse Receptor" does this, but here, the (Linux based) software is not available without the (rather expensive) Computer Rack.

Of course I will provide any results here for free.

I found that to allow this, Reaper provides several APIs.

- The standard "VST" API: I know that I can fetch an SDK from Steinberg (plus helpful stuff like "JUCE") and will be able to do my own VSTs in C++ language.
- The (seeming standard, too) "DX" API: I have no knowledge about same, yet
- The (seeming standard, too) "JSFX" API that seems to allow to do plugins as Java Script applets.
- the "OSCII" interface providing its own "EEL2" scripting language
- the "Reaper Extension SDK", allowing for native Reaper additions in C++
- ReaScript (I did not take a look there, yet)
- did I find all options ?

There also is the (seeming standard) "AAX" API: I don't know much about same, yet. I don't suppose Reaper provides this API.


Is there a "compact" description comparing the different ways of doing "programming for Reaper" ?

Please let me know if such a "live Reaper" extension is already existing (commercial or free), or if a project aiming on this target is already in the works.

-Michael

Last edited by mschnell; 01-17-2015 at 03:34 AM.
mschnell is offline   Reply With Quote
Old 01-17-2015, 04:16 AM   #2
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Quote:
Originally Posted by mschnell View Post
- The (seeming standard, too) "JSFX" API that seems to allow to do plugins as Java Script applets.

There also is the (seeming standard) "AAX" API: I don't know much about same, yet. I don't suppose Reaper provides this API.


Is there a "compact" description comparing the different ways of doing "programming for Reaper" ?
JSFX are not JavaScript, JS comes from JesuSonic, which is Cockos's language derived from their Eel language.

AAX plugins are not supported in Reaper, it's a ProTools-only thing.

I am not sure if a concise and accurate document exists on the possibilities how Reaper can be programmed by 3rd parties. Writing that document would need lots of work since the options are so much all over the place...(With things overlapping sometimes, sometimes obvious things having been left out.)
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-17-2015, 04:25 AM   #3
moliere
Human being with feelings
 
moliere's Avatar
 
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,222
Default

Quote:
Originally Posted by mschnell View Post
- I might want to modify Midi messages sent from my master-keyboard and breath controller on their way to the VSTs and VSTi's I placed in Reaper tracks.
- I might want to modify the Midi and/or Audio Routing by remote controlling same via programmable algorithms that in turn are triggered by Midi messages.
- I might want to switch VSTs on and off to save CPU power consumed by VSTs that are not routed to the Audio output.
Check out http://www.thepiz.org/plugins/?p=pizmidi for a nice set of existing free plugs for ideas.
moliere is offline   Reply With Quote
Old 01-17-2015, 03:29 PM   #4
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
JSFX are not JavaScript, JS comes from JesuSonic, which is Cockos's language derived from their Eel language. ,,,
So "JSFX-plugins and "OSCII" is the same, and AAX is not an option. Making the picture less complex .

Thanks,
-Michael
mschnell is offline   Reply With Quote
Old 01-17-2015, 03:31 PM   #5
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by moliere View Post
Check out http://www.thepiz.org/plugins/?p=pizmidi for a nice set of existing free plugs for ideas.
Great !

So there are several real-life examples for VSTs with sourcecode, A good starting point indeed.

-Michael
mschnell is offline   Reply With Quote
Old 01-17-2015, 03:42 PM   #6
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

In the "general" forum, MINK99 mentioned the "mcu protocol", which is a set of well defined midi messages that allows to remote-control Reaper features (such as routing) and which could be send e.g. from OSCII (aka EEL) plugins. This does sound like a nice option for the task that I have in mind. (Supposedly such midi messages could be sent from a VST plugin, as well).

Moreover OSCII plugins seem to be able to call "User definable functions" that might be another (maybe better) way to do "internal remote-control" for Reaper.

Is there a description and/or an example for this (remote-controlling Reaper features by means OSCII or VST) available ?

-Michael
mschnell is offline   Reply With Quote
Old 01-17-2015, 09:49 PM   #7
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

You may be confused about OSCII(-bot)...There's a separate application from Cockos called "OSCII-bot" that can transform between MIDI and OSC messages. As far as Reaper is concerned, you can only control it from OSCII-bot with the possibilities that MIDI and OSC messages allow. Reaper has a fairly comprehensive support for OSC messages but for example the Reaper API functions can't be called with them. (MIDI messages are still more limited.)
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 12:04 AM   #8
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
You may be confused about OSCII(-bot)...There's a separate application from Cockos called "OSCII-bot" that can transform between MIDI and OSC messages. As far as Reaper is concerned, you can only control it from OSCII-bot with the possibilities that MIDI and OSC messages allow. Reaper has a fairly comprehensive support for OSC messages but for example the Reaper API functions can't be called with them. (MIDI messages are still more limited.)
OK. Now I am even more confused.

I did take a look at the "JSFX" Plugins. (I hope I am correct this is what I find when selecting a plugin from the "All Plugins -> JS" choice.)

I understand they are done in EEL language.

I understand that they (among other things) can take Midi input and can create midi output.

I understand that Reaper can route these midi streams.

I understand that with EEL I can call "user definable functions".

I guess that these allow for accessing Reaper functionality, that is not accessible directly by Midi, by accessing a dedicated API of Reaper's.

I did not yet find out in what language "user definable functions" can be done.

Quote:
Originally Posted by Xenakios View Post
For info on Reaper extension plugins (including Xenakios' previous extensions) :
Seemingly these use that API. Seemingly I need to do (not use) something like such a "pugin" and have it fed by midi messages fetched from a track - maybe by means of a plugin selectable as "FX" by "All plugins -> xxxx", done in EEL...

-Michael

Last edited by mschnell; 01-18-2015 at 12:14 AM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 12:09 AM   #9
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Quote:
Originally Posted by mschnell View Post
OK. Now I am even more confused.

I did take a look at the "JSFX" Plugins. (I hope I am correct this is what I find when selecting a plugin from the "All Plugins -> JS" choice.)

I understand they are done in EEL language.

I understand that they (among other things) can take Midi input and can create midi output.

I understand that Reaper can route these midi streams.

I understand that with EEL I can call "user supplied functions".

I guess that these allow for accessing Reaper functionality, that is not accessible directly by Midi.

-Michael
No, in Jesusonic plugins you can not call the Reaper API functions or any functions that are not implemented with the Jesusonic language itself. While Jesusonic is a version of Eel, it can not do the same things you can do with ReaScript when using Eel as the language. Conversely, ReaScript and Eel can not do the same things that Jesusonic plugins can do, like process audio or MIDI live.

It all IS confusing and inconsistent. That's why it can't be shortly summed up and doesn't seem to make much sense at first.
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 12:26 AM   #10
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
No, in Jesusonic plugins you can not call the Reaper API functions or any functions that are not implemented with the Jesusonic language itself. While Jesusonic is a version of Eel, it can not do the same things you can do with ReaScript when using Eel as the language. Conversely, ReaScript and Eel can not do the same things that Jesusonic plugins can do, like process audio or MIDI live.
What exactly is "ReaScript" ? Is this the language used in " Jesusonic plugins" also called EEL ?

I did find that the language in OSCII-bot is called "EEL2" (instead of "EEL").

OK I see that the "simple way" is impossible, as the "Reaper extension API" is only accessible from native code.

The other two options that seem to shimmer are:

a) OCSII-bot: I understand this is a separate executable I need to start. Same seemingly indeed can receive Midi and access some API of Reaper's. So it might be possible to - in Windows - route the Midi stream aimed for Reaper to (or through) OSCII-bot, and have the "EEL2" program access the Reaper extension API (directly or by user definable functions) when appropriate.

b) Doing a native code VST: Is it possible to access the Reaper extension API from such a dll ?

Thanks for all your explanation !
-Michael

Last edited by mschnell; 01-18-2015 at 12:47 AM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 12:34 AM   #11
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
It all IS confusing and inconsistent. That's why it can't be shortly summed up and doesn't seem to make much sense at first.


At least a comprehensive explanation of the Reaper-propriety terms used in this discussion would be very helpful:

- OSCII-bot
- JesuSonic
- JSFX
- ReaScript
- EEL
- EEL2
- User definable functions (in OSCII-bot: e.g. in what language to do these)
- Reaper Extension API (I don't even know if this is the correct name to be used to denote this specification.)
- DX / DXi / VST / VSTi (as a Reference: this of course is not Reaper propriety and explanations are easily available elsewhere)

Thanks for your patience !
-Michael

Last edited by mschnell; 01-18-2015 at 12:53 AM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 12:43 AM   #12
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
Conversely, ReaScript and Eel can not do the same things that Jesusonic plugins can do,
It would be a really stringent "dodo" for a future version of Reaper's to extend each of "JesuSonic-language", EEL, and "OSCII-bot-language" (aka "EEL2"), so that all can do the same, as well allowing for extended functionality, and reducing confusion. (And maybe either killing the term "ReaScript" or using it instead of "EELx", everywhere.)

-Michael
mschnell is offline   Reply With Quote
Old 01-18-2015, 12:49 AM   #13
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Just a short note about EEL, that's always EEL2 (EEL version 2) in Reaper, although it's commonly abbreviated to just EEL.

edit : I am now trying to create a table on my blog that attempts to show a quick overview what is possible with each programming language/"thing" in Reaper.
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 12:56 AM   #14
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
I am now trying to create a table on my blog that attempts to show a quick overview what is possible with each programming language/"thing" in Reaper.
You are my hero !
Let me know where to find it.
(I might dare to ask more questions, after having read that paper, as my endeavor seems not easy but should create a Reaper extension helpful not only for me, but for all that want to use Reaper "live" as a VSTi plugin host, and seemingly (and astonishingly) is not available yet. Please re-read the first message in this thread.)

-Michael

Last edited by mschnell; 01-18-2015 at 01:01 AM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 01:11 AM   #15
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Very preliminary version of the blog post, the table isn't very readable and there are likely errors. (It's also now missing some of the Reaper capabilities, like raw OSC messages handling, the EEL-based joystick support and WALTER. If I am going to put those into the table too, I might need to create this webpage somewhere else than on the Wordpress blog, the blog theme just doesn't work right for this kind of a large table...)

https://xenakios.wordpress.com/2015/...amming-matrix/
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 01:42 AM   #16
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Also to clarify things, OSCII-bot doesn't bring any extra capabilities to Reaper, it's a separate application that can send OSC and MIDI messages, also to other applications than Reaper. You can send OSC and MIDI into Reaper from other applications too. It just happens to be so that OSCII-bot is scriptable with the EEL language which is also available inside Reaper.
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 01:42 AM   #17
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

I printed the Table for reference.

This already is very helpful.

Please to a short list of explanations for the terms used:

- OSCII-bot
- OSC message
- JesuSonic
- JSFX
- ReaScript
- EEL
- EEL2
- User definable functions (in OSCII-bot: e.g. in what language to do these)
- Reaper Extension API (I don't even know if this is the correct name to be used to denote this specification.)
- DX / DXi / VST / VSTi (as a Reference: this of course is not Reaper propriety and explanations are easily available elsewhere)
- C++, Python, LUA (as a reference)
- LICE (as a reference, never heard of same)

In fact I don't see yet where remote-contollinig the features I need such as routing, "track activating" and VST-powering on/off is handled (maybe this is "OSC messages".

-Michael (just waiting for what you will come up with)
mschnell is offline   Reply With Quote
Old 01-18-2015, 01:50 AM   #18
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Quote:
Originally Posted by mschnell View Post

In fact I don't see yet where remote-contollinig the features I need such as routing, "track activating" and VST-powering on/off is handled (maybe this is "OSC messages".
Some of that stuff is possible to control with the C functions API(*) or with OSC messages. (Routing is tricky, there's no easy way to do that programmatically and it's not possible at all with OSC messages.)

(*) This for practical purposes is the same as the "ReaScript API".
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 01:55 AM   #19
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Relating directly to the topic of the thread...Not to discourage you too much, but the mess the Reaper 3rd party programmability currently is, has lead me to explore other possibilities than Reaper, for live performance purposes.

Currently I am looking again into learning Cycling74's Max/MSP...The 3rd party programming possibilities in Reaper seem to me to be more suited for studio production tasks and Max seems to be a better fit to build live performance set ups. I am not saying Reaper absolutely can not be made to work for live performance work, but it seems quite complicated.
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 02:54 AM   #20
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Regarding your "Feature List", some comments that you might or might not find useful:

To understand the meaning, I need to find detailed information about the "Reaper C API" and "OSC messages". An appropriate link would be useful.

I still don't understand the meaning of "ReaScript" (vs "JesuSonic Plugin"). An appropriate link would be useful.

If you say "Midi hardware input" and "Midi hardware output", you of course mean the MID API of the OS. This is not necessary "hardware" but programs like Boeme's Midi Translator" and "Midi-OX" create "Virtual Midi" devices that of course are accessible as well.

If a standard Python interpreter is used, same will be able to call user provided C functions, and hence any "custom code" should be possible.

Thanks for listening,
-Michael

Last edited by mschnell; 01-18-2015 at 02:35 PM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 03:06 AM   #21
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
the mess the Reaper 3rd party programmability currently is, has lead me to explore other possibilities than Reaper, for live performance purposes.
Of course I did check several of those. One of the most versatile (and not too expensive) seems "RackPerformer". But I am not sure if this Project is out of the "work in progress" stage and if it is here to stay. (In fact I was not even able to definitively find out if it's a decent Win 64 Bit program running 64 Bit VSTs, and I was not able to register with their rather sleepy Forum. And I am not good in speaking French )

The beauty of using Reaper for this purpose would be that this really excellent DAW with it's nice price/performance ratio is useful for _each_and_every_ musician, and hence the training we have on it can be re-used for using it as a live VST player (and vice-versa).

Hence IMHO it is an extremely viable task to provide (a set of) Plugins for Reaper that allows exactly this and - if some (supposedly very few) of the necessary API features are not available in Reaper, we should work with Cockos to make it happen. They in fact should be interested in us providing such a Reaper add-on (supposedly for free).

I do know several musicians who use Reaper for that purpose (e.g with the great "SWAM engine" based instruments (Flute, Sax, Clarinet, Oboe, Trumpet, and friends), played by means of Wind Controller hardware. Swam instruments are available only as VSTs, but not as Stand Alone programs (like the appropriate version of NI Kontakt, that I currently use side by side with Reaper). Of course a decent VST host is a lot more versatile than trying to use a set of Stand alone programs and mess around with Midi and Audio Routing in Windows. (On a Mac you have MainStage that seems to do all this "for free out of the box".)

(In fact, same being a mess or not, Reaper is known to be the DAW that provides the best 3rd party programmability of all DAWs.)

From your List it's rather obvious that we (among other things) would need to do a VST plugin. I do know that endeavor is not meant for the faint of heart, but I understand that with the VST building environment provided by JUCE it should be doable (and fun).

(On the first glance, MAX/MPS does look nice, as well, though. Please keep me informed on you findings. -- Off topic here, so use " ms ch ne ll -at- bs ch ne ll -dot- de " without the blanks. --)

-Michael

Last edited by mschnell; 01-18-2015 at 03:29 AM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 03:29 AM   #22
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

To put things really simply, based on your requirements in your first message, a VST plugin written in C++ that also uses the Reaper API is your only feasible option at the moment. That will of course be very complicated work that you might spend months or even years doing, depending on your skill level with C++.
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-18-2015, 05:49 AM   #23
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

I agree that creating a VST in C language is the only reasonable option for the task in question.

In fact I do C for embedded projects every day in my job, for rather complicated projects, so I do think that I will be able to do this part with not too much headache. I will do a test using the JUCE VST SD -> http://www.redwoodaudio.net/Tutorial...t__intro2.html, ASAP. This "tutorial" suggest no great problems.

The part I am not sure about is the "Reaper C++ extension" API (specification and ways to access it). Maybe you might be able to provide some expertise on same. So this should be doable, as well (provided this API does offer the necessary functionality).

BTW.: given a Price of $400 (what is the price of a iBook that already includes Mainstage ?), MAX/MSP is not an option for myself and many more musicians who might be inclined to use VSTs live on a Windows PC and even might already be happy Reaper users. As I gather that you are qualified for this group, maybe working together on a Reaper extension is a more interesting option than shelling out money for a ready-made solution.

BTW/2: now I do understand why the thingy I am looking for does not yet exist

-Michael

Last edited by mschnell; 01-18-2015 at 02:37 PM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 06:52 AM   #24
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 mschnell View Post
(On the first glance, MAX/MPS does look nice, as well, though.
Also check out its free 'cousin' Pure data. It looks a bit more bland, but it is free/open source. Indeed, Max/MSP or Pure data are *very* powerful apps for doing this sort of stuff. I suggest checking out the latest stable Pd-extended here: http://puredata.info/

If you'd choose to start hacking with OSC, I may be able to get you started using Max / Pd / OSCII-bot, as I've done some things with them already that are quite similar to your bucket-list.

Cheers!
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 01-18-2015, 09:48 AM   #25
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 4,219
Default

I'm so confused! I mean, we don't have a lot of specifics, but none of this looks particularly difficult. You don't need to delve into the API or even write full-on VSTs...
Quote:
Originally Posted by mschnell View Post
- I might want to modify Midi messages sent from my master-keyboard and breath controller on their way to the VSTs and VSTi's I placed in Reaper tracks.
JS plugins can do this. In fact, I'd be willing to bet that most of what you would want to do has already been written, or at least close enough that a couple quick modifications would get you where you're trying to go.
Quote:
- I might want to modify the Midi and/or Audio Routing by remote controlling same via programmable algorithms that in turn are triggered by Midi messages.
This can probably also be done in JS. It sounds a bit more complex, and might require a little "outside the box" thinking...
Quote:
- I might want to switch VSTs on and off to save CPU power consumed by VSTs that are not routed to the Audio output.
You can automate the bypass parameter of any FX, and map it to MIDI or OSC control already via a couple different methods.

So WTF am I missing?

Edit - Oh yeah! What we're missing is any specific information at all. Tell us exactly what you're trying to accomplish (maybe in the appropriate forum...) and you'll have all kinds of help in getting it done.
ashcat_lt is online now   Reply With Quote
Old 01-18-2015, 03:40 PM   #26
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by ashcat_lt View Post
(modify Midi messages sent from my master-keyboard and breath controller on their way to the VSTs and VSTi's I placed in Reaper tracks.)
JS plugins can do this. In fact, I'd be willing to bet that most of what you would want to do has already been written, or at least close enough that a couple quick modifications would get you where you're trying to go.
Xenakios' list states that a JesuSonic plugins only can modify messages within the single track that it is placed in. As the target is a central instance that controls multiple tracks this supposedly is not possible with JSes

Quote:
Originally Posted by ashcat_lt View Post
(modify the Midi and/or Audio Routing by remote controlling)
This can probably also be done in JS. It sounds a bit more complex, and might require a little "outside the box" thinking...
Xenakios' list states that a JesuSonic plugins can't use any API of Reaper's in "working" mode.
Quote:
Originally Posted by ashcat_lt View Post
You can automate the bypass parameter of any FX, and map it to MIDI or OSC control already via a couple different methods.
Maybe using OSCII-bot really might be helpful in that way. I did check the "OSCII-bot code reference", but I did not yet read a description on what exactly "OSC controls" are and how they are used in Reaper. (I already requested Xenakios to include OSCII-bot in his reference list.)

Quote:
Originally Posted by ashcat_lt View Post
Tell us exactly what you're trying to accomplish (maybe in the appropriate forum...) and you'll have all kinds of help in getting it done.
In a first stage I'd like to install multiple chains of VSTi's and VSTs (supposedly necessarily in multiple tracks), each "set" create a "sound" (This is called a "scene" in Forte). For this of course each VST's needs to use the appropriate set of parameters, either by being fed with same in realtime or by using multiple pre-programmed instances that can be switched on and off. The switching of the sounds needs to be done by midi "program change" messages.

In a second stage, with any currently selected program, Midi messages (e.g. cc's) should be "translated" in a program-specific (programmable) way before they reach the active VST(s).

(Once I am able to play with this thingy additional ideas might arise.)

At best I would like to help providing an easy-to use " musicians' " tool that allows for Reaper to succeed as a live VST player, usable instead of Mainstage, RackPerformer, Forte, or MAX/MSP.

-Michael

Last edited by mschnell; 01-29-2015 at 04:53 AM.
mschnell is offline   Reply With Quote
Old 01-18-2015, 04:00 PM   #27
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

You might also take a look at apps such as Bidule (and if you'd be on OS X, I'd also heavily recommend looking at Numerology), which excel at this sort of live performance oriented stuff, and can run standalone / as plug-in (while hosting other plug-ins itself) / ReWired. For Bidule, perhaps wait for a new version to appear, then demo it for free for 3 months.

For the REAPER's OSC implementation, I'd suggest beginning by (carefully) reading the "Default.ReaperOSC" file which has been installed into the OSC subfolder. And then again.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 01-18-2015, 04:34 PM   #28
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 4,219
Default

Still all sounds like things that either already exist in Reaper or could be done via JS and thoughtful routing.

Every couple of days it seems somebody asks the forum how to change presets in a plugin via program change message. I guess I've never read one of those threads because I don't need it, but I'm sure it's been pretty well figured out by now. Even if it can't be done, it's still not a lot more than bypass and/or mute automation.

Realtime controller re-mapping is easy. Pretty sure there's a JS plug or three that come with Reaper to do it.

Remember that each "track" in Reaper has a whole lot of parallel audio and MIDI channels to work with, and routing between them is pretty easy. Then there's the things you can do with parameter modulation and linking... I just really don't think you're making this out to be harder than it is. I think it's important to understand the various aspects you've brought up in this thread, but I don't think you need to re-write reaper to do what you want to do.
ashcat_lt is online now   Reply With Quote
Old 01-18-2015, 10:10 PM   #29
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Banned View Post
You might also take a look at apps such as Bidule ...
some messages above I listed quite a lot of such dedicated non-DAW VST-hosting programs. I did know, but did not yet take a look at Bidule, as I found others (e.g. Forte) to be more recommended. I pointed out the reasons why I (and supposedly many other musicians) would prefer Reaper if same could do the task.

Quote:
Originally Posted by Banned View Post
For the REAPER's OSC implementation, I'd suggest beginning by (carefully) reading the "Default.ReaperOSC" file which has been installed into the OSC subfolder. And then again.
Thanks a lot for the pointers !

-Michael
mschnell is offline   Reply With Quote
Old 01-18-2015, 10:24 PM   #30
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by ashcat_lt View Post
Every couple of days it seems somebody asks the forum how to change presets in a plugin via program change message.
Before starting this discussion I asked exactly this in the General forum and expected just a simple pointer on how to do this. I was astonished that nobody came up with such a recommendation, so obviously there is no simple solution. Finally, here, Xenakios explained, why there is none, and showed that it supposedly could (only) be done by creating an appropriate VST plugin (meaning that it is not impossible). He did a "Feature list" of possible tools, but here, OSCII-bot is missing, so same might be an additional option.

Quote:
Originally Posted by ashcat_lt View Post
Remember that each "track" in Reaper has a whole lot of parallel audio and MIDI channels to work with
What do you mean by "Midi Channels" ? Really "Midi Channels" (that are used for multi-timbral instruments) or "Midi Streams" (that are comparable with Audio channels) ?

Quote:
Originally Posted by ashcat_lt View Post
and routing between them is pretty easy.
Statically: Of course. The question is about doing this dynamically by Midi program change messages. Do you have an example ?

Quote:
Originally Posted by ashcat_lt View Post
Then there's the things you can do with parameter modulation
We are not in playback mode.

Quote:
Originally Posted by ashcat_lt View Post
but I don't think you need to re-write reaper to do what you want to do.
Nobody suggested any modification to Reaper itself. We are just discussing using it's features (APIs) appropriately.

-Michael

Last edited by mschnell; 01-18-2015 at 10:55 PM.
mschnell is offline   Reply With Quote
Old 01-19-2015, 01:21 AM   #31
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Quote:
Originally Posted by ashcat_lt View Post
Realtime controller re-mapping is easy. Pretty sure there's a JS plug or three that come with Reaper to do it.
If you are sure, then point out the names of those JS plugins.

It's not easy, convenient and flexible to do controller remappings in a JS plugin. So even if there exists some JS plugins to do that, they'd be limited in what they can do.

My assumption here from the beginning has been that the original poster wants full control over everything without dirty hacks or "outside of the box" thinking. This is the Reaper developer forum after all...
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-19-2015, 03:13 AM   #32
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Banned View Post
This does not seem to be a VST host...

-Michael
mschnell is offline   Reply With Quote
Old 01-19-2015, 03:49 AM   #33
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
My assumption here from the beginning has been that the original poster wants full control over everything without dirty hacks or "outside of the box" thinking. This is the Reaper developer forum after all...
Yep see post from 1, 18, 02:40 PM

-Michael
mschnell is offline   Reply With Quote
Old 01-20-2015, 03:12 AM   #34
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

trying to gather the necessary information:

I assume the VST to be done needs to use either or both of the "Reaper C++ extension API" and "OSC messages".

I understand that SWS uses "Reaper C++ extension API", and the OSCII-bot uses OSC messages.

How is the "Reaper C++ extension API" and OSC ( -> http://en.wikipedia.org/wiki/Open_Sound_Control ) related ?

Where to find the exact specifications describing these Reaper APIs ?

(I already found "Default.ReaperOSC" and http://www.reaper.fm/sdk/plugin/plugin.php . This does help a lot...)

-Michael

Last edited by mschnell; 01-20-2015 at 07:11 AM.
mschnell is offline   Reply With Quote
Old 01-21-2015, 12:21 PM   #35
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by mschnell View Post
There they say:

"From REAPER, run this action:
[developer] Write C++ API functions header "

I fail, to find "[developer]" in the Reaper GUI, nor any more explicit explanation in the Internet.

What am I supposed to do ?


-Michael
mschnell is offline   Reply With Quote
Old 01-21-2015, 12:44 PM   #36
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Quote:
Originally Posted by mschnell View Post
There they say:

"From REAPER, run this action:
[developer] Write C++ API functions header "

I fail, to find "[developer]" in the Reaper GUI, nor any more explicit explanation in the Internet.

What am I supposed to do ?


-Michael
Use the actions list window to find the action. (Actions in the main menu.) Reaper has tons of actions that don't appear by default in the menus or don't have keyboard shortcuts. The action list is the way to find and manage them.

That will give you the C functions API only, by the way. There's another header that has additional stuff, such as C++ base classes.

You can get both from this link :

http://ge.tt/2ERBxz52/v/0?c

But for the C API, the one generated by Reaper will probably be more up to date.

(As a side note, I am still in the process of making Max/MSP work for me, using the 30 day trial mode. They by the way have a $10 a month subscription option too, instead of having to pay the $400 to get the full license. If they didn't have the subscription available, I'd probably not be looking at using Max, the $400 is a bit too steep...Of course if I end up using Max for over 40 months, it would bit of a financial loss, I suppose...)
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-21-2015, 12:50 PM   #37
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Just to keep you informed about what I found up to now:

The extension API is done by providing a DLL with a certain name and Reaper will load it when starting: ( -> http://wiki.cockos.com/wiki/index.ph...n_Architecture )

A VST of course is a DLL, as well.

Now I understand that I need to use a VST to be able to read and modify the Midi stream that is routed within Reaper.

Additionally I need to use the Extension API to be able to control things like kin realtime switching the "bypass" for VST(i)s.

Hence the planned project needs to result in two DLLs that communicate via a mutual API (one DLL loading the other) or a data stream (e.g. Windows Messages, a named Pipe or TCP/IP).

As already said: not a task for the faint of heart, but rather certainly doable.

-Michael
mschnell is offline   Reply With Quote
Old 01-21-2015, 12:58 PM   #38
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,913
Default

Quote:
Originally Posted by mschnell View Post

Hence the planned project needs to result in two DLLs
You can do just a single DLL that will be loaded as a VST plugin. That plugin can then, using "special means", also use the Reaper API functions. Those "special means" are so special though, that I can't at the moment remember how it exactly should be done. It does work though, and I've done some little tests with that a long time ago. The author of the "Playtime" VST plugin is also currently using that technique in his product.

http://www.helgoboss.org/projects/playtime/
__________________
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, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 01-21-2015, 01:05 PM   #39
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
The action list is the way to find and manage them.
Found it. Reaper is a lot greater than visible on the first sight

Quote:
Originally Posted by Xenakios View Post
But for the C API, the one generated by Reaper will probably be more up to date.
Yep. The one created by Reaper is more than double size ! (32 an 64 Bit version are identical, sauf a single comment line.)


Quote:
Originally Posted by Xenakios View Post
(As a side note, I am still in the process of making Max/MSP work for me, ...
( AFAIK, Max/MSP is the most expensive of a great number of available live VST Host programs. Why did you choose that one ? )

If we get this working, I am sure you and I will be more happy with Reaper as a live VST host: zero $$$, the well know Reaper user interface, and - now and later - we will implement any features we might find useful. Another obvious advantage is that you can use existing and easy-to-do "JesuSonic" EEL script plugins in your live-setup.

(And maybe we might be able to collect some donations )

-Michael

Last edited by mschnell; 01-21-2015 at 10:49 PM.
mschnell is offline   Reply With Quote
Old 01-21-2015, 01:14 PM   #40
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,868
Default

Quote:
Originally Posted by Xenakios View Post
You can do just a single DLL that will be loaded as a VST plugin. That plugin can then, using "special means", also use the Reaper API functions.
That of course would make things a lot easier.

In fact a DLL is just a set of named functions that can be called by the host. Hence "in principle" the same DLL file could be as well a Reaper Extension and a VST, by providing both sets of named functions. (This might be such a "special means".)

Quote:
Originally Posted by Xenakios View Post
Those "special means" are so special though, that I can't at the moment remember how it exactly should be done.
Of course finding the specs how to do the "special means" will be the first task do be done, before planing the exact layout of the project.


Thanks for your interest. (Maybe you might want to send me an E-Mail, so that we don't flood this forum with the really project-specific communication.)

-Michael

Last edited by mschnell; 01-21-2015 at 10:46 PM.
mschnell 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 07:22 PM.


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