--[[ * ВАЖНО: ВАЖНО: ВАЖНО: * * (сохроняем track template с настроенным ревером,с именем '01...'(например: 01PreReverb) (01-обязательно)) * эффектов на сохранённом track template может быть сколько угодно на ваш вкус * ----------------- * Длина хвоста ревербиратора настраивается в ревербираторе (в трек темплейте с именем 01...!) * ----------------- * Длина айтама настраивается в (Options/Preferences/Media——Tail length when using Apply FX to item (???ms) * выстовляем сколько мс будет хвост и такое же значения ставим в первой строке local dlina = (???ms )-- ms ) * http://hostingkartinok.com/show-image.php?id=9a4fd3f7b71c1d0dcc1de4cb0583fef7 * -------------------------------------- * Archie * FX * Prereverb * ПреРеверб (Предварительная реверберация) --===========================================]] local dlina = (1.875)-- ms -------------------------- ----------------------------------------------------------------------------- local function No_Undo()end; local function no_undo()reaper.defer(No_Undo)end ----------------------------------------------------------------------------- local OnCom = reaper.Main_OnCommand local sws = reaper.NamedCommandLookup --=================================== local Count_sel_item = reaper.CountSelectedMediaItems( 0 ) if Count_sel_item == 0 then no_undo() return end local start_time, end_time = reaper.GetSet_LoopTimeRange2( 0, 0, 0, 0, 0, 0 ) if start_time == end_time then no_undo() return end local time_sel_item for i = 1, Count_sel_item do local Sel_item = reaper.GetSelectedMediaItem( 0, i - 1 ) local item_start = reaper.GetMediaItemInfo_Value(Sel_item, 'D_POSITION') local item_lengt = reaper.GetMediaItemInfo_Value(Sel_item, 'D_LENGTH') local item_end = item_start + item_lengt if item_start < end_time and item_end > start_time then time_sel_item = 1 break end end if not time_sel_item then no_undo() return end --================================================ local wind = reaper.MB( [=[ Run pre-reverb - OK Сancel pre-reverb - Отмена ]=],'Prereverb', 1) if wind ~= 1 then no_undo() return end reaper.Undo_BeginBlock() reaper.PreventUIRefresh(1) local track = reaper.GetTrack(0, 0) reaper.SetOnlyTrackSelected( track ) reaper.SetTrackSelected( track, 0 ) for i = Count_sel_item - 1, 0, - 1 do local Sel_item = reaper.GetSelectedMediaItem( 0, i ) local item_start = reaper.GetMediaItemInfo_Value(Sel_item, 'D_POSITION') local item_lengt = reaper.GetMediaItemInfo_Value(Sel_item, 'D_LENGTH') if item_start > end_time or item_start + item_lengt < start_time then reaper.SetMediaItemInfo_Value( Sel_item, 'B_UISEL', 0 ) end local Sel_item = reaper.GetSelectedMediaItem( 0, i ) if Sel_item then local it_track = reaper.GetMediaItem_Track( Sel_item ) local mute = reaper.GetMediaTrackInfo_Value( it_track, 'B_MUTE' ) if mute == 0 then reaper.SetTrackSelected( it_track, 1 ) else reaper.SetMediaItemInfo_Value( Sel_item, 'B_UISEL', 0 ) end end end ---=========================== local item = {} local mute = {} local function SaveMuteStateAllItems() for i = 1, reaper.CountMediaItems( 0 ) do item[i] = reaper.GetMediaItem(0, i - 1) mute['mute'..i] = reaper.GetMediaItemInfo_Value( item[i], 'B_MUTE') end end --- local function RestoreMuteStateAllItems() for i = 1, #item do reaper.SetMediaItemInfo_Value(item[i], 'B_MUTE', mute['mute'..i]) end end ---========================== SaveMuteStateAllItems() local count_item = reaper.CountMediaItems( 0 ) for i = 1, count_item do local item = reaper.GetMediaItem(0, i - 1) local sel_item = reaper.GetMediaItemInfo_Value( item, 'B_UISEL') if sel_item == 0 then reaper.SetMediaItemInfo_Value(item, 'B_MUTE', 1) end end ---=============================== OnCom(41716, 0) --Render selected area of tracks to stereo post-fader stem tracks (and mute originals) RestoreMuteStateAllItems() reaper.SelectAllMediaItems( 0, 0 ) local Count_sel_track = reaper.CountSelectedTracks( 0 ) for i = Count_sel_track - 1, 0, - 1 do local Sel_track = reaper.GetSelectedTrack(0, i) local nimb = reaper.GetMediaTrackInfo_Value( Sel_track, 'IP_TRACKNUMBER' ) local track = reaper.GetTrack(0, nimb) reaper.SetMediaTrackInfo_Value( track, 'B_MUTE', 0 ) local count_tr_item = reaper.CountTrackMediaItems( Sel_track ) for i = 1, count_tr_item do local item = reaper.GetTrackMediaItem( Sel_track, i - 1 ) reaper.SetMediaItemSelected( item, 1 ) end end ---------------- local first_sel_track = reaper.GetSelectedTrack(0, 0) local nimb = reaper.GetMediaTrackInfo_Value( first_sel_track, 'IP_TRACKNUMBER' ) local count_sel_item = reaper.CountSelectedMediaItems( 0 ) for i = 1, count_sel_item do local Sel_item = reaper.GetSelectedMediaItem(0, i - 1) reaper.MoveMediaItemToTrack( Sel_item, first_sel_track ) end OnCom(40362, 0)--Glue items, ignoring time selection reaper.SetMediaTrackInfo_Value( first_sel_track, 'I_SELECTED', 0 ) local count_sel_track = reaper.CountSelectedTracks( 0 ) for i = count_sel_track - 1, 0, - 1 do local del_track = reaper.GetSelectedTrack(0, i) reaper.DeleteTrack( del_track ) end reaper.SetMediaTrackInfo_Value( first_sel_track, 'I_SELECTED', 1 ) --============================================ OnCom(sws("_XENAKIOS_LOADTRACKTEMPLATE01"), 0) -- Load track template 01 --(нужно сохранить track template с настроенным ревером,с именем 01 ...) local track = reaper.GetTrack(0, nimb) local count_tr_item = reaper.CountTrackMediaItems( first_sel_track ) for i = count_tr_item - 1, 0, - 1 do local item = reaper.GetTrackMediaItem( first_sel_track, i ) reaper.MoveMediaItemToTrack( item, track ) reaper.SetMediaItemSelected( item, 1 ) end reaper.DeleteTrack( first_sel_track ) reaper.SetOnlyTrackSelected( track ) --================================== OnCom(41051, 0)--Item properties: Toggle take reverse OnCom(40209, 0)--Item: Apply track/take FX to items OnCom(40131, 0)--Take: Crop to active take in items OnCom(41051, 0)--Item properties: Toggle take reverse reaper.PreventUIRefresh(-1) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 3.5173, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 3.2823, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 3.0483, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 2.8133, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 2.5793, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 2.3443, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 2.1103, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 1.8753, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 1.6413, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 1.4063, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 1.1730, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 0.9390, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 0.7040, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 0.4690, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 0.2350, false, 0) reaper.ApplyNudge(0, 1, 1, 0, start_time - dlina + 0.0000, false, 0) local fade_out = end_time - start_time local count_sel_item = reaper.CountSelectedMediaItems( 0 ) for i = count_sel_item - 1, 0, - 1 do local item = reaper.GetSelectedMediaItem( 0, i ) reaper.SetMediaItemInfo_Value( item, 'D_FADEOUTLEN', fade_out ) reaper.SetMediaItemInfo_Value( item, 'C_FADEOUTSHAPE', 4 ) reaper.SetMediaItemInfo_Value( item, 'D_FADEINLEN', 0.05 ) end --- local item = reaper.GetSelectedMediaItem( 0, 0 ) local start_item = reaper.GetMediaItemInfo_Value( item, 'D_POSITION' ) local cur = reaper.SetEditCurPos( start_item, 0, 0 ) reaper.GetSet_LoopTimeRange2( 0, 1, 0, 0, 0, 0 ) local track = reaper.GetSelectedTrack(0, 0) local count_fx = reaper.TrackFX_GetCount( track ) for i = count_fx - 1, 0, - 1 do reaper.SNM_MoveOrRemoveTrackFX( track, i, 0 ) end --- reaper.Undo_EndBlock("Prereverb", 1) reaper.UpdateArrange()