[RWP] Enhancing ReaAccess

Indigo 33indigo at charter.net
Sat May 18 18:50:33 EDT 2013


This is the ReaScript Quick Start, which has a few more details about 
how to write a script.
Note that only Python is now used, Pearl is not used any longer, it says 
elsewhere.
To get all the links within this, click on the link at the bottom.
Indi
Snip:
ReaScript
Reaper Documentation
Contents [hide]
1 Introduction
2 Requirements
3 Quick Start
4 Running ReaScripts
5 Calling REAPER Actions
6 ReaScript API
7 Language specific documentation and examples
Introduction
ReaScript is a feature that allows you to run Perl or Python scripts 
within REAPER. From within the script, you can call any REAPER action, 
and also call back into most of the REAPER Extensions SDK functions. 
ReaScript can be used to create anything from advanced macros to 
full-featured REAPER Extensions.
Perl and Python are freely available and widely used scripting 
languages; details at the sites below.
?http://www.python.org/
?http://www.perl.org/
Requirements
To use ReaScript, you must have either Python or Perl installed on your 
computer. Both are freely available in several free distributions. OSX 
comes with both Python and Perl already installed, although older OSX 
installations may not have the most recent versions of Python or Perl.
Installing either Python or Perl is usually a simple, straightforward 
process. Both are open-source projects, so the source code is available 
for anyone to build, but most people will simply run install programn 
just like installing any other program (such as REAPER).
The company ActiveState make free versions of both Perl & Python 
available on their web site (http://www.activestate.com) and whilst 
they're not the only source of these two utilities they are very good.
Python: ReaScript requires Python 3.1 (not 3.2).
?http://www.python.org/download/ (official Python advice)
?https://www.activestate.com/activepython/downloads/
?http://downloads.activestate.com/ActivePython/releases/ (archive of 
older versions)
NOTE: x64 Reaper needs x64 Python, x86 Reaper needs x86 Python.
Perl: ReaScript requires Perl 5.10, and a standard Perl module called FFI.
?http://www.strawberryperl.com/ A well thought of Perl distribution
?http://www.activestate.com/ Recommended Mike 17:27, 18 December 2009 (UTC)
If the FFI module is not included with your version of Perl (for some 
builds it is part of the ActiveState distribution, but not always for 
some reason) then it's also in a .zip file here for Win32, and here for 
OSX. The two files in the .zip file should both be placed in the 
Perl/lib directory of your Perl installation.
Quick Start
A Quick Start ReaPerl for ReaPerl.
A Quick Start ReaPython for ReaPython.
Running ReaScripts
To run a ReaScript, first you will need to either write a script, or 
copy a script from another user. Scripts can be placed anywhere on your 
disk, but it's convenient to keep them all in the REAPER/Scripts 
application data directory.
To write a new script, show the Actions list (bound to the ? key by 
default), and click ReaScript: Load. You will be prompted for the 
location to save your new script, the default location is recommended. 
Name your script something like test.py or test.pl, then click 
ReaScript: Edit. A text editor will open.
The simplest possible ReaScript in either Perl or Python is:
RPR_APITest();
In Python, of course, the semicolon is optional.
Save the ReaScript, and then click Run. You should see a window that 
says "Test OK". Common reasons for the script failing are:
    * Python or Perl not installed
    * Wrong version of Python or Perl installed
    * Multiple versions of Python or Perl installed, and the system 
picks up the wrong version
    * Syntax error (typo, missing newline, incorrect indentation in Python)
    * The python parser requires a blank new line at the end of any script
You can treat a ReaScript just like any custom action: bind it to a key 
shortcut, MIDI controller, or toolbar button. ReaScripts can also be run 
a la carte, via the actions "ReaScript: run..." and "ReaScript: run last 
script".
Calling REAPER Actions
You can call any REAPER action from ReaScript by using the API function.
RPR_Main_OnCommand(actionnumber, 0)
 From version 3.14 there is also a version for controlling the MIDI editor.
RPR_MIDIEditor_OnCommand(MIDIEditor,actionnumber)
With MIDIEditor_OnCommand() you need to specify which MIDI editor you 
need to control as you can have more than one open at once. Simple 
enough though, have a look at the documentation.
Find the action number for a given action by opening the Actions list, 
scroll the window right to show the action numbers. For example, from 
ReaScript you can call the REAPER action "Item: Split item under mouse 
cursor", like this:
RPR_Main_OnCommand(40746, 0)
If you would like to call either custom actions or extension actions 
(e.g. SWS extension), you'll notice that instead of command numbers in 
the Reaper dialog there are action strings. These are necessary because 
of the dynamic nature of these types of actions. To run these actions 
from your script, a call to NamedCommandLookup is necessary, as follows:
RPR_Main_OnCommand(RPR_NamedCommandLookup("_ACTIONSTRING"), 0)
These are the API functions you will need (to start with) if you are 
planning to use ReaScript as an advanced macro language.
ReaScript API
ReaScripts also have access to most of the REAPER Extensions SDK 
functions. There is a list of all the API functions available to 
ReaScripts available whilst running, run the REAPER action "ReaScript: 
open ReaScript help (html)".
The Wiki pages for each API Function are here: ReaScript API Functions
The help page will explain the basics of how to call API functions, 
which may require idiosyncratic syntax, because API functions can return 
information in the parameter list as well as the function return value. 
For convenience, there are also basic API functions for getting 
information from, and showing information to, the user.
NOTE: API function names are commonly referred to without specifying 
RPR_ -- but you have to specify RPR_ in your scripts
For more help on ReaScript, to report bugs, to request additional API 
functions, to share ReaScripts, or just to discuss the possibilities, 
please use the REAPER Developer Forum. 
http://forum.cockos.com/forumdisplay.php?f=35
Language specific documentation and examples
?ReaPerl
?ReaPython
Reaper Documentation
End Snip.
http://wiki.cockos.com/wiki/index.php/ReaScript#Quick_Start




More information about the Rwp mailing list