Айтем не выделен.Подскажите пожалуйста в чем может быть проблема. Не работают скрипты. Шапка скрипта появляется, но после нажатия activate ничего не происходит
--@description MaxMusicMax; Midi Editor; Item; Mute all items in track
--@version 0
--@author MaxMusicMax
-----------------------------------------------------
-- Function Button
local function SetToggleButtonOnOff(numb);
local _,_,sec,cmd,_,_,_ = reaper.get_action_context();
reaper.SetToggleCommandState(sec,cmd,numb or 0);
reaper.RefreshToolbar2(sec,cmd);
end;
function print_rs (param)
reaper.ShowConsoleMsg (tostring (param) .. "\n")
end
-- #######################################
-- #######################################
reaper.PreventUIRefresh(1);
-- #######################################
-- #######################################
local ME = reaper.MIDIEditor_GetActive()
local take = reaper.MIDIEditor_GetTake(ME)
local take_track = reaper.GetMediaItemTake_Track(take)
local is_solo = reaper.GetMediaTrackInfo_Value(take_track, 'I_SOLO')
-- Состояние первого айтема
local state_item = reaper.GetMediaItemInfo_Value ( reaper.GetTrackMediaItem ( take_track, 0 ), 'B_MUTE' )
if state_item == 0 then
-- Состояние unmute
for i=1, reaper.CountTrackMediaItems(take_track) do
local item = reaper.GetTrackMediaItem ( take_track, i-1 )
reaper.SetMediaItemInfo_Value( item, 'B_MUTE', 1 )
SetToggleButtonOnOff(1)--Button of
end
else
-- Состояние mute
for i=1, reaper.CountTrackMediaItems(take_track) do
local item = reaper.GetTrackMediaItem ( take_track, i-1 )
reaper.SetMediaItemInfo_Value( item, 'B_MUTE', 0 )
SetToggleButtonOnOff(0)-- Button on
end
end
-- #######################################
-- #######################################
reaper.PreventUIRefresh(-1);
reaper.TrackList_AdjustWindows(0); -- Updates the window view
reaper.UpdateArrange(); -- Updates the window view
оо, круто, спасиб@maxmusic,
Код:--@description MaxMusicMax; Midi Editor; Item; Mute all items in track --@version 0 --@author MaxMusicMax ----------------------------------------------------- -- Function Button local function SetToggleButtonOnOff(numb); local _,_,sec,cmd,_,_,_ = reaper.get_action_context(); reaper.SetToggleCommandState(sec,cmd,numb or 0); reaper.RefreshToolbar2(sec,cmd); end; function print_rs (param) reaper.ShowConsoleMsg (tostring (param) .. "\n") end -- ####################################### -- ####################################### reaper.PreventUIRefresh(1); -- ####################################### -- ####################################### local ME = reaper.MIDIEditor_GetActive() local take = reaper.MIDIEditor_GetTake(ME) local take_track = reaper.GetMediaItemTake_Track(take) local is_solo = reaper.GetMediaTrackInfo_Value(take_track, 'I_SOLO') -- Состояние первого айтема local state_item = reaper.GetMediaItemInfo_Value ( reaper.GetTrackMediaItem ( take_track, 0 ), 'B_MUTE' ) if state_item == 0 then -- Состояние unmute for i=1, reaper.CountTrackMediaItems(take_track) do local item = reaper.GetTrackMediaItem ( take_track, i-1 ) reaper.SetMediaItemInfo_Value( item, 'B_MUTE', 1 ) SetToggleButtonOnOff(1)--Button of end else -- Состояние mute for i=1, reaper.CountTrackMediaItems(take_track) do local item = reaper.GetTrackMediaItem ( take_track, i-1 ) reaper.SetMediaItemInfo_Value( item, 'B_MUTE', 0 ) SetToggleButtonOnOff(0)-- Button on end end -- ####################################### -- ####################################### reaper.PreventUIRefresh(-1); reaper.TrackList_AdjustWindows(0); -- Updates the window view reaper.UpdateArrange(); -- Updates the window view
Так вроде работает. В самом начале добавил саму функцию кнопки, после событий мьют и анмьют действия состояния кнопки.
(Не умею правильно изъясняться, просто этот код мне когда-то Арчи подсказал)))))))
-- NEW INSTANCE !!!
local ID = 40175
-------------------------------------------------
local MIDIEditor = reaper.MIDIEditor_GetActive();
if MIDIEditor then;
if type(ID) ~= 'number' then;
ID = reaper.NamedCommandLookup(ID or '');
end;
if tonumber(ID)then;
reaper.Main_OnCommand(ID,0);
end;
end;
-------------------------------------------------
local ActiveDoubleScr,stopDoubleScr;
local _,extnameProj,sec,cmd,_,_,_ = reaper.get_action_context();
local function loop();
----- stop Double Script -------
if not ActiveDoubleScr then;
stopDoubleScr = (tonumber(reaper.GetExtState(extnameProj,"stopDoubleScr"))or 0)+1;
reaper.SetExtState(extnameProj,"stopDoubleScr",stopDoubleScr,false);
ActiveDoubleScr = true;
end;
local stopDoubleScr2 = tonumber(reaper.GetExtState(extnameProj,"stopDoubleScr"));
if stopDoubleScr2 > stopDoubleScr then return end;
--------------------------------
local tog = reaper.GetToggleCommandStateEx(0,ID);
if tog == 1 then;
if not ActiveOff then;
reaper.SetToggleCommandState(sec,cmd,1);
reaper.RefreshToolbar2(sec, cmd);
ActiveOn = nil;
ActiveOff = true;
end;
else;
if not ActiveOn then;
reaper.SetToggleCommandState(sec,cmd,0);
reaper.RefreshToolbar2(sec, cmd);
ActiveOff = nil;
ActiveOn = true;
end;
end;
--------------------------------
reaper.defer(loop);
end;
reaper.defer(loop);
Да!@YuriOl, а тут я не знаю пока... Дело в том, что я вижу, что он эту функцию вписал, но почему она не работает, хз. Там не просто сделать мьют и анмьют, там он ссылается на штатный тоггле.
Сама суть в том, чтобы замьютировать айтем, который открыт в миди эдиторе? Типа тоггле нужно?
Это из-за того, что видимо из миди редактора не хочет брать toggle state у экшна под ID 40175 из секции Main, надо по другому реализовать. Либо toggle state самого же скрипта, либо через ProjectExtState. Посмотрю@YuriOl, я догадался, только состояние кнопки не работает. Я не знаю как его доработать. Его, по-моему, нужно полностью для этого переделать. Может, кто-то ещё поможет.
function bla() end
function nothing() reaper.defer(bla) end
local MIDIEditor = reaper.MIDIEditor_GetActive()
if MIDIEditor then
take = reaper.MIDIEditor_GetTake(MIDIEditor)
if take then
item = reaper.GetMediaItemTake_Item(take)
mute_state = reaper.GetMediaItemInfo_Value( item, "B_MUTE")
local is_new_value,filename,sectionID,cmdID,mode,resolution,val = reaper.get_action_context()
local tog = reaper.GetToggleCommandState(cmdID)
if tog == 1 then
reaper.SetMediaItemInfo_Value( item, "B_MUTE", 0)
reaper.SetToggleCommandState(sectionID,cmdID,0)
else
reaper.SetMediaItemInfo_Value( item, "B_MUTE", 1)
reaper.SetToggleCommandState(sectionID,cmdID,1)
end
reaper.RefreshToolbar2(sectionID, cmdID)
reaper.UpdateArrange()
end
end
nothing()
@dsg, довольно удобно =)
Только мне почему-то так аккуратно, чтоб было все компактно и с ресайзом, задочить фейдер в верхний правый угол не удалось =) Подскажите где нажать? =)
Посмотреть вложение 215937
Привет! А мне как раз нужно посылать команды на железный пульт. Это пульт 91 года, там автоматизация была. Команды можно посылать по COM через USB на определённый порт. Нужна информация, как такое написать в Рипере. Спасибо!@M16, какой имено пульт?
Если внешний железный - прийдется для CSI писать зону.
Привет! Спасибо! Вот прикольно - ждал ответа какое-то время и вы с Леандро ответили одновременно. Вот его ответ:@Дима Горелик, нужно писать расширение на C++, у Reaper нет функций для работы с com-портом.
А создать snapshots?Господа, всем добрый день!
Подскажите, пожалуйста, у кого нибудь есть скрипт для включения максимальных обработок (oversampling, linear phase и т.д.) для финального рендера проекта? А то надоело каждый раз тыкать все плагины. Или если ни у кого нет, может быть знаете как его написать?
Подскажите, пожалуйста, как это сделать?А создать snapshots?
Подскажите, пожалуйста, как это сделать?
Да! Почти так!) Take: Implode items on SAME tracks into takes - крутота!!!))"drumwizard
Take: Implode items across tracks into takes
выделить оба Item