RPR GetSetItemState

From CockosWiki

Revision as of 10:21, 18 November 2009 by MikeLacey (Talk | contribs)
Jump to: navigation, search

Main Page > REAPER Documentation > ReaScript > ReaScript API, Functions > RPR GetSetItemState
Main Page > REAPER Documentation > REAPER API > REAPER API Functions > RPR GetSetItemState

Contents

GetSetItemState()

bool GetSetItemState(MediaItem* item, char* str, int maxlen)

This function gets or sets the state of a media item as an xml-ish rpp chunk.

When calling the function, if you set str="" it will return the current state of the item in the corresponding return array/list element. the returned state string is limited to maxlen characters, though there is an upper limit (currently 16K) on maxlen. supply str as an xml/rpp string to set the object state. returns true on success.

GetSetItemState() can be used to examine the state of the item - the item's properties; it returns a string in its return array. Below is the item state of a short MIDI item.

<ITEM
POSITION 12.00000000000000
SNAPOFFS 0.00000000000000
LENGTH 8.81585503963759
LOOP 1
ALLTAKES 0
SEL 1
FADEIN 1 0.000000 0.000000
FADEOUT 1 0.000000 0.000000
MUTE 0
IGUID {967EE770-4144-472A-89D6-B72BB910A916}
NAME "lalala untitled MIDI item"
VOLPAN 1.000000 0.000000 1.000000 -1.000000
SOFFS 0.00000000000000 0.00000000000000
PLAYRATE 1.00000000000000 1 0.00000000000000 -65536
CHANMODE 0
GUID {9C93A652-09A2-4A46-9E1B-EF83EB7CED29}
<SOURCE MIDI
HASDATA 1 960 QN
e 300 90 2b 60
e 60 80 2b 00
E 120 90 27 60
E 60 80 27 00
E 1200 90 2c 60
E 60 80 2c 00
E 60 90 29 60
E 60 80 29 00
E 360 90 2a 60
E 60 80 2a 00
E 120 90 26 60
E 60 80 26 00
E 540 90 2a 60
E 60 80 2a 00
E 120 90 2e 60
E 60 80 2e 00
E 540 b0 7b 00
GUID {9DAB52C8-6257-4A4E-9E60-323514C0DB9B}
IGNTEMPO 0 120.00000000 4 4
VELLANE 128 97 0
BANKPROGRAMFILE "C:\Program Files\REAPER/Data/GM.reabank"
CFGEDITVIEW 3787.833051 0.178906 0 48 0 0 0
CFGEDIT 1 1 0 1 1 16 1 1 1 1 1 0.06250000 -4 -4 1404 1001 0 2 0 0 0.00000000 0 0
EVTFILTER 0 -1 -1 -1 -1 0 1
>
>

You can then use the same function to set one or more properties of that item. This is shown in the Perl example below.

Parameters

MediaItem* item,   A pointer to a valid MediaItem, as returned by GetSelectedMediaItem()
char* str,         str="" to get the state returned in str, str as an xml/rpp string to set the object state.
int maxlen,        maximum number of characters that will be returned, limited to 16k

Returns

An Array/List
 bool,             true on success, false on failure
 MediaItem* item,  unchanged
 char* str,        the current state of the item, possibly after a Set operation
 int maxlen,       unchanged

Examples

C++


Perl

#
# GetSetItemState.pl
#
# "Get" and "Set" example
#

use strict;
use warnings;

use constant CURR_PROJ => 0;

my ($bool, $it, $chunk, $maxlen);

my $length = -1;
my $result = "fail";

# Get the first selected item in the current project
$it = RPR_GetSelectedMediaItem(CURR_PROJ, 0);

# set-up for call to GetSetItemState
$chunk="";     # Get, not Set
$maxlen=2048;  # max num of chars to return

# Get the ItemState
($bool, $it, $chunk, $maxlen) = RPR_GetSetItemState($it, $chunk, $maxlen);
$result = "pass" if $bool;
RPR_ShowConsoleMsg("GetSetItemState reports $result\n$chunk\n");

RPR_ShowConsoleMsg("LENGTH = $length\n");
# Pick out the LENGTH property
$chunk =~ /LENGTH\s+(.*)\n/;
$length = $1;
# Display the current LENGTH property
RPR_ShowConsoleMsg("LENGTH = $length\n");

# Add one second to the LENGTH property
$length++;
$chunk =~ s/LENGTH.*\n/LENGTH $length\n/;

# Set the ItemState
$result = "fail";
($bool, $it, $chunk, $maxlen) = RPR_GetSetItemState($it, $chunk, $maxlen);
$result = "pass" if $bool;
RPR_ShowConsoleMsg("AFTER SET: GetSetItemState reports $result\n$chunk\n");

Python


See Also

Media Item: AddMediaItemToTrack, CountMediaItems, CountSelectedMediaItems, CountTrackMediaItems, DeleteTrackMediaItem, GetMediaItemInfo_Value, GetMediaItemNumTakes, GetMediaItemTake, GetMediaItemTake_Item, GetMediaItemTake_Source, GetMediaItemTake_Track, GetMediaItemTakeInfo_Value, GetSelectedMediaItem, GetSetMediaItemTakeInfo_String, GetTrackMediaItem, GetTrackNumMediaItems, MoveMediaItemToTrack, SetMediaItemInfo_Value, SetMediaItemTakeInfo_Value, SplitMediaItem

Stuff

Main Page > REAPER Documentation > ReaScript > ReaScript API, Functions > RPR GetSetItemState
Main Page > REAPER Documentation > REAPER API > REAPER API Functions > RPR GetSetItemState