RPR AddTakeToMediaItem
From CockosWiki
Klankschap (Talk | contribs) m (→Python) |
|||
(4 intermediate revisions not shown) | |||
Line 11: | Line 11: | ||
==Examples== | ==Examples== | ||
===C++=== | ===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=== | ||
- | < | + | <source lang=perl> |
# | # | ||
# AddTakeToMediaItem.pl | # AddTakeToMediaItem.pl | ||
Line 37: | Line 79: | ||
RPR_GetSetMediaItemTakeInfo_String(take, "P_NAME", $name, $setnewvalue); | RPR_GetSetMediaItemTakeInfo_String(take, "P_NAME", $name, $setnewvalue); | ||
- | </ | + | </source> |
===Python=== | ===Python=== | ||
- | < | + | <source lang=python> |
# | # | ||
# AddTakeToMediaItem.py | # AddTakeToMediaItem.py | ||
# | # | ||
- | CURR_PROJ = 0 | + | CURR_PROJ = 0 |
+ | |||
# Get the first selected Media Item in the current project | # Get the first selected Media Item in the current project | ||
- | item = RPR_GetSelectedMediaItem(CURR_PROJ,0) | + | item = RPR_GetSelectedMediaItem( CURR_PROJ, 0 ) |
# Add take to the media item | # Add take to the media item | ||
- | take = RPR_AddTakeToMediaItem(item) | + | take = RPR_AddTakeToMediaItem( item ) |
# name the take - this will actualize the list of takes visually | # 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 | # if the take is not named, the media item will have to be updated | ||
- | # with RPR_UpdateItemInProject(MediaItem) | + | # with RPR_UpdateItemInProject( MediaItem ) |
- | name = "new take" | + | name = "new take" |
- | setnewvalue = 1 | + | setnewvalue = 1 # 1 = set new value, 0 = retrieve current value |
- | RPR_GetSetMediaItemTakeInfo_String(take, "P_NAME", name, setnewvalue) | + | RPR_GetSetMediaItemTakeInfo_String( take, "P_NAME", name, setnewvalue ) |
- | </ | + | </source> |
==See Also== | ==See Also== | ||
Line 72: | 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