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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
И, кстати, ни разу не искал удаление - похоже и нет, нужно подумать
Через чанк можно сделать что угодно
Если не трудно сделайте скрипт по Вашему скрипту
Bypass all FX (except VSTi) for all tracks.lua

Только вместо всех треков, задать "выделенные треки" и не байпасить fx а удалять только Vsti (без функции он офф). Это нужно для Рендера именно Vsti и дальнейшего его удаления не затрагивая FX. ЕСЛИ ИНТЕРЕСНО МОГУ ЗАДАТЬ ПОЛНУЮ КАРТИНУ ЗАДУМКИ ДЛЯ ЦЕЛЬНОГО СКРИПТА render Vsti
[DOUBLEPOST=1513158782][/DOUBLEPOST]
Так это не работает - нужно менять условия - т.е. синтаксис.
Я так и понял я то по условиям вывел только "выделенные треки" и начал клеить с
reaper.SNM_MoveOrRemoveTrackFX и скрипт как бы без ошибок но реакции "0"
[DOUBLEPOST=1513158914][/DOUBLEPOST]И посмотрите пожалуйста возможность перемещения выделенного трека последним по списку. Такого скрипта я не у кого не встретил. Последним в папке - да а вот вообще последним нету
 
Последнее редактирование:
Все перемещения делаются через удаление и создание нового в новом месте - так что....
[DOUBLEPOST=1513159724][/DOUBLEPOST]
reaper.SNM_MoveOrRemoveTrackFX и скрипт как бы без ошибок но реакции "0"
Так ставьте msg() и контролируйте что не так.
В API же написано что он делает -
fxId: fx index in chain or -1 for the selected fx. what: 0 to remove, -1 to move fx up in chain, 1 to move fx down in chain.
[DOUBLEPOST=1513159818][/DOUBLEPOST]
Если не трудно сделайте скрипт по Вашему скрипту
Bypass all FX (except VSTi) for all tracks.lua
Только вместо всех треков, задать "выделенные треки" и не байпасить fx а удалять только Vsti (без функции он офф).
Так этот скрипт ни чего общего с уже сделанным иметь не будет. Его с нуля делать нужно и через чанк.
Не знаю когда смогу, сейчас время есть урывками, а тут денёк плотный нужен.
 
Последнее редактирование:
  • Like
Реакции: Maestro Sound
@Maestro Sound, можно в скрипте просто поменять строку (встречается 2 раза)
PHP:
reaper.Main_OnCommand(41223, 0) -- freeze to stereo
на
PHP:
reaper.Main_OnCommand(reaper.NamedCommandLookup("_xxx"), 0)
где xxx - id скрипта Freeze only instruments
 
Очень просто - ещё раз "запускаете" скрипт или нажимаете его кнопку на тулбаре.
Один раз клацнули по скрипту - он работает, второй - он перестал работать. Для визуального подтверждения того, что скрипт работает - сделали "светящуюся" во время работы кнопку (програмно сделали).
То есть скрипт останавливается принудительно из вне? По ходу возникает вопрос - как происходит такая остановка? То есть, если допустим сценарий не циклический и он еще в процессе исполнения, то повторный запуск прерывает исполнение? Или если сценарий циклический, то повторный вызов прерывает цикл, или ждет завершения периода цикла и только потом прерывает исполнение? Или остановка скрипта посредством повторного запуска распространяется только на дефер, а "разово срабатывающий" скрипт выполнится до конца? (последнее важно понимать, так-как я пока посредством удержания клавиши циклически запускаю скрипт. Мне важно знать, что будет если повторный запуск произойдет раньше завершения, когда скрипт будет потяжелее и ли у кого-то комп по слабее. Сейчас- то все работает вроде таким образом в тестовом режиме.)

И по ходу возникает еще куча вопросов, но наверное неразумно их здесь все задавать, по крайней мере те, которые можно решить самостоятельно. Вот спустя пару часов и могу уже работать с таблицами и массивами:)
 
@Maestro Sound, можно в скрипте просто поменять строку (встречается 2 раза)
PHP:
reaper.Main_OnCommand(41223, 0) -- freeze to stereo
на
PHP:
reaper.Main_OnCommand(reaper.NamedCommandLookup("_xxx"), 0)
где xxx - id скрипта Freeze only instruments
ТОЖЕ ВАРИАНТ . Благодарю..Просто у меня при вставке простых экшинов и частичным использованием API можно фризить и анфризить треки выделенные скопом
 
То есть, если допустим сценарий не циклический
Сценарий в любом случаи циклический - дефер это цикл 32-34 раза в секунду, а какой нибудь for - миллион циклов в секунду.
Любой цикл перед прекращением работы скрипта будет завершён
[DOUBLEPOST=1513171875][/DOUBLEPOST]
пока посредством удержания клавиши циклически запускаю скрипт.
Мне кажется, что это плохой вариант.
Лучше сделать условие, например - запустили скрипт и он в дефере крутится пока что-то не будет выполненно, а потом остановится сам по себе.
 
