RPR AddTakeToMediaItem
From CockosWiki
Klankschap (Talk | contribs) 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=== | ||
- | < | + | <source lang=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); | ||
+ | |||
+ | </source> | ||
===Python=== | ===Python=== | ||
- | < | + | <source lang=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 ) | ||
+ | |||
+ | </source> | ||
+ | |||
==See Also== | ==See Also== | ||
- | {{ | + | {{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