Помогите создать экшн / кастом экшн / скрипт (2 онлайн)

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
И, кстати, ни разу не искал удаление - похоже и нет, нужно подумать
Через чанк можно сделать что угодно
Если не трудно сделайте скрипт по Вашему скрипту
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]И посмотрите пожалуйста возможность перемещения выделенного трека последним по списку. Такого скрипта я не у кого не встретил. Последним в папке - да а вот вообще последним нету
 
Последнее редактирование:

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
Все перемещения делаются через удаление и создание нового в новом месте - так что....
[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

CerberPic

Member
17 Фев 2017
70
22
8
35
@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
 

Buyan

Member
19 Апр 2016
137
24
18
40
Белая Церковь
Очень просто - ещё раз "запускаете" скрипт или нажимаете его кнопку на тулбаре.
Один раз клацнули по скрипту - он работает, второй - он перестал работать. Для визуального подтверждения того, что скрипт работает - сделали "светящуюся" во время работы кнопку (програмно сделали).
То есть скрипт останавливается принудительно из вне? По ходу возникает вопрос - как происходит такая остановка? То есть, если допустим сценарий не циклический и он еще в процессе исполнения, то повторный запуск прерывает исполнение? Или если сценарий циклический, то повторный вызов прерывает цикл, или ждет завершения периода цикла и только потом прерывает исполнение? Или остановка скрипта посредством повторного запуска распространяется только на дефер, а "разово срабатывающий" скрипт выполнится до конца? (последнее важно понимать, так-как я пока посредством удержания клавиши циклически запускаю скрипт. Мне важно знать, что будет если повторный запуск произойдет раньше завершения, когда скрипт будет потяжелее и ли у кого-то комп по слабее. Сейчас- то все работает вроде таким образом в тестовом режиме.)

И по ходу возникает еще куча вопросов, но наверное неразумно их здесь все задавать, по крайней мере те, которые можно решить самостоятельно. Вот спустя пару часов и могу уже работать с таблицами и массивами:)
 

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
@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 можно фризить и анфризить треки выделенные скопом
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
То есть, если допустим сценарий не циклический
Сценарий в любом случаи циклический - дефер это цикл 32-34 раза в секунду, а какой нибудь for - миллион циклов в секунду.
Любой цикл перед прекращением работы скрипта будет завершён
[DOUBLEPOST=1513171875][/DOUBLEPOST]
пока посредством удержания клавиши циклически запускаю скрипт.
Мне кажется, что это плохой вариант.
Лучше сделать условие, например - запустили скрипт и он в дефере крутится пока что-то не будет выполненно, а потом остановится сам по себе.
 

Buyan

Member
19 Апр 2016
137
24
18
40
Белая Церковь
Мне кажется, что это плохой вариант.
Вот и я тоже сомневаюсь. Но пока в тестовом режиме использую, для пошаговой отладки удобно, потом нужно будет что-то думать. Пока пытаюсь бороться с маркерами, экспериментирую с параметрами функции reaper.SetTempoTimeSigMarker . Плохо, что нету более детального описания API.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
Плохо, что нету более детального описания API.
Это главная проблема в написании скриптов.
И если функция редко кем используемая, то и референсные скрипты не найдёшь, чтоб подсмотреть.
 

Buyan

Member
19 Апр 2016
137
24
18
40
Белая Церковь
И если функция редко кем используемая, то и референсные скрипты не найдёшь, чтоб подсмотреть
Пока этим и занимаюсь, но пока безуспешно. Еще использую метод научно-аналитического тыка. Изматывающее занятие, но результат какой-ни-какой, а есть.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.063
113
62
Киев
Что я делаю, когда совсем не понятно что отдаёт конкретный параметр в функции -
считываю вначале все параметры в разных ситуациях -
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
 
Последнее редактирование:

Buyan

Member
19 Апр 2016
137
24
18
40
Белая Церковь
@Aleksandr Oleynik
Да, я считываю с помощью GetTempoTimeSigMarker, потом попробовал изменить некоторые параметры (позицию и bpm) маркера с помощью SetTempoTimeSigMarker и ничего не произошло. Параллельно по синтаксису читаю мануалы. В общем многозадачные процессы в голове. Немного устал уже) Нужно переключится.
 

Ortseam

Well-Known Member
28 Фев 2006
2.864
2.851
113
53
Ruthenia Nigra
Доброго времени!

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

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

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

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

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

Собственно, весь вопрос ))
 

Buyan

Member
19 Апр 2016
137
24
18
40
Белая Церковь
Маркер теперь перемещается за курсором мыши. Детская радость:)

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

CerberPic

Member
17 Фев 2017
70
22
8
35
Как в миди редакторе получить ноту, стоящую под эдит курсором?
 

CerberPic

Member
17 Фев 2017
70
22
8
35
@vitalker, нужна функция, которая бы вернула ноту, стоящую под курсором. Но, похоже, нет такой.
Более того, нет даже такой функции как CountSelectedMIDINotes. Вот как быть, если мне нужно просчитать только выделенные ноты?..
 
Последнее редактирование:

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Последнее редактирование:
  • Like
Реакции: CerberPic

Maestro Sound

Active Member
1 Ноя 2007
721
86
28
В доработке, только лично, добавил еще RMS и алгоритм - с ReaComp теперь в ноль вообще - то есть "-inf".
--------------------------------------------------------------
JS vs ReaComp должен в нули уйти, смотреть условия.
[DOUBLEPOST=1513280532][/DOUBLEPOST]
reaper.PreventUIRefresh(+1005000)
Какие-то действия и т.п.
reaper.PreventUIRefresh(-1005000)
Где его скачать? ни в одном рипрезитории его не нашел. !!!SimpleComp1-3(RMS stereo).rar что делать с текстом? Сорри
 

Сейчас онлайн (Пользователей: 0, Гостей: 2)