RPR AddTakeToMediaItem

From CockosWiki

(Difference between revisions)
Jump to: navigation, search
m (Python)
 
(11 intermediate revisions not shown)
Line 3: Line 3:
'''MediaItem_Take* AddTakeToMediaItem(MediaItem* item)'''
'''MediaItem_Take* AddTakeToMediaItem(MediaItem* item)'''
-
Creates a new take in an item and returns an opaque pointer to it.
+
Creates a new take in an item and returns an [[Glossary#Opaque pointer|opaque pointer]] to it.
 +
 
==Parameters==
==Parameters==
  MediaItem* item
  MediaItem* item
Line 9: Line 10:
  MediaItem_Take*
  MediaItem_Take*
==Examples==
==Examples==
 +
===C++===
 +
<source lang=cpp highlight="13">
 +
void DoInsRndFileEx(bool RndLen,bool RndOffset,bool UseTimeSel)
 +
{
 +
if (g_filenames->GetSize()>0)
 +
{
 +
int filenameindex=rand() % g_filenames->GetSize();
 +
 +
t_vect_of_Reaper_tracks TheTracks;
 +
XenGetProjectTracks(TheTracks,true);
 +
if (TheTracks.size()>0)
 +
{
 +
PCM_source *NewPCM=PCM_Source_CreateFromFile(g_filenames->Get(filenameindex));
 +
MediaItem *NewItem=AddMediaItemToTrack(TheTracks[0]);
 +
MediaItem_Take *NewTake=AddTakeToMediaItem(NewItem);
 +
double TimeSelStart=0.0;
 +
double TimeSelEnd=NewPCM->GetLength();
 +
GetSet_LoopTimeRange(false,false,&TimeSelStart,&TimeSelEnd,false);
 +
double ItemPos=TimeSelStart;
 +
double ItemLen=NewPCM->GetLength();
 +
double MediaOffset=0.0;
 +
if (RndOffset)
 +
{
 +
MediaOffset=(NewPCM->GetLength()/RAND_MAX)*rand();
 +
ItemLen-=MediaOffset;
 +
}
 +
if (RndLen) ItemLen=((NewPCM->GetLength()-MediaOffset)/RAND_MAX)*rand();
 +
if (UseTimeSel) ItemLen=TimeSelEnd-TimeSelStart;
 +
if (!UseTimeSel) ItemPos=GetCursorPosition();
 +
GetSetMediaItemTakeInfo(NewTake,"P_SOURCE",NewPCM);
 +
GetSetMediaItemTakeInfo(NewTake,"D_STARTOFFS",&MediaOffset);
 +
 +
GetSetMediaItemInfo(NewItem,"D_POSITION",&ItemPos);
 +
GetSetMediaItemInfo(NewItem,"D_LENGTH",&ItemLen);
 +
Main_OnCommand(40047,0); // build any missing peaks
 +
SetEditCurPos(ItemPos+ItemLen,false,false);
 +
Undo_OnStateChangeEx("Insert random file (Extended)",4,-1);
 +
 +
UpdateTimeline();
 +
}
 +
}
 +
}
 +
 +
</source>
 +
===Perl===
===Perl===
-
<pre>
+
<source lang=perl>
-
</pre>
+
#
 +
# AddTakeToMediaItem.pl
 +
#
 +
 
 +
use strict;
 +
use warnings;
 +
 
 +
use constant CURR_PROJ => 0;
 +
 
 +
# Get the first selected Media Item in the current project
 +
my $item = RPR_GetSelectedMediaItem(CURR_PROJ,0);
 +
 
 +
# Add take to the media item
 +
my $take = RPR_AddTakeToMediaItem($item);
 +
 
 +
# name the take - this will actualize the list of takes visually
 +
# if the take is not named, the media item will have to be updated
 +
# with RPR_UpdateItemInProject(MediaItem);
 +
my $name = "new take";
 +
my $setnewvalue = 1; # 1 = set new value, 0 = retrieve current value
 +
RPR_GetSetMediaItemTakeInfo_String(take, "P_NAME", $name, $setnewvalue);
 +
 
 +
</source>
===Python===
===Python===
-
<pre>
+
<source lang=python>
-
</pre>
+
#
 +
# AddTakeToMediaItem.py
 +
#
 +
 
 +
CURR_PROJ = 0
 +
 
 +
# Get the first selected Media Item in the current project
 +
item = RPR_GetSelectedMediaItem( CURR_PROJ, 0 )
 +
 
 +
# Add take to the media item
 +
take = RPR_AddTakeToMediaItem( item )
 +
 
 +
# name the take - this will actualize the list of takes visually
 +
# if the take is not named, the media item will have to be updated
 +
# with RPR_UpdateItemInProject( MediaItem )
 +
name = "new take"
 +
setnewvalue = 1 # 1 = set new value, 0 = retrieve current value
 +
RPR_GetSetMediaItemTakeInfo_String( take, "P_NAME", name, setnewvalue )
 +
 
 +
</source>
 +
 
==See Also==
==See Also==
-
{{SeeAlsoThemeFunctions}}
+
{{SeeAlso_item}}
 +
 
 +
{{SeeAlso_take}}
 +
 
 +
''(Section automatically generated, edits may be overwritten.)''
==Stuff==
==Stuff==
Line 23: Line 115:
[[Category:ReaScript]]
[[Category:ReaScript]]
[[Category:Perl]]
[[Category:Perl]]
 +
[[Category:ReaPerl]]
 +
[[Category:ReaPython]]
[[Category:Python]]
[[Category:Python]]

Latest revision as of 05:55, 9 December 2011

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

Contents

AddTakeToMediaItem()

MediaItem_Take* AddTakeToMediaItem(MediaItem* item)

Creates a new take in an item and returns an opaque pointer to it.

Parameters

MediaItem* item

Returns

MediaItem_Take*

Examples

C++

void DoInsRndFileEx(bool RndLen,bool RndOffset,bool UseTimeSel)
{
	if (g_filenames->GetSize()>0)
	{
		int filenameindex=rand() % g_filenames->GetSize();
 
		t_vect_of_Reaper_tracks TheTracks;
		XenGetProjectTracks(TheTracks,true);
		if (TheTracks.size()>0)
		{
		PCM_source *NewPCM=PCM_Source_CreateFromFile(g_filenames->Get(filenameindex));
		MediaItem *NewItem=AddMediaItemToTrack(TheTracks[0]);
		MediaItem_Take *NewTake=AddTakeToMediaItem(NewItem);		double TimeSelStart=0.0;
		double TimeSelEnd=NewPCM->GetLength();
		GetSet_LoopTimeRange(false,false,&TimeSelStart,&TimeSelEnd,false);
		double ItemPos=TimeSelStart;
		double ItemLen=NewPCM->GetLength();
		double MediaOffset=0.0;
		if (RndOffset) 
		{
			MediaOffset=(NewPCM->GetLength()/RAND_MAX)*rand();
			ItemLen-=MediaOffset;
		}
		if (RndLen) ItemLen=((NewPCM->GetLength()-MediaOffset)/RAND_MAX)*rand();
		if (UseTimeSel) ItemLen=TimeSelEnd-TimeSelStart;
		if (!UseTimeSel) ItemPos=GetCursorPosition();
		GetSetMediaItemTakeInfo(NewTake,"P_SOURCE",NewPCM);
		GetSetMediaItemTakeInfo(NewTake,"D_STARTOFFS",&MediaOffset);
 
		GetSetMediaItemInfo(NewItem,"D_POSITION",&ItemPos);
		GetSetMediaItemInfo(NewItem,"D_LENGTH",&ItemLen);
		Main_OnCommand(40047,0); // build any missing peaks
		SetEditCurPos(ItemPos+ItemLen,false,false);
		Undo_OnStateChangeEx("Insert random file (Extended)",4,-1);
 
		UpdateTimeline();
		}
	}	
}

Perl

#
# AddTakeToMediaItem.pl
#
 
use strict;
use warnings;
 
use constant CURR_PROJ => 0;
 
# Get the first selected Media Item in the current project
my $item = RPR_GetSelectedMediaItem(CURR_PROJ,0);
 
# Add take to the media item
my $take = RPR_AddTakeToMediaItem($item);
 
# name the take - this will actualize the list of takes visually
# if the take is not named, the media item will have to be updated
# with RPR_UpdateItemInProject(MediaItem);
my $name = "new take";
my $setnewvalue = 1; # 1 = set new value, 0 = retrieve current value
RPR_GetSetMediaItemTakeInfo_String(take, "P_NAME", $name, $setnewvalue);

Python

#
# AddTakeToMediaItem.py
#
 
CURR_PROJ = 0
 
# Get the first selected Media Item in the current project
item = RPR_GetSelectedMediaItem( CURR_PROJ, 0 )
 
# Add take to the media item
take = RPR_AddTakeToMediaItem( item )
 
# name the take - this will actualize the list of takes visually
# if the take is not named, the media item will have to be updated
# with RPR_UpdateItemInProject( MediaItem )
name = "new take"
setnewvalue = 1 # 1 = set new value, 0 = retrieve current value
RPR_GetSetMediaItemTakeInfo_String( take, "P_NAME", name, setnewvalue )

See Also

item: AddMediaItemToTrack, AddTakeToMediaItem, GetTrackMediaItem, GetTrackNumMediaItems, CountMediaItems, CountSelectedMediaItems, GetItemProjectContext, SetMediaItemInfo_Value, CountTrackMediaItems, SetMediaItemTakeInfo_Value, GetMediaItem, GetMediaItem_Track, GetMediaItemInfo_Value, GetMediaItemNumTakes, GetMediaItemTake, GetMediaItemTake_Item, GetMediaItemTake_Source, GetMediaItemTake_Track, GetMediaItemTakeInfo_Value, SplitMediaItem, MoveMediaItemToTrack, GetSelectedMediaItem, DeleteTrackMediaItem, GetSetItemState, GetSetMediaItemTakeInfo_String, Undo_OnStateChange_Item, UpdateItemInProject,

take: GetActiveTake, GetMediaItemNumTakes, GetMediaItemTake, GetMediaItemTakeInfo_Value, GetMediaItemTake_Item, GetMediaItemTake_Source, GetMediaItemTake_Track, GetSetMediaItemTakeInfo_String, GetTake, GetTakeEnvelopeByName, SetMediaItemTakeInfo_Value, AddTakeToMediaItem, CountTakes,

(Section automatically generated, edits may be overwritten.)

Stuff

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

Personal tools