Здравствуйте, друзья Reaper!
В Reaper влюбился с первого взгляда!
Программа удивительной гибкости и не затуманивает мозг излишествами,
а по функциональности нисколько не уступает другим.
Обычно работаю в двух программах:
Sibelius - для написания оркестровых партитур,
и, непосредственно, Reaper - для озвучивания этих партитур.
Во многом работу в этой удивительной программе облегчают экшены.
И теперь огромная к вам просьба о помощи.
Есть замечательный lua-скрипт переименования выделенных айтемов по имени треков:
Set selected items active takes name to track name
(Благодарю его создателя Mordi).
Но хотелось бы немного усовершенствовать этот код, а именно:
Добавить к именам позицию айтемов в beats (например, такой вид: 4.1.75_Fagotto II ).
В секундах это не сложно - примерно так:
it_pos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
Хотя при большом количестве тактов уже необходимо как-то переводить секунды в минуты.
А вот, с beats у меня возникли затруднения.
Толку с TimeMap2_timeToBeats не добился.
Простите, я не виртуоз в программировании. И все мои скромные познания сводятся к Visual Basic для Excel и Word.
Язык ReaScript (Lua) только начал изучать.
Возможно ли программно извлечь из TextBox "Position" окна "Media Item Properties" информацию,
чтобы использовать ее в имени айтема, дополнив код скрипта?
Оговорюсь, что имя с секундами, поскольку работаю и в "тактовом" Sibelius, несколько запутывает.
Привожу сам код скрипта:
-- Made by Mordi, Dec 2016
-- Begin undo-block
reaper.Undo_BeginBlock2(0)
-- Print function
function print(str)
reaper.ShowConsoleMsg(tostring(str) .. "\n")
end
-- Loop through all selected items
for i = 0, reaper.CountSelectedMediaItems()-1 do
-- Get item
item = reaper.GetSelectedMediaItem(0, i)
-- Get active take of item
active_take = reaper.GetActiveTake(item)
-- Get track
track = reaper.GetMediaItem_Track(item)
-- Get track name
retval, track_name = reaper.GetSetMediaTrackInfo_String(track, 'P_NAME', "", false)
-- Apply new name
reaper.GetSetMediaItemTakeInfo_String(active_take, 'P_NAME', track_name, true)
end
-- End undo-block
reaper.Undo_EndBlock2(0,"Script: Set selected items active takes name to track name",-1)
Благодарю!
В Reaper влюбился с первого взгляда!
Программа удивительной гибкости и не затуманивает мозг излишествами,
а по функциональности нисколько не уступает другим.
Обычно работаю в двух программах:
Sibelius - для написания оркестровых партитур,
и, непосредственно, Reaper - для озвучивания этих партитур.
Во многом работу в этой удивительной программе облегчают экшены.
И теперь огромная к вам просьба о помощи.
Есть замечательный lua-скрипт переименования выделенных айтемов по имени треков:
Set selected items active takes name to track name
(Благодарю его создателя Mordi).
Но хотелось бы немного усовершенствовать этот код, а именно:
Добавить к именам позицию айтемов в beats (например, такой вид: 4.1.75_Fagotto II ).
В секундах это не сложно - примерно так:
it_pos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
Хотя при большом количестве тактов уже необходимо как-то переводить секунды в минуты.
А вот, с beats у меня возникли затруднения.
Толку с TimeMap2_timeToBeats не добился.
Простите, я не виртуоз в программировании. И все мои скромные познания сводятся к Visual Basic для Excel и Word.
Язык ReaScript (Lua) только начал изучать.
Возможно ли программно извлечь из TextBox "Position" окна "Media Item Properties" информацию,
чтобы использовать ее в имени айтема, дополнив код скрипта?
Оговорюсь, что имя с секундами, поскольку работаю и в "тактовом" Sibelius, несколько запутывает.
Привожу сам код скрипта:
-- Made by Mordi, Dec 2016
-- Begin undo-block
reaper.Undo_BeginBlock2(0)
-- Print function
function print(str)
reaper.ShowConsoleMsg(tostring(str) .. "\n")
end
-- Loop through all selected items
for i = 0, reaper.CountSelectedMediaItems()-1 do
-- Get item
item = reaper.GetSelectedMediaItem(0, i)
-- Get active take of item
active_take = reaper.GetActiveTake(item)
-- Get track
track = reaper.GetMediaItem_Track(item)
-- Get track name
retval, track_name = reaper.GetSetMediaTrackInfo_String(track, 'P_NAME', "", false)
-- Apply new name
reaper.GetSetMediaItemTakeInfo_String(active_take, 'P_NAME', track_name, true)
end
-- End undo-block
reaper.Undo_EndBlock2(0,"Script: Set selected items active takes name to track name",-1)
Благодарю!