Old 05-07-2012, 08:00 AM   #241
jnif
Human being with feelings
 
jnif's Avatar
 
Join Date: Dec 2008
Posts: 2,111
Default

Quote:
Originally Posted by Jeffos View Post
There are such C++ examples in the SWS open source: http://code.google.com/p/sws-extensi...e/browse/trunk
That solution is kind of outside the topic of this thread.
I would like to have plug-in extension API functions to save/restore clipboard contents.

I tried to search the SWS source code but I could not find a clear example of clipboard save/restore. What is the best place to look at for an example? Are those clipboard operations platform specific or cross-platform?

jnif
jnif is offline   Reply With Quote
Old 05-07-2012, 09:23 AM   #242
sws
Code Monkey
 
sws's Avatar
 
Join Date: Sep 2007
Location: Madison, WI
Posts: 857
Default

jnif, check out the functions ClipboardToList and ListToClipboard in MarkerListClass.cpp here.

This code is cross-platform with WDL's swell, but, the OSX clipboard is "internal" to Reaper and can't be accessed from other applications. (At least last time I checked this was the case, perhaps WDL's been updated to address this.) Microsoft's SDK documentation on the clipboard functions is quite good, my code is basically a copy of their examples.
sws is offline   Reply With Quote
Old 05-10-2012, 01:42 PM   #243
Alkamist
Human being with feelings
 
Join Date: Dec 2011
Posts: 506
Default Is this possible?

Hey everyone!

I'm not sure if I'm posting this in the right thread but here it goes.

I was wondering if this is possible. I would like to code a per-project track bank that works like this:

-It has a dedicated window that can be docked or floating.

-Individual tracks or groups of tracks from the project can be dragged and dropped into this window. When they are dragged and dropped into the window, the track or group of tracks will then be saved as a track template (after prompting for a name for the track template and preference to save envelopes and/or items within the track template) in a dedicated folder that is automatically created in the project directory (the folder would be automatically titled "Track Templates").

-The window is basically a browser that is rooted with the base being the dedicated folder in the project directory. The window displays all of the current project's track templates in this folder (with drag and drop support from the window to the project itself).

-Folders can be created within the main folder via said browser window for organizational purposes.

The reason I want to do this is because I like to render tracks to stems and remove the old track from the project so I don't mess it up. Track templates make a perfect way to back up the old track that I remove other than the fact that drag and drop is not supported, nor is the ability to define a default track template folder on a per-project basis, so storing project-specific tracks in track templates requires me to search for the project directory every single time do it (a severe workflow annoyance to me).

If this were possible (see this thread http://forum.cockos.com/showthread.php?t=101854), I would be able to utilize the media explorer in place of this track bank window that I want to code. But with the lack of support my request got it probably wont happen any time soon.

I only have basic C/C++ knowledge by the way, is this biting off more than I can chew?

Any help is appreciated!

Last edited by Alkamist; 05-10-2012 at 01:47 PM.
Alkamist is offline   Reply With Quote
Old 05-10-2012, 08:29 PM   #244
Diogo Azevedo
Human being with feelings
 
Join Date: Mar 2010
Location: Brazil
Posts: 42
Default

How to use the function Main_OnCommandEx() On C++ or Python?

I have 2 projectTabs(project1 and project2). I want to mute the track1 on project1 but from project2. A remote mute from project2. The Main_OnCommandEx() uses the ReaProject* field, but I cant do it works!
Diogo Azevedo is offline   Reply With Quote
Old 06-08-2012, 08:37 AM   #245
dusanmsk
Human being with feelings
 
Join Date: Nov 2011
Posts: 109
Default How do I receive MIDI in python reascript?

Hi.

I would like to receive midi events in reascript from my masterkeyboard.

Motivation:

I'd like to move currenty selected note up/down by keypress on external midi keyboard when editing.

Thx
dusanmsk is online now   Reply With Quote
Old 08-16-2012, 05:41 PM   #246
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

I'm using msvs - how would I perform debugging? I see [developer]: Debug console in Reaper's action list but I can`t seem to make it happen.

In ReaScript I would just use ShowConsoleMsg but in C++ it seems it is not that easy.
Breeder is offline   Reply With Quote
Old 08-17-2012, 07:23 AM   #247
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by Breeder View Post
I'm using msvs - how would I perform debugging?
The answer to that doesn't really belong here. Check your PMs for a quick how-to.
IXix is offline   Reply With Quote
Old 09-28-2012, 03:56 AM   #248
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

Does anybody knows if there is a way to get currently active take envelope? I can't seem to find anything like GetSelectedTrackEnvelope that also works for take envelopes.
Breeder is offline   Reply With Quote
Old 10-02-2012, 11:13 AM   #249
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

[EDIT] forget that, bad advice: there is GetTakeEnvelopeByName(MediaItem_Take* take, const char* envname) in the API ![/EDIT]

there is nothing in the API to deal with take envs yet but since you are part of the sws project, you can do this (take vol env example):
Code:
#include "SnM_Chunk.h"
[...]
WDL_FastString tkState, tkEnvState;
SNM_TakeParserPatcher p(_item, CountTakes(_item));
if (p.GetTakeChunk(tkIdx, &tkState)) {
	SNM_ChunkParserPatcher ptk(&tkState, false);
	if (ptk.GetSubChunk("VOLENV", 1, 0, &tkEnvState) >= 0)
		ShowConsoleMsg(tkEnvState.Get());
}
(as I said in private, I'll document this SNM_ChunkParserPatcher tool "at some point" as I plan export it to ReaScripters..)

Last edited by Jeffos; 01-13-2013 at 05:06 AM. Reason: bad advice
Jeffos is offline   Reply With Quote
Old 10-02-2012, 01:03 PM   #250
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

I don`t have the time to test it right now (cause I need my rightfully deserved beer! ) but I think I tried something similar. I will check it out later.

The thing is, I only need to know if the take envelope is active/selected. Not per take but globally (because only one envelope can be active - it does not matter if it`s take or track envelope)
Breeder is offline   Reply With Quote
Old 10-04-2012, 01:02 PM   #251
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

.. active/selected *take* env: no way get that info ATM, even in state chunks :/
Jeffos is offline   Reply With Quote
Old 10-08-2012, 04:58 AM   #252
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

I have a questions that I guess only the devs can give the exact answer. So I hope they read this

I'm updating envelope chunk and in the process I'm only messing with selection token - all other values stay the same.

Spitting before/after env chunk in the console, proves that values have not changed. They are identical (except for the selection token if it changed)
However, it seems reaper redraws the envelope and it redraws it differently then it was before. As if point's value has changed.


So I guess my question is - is it only the drawing that changes and I should not be concerned or is it actually changing the envelope?

It can look kinda terrifying, for example:

User could be pretty shocked when seeing this. Before committing to SWS I would just like to know if it's only a drawing issue so when user's questions start to pop I can reassure people it does not change envelope performance in any way.

Last edited by Breeder; 10-10-2012 at 03:24 PM.
Breeder is offline   Reply With Quote
Old 10-15-2012, 07:32 AM   #253
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

Ok, this seems like a serious bug in reaper...

Bug report here:
http://forum.cockos.com/project.php?issueid=4416
Breeder is offline   Reply With Quote
Old 11-27-2012, 10:41 AM   #254
JankoNor
Human being with feelings
 
JankoNor's Avatar
 
Join Date: Feb 2012
Location: Cologne, Germany
Posts: 117
Default 2 Plug In Windows in 64bit on OSX

Hey Guys.

Anybody knows how I make them 1 only. As if I would be on 32bit?

JankoNor
JankoNor is offline   Reply With Quote
Old 11-27-2012, 11:08 AM   #255
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by JankoNor View Post
Hey Guys.

Anybody knows how I make them 1 only. As if I would be on 32bit?

JankoNor
If you mean bridged VST/AU plugins, that's not something you could deal with Reaper extensions. IIRC Justin said he simply hasn't found a way to embed the out-of-process plugin GUIs on OS-X...So, if Justin himself hasn't been able to figure it out, the chances are not so great anyway for some 3rd party to succeed with it. (If it was possible to implement that into Reaper to begin with by a 3rd party.)
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 11-27-2012, 11:14 AM   #256
JankoNor
Human being with feelings
 
JankoNor's Avatar
 
Join Date: Feb 2012
Location: Cologne, Germany
Posts: 117
Default Thx Xenakios...

Yes it happens with bridged 3rd Party Plugs.

Hhmm that's a shame, beause having always 2 Windows opening sucks big Time......

Thanks again for replying!
JankoNor is offline   Reply With Quote
Old 11-27-2012, 01:47 PM   #257
Mike@Ossarium
Human being with feelings
 
Mike@Ossarium's Avatar
 
Join Date: Nov 2012
Location: Munich, Germany
Posts: 111
Default Cursor

Hi,

how can i move the cursor from a control surface?

Mike
Mike@Ossarium is offline   Reply With Quote
Old 04-01-2013, 01:47 PM   #258
armie
Human being with feelings
 
Join Date: Mar 2013
Posts: 2
Default Play a sample?

Is there a way I could play a sample via clicking a button in reaper JS?
armie is offline   Reply With Quote
Old 04-20-2013, 01:38 PM   #259
Celphor
Human being with feelings
 
Join Date: Jan 2013
Location: Austria
Posts: 73
Default CSurf notification about changed input monitor

Hi,

how do I get notified in csurf about a change on an input monitor of a track?

There is no CSurf_SetMonitorChange...

Same with track automation state

Please extend the API :-)

Last edited by Celphor; 04-20-2013 at 01:44 PM. Reason: Added automation
Celphor is offline   Reply With Quote
Old 04-20-2013, 04:07 PM   #260
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by Celphor View Post
Hi,

how do I get notified in csurf about a change on an input monitor of a track?

There is no CSurf_SetMonitorChange...

Same with track automation state

Please extend the API :-)
Look here in the csurf api section : https://code.google.com/p/sws-extens...eaper_plugin.h

Automation state seems to be already supported with a dedicated virtual method (albeit just for "current track") and input monitoring notifications appear to be possible to be received via the Extended() call.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 04-20-2013, 04:51 PM   #261
Celphor
Human being with feelings
 
Join Date: Jan 2013
Location: Austria
Posts: 73
Default

Thank you, didn't know about the extened method yet. Will give it a try tomorrow...
Celphor is offline   Reply With Quote
Old 08-03-2013, 10:51 AM   #262
pcartwright
Human being with feelings
 
Join Date: Jan 2009
Posts: 1,030
Default MIDI Related

Does anyone know what the following functions do (pulled from reaper_plugin_functions.h)?

REAPERAPI_DECL const char* (*GetTrackMIDINoteName)(int track, int note, int chan);

REAPERAPI_DECL const char* (*GetTrackMIDINoteNameEx)(ReaProject* proj, MediaTrack* track, int note, int chan);

REAPERAPI_DECL const char* (*SetTrackMIDINoteName)(int track, int note, int chan, const char* name);

REAPERAPI_DECL const char* (*SetTrackMIDINoteNameEx)(ReaProject* proj, MediaTrack* track, int note, int chan, const char* name);
pcartwright is offline   Reply With Quote
Old 12-09-2013, 11:17 PM   #263
tweed
Human being with feelings
 
Join Date: Dec 2006
Posts: 668
Default

getting uncommonly desperate to figure out how to change selected or all-tracks to a certain SPECIFIC to my system midi input. There's several midi inputs.

I've found I_RECINPUT in the ReaScript help. and in my script am using:

RPR_SetMediaTrackInfo_Value(tr, "I_RECINPUT", 4096)

Though if I add anything after the 4096 as an attempt to specify one of the various midi imputs on my system plus perhaps a midi channel i get errors saying something about not expecting more than 3 data placements.

Here's the full bit from ReaScript help.
Can you help?

I_RECINPUT : int * : record input. <0 = no input, 0..n = mono hardware input, 512+n = rearoute input, 1024 set for stereo input pair. 4096 set for MIDI input, if set, then low 5 bits represent channel (0=all, 1-16=only chan), then next 5 bits represent physical input (31=all, 30=VKB)




NEED to have the script change tracks to a specific midi input and perhaps a specific channel.

Should be possible?

THANK YOU for thinking.
tweed is offline   Reply With Quote
Old 12-10-2013, 01:16 PM   #264
sws
Code Monkey
 
sws's Avatar
 
Join Date: Sep 2007
Location: Madison, WI
Posts: 857
Default

Quote:
Originally Posted by tweed View Post
Though if I add anything after the 4096 as an attempt to specify one of the various midi imputs on my system plus perhaps a midi channel i get errors

I_RECINPUT : int * : record input. <0 = no input, 0..n = mono hardware input, 512+n = rearoute input, 1024 set for stereo input pair. 4096 set for MIDI input, if set, then low 5 bits represent channel (0=all, 1-16=only chan), then next 5 bits represent physical input (31=all, 30=VKB)
You're close. There's only one parameter that is calculated with the following easy formula:

Input = 4096 + channel + 32 * input

Use channel = 0 for all

For example input device 2, channel 1 would be 4096 + 1 + 32 * 2 = 4161
RPR_SetMediaTrackInfo_Value(tr, "I_RECINPUT", 4161)
sws is offline   Reply With Quote
Old 01-07-2014, 05:56 AM   #265
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default TrackFX_GetParameterStepSizes()

I was so excited about the new TrackFX_GetParameterStepSizes thing, but it doesn't seem to work?

It always returns false (which I interpret as 'there's been an error') and all values stay unchanged.

I tested it with some of the Reaper Plugins (ReaEQ, ReaComp) and some freeware VSTs (I think the Nu-Tron Phaser by Mokafix, if it matters).

Am I missing something?

Or maybe I'm misunderstanding this function completely? I'm thinking it returns ideal step sizes for each parameter (like if something is a 0/1 toggle, toggle gets set to true, if something has 5 steps 0...1 it returns 0.2 or something).

I hope this is how it works, it would be really helpful for input devices with relative encoders (like the Tascam US-2400, whose encoders send MIDI messages for -4 ... +4 relative changes).

Thanks!
---david is offline   Reply With Quote
Old 01-07-2014, 11:49 AM   #266
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by ---david View Post

I tested it with some of the Reaper Plugins (ReaEQ, ReaComp) and some freeware VSTs (I think the Nu-Tron Phaser by Mokafix, if it matters).

Am I missing something?
VST plugins are completely free to ignore supporting that feature. You might find some plugin that implements it if you search hard enough, but my understanding is that it's very rarely implemented.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 01-07-2014, 06:03 PM   #267
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Thank you Xenakios,

I was afraid of that. Meh.
---david is offline   Reply With Quote
Old 03-29-2014, 01:36 AM   #268
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

I see in the API that takes can have their own pan law ("D_PANLAW" and it's even in the chunk in VOLPAN)
However, I've never seen an option like that in Reaper.

Am I right to assume there exists no pan law setting for takes?
Breeder is offline   Reply With Quote
Old 04-27-2014, 05:59 PM   #269
vtsaran
Human being with feelings
 
Join Date: Jan 2011
Posts: 64
Default

Trying to use Main_OnCommand with 41042, 41043, 41044 and 41045. Strangely enough with all of the four commands I am getting "bad access" violation errors on Mac OS. I made sure Main_OnCommand and, just in case, Main_OnCommandEx are initialized with the IMPAPI macro. Are there any other API functions that need to be initialized for making Main_OnCommand* calls to work? O, BTW, I am calling these functions from the CommandSelector hook.
Thanks for any help.
__________________
--- --- ---
Visit me at https://www.youtube.com/vtsaran
vtsaran is offline   Reply With Quote
Old 07-30-2014, 10:20 AM   #270
Breeder
Human being with feelings
 
Breeder's Avatar
 
Join Date: Nov 2010
Posts: 2,436
Default

It seems there's no way to get global automation override?

Actions related to this don't report state and there doesn't seem to be a valid config key to retrieve it. Any ideas?
Breeder is offline   Reply With Quote
Old 03-13-2015, 09:46 AM   #271
MusicGenerator
Human being with feelings
 
MusicGenerator's Avatar
 
Join Date: Jan 2015
Posts: 43
Default

Forgive me if I ask a question in the wrong topic. I searched the forum but could not find the suitable information.

How do I access or activate the built-in R5 LUA scripting? More would like to clarify about allows built-in R5 LUA develop plug-ins for processing audio/MIDI (just like JSFX) or it is suited only to develop extensions as a built-in Python scripting?
MusicGenerator is offline   Reply With Quote
Old 04-22-2015, 07:20 AM   #272
maranite
Human being with feelings
 
Join Date: Apr 2015
Posts: 10
Default Extending a Controller as Surface

Hi,

I would like to write an extension to support the Arturia KeyLab series for Reaper - specifically:

1) Ensure bi-directional midi-cc messages for changes to FX parameters, and
2) Send midi messages to update the Keylab's LCD display to reflect the name of the FX parameter being edited.

What API can I use to achieve this? It seems as though the control surface API only supports feedback for track changes (volume, mute, pan)... so how do I go about detecting the bindings between a controller and an FX parameter, and to get notifications on changes to the FX parameter?
maranite is offline   Reply With Quote
Old 04-22-2015, 07:26 AM   #273
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by maranite View Post
Hi,

I would like to write an extension to support the Arturia KeyLab series for Reaper - specifically:

1) Ensure bi-directional midi-cc messages for changes to FX parameters, and
2) Send midi messages to update the Keylab's LCD display to reflect the name of the FX parameter being edited.

What API can I use to achieve this? It seems as though the control surface API only supports feedback for track changes (volume, mute, pan)... so how do I go about detecting the bindings between a controller and an FX parameter, and to get notifications on changes to the FX parameter?
The reaper_plugin.h header file in the official extension SDK is very old. There's a newer header file that tells that the Extended() method in the IReaperControlSurface class does support fx parameter changes too.

#define CSURF_EXT_SETFXPARAM 0x00010008 // parm1=(MediaTrack*)track, parm2=(int*)(fxidx<<16|paramidx), parm3=(double*)normalized value

I uploaded the more up to date reaper_plugin.h file here :

http://ge.tt/4NimWzE2/v/0?c
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 05-06-2015, 10:05 PM   #274
jrussell
Human being with feelings
 
Join Date: Jan 2014
Posts: 2
Default Possible to add functionality (tagging) to media explorer

I am willing to dig through the API and experiment for details, but before i dig too far, I would like to know if my digging would be fruitless :-)

I would like to know if enough of the innards of Reaper are exposed to allow extending the functionality of the Media Explorer - specifically I would like to add an ability to add metadata (tag) to files, either in file or in a separate db (not a reaper function), and then make that navigable via Media Explorer - so i would need one of two things

a - The ability to extend the "search" function to search the metadata store (or metadata in the files)

b - The ability to add items to the navigation (folder/shortcut/database) portion of Media Explorer and associate those items to the tag lookup capability

Can you let me know if there is the right level of access for something like this to be possible and point me in the general direction?

Thx in advance!
jrussell is offline   Reply With Quote
Old 05-07-2015, 01:56 AM   #275
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by jrussell View Post
allow extending the functionality of the Media Explorer
The media explorer has no public API.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 05-07-2015, 10:53 PM   #276
jrussell
Human being with feelings
 
Join Date: Jan 2014
Posts: 2
Default

Quote:
Originally Posted by Xenakios View Post
The media explorer has no public API.
Hmmm.. bummer. But thank you, saved me a ton of time looking! Guess i will file a feature request instead.
jrussell is offline   Reply With Quote
Old 05-25-2015, 09:18 PM   #277
audioadam
Human being with feelings
 
audioadam's Avatar
 
Join Date: Sep 2010
Location: San Diego, CA
Posts: 42
Default batch rendering a large number of files which include a small fade in the begining.

Quote:
Originally Posted by Justin View Post
If anybody wants to know how to do a particular task using the plug-in extension API, ask it here and we will either tell you, or interpret it as a request for that particular API!

-Justin
Is there a way to add a small fade in to a large number of regions & batch render?
audioadam is offline   Reply With Quote
Old 10-29-2015, 01:21 AM   #278
aurelien
Human being with feelings
 
Join Date: Apr 2014
Posts: 95
Default

I'd like to create a very simple GUI for my plugin action, is there a simple way to do it?

I'm not coding my plugin in SWS, just with Xenakios example code for plugins.

Thanks!
aurelien is offline   Reply With Quote
Old 10-29-2015, 03:08 AM   #279
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by aurelien View Post
I'd like to create a very simple GUI for my plugin action, is there a simple way to do it?

I'm not coding my plugin in SWS, just with Xenakios example code for plugins.

Thanks!
To put it shortly : there is no simple way if using GetUserInputs() in the Reaper API isn't enough for your purposes. (GetUserInputs just shows a modal dialog that has rows of text input fields in it.)

"Simple" is of course a very relative concept. What would you think is simple?
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 10-29-2015, 03:54 AM   #280
aurelien
Human being with feelings
 
Join Date: Apr 2014
Posts: 95
Default

Well i guess it should do the trick, i have simple needs.

Is there some sample code in C ?

Last edited by aurelien; 10-29-2015 at 04:00 AM.
aurelien 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 12:59 AM.


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