Reaper Reascript-Api-Documentation 6.82
"Fortified with Optimism"
The Functions Reference
^ 1 Introduction to ReaScript
ReaScript API
REAPER provides an API (advanced programming interface) for users and third parties to create extended functionality. API functions can be called from a compiled C/C++ dynamic library that is loaded by REAPER, or at run-time by user-created ReaScripts that can be written using REAPER's own editor.
ReaScripts can be written in EEL2, a specialized language that is also used to write JSFX; Lua, a popular scripting language; or Python, another scripting language. EEL and Lua are embedded within REAPER and require no additional downloads or settings. Python must be downloaded and installed separately, and enabled in REAPER preferences.
A script named "__startup.lua|.eel" will be started automatically by Reaper at startup. You can have both; Reaper will run __startup.eel first, __startup.lua second. This __startup-script doesn't need to be registered into the actionlist of Reaper; it's pure existence in the scripts-folder of the resources-folder of Reaper is sufficient for it to be run.
Learn more about ReaScript: http://www.cockos.com/reaper/sdk/reascript/reascript.php.
This documentation includes the functions provided by SWS: sws-extension.org as well as Julian Sader's plugin, that can be installed via ReaPack.
The IDE in Reaper has some limitations, as every line must not exceed 4095 characters, or they will be split when the script is loaded the next time. It also tries to obey the script's chose character for indentation. So if every line begins with a tab, hitting tab will insert 4 spaces, if every line begins with spaces, hitting tab will insert 2 spaces. The IDE has known issues with Unicode-characters, especially when inserted via Alt+GR. So sometimes it's easier to use an external IDE/editor instead.
The base-directory for files created from ReaScript can be read from the reaper.ini -> [REAPER] -> lastcwd= That means, if you create a new file without giving it a path, it will be created in the path set in lastcwd.
Note: a lot of the functions in this document require 3rd-party-extensions. You can find and install them from here:
SWS: https://www.sws-extension.org
JS-extension: https://forum.cockos.com/showthread.php?t=212174
ReaPack: https://reapack.com/
ReaImGui: https://forum.cockos.com/showthread.php?t=250419
Osara: https://osara.reaperaccessibility.com/
ReaBlink: https://github.com/ak5k/reablink/releases/
ReaLlm: https://github.com/ak5k/reallm
ReaFab: https://github.com/ak5k/reafab
ReaMCULive: https://github.com/ak5k/reamculive/releases/
PeloReaper: https://github.com/pelori/PeloReaper
^ 2.1 CPP Api-Description
Usage of the Reaper Api in C++
Note: the C++ pure virtual interfaces used require the MSVC-compatible C++ ABI on Win32. Sorry, mingw users.
Reaper extensions: see http://www.cockos.com/reaper/sdk/plugin/plugin.php and reaper_plugin.h. The API functions in this header can be retrieved using reaper_plugin_info_t.GetFunc() or by using the Action "[developer] Write C++ API functions header" directly in Reaper.
VST plugins: see http://www.cockos.com/reaper/sdk/vst/vst_ext.php The API functions in this header can be retrieved using audioMasterCallback.
Because the API is dynamic, callers should never assume a function exists. Check that a non-NULL function pointer was returned before using it (unless loaded functions are verified using REAPERAPI_LoadAPI(), see note below).
New (4.76+) usage of this file: - 1) most source files should just #include "reaper_plugin_functions.h" as is. - 2) one file should #define REAPERAPI_IMPLEMENT before including this file. - 3) the plug-in should call REAPERAPI_LoadAPI(rec->GetFunc) from REAPER_PLUGIN_ENTRYPOINT - and check the return value for errors (REAPERAPI_LoadAPI will return 0 on success).
By default, all functions listed in this file are loaded. This means that an older version of REAPER may not succeed in loading, and also it may bloat your plug-in. If you wish to only load needed functions, #define REAPERAPI_MINIMAL and various #define REAPERAPI_WANT_ lines before including this file. You must put these definitions where REAPERAPI_IMPLEMENT is defined and you can optionally put them elsewhere (to detect needed REAPERAPI_WANT_xxx lines at compile- time rather than link-time).
^ 2.2 EEL Api-Description
ReaScript/EEL API
For information on the EEL2 language, please see the EEL2 User Guide
ReaScript/EEL scripts can call API functions using functionname().
Parameters that return information are effectively passed by reference, not value. If an API returns a string value, it will usually be as the first parameter.
Examples:
// function returning a single (scalar) value:
sec = parse_timestr("1:12");
// function returning information in the first parameter (function returns void):
GetProjectPath(#string);
// lower volume of track 3 by half:
tr = GetTrack(0, 2);
GetTrackUIVolPan(tr, vol, pan);
SetMediaTrackInfo_Value(tr, "D_VOL", vol*0.5);
ReaScript/EEL can import functions from other reascripts using @import filename.eel -- note that only the file's functions will be imported, normal code in that file will not be executed.
^ 2.3 Python Api-Description
ReaScript/Python API
ReaScript/Python requires a recent version of Python installed on this machine. Python is available from multiple sources as a free download. After installing Python, REAPER may detect the Python dynamic library automatically. If not, you can enter the path in the ReaScript preferences page, at Options/Preferences/Plug-Ins/ReaScript.
ReaScript/Python scripts can call API functions using RPR_functionname().
All parameters are passed by value, not reference. API functions that cannot return information in the parameter list will return a single value. API functions that can return any information in the parameter list will return a list of values; The first value in the list will be the function return value (unless the function is declared to return void).
Examples:
# function returning a single (scalar) value:
sec = RPR_parse_timestr("1:12")
# function returning information in the first parameter (function returns void):
(str) = RPR_GetProjectPath("", 512)
# lower volume of track 3 by half (RPR_GetTrackUIVolPan returns Bool):
tr = RPR_GetTrack(0, 2)
(ok, tr, vol, pan) = RPR_GetTrackUIVolPan(tr, 0, 0)
# this also works, if you only care about one of the returned values:
vol = RPR_GetTrackUIVolPan(tr, 0, 0)[2]
RPR_SetMediaTrackInfo_Value(tr, "D_VOL", vol*0.5)
You can create and save modules of useful functions that you can import into other ReaScripts. For example, if you create a file called reascript_utility.py that contains the function helpful_function(), you can import that file into any Python ReaScript with the line:
import reascript_utility
and call the function by using:
reascript_utility.helpful_function()
Note that ReaScripts must explicitly import the REAPER python module, even if the script is imported into another ReaScript:
from reaper_python import *
^ 2.4 Lua Api-Description
ReaScript/Lua API
ReaScript/Lua scripts can call API functions using reaper.functionname().
Some functions return multiple values. In many cases, some function parameters are ignored, especially when similarly named parameters are present in the returned values.
Examples:
-- function returning a single (scalar) value:
sec = reaper.parse_timestr("1:12")
-- function with an ignored (dummy) parameter:
path = reaper.GetProjectPath("")
-- lower volume of track 3 by half:
tr = reaper.GetTrack(0, 2)
ok, vol, pan = reaper.GetTrackUIVolPan(tr, 0, 0)
reaper.SetMediaTrackInfo_Value(tr, "D_VOL", vol*0.5)
ReaScript/Lua can import functions from other ReaScripts using require. If the files are not being found, it is probably a path problem (remember that lua paths are wildcard patterns, not just directory listings, see details here).
^ 3 Datatypes used in this document
Datatypes used in this document
boolean - accepts only true or false as values
optional boolean - a boolean, that can be given, but is not required
number - can be integer, double or a floating-point-number
optional number - a number, that can be given, but is not required
integer - only integer numbers allowed
reaper.array - a special array, that Reaper provides
string - a string of characters/text
optional string - a string, that can be given, but is not required
AudioAccessor - Audio Accessor object for a track or a media-item
BR_Envelope (BR) - an envelope-object, created from a track or take-envelope
HWND - a window
IReaperControlSurface - a ControlSurface, e.g. OSC-devices
joystick_device - a joystick-device
KbdSectionInfo - Keyboard Section Info, - 0, Main
- 100, Main (alt recording)
- 32060, MIDI Editor
- 32061, MIDI Event List Editor
- 32062, MIDI Inline Editor
- 32063, Media Explorer
PCM_source - the audiosource of a MediaItem
ReaProject - a project within Reaper; 0 for current open project(-tab); in EnumProjects, it is an object, not a number!
RprMidiTake (FNG) - ReaperMidiTake as object
RprMidiNote (FNG) - RprMidiNote as object
MediaTrack - a Reaper-Track as object
MediaItem - a Reaper-MediaItem like audio,video, Midi, etc as object
MediaItem_Take - a take within a MediaItem as object
TrackEnvelope - an envelope of a track as object
WDL_FastString(S&M) - a different kind of a string, made into a Reaper-object
deviceHDC - get it using function JS_GDI_GetWindowDC
^
kbd_enumerateActions
C: int retval = kbd_enumerateActions(KbdSectionInfo* section, int idx, const char** nameOut)
EEL2: int retval = kbd_enumerateActions(KbdSectionInfo section, int idx, #name)
Lua: integer retval, string name = reaper.kbd_enumerateActions(KbdSectionInfo section, integer idx)
Python: Int retval = RPR_kbd_enumerateActions(KbdSectionInfo section, Int idx, String nameOut)
Returns the description of an action.
Returnvalues:
integer retval |
true, the action exists; false, the action does not exist |
string name |
the name of the action |
Parameters:
KbdSectionInfo section |
the section, in which the action is located
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer idx |
the command-id of the action, whose description you want to have. |
see also:
^
AddRemoveReaScript
C: int AddRemoveReaScript(bool add, int sectionID, const char* scriptfn, bool commit)
EEL2: int AddRemoveReaScript(bool add, int sectionID, "scriptfn", bool commit)
Lua: integer command_id = reaper.AddRemoveReaScript(boolean add, integer sectionID, string scriptfn, boolean commit)
Python: Int retval = RPR_AddRemoveReaScript(Boolean add, Int sectionID, String scriptfn, Boolean commit)
Adds a ReaScript (returns the new command ID, or 0 if failed) or removes a ReaScript
Returns >0 on success.
Use commit==true when adding/removing a single script.
Committing means, that Reaper stores the Reascript-information into the reaper-kb.ini for permanent use.
It will be committed at Reaper's exit as well, but if Reaper crashes before exiting properly, your added
script might get lost. When adding many Reascripts to Reaper, setting commit to false might help prevail
ressources, as you don't rewrite the reaper-kb.ini file over and over again. However, if you only add a
few scripts, this might not be of importance to you.
So when bulk adding/removing multiple scripts, you can optimize the n-1 first calls with commit==false and commit==true for the last call.
The commandID returned, might change, when adding this script into another Reaper-installation.
To be sure to use the right command-id, use ReverseNamedCommandLookup() to get the ActionCommandID, which will never change, until you remove the script.
If you want to add a script to several sections, you need to add them individually, by calling the function again with the changed section-number.
Returnvalues:
integer command_id |
the command ID for this script. |
Parameters:
boolean add |
true, if it shall be added, false if it shall be removed |
integer sectionID |
the section, in which this script shall appear(e.g. in the Show Actions-Dialog)
0, Main
100, Main (alt recording) Note: If you already added to main(section 0), this function automatically adds the script to Main(alt) as well.
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
string scriptfn |
the filename of the Reascript to be added |
boolean commit |
true, if it shall be committed, false, if you want to add new scripts first. |
see also:
^
ArmCommand
C: void ArmCommand(int cmd, const char* sectionname)
EEL2: ArmCommand(int cmd, "sectionname")
Lua: reaper.ArmCommand(integer cmd, string sectionname)
Python: RPR_ArmCommand(Int cmd, String sectionname)
arms a command (or disarms if 0 passed) in section sectionname (empty string for main)
Parameters:
^
CF_EnumerateActions
C: int CF_EnumerateActions(int section, int index, char* nameOut, int nameOut_sz)
EEL2: int extension_api("CF_EnumerateActions", int section, int index, #name)
Lua: integer retval, string name = reaper.CF_EnumerateActions(integer section, integer index)
Python: (Int retval, Int section, Int index, String nameOut, Int nameOut_sz) = CF_EnumerateActions(section, index, nameOut, nameOut_sz)
Deprecated, see kbd_enumerateActions (v6.71+).
Wrapper for the unexposed kbd_enumerateActions API function.
Main=0, Main (alt recording)=100, MIDI Editor=32060, MIDI Event List Editor=32061, MIDI Inline Editor=32062, Media Explorer=32063
Returnvalues:
Parameters:
^
CF_GetCommandText
C: const char* CF_GetCommandText(int section, int command)
EEL2: bool extension_api("CF_GetCommandText", #retval, int section, int command)
Lua: string str = reaper.CF_GetCommandText(integer section, integer command)
Python: String retval = CF_GetCommandText(Int section, Int command)
Deprecated, see kbd_getTextFromCmd (v6.71+).
Wrapper for the unexposed kbd_getTextFromCmd API function.
See CF_EnumerateActions for common section IDs.
Returnvalues:
Parameters:
^
GetArmedCommand
C: int GetArmedCommand(char* secOut, int secOut_sz)
EEL2: int GetArmedCommand(#sec)
Lua: integer retval, string sec = reaper.GetArmedCommand()
Python: (Int retval, String secOut, Int secOut_sz) = RPR_GetArmedCommand(secOut, secOut_sz)
gets the currently armed command and section name (returns 0 if nothing armed). section name is empty-string for main section.
Returnvalues:
^
GetToggleCommandState
C: int GetToggleCommandState(int command_id)
EEL2: int GetToggleCommandState(int command_id)
Lua: integer retval = reaper.GetToggleCommandState(integer command_id)
Python: Int retval = RPR_GetToggleCommandState(Int command_id)
Return toggle-state of an action. See GetToggleCommandStateEx.
See NamedCommandLookup() for the correct command_id.
Returnvalues:
integer retval |
toggle-state
0, off
&1, on/checked in menus
&2, on/grayed out in menus
&16, on/bullet in front of the entry in menus
-1, NA because the action does not have on/off states. |
Parameters:
integer command_id |
the command_id, whose toggle-state you want to know. |
see also:
^
GetToggleCommandStateEx
C: int GetToggleCommandStateEx(int section_id, int command_id)
EEL2: int GetToggleCommandStateEx(int section_id, int command_id)
Lua: integer retval = reaper.GetToggleCommandStateEx(integer section_id, integer command_id)
Python: Int retval = RPR_GetToggleCommandStateEx(Int section_id, Int command_id)
Return toggle-state of an action.
For the main action context, the MIDI editor, or the media explorer, returns the toggle state of the action. For the MIDI editor, the action state for the most recently focused window will be returned.
See NamedCommandLookup() for the correct command_id.
Returnvalues:
integer retval |
toggle-state
0, off
&1, on/checked in menus
&2, on/grayed out in menus
&16, on/bullet in front of the entry in menus
-1, NA because the action does not have on/off states. |
Parameters:
integer section_id |
the section, in which the action lies
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer command_id |
the command_id, whose toggle-state you want to know. |
see also:
^
MIDIEditor_LastFocused_OnCommand
C: bool MIDIEditor_LastFocused_OnCommand(int command_id, bool islistviewcommand)
EEL2: bool MIDIEditor_LastFocused_OnCommand(int command_id, bool islistviewcommand)
Lua: boolean retval = reaper.MIDIEditor_LastFocused_OnCommand(integer command_id, boolean islistviewcommand)
Python: Boolean retval = RPR_MIDIEditor_LastFocused_OnCommand(Int command_id, Boolean islistviewcommand)
Send an action command to the last focused MIDI editor.
Returns false if there is no MIDI editor open, or if the view mode (piano roll or event list) does not match the input.
see MIDIEditor_OnCommand
Returnvalues:
Parameters:
boolean islistviewcommand |
|
see also:
^
MIDIEditor_OnCommand
C: bool MIDIEditor_OnCommand(HWND midieditor, int command_id)
EEL2: bool MIDIEditor_OnCommand(HWND midieditor, int command_id)
Lua: boolean retval = reaper.MIDIEditor_OnCommand(HWND midieditor, integer command_id)
Python: Boolean retval = RPR_MIDIEditor_OnCommand(HWND midieditor, Int command_id)
Send an action command to a MIDI editor.
Returns false if the supplied MIDI editor pointer is not valid (not an open MIDI editor).
see MIDIEditor_GetActive, MIDIEditor_LastFocused_OnCommand
Returnvalues:
Parameters:
see also:
^
Main_OnCommand
C: void Main_OnCommand(int command, int flag)
EEL2: Main_OnCommand(int command, int flag)
Lua: reaper.Main_OnCommand(integer command, integer flag)
Python: RPR_Main_OnCommand(Int command, Int flag)
Performs an action belonging to the main action section.
To perform non-native actions (ReaScripts, custom or extension plugins' actions) safely, see NamedCommandLookup().
See Main_OnCommandEx.
Parameters:
integer command |
the command-id of the action, you want to run |
see also:
^
Main_OnCommandEx
C: void Main_OnCommandEx(int command, int flag, ReaProject* proj)
EEL2: Main_OnCommandEx(int command, int flag, ReaProject proj)
Lua: reaper.Main_OnCommandEx(integer command, integer flag, ReaProject proj)
Python: RPR_Main_OnCommandEx(Int command, Int flag, ReaProject proj)
Performs an action belonging to the main action section. To perform non-native actions (ReaScripts, custom or extension plugins' actions) safely, see NamedCommandLookup().
Parameters:
integer command |
the command-id of the action, you want to run |
integer flag |
unknown, use 0 |
ReaProject proj |
the project-number. 0 for the current project. |
see also:
^
NamedCommandLookup
C: int NamedCommandLookup(const char* command_name)
EEL2: int NamedCommandLookup("command_name")
Lua: integer retval = reaper.NamedCommandLookup(string command_name)
Python: Int retval = RPR_NamedCommandLookup(String command_name)
Get the command ID number for named command that was registered by an extension such as "_SWS_ABOUT" or "_113088d11ae641c193a2b7ede3041ad5" for a ReaScript or a custom action.
see Main_OnCommand for executing actions with command-ID-numbers.
Note: never assume that this command-id is valid across multiple installations. That means, the command-id returned by NamedCommandLookup can be different for the same _ActionCommandID between different Reaper-installations. So when you want to run a command, using the command-id, ALWAYS get it using NamedCommandLookup in your script first, and never store it somewhere to be used later on. Otherwise, you risk an action not running. This note is important for custom-actions/scripts/actions from extensions. The command-ids from Reaper's own actions will always stay the same. So rule of thumb: if an action has an action_command_id starting with an underscore _, always use NamedCommandLookup with it.
Returnvalues:
integer retval |
the command-id-number of the script/action, which can be used to e.g. run the action, toggle actions, refresh toolbars, etc. |
Parameters:
string command_name |
the ActionCommandID of the script/action, whose command-id number you want. Must start with _, eg. "SWS_ABOUT" -> "_SWS_ABOUT" |
^
PromptForAction
C: int PromptForAction(int session_mode, int init_id, int section_id)
EEL2: int PromptForAction(int session_mode, int init_id, int section_id)
Lua: integer retval = reaper.PromptForAction(integer session_mode, integer init_id, integer section_id)
Python: Int retval = RPR_PromptForAction(Int session_mode, Int init_id, Int section_id)
Opens the actionlist and allows you to get, which action the user selected.
So the user can select numerous actions, and when they hit the select or select/close-button, you can get the actions selected.
To start a new session, pass 1 as parameter session_mode.
After that, repeatedly call the function with session_mode=0, which will return the selected actions.
- -1, the actionlist is closed
- 0, no action has been selected
- any other number, this action has been selected.
In the latter case, call the function until it returns 0 again to get all selected actions.
If you're finished, call the function with session_mode=-1
When finished, call with session_mode=-1.
Returnvalues:
integer retval |
the selected actions
-1, actionlist is not opened
0, no action has been selected yet/you retrieved all selected actions
any other number, the selected actions; call repeatedly to get all selected commandids until the function returns 0 again |
Parameters:
integer session_mode |
1, start a new session; 0, retrieve selected actions; -1, end a session |
integer init_id |
the command-id, which shall be preselected, when the actionlist opens |
integer section_id |
the section in which you want to let the user select
0 - Main
100 - Main (alt recording)
32060 - MIDI Editor
32061 - MIDI Event List Editor
32062 - MIDI Inline Editor
32063 - Media Explorer |
^
ReverseNamedCommandLookup
C: const char* ReverseNamedCommandLookup(int command_id)
EEL2: bool ReverseNamedCommandLookup(#retval, int command_id)
Lua: string action_command_id = reaper.ReverseNamedCommandLookup(integer command_id)
Python: String retval = RPR_ReverseNamedCommandLookup(Int command_id)
Get the named command for the given command ID. The returned string will not start with '_' (e.g. it will return "SWS_ABOUT"), it will be NULL if command_id is a native action.
Returnvalues:
string action_command_id |
the ActionCommandID of the command/script/action |
Parameters:
integer command_id |
the command/script/action, whose ActionCommandID you want to have |
^
SetToggleCommandState
C: bool SetToggleCommandState(int section_id, int command_id, int state)
EEL2: bool SetToggleCommandState(int section_id, int command_id, int state)
Lua: boolean retval = reaper.SetToggleCommandState(integer section_id, integer command_id, integer state)
Python: Boolean retval = RPR_SetToggleCommandState(Int section_id, Int command_id, Int state)
Updates the toggle state of an action, returns true if succeeded. Only ReaScripts can have their toggle states changed programmatically.
Returnvalues:
boolean retval |
true, setting was successful; false, setting was unsuccessful |
Parameters:
integer section_id |
the section of the action
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer command_id |
the command-id of the action whose toggle command state you want to query |
integer state |
toggle-state
0, off
&1, on/checked in menus
&2, on/grayed out in menus
&16, on/bullet in front of the entry in menus
-1, NA because the action does not have on/off states. |
see also:
^
BR_Win32_GetConstant
C: int BR_Win32_GetConstant(const char* constantName)
EEL2: int extension_api("BR_Win32_GetConstant", "constantName")
Lua: integer retval = reaper.BR_Win32_GetConstant(string constantName)
Python: Int retval = BR_Win32_GetConstant(String constantName)
[BR] Returns various constants needed for BR_Win32 functions.
Supported constants are:
CB_ERR, CB_GETCOUNT, CB_GETCURSEL, CB_SETCURSEL
EM_SETSEL
GW_CHILD, GW_HWNDFIRST, GW_HWNDLAST, GW_HWNDNEXT, GW_HWNDPREV, GW_OWNER
GWL_STYLE
SW_HIDE, SW_MAXIMIZE, SW_SHOW, SW_SHOWMINIMIZED, SW_SHOWNA, SW_SHOWNOACTIVATE, SW_SHOWNORMAL
SWP_FRAMECHANGED, SWP_FRAMECHANGED, SWP_NOMOVE, SWP_NOOWNERZORDER, SWP_NOSIZE, SWP_NOZORDER
VK_DOWN, VK_UP
WM_CLOSE, WM_KEYDOWN
WS_MAXIMIZE, WS_OVERLAPPEDWINDOW
Returnvalues:
Parameters:
^
BR_Win32_HIBYTE
C: int BR_Win32_HIBYTE(int value)
EEL2: int extension_api("BR_Win32_HIBYTE", int value)
Lua: integer retval = reaper.BR_Win32_HIBYTE(integer value)
Python: Int retval = BR_Win32_HIBYTE(Int value)
[BR] Equivalent to win32 API HIBYTE().
Returnvalues:
Parameters:
^
BR_Win32_HIWORD
C: int BR_Win32_HIWORD(int value)
EEL2: int extension_api("BR_Win32_HIWORD", int value)
Lua: integer retval = reaper.BR_Win32_HIWORD(integer value)
Python: Int retval = BR_Win32_HIWORD(Int value)
[BR] Equivalent to win32 API HIWORD().
Returnvalues:
Parameters:
^
BR_Win32_LOBYTE
C: int BR_Win32_LOBYTE(int value)
EEL2: int extension_api("BR_Win32_LOBYTE", int value)
Lua: integer retval = reaper.BR_Win32_LOBYTE(integer value)
Python: Int retval = BR_Win32_LOBYTE(Int value)
[BR] Equivalent to win32 API LOBYTE().
Returnvalues:
Parameters:
^
BR_Win32_LOWORD
C: int BR_Win32_LOWORD(int value)
EEL2: int extension_api("BR_Win32_LOWORD", int value)
Lua: integer retval = reaper.BR_Win32_LOWORD(integer value)
Python: Int retval = BR_Win32_LOWORD(Int value)
[BR] Equivalent to win32 API LOWORD().
Returnvalues:
Parameters:
^
BR_Win32_MAKELONG
C: int BR_Win32_MAKELONG(int low, int high)
EEL2: int extension_api("BR_Win32_MAKELONG", int low, int high)
Lua: integer retval = reaper.BR_Win32_MAKELONG(integer low, integer high)
Python: Int retval = BR_Win32_MAKELONG(Int low, Int high)
[BR] Equivalent to win32 API MAKELONG().
Returnvalues:
Parameters:
^
BR_Win32_MAKELPARAM
C: int BR_Win32_MAKELPARAM(int low, int high)
EEL2: int extension_api("BR_Win32_MAKELPARAM", int low, int high)
Lua: integer retval = reaper.BR_Win32_MAKELPARAM(integer low, integer high)
Python: Int retval = BR_Win32_MAKELPARAM(Int low, Int high)
[BR] Equivalent to win32 API MAKELPARAM().
Returnvalues:
Parameters:
^
BR_Win32_MAKELRESULT
C: int BR_Win32_MAKELRESULT(int low, int high)
EEL2: int extension_api("BR_Win32_MAKELRESULT", int low, int high)
Lua: integer retval = reaper.BR_Win32_MAKELRESULT(integer low, integer high)
Python: Int retval = BR_Win32_MAKELRESULT(Int low, Int high)
[BR] Equivalent to win32 API MAKELRESULT().
Returnvalues:
Parameters:
^
BR_Win32_MAKEWORD
C: int BR_Win32_MAKEWORD(int low, int high)
EEL2: int extension_api("BR_Win32_MAKEWORD", int low, int high)
Lua: integer retval = reaper.BR_Win32_MAKEWORD(integer low, integer high)
Python: Int retval = BR_Win32_MAKEWORD(Int low, Int high)
[BR] Equivalent to win32 API MAKEWORD().
Returnvalues:
Parameters:
^
BR_Win32_MAKEWPARAM
C: int BR_Win32_MAKEWPARAM(int low, int high)
EEL2: int extension_api("BR_Win32_MAKEWPARAM", int low, int high)
Lua: integer retval = reaper.BR_Win32_MAKEWPARAM(integer low, integer high)
Python: Int retval = BR_Win32_MAKEWPARAM(Int low, Int high)
[BR] Equivalent to win32 API MAKEWPARAM().
Returnvalues:
Parameters:
^
JS_Byte
C: void JS_Byte(void* pointer, int offset, int* byteOut)
EEL2: extension_api("JS_Byte", void* pointer, int offset, int &byte)
Lua: integer byte = reaper.JS_Byte(identifier pointer, integer offset)
Python: (void pointer, Int offset, Int byteOut) = JS_Byte(pointer, offset, byteOut)
Returns the unsigned byte at address[offset]. Offset is added as steps of 1 byte each.
Returnvalues:
Parameters:
^
JS_Double
C: void JS_Double(void* pointer, int offset, double* doubleOut)
EEL2: extension_api("JS_Double", void* pointer, int offset, &double)
Lua: number double = reaper.JS_Double(identifier address, integer pointer)
Python: (void pointer, Int offset, Float doubleOut) = JS_Double(pointer, offset, doubleOut)
Returns the 8-byte floating point value at address[offset]. Offset is added as steps of 8 bytes each.
Returnvalues:
Parameters:
^
JS_Int
C: void JS_Int(void* pointer, int offset, int* intOut)
EEL2: extension_api("JS_Int", void* pointer, int offset, int &int)
Lua: integer int = reaper.JS_Int(identifier pointer, integer offset)
Python: (void pointer, Int offset, Int intOut) = JS_Int(pointer, offset, intOut)
Returns the 4-byte signed integer at address[offset]. Offset is added as steps of 4 bytes each.
Returnvalues:
Parameters:
^
JS_Mem_Alloc
C: void* JS_Mem_Alloc(int sizeBytes)
EEL2: void* extension_api("JS_Mem_Alloc", int sizeBytes)
Lua: identifier memory = reaper.JS_Mem_Alloc(integer sizeBytes)
Python: identifier memory = JS_Mem_Alloc(Int sizeBytes)
Allocates memory for general use by functions that require memory buffers.
Returnvalues:
Parameters:
^
JS_Mem_Free
C: bool JS_Mem_Free(void* mallocPointer)
EEL2: bool extension_api("JS_Mem_Free", void* mallocPointer)
Lua: boolean retval = reaper.JS_Mem_Free(identifier mallocPointer)
Python: Boolean retval = JS_Mem_Free(void mallocPointer)
Frees memory that was previously allocated by JS_Mem_Alloc.
Returnvalues:
Parameters:
^
JS_Mem_FromString
C: bool JS_Mem_FromString(void* mallocPointer, int offset, const char* packedString, int stringLength)
EEL2: bool extension_api("JS_Mem_FromString", void* mallocPointer, int offset, "packedString", int stringLength)
Lua: boolean retval = reaper.JS_Mem_FromString(identifier mallocPointer, integer offset, string packedString, integer stringLength)
Python: Boolean retval = JS_Mem_FromString(void mallocPointer, Int offset, String packedString, Int stringLength)
Copies a packed string into a memory buffer.
Returnvalues:
Parameters:
^
JS_PtrFromStr
C: void* JS_PtrFromStr(const char* s)
EEL2: void* extension_api("JS_PtrFromStr", "s")
Lua: identifier ptr = reaper.JS_PtrFromStr(string s)
Python: identifier ptr = JS_PtrFromStr(String s)
Returnvalues:
Parameters:
^
JS_String
C: bool JS_String(void* pointer, int offset, int lengthChars, char* bufOutNeedBig, int bufOutNeedBig_sz)
EEL2: bool extension_api("JS_String", void* pointer, int offset, int lengthChars, #buf)
Lua: boolean retval, string buf = reaper.JS_String(identifier pointer, integer offset, integer lengthChars)
Python: (Boolean retval, void pointer, Int offset, Int lengthChars, String bufOutNeedBig, Int bufOutNeedBig_sz) = JS_String(pointer, offset, lengthChars, bufOutNeedBig, bufOutNeedBig_sz)
Returns the memory contents starting at address[offset] as a packed string. Offset is added as steps of 1 byte (char) each.
Returnvalues:
Parameters:
^
SNM_GetDoubleConfigVar
C: double SNM_GetDoubleConfigVar(const char* varname, double errvalue)
EEL2: double extension_api("SNM_GetDoubleConfigVar", "varname", errvalue)
Lua: number retval = reaper.SNM_GetDoubleConfigVar(string varname, number errvalue)
Python: Float retval = SNM_GetDoubleConfigVar(String varname, Float errvalue)
[S&M] Returns a floating-point preference (look in project prefs first, then in general prefs). Returns errvalue if failed (e.g. varname not found).
The settings can be from the Preferences, Project settings and Render-dialog, as well as numerous other settings, as e.g. set in the context menu of the transport-area.
Some variables are bitfields, where each bit represents e.g a checkbox in the preferences.
see
Reaper Config Variables for valid config-vars
Returnvalues:
number retval |
the returned number/doublefloat-value of varname |
Parameters:
string varname |
the name of the config-variable to be read; not case sensitive |
number errvalue |
the errorvalue that will be returned, if varname isn't a valid one |
see also:
^
SNM_GetIntConfigVar
C: int SNM_GetIntConfigVar(const char* varname, int errvalue)
EEL2: int extension_api("SNM_GetIntConfigVar", "varname", int errvalue)
Lua: integer retval = reaper.SNM_GetIntConfigVar(string varname, integer errvalue)
Python: Int retval = SNM_GetIntConfigVar(String varname, Int errvalue)
[S&M] Returns an integer preference (look in project prefs first, then in general prefs). Returns errvalue if failed (e.g. varname not found).
The settings can be from the Preferences, Project settings and Render-dialog, as well as numerous other settings, as e.g. set in the context menu of the transport-area.
Some variables are bitfields, where each bit represents e.g a checkbox in the preferences.
see
Reaper Config Variables for valid config-vars
Returnvalues:
integer retval |
the returned integer-value of varname |
Parameters:
string varname |
the name of the config-variable to be read; not case sensitive |
integer errvalue |
the errorvalue that will be returned, if varname isn't a valid one |
see also:
^
SNM_GetLongConfigVar
C: bool SNM_GetLongConfigVar(const char* varname, int* highOut, int* lowOut)
EEL2: bool extension_api("SNM_GetLongConfigVar", "varname", int &high, int &low)
Lua: boolean retval, integer high, integer low = reaper.SNM_GetLongConfigVar(string varname)
Python: (Boolean retval, String varname, Int highOut, Int lowOut) = SNM_GetLongConfigVar(varname, highOut, lowOut)
[S&M] Reads a 64-bit integer preference split in two 32-bit integers (look in project prefs first, then in general prefs). Returns false if failed (e.g. varname not found).
see Reaper Config Variables for valid config-vars
Returnvalues:
boolean retval |
true, varname was found; false, varname wasn't found |
integer high |
the high-32bits of the value |
integer low |
the low-32bits of the value |
Parameters:
string varname |
the name of the config-variable to be read; not case sensitive |
^
SNM_SetDoubleConfigVar
C: bool SNM_SetDoubleConfigVar(const char* varname, double newvalue)
EEL2: bool extension_api("SNM_SetDoubleConfigVar", "varname", newvalue)
Lua: boolean retval = reaper.SNM_SetDoubleConfigVar(string varname, number newvalue)
Python: Boolean retval = SNM_SetDoubleConfigVar(String varname, Float newvalue)
[S&M] Sets a floating-point preference (look in project prefs first, then in general prefs). Returns false if failed (e.g. varname not found or newvalue out of range).
The settings can be from the Preferences, Project settings and Render-dialog, as well as numerous other settings, as e.g. set in the context menu of the transport-area.
Some variables are bitfields, where each bit represents e.g a checkbox in the preferences.
The changed settings are usually only changed within the running Reaper, but not stored in the config-files, so you need to do it manually or they get lost after Reaper is closed!
see
Reaper Config Variables for valid config-vars
Returnvalues:
boolean retval |
true, if setting was successful; false, if not |
Parameters:
string varname |
the name of the config-variable to be read; not case sensitive |
number newvalue |
the new value to be set into varname |
see also:
^
SNM_SetIntConfigVar
C: bool SNM_SetIntConfigVar(const char* varname, int newvalue)
EEL2: bool extension_api("SNM_SetIntConfigVar", "varname", int newvalue)
Lua: boolean retval = reaper.SNM_SetIntConfigVar(string varname, integer newvalue)
Python: Boolean retval = SNM_SetIntConfigVar(String varname, Int newvalue)
[S&M] Sets an integer preference (look in project prefs first, then in general prefs). Returns false if failed (e.g. varname not found).
Some variables are bitfields, where each bit represents e.g a checkbox in the preferences.
The changed settings are usually only changed within the running Reaper, but not stored in the config-files, so you need to do it manually or they get lost after Reaper is closed!
see
Reaper Config Variables for valid config-vars
Returnvalues:
boolean retval |
true, if setting was successful, false if not |
Parameters:
string varname |
the name of the config-variable to be read; not case sensitive |
integer newvalue |
the newly set value for varname |
see also:
^
SNM_SetLongConfigVar
C: bool SNM_SetLongConfigVar(const char* varname, int newHighValue, int newLowValue)
EEL2: bool extension_api("SNM_SetLongConfigVar", "varname", int newHighValue, int newLowValue)
Lua: boolean retval = reaper.SNM_SetLongConfigVar(string varname, integer newHighValue, integer newLowValue)
Python: Boolean retval = SNM_SetLongConfigVar(String varname, Int newHighValue, Int newLowValue)
[S&M] Sets a 64-bit integer preference from two 32-bit integers (looks in project prefs first, then in general prefs). Returns false if failed (e.g. varname not found).
Some variables are bitfields, where each bit represents e.g a checkbox in the preferences. The changed settings are usually only changed within the running Reaper, but not stored in the config-files, so you need to do it manually or they get lost after Reaper is closed!
see Reaper Config Variables for valid config-vars
Returnvalues:
boolean retval |
true, if setting was successful, false if not |
Parameters:
string varname |
the name of the config-variable to be read; not case sensitive |
integer newHighValue |
the newly set value for varname of the high-32bits |
integer newLowValue |
the newly set value for varname of the low-32bits |
^
SNM_SetStringConfigVar
C: bool SNM_SetStringConfigVar(const char* varname, const char* newvalue)
EEL2: bool extension_api("SNM_SetStringConfigVar", "varname", "newvalue")
Lua: boolean retval = reaper.SNM_SetStringConfigVar(string varname, string newvalue)
Python: Boolean retval = SNM_SetStringConfigVar(String varname, String newvalue)
[S&M] Sets a string preference (general prefs only). Returns false if failed (e.g. varname not found or value too long).
see
Reaper Config Variables for valid config-vars
Returnvalues:
boolean retval |
true, setting was successful; false, setting was unsuccessful |
Parameters:
string varname |
the name of the config-var |
string newvalue |
the new value to set the config variable with |
see also:
^
get_config_var_string
C: bool get_config_var_string(const char* name, char* bufOut, int bufOut_sz)
EEL2: bool get_config_var_string("name", #buf)
Lua: boolean retval, string buf = reaper.get_config_var_string(string name)
Python: (Boolean retval, String name, String bufOut, Int bufOut_sz) = RPR_get_config_var_string(name, bufOut, bufOut_sz)
Returnvalues:
boolean retval |
true, the configuration-variable is a valid string variable |
string buf |
the current value of the configuration-variable |
Parameters:
string name |
the config-var, whose value you want |
see also:
^
DeleteExtState
C: void DeleteExtState(const char* section, const char* key, bool persist)
EEL2: DeleteExtState("section", "key", bool persist)
Lua: reaper.DeleteExtState(string section, string key, boolean persist)
Python: RPR_DeleteExtState(String section, String key, Boolean persist)
Delete the extended state value for a specific section and key. persist=true means the value should remain deleted the next time REAPER is opened. If persistent, the value will be deleted from the file reaper-extstate.ini in the ressources-folder.
Parameters:
string section |
the section, in which the value is stored |
string key |
the key, with which the value is stored |
boolean persist |
true, the value shall be deleted permanently; false, delete it only temporarily. |
see also:
SetExtState - sets an extstate to store information for your script |
GetExtState - gets an extstate that stores information for your script |
HasExtState - checks, if an extstate exists |
^
GetExtState
C: const char* GetExtState(const char* section, const char* key)
EEL2: bool GetExtState(#retval, "section", "key")
Lua: string extstate_value= reaper.GetExtState(string section, string key)
Python: String retval = RPR_GetExtState(String section, String key)
Get the extended state value for a specific section and key.
Note: section and key are not case-sensitive
Returnvalues:
string extstate_value |
the value of the extstate |
Parameters:
string section |
the section, in which the key and value is stored |
string key |
the key, that contains the value |
see also:
SetExtState - sets an extstate to store information for your script |
DeleteExtState - deleted an extstate that stores information for your script |
HasExtState - checks, if an extstate exists |
^
HasExtState
C: bool HasExtState(const char* section, const char* key)
EEL2: bool HasExtState("section", "key")
Lua: boolean retval = reaper.HasExtState(string section, string key)
Python: Boolean retval = RPR_HasExtState(String section, String key)
Returns true if there exists an extended state value for a specific section and key.
Returnvalues:
boolean retval |
true, extstate exists; false, extstate does not exist |
Parameters:
string section |
the section of the extstate |
string key |
the key of the extstate |
see also:
SetExtState - sets an extstate to store information for your script |
GetExtState - gets an extstate that stores information for your script |
DeleteExtState - deleted an extstate that stores information for your script |
^
SetExtState
C: void SetExtState(const char* section, const char* key, const char* value, bool persist)
EEL2: SetExtState("section", "key", "value", bool persist)
Lua: reaper.SetExtState(string section, string key, string value, boolean persist)
Python: RPR_SetExtState(String section, String key, String value, Boolean persist)
Set the extended state value for a specific section and key.
Persistant states are stored into the reaper-extstate.ini in the resources-folder.
Note: section and key are not case-sensitive
Important: always use a section-name, that is unique to you. For instance, add your name into the section-name,
so it's less likely, that somebody else uses the same section and accidentally overwrites your keys.
Something like: "mespotine_MyCoolScript.lua"
Note: Do not use newlines in extstates, as they might be cut when rereading them using GetExtState!
Find workarounds, like \n -> \\n to store and \\n -> \n to get them again.
This is due limitations of the ini-file-format.
Here are some of the sections used by ReaTeam-scripts and extensions. Don't use to avoid possible name-conflicts.
If your section is missing, contact me and I'll add it too:
"_Slicer_"
"(Un)Collapse envelope lanes"
"+"
"amagalma_Chunk Viewer-Editor"
"amagalma_Grid Settings"
"amagalma_Horizontal zoom presets"
"amagalma_NormalizeTracks"
"amagalma_Take_Vol_in_TS"
"amagalma_Vertical zoom presets"
"amagalma_backup_limit"
"APIhelp"
"babag_copy_paste_item_params"
"BR_SPK_GlueTools"
"brso_articulate"
"BuyOne_Check length of custom action(s).lua"
"BuyOne_Cycle through focused FX presets backwards (guide inside).lua"
"BuyOne_Cycle through focused FX presets forward (guide inside).lua"
"BuyOne_Exclusive dummy toggle"
"BuyOne_Exclusive dummy toggles.lua"
"BuyOne_Link two FX parameters via parameter modulation (guide inside).lua"
"cfillion_copy_paste_markers"
"cfillion_ireascript"
"cfillion_ramp_envelope_points"
"cfillion_show_nudge_settings"
"cfillion_song_switcher"
"cfillion_stepRecordReplace"
"cfillion_underrun_monitor"
"colswatch"
"com.timtam.AccessiChord"
"cool_MK Slicer.lua"
"cool_MK_Shaper/Stutter.lua"
"copy_paste"
"Default_6.0 theme adjuster"
"Dfk Project Map"
"Edgemeal_fx_float"
"Edit Groups"
"GoToTimecode_AZ"
"js_Draw LFO"
"js_Draw ramp"
"js_Insert ramps"
"js_Mouse actions"
"js_Mouse actions"
"js_Multi Tool"
"js_Step pattern"
"js_Thumbnails"
"LFO generator"
"Lokasenna"
"Lokasenna's Script Compiler"
"Lokasenna's Theory Helper"
"Lokasenna_CC Ryder"
"Lokasenna_Copy values from selected MIDI notes"
"Lokasenna_Debug mode"
"Lokasenna_GUI"
"Lokasenna_Pedal Steel"
"Mespotine"
"MFX-list"
"MIDI Inspector"
"MK Slicer (80icio MOD).lua"
"osara"
"Play-Stop with memory"
"Preset Velocity"
"RODILAB_Color_palette"
"RODILAB_Match_criteria"
"RODILAB_Track_name_groups"
"ReaL_Comps"
"ReaNoir"
"savegrid"
"Select CC lanes to show"
"SmartSplit_AZ"
"solger_ReaLauncher"
"Source time position v2"
"spk77_velocity_tool"
"take_envelope_source"
"talagan_Distribute MIDI notes evenly"
"ToggleWet"
"Track-Item Name Manipulation"
"ultraschall_api"
"vo_pomodoro"
Parameters:
string section |
the section, in which the key-value is stored |
string key |
the key, which stores the value |
string value |
the new value to be set |
boolean persist |
true, means the value should be stored and reloaded the next time REAPER is opened |
see also:
GetExtState - gets an extstate that stores information for your script |
HasExtState - checks, if an extstate exists |
DeleteExtState - deleted an extstate that stores information for your script |
^
JS_Localize
C: void JS_Localize(const char* USEnglish, const char* LangPackSection, char* translationOut, int translationOut_sz)
EEL2: extension_api("JS_Localize", "USEnglish", "LangPackSection", #translation)
Lua: string translation = reaper.JS_Localize(string USEnglish, string LangPackSection)
Python: (String USEnglish, String LangPackSection, String translationOut, Int translationOut_sz) = JS_Localize(USEnglish, LangPackSection, translationOut, translationOut_sz)
Returns the translation of the given US English text, according to the currently loaded Language Pack.
Parameters: * LangPackSection: Language Packs are divided into sections such as "common" or "DLG_102". * In Lua, by default, text of up to 1024 chars can be returned. To increase (or reduce) the default buffer size, a string and size can be included as optional 3rd and 4th arguments.
Example: reaper.JS_Localize("Actions", "common", "", 20)
Returnvalues:
string translation |
the translated string, according to the currently used LangPack |
Parameters:
string USEnglish |
the original english string |
string LangPackSection |
the section in the Reaper-language-pack-file, in which the string is locate |
^
LocalizeString
C: const char* LocalizeString(const char* src_string, const char* section, int flagsOptional)
EEL2: bool LocalizeString(#retval, "src_string", "section", int flags)
Lua: string retval = reaper.LocalizeString(string src_string, string section, integer flags)
Python: String retval = RPR_LocalizeString(String src_string, String section, Int flagsOptional)
Returns a localized version of src_string, in section section. flags can have 1 set to only localize if sprintf-style formatting matches the original.
Returnvalues:
string retval |
the localized string or the original string, if no localized string is available |
Parameters:
string src_string |
the string, which you want to be translated |
string section |
the section in the ReaperLangPack-file, in which the string to localize is located |
integer flags |
1, set to only localize if sprintf-style formatting matches the original |
^
SendMIDIMessageToHardware
C: void SendMIDIMessageToHardware(int output, const char* msg, int msg_sz)
EEL2: SendMIDIMessageToHardware(int output, "msg")
Lua: reaper.SendMIDIMessageToHardware(integer output, string msg)
Python: RPR_SendMIDIMessageToHardware(Int output, String msg, Int msg_sz)
Sends a MIDI message to output device specified by output. Message is sent in immediate mode.
Parameters:
^
StuffMIDIMessage
C: void StuffMIDIMessage(int mode, int msg1, int msg2, int msg3)
EEL2: StuffMIDIMessage(int mode, int msg1, int msg2, int msg3)
Lua: reaper.StuffMIDIMessage(integer mode, integer msg1, integer msg2, integer msg3)
Python: RPR_StuffMIDIMessage(Int mode, Int msg1, Int msg2, Int msg3)
Stuffs a 3 byte MIDI message into either the Virtual MIDI Keyboard queue, or the MIDI-as-control input queue, or sends to a MIDI hardware output. mode=0 for VKB, 1 for control (actions map etc), 2 for VKB-on-current-channel; 16 for external MIDI device 0, 17 for external MIDI device 1, etc; see GetNumMIDIOutputs, GetMIDIOutputName.
if mode is set to 1, you can send messages as control-message for Parameter Learn/Modulation and as shortcut for scripts. The parameter msg3 can be retrieved with the returnvalue val of the function reaper.get_action_context, so sending values to a script is possible that way.
For more detailed information about the possible midi-messages you can send via StuffMIDIMessage, see: StuffMIDIMessage-docs
Parameters:
integer mode |
the mode for sending the midi-message
0, for VKB;
1, for control (actions map etc),
2, for VKB-on-current-channel;
16 for external MIDI device 0
17 for external MIDI device 1, etc |
integer msg2 |
note/keyname |
^
APIExists
C: bool APIExists(const char* function_name)
EEL2: bool APIExists(function_name")
Lua: boolean func_exists = reaper.APIExists(string function_name)
Python: Boolean retval = RPR_APIExists(String function_name)
Returns true if function_name exists in the REAPER API
Returnvalues:
boolean func_exists |
true, if function_name exists, false if not |
Parameters:
string function_name |
the name of the function you want to check the existence for |
^
APITest
C: void APITest()
EEL2: APITest()
Lua: reaper.APITest()
Python: RPR_APITest()
Displays a message window with "Hello World", if the API was successfully called.
^
BR_Win32_ShellExecute
C: int BR_Win32_ShellExecute(const char* operation, const char* file, const char* parameters, const char* directory, int showFlags)
EEL2: int extension_api("BR_Win32_ShellExecute", "operation", "file", "parameters", "directory", int showFlags)
Lua: integer retval = reaper.BR_Win32_ShellExecute(string operation, string file, string parameters, string directory, integer showFlags)
Python: Int retval = BR_Win32_ShellExecute(String operation, String file, String parameters, String directory, Int showFlags)
[BR] Equivalent to win32 API ShellExecute() with HWND set to main window
Returnvalues:
Parameters:
^
CF_GetClipboard
C: void CF_GetClipboard(char* textOutNeedBig, int textOutNeedBig_sz)
EEL2: extension_api("CF_GetClipboard", #text)
Lua: string text = reaper.CF_GetClipboard()
Python: (String textOutNeedBig, Int textOutNeedBig_sz) = CF_GetClipboard(textOutNeedBig, textOutNeedBig_sz)
Read the contents of the system clipboard.
Returnvalues:
string text |
the content of the clipboard |
^
CF_GetClipboardBig
C: const char* CF_GetClipboardBig(WDL_FastString* output)
EEL2: bool extension_api("CF_GetClipboardBig", #retval, WDL_FastString output)
Lua: string clipboard_content = reaper.CF_GetClipboardBig(WDL_FastString output)
Python: String retval = CF_GetClipboardBig(WDL_FastString output)
Returnvalues:
string clipboard_content |
the content of the clipboard |
Parameters:
WDL_FastString output |
a faststring used by this |
^
CF_GetSWSVersion
C: void CF_GetSWSVersion(char* versionOut, int versionOut_sz)
EEL2: extension_api("CF_GetSWSVersion", #version)
Lua: string version = reaper.CF_GetSWSVersion()
Python: (String versionOut, Int versionOut_sz) = CF_GetSWSVersion(versionOut, versionOut_sz)
Return the current SWS version number.
Returnvalues:
^
CF_LocateInExplorer
C: bool CF_LocateInExplorer(const char* file)
EEL2: bool extension_api("CF_LocateInExplorer", "file")
Lua: boolean retval = reaper.CF_LocateInExplorer(string file)
Python: Boolean retval = CF_LocateInExplorer(String file)
Select the given file in explorer/finder.
Returnvalues:
Parameters:
^
CF_SetClipboard
C: void CF_SetClipboard(const char* str)
EEL2: extension_api("CF_SetClipboard", "str")
Lua: reaper.CF_SetClipboard(string str)
Python: CF_SetClipboard(String str)
Write the given string into the system clipboard.
Parameters:
string str |
the string to put into the clipboard |
^
CF_ShellExecute
C: bool CF_ShellExecute(const char* file)
EEL2: bool extension_api("CF_ShellExecute", "file")
Lua: boolean retval = reaper.CF_ShellExecute(string file)
Python: Boolean retval = CF_ShellExecute(String file)
Returnvalues:
Parameters:
^
ExecProcess
C: const char* ExecProcess(const char* cmdline, int timeoutmsec)
EEL2: bool ExecProcess(#retval, "cmdline", int timeoutmsec)
Lua: string command_output = reaper.ExecProcess(string cmdline, integer timeoutmsec)
Python: String retval = RPR_ExecProcess(String cmdline, Int timeoutmsec)
Executes command line, returns NULL on total failure, otherwise the return value, a newline, and then the output of the command.
Commands executed with ExecProcess() don't benefit from PATH-system-variables. That said, you must give the full path to a command, even if you can usually just type the command into a shell. You also may need to set a codepage manually to get the correct character-encoding. So in some cases, writing a batch-script and executing it with ExecProcess() might be a good idea.
Note: when using this in Lua, you need to take care of the right file-separators: / on Mac and Linux or \ on Windows. Unlike other Lua/Lua-used-ReaScript-functions, this will not convert the file-separators to the current system's equivalent.
Keep that in mind, when doing multi-platform-scripts!
The base-directory is Reaper's appdirectory.
On Windows, you can not use command-line-internal commands, like dir or cd, directly. To use them, you need to use cmd.exe.
You can do it like:
- "$Path_to_Command_Exe\\cmd.exe /Q /C command"
where "/Q" executes cmd.exe silently(otherwise a command-line-window pops up; but output of commands will show anyway) and "/C command" executes command.
To get a full directory-listing of c:\\ in a file c:\\directorylisting.txt, you can use:
- "c:\\windows\\system32\\cmd.exe /Q /C dir c:\\ >c:\\directorylisting.txt"
Returnvalues:
string command_output |
return value, newline and output of the command; otherwise nil |
Parameters:
string cmdline |
the command to execute |
integer timeoutmsec |
how long to wait, until termination of execution
positive value, the time to wait for execution in milliseconds
0, command will be allowed to run indefinitely (recommended for large amounts of returned output).
-1, for no wait/terminate
-2, for no wait and minimize |
^
GetAppVersion
C: const char* GetAppVersion()
EEL2: bool GetAppVersion(#retval)
Lua: string reaper_app_version = reaper.GetAppVersion()
Python: String retval = RPR_GetAppVersion()
Returns app version which may include an OS/arch signifier, such as: "6.17" (windows 32-bit), "6.17/x64" (windows 64-bit), "6.17/OSX64" (macOS 64-bit Intel), "6.17/OSX" (macOS 32-bit), "6.17/macOS-arm64", "6.17/linux-x86_64", "6.17/linux-i686", "6.17/linux-aarch64", "6.17/linux-armv7l", etc
Returnvalues:
string reaper_app_version |
the returned version-number of Reaper |
^
GetExePath
C: const char* GetExePath()
EEL2: bool GetExePath(#retval)
Lua: string path = reaper.GetExePath()
Python: String retval = RPR_GetExePath()
returns path of REAPER.exe (not including EXE), i.e. C:\Program Files\REAPER
Returnvalues:
string path |
the path to the reaper.exe or reaper.app |
^
GetOS
C: const char* GetOS()
EEL2: bool GetOS(#retval)
Lua: string operating_system = reaper.GetOS()
Python: String retval = RPR_GetOS()
Returns the current operating-system. Good for determining, e.g. the correct filesystem-separators.
Returnvalues:
string operating_system |
"Win32", "Win64", "OSX32", "OSX64", "macOS-arm64" or "Other" |
^
GetResourcePath
C: const char* GetResourcePath()
EEL2: bool GetResourcePath(#retval)
Lua: string resource_path = reaper.GetResourcePath()
Python: String retval = RPR_GetResourcePath()
returns path where ini files are stored, other things are in subdirectories.
When resourcepath is equal to app-path(see GetExePath), it is an indicator that Reaper is installed as portable installation.
Returnvalues:
string resource_path |
the path to the resource-folder |
see also:
GetExePath - returns the path of the reaper.exe/reaper.app |
^
IsMediaExtension
C: bool IsMediaExtension(const char* ext, bool wantOthers)
EEL2: bool IsMediaExtension("ext", bool wantOthers)
Lua: boolean is_mediaextension = reaper.IsMediaExtension(string ext, boolean wantOthers)
Python: Boolean retval = RPR_IsMediaExtension(String ext, Boolean wantOthers)
Tests a file extension (i.e. "wav" or "mid") to see if it's a media extension.
If wantOthers is set, then "RPP", "TXT" and other project-type formats will also pass.
Returnvalues:
boolean is_mediaextension |
|
Parameters:
^
Main_UpdateLoopInfo
C: void Main_UpdateLoopInfo(int ignoremask)
EEL2: Main_UpdateLoopInfo(int ignoremask)
Lua: reaper.Main_UpdateLoopInfo(integer ignoremask)
Python: RPR_Main_UpdateLoopInfo(Int ignoremask)
Parameters:
^
NF_Base64_Decode
C: bool NF_Base64_Decode(const char* base64Str, char* decodedStrOutNeedBig, int decodedStrOutNeedBig_sz)
EEL2: bool extension_api("NF_Base64_Decode", "base64Str", #decodedStr)
Lua: boolean retval, string decodedStr = reaper.NF_Base64_Decode(string base64Str)
Python: (Boolean retval, String base64Str, String decodedStrOutNeedBig, Int decodedStrOutNeedBig_sz) = NF_Base64_Decode(base64Str, decodedStrOutNeedBig, decodedStrOutNeedBig_sz)
Decodes a Base64-string.
Returns true on success.
Returnvalues:
Parameters:
^
NF_Base64_Encode
C: void NF_Base64_Encode(const char* str, int str_sz, bool usePadding, char* encodedStrOutNeedBig, int encodedStrOutNeedBig_sz)
EEL2: extension_api("NF_Base64_Encode", "str", bool usePadding, #encodedStr)
Lua: string encodedStr = reaper.NF_Base64_Encode(string str, boolean usePadding)
Python: (String str, Int str_sz, Boolean usePadding, String encodedStrOutNeedBig, Int encodedStrOutNeedBig_sz) = NF_Base64_Encode(str, str_sz, usePadding, encodedStrOutNeedBig, encodedStrOutNeedBig_sz)
Encodes a string into Base64-encoding
Input string may contain null bytes in REAPER 6.44 or newer.
Note: Doesn't allow padding in the middle (e.g. concatenated encoded strings), doesn't allow newlines.
Returnvalues:
Parameters:
^
PreventUIRefresh
C: void PreventUIRefresh(int prevent_count)
EEL2: PreventUIRefresh(int prevent_count)
Lua: reaper.PreventUIRefresh(integer prevent_count)
Python: RPR_PreventUIRefresh(Int prevent_count)
adds prevent_count to the UI refresh prevention state;
Important: always add then remove the same amount, or major disfunction will occur
It's important to add first and remove second, as other functions you use inbetween might
change this counter as well.
If you remove first and then add later, UI-refresh might be turned on again by another function used
causing unwanted flicker!
Parameters:
^
ReaScriptError
C: void ReaScriptError(const char* errmsg)
EEL2: ReaScriptError("errmsg")
Lua: reaper.ReaScriptError(string errmsg)
Python: RPR_ReaScriptError(String errmsg)
Causes REAPER to display the error message after the current ReaScript finishes. If called within a Lua context and errmsg has a ! prefix, script execution will be terminated.
Parameters:
string errmsg |
the message to show |
^
SNM_CreateFastString
C: WDL_FastString* SNM_CreateFastString(const char* str)
EEL2: WDL_FastString extension_api("SNM_CreateFastString", "str")
Lua: WDL_FastString fstr = reaper.SNM_CreateFastString(string str)
Python: WDL_FastString fstr = SNM_CreateFastString(String str)
Returnvalues:
Parameters:
^
SNM_DeleteFastString
C: void SNM_DeleteFastString(WDL_FastString* str)
EEL2: extension_api("SNM_DeleteFastString", WDL_FastString str)
Lua: reaper.SNM_DeleteFastString(WDL_FastString str)
Python: SNM_DeleteFastString(WDL_FastString str)
[S&M] Deletes a "fast string" instance.
Parameters:
^
SNM_GetFastString
C: const char* SNM_GetFastString(WDL_FastString* str)
EEL2: bool extension_api("SNM_GetFastString", #retval, WDL_FastString str)
Lua: string str = reaper.SNM_GetFastString(WDL_FastString str)
Python: String retval = SNM_GetFastString(WDL_FastString str)
[S&M] Gets the "fast string" content.
Returnvalues:
Parameters:
^
SNM_GetFastStringLength
C: int SNM_GetFastStringLength(WDL_FastString* str)
EEL2: int extension_api("SNM_GetFastStringLength", WDL_FastString str)
Lua: integer retval = reaper.SNM_GetFastStringLength(WDL_FastString str)
Python: Int retval = SNM_GetFastStringLength(WDL_FastString str)
[S&M] Gets the "fast string" length.
Returnvalues:
Parameters:
^
SNM_GetSetObjectState
C: bool SNM_GetSetObjectState(void* obj, WDL_FastString* state, bool setnewvalue, bool wantminimalstate)
EEL2: bool extension_api("SNM_GetSetObjectState", void* obj, WDL_FastString state, bool setnewvalue, bool wantminimalstate)
Lua: boolean retval = reaper.SNM_GetSetObjectState(identifier obj, WDL_FastString state, boolean setnewvalue, boolean wantminimalstate)
Python: Boolean retval = SNM_GetSetObjectState(void obj, WDL_FastString state, Boolean setnewvalue, Boolean wantminimalstate)
[S&M] Gets or sets the state of a track, an item or an envelope. The state chunk size is unlimited. Returns false if failed.
When getting a track state (and when you are not interested in FX data), you can use wantminimalstate=true to radically reduce the length of the state. Do not set such minimal states back though, this is for read-only applications!
Note: unlike the native GetSetObjectState, calling to FreeHeapPtr() is not required.
Returnvalues:
Parameters:
^
SNM_SetFastString
C: WDL_FastString* SNM_SetFastString(WDL_FastString* str, const char* newstr)
EEL2: WDL_FastString extension_api("SNM_SetFastString", WDL_FastString str, "newstr")
Lua: WDL_FastString fstr = reaper.SNM_SetFastString(WDL_FastString str, string newstr)
Python: WDL_FastString fstr = SNM_SetFastString(WDL_FastString str, String newstr)
[S&M] Sets the "fast string" content. Returns str for facility.
Returnvalues:
Parameters:
^
ValidatePtr
C: bool ValidatePtr(void* pointer, const char* ctypename)
EEL2: bool ValidatePtr(void* pointer, "ctypename")
Lua: boolean retval = reaper.ValidatePtr(identifier pointer, string ctypename)
Python: Boolean retval = RPR_ValidatePtr(void pointer, String ctypename)
Return true if the pointer is a valid object of the right type in proj (proj is ignored if pointer is itself a project).
Supported types are: ReaProject*, MediaTrack*, MediaItem*, MediaItem_Take*, TrackEnvelope* and PCM_source*.
see ValidatePtr2
Returnvalues:
boolean retval |
true, the object/pointer is of ctypename; false, it is not |
Parameters:
identifier pointer |
a pointer to the object to check for. In Lua or Python, you just give the object to check as this parameter. |
string ctypename |
the type of project to check for(given as a pointer) |
see also:
ValidatePtr2 - checks, if a pointer is a valid one within a project |
^
ValidatePtr2
C: bool ValidatePtr2(ReaProject* proj, void* pointer, const char* ctypename)
EEL2: bool ValidatePtr2(ReaProject proj, void* pointer, "ctypename")
Lua: boolean retval = reaper.ValidatePtr2(ReaProject proj, identifier pointer, string ctypename)
Python: Boolean retval = RPR_ValidatePtr2(ReaProject proj, void pointer, String ctypename)
Return true if the pointer is a valid object of the right type in proj (proj is ignored if pointer is itself a project). Supported types are: ReaProject*, MediaTrack*, MediaItem*, MediaItem_Take*, TrackEnvelope* and PCM_source*.
Returnvalues:
boolean retval |
true, the object/pointer is of ctypename; false, it is not |
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
identifier pointer |
a pointer to the object to check for. In Lua or Python, you just give the object to check as this parameter. |
string ctypename |
the type of project to check for(given as a pointer) |
^
genGuid
C: void genGuid(GUID* g)
EEL2: genGuid(#gGUID)
Lua: string gGUID = reaper.genGuid(string gGUID)
Python: RPR_genGuid(GUID g)
Generates a GUID.
Returnvalues:
string gGUID |
the generated GUID |
Parameters:
string gGUID |
set it to "" |
^
stringToGuid
C: void stringToGuid(const char* str, GUID* g)
EEL2: stringToGuid("str", #gGUID)
Lua: string gGUID = reaper.stringToGuid(string str, string gGUID)
Python: RPR_stringToGuid(String str, GUID g)
Returnvalues:
Parameters:
^
time_precise
C: double time_precise()
Lua: number time_stamp = reaper.time_precise()
Python: Float retval = RPR_time_precise()
Gets a precise system timestamp in seconds.
For EEL-programming, see eel_time_precise.
Returnvalues:
number time_stamp |
the system-timestamp in seconds with a precision of 7 digits |
^
ClearConsole
C: void ClearConsole()
EEL2: ClearConsole()
Lua: reaper.ClearConsole()
Python: RPR_ClearConsole()
Clear the ReaScript console.
see also:
^
ShowConsoleMsg
C: void ShowConsoleMsg(const char* msg)
EEL2: ShowConsoleMsg("msg")
Lua: reaper.ShowConsoleMsg(string msg)
Python: RPR_ShowConsoleMsg(String msg)
Show a message to the user (also useful for debugging). Send "\n" for newline, "" to clear the console.
Parameters:
string msg |
a message to be shown in ReaConsole |
see also:
^
CountActionShortcuts
C: int retval = CountActionShortcuts(KbdSectionInfo* section, int cmdID)
EEL2: int retval = CountActionShortcuts(KbdSectionInfo section, int cmdID)
Lua: integer retval = reaper.CountActionShortcuts(KbdSectionInfo section, integer cmdID)
Python: Int retval = RPR_CountActionShortcuts(KbdSectionInfo section, Int cmdID)
Returns the number of shortcuts that exist for the given command ID.
Returnvalues:
integer retval |
the number of available shortcuts for this action |
Parameters:
KbdSectionInfo section |
the section, in which the action is located, use retval of SectionFromUniqueID for this parameter
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer cmdID |
the action command-id of the action, whose shortcuts you want to count |
see also:
^
DeleteActionShortcut
C: bool retval = DeleteActionShortcut(KbdSectionInfo* section, int cmdID, int shortcutidx)
EEL2: bool retval = DeleteActionShortcut(KbdSectionInfo section, int cmdID, int shortcutidx)
Lua: boolean retval = reaper.DeleteActionShortcut(KbdSectionInfo section, integer cmdID, integer shortcutidx)
Python: Boolean retval = RPR_DeleteActionShortcut(KbdSectionInfo section, Int cmdID, Int shortcutidx)
Delete the specific shortcut for the given command ID.
Returnvalues:
boolean retval |
true, such shortcuts exists; false, no such shortcut |
Parameters:
KbdSectionInfo section |
the section, in which the action is located
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer cmdID |
the action command-id of the action, whose shortcut you want to delete |
integer shortcutidx |
the index of the shortcut |
see also:
^
DoActionShortcutDialog
C: bool retval = DoActionShortcutDialog(HWND hwnd, KbdSectionInfo* section, int cmdID, int shortcutidx)
EEL2: bool retval = DoActionShortcutDialog(HWND hwnd, KbdSectionInfo section, int cmdID, int shortcutidx)
Lua: boolean retval = reaper.DoActionShortcutDialog(HWND hwnd, KbdSectionInfo section, integer cmdID, integer shortcutidx)
Python: Boolean retval = RPR_DoActionShortcutDialog(HWND hwnd, KbdSectionInfo section, Int cmdID, Int shortcutidx)
Open the action shortcut dialog to edit or add a shortcut for the given command ID. If (shortcutidx >= 0 && shortcutidx < CountActionShortcuts()), that specific shortcut will be replaced, otherwise a new shortcut will be added.
Returnvalues:
boolean retval |
true, shortcuts has been edited/added; false, not added/edited |
Parameters:
HWND hwnd |
unknown, which hwnd to pass over here |
KbdSectionInfo section |
the section, in which the action is located
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer cmdID |
the action command-id of the action, whose shortcut you want to delete |
integer shortcutidx |
the index of the shortcut to add/edit |
see also:
^
GetActionShortcutDesc
C: bool GetActionShortcutDesc(KbdSectionInfo* section, int cmdID, int shortcutidx, char* descOut, int descOut_sz)
EEL2: bool GetActionShortcutDesc(KbdSectionInfo section, int cmdID, int shortcutidx, #desc)
Lua: boolean retval, string desc = reaper.GetActionShortcutDesc(KbdSectionInfo section, integer cmdID, integer shortcutidx)
Python: (Boolean retval, KbdSectionInfo section, Int cmdID, Int shortcutidx, String descOut, Int descOut_sz) = RPR_GetActionShortcutDesc(section, cmdID, shortcutidx, descOut, descOut_sz)
Get the text description of a specific shortcut for the given command ID.
Returnvalues:
boolean retval |
true, such shortcuts exists; false, no such shortcut |
string desc |
the description of the shortcut |
Parameters:
KbdSectionInfo section |
the section, in which the action is located
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer cmdID |
the action command-id of the action, whose shortcut's description you want |
integer shortcutidx |
the index of the shortcut |
see also:
^
SectionFromUniqueID
C: KbdSectionInfo* section = SectionFromUniqueID(int uniqueID)
EEL2: KbdSectionInfo section = SectionFromUniqueID(int uniqueID)/functioncall>
KbdSectionInfo section = reaper.SectionFromUniqueID(integer uniqueID)
Python: KbdSectionInfo section = RPR_SectionFromUniqueID(Int uniqueID)
Delete the specific shortcut for the given command ID.
Returnvalues:
KbdSectionInfo section |
the section-object, that can be used for the various shortcut-functions |
Parameters:
integer uniqueID |
the section, in which the action is located
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
see also:
^
BR_GetClosestGridDivision
C: double BR_GetClosestGridDivision(double position)
EEL2: double extension_api("BR_GetClosestGridDivision", position)
Lua: number retval = reaper.BR_GetClosestGridDivision(number position)
Python: Float retval = BR_GetClosestGridDivision(Float position)
[BR] Get closest grid division to position.
Note that this functions is different from SnapToGrid in two regards. SnapToGrid() needs snap enabled to work and this one works always.
Secondly, grid divisions are different from grid lines because some grid lines may be hidden due to zoom level - this function ignores grid line visibility and always searches for the closest grid division at given position.
For more grid division functions, see BR_GetNextGridDivision and BR_GetPrevGridDivision.
Returnvalues:
Parameters:
see also:
^
BR_GetNextGridDivision
C: double BR_GetNextGridDivision(double position)
EEL2: double extension_api("BR_GetNextGridDivision", position)
Lua: number retval = reaper.BR_GetNextGridDivision(number position)
Python: Float retval = BR_GetNextGridDivision(Float position)
Returnvalues:
Parameters:
^
BR_GetPrevGridDivision
C: double BR_GetPrevGridDivision(double position)
EEL2: double extension_api("BR_GetPrevGridDivision", position)
Lua: number retval = reaper.BR_GetPrevGridDivision(number position)
Python: Float retval = BR_GetPrevGridDivision(Float position)
Returnvalues:
Parameters:
^
TimeMap2_GetDividedBpmAtTime
C: double TimeMap2_GetDividedBpmAtTime(ReaProject* proj, double time)
EEL2: double TimeMap2_GetDividedBpmAtTime(ReaProject proj, time)
Lua: number retval = reaper.TimeMap2_GetDividedBpmAtTime(ReaProject proj, number time)
Python: Float retval = RPR_TimeMap2_GetDividedBpmAtTime(ReaProject proj, Float time)
get the effective BPM at the time (seconds) position (i.e. 2x in /8 signatures)
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap2_GetNextChangeTime
C: double TimeMap2_GetNextChangeTime(ReaProject* proj, double time)
EEL2: double TimeMap2_GetNextChangeTime(ReaProject proj, time)
Lua: number retval = reaper.TimeMap2_GetNextChangeTime(ReaProject proj, number time)
Python: Float retval = RPR_TimeMap2_GetNextChangeTime(ReaProject proj, Float time)
when does the next time map (tempo or time sig) change occur
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap2_QNToTime
C: double TimeMap2_QNToTime(ReaProject* proj, double qn)
EEL2: double TimeMap2_QNToTime(ReaProject proj, qn)
Lua: number retval = reaper.TimeMap2_QNToTime(ReaProject proj, number qn)
Python: Float retval = RPR_TimeMap2_QNToTime(ReaProject proj, Float qn)
converts project QN position to time.
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap2_beatsToTime
C: double TimeMap2_beatsToTime(ReaProject* proj, double tpos, const int* measuresInOptional)
EEL2: double TimeMap2_beatsToTime(ReaProject proj, tpos, optional int measuresIn)
Lua: number retval = reaper.TimeMap2_beatsToTime(ReaProject proj, number tpos, optional integer measuresIn)
Python: Float retval = RPR_TimeMap2_beatsToTime(ReaProject proj, Float tpos, const int measuresInOptional)
convert a beat position (or optionally a beats+measures if measures is non-NULL) to time.
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
optional integer measuresIn |
|
^
TimeMap2_timeToBeats
C: double TimeMap2_timeToBeats(ReaProject* proj, double tpos, int* measuresOutOptional, int* cmlOutOptional, double* fullbeatsOutOptional, int* cdenomOutOptional)
EEL2: double TimeMap2_timeToBeats(ReaProject proj, tpos, optional int &measures, optional int &cml, optional &fullbeats, optional int &cdenom)
Lua: number retval, optional integer measures, optional integer cml, optional number fullbeats, optional integer cdenom = reaper.TimeMap2_timeToBeats(ReaProject proj, number tpos)
Python: (Float retval, ReaProject proj, Float tpos, Int measuresOutOptional, Int cmlOutOptional, Float fullbeatsOutOptional, Int cdenomOutOptional) = RPR_TimeMap2_timeToBeats(proj, tpos, measuresOutOptional, cmlOutOptional, fullbeatsOutOptional, cdenomOutOptional)
convert a time into beats.
if measures is non-NULL, measures will be set to the measure count, return value will be beats since measure.
if cml is non-NULL, will be set to current measure length in beats (i.e. time signature numerator)
if fullbeats is non-NULL, and measures is non-NULL, fullbeats will get the full beat count (same value returned if measures is NULL).
if cdenom is non-NULL, will be set to the current time signature denominator.
Returnvalues:
optional integer measures |
|
optional number fullbeats |
|
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap2_timeToQN
C: double TimeMap2_timeToQN(ReaProject* proj, double tpos)
EEL2: double TimeMap2_timeToQN(ReaProject proj, tpos)
Lua: number retval = reaper.TimeMap2_timeToQN(ReaProject proj, number tpos)
Python: Float retval = RPR_TimeMap2_timeToQN(ReaProject proj, Float tpos)
converts project time position to QN position.
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_GetDividedBpmAtTime
C: double TimeMap_GetDividedBpmAtTime(double time)
EEL2: double TimeMap_GetDividedBpmAtTime(time)
Lua: number retval = reaper.TimeMap_GetDividedBpmAtTime(number time)
Python: Float retval = RPR_TimeMap_GetDividedBpmAtTime(Float time)
get the effective BPM at the time (seconds) position (i.e. 2x in /8 signatures)
Returnvalues:
Parameters:
^
TimeMap_GetMeasureInfo
C: double TimeMap_GetMeasureInfo(ReaProject* proj, int measure, double* qn_startOut, double* qn_endOut, int* timesig_numOut, int* timesig_denomOut, double* tempoOut)
EEL2: double TimeMap_GetMeasureInfo(ReaProject proj, int measure, &qn_start, &qn_end, int ×ig_num, int ×ig_denom, &tempo)
Lua: number retval, number qn_start, number qn_end, integer timesig_num, integer timesig_denom, number tempo = reaper.TimeMap_GetMeasureInfo(ReaProject proj, integer measure)
Python: (Float retval, ReaProject proj, Int measure, Float qn_startOut, Float qn_endOut, Int timesig_numOut, Int timesig_denomOut, Float tempoOut) = RPR_TimeMap_GetMeasureInfo(proj, measure, qn_startOut, qn_endOut, timesig_numOut, timesig_denomOut, tempoOut)
Get the QN position and time signature information for the start of a measure. Return the time in seconds of the measure start.
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_GetMetronomePattern
C: int TimeMap_GetMetronomePattern(ReaProject* proj, double time, char* pattern, int pattern_sz)
EEL2: int TimeMap_GetMetronomePattern(ReaProject proj, time, #pattern)
Lua: integer retval, string pattern = reaper.TimeMap_GetMetronomePattern(ReaProject proj, number time, string pattern)
Python: (Int retval, ReaProject proj, Float time, String pattern, Int pattern_sz) = RPR_TimeMap_GetMetronomePattern(proj, time, pattern, pattern_sz)
Fills in a string representing the active metronome pattern. For example, in a 7/8 measure divided 3+4, the pattern might be "1221222". The length of the string is the time signature numerator, and the function returns the time signature denominator.
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_GetTimeSigAtTime
C: void TimeMap_GetTimeSigAtTime(ReaProject* proj, double time, int* timesig_numOut, int* timesig_denomOut, double* tempoOut)
EEL2: TimeMap_GetTimeSigAtTime(ReaProject proj, time, int ×ig_num, int ×ig_denom, &tempo)
Lua: integer timesig_num, integer timesig_denom, number tempo = reaper.TimeMap_GetTimeSigAtTime(ReaProject proj, number time)
Python: (ReaProject proj, Float time, Int timesig_numOut, Int timesig_denomOut, Float tempoOut) = RPR_TimeMap_GetTimeSigAtTime(proj, time, timesig_numOut, timesig_denomOut, tempoOut)
get the effective time signature and tempo
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_QNToMeasures
C: int TimeMap_QNToMeasures(ReaProject* proj, double qn, double* qnMeasureStartOutOptional, double* qnMeasureEndOutOptional)
EEL2: int TimeMap_QNToMeasures(ReaProject proj, qn, optional &qnMeasureStart, optional &qnMeasureEnd)
Lua: integer retval, optional number qnMeasureStart, optional number qnMeasureEnd = reaper.TimeMap_QNToMeasures(ReaProject proj, number qn)
Python: (Int retval, ReaProject proj, Float qn, Float qnMeasureStartOutOptional, Float qnMeasureEndOutOptional) = RPR_TimeMap_QNToMeasures(proj, qn, qnMeasureStartOutOptional, qnMeasureEndOutOptional)
Find which measure the given QN position falls in.
Returnvalues:
optional number qnMeasureStart |
|
optional number qnMeasureEnd |
|
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_QNToTime
C: double TimeMap_QNToTime(double qn)
EEL2: double TimeMap_QNToTime(qn)
Lua: number retval = reaper.TimeMap_QNToTime(number qn)
Python: Float retval = RPR_TimeMap_QNToTime(Float qn)
converts project QN position to time.
Returnvalues:
Parameters:
^
TimeMap_QNToTime_abs
C: double TimeMap_QNToTime_abs(ReaProject* proj, double qn)
EEL2: double TimeMap_QNToTime_abs(ReaProject proj, qn)
Lua: number retval = reaper.TimeMap_QNToTime_abs(ReaProject proj, number qn)
Python: Float retval = RPR_TimeMap_QNToTime_abs(ReaProject proj, Float qn)
Converts project quarter note count (QN) to time. QN is counted from the start of the project, regardless of any partial measures. See TimeMap2_QNToTime
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_curFrameRate
C: double TimeMap_curFrameRate(ReaProject* proj, bool* dropFrameOut)
EEL2: double TimeMap_curFrameRate(ReaProject proj, bool &dropFrame)
Lua: number retval, boolean dropFrame = reaper.TimeMap_curFrameRate(ReaProject proj)
Python: (Float retval, ReaProject proj, Boolean dropFrameOut) = RPR_TimeMap_curFrameRate(proj, dropFrameOut)
Gets project framerate, and optionally whether it is drop-frame timecode
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
TimeMap_timeToQN
C: double TimeMap_timeToQN(double tpos)
EEL2: double TimeMap_timeToQN(tpos)
Lua: number retval = reaper.TimeMap_timeToQN(number tpos)
Python: Float retval = RPR_TimeMap_timeToQN(Float tpos)
converts project QN position to time.
Returnvalues:
Parameters:
^
TimeMap_timeToQN_abs
C: double TimeMap_timeToQN_abs(ReaProject* proj, double tpos)
EEL2: double TimeMap_timeToQN_abs(ReaProject proj, tpos)
Lua: number retval = reaper.TimeMap_timeToQN_abs(ReaProject proj, number tpos)
Python: Float retval = RPR_TimeMap_timeToQN_abs(ReaProject proj, Float tpos)
Converts project time position to quarter note count (QN). QN is counted from the start of the project, regardless of any partial measures. See TimeMap2_timeToQN
Returnvalues:
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
ColorFromNative
C: void ColorFromNative(int col, int* rOut, int* gOut, int* bOut)
EEL2: ColorFromNative(int col, int &r, int &g, int &b)
Lua: integer r, integer g, integer b = reaper.ColorFromNative(integer col)
Python: (Int col, Int rOut, Int gOut, Int bOut) = RPR_ColorFromNative(col, rOut, gOut, bOut)
Extract RGB values from an OS dependent color.
As Reaper treats colors differently on Mac and Windows, you should always use ColorFromNative and ColorToNative.
Returnvalues:
integer r |
the value for red, from 0 to 255 |
integer g |
the value for green, from 0 to 255 |
integer b |
the value for blue, from 0 to 255 |
Parameters:
integer col |
the colorvalue to convert from |
see also:
ColorToNative - for converting r-g-b-values to a native-color value |
^
ColorToNative
C: int ColorToNative(int r, int g, int b)
EEL2: int ColorToNative(int r, int g, int b)
Lua: integer col = reaper.ColorToNative(integer r, integer g, integer b)
Python: Int retval = RPR_ColorToNative(Int r, Int g, Int b)
Make an OS dependent color from RGB values (e.g. RGB() macro on Windows). r,g and b are in [0..255].
As Reaper treats colors differently on Mac and Windows, you should always use ColorFromNative and ColorToNative.
When using the returned colorvalue, you need to add |0x1000000 at the end of it, like ColorToNative(20,30,40)|0x1000000.
Returnvalues:
integer col |
the correct colorvalue, fitting to your system. |
Parameters:
integer r |
the value for red, from 0 to 255 |
integer g |
the value for green, from 0 to 255 |
integer b |
the value for blue, from 0 to 255 |
see also:
ColorFromNative - for converting a native color-calue into its r-g-b-representation |
^
DB2SLIDER
C: double DB2SLIDER(double x)
EEL2: double DB2SLIDER(x)
Lua: number slider_value = reaper.DB2SLIDER(number x)
Python: Float retval = RPR_DB2SLIDER(Float x)
Converts dB-value into a slider-value. Good for converting envelope-point-values.
Returnvalues:
number slider_value |
the slider-value |
Parameters:
number x |
the dB-value to be converted. Minimum -332db for position 0 |
^
SLIDER2DB
C: double SLIDER2DB(double y)
EEL2: double SLIDER2DB(y)
Lua: number db_value = reaper.SLIDER2DB(number y)
Python: Float retval = RPR_SLIDER2DB(Float y)
Convert slider-value to it's dB-value-equivalent.
Returnvalues:
number db_value |
the slider-value, you want to convert to dB |
Parameters:
^
format_timestr
C: void format_timestr(double tpos, char* buf, int buf_sz)
EEL2: format_timestr(tpos, #buf)
Lua: string formatted_time = reaper.format_timestr(number tpos, string buf)
Python: (Float tpos, String buf, Int buf_sz) = RPR_format_timestr(tpos, buf, buf_sz)
Creates a timestring and formats it as hh:mm:ss.sss.
Returnvalues:
string formatted_time |
the formatted timestring |
Parameters:
number tpos |
the position in seconds, that you want to have formatted |
string buf |
needed by Reaper, just set it to "" |
see also:
^
format_timestr_len
C: void format_timestr_len(double tpos, char* buf, int buf_sz, double offset, int modeoverride)
EEL2: format_timestr_len(tpos, #buf, offset, int modeoverride)
Lua: string formatted_time = reaper.format_timestr_len(number tpos, string buf, number offset, integer modeoverride)
Python: (Float tpos, String buf, Int buf_sz, Float offset, Int modeoverride) = RPR_format_timestr_len(tpos, buf, buf_sz, offset, modeoverride)
creates a timestring and formats with overrides and offset for a time-length
time formatting mode overrides: -1=proj default.
0=time
1=measures.beats + time
2=measures.beats
3=seconds
4=samples
5=h:m:s:f
offset is start of where the length will be calculated from
Returnvalues:
Parameters:
^
format_timestr_pos
C: void format_timestr_pos(double tpos, char* buf, int buf_sz, int modeoverride)
EEL2: format_timestr_pos(tpos, #buf, int modeoverride)
Lua: string formatted_time = reaper.format_timestr_pos(number tpos, string buf, integer modeoverride)
Python: (Float tpos, String buf, Int buf_sz, Int modeoverride) = RPR_format_timestr_pos(tpos, buf, buf_sz, modeoverride)
time formatting mode overrides: -1=proj default.
0=time
1=measures.beats + time
2=measures.beats
3=seconds
4=samples
5=h:m:s:f
Returnvalues:
Parameters:
^
guidToString
C: void guidToString(const GUID* g, char* destNeed64)
EEL2: guidToString("gGUID", #destNeed64)
Lua: string destNeed64 = reaper.guidToString(string gGUID, string destNeed64)
Python: (const GUID g, String destNeed64) = RPR_guidToString(g, destNeed64)
dest should be at least 64 chars long to be safe
Returnvalues:
Parameters:
^
image_resolve_fn
C: void image_resolve_fn(const char* in, char* out, int out_sz)
EEL2: image_resolve_fn("in", #out)
Lua: string out = reaper.image_resolve_fn(string in, string out)
Python: (String in, String out, Int out_sz) = RPR_image_resolve_fn(in, out, out_sz)
Returnvalues:
Parameters:
^
mkpanstr
C: void mkpanstr(char* strNeed64, double pan)
EEL2: mkpanstr(#strNeed64, pan)
Lua: string strNeed64 = reaper.mkpanstr(string strNeed64, number pan)
Python: (String strNeed64, Float pan) = RPR_mkpanstr(strNeed64, pan)
Converts a double-number to its panstr-equivalent.
See parsepanstr for its counterpart.
Returnvalues:
string strNeed64 |
the converted panstring, from -100% over center to 100% |
Parameters:
string strNeed64 |
just set this to "" |
number pan |
the pan-number which shall be converted to the panstring; valid numbers are -1.0 to 1.0 even if you can set higher ones |
see also:
^
mkvolpanstr
C: void mkvolpanstr(char* strNeed64, double vol, double pan)
EEL2: mkvolpanstr(#strNeed64, vol, pan)
Lua: string strNeed64 = reaper.mkvolpanstr(string strNeed64, number vol, number pan)
Python: (String strNeed64, Float vol, Float pan) = RPR_mkvolpanstr(strNeed64, vol, pan)
creates a vol-pan-string, which holds a readable representation of the vol and pan-values.
The format is like "+6.02db center" or "+inf +80R", etc
see mkpanstr and mkvolstr for the individual pan/vol-string functions.
Returnvalues:
string strNeed64 |
the converted volpan-string |
Parameters:
string strNeed64 |
just set this to "" |
number vol |
the volume-value, which you want to convert into db |
number pan |
the pan-value, which you want to convert into its percentage value; valid -1.0 to 1.0 |
^
mkvolstr
C: void mkvolstr(char* strNeed64, double vol)
EEL2: mkvolstr(#strNeed64, vol)
Lua: string strNeed64 = reaper.mkvolstr(string strNeed64, number vol)
Python: (String strNeed64, Float vol) = RPR_mkvolstr(strNeed64, vol)
Converts a volume-value into a string-representation of it as dB.
Note: Unlike panstr, there is no parsevolstr-string-function available!
Returnvalues:
string strNeed64 |
the converted vol-string |
Parameters:
string strNeed64 |
just set this to "" |
number vol |
the volume-value, which shall be converted; 0, -inf; 1, 0dB; 1.412, +3dB |
^
parse_timestr
C: double parse_timestr(const char* buf)
EEL2: double parse_timestr("buf")
Lua: number timestr = reaper.parse_timestr(string buf)
Python: Float retval = RPR_parse_timestr(String buf)
Returnvalues:
number timestr |
the converted time in seconds |
Parameters:
string buf |
the timestring to convert (hh:mm:ss.sss). Each position of the time can be one digit only, means: "1:2:3.4" is valid. Milliseconds can be more than 3 digits. Hours, seconds, minutes with more than two digits will be converted correctly "1:120" will be converted to 180 seconds. |
^
parse_timestr_len
C: double parse_timestr_len(const char* buf, double offset, int modeoverride)
EEL2: double parse_timestr_len("buf", offset, int modeoverride)
Lua: number converted_time = reaper.parse_timestr_len(string buf, number offset, integer modeoverride)
Python: Float retval = RPR_parse_timestr_len(String buf, Float offset, Int modeoverride)
Converts a time-string in its time-in-seconds-representation
time formatting mode overrides: -1=proj default.
0, time
1, measures.beats + time
2, measures.beats
3, seconds
4, samples
5, h:m:s:f
Returnvalues:
number converted_time |
the time, as interpreted from the buf-parameter |
Parameters:
string buf |
the time-string, which shall be converted into its time in seconds |
integer modeoverride |
the format, in which the timestring is |
^
parse_timestr_pos
C: double parse_timestr_pos(const char* buf, int modeoverride)
EEL2: double parse_timestr_pos("buf", int modeoverride)
Lua: number converted_time = reaper.parse_timestr_pos(string buf, integer modeoverride)
Python: Float retval = RPR_parse_timestr_pos(String buf, Int modeoverride)
Parse time string and convert it into seconds.
Returnvalues:
number converted_time |
the converted time in seconds |
Parameters:
string buf |
the timestring to be parsed and converted into seconds |
integer modeoverride |
the format of the timestring to parse and convert
-1, proj default.
0, time
1, measures.beats + time
2, measures.beats
3, seconds
4, samples
5, h:m:s:f |
^
parsepanstr
C: double parsepanstr(const char* str)
EEL2: double parsepanstr("str")
Lua: number retval = reaper.parsepanstr(string str)
Python: Float retval = RPR_parsepanstr(String str)
Converts a string created by mkpanstr back to it's double-number.
Returnvalues:
number retval |
the double-value of the panstring |
Parameters:
string str |
a panstring, whose value you want to convert back to its double-equivalent |
^
CF_Preview_GetPeak
C: bool CF_Preview_GetPeak(CF_Preview* preview, int channel, double* peakvolOut)
EEL2: bool extension_api("CF_Preview_GetPeak", CF_Preview preview, int channel, &peakvol)
Lua: boolean retval, number peakvol = reaper.CF_Preview_GetPeak(CF_Preview preview, integer channel)
Python: (Boolean retval, CF_Preview preview, Int channel, Float peakvolOut) = CF_Preview_GetPeak(preview, channel, peakvolOut)
Read peak volume for channel 0 or 1. Only available when outputting to a hardware output (not through a track).
Returnvalues:
Parameters:
^
CF_Preview_GetValue
C: bool CF_Preview_GetValue(CF_Preview* preview, const char* name, double* valueOut)
EEL2: bool extension_api("CF_Preview_GetValue", CF_Preview preview, "name", &value)
Lua: boolean retval, number value = reaper.CF_Preview_GetValue(CF_Preview preview, string name)
Python: (Boolean retval, CF_Preview preview, String name, Float valueOut) = CF_Preview_GetValue(preview, name, valueOut)
Supported attributes:
B_LOOP seek to the beginning when reaching the end of the source
B_PPITCH preserve pitch when changing playback rate
D_FADEINLEN lenght in seconds of playback fade in
D_FADEOUTLEN lenght in seconds of playback fade out
D_LENGTH (read only) length of the source * playback rate
D_MEASUREALIGN >0 = wait until the next bar before starting playback (note: this causes playback to silently continue when project is paused and previewing through a track)
D_PAN playback pan
D_PITCH pitch adjustment in semitones
D_PLAYRATE playback rate
D_POSITION current playback position
D_VOLUME playback volume
I_OUTCHAN first hardware output channel (&1024=mono, reads -1 when playing through a track, see CF_Preview_SetOutputTrack)
I_PITCHMODE highest 16 bits=pitch shift mode (see EnumPitchShiftModes), lower 16 bits=pitch shift submode (see EnumPitchShiftSubModes)
Returnvalues:
Parameters:
^
CF_Preview_Play
C: bool CF_Preview_Play(CF_Preview preview)
EEL2: bool extension_api("CF_Preview_Play", CF_Preview preview)
Lua: boolean retval = reaper.CF_Preview_Play(CF_Preview preview)
Python: Boolean CF_Preview_Play(CF_Preview preview)
Start playback of the configured preview object.
Returnvalues:
Parameters:
^
CF_Preview_SetOutputTrack
C: bool CF_Preview_SetOutputTrack(CF_Preview* preview, ReaProject* project, MediaTrack* track)
EEL2: bool extension_api("CF_Preview_SetOutputTrack", CF_Preview preview, ReaProject project, MediaTrack track)
Lua: boolean retval = reaper.CF_Preview_SetOutputTrack(CF_Preview preview, ReaProject project, MediaTrack track)
Python: Boolean CF_Preview_SetOutputTrack(CF_Preview preview, ReaProject project, MediaTrack track)
Returnvalues:
Parameters:
^
CF_Preview_SetValue
C: bool CF_Preview_SetValue(CF_Preview* preview, const char* name, double newValue)
EEL2: bool extension_api("CF_Preview_SetValue", CF_Preview preview, "name", newValue)
Lua: boolean retval = reaper.CF_Preview_SetValue(CF_Preview preview, string name, number newValue)
Python: Boolean CF_Preview_SetValue(CF_Preview preview, String name, Float newValue)
See CF_Preview_GetValue.
Returnvalues:
Parameters:
^
CF_Preview_Stop
C: bool CF_Preview_Stop(CF_Preview* preview)
EEL2: bool extension_api("CF_Preview_Stop", CF_Preview preview)
Lua: boolean retval = reaper.CF_Preview_Stop(CF_Preview preview)
Python: Boolean CF_Preview_Stop(CF_Preview preview)
Stop and destroy a preview object.
Returnvalues:
Parameters:
^
CF_Preview_StopAll
C: void CF_Preview_StopAll()
EEL2: extension_api("CF_Preview_StopAll")
Lua: reaper.CF_Preview_StopAll()
Python: CF_Preview_StopAll()
Stop and destroy all currently active preview objects.
^
GetItemEditingTime2
C: double GetItemEditingTime2(PCM_source** which_itemOut, int* flagsOut)
EEL2: double GetItemEditingTime2(PCM_source &which_item, int &flags)
Lua: number position, PCM_source which_item, integer flags = reaper.GetItemEditingTime2()
Python: (Float retval, PCM_source* which_itemOut, Int flagsOut) = RPR_GetItemEditingTime2(which_itemOut, flagsOut)
returns time of relevant edit, set which_item to the pcm_source (if applicable), flags (if specified) will be set to 1 for edge resizing, 2 for fade change, 4 for item move, 8 for item slip edit (edit cursor time or start of item)
Returnvalues:
^
GetSubProjectFromSource
C: ReaProject* GetSubProjectFromSource(PCM_source* src)
EEL2: ReaProject GetSubProjectFromSource(PCM_source src)
Lua: ReaProject sub_proj = reaper.GetSubProjectFromSource(PCM_source src)
Python: ReaProject sub_proj = RPR_GetSubProjectFromSource(PCM_source src)
Returnvalues:
ReaProject sub_proj |
the project-number. 0 for the current project. |
Parameters:
^
GetTempoMatchPlayRate
C: bool GetTempoMatchPlayRate(PCM_source* source, double srcscale, double position, double mult, double* rateOut, double* targetlenOut)
EEL2: bool GetTempoMatchPlayRate(PCM_source source, srcscale, position, mult, &rate, &targetlen)
Lua: boolean retval, number rate, number targetlen = reaper.GetTempoMatchPlayRate(PCM_source source, number srcscale, number position, number mult)
Python: (Boolean retval, PCM_source source, Float srcscale, Float position, Float mult, Float rateOut, Float targetlenOut) = RPR_GetTempoMatchPlayRate(source, srcscale, position, mult, rateOut, targetlenOut)
finds the playrate and target length to insert this item stretched to a round power-of-2 number of bars, between 1/8 and 256
Returnvalues:
Parameters:
^
NF_ReadAudioFileBitrate
C: int NF_ReadAudioFileBitrate(const char* fn)
EEL2: int extension_api("NF_ReadAudioFileBitrate", "fn")
Lua: integer retval = reaper.NF_ReadAudioFileBitrate(string fn)
Python: Int retval = NF_ReadAudioFileBitrate(const char* fn)
Returnvalues:
Parameters:
^
PCM_Source_GetSectionInfo
C: bool PCM_Source_GetSectionInfo(PCM_source* src, double* offsOut, double* lenOut, bool* revOut)
EEL2: bool PCM_Source_GetSectionInfo(PCM_source src, &offs, &len, bool &rev)
Lua: boolean retval, number offs, number len, boolean rev = reaper.PCM_Source_GetSectionInfo(PCM_source src)
Python: (Boolean retval, PCM_source src, Float offsOut, Float lenOut, Boolean revOut) = RPR_PCM_Source_GetSectionInfo(src, offsOut, lenOut, revOut)
If a section/reverse block, retrieves offset/len/reverse. return true if success
Returnvalues:
Parameters:
^
Resample_EnumModes
C: const char* Resample_EnumModes(int mode)
EEL2: bool Resample_EnumModes(#retval, int mode)
Lua: string resample_mode = reaper.Resample_EnumModes(integer mode)
Python: String retval = RPR_Resample_EnumModes(Int mode)
enumerates the existing resample-modes
Returnvalues:
string resample_mode |
the resample-mode |
Parameters:
integer mode |
0, Medium (64pt Sinc)
1, Low (Linear Interpolation)
2, Lowest (Point Sampling)
3, Good (192pt Sinc)
4, Better (384pt Sinc)
5, Fast (IIR + Linear Interpolation)
6, Fast (IIRx2 + Linear Interpolation)
7, Fast (16pt Sinc)
8, HQ (512pt Sinc)
9, Extreme HQ (768pt HQ Sinc) |
^
Xen_AudioWriter_Create
C: AudioWriter* Xen_AudioWriter_Create(const char* filename, int numchans, int samplerate)
EEL2: AudioWriter extension_api("Xen_AudioWriter_Create", "filename", int numchans, int samplerate)
Lua: AudioWriter writer = reaper.Xen_AudioWriter_Create(string filename, integer numchans, integer samplerate)
Python: AudioWriter retval = Xen_AudioWriter_Create(String filename, Int numchans, Int samplerate)
Creates writer for 32 bit floating point WAV
Returnvalues:
Parameters:
^
Xen_AudioWriter_Destroy
C: void Xen_AudioWriter_Destroy(AudioWriter* writer)
EEL2: extension_api("Xen_AudioWriter_Destroy", AudioWriter writer)
Lua: reaper.Xen_AudioWriter_Destroy(AudioWriter writer)
Python: Xen_AudioWriter_Destroy(AudioWriter writer)
Destroys writer
Parameters:
^
Xen_AudioWriter_Write
C: int Xen_AudioWriter_Write(AudioWriter* writer, int numframes, void* data, int offset)
EEL2: int extension_api("Xen_AudioWriter_Write", AudioWriter writer, int numframes, void* data, int offset)
Lua: integer retval = reaper.Xen_AudioWriter_Write(AudioWriter writer, integer numframes, identifier data, integer offset)
Python: Int retval = Xen_AudioWriter_Write(AudioWriter writer, Int numframes, void data, Int offset)
Write interleaved audio data to disk
Returnvalues:
Parameters:
^
Xen_StartSourcePreview
C: int Xen_StartSourcePreview(PCM_source* source, double gain, bool loop, int* outputchanindexInOptional)
EEL2: int extension_api("Xen_StartSourcePreview", PCM_source source, gain, bool loop, optional int outputchanindexIn)
Lua: integer retval = reaper.Xen_StartSourcePreview(PCM_source source, number gain, boolean loop, optional integer outputchanindexIn)
Python: (Int retval, PCM_source source, Float gain, Boolean loop, Int outputchanindexInOptional) = Xen_StartSourcePreview(source, gain, loop, outputchanindexInOptional)
Start audio preview of a PCM_source, which can be created using functions like PCM_Source_CreateFromFile
Returns id of a preview handle that can be provided to Xen_StopSourcePreview.
If the given PCM_source does not belong to an existing MediaItem/Take, it will be deleted by the preview system when the preview is stopped.
You can preview more than one file at the same time.
Returnvalues:
integer id |
the id of this preview, which can be used to stop it again |
Parameters:
PCM_source source |
a PCM_source-created using a mediafile/item |
number gain |
the volume of the previewed pcm_source; 0, no sound; 10, maximum volume |
boolean loop |
true, loop the PCM_source; false, play only once |
optional integer outputchanindexIn |
the output channel; for multichannel files, this is the first hardware-output-channel for e.g. left channel of a stereo file |
^
Xen_StopSourcePreview
C: int Xen_StopSourcePreview(int preview_id)
EEL2: int extension_api("Xen_StopSourcePreview", int preview_id)
Lua: integer retval = reaper.Xen_StopSourcePreview(integer preview_id)
Python: Int retval = Xen_StopSourcePreview(Int preview_id)
Stop audio preview.
To stop all running previews, set id=-1
Returnvalues:
Parameters:
integer preview_id |
the id of the running preview; -1, stops all running previews |
^
PCM_Sink_Enum
C: unsigned int PCM_Sink_Enum(int idx, const char** descstrOut)
EEL2: uint PCM_Sink_Enum(int idx, #descstr)
Lua: integer retval, string descstr = reaper.PCM_Sink_Enum(integer idx)
Python: Int retval = RPR_PCM_Sink_Enum(Int idx, String descstrOut)
enumerates the available PCM-sink-formats, which means, the output-formats available in Reaper
Returnvalues:
integer retval |
a number, which represents the PCM-sink-format as an integer-representation
2002876005 - WAV (evaw)
1634297446 - AIFF (ffia)
1769172768 - Audio CD Image (CUE/BIN format) ( osi)
1684303904 - DDP ( pdd)
1718378851 - FLAC (calf)
1836069740 - MP3 (encoder by LAME project) (l3pm)
1869047670 - OGG Vorbis (vggo)
1332176723 - OGG Opus (SggO)
1179012432 - Video (ffmpeg/libav encoder) (PMFF)
1195984416 - Video (GIF) ( FIG)
1279477280 - Video (LCF) ( FCL)
2004250731 - WavPack lossless compressor (kpvw)
maybe others as well? |
string descstr |
the PCM-sink-format
0 - WAV
1 - AIFF
2 - Audio CD Image (CUE/BIN format)
3 - DDP
4 - FLAC
5 - MP3 (encoder by LAME project)
6 - OGG Vorbis
7 - OGG Opus
8 - Video (ffmpeg/libav encoder)
9 - Video (GIF)
10 - Video (LCF)
11 - WavPack lossless compressor
maybe others as well? |
Parameters:
integer idx |
the index of the sink-format, beginning with 0 |
^
PCM_Sink_GetExtension
C: const char* PCM_Sink_GetExtension(const char* data, int data_sz)
EEL2: bool PCM_Sink_GetExtension(#retval, "data")
Lua: string extension = reaper.PCM_Sink_GetExtension(string data)
Python: String retval = RPR_PCM_Sink_GetExtension(String data, Int data_sz)
allows you to retrieve the file-extension of a certain PCM-sink/fileformat available.
See PCM_Sink_Enum to enumerate available PCM-sink/fileformats.
Returnvalues:
string extension |
the extension returned by a certain format passed as parameter data |
Parameters:
string data |
the format, whose extension-format you'd like to get:
evaw, extension: "wav"
ffia, extension: "aif"
osi, extension: "cue"
pdd, extension: "DAT"
calf, extension: "flac"
l3pm, extension: "mp3"
vggo, extension: "ogg"
SggO, extension: "opus"
PMFF, extension: "avi"
FIG, extension: "gif"
FCL, extension: "lcf"
kpvw, extension: "wv"
maybe others? |
^
PCM_Sink_ShowConfig
C: HWND PCM_Sink_ShowConfig(const char* cfg, int cfg_sz, HWND hwndParent)
EEL2: HWND PCM_Sink_ShowConfig("cfg", HWND hwndParent)
Lua: HWND hwnd = reaper.PCM_Sink_ShowConfig(string cfg, HWND hwndParent)
Python: HWND hwnd = RPR_PCM_Sink_ShowConfig(String cfg, Int cfg_sz, HWND hwndParent)
Returnvalues:
Parameters:
^
ClearPeakCache
C: void ClearPeakCache()
EEL2: ClearPeakCache()
Lua: reaper.ClearPeakCache()
Python: RPR_ClearPeakCache()
resets the global peak caches
^
GetPeakFileName
C: void GetPeakFileName(const char* fn, char* bufOut, int bufOut_sz)
EEL2: GetPeakFileName("fn", #buf)
Lua: string peakfilename_with_path = reaper.GetPeakFileName(string fn)
Python: (String fn, String buf, Int buf_sz) = RPR_GetPeakFileName(fn, buf, buf_sz)
get the peak file name for a given file (can be either filename.reapeaks,or a hashed filename in another path)
Returnvalues:
string peakfilename_with_path |
the peakfilename with path |
Parameters:
string fn |
the filename of the mediafile |
^
GetPeakFileNameEx
C: void GetPeakFileNameEx(const char* fn, char* buf, int buf_sz, bool forWrite)
EEL2: GetPeakFileNameEx("fn", #buf, bool forWrite)
Lua: string buf = reaper.GetPeakFileNameEx(string fn, string buf, boolean forWrite)
Python: (String fn, String buf, Int buf_sz, Boolean forWrite) = RPR_GetPeakFileNameEx(fn, buf, buf_sz, forWrite)
get the peak file name for a given file (can be either filename.reapeaks,or a hashed filename in another path)
Returnvalues:
string buf |
the peak-filename |
Parameters:
string buf |
a string-buffer needed by the function, just give "" in Lua |
^
GetPeakFileNameEx2
C: void GetPeakFileNameEx2(const char* fn, char* buf, int buf_sz, bool forWrite, const char* peaksfileextension)
EEL2: GetPeakFileNameEx2("fn", #buf, bool forWrite, "peaksfileextension")
Lua: string buf = reaper.GetPeakFileNameEx2(string fn, string buf, boolean forWrite, string peaksfileextension)
Python: (String fn, String buf, Int buf_sz, Boolean forWrite, String peaksfileextension) = RPR_GetPeakFileNameEx2(fn, buf, buf_sz, forWrite, peaksfileextension)
Like GetPeakFileNameEx, but you can specify peaksfileextension such as ".reapeaks"
Returnvalues:
string buf |
the peak-filename |
Parameters:
string buf |
a string-buffer needed by the function, just give "" in Lua |
string peaksfileextension |
|
^
PCM_Source_BuildPeaks
C: int PCM_Source_BuildPeaks(PCM_source* src, int mode)
EEL2: int PCM_Source_BuildPeaks(PCM_source src, int mode)
Lua: integer retval = reaper.PCM_Source_BuildPeaks(PCM_source src, integer mode)
Python: Int retval = RPR_PCM_Source_BuildPeaks(PCM_source src, Int mode)
The process to build a new peak is to use the modes in a certain order:
mode=0 starts the peak-building process(must be done once for this PCM_Source) returned values are: 0, no peaks need to be built; 1, peaks are building
mode=1 progresses the peak-building a bit each time you call PCM_Source_BuildPeaks with mode=1) call it repeatedly until it's finished and returns value 0! returned values are: how many percent the peak-building still needs to do until it is finished
mode=2, this finishes up peak-building(call this, when mode=1 returns 0 and only then!) returned value is 0 Running this before mode=1 returns 0 can cause broken peaks shown, until you click into a mediaitem that uses the PCM_Source.
After all peak-building is done, use reaper.UpdateArrange() to show them.
Note: All peaks of all takes that use a certain PCM_Source will be built!
Building peaks for multiple PCM_Sources simultaneously is allowed.
The following code builds a peak very simply. This is the easiest implementation. However, if the PCM_Source, whose peaks need to be build, is a very long one, this can cause Reaper's UI to hang. So use this on short PCM_Sources mainly.
-- Meo-Ada Mespotine - 19th of August 2021 - licensed under MIT-license
-- Rebuilt-Peak-Demo without defer, might cause hanging of Reaper's UI
-- Get Item 1, Take 1 and Source of Take 1
Item=reaper.GetMediaItem(0,0)
Take=reaper.GetMediaItemTake(Item,0)
Source=reaper.GetMediaItemTake_Source(Take)
-- start peak-building process(mode must be 0)
BuildStart=reaper.PCM_Source_BuildPeaks(Source, 0)
-- build peaks, until PCM_Source_BuildPeaks returns 0(mode must be 1)
while BuildProgress~=0 do
BuildProgress=reaper.PCM_Source_BuildPeaks(Source, 1)
end
-- when build-process is done, finish build-process(mode must be 2)
BuildXit=reaper.PCM_Source_BuildPeaks(Source, 2)
-- update the arrangeview, so the newly built peaks are shown
reaper.UpdateArrange()
If you want to build peaks for longer files and maybe showing a status-bar, you can use the following code. It uses defer-loops instead of a while-loop. As each ReaScript can have up to 1024 defer-loops running at the same time(more or less), I use each of the 1024 defer-loops to build the peak a little further. This will prevent hanging UI but might be a little slower than the while-approach.
-- Meo-Ada Mespotine - 19th of August 2021 - licensed under MIT-license
-- Rebuilt-Peak-Demo using defer, might be a little slower but doesn't
-- cause hanging of Reaper's UI
--
-- set Build_Factor to speed up building process
-- allowed values: 0(slow) and 1024(fast)
-- Use 1024 only, if you don't have any other defer-loops running.
-- If you have other defer-loops that need to be run now, set
-- Build_Factor to Build_Factor minus number of running defer-loops.
-- the number of defer-loops used to go through the peak build-process
-- the higher, the faster.
-- if you use other defer-loops at the time as well, set this lower than 1024 or the other defer-loop will not run
Build_Factor=255
-- Get Item 1, Take 1 and Source of Take 1
Item=reaper.GetMediaItem(0,0)
Take=reaper.GetMediaItemTake(Item,0)
Source=reaper.GetMediaItemTake_Source(Take)
-- start build-process of the peak(mode=0)
BuildStart=reaper.PCM_Source_BuildPeaks(Source, 0)
function main()
-- build peaks, until PCM_Source_BuildPeaks returns 0(mode must be 1)
BuildProgress=reaper.PCM_Source_BuildPeaks(Source, 1)
if BuildProgress~=0 then
-- if PCM_Source_BuildPeaks returned anything else than 0, defer this function again
reaper.defer(main)
else
-- if PCM_Source_BuildPeaks returned 0, finish building of the peaks(mode must be 2)
-- and update the arrangeview for the newly built peaks to show
BuildXit=reaper.PCM_Source_BuildPeaks(Source, 2)
reaper.UpdateArrange()
end
end
-- run multiple defer-instances of the peak-build-function
for i=0, Build_Factor do
main()
end
The following code combines both, defer-loops to cirvumvent possible hanging of Reaper's UI and a loop(for in this case) to build as many small peak-bits and pieces as possible within each defer-loop. You can influence the ratio between using defer-loops and for-loops by setting Build_Factor(defer) and Build_Progression(for). Experiment, how high you can go with the number of for-loops, until Reaper's UI becomes laggy.
-- Meo-Ada Mespotine - 19th of August 2021 - licensed under MIT-license
-- Rebuilt-Peak-Demo defer and a regular for-loop combined, doesn't
-- cause hanging of Reaper's UI
--
-- set Build_Factor to speed up building process
-- allowed values: 0(slow) and 1024(fast)
-- Use 1024 only, if you don't have any other defer-loops running.
-- If you have other defer-loops that need to be run now, set
-- Build_Factor to Build_Factor minus number of running defer-loops.
-- build-speed factors
Build_Factor=255 -- set to the number of defer-loops used
Build_Progression=20 -- set to the number of peak-building-bits built within each defer-loop
-- Get Item 1, Take 1 and Source of Take 1
Item=reaper.GetMediaItem(0,0)
Take=reaper.GetMediaItemTake(Item,0)
Source=reaper.GetMediaItemTake_Source(Take)
-- start build-process of the peak(mode=0)
BuildStart=reaper.PCM_Source_BuildPeaks(Source,0)
function main()
-- build peaks, until PCM_Source_BuildPeaks returns 0(mode must be 1)
-- do it for Build_Progression-times within this defer-loop.
for i=0, Build_Progression do
BuildProgress=reaper.PCM_Source_BuildPeaks(Source,1)
end
if BuildProgress~=0 then
-- if PCM_Source_BuildPeaks returned anything else than 0, defer this function again
reaper.defer(main)
else
-- if PCM_Source_BuildPeaks returned 0, finish building of the peaks(mode must be 2)
-- and update the arrangeview for the newly built peaks to show
BuildXit=reaper.PCM_Source_BuildPeaks(Source,2)
reaper.UpdateArrange()
end
end
-- run multiple defer-instances of the peak-build-function
for i=0, Build_Factor do
main()
end
Returnvalues:
integer retval |
a value that returns the current state of the peak-building-process, depending on parameter mode
when mode=0
0, no peaks need to be built
1, peaks are building
when mode=1
the percentage, how much of the peaks still need to be built
0, peak-building is finished
when mode=2
0, peak building is successfully finished for this PCM_source |
Parameters:
PCM_source src |
the PCM_source, whose peaks you want to rebuild |
integer mode |
sets the current "phase" of the peak-building
0, starts the peak-building-process for this PCM_source(must be done once per PCM_Source)
1, process the peak-building-process a bit further; do repeatedly until retval=0
2, finish up peak-building for this PCM_source |
^
PCM_Source_GetPeaks
C: int PCM_Source_GetPeaks(PCM_source* src, double peakrate, double starttime, int numchannels, int numsamplesperchannel, int want_extra_type, double* buf)
EEL2: int PCM_Source_GetPeaks(PCM_source src, peakrate, starttime, int numchannels, int numsamplesperchannel, int want_extra_type, buffer_ptr buf)
Lua: integer retval = reaper.PCM_Source_GetPeaks(PCM_source src, number peakrate, number starttime, integer numchannels, integer numsamplesperchannel, integer want_extra_type, reaper.array buf)
Python: (Int retval, PCM_source src, Float peakrate, Float starttime, Int numchannels, Int numsamplesperchannel, Int want_extra_type, Float buf) = RPR_PCM_Source_GetPeaks(src, peakrate, starttime, numchannels, numsamplesperchannel, want_extra_type, buf)
Gets block of peak samples to buf. Note that the peak samples are interleaved, but in two or three blocks (maximums, then minimums, then extra).
Return value has 20 bits of returned sample count, then 4 bits of output_mode (0xf00000), then a bit to signify whether extra_type was available (0x1000000).
extra_type can be 115 ('s') for spectral information, which will return peak samples as integers with the low 15 bits frequency, next 14 bits tonality.
Returnvalues:
Parameters:
integer numsamplesperchannel |
|
^
CF_CreatePreview
C: CF_Preview* CF_CreatePreview(PCM_source* source)
EEL2: CF_Preview extension_api("CF_CreatePreview", PCM_source source)
Lua: CF_Preview retval = reaper.CF_CreatePreview(PCM_source source)
Python: CF_Preview CF_CreatePreview(PCM_source source)
Create a new preview object. Does not take ownership of the source (don't forget to destroy it unless it came from a take!). See CF_Preview_Play and the others CF_Preview_* functions.
The preview object is automatically destroyed at the end of a defer cycle if at least one of these conditions are met:
- playback finished
- playback was not started using CF_Preview_Play
- the output track no longer exists
Returnvalues:
Parameters:
^
CF_EnumMediaSourceCues
C: int CF_EnumMediaSourceCues(PCM_source* src, int index, double* timeOut, double* endTimeOut, bool* isRegionOut, char* nameOut, int nameOut_sz, bool* isChapterOut)
EEL2: int extension_api("CF_EnumMediaSourceCues", PCM_source src, int index, &time, &endTime, bool &isRegion, #name, bool &isChapter)
Lua: integer retval, number time, number endTime, boolean isRegion, string name, boolean isChapter = reaper.CF_EnumMediaSourceCues(PCM_source src, integer index)
Python: (Int retval, PCM_source src, Int index, Float timeOut, Float endTimeOut, Boolean isRegionOut, String nameOut, Int nameOut_sz, Boolean isChapterOut) = CF_EnumMediaSourceCues(src, index, timeOut, endTimeOut, isRegionOut, nameOut, nameOut_sz, isChapterOut)
Enumerate the source's media cues. Returns the next index or 0 when finished.
Returnvalues:
Parameters:
^
CF_ExportMediaSource
C: bool CF_ExportMediaSource(PCM_source* src, const char* fn)
EEL2: bool extension_api("CF_ExportMediaSource", PCM_source src, "fn")
Lua: boolean retval = reaper.CF_ExportMediaSource(PCM_source src, string fn)
Python: Boolean retval = CF_ExportMediaSource(PCM_source src, String fn)
Export the source to the given file (MIDI only).
Returnvalues:
Parameters:
^
CF_GetMediaSourceBitDepth
C: int CF_GetMediaSourceBitDepth(PCM_source* src)
EEL2: int extension_api("CF_GetMediaSourceBitDepth", PCM_source src)
Lua: integer retval = reaper.CF_GetMediaSourceBitDepth(PCM_source src)
Python: Int retval = CF_GetMediaSourceBitDepth(PCM_source src)
Returns the bit depth if available (0 otherwise).
Returnvalues:
Parameters:
^
CF_GetMediaSourceBitRate
C: double CF_GetMediaSourceBitRate(PCM_source* src)
EEL2: double extension_api("CF_GetMediaSourceBitRate", PCM_source src)
Lua: number bitrate = reaper.CF_GetMediaSourceBitRate(PCM_source src)
Python: Float retval = CF_GetMediaSourceBitRate(PCM_source src)
Returns the bit rate for WAVE (wav, aif) and streaming/variable formats (mp3, ogg, opus).
REAPER v6.19 or later is required for non-WAVE formats.
Returnvalues:
number bitrate |
the bitrate of the pcm-source |
Parameters:
PCM_source src |
the PCM-source, whose bitrate you want to query |
^
CF_GetMediaSourceMetadata
C: bool CF_GetMediaSourceMetadata(PCM_source* src, const char* name, char* out, int out_sz)
EEL2: bool extension_api("CF_GetMediaSourceMetadata", PCM_source src, "name", #out)
Lua: boolean retval, string out = reaper.CF_GetMediaSourceMetadata(PCM_source src, string name, string out)
Python: (Boolean retval, PCM_source src, String name, String out, Int out_sz) = CF_GetMediaSourceMetadata(src, name, out, out_sz)
Get the value of the given metadata field (eg. DESC, ORIG, ORIGREF, DATE, TIME, UMI, CODINGHISTORY for BWF).
Returnvalues:
Parameters:
^
CF_GetMediaSourceOnline
C: bool CF_GetMediaSourceOnline(PCM_source* src)
EEL2: bool extension_api("CF_GetMediaSourceOnline", PCM_source src)
Lua: boolean retval = reaper.CF_GetMediaSourceOnline(PCM_source src)
Python: Boolean retval = CF_GetMediaSourceOnline(PCM_source src)
Returns the online/offline status of the given source.
Returnvalues:
Parameters:
^
CF_GetMediaSourceRPP
C: bool CF_GetMediaSourceRPP(PCM_source* src, char* fnOut, int fnOut_sz)
EEL2: bool extension_api("CF_GetMediaSourceRPP", PCM_source src, #fn)
Lua: boolean retval, string fn = reaper.CF_GetMediaSourceRPP(PCM_source src)
Python: (Boolean retval, PCM_source src, String fnOut, Int fnOut_sz) = CF_GetMediaSourceRPP(src, fnOut, fnOut_sz)
Get the project associated with this source (BWF, subproject...).
Returnvalues:
Parameters:
^
CF_PCM_Source_SetSectionInfo
C: bool CF_PCM_Source_SetSectionInfo(PCM_source* section, PCM_source* source, double offset, double length, bool reverse)
EEL2: bool extension_api("CF_PCM_Source_SetSectionInfo", PCM_source section, PCM_source source, offset, length, bool reverse)
Lua: boolean retval = reaper.CF_PCM_Source_SetSectionInfo(PCM_source section, PCM_source source, number offset, number length, boolean reverse)
Python: Boolean CF_PCM_Source_SetSectionInfo(PCM_source section, PCM_source source, Float offset, Float length, Boolean reverse)
Give a section source created using PCM_Source_CreateFromType("SECTION"). Offset and length are ignored if 0. Negative length to subtract from the total length of the source.
Returnvalues:
Parameters:
^
CF_SetMediaSourceOnline
C: void CF_SetMediaSourceOnline(PCM_source* src, bool set)
EEL2: extension_api("CF_SetMediaSourceOnline", PCM_source src, bool set)
Lua: reaper.CF_SetMediaSourceOnline(PCM_source src, boolean set)
Python: CF_SetMediaSourceOnline(PCM_source src, Boolean set)
Set the online/offline status of the given source (closes files when set=false).
Parameters:
^
CalcMediaSrcLoudness
C: int retval = CalcMediaSrcLoudness(PCM_source* mediasource)
EEL2: int retval = CalcMediaSrcLoudness(PCM_source mediasource)
Lua: integer retval = reaper.CalcMediaSrcLoudness(PCM_source mediasource)
Python: Int retval = RPR_CalcMediaSrcLoudness(PCM_source mediasource)
Calculates loudness statistics of media via dry run render. Statistics will be displayed to the user; call GetSetProjectInfo_String("RENDER_STATS") to retrieve via API. Returns 1 if loudness was calculated successfully, -1 if user canceled the dry run render.
Returnvalues:
integer retval |
1, calculation was successful; -1, calculation was unsuccessful/canceled by the user |
Parameters:
PCM_source source |
the source to calculate the loudness from |
^
CalculateNormalization
C: double retval = CalculateNormalization(PCM_source* source, int normalizeTo, double normalizeTarget, double normalizeStart, double normalizeEnd)
EEL2: double retval = CalculateNormalization(PCM_source source, int normalizeTo, normalizeTarget, normalizeStart, normalizeEnd)
Lua: number normalized_value = reaper.CalculateNormalization(PCM_source source, integer normalizeTo, number normalizeTarget, number normalizeStart, number normalizeEnd)
Python: Float retval = RPR_CalculateNormalization(PCM_source source, Int normalizeTo, Float normalizeTarget, Float normalizeStart, Float normalizeEnd)
Calculate normalize adjustment for source media. normalizeTo: 0=LUFS-I, 1=RMS-I, 2=peak, 3=true peak, 4=LUFS-M max, 5=LUFS-S max. normalizeTarget: dBFS or LUFS value. normalizeStart, normalizeEnd: time bounds within source media for normalization calculation. If normalizationStart=0 and normalizationEnd=0, the full duration of the media will be used for the calculation
Returnvalues:
number normalized_value |
the normalized value |
Parameters:
PCM_source source |
the source to be normalized |
integer normalizeTo |
the normalizing mode
0, LUFS-I
1, RMS-I
2, peak
3, true peak
4, LUFS-M max
5, LUFS-S max |
number normalizeTarget |
the target to normalize to, dBFS or LUFS value |
number normalizeStart |
the start-position from where to normalize; 0, for start of source |
number normalizeEnd |
the endposition to where to normalize; 0, for end of source |
^
GetMediaSourceFileName
C: void GetMediaSourceFileName(PCM_source* source, char* filenamebufOut, int filenamebufOut_sz)
EEL2: GetMediaSourceFileName(PCM_source source, #filenamebuf)
Lua: string filenamebuf = reaper.GetMediaSourceFileName(PCM_source source)
Python: (PCM_source source, String filenamebufOut, Int filenamebufOut_sz) = RPR_GetMediaSourceFileName(source, filenamebufOut, filenamebufOut_sz)
Copies the media source filename to filenamebuf. Note that in-project MIDI media sources have no associated filename.
Returnvalues:
string filenamebuf |
the filename of the source-file |
Parameters:
PCM_source source |
the source, whose source-filename you want to retrieve |
see also:
^
GetMediaSourceLength
C: double GetMediaSourceLength(PCM_source* source, bool* lengthIsQNOut)
EEL2: double GetMediaSourceLength(PCM_source source, bool &lengthIsQN)
Lua: number retval, boolean lengthIsQN = reaper.GetMediaSourceLength(PCM_source source)
Python: (Float retval, PCM_source source, Boolean lengthIsQNOut) = RPR_GetMediaSourceLength(source, lengthIsQNOut)
Returns the length of the source media. If the media source is beat-based, the length will be in quarter notes, otherwise it will be in seconds.
Returnvalues:
Parameters:
^
GetMediaSourceNumChannels
C: int GetMediaSourceNumChannels(PCM_source* source)
EEL2: int GetMediaSourceNumChannels(PCM_source source)
Lua: integer mediasourcenumchans = reaper.GetMediaSourceNumChannels(PCM_source source)
Python: Int retval = RPR_GetMediaSourceNumChannels(PCM_source source)
Returns the number of channels in the source media.
Returnvalues:
integer mediasourcenumchans |
|
Parameters:
^
GetMediaSourceParent
C: PCM_source* GetMediaSourceParent(PCM_source* src)
EEL2: PCM_source GetMediaSourceParent(PCM_source src)
Lua: PCM_source parent_src = reaper.GetMediaSourceParent(PCM_source src)
Python: PCM_source parent_src = RPR_GetMediaSourceParent(PCM_source src)
Returns the parent source, or NULL if src is the root source. This can be used to retrieve the parent properties of sections or reversed sources for example.
Returnvalues:
Parameters:
^
GetMediaSourceSampleRate
C: int GetMediaSourceSampleRate(PCM_source* source)
EEL2: int GetMediaSourceSampleRate(PCM_source source)
Lua: integer mediasourcesamplerate = reaper.GetMediaSourceSampleRate(PCM_source source)
Python: Int retval = RPR_GetMediaSourceSampleRate(PCM_source source)
Returns the sample rate. MIDI source media will return zero.
Returnvalues:
integer mediasourcesamplerate |
|
Parameters:
^
GetMediaSourceType
C: void GetMediaSourceType(PCM_source* source, char* typebufOut, int typebufOut_sz)
EEL2: GetMediaSourceType(PCM_source source, #typebuf)
Lua: string typebuf = reaper.GetMediaSourceType(PCM_source source)
Python: (PCM_source source, String typebufOut, Int typebufOut_sz) = RPR_GetMediaSourceType(source, typebufOut, typebufOut_sz)
copies the media source type ("WAV", "MIDI", etc) to typebuf
Returnvalues:
string typebuf |
the source-type |
Parameters:
PCM_source source |
the source, whose source-type you want to get |
^
PCM_Source_CreateFromFile
C: PCM_source* PCM_Source_CreateFromFile(const char* filename)
EEL2: PCM_source PCM_Source_CreateFromFile("filename")
Lua: PCM_source src = reaper.PCM_Source_CreateFromFile(string filename)
Python: PCM_source src = RPR_PCM_Source_CreateFromFile(String filename)
Returnvalues:
Parameters:
^
PCM_Source_CreateFromFileEx
C: PCM_source* PCM_Source_CreateFromFileEx(const char* filename, bool forcenoMidiImp)
EEL2: PCM_source PCM_Source_CreateFromFileEx("filename", bool forcenoMidiImp)
Lua: PCM_source src = reaper.PCM_Source_CreateFromFileEx(string filename, boolean forcenoMidiImp)
Python: PCM_source src = RPR_PCM_Source_CreateFromFileEx(String filename, Boolean forcenoMidiImp)
Create a PCM_source from filename, and override pref of MIDI files being imported as in-project MIDI events.
Returnvalues:
Parameters:
^
PCM_Source_CreateFromType
C: PCM_source* PCM_Source_CreateFromType(const char* sourcetype)
EEL2: PCM_source PCM_Source_CreateFromType("sourcetype")
Lua: PCM_source src = reaper.PCM_Source_CreateFromType(string sourcetype)
Python: PCM_source src = RPR_PCM_Source_CreateFromType(String sourcetype)
Create a PCM_source from a "type" (use this if you're going to load its state via LoadState/ProjectStateContext).
Valid types include "WAVE", "MIDI", or whatever plug-ins define as well.
Returnvalues:
Parameters:
^
PCM_Source_Destroy
C: void PCM_Source_Destroy(PCM_source* src)
EEL2: PCM_Source_Destroy(PCM_source src)
Lua: reaper.PCM_Source_Destroy(PCM_source src)
Python: RPR_PCM_Source_Destroy(PCM_source src)
Deletes a PCM_source -- be sure that you remove any project reference before deleting a source
Parameters:
PCM_source src |
the source to be deleted |
^
Xen_GetMediaSourceSamples
C: int Xen_GetMediaSourceSamples(PCM_source* src, void* destbuf, int destbufoffset, int numframes, int numchans, double samplerate, double sourceposition)
EEL2: int extension_api("Xen_GetMediaSourceSamples", PCM_source src, void* destbuf, int destbufoffset, int numframes, int numchans, samplerate, sourceposition)
Lua: integer retval = reaper.Xen_GetMediaSourceSamples(PCM_source src, identifier destbuf, integer destbufoffset, integer numframes, integer numchans, number samplerate, number sourceposition)
Python: Int retval = Xen_GetMediaSourceSamples(PCM_source src, void destbuf, Int destbufoffset, Int numframes, Int numchans, Float samplerate, Float sourceposition)
Get interleaved audio data from media source
Returnvalues:
Parameters:
^
GetToggleCommandState2
C: int retval = (*GetToggleCommandState2)(KbdSectionInfo* section, int command_id)
Get Toggle Command State 2
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
int command_id |
the command-id of the command, whose toggle-state you want |
^
GetToggleCommandStateThroughHooks
C: int retval = (*GetToggleCommandStateThroughHooks)(KbdSectionInfo* section, int command_id)
Returns the state of an action via extension plugins' hooks.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MediaTrack* section |
the section, in which the action appears in
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
int command_id |
the command-id of the action, whose state you want |
^
KBD_OnMainActionEx
C: int retval = (*KBD_OnMainActionEx)(int cmd, int val, int valhw, int relmode, HWND hwnd, ReaProject* proj)
val/valhw are used for midi stuff.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
int val |
val=[0..127] and valhw=-1 (midi CC) |
int valhw |
valhw >=0 (midi pitch (valhw | val<<7)) |
int relmode |
relmode absolute (0) or 1/2/3 for relative adjust modes |
^
kbd_RunCommandThroughHooks
C: bool retval = (*kbd_RunCommandThroughHooks)(KbdSectionInfo* section, int* actionCommandID, int* val, int* valhw, int* relmode, HWND hwnd)
Run command through hooks. actioncommandID may get modified.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
int* actionCommandID |
the commandid-number of the action you want to run. |
^
kbd_getCommandName
C: void (*kbd_getCommandName)(int cmd, char* s, KbdSectionInfo* section)
Get the string of a key assigned to command "cmd" in a section.
This function is poorly named as it doesn't return the command's name, see kbd_getTextFromCmd.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
int cmd |
commandid of the action |
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
see also:
^
kbd_getTextFromCmd
C: const char* retval = (*kbd_getTextFromCmd)(int cmd, KbdSectionInfo* section)
Get text from Command
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
^
kbd_processMidiEventActionEx
C: bool retval = (*kbd_processMidiEventActionEx)(MIDI_event_t* evt, KbdSectionInfo* section, HWND hwndCtx)
Process Midi Event Action
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
^
kbd_translateAccelerator
C: int retval = (*kbd_translateAccelerator)(HWND hwnd, MSG* msg, KbdSectionInfo* section)
Pass in the HWND to receive commands, a MSG of a key command, and a valid section,
and kbd_translateAccelerator() will process it looking for any keys bound to it, and send the messages off.
Returns 1 if processed, 0 if no key binding found.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
^
Audio_RegHardwareHook
C: int retval = (*Audio_RegHardwareHook)(bool isAdd, audio_hook_register_t* reg)
Registers Audio Hardware-Hook.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
audio_hook_register_t* reg |
|
^
CalculatePeaks
C: int retval = (*CalculatePeaks)(PCM_source_transfer_t* srcBlock, PCM_source_peaktransfer_t* pksBlock)
Calculates Peaks.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
PCM_source_transfer_t* srcBlock |
|
PCM_source_peaktransfer_t* pksBlock |
|
^
CalculatePeaksFloatSrcPtr
C: int retval = (*CalculatePeaksFloatSrcPtr)(PCM_source_transfer_t* srcBlock, PCM_source_peaktransfer_t* pksBlock)
Calculates Peaks.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
PCM_source_transfer_t* srcBlock |
|
PCM_source_peaktransfer_t* pksBlock |
|
^
GetPeaksBitmap
C: void* (*GetPeaksBitmap)(PCM_source_peaktransfer_t* pks, double maxamp, int w, int h, LICE_IBitmap* bmp)
See note in reaper_plugin.h about PCM_source_peaktransfer_t::samplerate
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
PCM_source_peaktransfer_t* pks |
|
^
HiresPeaksFromSource
C: void (*HiresPeaksFromSource)(PCM_source* src, PCM_source_peaktransfer_t* block)
Hires peaks from source.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
PCM_source_peaktransfer_t* block |
|
^
IsInRealTimeAudio
C: int retval = (*IsInRealTimeAudio)()
Are we in a realtime audio thread (between OnAudioBuffer calls,not in some worker/anticipative FX thread)? threadsafe
Stored in reaper_plugin_functions.h
Returnvalues:
^
PCM_Sink_Create
C: PCM_sink* retval = (*PCM_Sink_Create)(const char* filename, const char* cfg, int cfg_sz, int nch, int srate, bool buildpeaks)
PCM sink create
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
PCM_Sink_CreateEx
C: PCM_sink* retval = (*PCM_Sink_CreateEx)(ReaProject* proj, const char* filename, const char* cfg, int cfg_sz, int nch, int srate, bool buildpeaks)
PCM sink create ex.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
ReaProject* proj |
the project-number. 0 for the current project. |
^
PCM_Source_CreateFromSimple
C: PCM_source* retval = (*PCM_Source_CreateFromSimple)(ISimpleMediaDecoder* dec, const char* fn)
PCM_Source create from simple
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
PeakBuild_Create
C: REAPER_PeakBuild_Interface* retval = (*PeakBuild_Create)(PCM_source* src, const char* fn, int srate, int nch)
Peak build create
Stored in reaper_plugin_functions.h
Returnvalues:
REAPER_PeakBuild_Interface* retval |
|
Parameters:
^
PeakBuild_CreateEx
C: REAPER_PeakBuild_Interface* retval = (*PeakBuild_CreateEx)(PCM_source* src, const char* fn, int srate, int nch, int flags)
Peakbuild create-ex. flags&1 for FP support
Stored in reaper_plugin_functions.h
Returnvalues:
REAPER_PeakBuild_Interface* retval |
|
Parameters:
^
PeakGet_Create
C: REAPER_PeakGet_Interface* retval =(*PeakGet_Create)(const char* fn, int srate, int nch)
Peak get create.
Stored in reaper_plugin_functions.h
Returnvalues:
REAPER_PeakGet_Interface* retval |
|
Parameters:
^
get_config_var
C: void* (*get_config_var)(const char* name, int* szOut)
gets config var
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
see also:
^
get_midi_config_var
C: void* (*get_midi_config_var)(const char* name, int* szOut);
Deprecated.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
projectconfig_var_addr
C: void* (*projectconfig_var_addr)(ReaProject* proj, int idx)
Project config var addr.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
ReaProject* proj |
the project-number. 0 for the current project. |
see also:
^
projectconfig_var_getoffs
C: int retval = (*projectconfig_var_getoffs)(const char* name, int* szOut)
Returns offset to pass to projectconfig_var_addr() to get project-config var of name. szout gets size of object.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
int* szOut |
size of the object |
see also:
^
realloc_cmd_clear
C: void (*realloc_cmd_clear)(int tok)
clears a buffer/buffer-size registration added with realloc_cmd_register_buf, and clears any later registrations, frees any allocated buffers. call after values are read from any registered pointers etc.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
realloc_cmd_register_buf
C: int (*realloc_cmd_register_buf)(char** ptr, int* ptr_size)
clears a buffer/buffer-size registration added with realloc_cmd_register_buf, and clears any later registrations, frees any allocated buffers. call after values are read from any registered pointers etc.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetPreferredDiskReadMode
C: void (*GetPreferredDiskReadMode)(int* mode, int* nb, int* bs)
Gets user configured preferred disk read mode. mode/nb/bs are all parameters that should be passed to WDL_FileRead, see for more information.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetPreferredDiskReadModePeak
C: void (*GetPreferredDiskReadModePeak)(int* mode, int* nb, int* bs)
Gets user configured preferred disk read mode for use when building peaks. mode/nb/bs are all parameters that should be passed to WDL_FileRead, see for more information.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetPreferredDiskWriteMode
C: void (*GetPreferredDiskWriteMode)(int* mode, int* nb, int* bs)
Gets user configured preferred disk write mode. nb will receive two values, the initial and maximum write buffer counts. mode/nb/bs are all parameters that should be passed to WDL_FileWrite, see for more information.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
update_disk_counters
C: void (*update_disk_counters)(int readamt, int writeamt)
Updates disk I/O statistics with bytes transferred since last call.
Notify REAPER of a write error by calling with readamt=0, writeamt=-101010110 for unknown or -101010111 for disk full
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Arc
C: void (*LICE_Arc)(LICE_IBitmap* dest, float cx, float cy, float r, float minAngle, float maxAngle, LICE_pixel color, float alpha, int mode, bool aa)
LICE arc
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Blit
C: void (*LICE_Blit)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int srcx, int srcy, int srcw, int srch, float alpha, int mode)
LICE blit
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Blur
C: void (*LICE_Blur)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int srcx, int srcy, int srcw, int srch)
LICE blur
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_BorderedRect
C: void (*LICE_BorderedRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel bgcolor, LICE_pixel fgcolor, float alpha, int mode)
LICE bordered rect.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Circle
C: void (*LICE_Circle)(LICE_IBitmap* dest, float cx, float cy, float r, LICE_pixel color, float alpha, int mode, bool aa)
LICE circle
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Clear
C: void (*LICE_Clear)(LICE_IBitmap* dest, LICE_pixel color)
LICE clear
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_ClearRect
C: void (*LICE_ClearRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel mask, LICE_pixel orbits)
LICE clear rect
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Copy
C: void (*LICE_Copy)(LICE_IBitmap* dest, LICE_IBitmap* src)
LICE copy
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_CreateBitmap
C: LICE_IBitmap* retval = (*LICE_CreateBitmap)(int mode, int w, int h)
Create a new bitmap. this is like calling new LICE_MemBitmap (mode=0) or new LICE_SysBitmap (mode=1).
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_CreateFont
C: LICE_IFont* retval = (*LICE_CreateFont)()
LICE create font
Stored in reaper_plugin_functions.h
Returnvalues:
^
LICE_DrawCBezier
C: void (*LICE_DrawCBezier)(LICE_IBitmap* dest, double xstart, double ystart, double xctl1, double yctl1, double xctl2, double yctl2, double xend, double yend, LICE_pixel color, float alpha, int mode, bool aa, double tol)
LICE Draw C Bezier
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_DrawChar
C: void (*LICE_DrawChar)(LICE_IBitmap* bm, int x, int y, char c, LICE_pixel color, float alpha, int mode)
LICE draw char
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_DrawGlyph
C: void (*LICE_DrawGlyph)(LICE_IBitmap* dest, int x, int y, LICE_pixel color, LICE_pixel_chan* alphas, int glyph_w, int glyph_h, float alpha, int mode)
LICE draw glyph
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_DrawRect
C: void (*LICE_DrawRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel color, float alpha, int mode)
LICE draw rect
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_DrawText
C: void (*LICE_DrawText)(LICE_IBitmap* bm, int x, int y, const char* string, LICE_pixel color, float alpha, int mode)
LICE draw text
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_FillCBezier
C: void (*LICE_FillCBezier)(LICE_IBitmap* dest, double xstart, double ystart, double xctl1, double yctl1, double xctl2, double yctl2, double xend, double yend, int yfill, LICE_pixel color, float alpha, int mode, bool aa, double tol);
LICE Fill CBezier
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_FillCircle
C: void (*LICE_FillCircle)(LICE_IBitmap* dest, float cx, float cy, float r, LICE_pixel color, float alpha, int mode, bool aa)
LICE fill circle
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_FillConvexPolygon
C: void (*LICE_FillConvexPolygon)(LICE_IBitmap* dest, int* x, int* y, int npoints, LICE_pixel color, float alpha, int mode)
LICE fill convex polygon
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_FillRect
C: void (*LICE_FillRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel color, float alpha, int mode)
LICE fill rect
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_FillTrapezoid
C: void (*LICE_FillTrapezoid)(LICE_IBitmap* dest, int x1a, int x1b, int y1, int x2a, int x2b, int y2, LICE_pixel color, float alpha, int mode)
LICE fill trapezoid
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_FillTriangle
C: void (*LICE_FillTriangle)(LICE_IBitmap* dest, int x1, int y1, int x2, int y2, int x3, int y3, LICE_pixel color, float alpha, int mode)
LICE fill triangle
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_GetPixel
C: LICE_pixel retval = (*LICE_GetPixel)(LICE_IBitmap* bm, int x, int y)
LICE get pixel
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_GradRect
C: void (*LICE_GradRect)(LICE_IBitmap* dest, int dstx, int dsty, int dstw, int dsth, float ir, float ig, float ib, float ia, float drdx, float dgdx, float dbdx, float dadx, float drdy, float dgdy, float dbdy, float dady, int mode)
LICE grad rect
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_Line
C: void (*LICE_Line)(LICE_IBitmap* dest, float x1, float y1, float x2, float y2, LICE_pixel color, float alpha, int mode, bool aa)
LICE line
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_LineInt
C: void (*LICE_LineInt)(LICE_IBitmap* dest, int x1, int y1, int x2, int y2, LICE_pixel color, float alpha, int mode, bool aa)
LICE line int
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_LoadPNG
C: LICE_IBitmap* retval = (*LICE_LoadPNG)(const char* filename, LICE_IBitmap* bmp)
LICE load png
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_LoadPNGFromResource
C: LICE_IBitmap* retval = (*LICE_LoadPNGFromResource)(HINSTANCE hInst, int resid, LICE_IBitmap* bmp)
LICE load png from resource
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_MeasureText
C: void (*LICE_MeasureText)(const char* string, int* w, int* h)
LICE measure text
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_MultiplyAddRect
C: void (*LICE_MultiplyAddRect)(LICE_IBitmap* dest, int x, int y, int w, int h, float rsc, float gsc, float bsc, float asc, float radd, float gadd, float badd, float aadd)
LICE multiplay add rect
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_PutPixel
C: void (*LICE_PutPixel)(LICE_IBitmap* bm, int x, int y, LICE_pixel color, float alpha, int mode)
LICE put pixel
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_RotatedBlit
C: void (*LICE_RotatedBlit)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int dstw, int dsth, float srcx, float srcy, float srcw, float srch, float angle, bool cliptosourcerect, float alpha, int mode, float rotxcent, float rotycent)
LICE rotate blit. These coordinates are offset from the center of the image,in source pixel coordinates.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_RoundRect
C: void (*LICE_RoundRect)(LICE_IBitmap* drawbm, float xpos, float ypos, float w, float h, int cornerradius, LICE_pixel col, float alpha, int mode, bool aa)
LICE round rect
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_ScaledBlit
C: void (*LICE_ScaledBlit)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int dstw, int dsth, float srcx, float srcy, float srcw, float srch, float alpha, int mode)
LICE scaled blit.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_SimpleFill
C: void (*LICE_SimpleFill)(LICE_IBitmap* dest, int x, int y, LICE_pixel newcolor, LICE_pixel comparemask, LICE_pixel keepmask)
LICE simple fill
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE_ThickFLine
C: void (*LICE_ThickFLine)(LICE_IBitmap* dest, double x1, double y1, double x2, double y2, LICE_pixel color, float alpha, int mode, int wid);
LICE simple fill
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__Destroy
C: void (*LICE__Destroy)(LICE_IBitmap* bm)
LICE destroy.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__DestroyFont
C: void (*LICE__DestroyFont)(LICE_IFont* font);
LICE destroy-font.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__DrawText
C: int retval = (*LICE__DrawText)(LICE_IFont* font, LICE_IBitmap* bm, const char* str, int strcnt, RECT* rect, UINT dtFlags)
LICE draw text.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__GetBits
C: void* (*LICE__GetBits)(LICE_IBitmap* bm)
LICE get bits.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__GetDC
C: HDC retval = (*LICE__GetDC)(LICE_IBitmap* bm)
LICE__GetDC
Returnvalues:
Parameters:
^
LICE__GetHeight
C: int retval = (*LICE__GetHeight)(LICE_IBitmap* bm)
LICE get height
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__GetRowSpan
C: int retval = (*LICE__GetRowSpan)(LICE_IBitmap* bm)
LICE get row span.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__GetWidth
C: int retval = (*LICE__GetWidth)(LICE_IBitmap* bm)
LICE get width.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__IsFlipped
C: bool retval = (*LICE__IsFlipped)(LICE_IBitmap* bm)
LICE is flipped
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__SetBkColor
C: LICE_pixel retval = (*LICE__SetBkColor)(LICE_IFont* font, LICE_pixel color)
LICE set bk color
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__SetFromHFont
C: void (*LICE__SetFromHFont)(LICE_IFont* font, HFONT hfont, int flags)
LICE set from h-font
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
LICE_IFont* font |
font must REMAIN valid,unless LICE_FONT_FLAG_PRECALCALL is set |
^
LICE__SetTextColor
C: LICE_pixel retval = (*LICE__SetTextColor)(LICE_IFont* font, LICE_pixel color)
LICE set text color
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__SetTextCombineMode
C: void (*LICE__SetTextCombineMode)(LICE_IFont* ifont, int mode, float alpha)
LICE set text combine mode
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
LICE__resize
C: bool retval = (*LICE__resize)(LICE_IBitmap* bm, int w, int h)
LICE resize
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
WDL_VirtualWnd_ScaledBlitBG
C: bool retval = (*WDL_VirtualWnd_ScaledBlitBG)(LICE_IBitmap* dest, WDL_VirtualWnd_BGCfg* src, int destx, int desty, int destw, int desth, int clipx, int clipy, int clipw, int cliph, float alpha, int mode)
WDL virtualwnd scale blit bg.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
WDL_VirtualWnd_BGCfg* src |
|
^
GetSetMediaTrackInfo
C: void* (*GetSetMediaTrackInfo)(MediaTrack* tr, const char* parmname, void* setNewValue)
Gets/Sets MediaTrack-parameters. Works like GetMediaTrackInfo_Value and SetMediaTrackInfo_Value but has more parameters.
-P_PARTRACK : MediaTrack * : parent track (read-only)
-P_PROJECT : ReaProject * : parent project (read-only)
-P_NAME : char * : track name (on master returns NULL)
-P_ICON : const char * : track icon (full filename, or relative to resource_path/data/track_icons)
-P_MCP_LAYOUT : const char * : layout name
-P_RAZOREDITS : const char * : list of razor edit areas, as space-separated triples of start time, end time, and envelope GUID string.
-Example: "0.00 1.00 \"\" 0.00 1.00 "{xyz-...}"
-P_RAZOREDITS_EXT : const char * : list of razor edit areas, as comma-separated sets of space-separated tuples of start time, end time, optional envelope GUID string, optional fixed/fipm top y-position, optional fixed/fipm bottom y-position(fipm means fixed item positioning).
- Example: "0.0 1.0,0.0 1.0 "{xyz-...}",1.0 2.0 "" 0.25 0.5"
-P_TCP_LAYOUT : const char * : layout name
-P_EXT:xyz : char * : extension-specific persistent data
-P_UI_RECT:tcp.mute : char * : read-only, allows querying screen position + size of track WALTER elements (tcp.size queries screen position and size of entire TCP, etc).
-GUID : GUID * : 16-byte GUID, can query or update. If using a _String() function, GUID is a string {xyz-...}.
-B_MUTE : bool * : muted
-B_PHASE : bool * : track phase inverted
-B_RECMON_IN_EFFECT : bool * : record monitoring in effect (current audio-thread playback state, read-only)
-IP_TRACKNUMBER : int : track number 1-based, 0=not found, -1=master track (read-only, returns the int directly)
-I_SOLO : int * : soloed, 0=not soloed, 1=soloed, 2=soloed in place, 5=safe soloed, 6=safe soloed in place
-I_FXEN : int * : fx enabled, 0=bypassed, !0=fx active
-I_RECARM : int * : record armed, 0=not record armed, 1=record armed
-I_RECINPUT : int * : record input, <0=no input. if 4096 set, input is MIDI and low 5 bits represent channel (0=all, 1-16=only chan), next 6 bits represent physical input (63=all, 62=VKB). If 4096 is not set, low 10 bits (0..1023) are input start channel (ReaRoute/Loopback start at 512). If 2048 is set, input is multichannel input (using track channel count), or if 1024 is set, input is stereo input, otherwise input is mono.
-I_RECMODE : int * : record mode, 0=input, 1=stereo out, 2=none, 3=stereo out w/latency compensation, 4=midi output, 5=mono out, 6=mono out w/ latency compensation, 7=midi overdub, 8=midi replace
-I_RECMODE_FLAGS : int * : record mode flags, &3=output recording mode (0=post fader, 1=pre-fx, 2=post-fx/pre-fader)
-I_RECMON : int * : record monitoring, 0=off, 1=normal, 2=not when playing (tape style)
-I_RECMONITEMS : int * : monitor items while recording, 0=off, 1=on
-I_AUTOMODE : int * : track automation mode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch
-I_NCHAN : int * : number of track channels, 2-64, even numbers only
-I_SELECTED : int * : track selected, 0=unselected, 1=selected
-I_WNDH : int * : current TCP window height in pixels including envelopes (read-only)
-I_TCPH : int * : current TCP window height in pixels not including envelopes (read-only)
-I_TCPY : int * : current TCP window Y-position in pixels relative to top of arrange view (read-only)
-I_MCPX : int * : current MCP X-position in pixels relative to mixer container
-I_MCPY : int * : current MCP Y-position in pixels relative to mixer container
-I_MCPW : int * : current MCP width in pixels
-I_MCPH : int * : current MCP height in pixels
-I_FOLDERDEPTH : int * : folder depth change, 0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc
-I_FOLDERCOMPACT : int * : folder compacted state (only valid on folders), 0=normal, 1=small, 2=tiny children
-I_MIDIHWOUT : int * : track midi hardware output index, <0=disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31)
-I_PERFFLAGS : int * : track performance flags, &1=no media buffering, &2=no anticipative FX
-I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x1000000 (i.e. ColorToNative(r,g,b)|0x1000000). If you do not |0x1000000, then it will not be used, but will store the color
-I_HEIGHTOVERRIDE : int * : custom height override for TCP window, 0 for none, otherwise size in pixels
-B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking)
-D_VOL : double * : trim volume of track, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc
-D_PAN : double * : trim pan of track, -1..1
-D_WIDTH : double * : width of track, -1..1
-D_DUALPANL : double * : dualpan position 1, -1..1, only if I_PANMODE==6
-D_DUALPANR : double * : dualpan position 2, -1..1, only if I_PANMODE==6
-I_PANMODE : int * : pan mode, 0=classic 3.x, 3=new balance, 5=stereo pan, 6=dual pan
-D_PANLAW : double * : pan law of track, <0=project default, 0.5=-6dB, 0.707..=-3dB, 1=+0dB, 1.414..=-3dB with gain compensation, 2=-6dB with gain compensation, etc
-I_PANLAW_FLAGS : int * : pan law flags, 0=sine taper, 1=hybrid taper with deprecated behavior when gain compensation enabled, 2=linear taper, 3=hybrid taper
-P_ENV:
-B_SHOWINMIXER : bool * : track control panel visible in mixer (do not use on master track)
-B_SHOWINTCP : bool * : track control panel visible in arrange view (do not use on master track)
-B_MAINSEND : bool * : track sends audio to parent
-C_MAINSEND_OFFS : char * : channel offset of track send to parent
-I_FREEMODE : int * : 1=track free item positioning enabled, 2=track fixed lanes enabled (call UpdateTimeline() after changing)
-C_BEATATTACHMODE : char * : track timebase, -1=project default, 0=time, 1=beats (position, length, rate), 2=beats (position only)
-F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0=minimum allowed, 1=maximum allowed)
-F_MCP_FXPARM_SCALE : float * : scale of fx parameter area in MCP (0=minimum allowed, 1=maximum allowed)
-F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=minimum allowed, 1=maximum allowed)
-F_TCP_FXPARM_SCALE : float * : scale of TCP parameter area when TCP FX are embedded (0=min allowed, default, 1=max allowed)
-I_PLAY_OFFSET_FLAG : int * : track media playback offset state, &1=bypassed, &2=offset value is measured in samples (otherwise measured in seconds)
-D_PLAY_OFFSET : double * : track media playback offset, units depend on I_PLAY_OFFSET_FLAG
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MediaTrack* tr |
the Mediatrack-object, that shall be modified |
const char* parmname |
the parameter to be gotten or set |
void* setNewValue |
the new value. See the description of parmname above for more details |
^
GetTrackInfo
C: const char* retval = (*GetTrackInfo)(INT_PTR track, int* flags)
Gets track info (returns name).
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
INT_PTR track |
track index, -1=master, 0..n, or cast a MediaTrack* to int |
int* flags |
if flags is non-NULL, will be set to:
&1, folder
&2, selected
&4, has fx enabled
&8, muted
&16, soloed
&32, SIP'd (with &16)
&64, rec armed |
^
GetSetMediaItemTakeInfo
C: void* (*GetSetMediaItemTakeInfo)(MediaItem_Take* tk, const char* parmname, void* setNewValue)
Gets/Sets Media Item Take-parameters. Works like GetMediaItemTakeInfo_Value and SetMediaItemTakeInfo_Value but has more parameters.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MediaItek_Take* tk |
a MediaItem_Take-object, that shall be altered |
const char* parmname |
the name of the parameter to be changed
P_TRACK : pointer to MediaTrack (read-only)
P_ITEM : pointer to MediaItem (read-only)
P_SOURCE : PCM_source *. Note that if setting this, you should first retrieve the old source, set the new, THEN delete the old.
GUID : GUID * : 16-byte GUID, can query or update
P_NAME : char * to take name
D_STARTOFFS : double *, start offset in take of item
D_VOL : double *, take volume
D_PAN : double *, take pan
D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
B_PPITCH, bool *, preserve pitch when changing rate
I_LASTY : int * : Y-position (relative to top of track) in pixels (read-only)
I_LASTH : int * : height in pixels (read-only)
I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
I_CUSTOMCOLOR : int *, custom color, OS dependent color|0x1000000 (i.e. ColorToNative(r,g,b)|0x1000000). If you do not |0x1000000, then it will not be used (though will store the color anyway).
IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly) |
void* setNewValue |
the new value to be set to the parameter. See the description of parmname above for more details. |
^
IsItemTakeActiveForPlayback
C: bool retval = (*IsItemTakeActiveForPlayback)(MediaItem* item, MediaItem_Take* take)
get whether a take will be played (active take, unmuted, etc)
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MediaItem* item |
MediaItem in which the take is to be checked |
MediaItem_Take* take |
the MediaItem_Take to be checked |
^
GetSetMediaItemInfo
C: void* (*GetSetMediaItemInfo)(MediaItem* item, const char* parmname, void* setNewValue)
Get/Set Media Item Info
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MediaItem* item |
a MediaItem-object |
const char* parmname |
the parameter to be gotten/set
P_TRACK : MediaTrack * (read only)
B_MUTE : bool * to muted state
B_MUTE_ACTUAL : bool * : muted (ignores solo). setting this value will not affect C_MUTE_SOLO.
C_MUTE_SOLO : char * : solo override (-1=soloed, 0=no override, 1=unsoloed). note that this API does not automatically unsolo other items when soloing (nor clear the unsolos when clearing the last soloed item), it must be done by the caller via action or via this API.
B_LOOPSRC : bool * to loop source
B_ALLTAKESPLAY : bool * to all takes play
B_UISEL : bool * to ui selected
C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
C_LOCK : char * to one char of lock flags (&1 is locked, currently)
D_VOL : double *, take volume (negative if take polarity is flipped)
D_POSITION : double * of item position (seconds)
D_LENGTH : double * of item length (seconds)
D_SNAPOFFSET : double * of item snap offset (seconds)
D_FADEINLEN : double * of item fade in length (manual, seconds)
D_FADEOUTLEN : double * of item fade out length (manual, seconds)
D_FADEINDIR : double * of item fade in curve [-1; 1]
D_FADEOUTDIR : double * of item fade out curve [-1; 1]
D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
C_FADEOUTSHAPE : int * to fadeout shape
I_GROUPID : int * to group ID (0 = no group)
I_LASTY : int * : Y-position (relative to top of track) in pixels (read-only)
I_LASTH : int * : height in pixels (read-only)
I_LASTY : int * to last y position in track (readonly)
I_LASTH : int * to last height in track (readonly)
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x1000000 (i.e. ColorToNative(r,g,b)|0x1000000). If you do not |0x1000000, then it will not be used (though will store the color anyway).
I_CURTAKE : int * to active take
IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
F_FREEMODE_Y : float * to free mode y position (0..1)
F_FREEMODE_H : float * to free mode height (0..1)
P_NOTES : char * : item note text (do not write to returned pointer, use setNewValue to update) |
void* setNewValue |
the new value to be set, refer description of parmname for the values |
^
AddCustomizableMenu
C: bool retval = (*AddCustomizableMenu)(const char* menuidstr, const char* menuname, const char* kbdsecname, bool addtomainmenu)
Adds customizable menu.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
const char* menuidstr |
is some unique identifying string |
const char* menuname |
is for main menus only (displayed in a menu bar somewhere), NULL otherwise |
const char* kbdsecname |
is the name of the KbdSectionInfo registered by this plugin, or NULL for the main actions section |
bool addtomainmenu |
true, add to main menu; false, don't add to main menu |
^
AddExtensionsMainMenu
C: bool retval = (*AddExtensionsMainMenu)()
Add an Extensions main menu, which the extension can populate/modify with plugin_register("hookcustommenu")
Stored in reaper_plugin_functions.h
Returnvalues:
see also:
^
DuplicateCustomizableMenu
C: bool retval = (*DuplicateCustomizableMenu)(void* srcmenu, void* destmenu)
Populate destmenu with all the entries and submenus found in srcmenu.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetContextMenu
C: HMENU retval = (*GetContextMenu)(int idx)
gets context menus. submenu 0:trackctl, 1:mediaitems, 2:ruler, 3:empty track area
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
kbd_ProcessActionsMenu
C: void (*kbd_ProcessActionsMenu)(HMENU menu, KbdSectionInfo* section)
Process actions-menu.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
^
kbd_reprocessMenu
C: void (*kbd_reprocessMenu)(HMENU menu, KbdSectionInfo* section)
Reprocess a menu recursively, setting key assignments to what their command IDs are mapped to.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
KbdSectionInfo* section |
the section, in which the action exists
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
^
CreateMIDIInput
C: midi_Input* retval = (*CreateMIDIInput)(int dev)
Can only reliably create midi access for devices not already opened in prefs/MIDI, suitable for control surfaces etc.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
CreateMIDIOutput
C: midi_Output* retval = (*CreateMIDIOutput)(int dev, bool streamMode, int* msoffset100)
Can only reliably create midi access for devices not already opened in prefs/MIDI, suitable for control surfaces etc.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
bool streamMode |
true, msoffset points to a persistent variable(see msoffset100 for more details) |
int* msoffset100 |
points to a persistent variable that can change and reflects added delay to output in 100ths of a millisecond. |
^
GetSetTrackMIDISupportFile
C: const char* retval = (*GetSetTrackMIDISupportFile)(ReaProject* proj, MediaTrack* track, int which, const char* filename)
Get or set the filename for storage of the MIDI bank/program select file.
"which" must be 1.
If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
ReaProject* proj |
the project-number. 0 for the current project. |
MediaTrack* track |
the MediaTrack-object of the track to be treated |
int which |
which MIDI-file to use
0, MIDI colormap image file,
1, MIDI bank/program select file,
2, MIDI text string file,
3, MIDI note mapping file. |
const char* filename |
If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned. |
^
MIDI_eventlist_Create
C: MIDI_eventlist* retval = (*MIDI_eventlist_Create)()
Create a MIDI_eventlist object. The returned object must be deleted with MIDI_eventlist_destroy.
Stored in reaper_plugin_functions.h
Returnvalues:
see also:
^
MIDI_eventlist_Destroy
C: void (*MIDI_eventlist_Destroy)(MIDI_eventlist* evtlist)
Destroy a MIDI_eventlist object that was created using MIDI_eventlist_Create.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
see also:
^
PCM_Sink_CreateMIDIFile
C: PCM_sink* retval = (*PCM_Sink_CreateMIDIFile)(const char* filename, const char* cfg, int cfg_sz, double bpm, int div)
PCM sink create MIDI file.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
PCM_Sink_CreateMIDIFileEx
C: PCM_sink* retval = (*PCM_Sink_CreateMIDIFileEx)(ReaProject* proj, const char* filename, const char* cfg, int cfg_sz, double bpm, int div)
PCM sink create MIDI file ex
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
ReaProject* proj |
the project-number. 0 for the current project. |
^
kbd_OnMidiEvent
C: void (*kbd_OnMidiEvent)(MIDI_event_t* evt, int dev_index)
On Midi Event. Can be called from anywhere (threadsafe)
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MIDI_event_t* evt |
the MIDI-event |
^
kbd_OnMidiList
C: void (*kbd_OnMidiList)(MIDI_eventlist* list, int dev_index)
On MIDI List. Can be called from anywhere (threadsafe)
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
FreeHeapPtr
C: void (*FreeHeapPtr)(void* ptr)
free heap memory returned from a Reaper API function
Stored in reaper_plugin_functions.h
Parameters:
^
GetSetObjectState
C: char* retval = (*GetSetObjectState)(void* obj, const char* str)
get or set the state of a {track,item,envelope} as an RPPXML chunk
str="" to get the chunk string returned (must call FreeHeapPtr when done)
supply str to set the state (returns zero)
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
void* obj |
the object, to be modified. Can be MediaItem, TrackEnvelope, MediaTrack. |
const char* str |
supply str to set the state (returns zero); str="" to get the chunk string returned |
see also:
FreeHeapPtr - free heap-memory returned from an API-function |
^
GetSetObjectState2
C: char* retval = (*GetSetObjectState2)(void* obj, const char* str, bool isundo)
get or set the state of a {track,item,envelope} as an RPPXML chunk
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
void* obj |
the object, to be modified. Can be MediaItem, TrackEnvelope, MediaTrack. |
const char* str |
supply str to set the state (returns zero); str="" to get the chunk string returned (must call FreeHeapPtr when done) |
bool isundo |
set, if the state will be used for undo purposes (which may allow REAPER to get the state more efficiently |
^
IsREAPER
C: bool retval = (*IsREAPER)()
Returns true if dealing with REAPER, returns false for ReaMote, etc
Stored in reaper_plugin_functions.h
Returnvalues:
^
PitchShiftSubModeMenu
C: int retval = (*PitchShiftSubModeMenu)(HWND hwnd, int x, int y, int mode, int submode_sel)
menu to select/modify pitch shifter submode, returns new value (or old value if no item selected)
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
REAPERAPI_LoadAPI
C: int retval = REAPERAPI_LoadAPI(void *(*getAPI)(const char *))
Checks, whether a certain Reaper-API-function exists.
Because the API is dynamic, callers should never assume a function exists.
Check that a non-NULL function pointer was returned before using it (unless
loaded functions are verified using REAPERAPI_LoadAPI(), see note below).
1) most source files should just #include "reaper_plugin_functions.h" as is.
2) one file should #define REAPERAPI_IMPLEMENT before including this file.
3) the plug-in should call REAPERAPI_LoadAPI(rec->GetFunc) from REAPER_PLUGIN_ENTRYPOINT
and check the return value for errors (REAPERAPI_LoadAPI will return 0 on success).
Stored in reaper_plugin_functions.h
Returnvalues:
int retval |
0, if a function exists |
Parameters:
^
ReaperGetPitchShiftAPI
C: IReaperPitchShift* retval = (*ReaperGetPitchShiftAPI)(int version)
version must be REAPER_PITCHSHIFT_API_VER
Stored in reaper_plugin_functions.h
Returnvalues:
IReaperPitchShift* retval |
|
Parameters:
^
Resampler_Create
C: REAPER_Resample_Interface* retval = (*Resampler_Create)()
Resampler create
Stored in reaper_plugin_functions.h
Returnvalues:
REAPER_Resample_Interface* retval |
|
^
ResolveRenderPattern
C: int retval = (*ResolveRenderPattern)(ReaProject* project, const char* path, const char* pattern, char* targets, int targets_sz)
Resolve a wildcard pattern into a set of nul-separated, double-nul terminated render target filenames. Returns the length of the string buffer needed for the returned file list. Call with path=NULL to suppress filtering out illegal pathnames, call with targets=NULL to get just the string buffer length.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
SetRenderLastError
C: void (*SetRenderLastError)(const char* errorstr)
Set render last error.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
__mergesort
C: void (*__mergesort)(void* base, size_t nmemb, size_t size, int (*cmpfunc)(const void*,const void*), void* tmpspace)
is a stable sorting function with an API similar to qsort().
HOWEVER, it requires some temporary space, equal to the size of the data being sorted, so you can pass it as the last parameter,
or NULL and it will allocate and free space internally.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
kbd_formatKeyName
C: void (*kbd_formatKeyName)(ACCEL* ac, char* s)
Format keyname
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
kbd_translateMouse
C: bool retval = (*kbd_translateMouse)(void* winmsg, unsigned char* midimsg)
removed from API!
Translate mouse.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
plugin_getFilterList
C: const char* retval (*plugin_getFilterList)()
Plugin get filter list. Returns a double-NULL terminated list of importable media files, suitable for passing to GetOpenFileName() etc. Includes *.* (All files).
Stored in reaper_plugin_functions.h
Returnvalues:
^
plugin_getImportableProjectFilterList
C: const char* retval = (*plugin_getImportableProjectFilterList)()
Plugin get importable project filter list. Returns a double-NULL terminated list of importable project files, suitable for passing to GetOpenFileName() etc. Includes *.* (All files).
Stored in reaper_plugin_functions.h
Returnvalues:
^
plugin_getapi
C: void* (*plugin_getapi)(const char* name)
Plugin get api.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
plugin_register
C: int retval = (*plugin_register)(const char* name, void* infostruct)
like rec->Register
if you have a function called myfunction(..) that you want to expose to other extensions or plug-ins, use register("API_myfunction",funcaddress), and "-API_myfunction" to remove. Other extensions then use GetFunc("myfunction") to get the function pointer.
REAPER will also export the function address to ReaScript, so your extension could supply a Python module that provides a wrapper called RPR_myfunction(..).
register("APIdef_myfunction",defstring) will include your function declaration and help in the auto-generated REAPER API header and ReaScript documentation.
defstring is four null-separated fields: return type, argument types, argument names, and help.
Example: double myfunction(char* str, int flag) would have defstring="double\0char*,int\0str,flag\0help text for myfunction"
another thing you can register is "hookcommand", which you pass a callback:
NON_API: bool runCommand(int command, int flag);
register("hookcommand",runCommand);
which returns TRUE to eat (process) the command.
flag is usually 0 but can sometimes have useful info depending on the message.
note: it's OK to call Main_OnCommand() within your runCommand, however you MUST check for recursion if doing so!
in fact, any use of this hook should benefit from a simple reentrancy test...
to get notified when an action of the main section is performed, you can register "hookpostcommand", which you pass a callback:
NON_API: void postCommand(int command, int flag);
register("hookpostcommand",postCommand);
you can also register "hookcommand2", which you pass a callback:
NON_API: bool onAction(KbdSectionInfo *sec, int command, int val, int valhw, int relmode, HWND hwnd);
register("hookcommand2",onAction);
which returns TRUE to eat (process) the command.
val/valhw are used for actions learned with MIDI/OSC.
val = [0..127] and valhw = -1 for MIDI CC,
valhw >=0 for MIDI pitch or OSC with value = (valhw|val<<7)/16383.0,
relmode absolute(0) or 1/2/3 for relative adjust modes
you can also register command IDs for actions, register with "command_id", parameter is a unique string with only A-Z, 0-9, returns command ID (or 0 if not supported/out of actions)
register("command_id_lookup", unique_string) will look up the integer ID of the named action without registering the string if it doesn't already exist.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
realloc_cmd_ptr
C: bool retval = (*realloc_cmd_ptr)(char** ptr, int* ptr_size, int new_size)
special use for NeedBig script API functions - reallocates a NeedBig buffer and updates its size, returns false on error
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
CSurf_OnOscControlMessage
C: void (*CSurf_OnOscControlMessage)(const char* msg, const float* arg)
On OSC Control Message.
Stored in reaper_plugin_functions.h
Parameters:
^
CSurf_OnOscControlMessage2
C: void (*CSurf_OnOscControlMessage2)(const char* msg, const float* arg, const char* argstr);
Stored in reaper_plugin_functions.h
Parameters:
^
CreateLocalOscHandler
C: void* (*CreateLocalOscHandler)(void* obj, void* callback)
callback is a function pointer: void (*callback)(void* obj, const char* msg, int msglen), which handles OSC messages sent from REAPER.
The function return is a local osc handler.
See SendLocalOscMessage, DestroyOscHandler.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
see also:
^
DestroyLocalOscHandler
C: void (*DestroyLocalOscHandler)(void* local_osc_handler)
See CreateLocalOscHandler, SendLocalOscMessage.
Stored in reaper_plugin_functions.h
Parameters:
see also:
^
SendLocalOscMessage
C: void (*SendLocalOscMessage)(void* local_osc_handler, const char* msg, int msglen)
Send local Osc message.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
PlayPreview
C: int retval = (*PlayPreview)(preview_register_t* preview)
Play preview. Return nonzero on success.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
preview_register_t* preview |
|
^
PlayPreviewEx
C: int retval = (*PlayPreviewEx)(preview_register_t* preview, int bufflags, double measure_align)
return nonzero on success.
Bufflags:
&1 = buffer source,
&2 = treat length changes in source as varispeed and adjust internal state accordingly if buffering.
measure_align<0=play immediately, >0=align playback with measure start
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
preview_register_t* preview |
|
^
PlayTrackPreview
C: int retval = (*PlayTrackPreview)(preview_register_t* preview)
Play track preview. Returns nonzero on success,in these,m_out_chan is a track index (0-n).
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
preview_register_t* preview |
|
^
PlayTrackPreview2
C: int retval = (*PlayTrackPreview2)(ReaProject* proj, preview_register_t* preview)
Play track preview. Return nonzero on success,in these,m_out_chan is a track index (0-n).
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
ReaProject* proj |
the project-number. 0 for the current project. |
preview_register_t* preview |
|
^
PlayTrackPreview2Ex
C: int retval = (*PlayTrackPreview2Ex)(ReaProject* proj, preview_register_t* preview, int flags, double measure_align)
return nonzero on success,in these,m_out_chan is a track index (0-n). for flags see PlayPreviewEx bufflags
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
ReaProject* proj |
the project-number. 0 for the current project. |
preview_register_t* preview |
|
see also:
^
StopPreview
C: int retval = (*StopPreview)(preview_register_t* preview)
Stop preview.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
preview_register_t* preview |
|
^
StopTrackPreview
C: int retval = (*StopTrackPreview)(preview_register_t* preview)
Stop track preview. Return nonzero on success.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
preview_register_t* preview |
|
^
StopTrackPreview2
C: int retval = (*StopTrackPreview2)(ReaProject* proj, preview_register_t* preview)
Stop track preview2.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
void* ReaProject |
the project-number. 0 for the current project. |
preview_register_t* preview |
|
^
GetSetTrackSendInfo
C: void* (*GetSetTrackSendInfo)(MediaTrack* tr, int category, int sendidx, const char* parmname, void* setNewValue)
Get or set send/receive/hardware output attributes.
For ReaRoute-users: the outputs are hardware outputs, but with 512 added to the destination channel index (512 is the first rearoute channel, 513 the second, etc).
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
MediaTrack* tr |
the MediaTrack object for the track to be gotten or set |
int category |
<0 for receives, 0=sends, >0 for hardware outputs |
int sendidx |
0..n (to enumerate, iterate over sendidx until it returns NULL) |
const char* parmname |
the parameter to get/set
P_DESTTRACK : read only, returns MediaTrack *, destination track, only applies for sends/recvs
P_SRCTRACK : read only, returns MediaTrack *, source track, only applies for sends/recvs
P_ENV : read only, returns TrackEnvelope *, setNewValue=
B_MUTE : returns bool *
B_PHASE : returns bool *, true to flip phase
B_MONO : returns bool *
D_VOL : returns double *, 1.0 = +0dB etc
D_PAN : returns double *, -1..+1
D_PANLAW : returns double *,1.0=+0.0db, 0.5=-6dB, -1.0 = projdef etc
I_SENDMODE : returns int *, 0=post-fader, 1=pre-fx, 2=post-fx (deprecated), 3=post-fx
I_AUTOMODE : returns int * : automation mode (-1=use track automode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
I_SRCCHAN : returns int *, index,&1024=mono, -1 for none
I_DSTCHAN : returns int *, index, &1024=mono, otherwise stereo pair, hwout:&512=rearoute
I_MIDIFLAGS : returns int *, low 5 bits=source channel 0=all, 1-16, next 5 bits=dest channel, 0=orig, 1-16=chan |
void* setNewValue |
the new value to be set |
see also:
^
screenset_register
C: void (*screenset_register)(char* id, void* callbackFunc, void* param)
Screenset register.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
screenset_registerNew
C: void (*screenset_registerNew)(char* id, screensetNewCallbackFunc callbackFunc, void* param)
Screenset register new.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
screensetNewCallbackFunc callbackFunc |
|
^
screenset_unregister
C: void (*screenset_unregister)(char* id)
Screenset unregister.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
screenset_unregisterByParam
C: void (*screenset_unregisterByParam)(void* param)
Screenset unregister by param
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
screenset_updateLastFocus
C: void (*screenset_updateLastFocus)(HWND prevWin)
screenset_updateLastFocus
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetColorTheme
C: INT_PTR retval = (*GetColorTheme)(int idx, int defval)
Deprecated, see GetColorThemeStruct().
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
see also:
^
GetColorThemeStruct
C: void* (*GetColorThemeStruct)(int* szOut)
returns the whole color theme (icontheme.h) and the size
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetIconThemePointer
C: void* (*GetIconThemePointer)(const char* name)
returns a named icontheme entry
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetIconThemePointerForDPI
C: void* (*GetIconThemePointerForDPI)(const char* name, int dpisc);
returns a named icontheme entry for a given DPI-scaling (256=1:1).
Note: the return value should not be stored, it should be queried at each paint!
Querying name=NULL returns the start of the structure
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
GetIconThemeStruct
C: void* (*GetIconThemeStruct)(int* szOut)
returns a pointer to the icon theme (icontheme.h) and the size of that struct.
Stored in reaper_plugin_functions.h
Returnvalues:
Parameters:
^
NF_ClearGlobalStartupAction
C: bool NF_ClearGlobalStartupAction()
EEL2: bool extension_api("NF_ClearGlobalStartupAction")
Lua: boolean retval = reaper.NF_ClearGlobalStartupAction()
Python: Boolean retval = NF_ClearGlobalStartupAction()
Returns true if global startup action was cleared successfully.
Returnvalues:
^
NF_ClearProjectStartupAction
C: bool NF_ClearProjectStartupAction()
EEL2: bool extension_api("NF_ClearProjectStartupAction")
Lua: boolean retval = reaper.NF_ClearProjectStartupAction()
Python: Boolean retval = NF_ClearProjectStartupAction()
Returns true if project startup action was cleared successfully.
Returnvalues:
^
NF_ClearProjectTrackSelectionAction
C: bool NF_ClearProjectTrackSelectionAction()
EEL2: bool extension_api("NF_ClearProjectTrackSelectionAction")
Lua: boolean retval = reaper.NF_ClearProjectTrackSelectionAction()
Python: Boolean retval = NF_ClearProjectTrackSelectionAction()
Returns true if project track selection action was cleared successfully.
Returnvalues:
^
NF_GetGlobalStartupAction
C: bool NF_GetGlobalStartupAction(char* descOut, int descOut_sz, char* cmdIdOut, int cmdIdOut_sz)
EEL2: bool extension_api("NF_GetGlobalStartupAction", #desc, #cmdId)
Lua: boolean retval, string desc, string cmdId = reaper.NF_GetGlobalStartupAction()
Python: Boolean retval = NF_GetGlobalStartupAction(char* descOut, int descOut_sz, char* cmdIdOut, int cmdIdOut_sz)
Gets action description and command ID number (for native actions) or named command IDs / identifier strings (for extension actions /ReaScripts) if global startup action is set, otherwise empty string. Returns false on failure.
Returnvalues:
^
NF_GetProjectStartupAction
C: bool NF_GetProjectStartupAction(char* descOut, int descOut_sz, char* cmdIdOut, int cmdIdOut_sz)
EEL2: bool extension_api("NF_GetProjectStartupAction", #desc, #cmdId)
Lua: boolean retval, string desc, string cmdId = reaper.NF_GetProjectStartupAction()
Python: Boolean retval = NF_GetProjectStartupAction(char* descOut, int descOut_sz, char* cmdIdOut, int cmdIdOut_sz)
Gets action description and command ID number (for native actions) or named command IDs / identifier strings (for extension actions /ReaScripts) if project startup action is set, otherwise empty string. Returns false on failure.
Returnvalues:
^
NF_GetProjectTrackSelectionAction
C: bool NF_GetProjectTrackSelectionAction(char* descOut, int descOut_sz, char* cmdIdOut, int cmdIdOut_sz)
EEL2: bool extension_api("NF_GetProjectTrackSelectionAction", #desc, #cmdId)
Lua: boolean retval, string desc, string cmdId = reaper.NF_GetProjectTrackSelectionAction()
Python: Boolean retval = NF_GetProjectTrackSelectionAction(char* descOut, int descOut_sz, char* cmdIdOut, int cmdIdOut_sz)
Gets action description and command ID number (for native actions) or named command IDs / identifier strings (for extension actions /ReaScripts) if project track selection action is set, otherwise empty string. Returns false on failure.
Returnvalues:
^
NF_GetSWS_RMSoptions
C: void NF_GetSWS_RMSoptions(double* targetOut, double* windowSizeOut)
EEL2: extension_api("NF_GetSWS_RMSoptions", &target, &windowSize)
Lua: number target, number windowSize = reaper.NF_GetSWS_RMSoptions()
Python: (Float targetOut, Float windowSizeOut) = NF_GetSWS_RMSoptions(targetOut, windowSizeOut)
Returnvalues:
^
NF_SetGlobalStartupAction
C: bool NF_SetGlobalStartupAction(const char* str)
EEL2: bool extension_api("NF_SetGlobalStartupAction", "str")
Lua: boolean retval = reaper.NF_SetGlobalStartupAction(string str)
Python: Boolean retval = NF_SetGlobalStartupAction(const char* str)
Returns true if global startup action was set successfully (i.e. valid action ID). Note: For SWS / S&M actions and macros / scripts, you must use identifier strings (e.g. "_SWS_ABOUT", "_f506bc780a0ab34b8fdedb67ed5d3649"), not command IDs (e.g. "47145").
Tip: to copy such identifiers, right-click the action in the Actions window > Copy selected action cmdID / identifier string.
NOnly works for actions / scripts from Main action section.
Returnvalues:
Parameters:
^
NF_SetProjectStartupAction
C: bool NF_SetProjectStartupAction(const char* str)
EEL2: bool extension_api("NF_SetProjectStartupAction", "str")
Lua: boolean retval = reaper.NF_SetProjectStartupAction(string str)
Python: Boolean retval = NF_SetProjectStartupAction(const char* str)
Returns true if project startup action was set successfully (i.e. valid action ID). Note: For SWS / S&M actions and macros / scripts, you must use identifier strings (e.g. "_SWS_ABOUT", "_f506bc780a0ab34b8fdedb67ed5d3649"), not command IDs (e.g. "47145").
Tip: to copy such identifiers, right-click the action in the Actions window > Copy selected action cmdID / identifier string.
Only works for actions / scripts from Main action section. Project must be saved after setting project startup action to be persistent.
Returnvalues:
Parameters:
^
NF_SetProjectTrackSelectionAction
C: bool NF_SetProjectTrackSelectionAction(const char* str)
EEL2: bool extension_api("NF_SetProjectTrackSelectionAction", "str")
Lua: boolean retval = reaper.NF_SetProjectTrackSelectionAction(string str)
Python: Boolean retval = NF_SetProjectTrackSelectionAction(const char* str)
Returns true if project track selection action was set successfully (i.e. valid action ID). Note: For SWS / S&M actions and macros / scripts, you must use identifier strings (e.g. "_SWS_ABOUT", "_f506bc780a0ab34b8fdedb67ed5d3649"), not command IDs (e.g. "47145").
Tip: to copy such identifiers, right-click the action in the Actions window > Copy selected action cmdID / identifier string.
Only works for actions / scripts from Main action section. Project must be saved after setting project track selection action to be persistent.
Returnvalues:
Parameters:
^
NF_SetSWS_RMSoptions
C: bool NF_SetSWS_RMSoptions(double targetLevel, double windowSize)
EEL2: bool extension_api("NF_SetSWS_RMSoptions", targetLevel, windowSize)
Lua: boolean retval = reaper.NF_SetSWS_RMSoptions(number targetLevel, number windowSize)
Python: Boolean retval = NF_SetSWS_RMSoptions(Float targetLevel, Float windowSize)
Set SWS analysis/normalize options (same as running action 'SWS: Set RMS analysis/normalize options'). targetLevel: target RMS normalize level (dB), windowSize: window size for peak RMS (sec.)
See NF_GetSWS_RMSoptions.
Returnvalues:
Parameters:
^
fclose
EEL2: integer retval = fclose(filehandler fp)
Closes a file previously opened with fopen().
Returnvalues:
integer retval |
0, closing was successful; -1, closing was unsuccessful |
Parameters:
filehandler fp |
the handler of the opened file |
^
feof
EEL2: integer retval = feof(filehandler fp)
Returns nonzero if the file fp is at the end of file.
Returnvalues:
integer rteval |
0, file is not at the end of a file; nonzero, it is at the end of the file |
Parameters:
filehandler fp |
the handler of the opened file |
^
fflush
EEL2: integer retval = fflush(filehandler fp)
If file fp is open for writing, flushes out any buffered data to disk.
Returnvalues:
integer retval |
-1, couldn't flush file; 0, flushing was successful |
Parameters:
filehandler fp |
the handler of the file |
^
fgetc
EEL2: integer character = fgetc(filehandler fp)
Reads a character from file fp, returns -1 if EOF.
Returnvalues:
integer character |
a character read from the file; -1, if end of file |
Parameters:
filehandler fp |
the handler to the file |
^
fgets
EEL2: integer length = fgets(filehandler fp, string #str)
Reads a line from file fp into #str. Returns length of #str read.
Returnvalues:
integer length |
the length of the line read from file. |
Parameters:
filehandler fp |
the handler of the file |
string #str |
the returned string |
^
fopen
EEL2: filehandler fp = fopen(string fn, string mode)
Opens a file "fn" with mode "mode". For read, use "r" or "rb", write "w" or "wb". Returns a positive integer on success.
Returnvalues:
filehandler fp |
the filehandler of the opened file; 0, if file couldn't be opened |
Parameters:
string fn |
the filename to be opened |
string mode |
the opening mode
"r" read,
"rb", read binary
"w", write
"wb", write binary |
^
fprintf
EEL2: integer length = fprintf(filehandler fp, string format[, various ...])
Formats a string and writes it to file fp. For more information on format specifiers, see sprintf(). Returns bytes written to file.
- %% = %
- %s = string from parameter
- %d = parameter as integer
- %i = parameter as integer
- %u = parameter as unsigned integer
- %x = parameter as hex (lowercase) integer
- %X = parameter as hex (uppercase) integer
- %c = parameter as character
- %f = parameter as floating point
- %e = parameter as floating point (scientific notation, lowercase)
- %E = parameter as floating point (scientific notation, uppercase)
- %g = parameter as floating point (shortest representation, lowercase)
- %G = parameter as floating point (shortest representation, uppercase)
Many standard C printf() modifiers can be used, including:
- %.10s = string, but only print up to 10 characters
- %-10s = string, left justified to 10 characters
- %10s = string, right justified to 10 characters
- %+f = floating point, always show sign
- %.4f = floating point, minimum of 4 digits after decimal point
- %10d = integer, minimum of 10 digits (space padded)
- %010f = integer, minimum of 10 digits (zero padded)
Values for format specifiers can be specified as additional parameters to fprintf, or within {} in the format specifier (such as %{varname}d, in that case a global variable is always used).
Returnvalues:
integer length |
the length of the written string |
Parameters:
string format |
a string to format |
^
fread
EEL2: integer read_length = fread(filehandler fp, string #str, integer length)
Reads from file fp into #str, up to length bytes. Returns actual length read, or negative if error.
Returnvalues:
integer read_length |
the length of the returned string(might be less than parameter length) |
Parameters:
filehandler fp |
the handler of the file |
string #str |
the string read from the file |
integer length |
the length you want to read from the file |
^
fseek
EEL2: integer retval = fseek(filehandler fp, integer offset, integer whence)
Seeks file fp, offset bytes from whence reference. Whence negative specifies start of file, positive whence specifies end of file, and zero whence specifies current file position.
Returnvalues:
integer retval |
-1, if seek isn't possible; |
Parameters:
^
ftell
EEL2: integer fposition = ftell(filehandler fp)
Returns the current file position.
Returnvalues:
integer fposition |
the current position within the opened file |
Parameters:
filehandler fp |
the handler of the file |
^
fwrite
EEL2: integer length = fwrite(filehandler fp, string #str, integer len)
Writes up to len characters of #str to file fp. If len is less than 1, the full contents of #str will be written. Returns the number of bytes written to file.
Use fflush(fp) to write all data from the cache into the file.
Returnvalues:
integer length |
the number of written bytes |
Parameters:
filehandler fp |
the handler of the file |
string #str |
the string to write into the file |
integer len |
the number of bytes to write to the file; 0, to write entire string |
^
gfx_arc
EEL2: integer retval = gfx_arc(integer x, integer y, integer r, float ang1, float ang2[, optional float antialias])
Draws an arc of the circle centered at x,y, with ang1/ang2 being specified in radians.
Returnvalues:
Parameters:
integer x |
x position of the center of the circle |
integer y |
y position of the center of the circle |
integer r |
the radius of the circle |
float ang1 |
the beginning of the circle in radians; meant for partial circles; 0-6.28 |
float ang2 |
the end of the circle in radians; meant for partial circles; 0-6.28 |
optional float antialias |
<=0.5, antialias off; >0.5, antialias on |
^
gfx_blit
EEL2: integer src = gfx_blit(integer source, float scale, float rotation[, optional float srcx, optional float srcy, optional float srcw, optional float srch, optional integer destx, optional integer desty, optional integer destw, optional integer desth, optional float rotxoffs, optional float rotyoffs])
Copies from source (-1 = main framebuffer, or an image from gfx_loadimg() etc), using current opacity and copy mode (set with gfx_a, gfx_mode).
If destx/desty are not specified, gfx_x/gfx_y will be used as the destination position.
scale (1.0 is unscaled) will be used only if destw/desth are not specified.
rotation is an angle in radians
srcx/srcy/srcw/srch specify the source rectangle (if omitted srcw/srch default to image size)
destx/desty/destw/desth specify destination rectangle (if not specified destw/desth default to srcw/srch * scale).
Returnvalues:
integer src |
the blitted source |
Parameters:
integer source |
the source-image/framebuffer to blit; -1 to 1023; -1 for the currently displayed framebuffer. |
float scale |
the scale-factor; 1, for normal size; smaller or bigger than 1 make image smaller or bigger
has no effect, when destx, desty, destw, desth are given |
float rotation |
the rotation-factor; 0 to 6.28; 3.14 for 180 degrees. |
optional float srcx |
the x-coordinate-offset in the source-image |
optional float srcy |
the y-coordinate-offset in the source-image |
optional float srcw |
the width-offset in the source-image |
optional float srch |
the height-offset in the source-image |
optional integer destx |
the x-coordinate of the blitting destination |
optional integer desty |
the y-coordinate of the blitting destination |
optional integer destw |
the width of the blitting destination; may lead to stretched images |
optional integer desth |
the height of the blitting destination; may lead to stretched images |
optional float rotxoffs |
influences rotation |
optional float rotyoffs |
influences rotation |
^
gfx_blitext
EEL2: gfx_blitext(integer source, array coordinatelist, integer rotation)
Deprecated, use gfx_blit instead.
Note: the naming of the function might be misleading, as it has nothing to do with blitting of text, but rather is called Blit Ext.
Parameters:
^
gfx_blurto
EEL2: gfx_blurto(integer x, integer y)
Blurs the region of the screen between gfx_x,gfx_y and x,y, and updates gfx_x,gfx_y to x,y.
Parameters:
integer x |
x position of the other edge of the blur-region |
integer y |
y position of the other edge of the blur-region |
^
gfx_circle
EEL2: gfx_circle(integer x, integer y, float r[, float fill, float antialias])
Draws a circle, optionally filling/antialiasing
Parameters:
integer x |
x position of center of the circle |
integer y |
y position of center of the circle |
float r |
radius of the circle |
float fill |
<=0.5, circle is not filled; >0.5, circle is filled |
float antialias |
<=0.5, circle is not antialiased; >0.5, circle is antialiased |
^
gfx_clienttoscreen
EEL2: gfx_clienttoscreen(integer x, integer y)
Converts client coordinates x,y to screen coordinates.
Use variables for x and y, as the returned values will be put back into them:
gfx_init(""); // open window
x=10; // the client x-coordinate
y=20; // the client y-coordinate
gfx_clienttoscreen(x,y); // x and y hold now the converted screen-coordinates
Parameters:
integer x |
the x coordinate within(!) the gfx_init()-window, that shall be converted to screen-coordinates |
integer y |
the y coordinate within(!) the gfx_init()-window, that shall be converted to screen-coordinates |
^
gfx_deltablit
EEL2: gfx_deltablit(integer srcimg, integer srcs, integer srct, integer srcw, integer srch, float destx, float desty, float destw, float desth, float dsdx, float dtdx, float dsdy, float dtdy, float dsdxdy, float dtdxdy[,optional integer usecliprect=1])
Blits from srcimg(srcs,srct,srcw,srch) to destination (destx,desty,destw,desth). Source texture coordinates are s/t, dsdx represents the change in s coordinate for each x pixel, dtdy represents the change in t coordinate for each y pixel, etc. dsdxdy represents the change in dsdx for each line. If usecliprect is specified and 0, then srcw/srch are ignored.
This function allows you to manipulate the image, which you want to blit, by transforming, moving or cropping it.
To do rotation, you can manipulate dtdx and dsdy together.
Parameters:
integer srcimg |
image - the image to blit |
integer srcs |
positiondeltaX - the delta of the x-position of the image within the blitted area in pixels(useful default: 0) |
integer srct |
positiondeltaY - the delta of the y-position of the image within the blitted area in pixels(useful default: 0) |
integer srcw |
unknown - (useful default: 0) |
integer srch |
unknown - (useful default: 0) |
float destx |
positiondeltaX - the delta of the x-position of the blitted area in pixels(useful default: 0) |
float desty |
positiondeltaY - the delta of the y-position of the blitted area in pixels(useful default: 0) |
float destw |
blitsizeX - the x-size of the blitted area in pixels; the deltaimage might be cropped, if it exceeds this size(useful default: width of the image) |
float desth |
blitsizeY - the y-size of the blitted area in pixels; the deltaimage might be cropped, if it exceeds this size(useful default: height of the image) |
float dsdx |
stretchfactorX, the lower, the more stretched is the image(minimum 0; 1 for full size); limited by blitsizeX(useful default: 1) |
float dtdx |
deltaY: the delta of the right side of the image, related to the left side of the image; positive, right is moved up; negative, right is moved down; this delta is linear(useful default: 0) |
float dsdy |
deltaX: the delta of the bottom side of the image, related to the top side of the image; positive, bottom is moved left; negative, bottom is moved right; this delta is linear(useful default: 0) |
float dtdy |
stretchfactorY, the lower, the more stretched is the image(minimum 0; 1 for full size); limited by blitsizeY(useful default: 1) |
float dsdxdy |
deltacurvedY: the delta of the right side of the image, related to the left side of the image; positive, right is moved up; negative, right is moved down; this delta "curves" the delta via a bezier(useful default: 0) |
float dtdxdy |
deltacurvedX: the delta of the bottom side of the image, related to the top side of the image; positive, bottom is moved left; negative, bottom is moved right; this delta "curves" the delta via a bezier(useful default: 0) |
optional float usecliprect |
can be set to 0 or 1(useful default: 0) |
^
gfx_drawchar
EEL2: integer retval = gfx_drawchar(integer char)
Draws the character (can be a numeric ASCII code as well), to gfx_x, gfx_y, and moves gfx_x over by the size of the character.
Returnvalues:
integer retval |
the ASCII-representation of the shown character |
Parameters:
integer char |
the numeric ASCII-representation of the character to be drawn |
^
gfx_drawnumber
EEL2: double retval = gfx_drawnumber(double n, double n_digits)
Draws the number n with ndigits of precision to gfx_x, gfx_y, and updates gfx_x to the right side of the drawing. The text height is gfx_texth.
Returnvalues:
double retval |
the number of parameter n |
Parameters:
double n |
the number to draw |
double n_digits |
the number of shown digits; double values will be rounded |
^
gfx_drawstr
EEL2: integer retval = gfx_drawstr(string str, optional integer flags, optional integer right, optional integer bottom)
Draws a string at gfx_x, gfx_y, and updates gfx_x/gfx_y so that subsequent draws will occur in a similar place.
* If flags, right ,bottom passed in: * flags&1: center horizontally * flags&2: right justify * flags&4: center vertically * flags&8: bottom justify * flags&256: ignore right/bottom, otherwise text is clipped to (gfx_x, gfx_y, right, bottom)
Returnvalues:
integer retval |
2000000, no string is drawn; 2000001, string is drawn |
Parameters:
string str |
the string to draw |
optional integer flags |
the flags to adjust the text-alignement |
optional integer right |
clip text at x-pixels from gfx_x |
optional integer bottom |
clip text at y-pixels from gfx_y |
^
gfx_getchar
EEL2: integer typed_character = gfx_getchar(optional integer char, optional integer unicode_char)
If char is 0 or omitted, returns a character from the keyboard queue, or 0 if no character is available, or -1 if the graphics window is not open. If char is specified and nonzero, that character's status will be checked, and the function will return greater than 0 if it is pressed.
Common values are standard ASCII, such as 'a', 'A', '=' and '1', but for many keys multi-byte values are used, including 'home', 'up', 'down', 'left', 'rght', 'f1'.. 'f12', 'pgup', 'pgdn', 'ins', and 'del'.
Shortcuts with scope "Global + textfields" will still run the associated action, scope of "Normal" or "Global" will not.
Modified and special keys can also be returned, including:
* Ctrl/Cmd+A..Ctrl+Z as 1..26 * Ctrl/Cmd+Alt+A..Z as 257..282 * Alt+A..Z as 'A'+256..'Z'+256 * 27 for ESC * 13 for Enter * ' ' for space
If the user typed in multiple characters, the character queue will hold them. So calling gfx_getchar multiple times, until it returns 0 or -1 will give you all typed keys.
Typed characters between 256 and 1024(maybe higher?) seem to hint at multibyte-unicode characters. That means, you need to take the next character-value in the character-queue into consideration as well to get the current unicode-character!
If unichar is specified, it will be set to the unicode value of the key if available (and the return value may be the unicode value or a raw key value as described above, depending). If unichar is not specified, unicode codepoints greater than 255 will be returned as 'u'<<24 + value
Note that calling gfx_getchar() at least once causes mouse_cap to reflect keyboard modifiers even when the mouse is not captured.
Returnvalues:
integer typed_character |
the character that has been typed; -1, if no window is open |
Parameters:
integer char |
if you want to get only a certain character-key, pass the ASCII-code for the character into this parameter |
integer unicode_char |
the unicode-charactercode |
^
eel_getdropfile
EEL2: integer retval = gfx_getdropfile(integer idx[, string #filename])
Returns filenames, drag'n'dropped into a window created by gfx_init().
Use idx to get a specific filename, that has been dropped into the gfx_init()-window.
When returned filename starts with @fx: it is an fx dropped.
Does NOT support mediaitems/takes or other Reaper-objects!
It MUST be called BEFORE calling gfx_update, as gfx_update flushes the filelist accessible with gfx_getdropfile.
Returnvalues:
integer retval |
0, if droppped-filename with indexnumber idx doesn't exist; 1, if it exists; hints, if you already read all dropped filenames. |
string filename |
the filename of dropped-file with indexnumber idx; when starting with @fx: it is an fx dropped |
Parameters:
integer idx |
the indexnumber for a filename, that has been dropped into a gfx_init()-window.
0, the first file; 1, the second file; 2, the third file, etc.
-1, clears the filelist. |
^
gfx_getfont
EEL2: integer font_index = gfx_getfont(optional string #str)
Returns current font index. If a string is passed, it will receive the actual font face used by this font, if available.
Returnvalues:
integer font_index |
the index of the currently used font |
Parameters:
optional string #str |
this variable will hold the font-face after calling gfx_getfont |
^
gfx_getimgdim
EEL2: integer retval = gfx_getimgdim(integer image, integer w, integer h)
Retrieves the dimensions of image (representing a filename: index number) into w and h. Sets these values to 0 if an image failed loading (or if the filename index is invalid).
Returnvalues:
integer retval |
the image-index |
Parameters:
integer image |
the image, whose dimensions you want to retrieve |
integer w |
will hold the width of the image |
integer h |
will hold the height of the image |
^
gfx_getpixel
EEL2: integer red_value = gfx_getpixel(integer r, integer g, integer b)
Gets the value of the pixel at gfx_x,gfx_y into r,g,b.
Parameters:
integer r |
will hold the red-color-value, a value between 0 to 1 |
integer g |
will hold the green-color-value, a value between 0 to 1 |
integer b |
will hold the blue-color-value, a value between 0 to 1 |
^
gfx_gradrect
EEL2: integer retval = gfx_gradrect(integer x, integer y, integer w, integer h, double r, double g, double b, double a, optional double drdx, optional double dgdx, optional double dbdx, optional double dadx, optional double drdy, optional double dgdy, optional double dbdy, optional double dady)
Fills a gradient rectangle with the color and alpha specified. drdx-dadx reflect the adjustment (per-pixel) applied for each pixel moved to the right, drdy-dady are the adjustment applied for each pixel moved toward the bottom. Normally drdx=adjustamount/w, drdy=adjustamount/h, etc.
Returnvalues:
Parameters:
^
gfx_init
EEL2: integer retval = gfx_init(string name, optional integer width, optional integer height, optional integer dockstate, optional integer xpos, optional integer ypos)
Initializes the graphics window with title name. Suggested width and height can be specified.
Once the graphics window is open, gfx_update() should be called periodically.
To resize/reposition the window, call gfx_init again and pass an empty string as name-parameter.
To retitle the window, run gfx_init again with the new title as parameter name.
To get the current window-states, dimensions, etc, you can use gfx_dock.
Parameters:
string name |
the name of the window; "" to alter position/size of already opened window |
optional integer width |
the width of the window(default=640) |
optional integer height |
the height of the window(default=400) |
optional integer dockstate |
the dockstate of the window; 1, docked; 0, undocked(default undocked=0) |
optional integer xpos |
the x-position of the window(default: 0) |
optional integer ypos |
the y-position of the window(default: 0) |
^
gfx_line
EEL2: gfx_line(integer x, integer y, integer x2, integer y2, optional float aa)
Draws a line from x,y to x2,y2, and if aa is not specified or 0.5 or greater, it will be antialiased.
Parameters:
integer x |
the x-position of starting-point |
integer y |
the y-position of starting-point |
integer x2 |
the x-position of ending-point |
integer y2 |
the y-position of ending-point |
optional float aa |
0.5 and higher or not specified, antialias; lower than 0.5, not antialiased |
^
gfx_lineto
EEL2: gfx_lineto(x,y[,aa])
Draws a line from gfx_x,gfx_y to x,y. If aa is 0.5 or greater, then antialiasing is used. Updates gfx_x and gfx_y to x,y.
Parameters:
^
gfx_loadimg
EEL2: gfx_loadimg(image,filename)
Load image from filename into slot 0..1024-1 specified by image. Returns the image index if success, otherwise -1 if failure. The image will be resized to the dimensions of the image file.
Parameters:
^
gfx_measurechar
EEL2: gfx_measurechar(character,&w,&h)
Measures the drawing dimensions of a character with the current font (as set by gfx.setfont). Returns width and height of character.
Parameters:
character |
a character, whose dimensions you want to know |
w |
the width of this character |
h |
the height if this character |
^
gfx_measurestr
EEL2: gfx_measurestr(str,&w,&h)
Measures the drawing dimensions of a string with the current font (as set by gfx_setfont).
Parameters:
^
gfx_muladdrect
EEL2: gfx_muladdrect(x,y,w,h,mul_r,mul_g,mul_b[,mul_a,add_r,add_g,add_b,add_a])
Multiplies each pixel by mul_* and adds add_*, and updates in-place. Useful for changing brightness/contrast, or other effects.
Parameters:
^
gfx_printf
EEL2: gfx_printf(format[, ...])
Formats and draws a string at gfx_x, gfx_y, and updates gfx_x/gfx_y accordingly (the latter only if the formatted string contains newline). For more information on format strings, see sprintf()
- %% = %
- %s = string from parameter
- %d = parameter as integer
- %i = parameter as integer
- %u = parameter as unsigned integer
- %x = parameter as hex (lowercase) integer
- %X = parameter as hex (uppercase) integer
- %c = parameter as character
- %f = parameter as floating point
- %e = parameter as floating point (scientific notation, lowercase)
- %E = parameter as floating point (scientific notation, uppercase)
- %g = parameter as floating point (shortest representation, lowercase)
- %G = parameter as floating point (shortest representation, uppercase)
Many standard C printf() modifiers can be used, including:
- %.10s = string, but only print up to 10 characters
- %-10s = string, left justified to 10 characters
- %10s = string, right justified to 10 characters
- %+f = floating point, always show sign
- %.4f = floating point, minimum of 4 digits after decimal point
- %10d = integer, minimum of 10 digits (space padded)
- %010f = integer, minimum of 10 digits (zero padded)
Values for format specifiers can be specified as additional parameters to gfx_printf, or within {} in the format specifier (such as %{varname}d, in that case a global variable is always used).
Parameters:
^
gfx_quit
Closes the graphics window.
^
gfx_rect
EEL2: gfx_rect(x,y,w,h[,filled])
Fills a rectangle at x,y,w,h pixels in dimension, filled by default.
Parameters:
^
gfx_rectto
Fills a rectangle from gfx_x,gfx_y to x,y. Updates gfx_x,gfx_y to x,y.
Parameters:
^
gfx_roundrect
EEL2: gfx_roundrect(x,y,w,h,radius[,antialias])
Draws a rectangle with rounded corners.
Parameters:
^
gfx_screentoclient
EEL2: gfx_screentoclient(x,y)
Converts screen coordinates x,y to client coordinates.
Parameters:
^
gfx_set
EEL2: gfx_set(r[,g,b,a2,mode,dest])
Sets gfx_r/gfx_g/gfx_b/gfx_a2/gfx_mode, sets gfx_dest if final parameter specified
Parameters:
^
gfx_setcursor
EEL2: gfx_setcursor(resource_id,custom_cursor_name)
Sets the mouse cursor. resource_id is a value like 32512 (for an arrow cursor), custom_cursor_name is a string like "arrow" (for the REAPER custom arrow cursor). resource_id must be nonzero, but custom_cursor_name is optional.
Parameters:
^
gfx_setfont
EEL2: gfx_setfont(idx[,fontface, sz, flags])
Can select a font and optionally configure it.
After calling gfx_setfont(), gfx_texth may be updated to reflect the new average line height.
Parameters:
idx |
the font-id; idx=0 for default bitmapped font, no configuration is possible for this font.
idx=1..16 for a configurable font |
fontface |
the name of the font, like "arial" |
sz |
the size of the font (8-100) |
flags |
flags, how to render the text; values are repeating every 256 numbers
a multibyte character, which can include 'i' for italics, 'u' for underline, or 'b' for bold.
These flags may or may not be supported depending on the font and OS.
66 and 98, Bold (B), (b)
73 and 105, italic (I), (i)
79 and 111, white outline (O), (o)
82 and 114, reduced(halfbright) (R), (r)
83 and 115, sharpen (S), (s)
85 and 117, underline (U), (u)
86 and 118, inVerse (V), (v) |
^
gfx_setimgdim
EEL2: gfx_setimgdim(image,w,h)
Resize image referenced by index 0..1024-1, width and height must be 0-8192. The contents of the image will be undefined after the resize.
Parameters:
^
gfx_setpixel
EEL2: gfx_setpixel(r,g,b)
Writes a pixel of r,g,b to gfx_x,gfx_y.
Parameters:
^
gfx_showmenu
EEL2: gfx_showmenu(menu_string)
Shows a popup menu at gfx_x,gfx_y.
str is a list of fields separated by | characters. Each field represents a menu item.
Fields can start with special characters:
# : grayed out
! : checked
> : this menu item shows a submenu
< : last item in the current submenu
& : before a character makes it underlined as the quick-access-character for this menu-item
An empty field will appear as a separator in the menu. gfx_showmenu returns 0 if the user selected nothing from the menu, 1 if the first field is selected, etc.
Example:
gfx_showmenu("first item, followed by separator||!second item, checked|>third item which spawns a submenu|#first item in submenu, grayed out|
Note: It skips submenus and separators in the selection-number, so a if menu_string="Entry1||
Parameters:
^
gfx_transformblit
EEL2: gfx_transformblit(srcimg,destx,desty,destw,desth,div_w,div_h,table)
Blits to destination at (destx,desty), size (destw,desth). div_w and div_h should be 2..64, and table should point to a table of 2*div_w*div_h values (this table must not cross a 65536 item boundary). Each pair in the table represents a S,T coordinate in the source image, and the table is treated as a left-right, top-bottom list of texture coordinates, which will then be rendered to the destination.
Parameters:
^
gfx_triangle
EEL2: gfx_triangle(x1,y1,x2,y2,x3,y3[x4,y4...])
Draws a filled triangle, or any convex polygon.
Parameters:
^
gfx_update
Updates the graphics display, if opened.
^
gfx_variables
The following global variables are special and will be used by the graphics system:
* gfx_r - current red component (0..1) used by drawing operations.
* gfx_g - current green component (0..1) used by drawing operations.
* gfx_b - current blue component (0..1) used by drawing operations.
* gfx_a2 - current alpha component (0..1) used by drawing operations when writing solid colors (normally ignored but useful when creating transparent images).
* gfx_a - alpha for drawing (1=normal).
* gfx_mode - blend mode for drawing. Set mode to 0 for default options. Add 1.0 for additive blend mode (if you wish to do subtractive, set gfx_a to negative and use gfx_mode as additive). Add 2.0 to disable source alpha for gfx_blit(). Add 4.0 to disable filtering for gfx_blit().
* gfx_w - width of the UI framebuffer.
* gfx_h - height of the UI framebuffer.
* gfx_x - current graphics position X. Some drawing functions use as start position and update.
* gfx_y - current graphics position Y. Some drawing functions use as start position and update.
* gfx_clear - if greater than -1.0, framebuffer will be cleared to that color. the color for this one is packed RGB (0..255), i.e. red+green*256+blue*65536. The default is 0 (black).
* gfx_dest - destination for drawing operations, -1 is main framebuffer, set to 0..1024-1 to have drawing operations go to an offscreen buffer (or loaded image).
* gfx_texth - the (READ-ONLY) height of a line of text in the current font. Do not modify this variable.
* gfx_ext_retina - to support hidpi/retina, callers should set to 1.0 on initialization, this value will be updated to value greater than 1.0 (such as 2.0) if retina/hidpi. On macOS gfx_w/gfx_h/etc will be doubled, but on other systems gfx_w/gfx_h will remain the same and gfx_ext_retina is a scaling hint for drawing.
* mouse_x - current X coordinate of the mouse relative to the graphics window.
* mouse_y - current Y coordinate of the mouse relative to the graphics window.
* mouse_wheel - wheel position, will change typically by 120 or a multiple thereof, the caller should clear the state to 0 after reading it.
* mouse_hwheel - horizontal wheel positions, will change typically by 120 or a multiple thereof, the caller should clear the state to 0 after reading it.
* mouse_cap - a bitfield of mouse and keyboard modifier state:
1: left mouse button
2: right mouse button
4: Control key
8: Shift key
16: Alt key
32: Windows key
64: middle mouse button
Note: Mousebuttons will be returned after gfx_init(), the other keyboard-modifier only when using gfx_getchar()!
^
abs
EEL2: float abs_value = abs(float value)
Returns the absolute value of the parameter.
Parameters:
float abs_value |
the absolute-value of value |
^
acos
EEL2: float arc_cos = acos(float value)
Returns the arc cosine of the value specified (return value is in radians). If the parameter is not between -1.0 and 1.0 inclusive, the return value is undefined.
Returnvalues:
float arc_cos |
the arc-cosine-value in radians |
Parameters:
float value |
the value, that you want to convert into arc-cosine |
^
asin
EEL2: float arc_sine = asin(float value)
Returns the arc sine of the value specified (return value is in radians). If the parameter is not between -1.0 and 1.0 inclusive, the return value is undefined.
Returnvalues:
float arc_sine |
the arc-sine-value in radians of value |
Parameters:
float value |
the value, that you want to convert to arc-sine |
^
atan
EEL2: float arc_tan = atan(value)
Returns the arc tangent of the value specified (return value is in radians). If the parameter is not between -1.0 and 1.0 inclusive, the return value is undefined.
Returnvalues:
float arc_tan |
the arc-tan-value in radians of value |
Parameters:
float value |
the value, that you want to convert to arc-tan |
^
atan2
EEL2: atan2(numerator,denominator)
Returns the arc tangent of the numerator divided by the denominator, allowing the denominator to be 0, and using their signs to produce a more meaningful result.
Returnvalues:
float arc_tangent |
the arc-tangent |
Parameters:
float numerator |
the numerator to calculate the arc-tangent |
float denominator |
the denominator to calculate the arc-tangent |
^
ceil
EEL2: float round_val = ceil(float value)
Returns the value rounded to the next highest integer (ceil(3.1)==4, ceil(-3.9)==-3).
Returnvalues:
float round_val |
the rounded value to the next highest integer |
Parameters:
float value |
the value to round |
^
convolve_c
EEL2: float convolved_val = convolve_c(float dest, float src, float size)
Multiplies each of size complex pairs in dest by the complex pairs in src. Often used for convolution.
Returnvalues:
Parameters:
^
cos
EEL2: float cos = cos(float angle)
Returns the cosine of the angle specified (specified in radians).
Returnvalues:
float cos |
the cosine value in radians |
Parameters:
float angle |
the angle to convert into cosine |
^
exp
EEL2: float e_pow = exp(float exponent)
Returns the number e ($e, approximately 2.718) raised to the parameter-th power. This function is significantly faster than pow() or the ^ operator.
Returnvalues:
float e_pow |
the number e raised to parameter-th power |
Parameters:
float exponent |
the exponent to use for raise |
^
fft
EEL2: float retval = fft(data buffer, integer size)
Performs a FFT on the data in the local memory buffer at the offset specified by the first parameter. The size of the FFT is specified by the second parameter, which must be 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, or 32768. The outputs are permuted, so if you plan to use them in-order, call fft_permute(buffer, size) before and fft_ipermute(buffer,size) after your in-order use. Your inputs or outputs will need to be scaled down by 1/size, if used.
Note that fft()/ifft() require real / imaginary input pairs, so a 256 point FFT actually works with 512 items.
Note that fft()/ifft() must NOT cross a 65,536 item boundary, so be sure to specify the offset accordingly.
Returnvalues:
Parameters:
^
fft_ipermute
EEL2: float retval = fft_ipermute(data buffer, integer size)
Permute the input for ifft(), taking bands from in-order to the order ifft() requires. See fft() for more information.
Returnvalues:
Parameters:
^
fft_permute
EEL2: float retval = fft_permute(data buffer, integer size)
Permute the output of fft() to have bands in-order. See fft() for more information.
Returnvalues:
Parameters:
^
fft_real
EEL2: fft_real(data buffer, integer size)
Performs an FFT, but takes size input samples and produces size/2 complex output pairs. Usually used along with fft_permute(size/2). Inputs/outputs will need to be scaled by 0.5/size.
Parameters:
^
floor
EEL2: integer rounded_value = floor(float value)
Returns the value rounded to the next lowest integer (floor(3.9)==3, floor(-3.1)==-4).
Returnvalues:
integer rounded_value |
the rounded value to the next lowest integer |
Parameters:
float value |
the value to be rounded |
^
ifft
Perform an inverse FFT. For more information see fft()
Parameters:
see also:
^
ifft_real
EEL2: ifft_real(buffer,size)
Performs an inverse FFT, but takes size/2 complex input pairs and produces size real output values. Usually used along with fft_ipermute(size/2).
Parameters:
^
invsqrt
Returns a fast inverse square root (1/sqrt(x)) approximation of the parameter.
Parameters:
^
log
Returns the natural logarithm (base e) of the parameter. If the value is not greater than 0, the return value is undefined.
Parameters:
^
log10
Returns the base-10 logarithm of the parameter. If the value is not greater than 0, the return value is undefined.
Parameters:
^
rand
Returns a pseudorandom real number between 0 and the parameter, inclusive. If the parameter is omitted or less than 1.0, 1.0 is used as a maximum instead.
Parameters:
^
sin
Returns the sine of the angle specified (specified in radians -- to convert from degrees to radians, multiply by $pi/180, or 0.017453).
Parameters:
^
sqr
Returns the square of the parameter (similar to value*value, but only evaluating value once).
Parameters:
^
sqrt
Returns the square root of the parameter. If the parameter is negative, the return value is undefined.
Parameters:
^
tan
EEL2: double tangent = tan(double angle)
Returns the tangent of the angle specified (specified in radians).
Returnvalues:
double tangent |
the tangent of the angle |
Parameters:
double angle |
the angle in radians |
^
freembuf
EEL2: float retval = freembuf(float address)
Hints the runtime that memory above the address specified may no longer be used. The runtime may, at its leisure, choose to lose the contents of memory above the address specified.
Returnvalues:
Parameters:
^
mem_get_values
EEL2: mem_get_values(offset, ...)
Reads values from memory starting at offset into variables specified. Slower than regular memory reads for less than a few variables, faster for more than a few. Undefined behavior if used with more than 32767 variables.
Parameters:
^
mem_insert_shuffle
EEL2: mem_insert_shuffle(buf,len,value)
Shuffles contents of buf right by 1, inserts value at buf[0], returns previous buf[len-1].
Parameters:
^
mem_multiply_sum
EEL2: mem_multiply_sum(src1,src2,length)
Calculates the sum of the products of values pointed to by src1 and src2. If src2 is -1, then calculates the sum of squares of src1, if -2, the sum of the absolute values of src, if -3, calculates the sum of the values of src1. Other negative values are undefined.
Parameters:
^
mem_set_values
EEL2: mem_set_values(offset, ...)
Writes values to memory starting at offset from variables specified. Slower than regular memory writes for less than a few variables, faster for more than a few. Undefined behavior if used with more than 32767 variables.
Parameters:
^
memcpy
EEL2: memcpy(dest,src,length)
Copies length items of memory from src to dest. Regions are permitted to overlap.
Parameters:
^
memset
EEL2: memset(offset,value,length)
Sets length items of memory at offset to value.
Parameters:
^
atexit
EEL2: float retval = atexit(string code)
Adds code to be executed when the script finishes or is ended by the user. Typically used to clean up after the user terminates defer() or runloop() code.
Parameters:
string code |
the code to be run. You can also add a regular functioncall into this string, like "main()", if there's a main-function in the script |
^
defer
EEL2: defer(string "code")
Adds code to be called back by REAPER. Used to create persistent ReaScripts that continue to run and respond to input, while the user does other tasks. Identical to runloop().
Note that no undo point will be automatically created when the script finishes, unless you create it explicitly.
Each function called by defer can only be deferred once per defer-cycle(unlike in Lua, where you can have one function deferred multiple times).
Unlike "normal" loops, defer allows looped code to run in the background without blocking Reaper's user interface.
That way, scripts, who need longer time to run, can be made possible.
Example:
the following example allows adding a to variable A with each defer-cycle.
function main()(
A=A+1;
defer("main()");
);
main();
Parameters:
string code |
the code to be run. You can also add a regular functioncall into this string, like "main()", if there's a main-function in the script |
^
eval
Executes code passed in. Code can use functions, but functions created in code can't be used elsewhere.
Allows loading code from files and executing it
Parameters:
string code |
the code to be executed |
^
extension_api
EEL2: various retval = extension_api(string function_name[,...])
Used to call functions exported by extension plugins. The first parameter must be the exported function name, then its own parameters (as if the function was called directly).
Will return the returnvalue of the function called.
Returnvalues:
various retval |
the return value of functionname, can be of numerous datatypes, refer to the docs of functionname |
Parameters:
string functionname |
the name of the function to run |
various parameters... |
the parameters used by functionname |
^
get_action_context
EEL2: get_action_context(string #filename, integer sectionID, integer cmdID, integer mode, integer resolution, integer val, string contextstr)
Queries contextual information about the script, typically MIDI/OSC input values.
Returns true if a new value has been updated.
val will be set to a relative or absolute value depending on mode (=0: absolute mode, >0: relative modes). resolution=127 for 7-bit resolution, =16383 for 14-bit resolution.
Notes: sectionID, and cmdID will be set to -1 if the script is not part of the action list. mode, resolution and val will be set to -1 if the script was not triggered via MIDI/OSC.
For relative mode bindings, calling get_action_context() will return the accumulated relative value in decoded form (not 65 or 63, but +1/-1 etc), and clear the internal state. So if you call it multiple times, the first one will return the accumulated value, and the second will always return 0.
contextstr may be empty or one of:
midi:XX[:YY] (one or two bytes hex)
[wheel|hwheel|mtvert|mthorz|mtzoom|mtrot|mediakbd]:flags
key:flags:keycode
osc:/msg[:f=FloatValue|:s=StringValue]
KBD_OnMainActionEx
(flags may include V=virtkey, S=shift, A=alt/option, C=control/command, W=win/control)
Parameters:
string #filename |
the filename plus path of the script |
integer sectionID |
the section
0, Main
100, Main (alt recording)
32060, MIDI Editor
32061, MIDI Event List Editor
32062, MIDI Inline Editor
32063, Media Explorer |
integer cmdID |
the command id of the script |
integer mode |
-1, if script isn't run by shortcut; 55953, if script is run by shortcut |
integer resolution |
-1, if script isn't run by shortcut; resolution of OSC(14 bit)/MIDI(7 bit) |
integer val |
the value sent by MIDI or OSC |
string contextstr |
the shortcut, that ran this action, more info in the description |
^
gfx_dock
EEL2: integer dockstate = gfx_dock(integer v[, optional integer wx, optional integer wy, optional integer ww, optional integer wh])
Call with v=-1 to query docked state, otherwise v>=0 to set docked state. State is &1 if docked, second byte is docker index (or last docker index if undocked). If wx-wh are specified, they will be filled with the undocked window position/size
Returnvalues:
integer dockstate |
the new/queried dockstate |
Parameters:
integer v |
-1, query only docking-state; 0 and higher, set state of the window to docked |
optional integer wx |
will hold window-x-position |
optional integer wy |
will hold window-y-position |
optional integer ww |
will hold window-width |
optional integer wh |
will hold window-height |
^
loop
EEL2: loop(count,expression)
Evaluates count once, and then executes expression count, but not more than 1048576, times.
Parameters:
^
match
EEL2: match(needle,haystack[, ...])
Searches for the first parameter in the second parameter, using a simplified regular expression syntax.
* * = match 0 or more characters
* *? = match 0 or more characters, lazy
* + = match 1 or more characters
* +? = match 1 or more characters, lazy
* ? = match one character
You can also use format specifiers to match certain types of data, and optionally put that into a variable:
* %s means 1 or more chars
* %0s means 0 or more chars
* %5s means exactly 5 chars
* %5-s means 5 or more chars
* %-10s means 1-10 chars
* %3-5s means 3-5 chars
* %0-5s means 0-5 chars
* %x, %d, %u, and %f are available for use similarly
* %c can be used, but can't take any length modifiers
* Use uppercase (%S, %D, etc) for lazy matching
See also sprintf() for other notes, including specifying direct variable references via {}.
Parameters:
^
matchi
EEL2: matchi(needle,haystack[, ...])
Case-insensitive version of match().
Parameters:
see also:
^
max
EEL2: max(&value,&value2)
Returns (by reference) the maximum value of the two parameters. Since max() returns by reference, expressions such as max(x,y) = 5 are possible.
Parameters:
^
min
EEL2: min(&value,&value2)
Returns (by reference) the minimum value of the two parameters. Since min() returns by reference, expressions such as min(x,y) = 5 are possible.
Parameters:
^
printf
EEL2: printf(format[, ...])
Output formatted string to system-specific destination, see sprintf() for more information
- %% = %
- %s = string from parameter
- %d = parameter as integer
- %i = parameter as integer
- %u = parameter as unsigned integer
- %x = parameter as hex (lowercase) integer
- %X = parameter as hex (uppercase) integer
- %c = parameter as character
- %f = parameter as floating point
- %e = parameter as floating point (scientific notation, lowercase)
- %E = parameter as floating point (scientific notation, uppercase)
- %g = parameter as floating point (shortest representation, lowercase)
- %G = parameter as floating point (shortest representation, uppercase)
Many standard C printf() modifiers can be used, including:
- %.10s = string, but only print up to 10 characters
- %-10s = string, left justified to 10 characters
- %10s = string, right justified to 10 characters
- %+f = floating point, always show sign
- %.4f = floating point, minimum of 4 digits after decimal point
- %10d = integer, minimum of 10 digits (space padded)
- %010f = integer, minimum of 10 digits (zero padded)
Values for format specifiers can be specified as additional parameters to printf, or within {} in the format specifier (such as %{varname}d, in that case a global variable is always used).
Parameters:
^
runloop
EEL2: runloop(string code)
Adds code to be called back by REAPER. Used to create persistent ReaScripts that continue to run and respond to input, while the user does other tasks. Identical to defer().
Note that no undo point will be automatically created when the script finishes, unless you create it explicitly.
Each function called by runloop can only be deferred once per runloop-cycle(unlike in Lua, where you can have one function deferred multiple times).
Unlike "normal" loops, runloop allows looped code to run in the background without blocking Reaper's user interface.
That way, scripts, who need longer time to run, can be made possible.
Example:
the following example allows adding a to variable A with each runloop-cycle.
function main()(
A=A+1;
runloop("main()");
);
main();
Parameters:
string code |
the code to be run. You can also add a regular functioncall into this string, like "main()", if there's a main-function in the script |
^
sign
Returns 1.0 if the parameter is greater than 0, -1.0 if the parameter is less than 0, or 0 if the parameter is 0.
Parameters:
^
sleep
Yields the CPU for the millisecond count specified, calling Sleep() on Windows or usleep() on other platforms.
Parameters:
^
sprintf
EEL2: sprintf(#dest,format[, ...])
Formats a string and stores it in #dest. Format specifiers begin with %, and may include:
* %% = %
* %s = string from parameter
* %d = parameter as integer
* %i = parameter as integer
* %u = parameter as unsigned integer
* %x = parameter as hex (lowercase) integer
* %X = parameter as hex (uppercase) integer
* %c = parameter as character
* %f = parameter as floating point
* %e = parameter as floating point (scientific notation, lowercase)
* %E = parameter as floating point (scientific notation, uppercase)
* %g = parameter as floating point (shortest representation, lowercase)
* %G = parameter as floating point (shortest representation, uppercase)
Many standard C printf() modifiers can be used, including:
* %.10s = string, but only print up to 10 characters
* %-10s = string, left justified to 10 characters
* %10s = string, right justified to 10 characters
* %+f = floating point, always show sign
* %.4f = floating point, minimum of 4 digits after decimal point
* %10d = integer, minimum of 10 digits (space padded)
* %010f = integer, minimum of 10 digits (zero padded)
Values for format specifiers can be specified as additional parameters to sprintf, or within {} in the format specifier (such as %{varname}d, in that case a global variable is always used).
Parameters:
^
time
Sets the parameter (or a temporary buffer if omitted) to the number of seconds since January 1, 1970, and returns a reference to that value. The granularity of the value returned is 1 second.
Parameters:
integer seconds |
number of seconds since January 1, 1970 |
^
time_precise
EEL2: float timestamp = time_precise([×tamp])
Sets the parameter (or a temporary buffer if omitted) to a system-local timestamp in seconds, and returns a reference to that value. The granularity of the value returned is system defined (but generally significantly smaller than one second).
Parameters:
float timestamp |
the timestamp |
^
while
EEL2: integer retval = while(code expression)
Executes expression until expression evaluates to zero, or until 1048576 iterations occur. An alternate and more useful syntax is while (expression) ( statements ), which evaluates statements after every non-zero evaluation of expression.
A=0; // set A to 0
// while A is still less than 10, add 1 to A
while(A < 10)(
A=A+1;
);
Returnvalues:
Parameters:
code expression |
the expression that needs to return true or false |
^
tcp_close
EEL2: integer retval = tcp_close(tcp_handler connection)
Closes a TCP connection created by tcp_listen() or tcp_connect().
Returnvalues:
integer retval |
1, closing was successful; 0, closing was unsuccessful |
Parameters:
tcp_handler connection |
the handler to the tcp-connection |
^
tcp_connect
EEL2: tcp_handler connection = tcp_connect(string address, integer port[, optional integer block])
Create a new TCP connection to address:port. If block is specified and 0, connection will be made nonblocking. Returns TCP connection ID greater than 0 on success.
Returnvalues:
tcp_handler connection |
the handler to the tcp-connection |
Parameters:
string address |
the tcp-address of the connection |
integer port |
the port of the connection |
optional integer block |
0, non-blocking connection; unspecified, blocking connection |
^
tcp_listen
EEL2: tcp_listen(integer port[, optional string interface, optional string #ip_out])
Listens on port specified. Returns less than 0 if could not listen, 0 if no new connection available, or greater than 0 (as a TCP connection ID) if a new connection was made. If a connection made and #ip_out specified, it will be set to the remote IP. interface can be empty for all interfaces, otherwise an interface IP as a string.
Parameters:
optional string interface |
|
^
tcp_listen_end
EEL2: tcp_listen_end(integer port)
Ends listening on port specified.
Parameters:
^
tcp_recv
EEL2: integer retval = tcp_recv(tcp_handler connection, string #str[, integer maxlen])
Receives data from a connection to #str. If maxlen is specified, no more than maxlen bytes will be received. If non-blocking, 0 will be returned if would block. Returns less than 0 if error.
Returnvalues:
integer retval |
0, receiving works; -1, receiving doesn't work |
Parameters:
^
tcp_send
EEL2: tcp_send(tcp_handler connection, string str[, optional integer len])
Sends a string to connection. Returns -1 on error, 0 if connection is non-blocking and would block, otherwise returns length sent. If len is specified and not less than 1, only the first len bytes of the string parameter will be sent.
Parameters:
^
tcp_set_block
EEL2: integer retval = tcp_set_block(connection,block)
Sets whether a connection blocks.
Returnvalues:
integer retval |
the new block-state |
Parameters:
tcp_handlerconnection |
the handler to the tcp-connection |
integer block |
0, keep block unblocked |
^
stack_exch
Exchanges a value with the top of the stack, and returns a reference to the parameter (with the new value).
Parameters:
^
stack_peek
Returns a reference to the item on the top of the stack (if index is 0), or to the Nth item on the stack if index is greater than 0.
Parameters:
^
stack_pop
Pops a value from the user stack into value, or into a temporary buffer if value is not specified, and returns a reference to where the stack was popped. Note that no checking is done to determine if the stack is empty, and as such stack_pop() will never fail.
Parameters:
^
stack_push
Pushes value onto the user stack, returns a reference to the parameter.
Parameters:
^
str_delsub
EEL2: str_delsub(#str,pos,len)
Deletes len characters at offset pos from #str, and returns #str.
Parameters:
^
str_getchar
EEL2: str_getchar(str,offset[,type])
Returns the data at byte-offset offset of str.
If offset is negative, position is relative to end of string.type defaults to signed char, but can be specified to read raw binary data in other formats
(note the single quotes, these are single/multi-byte characters):
* 'c' - signed char
* 'cu' - unsigned char
* 's' - signed short
* 'S' - signed short, big endian
* 'su' - unsigned short
* 'Su' - unsigned short, big endian
* 'i' - signed int
* 'I' - signed int, big endian
* 'iu' - unsigned int
* 'Iu' - unsigned int, big endian
* 'f' - float
* 'F' - float, big endian
* 'd' - double
* 'D' - double, big endian
Parameters:
^
str_insert
EEL2: str_insert(#str,srcstr,pos)
Inserts srcstr into #str at offset pos. Returns #str.
Parameters:
^
str_setchar
EEL2: str_setchar(#str,offset,val[,type]))
Sets value at offset offset, type optional. offset may be negative to refer to offset relative to end of string, or between 0 and length, inclusive, and if set to length it will lengthen string. See eel_str_getchar for more information on types.
Parameters:
see also:
eel_str_getchar - gets a character from the keyboard-queue, as input into a gfx-window |
^
str_setlen
EEL2: str_setlen(#str,len)
Sets length of #str (if increasing, will be space-padded), and returns #str.
Parameters:
^
strcat
EEL2: strcat(#str,srcstr)
Appends srcstr to #str, and returns #str
Parameters:
^
strcmp
Compares strings, returning 0 if equal
Parameters:
^
strcpy
EEL2: strcpy(#str,srcstr)
Copies the contents of srcstr to #str, and returns #str
Parameters:
^
strcpy_from
EEL2: strcpy_from(#str,srcstr,offset)
Copies srcstr to #str, but starts reading srcstr at offset offset
Parameters:
^
strcpy_substr
EEL2: strcpy_substr(#str,srcstr,offs,ml))
PHP-style (start at offs, offs<0 means from end, ml for maxlen, ml<0 = reduce length by this amt)
Parameters:
^
stricmp
Compares strings ignoring case, returning 0 if equal.
Parameters:
^
strlen
Returns the length of the string passed as a parameter.
Parameters:
^
strncat
EEL2: strncat(#str,srcstr,maxlen)
Appends srcstr to #str, stopping after maxlen characters of srcstr. Returns #str.
Parameters:
^
strncmp
EEL2: strncmp(str,str2,maxlen)
Compares strings giving up after maxlen characters, returning 0 if equal.
Parameters:
^
strncpy
EEL2: strncpy(#str,srcstr,maxlen)
Copies srcstr to #str, stopping after maxlen characters. Returns #str.
Parameters:
^
strnicmp
EEL2: strnicmp(str,str2,maxlen)
Compares strings giving up after maxlen characters, ignoring case, returning 0 if equal.
Parameters:
^
CountAutomationItems
C: int CountAutomationItems(TrackEnvelope* env)
EEL2: int CountAutomationItems(TrackEnvelope env)
Lua: integer ai_count = reaper.CountAutomationItems(TrackEnvelope env)
Python: Int retval = RPR_CountAutomationItems(TrackEnvelope env)
Returns the number of automation items on this envelope.
Returnvalues:
integer ai_count |
number of automation items |
Parameters:
TrackEnvelope env |
the envelope-object for the envelope-lane |
see also:
^
GetSetAutomationItemInfo
C: double GetSetAutomationItemInfo(TrackEnvelope* env, int autoitem_idx, const char* desc, double value, bool is_set)
EEL2: double GetSetAutomationItemInfo(TrackEnvelope env, int autoitem_idx, "desc", value, bool is_set)
Lua: number retval = reaper.GetSetAutomationItemInfo(TrackEnvelope env, integer autoitem_idx, string desc, number value, boolean is_set)
Python: Float retval = RPR_GetSetAutomationItemInfo(TrackEnvelope env, Int autoitem_idx, String desc, Float value, Boolean is_set)
Get or set automation item information. autoitem_idx=0 for the first automation item on an envelope, 1 for the second item, etc. desc can be any of the following:
D_POOL_ID : double * : automation item pool ID (as an integer); edits are propagated to all other automation items that share a pool ID
D_POSITION : double * : automation item timeline position in seconds
D_LENGTH : double * : automation item length in seconds
D_STARTOFFS : double * : automation item start offset in seconds
D_PLAYRATE : double * : automation item playback rate
D_BASELINE : double * : automation item baseline value in the range [0,1]
D_AMPLITUDE : double * : automation item amplitude in the range [-1,1]
D_LOOPSRC : double * : nonzero if the automation item contents are looped
D_UISEL : double * : nonzero if the automation item is selected in the arrange view
D_POOL_QNLEN : double * : automation item pooled source length in quarter notes (setting will affect all pooled instances)
Returnvalues:
Parameters:
TrackEnvelope env |
the envelope, that contains the automation-item |
integer autoitem_idx |
the index of the automation-item, whose information-attribute you want to get/set |
string desc |
the attribute to get/set |
number value |
the new value to be set; write any value, when is_set=false |
boolean is_set |
true, set a new value; false, get the current value |
^
GetSetAutomationItemInfo_String
C: bool GetSetAutomationItemInfo_String(TrackEnvelope* env, int autoitem_idx, const char* desc, char* valuestrNeedBig, bool is_set)
EEL2: bool GetSetAutomationItemInfo_String(TrackEnvelope env, int autoitem_idx, "desc", #valuestrNeedBig, bool is_set)
Lua: boolean retval, string valuestrNeedBig = reaper.GetSetAutomationItemInfo_String(TrackEnvelope env, integer autoitem_idx, string desc, string valuestrNeedBig, boolean is_set)
Python: (Boolean retval, TrackEnvelope env, Int autoitem_idx, String desc, String valuestrNeedBig, Boolean is_set) = RPR_GetSetAutomationItemInfo_String(env, autoitem_idx, desc, valuestrNeedBig, is_set)
Get or set automation item information. autoitem_idx=0 for the first automation item on an envelope, 1 for the second item, etc. returns true on success. desc can be any of the following:
P_POOL_NAME : char * : name of the underlying automation item pool
P_POOL_EXT:xyz : char * : extension-specific persistent data
Returnvalues:
boolean retval |
true, getting/setting the value was successful; falsem getting/setting the value was unsuccessful |
string valuestrNeedBig |
the current value set |
Parameters:
TrackEnvelope env |
the envelope, that contains the automation-item |
integer autoitem_idx |
the index of the automation-item, whose information-attribute you want to get/set |
string desc |
the attribute to get/set |
string valuestrNeedBig |
the new value to set; set it to "" when is_set=false |
boolean is_set |
true, set a new value; false, get the current value |
^
InsertAutomationItem
C: int InsertAutomationItem(TrackEnvelope* env, int pool_id, double position, double length)
EEL2: int InsertAutomationItem(TrackEnvelope env, int pool_id, position, length)
Lua: integer retval = reaper.InsertAutomationItem(TrackEnvelope env, integer pool_id, number position, number length)
Python: Int retval = RPR_InsertAutomationItem(TrackEnvelope env, Int pool_id, Float position, Float length)
Insert a new automation item.
pool_id < 0 collects existing envelope points into the automation item
if pool_id is >= 0 the automation item will be a new instance of that pool (which will be created as an empty instance if it does not exist).
Returns the index of the item, suitable for passing to other automation item API functions.
See GetSetAutomationItemInfo.
Returnvalues:
Parameters:
see also:
^
BR_EnvCountPoints
C: int BR_EnvCountPoints(BR_Envelope* envelope)
EEL2: int extension_api("BR_EnvCountPoints", BR_Envelope envelope)
Lua: integer retval = reaper.BR_EnvCountPoints(BR_Envelope envelope)
Python: Int retval = BR_EnvCountPoints(BR_Envelope envelope)
[BR] Count envelope points in the envelope object allocated with BR_EnvAlloc.
Returnvalues:
integer retval |
the number of envelope-points in the BR_Envelope-object |
Parameters:
BR_Envelope envelope |
the BR_Envelope-object, whose points you want to count |
see also:
^
BR_EnvDeletePoint
C: bool BR_EnvDeletePoint(BR_Envelope* envelope, int id)
EEL2: bool extension_api("BR_EnvDeletePoint", BR_Envelope envelope, int id)
Lua: boolean retval = reaper.BR_EnvDeletePoint(BR_Envelope envelope, integer id)
Python: Boolean retval = BR_EnvDeletePoint(BR_Envelope envelope, Int id)
[BR] Delete envelope point by index (zero-based) in the envelope object allocated with BR_EnvAlloc.
Returnvalues:
boolean retval |
true, deleting was successful; false, deleting was unsuccessful |
Parameters:
BR_Envelope envelope |
the BR_Envelope-object, where you want to delete an envelope-point |
integer id |
the envelope-point-idx, that you want to delete. 0, first envelope-point; 1, second envelope-point, etc |
see also:
^
BR_EnvGetPoint
C: bool BR_EnvGetPoint(BR_Envelope* envelope, int id, double* positionOut, double* valueOut, int* shapeOut, bool* selectedOut, double* bezierOut)
EEL2: bool extension_api("BR_EnvGetPoint", BR_Envelope envelope, int id, &position, &value, int &shape, bool &selected, &bezier)
Lua: boolean retval, number position, number value, integer shape, boolean selected, number bezier = reaper.BR_EnvGetPoint(BR_Envelope envelope, integer id)
Python: (Boolean retval, BR_Envelope envelope, Int id, Float positionOut, Float valueOut, Int shapeOut, Boolean selectedOut, Float bezierOut) = BR_EnvGetPoint(envelope, id, positionOut, valueOut, shapeOut, selectedOut, bezierOut)
[BR] Get envelope point by id (zero-based) from the envelope object allocated with BR_EnvAlloc.
Returns true on success.
Returnvalues:
Parameters:
see also:
^
BR_EnvSetPoint
C: bool BR_EnvSetPoint(BR_Envelope* envelope, int id, double position, double value, int shape, bool selected, double bezier)
EEL2: bool extension_api("BR_EnvSetPoint", BR_Envelope envelope, int id, position, value, int shape, bool selected, bezier)
Lua: boolean retval = reaper.BR_EnvSetPoint(BR_Envelope envelope, integer id, number position, number value, integer shape, boolean selected, number bezier)
Python: Boolean retval = BR_EnvSetPoint(BR_Envelope envelope, Int id, Float position, Float value, Int shape, Boolean selected, Float bezier)
[BR] Set envelope point by id (zero-based) in the envelope object allocated with BR_EnvAlloc.
To create point instead, pass id = -1.
Note that if new point is inserted or existing point's time position is changed, points won't automatically get sorted. To do that, see BR_EnvSortPoints.
Returns true on success.
Returnvalues:
Parameters:
see also:
^
BR_EnvSortPoints
C: void BR_EnvSortPoints(BR_Envelope* envelope)
EEL2: extension_api("BR_EnvSortPoints", BR_Envelope envelope)
Lua: reaper.BR_EnvSortPoints(BR_Envelope envelope)
Python: BR_EnvSortPoints(BR_Envelope envelope)
[BR] Sort envelope points by position.
The only reason to call this is if sorted points are explicitly needed after editing them with BR_EnvSetPoint.
Note that you do not have to call this before doing BR_EnvFree since it does handle unsorted points too.
Parameters:
see also:
^
CountEnvelopePoints
C: int CountEnvelopePoints(TrackEnvelope* envelope)
EEL2: int CountEnvelopePoints(TrackEnvelope envelope)
Lua: integer count_envpoints = reaper.CountEnvelopePoints(TrackEnvelope envelope)
Python: Int retval = RPR_CountEnvelopePoints(TrackEnvelope envelope)
Returns the number of points in the envelope.
Returnvalues:
integer count_envpoints |
the number of envelope-points in the envelopeobject envelope |
Parameters:
TrackEnvelope envelope |
the TrackEnvelope-object, in which to count for the envelope-points |
see also:
^
CountEnvelopePointsEx
C: int CountEnvelopePointsEx(TrackEnvelope* envelope, int autoitem_idx)
EEL2: int CountEnvelopePointsEx(TrackEnvelope envelope, int autoitem_idx)
Lua: integer count_envpoints = reaper.CountEnvelopePointsEx(TrackEnvelope envelope, integer autoitem_idx)
Python: Int retval = RPR_CountEnvelopePointsEx(TrackEnvelope envelope, Int autoitem_idx)
Returns the number of points in the envelope.
autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
For automation items, pass autoitem_idx|0x10000000 to base ptidx on the number of points in one full loop iteration,
even if the automation item is trimmed so that not all points are visible.
Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations.
Returnvalues:
integer count_envpoints |
the number of envelope-points in the envelopeobject envelope |
Parameters:
TrackEnvelope envelope |
the TrackEnvelope-object, in which to count for the envelope-points |
integer autoitem_idx |
-1, for the underlying envelope, 0, for the first automation item on the envelope, etc. |
see also:
^
DeleteEnvelopePointEx
C: bool DeleteEnvelopePointEx(TrackEnvelope* envelope, int autoitem_idx, int ptidx)
EEL2: bool DeleteEnvelopePointEx(TrackEnvelope envelope, int autoitem_idx, int ptidx)
Lua: boolean retval = reaper.DeleteEnvelopePointEx(TrackEnvelope envelope, integer autoitem_idx, integer ptidx)
Python: Boolean retval = RPR_DeleteEnvelopePointEx(TrackEnvelope envelope, Int autoitem_idx, Int ptidx)
Delete an envelope point. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done.
autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
For automation items, pass autoitem_idx|0x10000000 to base ptidx on the number of points in one full loop iteration,
even if the automation item is trimmed so that not all points are visible.
Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations.
Returnvalues:
boolean retval |
true, deleting was successful; false, deleting was unsuccessful |
Parameters:
TrackEnvelope envelope |
the envelope, in which the point lies, that you want to delete |
integer autoitem_idx |
-1, the underlying envelope;
0 to x, the 1st to x-1th automation-item
|0x10000000 to base ptidx on the number of points in one full loop iteration,
even if the automation item is trimmed so that not all points are visible.
Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations. |
integer ptidx |
the envelope-point to delete |
see also:
^
DeleteEnvelopePointRange
C: bool DeleteEnvelopePointRange(TrackEnvelope* envelope, double time_start, double time_end)
EEL2: bool DeleteEnvelopePointRange(TrackEnvelope envelope, time_start, time_end)
Lua: boolean retval = reaper.DeleteEnvelopePointRange(TrackEnvelope envelope, number time_start, number time_end)
Python: Boolean retval = RPR_DeleteEnvelopePointRange(TrackEnvelope envelope, Float time_start, Float time_end)
Delete a range of envelope points.
Returnvalues:
boolean retval |
true, if it succeeded |
Parameters:
TrackEnvelope envelope |
the envelope-point-object, in which to delete the envelope-points |
number time_start |
the starttime of the deletionrange in seconds |
number time_end |
the endtime of the deletionrange in seconds |
see also:
^
DeleteEnvelopePointRangeEx
C: bool DeleteEnvelopePointRangeEx(TrackEnvelope* envelope, int autoitem_idx, double time_start, double time_end)
EEL2: bool DeleteEnvelopePointRangeEx(TrackEnvelope envelope, int autoitem_idx, time_start, time_end)
Lua: boolean retval = reaper.DeleteEnvelopePointRangeEx(TrackEnvelope envelope, integer autoitem_idx, number time_start, number time_end)
Python: Boolean retval = RPR_DeleteEnvelopePointRangeEx(TrackEnvelope envelope, Int autoitem_idx, Float time_start, Float time_end)
Delete a range of envelope points. autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
Returnvalues:
boolean retval |
true, if deleting was successful; false, if not |
Parameters:
TrackEnvelope envelope |
the envelope-point-object, in which to delete the envelope-points |
integer autoitem_idx |
the automation item to be affected by deletion; -1, for the underlying envelope itself; 0, for the first automation item on the envelope; 1 for the second, etc |
number time_start |
the starttime of the deletionrange in seconds |
number time_end |
the endtime of the deletionrange in seconds |
^
Envelope_SortPoints
C: bool Envelope_SortPoints(TrackEnvelope* envelope)
EEL2: bool Envelope_SortPoints(TrackEnvelope envelope)
Lua: boolean retval = reaper.Envelope_SortPoints(TrackEnvelope envelope)
Python: Boolean retval = RPR_Envelope_SortPoints(TrackEnvelope envelope)
Sort envelope points by time.
Returnvalues:
Parameters:
see also:
^
Envelope_SortPointsEx
C: bool Envelope_SortPointsEx(TrackEnvelope* envelope, int autoitem_idx)
EEL2: bool Envelope_SortPointsEx(TrackEnvelope envelope, int autoitem_idx)
Lua: boolean retval = reaper.Envelope_SortPointsEx(TrackEnvelope envelope, integer autoitem_idx)
Python: Boolean retval = RPR_Envelope_SortPointsEx(TrackEnvelope envelope, Int autoitem_idx)
Sort envelope points by time. autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
Returnvalues:
Parameters:
see also:
^
GetEnvelopePoint
C: bool GetEnvelopePoint(TrackEnvelope* envelope, int ptidx, double* timeOut, double* valueOut, int* shapeOut, double* tensionOut, bool* selectedOut)
EEL2: bool GetEnvelopePoint(TrackEnvelope envelope, int ptidx, &time, &value, int &shape, &tension, bool &selected)
Lua: boolean retval, number time, number value, integer shape, number tension, boolean selected = reaper.GetEnvelopePoint(TrackEnvelope envelope, integer ptidx)
Python: (Boolean retval, TrackEnvelope envelope, Int ptidx, Float timeOut, Float valueOut, Int shapeOut, Float tensionOut, Boolean selectedOut) = RPR_GetEnvelopePoint(envelope, ptidx, timeOut, valueOut, shapeOut, tensionOut, selectedOut)
Get the attributes of an envelope point.
Returnvalues:
Parameters:
see also:
^
GetEnvelopePointByTime
C: int GetEnvelopePointByTime(TrackEnvelope* envelope, double time)
EEL2: int GetEnvelopePointByTime(TrackEnvelope envelope, time)
Lua: integer envelope_index = reaper.GetEnvelopePointByTime(TrackEnvelope envelope, number time)
Python: Int retval = RPR_GetEnvelopePointByTime(TrackEnvelope envelope, Float time)
Returns the envelope point at or immediately prior to the given time position.
Returnvalues:
Parameters:
see also:
^
GetEnvelopePointByTimeEx
C: int GetEnvelopePointByTimeEx(TrackEnvelope* envelope, int autoitem_idx, double time)
EEL2: int GetEnvelopePointByTimeEx(TrackEnvelope envelope, int autoitem_idx, time)
Lua: integer envelope_index = reaper.GetEnvelopePointByTimeEx(TrackEnvelope envelope, integer autoitem_idx, number time)
Python: Int retval = RPR_GetEnvelopePointByTimeEx(TrackEnvelope envelope, Int autoitem_idx, Float time)
Returns the envelope point at or immediately prior to the given time position.
autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
For automation items, pass autoitem_idx|0x10000000 to base ptidx on the number of points in one full loop iteration,
even if the automation item is trimmed so that not all points are visible.
Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations.
Returnvalues:
Parameters:
see also:
^
GetEnvelopePointEx
C: bool GetEnvelopePointEx(TrackEnvelope* envelope, int autoitem_idx, int ptidx, double* timeOut, double* valueOut, int* shapeOut, double* tensionOut, bool* selectedOut)
EEL2: bool GetEnvelopePointEx(TrackEnvelope envelope, int autoitem_idx, int ptidx, &time, &value, int &shape, &tension, bool &selected)
Lua: boolean retval, number time, number value, integer shape, number tension, boolean selected = reaper.GetEnvelopePointEx(TrackEnvelope envelope, integer autoitem_idx, integer ptidx)
Python: (Boolean retval, TrackEnvelope envelope, Int autoitem_idx, Int ptidx, Float timeOut, Float valueOut, Int shapeOut, Float tensionOut, Boolean selectedOut) = RPR_GetEnvelopePointEx(envelope, autoitem_idx, ptidx, timeOut, valueOut, shapeOut, tensionOut, selectedOut)
Get the attributes of an envelope point.
autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
For automation items, pass autoitem_idx|0x10000000 to base ptidx on the number of points in one full loop iteration,
even if the automation item is trimmed so that not all points are visible.
Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations.
Returnvalues:
Parameters:
see also:
^
InsertEnvelopePoint
C: bool InsertEnvelopePoint(TrackEnvelope* envelope, double time, double value, int shape, double tension, bool selected, bool* noSortInOptional)
EEL2: bool InsertEnvelopePoint(TrackEnvelope envelope, time, value, int shape, tension, bool selected, optional bool noSortIn)
Lua: boolean retval = reaper.InsertEnvelopePoint(TrackEnvelope envelope, number time, number value, integer shape, number tension, boolean selected, optional boolean noSortIn)
Python: (Boolean retval, TrackEnvelope envelope, Float time, Float value, Int shape, Float tension, Boolean selected, Boolean noSortInOptional) = RPR_InsertEnvelopePoint(envelope, time, value, shape, tension, selected, noSortInOptional)
Insert an envelope point. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done.
See InsertEnvelopePointEx.
Returnvalues:
Parameters:
optional boolean noSortIn |
|
see also:
^
InsertEnvelopePointEx
C: bool InsertEnvelopePointEx(TrackEnvelope* envelope, int autoitem_idx, double time, double value, int shape, double tension, bool selected, bool* noSortInOptional)
EEL2: bool InsertEnvelopePointEx(TrackEnvelope envelope, int autoitem_idx, time, value, int shape, tension, bool selected, optional bool noSortIn)
Lua: boolean retval = reaper.InsertEnvelopePointEx(TrackEnvelope envelope, integer autoitem_idx, number time, number value, integer shape, number tension, boolean selected, optional boolean noSortIn)
Python: (Boolean retval, TrackEnvelope envelope, Int autoitem_idx, Float time, Float value, Int shape, Float tension, Boolean selected, Boolean noSortInOptional) = RPR_InsertEnvelopePointEx(envelope, autoitem_idx, time, value, shape, tension, selected, noSortInOptional)
Insert an envelope point. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done.
autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
For automation items, pass autoitem_idx|0x10000000 to base ptidx on the number of points in one full loop iteration,
even if the automation item is trimmed so that not all points are visible.
Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations.
See CountEnvelopePointsEx, GetEnvelopePointEx, SetEnvelopePointEx, DeleteEnvelopePointEx.
Returnvalues:
Parameters:
optional boolean noSortIn |
|
see also:
^
SetEnvelopePoint
C: bool SetEnvelopePoint(TrackEnvelope* envelope, int ptidx, double* timeInOptional, double* valueInOptional, int* shapeInOptional, double* tensionInOptional, bool* selectedInOptional, bool* noSortInOptional)
EEL2: bool SetEnvelopePoint(TrackEnvelope envelope, int ptidx, optional timeIn, optional valueIn, optional int shapeIn, optional tensionIn, optional bool selectedIn, optional bool noSortIn)
Lua: boolean retval = reaper.SetEnvelopePoint(TrackEnvelope envelope, integer ptidx, optional number timeIn, optional number valueIn, optional integer shapeIn, optional number tensionIn, optional boolean selectedIn, optional boolean noSortIn)
Python: (Boolean retval, TrackEnvelope envelope, Int ptidx, Float timeInOptional, Float valueInOptional, Int shapeInOptional, Float tensionInOptional, Boolean selectedInOptional, Boolean noSortInOptional) = RPR_SetEnvelopePoint(envelope, ptidx, timeInOptional, valueInOptional, shapeInOptional, tensionInOptional, selectedInOptional, noSortInOptional)
Set attributes of an envelope point. Values that are not supplied will be ignored. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done. See SetEnvelopePointEx.
Returnvalues:
Parameters:
optional number tensionIn |
|
optional boolean selectedIn |
|
optional boolean noSortIn |
|
^
SetEnvelopePointEx
C: bool SetEnvelopePointEx(TrackEnvelope* envelope, int autoitem_idx, int ptidx, double* timeInOptional, double* valueInOptional, int* shapeInOptional, double* tensionInOptional, bool* selectedInOptional, bool* noSortInOptional)
EEL2: bool SetEnvelopePointEx(TrackEnvelope envelope, int autoitem_idx, int ptidx, optional timeIn, optional valueIn, optional int shapeIn, optional tensionIn, optional bool selectedIn, optional bool noSortIn)
Lua: boolean retval = reaper.SetEnvelopePointEx(TrackEnvelope envelope, integer autoitem_idx, integer ptidx, optional number timeIn, optional number valueIn, optional integer shapeIn, optional number tensionIn, optional boolean selectedIn, optional boolean noSortIn)
Python: (Boolean retval, TrackEnvelope envelope, Int autoitem_idx, Int ptidx, Float timeInOptional, Float valueInOptional, Int shapeInOptional, Float tensionInOptional, Boolean selectedInOptional, Boolean noSortInOptional) = RPR_SetEnvelopePointEx(envelope, autoitem_idx, ptidx, timeInOptional, valueInOptional, shapeInOptional, tensionInOptional, selectedInOptional, noSortInOptional)
Set attributes of an envelope point. Values that are not supplied will be ignored. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done. autoitem_idx=-1 for the underlying envelope, 0 for the first automation item on the envelope, etc. For automation items, pass autoitem_idx|0x10000000 to base ptidx on the number of points in one full loop iteration, even if the automation item is trimmed so that not all points are visible. Otherwise, ptidx will be based on the number of visible points in the automation item, including all loop iterations. See CountEnvelopePointsEx, GetEnvelopePointEx, InsertEnvelopePointEx, DeleteEnvelopePointEx.
Returnvalues:
Parameters:
optional number tensionIn |
|
optional boolean selectedIn |
|
optional boolean noSortIn |
|
^
GetEnvelopeUIState
C: int retval = GetEnvelopeUIState(TrackEnvelope* env)
EEL2: int retval = GetEnvelopeUIState(TrackEnvelope env)
Lua: integer retval = reaper.GetEnvelopeUIState(TrackEnvelope env)
Python: Int retval = RPR_GetEnvelopeUIState(TrackEnvelope env)
gets information on the UI state of an envelope: returns &1 if automation/modulation is playing back, &2 if automation is being actively written, &4 if the envelope recently had an effective automation mode change
Returnvalues:
integer retval |
the ui-state as flag-value |
Parameters:
TrackEnvelope env |
the envelope, whose ui-state you want |
^
BR_EnvAlloc
C: BR_Envelope* BR_EnvAlloc(TrackEnvelope* envelope, bool takeEnvelopesUseProjectTime)
EEL2: BR_Envelope extension_api("BR_EnvAlloc", TrackEnvelope envelope, bool takeEnvelopesUseProjectTime)
Lua: BR_Envelope env = reaper.BR_EnvAlloc(TrackEnvelope envelope, boolean takeEnvelopesUseProjectTime)
Python: BR_Envelope env = BR_EnvAlloc(TrackEnvelope envelope, Boolean takeEnvelopesUseProjectTime)
[BR] Create a BR_Envelope-object from a track-envelope pointer or take-envelope pointer.
To apply changes to a BR_Envelope-object, always call BR_EnvFree to release the object and commit changes if needed.
A BR_Envelope is not a TrackEnvelope-object and therefore can't be used as TrackEnvelope-object!
Delete a BR_Envelope with BR_EnvFree.
For manipulation see BR_EnvCountPoints, BR_EnvDeletePoint, BR_EnvFind, BR_EnvFindNext, BR_EnvFindPrevious, BR_EnvGetParentTake, BR_EnvGetParentTrack, BR_EnvGetPoint, BR_EnvGetProperties, BR_EnvSetPoint, BR_EnvSetProperties, BR_EnvValueAtPos.
Returnvalues:
BR_Envelope env |
the requested Envelope as a BR_Envelope-object |
Parameters:
TrackEnvelope envelope |
a TrackEnvelope-object of the envelope, that you want to have as a BR_Envelope |
boolean takeEnvelopesUseProjectTime |
false, take envelope points' positions are counted from take position, not project start time; true, work with project time instead |
see also:
^
BR_EnvFind
C: int BR_EnvFind(BR_Envelope* envelope, double position, double delta)
EEL2: int extension_api("BR_EnvFind", BR_Envelope envelope, position, delta)
Lua: integer retval = reaper.BR_EnvFind(BR_Envelope envelope, number position, number delta)
Python: Int retval = BR_EnvFind(BR_Envelope envelope, Float position, Float delta)
[BR] Find envelope point at time position in the envelope object allocated with BR_EnvAlloc.
Pass delta > 0 to search surrounding range - in that case the closest point to position within delta will be searched for.
Returns envelope point id (zero-based) on success or -1 on failure.
Returnvalues:
integer retval |
envelope-point-id or -1 on failure |
Parameters:
BR_Envelope envelope |
the BR_Envelope-object, in which you want to find an envelope-point |
number position |
the position in seconds, where you want to find from |
number delta |
delta > 0 to search surrounding range |
see also:
^
BR_EnvFindNext
C: int BR_EnvFindNext(BR_Envelope* envelope, double position)
EEL2: int extension_api("BR_EnvFindNext", BR_Envelope envelope, position)
Lua: integer retval = reaper.BR_EnvFindNext(BR_Envelope envelope, number position)
Python: Int retval = BR_EnvFindNext(BR_Envelope envelope, Float position)
[BR] Find next envelope point after time position in the envelope object allocated with BR_EnvAlloc.
Returns envelope point id (zero-based) on success or -1 on failure.
Returnvalues:
integer retval |
envelope-point-id or -1 on failure |
Parameters:
BR_Envelope envelope |
the BR_Envelope-object, in which you want to find the next envelope-point |
number position |
the position in seconds, where you want to find the next envelope-point from |
see also:
^
BR_EnvFindPrevious
C: int BR_EnvFindPrevious(BR_Envelope* envelope, double position)
EEL2: int extension_api("BR_EnvFindPrevious", BR_Envelope envelope, position)
Lua: integer retval = reaper.BR_EnvFindPrevious(BR_Envelope envelope, number position)
Python: Int retval = BR_EnvFindPrevious(BR_Envelope envelope, Float position)
[BR] Find previous envelope point before time position in the envelope object allocated with BR_EnvAlloc.
Returns envelope point id (zero-based) on success or -1 on failure.
Returnvalues:
integer retval |
envelope-point-id or -1 on failure |
Parameters:
BR_Envelope envelope |
the BR_Envelope-object, in which you want to find the previous envelope-point |
number position |
the position in seconds, where you want to find the previous envelope-point from |
see also:
^
BR_EnvFree
C: bool BR_EnvFree(BR_Envelope* envelope, bool commit)
EEL2: bool extension_api("BR_EnvFree", BR_Envelope envelope, bool commit)
Lua: boolean retval = reaper.BR_EnvFree(BR_Envelope envelope, boolean commit)
Python: Boolean retval = BR_EnvFree(BR_Envelope envelope, Boolean commit)
[BR] Free envelope object allocated with BR_EnvAlloc and commit changes if needed.
Returns true if changes were committed successfully.
Note that when envelope object wasn't modified nothing will get committed even if commit = true - in that case function returns false.
Returnvalues:
boolean retval |
true, committing was successful; false, committing was unsuccessful or no committing was necessary |
Parameters:
BR_Envelope envelope |
the BR_Envelope-object that you want to commit and be freed |
boolean commit |
true, commit changes when freeing the BR_Envelope-object; false, don't commit changes when freeing the BR_Envelope-object |
see also:
^
BR_EnvGetProperties
C: void BR_EnvGetProperties(BR_Envelope* envelope, bool* activeOut, bool* visibleOut, bool* armedOut, bool* inLaneOut, int* laneHeightOut, int* defaultShapeOut, double* minValueOut, double* maxValueOut, double* centerValueOut, int* typeOut, bool* faderScalingOut, int* automationItemsOptionsOutOptional)
EEL2: extension_api("BR_EnvGetProperties", BR_Envelope envelope, bool &active, bool &visible, bool &armed, bool &inLane, int &laneHeight, int &defaultShape, &minValue, &maxValue, ¢erValue, int &type, bool &faderScaling, optional int &automationItemsOptions)
Lua: boolean active, boolean visible, boolean armed, boolean inLane, integer laneHeight, integer defaultShape, number minValue, number maxValue, number centerValue, integer type, boolean faderScaling, optional integer automationItemsOptions = reaper.BR_EnvGetProperties(BR_Envelope envelope)
Python: (BR_Envelope envelope, Boolean activeOut, Boolean visibleOut, Boolean armedOut, Boolean inLaneOut, Int laneHeightOut, Int defaultShapeOut, Float minValueOut, Float maxValueOut, Float centerValueOut, Int typeOut, Boolean faderScalingOut, Int automationItemsOptionsOutOptional) = BR_EnvGetProperties(envelope, activeOut, visibleOut, armedOut, inLaneOut, laneHeightOut, defaultShapeOut, minValueOut, maxValueOut, centerValueOut, typeOut, faderScalingOut, automationItemsOptionsOutOptional)
[BR] Get envelope properties for the envelope object allocated with BR_EnvAlloc.
active: true if envelope is active
visible: true if envelope is visible
armed: true if envelope is armed
inLane: true if envelope has it's own envelope lane
laneHeight: envelope lane override height. 0 for none, otherwise size in pixels
defaultShape: default point shape: 0->Linear, 1->Square, 2->Slow start/end, 3->Fast start, 4->Fast end, 5->Bezier
minValue: minimum envelope value
maxValue: maximum envelope value
type: envelope type: 0->Volume, 1->Volume (Pre-FX), 2->Pan, 3->Pan (Pre-FX), 4->Width, 5->Width (Pre-FX), 6->Mute, 7->Pitch, 8->Playrate, 9->Tempo map, 10->Parameter
faderScaling: true if envelope uses fader scaling
automationItemsOptions: -1->project default, &1=0->don't attach to underl. env., &1->attach to underl. env. on right side, &2->attach to underl. env. on both sides, &4: bypass underl. env.
Returnvalues:
optional integer automationItemsOptions |
|
Parameters:
see also:
^
BR_EnvSetProperties
C: void BR_EnvSetProperties(BR_Envelope* envelope, bool active, bool visible, bool armed, bool inLane, int laneHeight, int defaultShape, bool faderScaling, int* automationItemsOptionsInOptional)
EEL2: extension_api("BR_EnvSetProperties", BR_Envelope envelope, bool active, bool visible, bool armed, bool inLane, int laneHeight, int defaultShape, bool faderScaling, optional int automationItemsOptionsIn)
Lua: reaper.BR_EnvSetProperties(BR_Envelope envelope, boolean active, boolean visible, boolean armed, boolean inLane, integer laneHeight, integer defaultShape, boolean faderScaling, optional integer automationItemsOptionsIn)
Python: (BR_Envelope envelope, Boolean active, Boolean visible, Boolean armed, Boolean inLane, Int laneHeight, Int defaultShape, Boolean faderScaling, Int automationItemsOptionsInOptional) = BR_EnvSetProperties(envelope, active, visible, armed, inLane, laneHeight, defaultShape, faderScaling, automationItemsOptionsInOptional)
[BR] Set envelope properties for the envelope object allocated with BR_EnvAlloc.
For parameter description see BR_EnvGetProperties.
Setting automationItemsOptions requires REAPER 5.979+.
Parameters:
optional integer automationItemsOptionsIn |
|
see also:
^
BR_EnvValueAtPos
C: double BR_EnvValueAtPos(BR_Envelope* envelope, double position)
EEL2: double extension_api("BR_EnvValueAtPos", BR_Envelope envelope, position)
Lua: number retval = reaper.BR_EnvValueAtPos(BR_Envelope envelope, number position)
Python: Float retval = BR_EnvValueAtPos(BR_Envelope envelope, Float position)
[BR] Get envelope value at time position for the envelope object allocated with BR_EnvAlloc.
Returnvalues:
Parameters:
see also:
^
BR_GetMouseCursorContext_Envelope
C: TrackEnvelope* BR_GetMouseCursorContext_Envelope(bool* takeEnvelopeOut)
EEL2: TrackEnvelope extension_api("BR_GetMouseCursorContext_Envelope", bool &takeEnvelope)
Lua: TrackEnvelope retval, boolean takeEnvelope = reaper.BR_GetMouseCursorContext_Envelope()
Python: (TrackEnvelope retval, Boolean takeEnvelopeOut) = BR_GetMouseCursorContext_Envelope(takeEnvelopeOut)
[BR] Returns envelope that was captured with the last call to BR_GetMouseCursorContext. In case the envelope belongs to take, takeEnvelope will be true.
Returnvalues:
^
CSurf_SetAutoMode
C: void CSurf_SetAutoMode(int mode, IReaperControlSurface* ignoresurf)
EEL2: CSurf_SetAutoMode(int mode, IReaperControlSurface ignoresurf)
Lua: reaper.CSurf_SetAutoMode(integer mode, IReaperControlSurface ignoresurf)
Python: RPR_CSurf_SetAutoMode(Int mode, IReaperControlSurface ignoresurf)
Parameters:
IReaperControlSurface ignoresurf |
|
^
Envelope_Evaluate
C: int Envelope_Evaluate(TrackEnvelope* envelope, double time, double samplerate, int samplesRequested, double* valueOut, double* dVdSOut, double* ddVdSOut, double* dddVdSOut)
EEL2: int Envelope_Evaluate(TrackEnvelope envelope, time, samplerate, int samplesRequested, &value, &dVdS, &ddVdS, &dddVdS)
Lua: integer retval, number value, number dVdS, number ddVdS, number dddVdS = reaper.Envelope_Evaluate(TrackEnvelope envelope, number time, number samplerate, integer samplesRequested)
Python: (Int retval, TrackEnvelope envelope, Float time, Float samplerate, Int samplesRequested, Float valueOut, Float dVdSOut, Float ddVdSOut, Float dddVdSOut) = RPR_Envelope_Evaluate(envelope, time, samplerate, samplesRequested, valueOut, dVdSOut, ddVdSOut, dddVdSOut)
Get the effective envelope value at a given time position.
samplesRequested is how long the caller expects until the next call to Envelope_Evaluate (often, the buffer block size).
The return value is how many samples beyond that time position that the returned values are valid.
dVdS is the change in value per sample (first derivative), ddVdS is the second derivative, dddVdS is the third derivative.
Returnvalues:
number dVdS |
the change in value per sample (first derivative) |
number ddVdS |
the second derivative |
number dddVdS |
is the third derivative |
Parameters:
see also:
^
Envelope_FormatValue
C: void Envelope_FormatValue(TrackEnvelope* env, double value, char* bufOut, int bufOut_sz)
EEL2: Envelope_FormatValue(TrackEnvelope env, value, #buf)
Lua: string formatted_value = reaper.Envelope_FormatValue(TrackEnvelope env, number value)
Python: (TrackEnvelope env, Float value, String bufOut, Int bufOut_sz) = RPR_Envelope_FormatValue(env, value, bufOut, bufOut_sz)
Formats the value of an envelope to a user-readable form
Returnvalues:
Parameters:
^
GetEnvelopeInfo_Value
C: double GetEnvelopeInfo_Value(TrackEnvelope* env, const char* parmname)
EEL2: double GetEnvelopeInfo_Value(TrackEnvelope env, "parmname")
Lua: number retval = reaper.GetEnvelopeInfo_Value(TrackEnvelope env, string parmname)
Python: Float retval = RPR_GetEnvelopeInfo_Value(TrackEnvelope env, String parmname)
Gets an envelope numerical-value attribute:
I_TCPY : int : Y offset of envelope relative to parent track (may be separate lane or overlap with track contents)
I_TCPH : int : visible height of envelope
I_TCPY_USED : int : Y offset of envelope relative to parent track, exclusive of padding
I_TCPH_USED : int : visible height of envelope, exclusive of padding
P_TRACK : MediaTrack * : parent track pointer (if any)
P_DESTTRACK : MediaTrack * : destination track pointer, if on a send
P_ITEM : MediaItem * : parent item pointer (if any)
P_TAKE : MediaItem_Take * : parent take pointer (if any)
I_SEND_IDX : int : 1-based index of send in P_TRACK, or 0 if not a send
I_HWOUT_IDX : int : 1-based index of hardware output in P_TRACK or 0 if not a hardware output
I_RECV_IDX : int : 1-based index of receive in P_DESTTRACK or 0 if not a send/receive
Returnvalues:
number retval |
the returned value of the attribute |
Parameters:
TrackEnvelope env |
the TrackEnvelope, of which you want to retrieve the attribute-value |
string parmname |
the attribute, whose value you want;
see description for the attributes you can use for more details |
^
GetEnvelopeName
C: bool GetEnvelopeName(TrackEnvelope* env, char* bufOut, int bufOut_sz)
EEL2: bool GetEnvelopeName(TrackEnvelope env, #buf)
Lua: boolean retval, string buf = reaper.GetEnvelopeName(TrackEnvelope env, string buf)
Python: (Boolean retval, TrackEnvelope env, String bufOut, Int bufOut_sz) = RPR_GetEnvelopeName(env, bufOut, bufOut_sz)
Returnvalues:
Parameters:
^
GetEnvelopeScalingMode
C: int GetEnvelopeScalingMode(TrackEnvelope* env)
EEL2: int GetEnvelopeScalingMode(TrackEnvelope env)
Lua: integer scaling_mode = reaper.GetEnvelopeScalingMode(TrackEnvelope env)
Python: Int retval = RPR_GetEnvelopeScalingMode(TrackEnvelope env)
Returns the envelope scaling mode: 0=no scaling, 1=fader scaling.
Note: All API functions deal with raw envelope point values, to convert raw from/to scaled values see ScaleFromEnvelopeMode, ScaleToEnvelopeMode.
Returnvalues:
integer scaling_mode |
the sscaling mode of the envelope
0, no scaling
1, fader scaling |
Parameters:
see also:
^
GetEnvelopeStateChunk
C: bool GetEnvelopeStateChunk(TrackEnvelope* env, char* strNeedBig, int strNeedBig_sz, bool isundoOptional)
EEL2: bool GetEnvelopeStateChunk(TrackEnvelope env, #str, bool isundo)
Lua: boolean retval, string str = reaper.GetEnvelopeStateChunk(TrackEnvelope env, string str, boolean isundo)
Python: (Boolean retval, TrackEnvelope env, String strNeedBig, Int strNeedBig_sz, Boolean isundoOptional) = RPR_GetEnvelopeStateChunk(env, strNeedBig, strNeedBig_sz, isundoOptional)
Gets the RPPXML state of an envelope.
Returnvalues:
boolean retval |
true, if it's successful; false, if unsuccessful |
string str |
the state-chunk |
Parameters:
TrackEnvelope env |
the Track-Envelope-object, whose trackstate you want to have |
string str |
just pass "" to it |
boolean isundo |
Undo flag is a performance/caching hint. |
^
GetFXEnvelope
C: TrackEnvelope* GetFXEnvelope(MediaTrack* track, int fxindex, int parameterindex, bool create)
EEL2: TrackEnvelope GetFXEnvelope(MediaTrack track, int fxindex, int parameterindex, bool create)
Lua: TrackEnvelope env = reaper.GetFXEnvelope(MediaTrack track, integer fxindex, integer parameterindex, boolean create)
Python: TrackEnvelope env = RPR_GetFXEnvelope(MediaTrack track, Int fxindex, Int parameterindex, Boolean create)
Returns the FX parameter envelope. If the envelope does not exist and create=true, the envelope will be created.
Returnvalues:
Parameters:
^
GetGlobalAutomationOverride
C: int GetGlobalAutomationOverride()
EEL2: int GetGlobalAutomationOverride()
Lua: integer automation_override = reaper.GetGlobalAutomationOverride()
Python: Int retval = RPR_GetGlobalAutomationOverride()
return -1=no override, 0=trim/read, 1=read, 2=touch, 3=write, 4=latch, 5=bypass
Returnvalues:
integer automation_override |
global automation override-mode
-1, no override
0, trim/read
1, read
2, touch
3, write
4, latch
5, bypass |
^
GetSelectedEnvelope
C: TrackEnvelope* GetSelectedEnvelope(ReaProject* proj)
EEL2: TrackEnvelope GetSelectedEnvelope(ReaProject proj)
Lua: TrackEnvelope env = reaper.GetSelectedEnvelope(ReaProject proj)
Python: TrackEnvelope env = RPR_GetSelectedEnvelope(ReaProject proj)
get the currently selected envelope, returns NULL/nil if no envelope is selected
Returnvalues:
TrackEnvelope env |
the TrackEnvelope-object of the selected envelope-lane requested; 0, if no envelope is selected |
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
GetSelectedTrackEnvelope
C: TrackEnvelope* GetSelectedTrackEnvelope(ReaProject* proj)
EEL2: TrackEnvelope GetSelectedTrackEnvelope(ReaProject proj)
Lua: TrackEnvelope sel_env = reaper.GetSelectedTrackEnvelope(ReaProject proj)
Python: TrackEnvelope sel_env = RPR_GetSelectedTrackEnvelope(ReaProject proj)
get the currently selected track envelope, returns NULL/nil if no envelope is selected
Returnvalues:
TrackEnvelope sel_env |
the selected TrackEnvelope as an object; nil if no TrackEnvelope is selected |
Parameters:
ReaProject proj |
the project-number. 0 for the current project. |
^
GetSetEnvelopeInfo_String
C: bool GetSetEnvelopeInfo_String(TrackEnvelope* env, const char* parmname, char* stringNeedBig, bool setNewValue)
EEL2: bool GetSetEnvelopeInfo_String(TrackEnvelope env, "parmname", #stringNeedBig, bool setNewValue)
Lua: boolean retval, string stringNeedBig = reaper.GetSetEnvelopeInfo_String(TrackEnvelope env, string parmname_attribute, string valueStringNeedBig, boolean setNewValue)
Python: (Boolean retval, TrackEnvelope env, String parmname, String stringNeedBig, Boolean setNewValue) = RPR_GetSetEnvelopeInfo_String(env, parmname, stringNeedBig, setNewValue)
Gets/sets an attribute string:
P_EXT:xyz : char * : extension-specific persistent data
GUID : GUID * : 16-byte GUID, can query only, not set. If using a _String() function, GUID is a string {xyz-...}.
This is basically a key-value-store for envelopes.
Returnvalues:
boolean retval |
true, getting/setting the value was successful; falsem getting/setting the value was unsuccessful |
string valuestrNeedBig |
the current value set |
Parameters:
TrackEnvelope env |
the envelope, whose ext-attributes you want to get/set |
string parmname_attribute |
the name of the parameter and attribute. For instance, "P_EXT:FooBar" will put the value into the envelope-ext-store named "FooBar"; you can have multiple ones with different names |
string valueStringNeedBig |
the new value to set; set it to "", when setNewValue=false |
boolean setNewValue |
true, set a new value; false, just return the current value |
^
GetSetEnvelopeState
C: bool GetSetEnvelopeState(TrackEnvelope* env, char* str, int str_sz)
EEL2: bool GetSetEnvelopeState(TrackEnvelope env, #str)
Lua: boolean retval, string str = reaper.GetSetEnvelopeState(TrackEnvelope env, string str)
Python: (Boolean retval, TrackEnvelope env, String str, Int str_sz) = RPR_GetSetEnvelopeState(env, str, str_sz)
deprecated -- see SetEnvelopeStateChunk, GetEnvelopeStateChunk
Returnvalues:
boolean retval |
true, getting/setting was successful; false, getting/setting was unsuccessful |
string str |
the value currently set |
Parameters:
TrackEnvelope env |
the envelope, of which you want to get/set the value |
string str |
the new value to set |
see also:
GetEnvelopeStateChunk - returns, an EnvelopeStateChunk, which holds all attributes-information of an envelope |
SetEnvelopeStateChunk - sets an EnvelopeStateChunk, to replace all attributes-information of an envelope |
^
GetSetEnvelopeState2
C: bool GetSetEnvelopeState2(TrackEnvelope* env, char* str, int str_sz, bool isundo)
EEL2: bool GetSetEnvelopeState2(TrackEnvelope env, #str, bool isundo)
Lua: boolean retval, string str = reaper.GetSetEnvelopeState2(TrackEnvelope env, string str, boolean isundo)
Python: (Boolean retval, TrackEnvelope env, String str, Int str_sz, Boolean isundo) = RPR_GetSetEnvelopeState2(env, str, str_sz, isundo)
deprecated -- see SetEnvelopeStateChunk, GetEnvelopeStateChunk
Returnvalues:
boolean retval |
true, getting/setting was successful; false, getting/setting was unsuccessful |
string str |
the value currently set |
Parameters:
TrackEnvelope env |
the envelope to get/set the state of |
string str |
the new value to set |
boolean isundo |
true, undo; false, don't undo |
see also:
GetEnvelopeStateChunk - returns, an EnvelopeStateChunk, which holds all attributes-information of an envelope |
SetEnvelopeStateChunk - sets an EnvelopeStateChunk, to replace all attributes-information of an envelope |
^
GetTrackAutomationMode
C: int GetTrackAutomationMode(MediaTrack* tr)
EEL2: int GetTrackAutomationMode(MediaTrack tr)
Lua: integer automation_mode = reaper.GetTrackAutomationMode(MediaTrack tr)
Python: Int retval = RPR_GetTrackAutomationMode(MediaTrack tr)
return the track mode, regardless of global override
Returnvalues:
Parameters:
^
ScaleFromEnvelopeMode
C: double ScaleFromEnvelopeMode(int scaling_mode, double val)
EEL2: double ScaleFromEnvelopeMode(int scaling_mode, val)
Lua: number retval = reaper.ScaleFromEnvelopeMode(integer scaling_mode, number val)
Python: Float retval = RPR_ScaleFromEnvelopeMode(Int scaling_mode, Float val)
Returnvalues:
Parameters:
^
ScaleToEnvelopeMode
C: double ScaleToEnvelopeMode(int scaling_mode, double val)
EEL2: double ScaleToEnvelopeMode(int scaling_mode, val)
Lua: number retval = reaper.ScaleToEnvelopeMode(integer scaling_mode, number val)
Python: Float retval = RPR_ScaleToEnvelopeMode(Int scaling_mode, Float val)
Returnvalues:
Parameters:
^
SetAutomationMode
C: void SetAutomationMode(int mode, bool onlySel)
EEL2: SetAutomationMode(int mode, bool onlySel)
Lua: reaper.SetAutomationMode(integer mode, boolean onlySel)
Python: RPR_SetAutomationMode(Int mode, Boolean onlySel)
Sets all or selected tracks to mode.
Includes the master-track.
Parameters:
integer mode |
the automation-mode
0, Trim/read
1, Read
2, Touch
3, Write
4, Latch
5 and higher no mode selected |
boolean onlySel |
true, only selected tracks; false, all tracks including master-track |
^
SetEnvelopeStateChunk
C: bool SetEnvelopeStateChunk(TrackEnvelope* env, const char* str, bool isundoOptional)
EEL2: bool SetEnvelopeStateChunk(TrackEnvelope env, "str", bool isundo)
Lua: boolean retval = reaper.SetEnvelopeStateChunk(TrackEnvelope env, string str, boolean isundo)
Python: Boolean retval = RPR_SetEnvelopeStateChunk(TrackEnvelope env, String str, Boolean isundoOptional)
Sets the RPPXML state of an envelope, returns true if successful.
Returnvalues:
boolean retval |
true, setting worked; false, setting didn't work |
Parameters:
TrackEnvelope env |
the TrackEnvelope, whose statechunk you want to set |
string str |
the new statechunk, that you want to set |
boolean isundo |
undo flag is a performance/caching hint. |
^
SetGlobalAutomationOverride
C: void SetGlobalAutomationOverride(int mode)
EEL2: SetGlobalAutomationOverride(int mode)
Lua: reaper.SetGlobalAutomationOverride(integer mode)
Python: RPR_SetGlobalAutomationOverride(Int mode)
Parameters:
^
SetTrackAutomationMode
C: void SetTrackAutomationMode(MediaTrack* tr, int mode)
EEL2: SetTrackAutomationMode(MediaTrack tr, int mode)
Lua: reaper.SetTrackAutomationMode(MediaTrack tr, integer mode)
Python: RPR_SetTrackAutomationMode(MediaTrack tr, Int mode)
Set automation-mode for a specific MediaTrack.
Parameters:
MediaTrack tr |
the MediaTrack, whose automation-mode you want to set |
integer mode |
the automation-mode
0, Trim/read
1, Read
2, Touch
3, Write
4, Latch
5 and higher no mode selected |
^
BR_EnvGetParentTake
C: MediaItem_Take* BR_EnvGetParentTake(BR_Envelope* envelope)
EEL2: MediaItem_Take extension_api("BR_EnvGetParentTake", BR_Envelope envelope)
Lua: MediaItem_Take take = reaper.BR_EnvGetParentTake(BR_Envelope envelope)
Python: MediaItem_Take take = BR_EnvGetParentTake(BR_Envelope envelope)
[BR] If envelope object allocated with BR_EnvAlloc is take envelope, returns parent media item take, otherwise NULL.
Returnvalues:
Parameters:
see also:
^
Envelope_GetParentTake
C: MediaItem_Take* Envelope_GetParentTake(TrackEnvelope* env, int* indexOut, int* index2Out)
EEL2: MediaItem_Take Envelope_GetParentTake(TrackEnvelope env, int &index, int &index2)
Lua: MediaItem_Take retval, integer index, integer index2 = reaper.Envelope_GetParentTake(TrackEnvelope env)
Python: (MediaItem_Take retval, TrackEnvelope env, Int indexOut, Int index2Out) = RPR_Envelope_GetParentTake(env, indexOut, index2Out)
If take envelope, gets the take from the envelope. If FX, indexOut set to FX index, index2Out set to parameter index, otherwise -1.
Returnvalues:
Parameters:
^
GetTakeEnvelope
C: TrackEnvelope* GetTakeEnvelope(MediaItem_Take* take, int envidx)
EEL2: TrackEnvelope GetTakeEnvelope(MediaItem_Take take, int envidx)
Lua: TrackEnvelope env = reaper.GetTakeEnvelope(MediaItem_Take take, integer envidx)
Python: TrackEnvelope env = RPR_GetTakeEnvelope(MediaItem_Take take, Int envidx)
Returnvalues:
Parameters:
^
GetTakeEnvelopeByName
C: TrackEnvelope* GetTakeEnvelopeByName(MediaItem_Take* take, const char* envname)
EEL2: TrackEnvelope GetTakeEnvelopeByName(MediaItem_Take take, "envname")
Lua: TrackEnvelope env = reaper.GetTakeEnvelopeByName(MediaItem_Take take, string envname)
Python: TrackEnvelope env = RPR_GetTakeEnvelopeByName(MediaItem_Take take, String envname)
Returnvalues:
Parameters:
^
BR_EnvGetParentTrack
C: MediaTrack* BR_EnvGetParentTrack(BR_Envelope* envelope)
EEL2: MediaTrack extension_api("BR_EnvGetParentTrack", BR_Envelope envelope)
Lua: MediaTrack tr = reaper.BR_EnvGetParentTrack(BR_Envelope envelope)
Python: MediaTrack tr = BR_EnvGetParentTrack(BR_Envelope envelope)
[BR] Get parent track of envelope object allocated with BR_EnvAlloc. If take envelope, returns NULL.
Returnvalues:
Parameters:
see also:
^
CountTrackEnvelopes
C: int CountTrackEnvelopes(MediaTrack* track)
EEL2: int CountTrackEnvelopes(MediaTrack track)
Lua: integer count_track_envs = reaper.CountTrackEnvelopes(MediaTrack track)
Python: Int retval = RPR_CountTrackEnvelopes(MediaTrack track)
Counts the number of track-envelopes of a certain track.
Returnvalues:
integer count_track_envs |
the number of track-envelopes in a track |
Parameters:
MediaTrack track |
the object of the track to count it's envelopes |
see also:
^
Envelope_GetParentTrack
C: MediaTrack* Envelope_GetParentTrack(TrackEnvelope* env, int* indexOut, int* index2Out)
EEL2: MediaTrack Envelope_GetParentTrack(TrackEnvelope env, int &index, int &index2)
Lua: MediaTrack retval, integer index, integer index2 = reaper.Envelope_GetParentTrack(TrackEnvelope env)
Python: (MediaTrack retval, TrackEnvelope env, Int indexOut, Int index2Out) = RPR_Envelope_GetParentTrack(env, indexOut, index2Out)
If track envelope, gets the track from the envelope. If FX, indexOut set to FX index, index2Out set to parameter index, otherwise -1.
Returnvalues:
Parameters:
^
GetTrackEnvelope
C: TrackEnvelope* GetTrackEnvelope(MediaTrack* track, int envidx)
EEL2: TrackEnvelope GetTrackEnvelope(MediaTrack track, int envidx)
Lua: TrackEnvelope env = reaper.GetTrackEnvelope(MediaTrack track, integer envidx)
Python: TrackEnvelope env = RPR_GetTrackEnvelope(MediaTrack track, Int envidx)
Gets an envelope of a track.
Note: to create an FX-envelope, use GetFXEnvelope with parameter create=true
Returnvalues:
Parameters:
^
GetTrackEnvelopeByChunkName
C: TrackEnvelope* GetTrackEnvelopeByChunkName(MediaTrack* tr, const char* cfgchunkname_or_guid)
EEL2: TrackEnvelope GetTrackEnvelopeByChunkName(MediaTrack tr, "cfgchunkname_or_guid")
Lua: TrackEnvelope env = reaper.GetTrackEnvelopeByChunkName(MediaTrack tr, string cfgchunkname_or_guid)
Python: TrackEnvelope env = RPR_GetTrackEnvelopeByChunkName(MediaTrack tr, String cfgchunkname_or_guid)
Gets a built-in track envelope by configuration chunk name, e.g. "
Note: to create an FX-envelope, use GetFXEnvelope with parameter create=true
Returnvalues:
Parameters:
string cfgchunkname_or_guid |
|
^
GetTrackEnvelopeByName
C: TrackEnvelope* GetTrackEnvelopeByName(MediaTrack* track, const char* envname)
EEL2: TrackEnvelope GetTrackEnvelopeByName(MediaTrack track, "envname")
Lua: TrackEnvelope = reaper.GetTrackEnvelopeByName(MediaTrack track, string envname)
Python: TrackEnvelope env = RPR_GetTrackEnvelopeByName(MediaTrack track, String envname)
Gets a TrackEnvelope by its name.
Note: to create an FX-envelope, use GetFXEnvelope with parameter create=true
Returnvalues:
Parameters:
^
CF_EnumSelectedFX
C: int CF_EnumSelectedFX(FxChain * hwnd, int index)
EEL2: int extension_api("CF_EnumSelectedFX", FxChain hwnd, int index)
Lua: integer retval = reaper.CF_EnumSelectedFX(FxChain hwnd, integer index)
Python: Int retval = CF_EnumSelectedFX(FxChain hwnd, Int index)
Return the index of the next selected effect in the given FX chain. Start index should be -1. Returns -1 if there are no more selected effects.
Returnvalues:
Parameters:
^
CF_GetFocusedFXChain
C: FxChain * CF_GetFocusedFXChain()
EEL2: FxChain extension_api("CF_GetFocusedFXChain")
Lua: FxChain hwnd = reaper.CF_GetFocusedFXChain()
Python: FXChain retval = CF_GetFocusedFXChain()
Return a handle to the currently focused FX chain window.
Returnvalues:
^
GetFocusedFX
C: int GetFocusedFX(int* tracknumberOut, int* itemnumberOut, int* fxnumberOut)
EEL2: int GetFocusedFX(int &tracknumber, int &itemnumber, int &fxnumber)
Lua: integer retval, integer tracknumber, integer itemnumber, integer fxnumber = reaper.GetFocusedFX()
Python: (Int retval, Int tracknumberOut, Int itemnumberOut, Int fxnumberOut) = RPR_GetFocusedFX(tracknumberOut, itemnumberOut, fxnumberOut)
Get focused FX.
!!Deprecated, use GetFocusedFX2 instead
See GetLastTouchedFX
Returnvalues:
integer retval |
0, if no FX window has focus
1, if a track FX window has focus or was the last focused and still open
2, if an item FX window has focus or was the last focused and still open |
integer tracknumber |
tracknumber; 0, master track; 1, track 1; etc. |
integer itemnumber |
-1, if it's a track-fx; 0 and higher, the mediaitem-number |
integer fxnumber |
If item FX, fxnumber will have the high word be the take index, the low word the FX index |
see also:
^
GetFocusedFX2
C: int GetFocusedFX2(int* tracknumberOut, int* itemnumberOut, int* fxnumberOut)
EEL2: int GetFocusedFX2(int &tracknumber, int &itemnumber, int &fxnumber)
Lua: integer retval, number tracknumber, number itemnumber, number fxnumber = reaper.GetFocusedFX2()
Python: (Int retval, Int tracknumberOut, Int itemnumberOut, Int fxnumberOut) = RPR_GetFocusedFX2(tracknumberOut, itemnumberOut, fxnumberOut)
Return value has 1 set if track FX, 2 if take/item FX, &4 is set if FX is no longer focused but still open.
tracknumber==0 means the master track, 1 means track 1, etc. itemnumber is zero-based (or -1 if not an item).
Returnvalues:
integer retval |
0, if no FX window has focus
1, if a track FX window has focus or was the last focused and still open
2, if an item FX window has focus or was the last focused and still open
&4, if FX is no longer focused but still open |
integer tracknumber |
tracknumber; 0, master track; 1, track 1; etc. |
integer itemnumber |
-1, if it's a track-fx; 0 and higher, the mediaitem-number |
integer fxnumber |
If item FX, fxnumber will have the high word be the take index, the low word the FX index |
see also:
^
GetLastTouchedFX
C: bool GetLastTouchedFX(int* tracknumberOut, int* fxnumberOut, int* paramnumberOut)
EEL2: bool GetLastTouchedFX(int &tracknumber, int &fxnumber, int ¶mnumber)
Lua: boolean retval, integer tracknumber, integer fxnumber, integer paramnumber = reaper.GetLastTouchedFX()
Python: (Boolean retval, Int tracknumberOut, Int fxnumberOut, Int paramnumberOut) = RPR_GetLastTouchedFX(tracknumberOut, fxnumberOut, paramnumberOut)
Returns the last touched track, it's last touched parameter and tracknumber.
The low word of tracknumber is the 1-based track index -- 0 means the master track, 1 means track 1, etc.
Returnvalues:
boolean retval |
true, if last touched FX parameter is valid; false, if otherwise |
integer tracknumber |
the tracknumber; 0 means the master track, 1 means track 1, etc.
If the high word of tracknumber is nonzero, it refers to the 1-based item index (1 is the first item on the track, etc). |
integer fxnumber |
the id of the FX in the track tracknumber, zero-based
For track FX, the low 24 bits of fxnumber refer to the FX index in the chain, and if the next 8 bits are 01, then the FX is record FX.
For item FX, the low word defines the FX index in the chain, and the high word defines the take number. |
integer paramnumber |
the id of the last parameter touched, zero-based |
see also:
^
PluginWantsAlwaysRunFx
C: void PluginWantsAlwaysRunFx(int amt)
EEL2: PluginWantsAlwaysRunFx(int amt)
Lua: reaper.PluginWantsAlwaysRunFx(integer amt)
Python: RPR_PluginWantsAlwaysRunFx(Int amt)
Parameters:
^
SNM_AddTCPFXParm
C: bool SNM_AddTCPFXParm(MediaTrack* tr, int fxId, int prmId)
EEL2: bool extension_api("SNM_AddTCPFXParm", MediaTrack tr, int fxId, int prmId)
Lua: boolean retval = reaper.SNM_AddTCPFXParm(MediaTrack tr, integer fxId, integer prmId)
Python: Boolean retval = SNM_AddTCPFXParm(MediaTrack tr, Int fxId, Int prmId)
[S&M] Add an FX parameter knob in the TCP. Returns false if nothing updated (invalid parameters, knob already present, etc..)
Returnvalues:
Parameters:
^
BR_GetTakeFXCount
C: int BR_GetTakeFXCount(MediaItem_Take* take)
EEL2: int extension_api("BR_GetTakeFXCount", MediaItem_Take take)
Lua: integer retval = reaper.BR_GetTakeFXCount(MediaItem_Take take)
Python: Int retval = BR_GetTakeFXCount(MediaItem_Take take)
[BR] Returns FX count for supplied take
Returnvalues:
Parameters:
^
CF_GetTakeFXChain
C: FxChain * CF_GetTakeFXChain(MediaItem_Take* take)
EEL2: FxChain extension_api("CF_GetTakeFXChain", MediaItem_Take take)
Lua: FxChain hwnd = reaper.CF_GetTakeFXChain(MediaItem_Take take)
Python: FXChain retval = CF_GetTakeFXChain(MediaItem_Take take)
Return a handle to the given take FX chain window. HACK: This temporarily renames the take in order to disambiguate the take FX chain window from similarily named takes.
Returnvalues:
FxChain hwnd |
the hwnd-window-handler of the FX-chain of the item |
Parameters:
MediaItem_Take take |
the take, whose FXChain-window-handler you want to get |
^
NF_TakeFX_GetFXModuleName
C: bool NF_TakeFX_GetFXModuleName(MediaItem* item, int fx, char* nameOut, int nameOut_sz)
EEL2: bool extension_api("NF_TakeFX_GetFXModuleName", MediaItem item, int fx, #name)
Lua: boolean retval, string name = reaper.NF_TakeFX_GetFXModuleName(MediaItem item, integer fx)
Python: (Boolean retval, MediaItem item, Int fx, String nameOut, Int nameOut_sz) = NF_TakeFX_GetFXModuleName(item, fx, nameOut, nameOut_sz)
Deprecated, see TakeFX_GetNamedConfigParm/'fx_ident' (v6.37+). See BR_TrackFX_GetFXModuleName. fx: counted consecutively across all takes (zero-based).
Returnvalues:
Parameters:
^
NF_TakeFX_GetModuleName
C: bool NF_TakeFX_GetModuleName(MediaItem* item, int fx, char* nameOut, int nameOutSz)
EEL2: bool extension_api("NF_TakeFX_GetModuleName", MediaItem item, int fx, # name, int name)
Lua: boolean retval, string name = reaper.NF_TakeFX_GetModuleName(MediaItem item, integer fx)
Python: (Boolean retval, MediaItem item, Int fx, String nameOut, Int nameOutSz) = NF_TakeFX_GetModuleName(item, fx, nameOut, nameOutSz)
Deprecated. Retrieves the name of the module of a takefx from a MediaItem.
See BR_TrackFX_GetFXModuleName. fx: counted consecutively across all takes (zero-based).
Returnvalues:
boolean retval |
true, modulename could be retrieved; false, modulename couldn't be retrieved(e.g. no such fx) |
string name |
the name of the module |
Parameters:
MediaItem item |
the MediaItem, whose modulename of an effect you want to receive |
integer fx |
the index of the fx(with 0 for the first), whose modulename you want to receive |
^
TakeFX_AddByName
C: int TakeFX_AddByName(MediaItem_Take* take, const char* fxname, int instantiate)
EEL2: int TakeFX_AddByName(MediaItem_Take take, "fxname", int instantiate)
Lua: integer retval = reaper.TakeFX_AddByName(MediaItem_Take take, string fxname, integer instantiate)
Python: Int retval = RPR_TakeFX_AddByName(MediaItem_Take take, String fxname, Int instantiate)
Adds or queries the position of a named FX in a take. See TrackFX_AddByName() for information on fxname and instantiate.
Returnvalues:
Parameters:
^
TakeFX_CopyToTake
C: void TakeFX_CopyToTake(MediaItem_Take* src_take, int src_fx, MediaItem_Take* dest_take, int dest_fx, bool is_move)
EEL2: TakeFX_CopyToTake(MediaItem_Take src_take, int src_fx, MediaItem_Take dest_take, int dest_fx, bool is_move)
Lua: reaper.TakeFX_CopyToTake(MediaItem_Take src_take, integer src_fx, MediaItem_Take dest_take, integer dest_fx, boolean is_move)
Python: RPR_TakeFX_CopyToTake(MediaItem_Take src_take, Int src_fx, MediaItem_Take dest_take, Int dest_fx, Boolean is_move)
Copies (or moves) FX from src_take to dest_take. Can be used with src_take=dest_take to reorder.
Parameters:
MediaItem_Take src_take |
the source-take, from which you want to copy an fx |
integer src_fx |
the index of the source-fx |
MediaItem_Take dest_take |
the destination-take, to which you want to copy an fx |
integer dest_fx |
the index of the target-fx |
boolean is_move |
true, move fx from source to destination-take; false, just copy fx from source to destination-take |
^
TakeFX_CopyToTrack
C: void TakeFX_CopyToTrack(MediaItem_Take* src_take, int src_fx, MediaTrack* dest_track, int dest_fx, bool is_move)
EEL2: TakeFX_CopyToTrack(MediaItem_Take src_take, int src_fx, MediaTrack dest_track, int dest_fx, bool is_move)
Lua: reaper.TakeFX_CopyToTrack(MediaItem_Take src_take, integer src_fx, MediaTrack dest_track, integer dest_fx, boolean is_move)
Python: RPR_TakeFX_CopyToTrack(MediaItem_Take src_take, Int src_fx, MediaTrack dest_track, Int dest_fx, Boolean is_move)
Copies (or moves) FX from src_take to dest_track.
Note:
To use global monitoring inputFX, use the master-track, any other track will access the track's rec-input-fx.
Add 0x1000000 to the fx-indices to address monitoringFX/rec-inputFX.
Parameters:
^
TakeFX_Delete
C: bool TakeFX_Delete(MediaItem_Take* take, int fx)
EEL2: bool TakeFX_Delete(MediaItem_Take take, int fx)
Lua: boolean retval = reaper.TakeFX_Delete(MediaItem_Take take, integer fx)
Python: Boolean retval = RPR_TakeFX_Delete(MediaItem_Take take, Int fx)
Remove a FX from take chain (returns true on success)
Returnvalues:
Parameters:
^
TakeFX_EndParamEdit
C: bool TakeFX_EndParamEdit(MediaItem_Take* take, int fx, int param)
EEL2: bool TakeFX_EndParamEdit(MediaItem_Take take, int fx, int param)
Lua: boolean retval = reaper.TakeFX_EndParamEdit(MediaItem_Take take, integer fx, integer param)
Python: Boolean retval = RPR_TakeFX_EndParamEdit(MediaItem_Take take, Int fx, Int param)
Returnvalues:
Parameters:
^
TakeFX_FormatParamValue
C: bool TakeFX_FormatParamValue(MediaItem_Take* take, int fx, int param, double val, char* bufOut, int bufOut_sz)
EEL2: bool TakeFX_FormatParamValue(MediaItem_Take take, int fx, int param, val, #buf)
Lua: boolean retval, string buf = reaper.TakeFX_FormatParamValue(MediaItem_Take take, integer fx, integer param, number val)
Python: (Boolean retval, MediaItem_Take take, Int fx, Int param, Float val, String bufOut, Int bufOut_sz) = RPR_TakeFX_FormatParamValue(take, fx, param, val, bufOut, bufOut_sz)
Note: only works with FX that support Cockos VST extensions.
Returnvalues:
Parameters:
^
TakeFX_FormatParamValueNormalized
C: bool TakeFX_FormatParamValueNormalized(MediaItem_Take* take, int fx, int param, double value, char* buf, int buf_sz)
EEL2: bool TakeFX_FormatParamValueNormalized(MediaItem_Take take, int fx, int param, value, #buf)
Lua: boolean retval, string buf = reaper.TakeFX_FormatParamValueNormalized(MediaItem_Take take, integer fx, integer param, number value, string buf)
Python: (Boolean retval, MediaItem_Take take, Int fx, Int param, Float value, String buf, Int buf_sz) = RPR_TakeFX_FormatParamValueNormalized(take, fx, param, value, buf, buf_sz)
Note: only works with FX that support Cockos VST extensions.
Returnvalues:
Parameters:
^
TakeFX_GetChainVisible
C: int TakeFX_GetChainVisible(MediaItem_Take* take)
EEL2: int TakeFX_GetChainVisible(MediaItem_Take take)
Lua: integer retval = reaper.TakeFX_GetChainVisible(MediaItem_Take take)
Python: Int retval = RPR_TakeFX_GetChainVisible(MediaItem_Take take)
returns index of effect visible in chain, or -1 for chain hidden, or -2 for chain visible but no effect selected
Returnvalues:
Parameters:
^
TakeFX_GetCount
C: int TakeFX_GetCount(MediaItem_Take* take)
EEL2: int TakeFX_GetCount(MediaItem_Take take)
Lua: integer retval = reaper.TakeFX_GetCount(MediaItem_Take take)
Python: Int retval = RPR_TakeFX_GetCount(MediaItem_Take take)
Returnvalues:
Parameters:
^
TakeFX_GetEnabled
C: bool TakeFX_GetEnabled(MediaItem_Take* take, int fx)
EEL2: bool TakeFX_GetEnabled(MediaItem_Take take, int fx)
Lua: boolean retval = reaper.TakeFX_GetEnabled(MediaItem_Take take, integer fx)
Python: Boolean retval = RPR_TakeFX_GetEnabled(MediaItem_Take take, Int fx)
Returnvalues:
Parameters:
^
TakeFX_GetEnvelope
C: TrackEnvelope* TakeFX_GetEnvelope(MediaItem_Take* take, int fxindex, int parameterindex, bool create)
EEL2: TrackEnvelope TakeFX_GetEnvelope(MediaItem_Take take, int fxindex, int parameterindex, bool create)
Lua: TrackEnvelope env = reaper.TakeFX_GetEnvelope(MediaItem_Take take, integer fxindex, integer parameterindex, boolean create)
Python: TrackEnvelope env = RPR_TakeFX_GetEnvelope(MediaItem_Take take, Int fxindex, Int parameterindex, Boolean create)
Returns the FX parameter envelope. If the envelope does not exist and create=true, the envelope will be created.
Returnvalues:
Parameters:
^
TakeFX_GetFXGUID
C: GUID* TakeFX_GetFXGUID(MediaItem_Take* take, int fx)
EEL2: bool TakeFX_GetFXGUID(#retguid, MediaItem_Take take, int fx)
Lua: string GUID = reaper.TakeFX_GetFXGUID(MediaItem_Take take, integer fx)
Python: String GUID = RPR_TakeFX_GetFXGUID(MediaItem_Take take, Int fx)
Returnvalues:
Parameters:
^
TakeFX_GetFXName
C: bool TakeFX_GetFXName(MediaItem_Take* take, int fx, char* bufOut, int bufOut_sz)
EEL2: bool TakeFX_GetFXName(MediaItem_Take take, int fx, #buf)
Lua: boolean retval, string buf = reaper.TakeFX_GetFXName(MediaItem_Take take, integer fx)
Python: (Boolean retval, MediaItem_Take take, Int fx, String bufOut, Int bufOut_sz) = RPR_TakeFX_GetFXName(take, fx, bufOut, bufOut_sz)
Returnvalues:
Parameters:
^
TakeFX_GetFloatingWindow
C: HWND TakeFX_GetFloatingWindow(MediaItem_Take* take, int index)
EEL2: HWND TakeFX_GetFloatingWindow(MediaItem_Take take, int index)
Lua: HWND hwnd = reaper.TakeFX_GetFloatingWindow(MediaItem_Take take, integer index)
Python: HWND hwnd = RPR_TakeFX_GetFloatingWindow(MediaItem_Take take, Int index)
returns HWND of floating window for effect index, if any
Returnvalues:
Parameters:
^
TakeFX_GetFormattedParamValue
C: bool TakeFX_GetFormattedParamValue(MediaItem_Take* take, int fx, int param, char* buf, int buf_sz)
EEL2: bool TakeFX_GetFormattedParamValue(MediaItem_Take take, int fx, int param, #buf)
Lua: boolean retval, string buf = reaper.TakeFX_GetFormattedParamValue(MediaItem_Take take, integer fx, integer param, string buf)
Python: (Boolean retval, MediaItem_Take take, Int fx, Int param, String buf, Int buf_sz) = RPR_TakeFX_GetFormattedParamValue(take, fx, param, buf, buf_sz)
Returnvalues:
Parameters:
^
TakeFX_GetIOSize
C: int TakeFX_GetIOSize(MediaI