Помогите создать экшн / кастом экшн / скрипт

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
@EUGEN27771, так стоят условия на все деферы, но поскольку скрипт основной открывает второй, а тот в свою очередь последовательно открывает ещё другие скрипты и во всех них есть деферы (с условиями) - получается так, что при закрытии основного скрипта (первого), что-то остаётся висеть, хотя и не ругается и вижу я это только по глюку, который случайно отловил.....
Я так понимаю, что гарантированно закрывает дефер только atexit? Но я с этой функцией так до конца и не подружился :(
В общем буду искать и видимо действительно прийдётся ввести какую то глобальную переменную, которая будет менять состояние при закрытии основного скрипта и введу её как условие прекращения деферов во все прочие скрипты.... попробую во всяком случаи
 
Ребята, очень нужен скрипт, который устанавливал бы для фильтра в миди эдиторе следующие значения:
Image 1.jpg
Помогите, плиз, реально задолбало каждый раз выбирать эти параметры вручную.
 
Ребят, нужна помощь.
Не помню уж точно, где я этот экшн видел. Толи тут на форуме, толи у АндиВакса подмотрел.
Короче, опишу что он делает.
Выделяешь участок в Arrange View. Нажимаешь на экшн и он записывает все то, что звучит в Selected Area и выводит в отдельный файл, который помещает на свежесозданной им же дорожке.
Повторюсь, он записывает все дорожки, все эффекты, автоматизацию, все то, что поступает на мастер-канал, все учитывается и записывается в wav-файл.
Помню, что использовался SWS возможности, в частности - Cue Buss Generator...
А дальше....
Я не силен в создании экшенов :(

Ребят, неужели никто не поможет? Был же где-то этот экшн.
Может я непонятно объяснил его работу?
 
@Aleksandr Oleynik, даже если есть возможность принудительно закрыть, лучше найдите и поставьте условие. Можно какую-либо глобальную переменную, допустим Active поставить условием(или доп. условием) на все defer.
Нашёл. Как говориться - "Горе от ума". Я сам сделал функцию, которая делает Undo при определённых обстоятельствах ни взирая ни на что.
Вот ....., обстоятельства оказалось, что могут возникнуть достаточно неожиданно.
Во Истину - функционально верные скрипты это ДОСКАНАЛЬНО продуманные условия.
 
  • Like
Реакции: Buyan
@diggidon,
PHP:
local r = reaper; local function nothing() end; local function bla() r.defer(nothing) end

function esc(str) str = str:gsub('%-', '%%-') return str end

local take = r.MIDIEditor_GetTake(r.MIDIEditor_GetActive())
if not take then bla() return end

local item = r.GetMediaItemTake_Item(take)

local _, chunk = r.GetItemStateChunk(item, '', 0)

local fltr_str = chunk:match'\nEVTFILTER .-\n'
if not fltr_str then r.MB("Can't find EVTFILTER string",'Oops',0) bla() return end
local a,b,c,d,e = fltr_str:match'(\nEVTFILTER .- )(.-)( .* )(.-)( .- .-\n)'
if not e then r.MB("Something went wrong",'Oops',0) bla() return end

local new_chunk = chunk:gsub(esc(fltr_str),a..'144'..c..'1'..e)
if new_chunk==chunk then bla() return end

r.Undo_BeginBlock() r.PreventUIRefresh(1)
r.SetItemStateChunk(item, new_chunk, 0)
r.PreventUIRefresh(-1) r.Undo_EndBlock('Filter Events - Type Note, Note, Use piano keys', -1)
 
  • Like
Реакции: diggidon
Ребят, не экспортируется Cycle Action, хотел файл на другой ком. перенести......выбираю, нажимаю Export selected Cycle action но файла нет...((
Не встречалось такого ?
 
@vitalker, про версию не подумал...вечером посмотрю, отпишусь
кстати, в студии работает, сохраняет....а дома нет ...глюк наверное...
 
@igor13r сверьте версии в студии и дома... Мне кажется, что это вы начудили! Или просто накатите последнюю версию поверх :)
 
а есть скрипт чтобы сделать toggle для envelope трека между минимальным значением и большим-удобным-фиксированным? ))
 
а есть скрипт чтобы сделать toggle для envelope трека между минимальным значением и большим-удобным-фиксированным? ))
Можно сделать.
Сделай проектик из одного трека и одного envelope и настрой в начале нужную мин величину и запусти приатаченный скрипт -
скопируй сюда то, что появится в окне,
что-то такое -

PHP:
<VOLENV2
ACT 1
VIS 1 1 1
LANEHEIGHT 24 0
ARM 1
DEFSHAPE 0 -1 -1
PT 0 1 0
>
Потом выставь второй нужный размер и опять запусти и скопируй сюда -
вот для этих двух размеров сделаю тебе toggle скрипт.
Я так понимаю, что все envelope нужно будет менять одновременно?