Мне кажется, что это плохой вариант.
Вот и я тоже сомневаюсь. Но пока в тестовом режиме использую, для пошаговой отладки удобно, потом нужно будет что-то думать. Пока пытаюсь бороться с маркерами, экспериментирую с параметрами функции reaper.SetTempoTimeSigMarker . Плохо, что нету более детального описания API.
 
Плохо, что нету более детального описания API.
Это главная проблема в написании скриптов.
И если функция редко кем используемая, то и референсные скрипты не найдёшь, чтоб подсмотреть.
 
И если функция редко кем используемая, то и референсные скрипты не найдёшь, чтоб подсмотреть
Пока этим и занимаюсь, но пока безуспешно. Еще использую метод научно-аналитического тыка. Изматывающее занятие, но результат какой-ни-какой, а есть.
 
Что я делаю, когда совсем не понятно что отдаёт конкретный параметр в функции -
считываю вначале все параметры в разных ситуациях -
PHP:
----------------------------------------------------------------------------------------------------
local msg = function(M) reaper.ShowConsoleMsg(tostring(M).."\n") end
----------------------------------------------------------------------------------------------------
retval, timeposOut, measureposOut, beatposOut, bpmOut, timesig_numOut, timesig_denomOut, lineartempoOut = reaper.GetTempoTimeSigMarker( 0, 0 )
msg("retval  : "..retval)
msg("timeposOut  : "..timeposOut)
msg("measureposOut  : "..measureposOut)
msg("beatposOut  : "..beatposOut)
msg("bpmOut  : "..bpmOut)
msg("timesig_numOut  : "..timesig_numOut)
msg("lineartempoOut  : "..lineartempoOut)
И изучаю значения,
тогда становится понятно что ставить в reaper.SetTempoTimeSigMarker
 
Последнее редактирование:
@Aleksandr Oleynik
Да, я считываю с помощью GetTempoTimeSigMarker, потом попробовал изменить некоторые параметры (позицию и bpm) маркера с помощью SetTempoTimeSigMarker и ничего не произошло. Параллельно по синтаксису читаю мануалы. В общем многозадачные процессы в голове. Немного устал уже) Нужно переключится.
 
Доброго времени!

Есть ли скрипт, "притормаживающий" обновление графики в главном окне Рипера?

Объясню свою нужду.

У меня в custom actions есть последовательности, где меняется time selection, клонируются и потом уничтожаются айтемы и т.д. При исполнении этих custom actions интерфейс отрабатывает в бешеном темпе все это графически, что неприятно для глаз и вообще "некашерно" как-то.

До последней версии проблема решалась выбором "lazy update" в настройках графики. При ее выборе графика в ходе исполнения custom actions не отрабатывалась. В последней версии эта настройка была убрана разработчиком.

Ищу альтернативное решение. Если бы был скрипт, замедляющий или приостанавливающий прорисовку (и обратный, восстанавливающий ее) можно было бы ставить эту пару в начале и конце последовательности команд custom actions. И таким образом избежать отображения всего, что между.

Собственно, весь вопрос ))
 
Маркер теперь перемещается за курсором мыши. Детская радость:)

PHP:
--MAIN--------------------------------------------------------------------

local MousPos = reaper.BR_PositionAtMouseCursor( 1 )
if MousPos ~= -1 then
  local Shift_Pos = MousPos+0.4
  local tsm = reaper.FindTempoTimeSigMarker(0,Shift_Pos)
  if tsm then
      local retval, timeposOut, measureposOut, beatposOut, bpmOut, timesig_numOut, timesig_denomOut, lineartempoOut = reaper.GetTempoTimeSigMarker( 0, tsm )
      reaper.SetTempoTimeSigMarker( 0, tsm, MousPos, measureposOut, beatposOut, bpmOut, timesig_numOut, timesig_denomOut, lineartempoOut )
  end
end
----------------------------------------------------
reaper.UpdateTimeline()
 
  • Like
Реакции: Aleksandr Oleynik
Как в миди редакторе получить ноту, стоящую под эдит курсором?
 
@vitalker, нужна функция, которая бы вернула ноту, стоящую под курсором. Но, похоже, нет такой.
Более того, нет даже такой функции как CountSelectedMIDINotes. Вот как быть, если мне нужно просчитать только выделенные ноты?..
 
Последнее редактирование:
Последнее редактирование:
  • Like
Реакции: CerberPic
В доработке, только лично, добавил еще RMS и алгоритм - с ReaComp теперь в ноль вообще - то есть "-inf".
--------------------------------------------------------------
JS vs ReaComp должен в нули уйти, смотреть условия.
[DOUBLEPOST=1513280532][/DOUBLEPOST]
reaper.PreventUIRefresh(+1005000)
Какие-то действия и т.п.
reaper.PreventUIRefresh(-1005000)
Где его скачать? ни в одном рипрезитории его не нашел. !!!SimpleComp1-3(RMS stereo).rar что делать с текстом? Сорри
 

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