reaper.Undo_BeginBlock() reaper.PreventUIRefresh(1)
function addtoselection()
local function nothing() end; local function noaction() reaper.defer(nothing) end
local retval, notes = reaper.GetProjExtState( 0, 'MyDaw', 'Return')
local data = notes:match'||addreturns\r\n(.-\r\n)end||'
if not data then noaction() return end
local sel_tracks_str = data:match('return_note'..'%d'..' (.-)\r\n')
if not sel_tracks_str then noaction()() return end
local t = {}
for guid in sel_tracks_str:gmatch'{.-}' do
local tr = reaper.BR_GetMediaTrackByGUID(0, guid)
if tr then t[#t+1] = tr end
end
if #t == 0 then noaction() return end
local first = reaper.GetTrack(0, 0)
for i = 1, #t do reaper.SetTrackSelected(t[i],1) end
end
function addreturnstonotes()
local return_note = 0
local function esc_lite(str) str = str:gsub('%-', '%%-') return str end
local function nothing() end; local function noaction() reaper.defer(nothing) end
local tracks = reaper.CountSelectedTracks()
if tracks == 0 then noaction() return end
local return_str = ''
for i = 0, tracks-1 do
return_str = return_str..reaper.GetTrackGUID(reaper.GetTrack(0, i)) end
local retval, notes = reaper.GetProjExtState( 0, 'MyDaw', 'Return')
local a = '||addreturns\r\n'
local data = notes:match(a..'(.-\r\n)end||')
if data then
local new_data
local return_note_data = data:match('return_note'..'%d'..' (.-)\r\n')
if return_note_data then
new_data = data:gsub('return_note'..'%d'..' '..esc_lite(return_note_data),'return_note'..return_note..' '..return_str,1)
else new_data = data..'return_note'..return_note..' '..return_str..'\r\n' end
notes = notes:gsub(esc_lite(data),new_data)
elseif notes=='' then notes = notes..a..'return_note'..return_note..' '..return_str..'\r\nend||\r\n'
else notes = notes..'\r\n'..a..'return_note'..return_note..' '..return_str..'\r\nend||\r\n' end
reaper.SetProjExtState( 0, 'MyDaw', 'Return', notes )
reaper.TrackList_AdjustWindows(0)
end
reaper.InsertTrackAtIndex(0, true)
local bus = reaper.GetTrack(0, 0)
reaper.GetSetMediaTrackInfo_String( bus, "P_TCP_LAYOUT", "Return", true )
reaper.GetSetMediaTrackInfo_String(bus, "P_NAME", "Return", true)
reaper.Main_OnCommand(40297, 0) ----unselect all tracks
reaper.SetTrackSelected(bus,1)
reaper.Main_OnCommand(reaper.NamedCommandLookup('_SWS_BLACKTRACK'), 0)
addtoselection()
addreturnstonotes()
function sendtrackstoreturns()
reaper.Main_OnCommand(40296, 0) ----select all tracks
function addtoselection()
local function nothing() end; local function noaction() reaper.defer(nothing) end
local retval, notes = reaper.GetProjExtState( 0, 'MyDaw', 'Return')
local data = notes:match'||addreturns\r\n(.-\r\n)end||'
if not data then noaction() return end
local sel_tracks_str = data:match('return_note'..'%d'..' (.-)\r\n')
if not sel_tracks_str then noaction()() return end
local t = {}
for guid in sel_tracks_str:gmatch'{.-}' do
local tr = reaper.BR_GetMediaTrackByGUID(0, guid)
if tr then t[#t+1] = tr end
end
if #t == 0 then noaction() return end
local first = reaper.GetTrack(0, 0)
for i = 1, #t do reaper.SetTrackSelected(t[i],0) end
end
addtoselection()
reaper.Main_OnCommand(reaper.NamedCommandLookup('_SWS_SAVESEL'), 0) ---savetrack seslect
local defsendflag = ({reaper.BR_Win32_GetPrivateProfileString( 'REAPER', 'defsendflag', '0', reaper.get_ini_file() )})[2]
local function nothing() end; local function noaction() reaper.defer(nothing) end
local retval, notes = reaper.GetProjExtState( 0, 'MyDaw', 'Return')
local data = notes:match'||addreturns\r\n(.-\r\n)end||'
if not data then noaction() return end
local sel_tracks_str = data:match('return_note'..'%d'..' (.-)\r\n')
if not sel_tracks_str then noaction()() return end
local t = {}
for guid in sel_tracks_str:gmatch'{.-}' do
local new_dest_tr = reaper.BR_GetMediaTrackByGUID(0, guid)
if new_dest_tr then t[#t+1] = new_dest_tr end
reaper.Main_OnCommand(reaper.NamedCommandLookup('_SWS_RESTORESEL'), 0) ---restore savetrack seslect
local selected = {}
local function wasSelected(match)
for i,new_dest_tr in ipairs(selected) do
if new_dest_tr == match then
return true
end
end
return false
end
local function highlight(new_dest_tr, select)
local send_receive = -1
for i=0, reaper.GetTrackNumSends(new_dest_tr, send_receive)-1 do
local target = reaper.BR_GetMediaTrackSendInfo_Track( new_dest_tr, send_receive, i, 0)
reaper.SetTrackSelected(target, 0)
if select then
highlight(target, select)
end
end
end
local function main()
for i,new_dest_tr in ipairs(selected) do
local valid = reaper.ValidatePtr(new_dest_tr, 'MediaTrack*')
local isSelected = valid and reaper.IsTrackSelected(new_dest_tr)
if not isSelected then
table.remove(selected, i)
if valid then
highlight(new_dest_tr, false)
end
end
end
if not wasSelected(new_dest_tr) then
selected[#selected + 1] = new_dest_tr
end
highlight(new_dest_tr, true)
end
main()
for i = 1, reaper.CountSelectedTracks(0) do
local tr = reaper.GetSelectedTrack(0,i-1)
if tr then
new_send_id = reaper.CreateTrackSend( tr, new_dest_tr )
if new_send_id >= 0 then
if new_dest_tr then
reaper.SetTrackSendInfo_Value( tr, 0, new_send_id, 'D_VOL', 0)
reaper.SetTrackSendInfo_Value( tr, 0, new_send_id, 'I_SENDMODE', defsendflag)
end
end
end
if #t == 0 then noaction() return end
end
end
reaper.TrackList_AdjustWindows( false )
end ----- function sendtrackstoreturns() end
sendtrackstoreturns()
reaper.PreventUIRefresh(-1) reaper.Undo_EndBlock('Insert Return', -1)
Потому что он не стабилен, поэтому и не добавляю его, не нестабилен, а сделан под тебя - по принципу твоего кастома.@Archchie, а что бы тебе такой скрипт (по микшеру) в репозиторий не закинуть? Классная вещь и удобная...
Там комиссия 1% по моему. Над кнопкой отправить будет написано, какой процент и какая сумма.а с карточки сбербанка донаты без налогов прилетают?
Сделай кастом, в чем проблема не пойму.Как же мне сделать так,чтоб при нажатии на скрипт,активировались сразу два указанных лайоута на созданном треке(Return)?
Твой скрипт
Layout: Apply custom layout #n
Layout: Apply custom layout #n
Эти скрипты были только для дефолтной 5-й темы и больше они нигде не работали.В списке экшенов нашел твои скрипты в которых уже заложен определенный стиль(и отлично работает с дефолтной темой)
А где есть сей?Archie_View; Show full mixer - Restore view back.lua
Еще раз попробуй обновить.А где есть сей?
Всё обновил и нету...
В начале скрипта прочитай - есть регулировкиДобавить в конец скрипта то, что вы советовали или в этом случае это решается по-другому?
Есть такое понятие контекст...Я с этим скриптом ничего не советовал добавлять!!!
О как, век живи...А в начале скрипта прочитать сил не хватило, прежде чем что то добавлять???
YuriOl написал(а):
Я вроде такого не написал(а): ))А как можно сделать что бы окно микшера сразу открывалось на весь экран?
Сделал,и хотел написать еще,что не работает такое с кастомом.Сделай кастом, в чем проблема не пойму
Всегда обновляю,без понятия почему они у меня в списках,только сегодня на них наткнулся)Эти скрипты были удаленны уже давным давно, не пойму что они у тебя делают.
Ты реапак не обновляешь что ли или при обновлении не удаляешь удаленные скрипты?
Это от каковата другова скрипта, от этого не может быть этой надписи "reascript". Да и это не страшно, это просто несуществующая точка отмены, это просто простая надпись и не более.
Прошу прощенья - Мой косяк.))Я вроде такого не написал(а): ))
В каком это смысле не работает, а почему у меня тогда работает???Сделал,и хотел написать еще,что не работает такое с кастомом.
Просто когда обновляешь, не надо постоянно на ок жать, а надо хотя бы попытаться почитать что там написано!!!Всегда обновляю,без понятия почему они у меня в списках,только сегодня на них наткнулся)
Если использовать этот кастом когда выделен какой нибудь трек,то создастся трек ретурн(с дефолтным лайоутом) а тот трек который был выделен,станет(с моим лайоутом)а если ничего не выделено,то будут создаваться треки "ретурн" (с лайоутом по дефолту).А мне нужно чтоб,ретурн был(с заданным лайоутом).В каком это смысле не работает, а почему у меня тогда работает???
Так Почти)Когда есть один трек,то ретурн становиться с моим лайоутом(все как надо),а последующее добавления(ретурна) все треки меняет на заданный лайоут)@Krikets, А если так?
Код:твой скрипт SWS: Toggle (invert) track selection Layout: Apply custom layout #n Layout: Apply custom layout #n SWS: Toggle (invert) track selection
Я вообще не понимаю что твой скрипт делает: При первом добавлении трека он выделяет все треки, при последующих не виделяет.Так Почти)Когда есть один трек,то ретурн становиться с моим лайоутом(все как надо),а последующее добавления(ретурна) все треки меняет на заданный лайоут)
Возможно, нужно только разобраться с выделением трековЯ просто хотел узнать возможно ли такое с лайоутами
У меня вроде все норм, с выделением.Да так и работает,но мне кажется было бы еще логичней предоставлять ввод имени при каждом добавлении.И есть еще такая штука,когда добавил новый трек(например с аудио "Х")то посылов на нем не увидишь,пока не добавишь еще один ретурн(тогда они на треке с аудио "Х" появляются(новый и те которые были добавлены ранее)Я сам недавно начал пользоваться этим скриптом(вникаю во все),это его создатель вродеС выделением треков так и задумано или это чудо скрипт так работает???
Прилетело! Спасибо!@Archchie, прилетело?
Все понятно.Все порешали с автором скрипта.Там оказывается,в коде есть строки в которых можно прописать какой layouts,будет активироватся,впринципе что и нужно было.Он обещал через месяц, другой до вести скрипт до ума.Так что возможно исправит все недочеты,с выделениями и т.п.Вопрос закрыт спасибо.
Надо же код в 2 раза меньше ,а работает вроде бы так же)+ наглядней,спасибо!.Только если вопрос ребром,может для удобства все таки лучше, если будет выделятся,вновь созданный ретурн(и только он)?И еще,когда у него создавался ретурн трек ,то уровень посыла на нем и на треках был в ноль,это важно.Держи тогда, выделений никаких нет
local TCP_LAYOUT = "ba - Small" -- Название лейаута TCP
local MCP_LAYOUT = "" -- Название лейаута MCP
local R,G,B = 0,0,0 -- Цвет трека в rgb (по умолчанию R,G,B = -1,-1,-1)
local NAME_TRACK = "Return" -- Имя трека
local SEND_VOLUME_DB = -150 -- Уровень посыла в db
local SEND_MODE = 0 -- 0 Post-Fader(Post-Pan) / 1 Pre-Fx / 3 Pre-Fader(Post-Fx)
-------------------------------------------------------
local function no_undo()reaper.defer(function()end)end;
-------------------------------------------------------
if reaper.CountTracks(0)==0 then no_undo() return end;
reaper.Undo_BeginBlock();
reaper.InsertTrackAtIndex(0,false);
local TrackFirst = reaper.GetTrack(0,0);
reaper.SetOnlyTrackSelected(TrackFirst);
local GUID = reaper.GetTrackGUID(TrackFirst);
reaper.SetProjExtState(0,"IS_RETURN_TRACK",GUID,"true");
reaper.GetSetMediaTrackInfo_String(TrackFirst,"P_TCP_LAYOUT",TCP_LAYOUT,1);
reaper.GetSetMediaTrackInfo_String(TrackFirst,"P_MCP_LAYOUT",MCP_LAYOUT,1);
reaper.GetSetMediaTrackInfo_String(TrackFirst,"P_NAME",NAME_TRACK,1);
if R < 0 or G < 0 or B < 0 or R > 255 or G > 255 or B > 255 then;
reaper.SetMediaTrackInfo_Value(TrackFirst,"I_CUSTOMCOLOR",0);
else;
reaper.SetMediaTrackInfo_Value(TrackFirst,"I_CUSTOMCOLOR",reaper.ColorToNative(R,G,B)|0x1000000);
end;
for i = 1, reaper.CountTracks(0) do
local Track = reaper.GetTrack(0,i-1);
local GUID = reaper.GetTrackGUID(Track);
local retval, val = reaper.GetProjExtState(0,"IS_RETURN_TRACK",GUID);
if retval == 0 and val ~= "true" then;
local sendidx = reaper.CreateTrackSend(Track,TrackFirst);
if SEND_VOLUME_DB < -150 then SEND_VOLUME_DB = -150 end;
if SEND_VOLUME_DB > 12 then SEND_VOLUME_DB = 12 end;
reaper.SetTrackSendInfo_Value(Track,0,sendidx,"D_VOL",10^(SEND_VOLUME_DB/20));
if SEND_MODE~=0 and SEND_MODE~=1 and SEND_MODE~=3 then SEND_MODE=0 end;
reaper.SetTrackSendInfo_Value(Track,0,sendidx,"I_SENDMODE",SEND_MODE);
end;
end;
local i;while true do;
i = (i or 0)+1;
local ret,key,_ = reaper.EnumProjExtState(0,"IS_RETURN_TRACK",i-1);
if not ret then break end;
local tr = reaper.BR_GetMediaTrackByGUID(0,key);
if not tr then;reaper.SetProjExtState(0,"IS_RETURN_TRACK",key,""); end;
end;
reaper.Undo_EndBlock("--T--",-1);
С Ретурна никуда посыл не создается)).создается посыл с Ретурна
Я спрашивал про это но внятного ответа так и не дождался.Но если я активирую ТВОЙ скрипт,то на треке (с новым семплом) появляется лишь только последний добавленный Ретурн.
Почему вы все пытаетесь сделать из рипера - то аблетон, то кубейс, то ......, мне кажется что тогда надо в аблетоне и работать и не мучить себя с этим рипером, в котором все не как в аблетоне!!!p.s Вообще если брать в учет то как это делается в Аблетон,то при создании нового трека, эти все ретурны,автоматом цепляются на вновь создаваемые треки,
Arc_Track; Insert track receive from all tracks.lua |