PS: Вообще-то для envelope можно задавать вот эти любые параметры через скрипт -
active: true if envelope is active
visible: true if envelope is visible
armed: true if envelope is armed
inLane: true if envelope has it's own envelope lane
laneHeight: envelope lane override height. 0 for none, otherwise size in pixels
defaultShape: default point shape: 0->Linear, 1->Square, 2->Slow start/end, 3->Fast start, 4->Fast end, 5->Bezier
minValue: minimum envelope value
maxValue: maximum envelope value
type: envelope type: 0->Volume, 1->Volume (Pre-FX), 2->Pan, 3->Pan (Pre-FX), 4->Width, 5->Width (Pre-FX), 6->Mute, 7->Pitch, 8->Playrate, 9->Tempo map, 10->Parameter
faderScaling: true if envelope uses fader scaling

Но что-то у меня вот именно эта функция (которой можно и считать все эти данные и установить - не работает корректно).
 

Вложения

Последнее редактирование:
  • Like
Реакции: vax
а есть скрипт чтобы сделать toggle для envelope трека между минимальным значением и большим-удобным-фиксированным? ))
PHP:
h1 = 50 -- pixels
h2 = 100

env = reaper.GetSelectedEnvelope( 0 )
if env then 
  h0 = tonumber(({reaper.GetEnvelopeStateChunk( env, '' )})[2]:match('LANEHEIGHT %d+'):match('%d+'))
  if math.abs(h0 - h1) >= math.abs(h0-h2) then h_out = h1 else h_out = h2 end    
  out_ch = ({reaper.GetEnvelopeStateChunk( env, '' )})[2]:gsub('LANEHEIGHT %d+','LANEHEIGHT '..h_out ) 
  reaper.SetEnvelopeStateChunk( env, out_ch)
  reaper.TrackList_AdjustWindows( false )
end
 
Последнее редактирование:
Чтобы заменить FX ,надо сначала зайти в браузер FX ,потом кликнуть правой кнопкой мыши
по установленному эффекту и выбрать команду "Replace FX".
Существует ли скрипт ,чтоб это сделать одной командой не заходя в браузер FX ???
 
Чтобы заменить FX ,надо сначала зайти в браузер FX ,потом кликнуть правой кнопкой мыши
по установленному эффекту и выбрать команду "Replace FX".
Ни чего подобного!
Нужно просто кликнуть правой клавишей на FX в инсёрте трека и выбрать команду "Replace FX", после чего естественно откроется браузер FX чтоб вы могли выбрать новый FX.

Существует ли скрипт ,чтоб это сделать одной командой не заходя в браузер FX ???
К нему прийдётся Кашпировского заказывать, чтоб читал ваши мысли - на какой именно FX вы хотите заменить.
 
@Aleksandr Oleynik, Спасибо за ответ.
Зачем нам Кашпировский?? Я ведь могу не заходя в браузер FX загрузить Vsti инструмент.
А поменять один FX можно на другой FX:)
 
PHP:
h1 = 50 -- pixels
h2 = 100

env = reaper.GetSelectedEnvelope( 0 )
if env then
  h0 = tonumber(({reaper.GetEnvelopeStateChunk( env, '' )})[2]:match('LANEHEIGHT %d+'):match('%d+'))
  if math.abs(h0 - h1) >= math.abs(h0-h2) then h_out = h1 else h_out = h2 end   
  out_ch = ({reaper.GetEnvelopeStateChunk( env, '' )})[2]:gsub('LANEHEIGHT %d+','LANEHEIGHT '..h_out )
  reaper.SetEnvelopeStateChunk( env, out_ch)
  reaper.TrackList_AdjustWindows( false )
end

А можно тоже только с треком?
 
  • Like
Реакции: tosh
PHP:
h1 = 50 -- pixels
h2 = 100

tr = reaper.GetSelectedTrack( 0, 0 )
if tr then
  h0 =  reaper.GetMediaTrackInfo_Value( tr, 'I_HEIGHTOVERRIDE' )
  if math.abs(h0 - h1) >= math.abs(h0-h2) then h_out = h1 else h_out = h2 end 
  reaper.SetMediaTrackInfo_Value( tr, 'I_HEIGHTOVERRIDE', h_out)
  reaper.TrackList_AdjustWindows( false )
end
 
  • Like
Реакции: Martin111 и Maestro Sound
Уважаемые друзья "Скриптоплеты"! можно ли Вас попросить сделать Скрипты - Отдельно закрытие и Отдельно открытие всех 16 toolbars по отдельности?
 

Сейчас просматривают