Quote:
Originally Posted by Argitoth
[~~~~] = media item
I just need this:
[~~~~][~~~~][~~~~][~~~~][~~~~]
to this:
[~~~~]
_______[~~~~]
______________[~~~~]
_____________________[~~~~]
____________________________[~~~~]
but do not create new tracks like Xenakios "explode items"
Edit: Xenakios "spread items over tracks tracks..." works except that you have to type in a number... I'll use that for now, but would much rather have a hotkey without a menu popping up.
|
Maybe this works. It doesn't create new tracks:
Code:
from reaper_python import *
from contextlib import contextmanager
@contextmanager
def undoable(message):
RPR_Undo_BeginBlock2(0)
try:
yield
finally:
RPR_Undo_EndBlock2(0, message, -1)
with undoable("Spread selected items over tracks"):
def msg(m):
RPR_ShowConsoleMsg(m)
selItemIdL = []
# get first selected item and track index
firstSelItem = RPR_GetSelectedMediaItem(0, 0)
track = RPR_GetMediaItem_Track(firstSelItem)
trackIndex = int(RPR_GetMediaTrackInfo_Value(track, "IP_TRACKNUMBER"))
trackItemCount = RPR_CountTrackMediaItems(track)
# make list from selected items in track
for i in range(trackItemCount):
itemId = RPR_GetTrackMediaItem(track, i)
if int(RPR_GetMediaItemInfo_Value(itemId, "B_UISEL")):
selItemIdL.append(itemId)
# check if there are enough tracks for items
needed = int(RPR_CountTracks(0) - trackIndex + 1 - len(selItemIdL))
if needed < 0:
msg("Not enough tracks for items. Add " + str(abs(needed)) + " track(s)")
else:
# move each item to its own track
for j, id in enumerate(selItemIdL):
destTrack = RPR_CSurf_TrackFromID(trackIndex + j, 0)
RPR_MoveMediaItemToTrack(id, destTrack)
RPR_UpdateArrange()