SetTrackEnvLeft pl

From CockosWiki

Jump to: navigation, search

SetTrackPanEnvLeft.pl

#
# SetTrackPanEnvLeft.pl
#
 
use strict;
use warnings;
 
use constant ACTION_NAME => "Set Track Pan Envelope to Left";
use constant CURR_PROJ => 0;
use constant FIRST_SEL => 0;
use constant FIRST_TAKE => 0;
use constant MSGBOX_JUST_OK =>0;
use constant TRUE => 1;
use constant FALSE => 0;
use constant MAXLEN => (16 * 1024);
 
my $new_PT = "PT 0.000000 1.000000 0 0 1";  # LEFT
# my $new_PT = "PT 0.000000 -1.000000 0 0 1"; # RIGHT
 
my $state = '';
my $len=0;
my $result;
my $before_panenv2;
my $panenv2;
my $after_panenv2;
 
my $tracks = RPR_CountSelectedTracks(CURR_PROJ);
 
unless($tracks > 0){
    RPR_MB("No Track Selected. Select a Track and try again.", ACTION_NAME, MSGBOX_JUST_OK);
    exit(0);
}
 
my $tr = RPR_GetSelectedTrack(CURR_PROJ, FIRST_SEL);
($result, $tr, $state, $len) = RPR_GetSetTrackState($tr, $state, MAXLEN);
 
unless($state =~ /<PANENV2/){
    RPR_MB("No Pan Envelope in Selected Track.", ACTION_NAME, MSGBOX_JUST_OK);
    exit(0);
}
 
$state =~ /<PANENV2/;       # find beginning of PANENV2
$before_panenv2 = $`;       # save before panenv2
$state = $';                # discard before panenv2
$state =~ />/;              # find end of PANENV2
$panenv2 = $`;              # store PANENV2
$after_panenv2 = $';        # and after it
 
$panenv2 =~ /PT /;          # find envelope point(s)
$panenv2 = $`;              # discard them
 
$state =
    $before_panenv2 .
    "<PANENV2\n" .
    $panenv2 .
    $new_PT .
    "\n>" .
    $after_panenv2;
 
($result, $tr, $state, $len) = RPR_GetSetTrackState($tr, $state, MAXLEN);