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

PianoIst

Well-Known Member
19 Май 2010
4.101
4.155
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@Diroll, Боюсь, гораздо более прямым решением будет научиться отжимать педаль)
all notes off, хоть и посылается достаточно часто ‒ на самом деле несёт кучу доп нагрузки. Особенно, если представить, что вы переключаете треки во время аранжировки.

То что педаль не отпускается ‒ это лишь специфика работы MIDI как такового. Вы установили CC64 в положение 127. Но не установили в положение 0. Немножко самоорганизации ‒ и эта проблема вас тревожить не будет.
 

Diroll

New Member
22 Янв 2008
5
0
1
Последнее редактирование:

Diroll

New Member
22 Янв 2008
5
0
1
Да. Это условие работает только для play/stop
@Diroll, а есть ли в Рипере команда для этого? Ну, чтобы экшном отправить note offs или скриптом? Остальное вроде реально сделать.
экшн есть Send all-notes-off and all-sounds-off to all MIDI outputs/plug-ins. Нужен скрипт выполняющий условие запуска этого экшна
 

Kokarev Maxim

ex cool
13 Май 2007
5.311
4.426
113
44
Барнаул
recording-studio.ru
экшн есть Send all-notes-off and all-sounds-off to all MIDI outputs/plug-ins. Нужен скрипт выполняющий условие запуска этого экшна
Готово.
Это Defer скрипт: после запуска, он непрерывно работает. Рекомендую назначить его на кнопку тулбара, чтобы отключать, когда он не требуется.
Принцип работы: срабатывает только в момент смены трека, запускает экшн "Send all-notes-off and all-sounds-off to all MIDI outputs/plug-ins".

Переименовать в lua
 

Вложения

Diroll

New Member
22 Янв 2008
5
0
1
Готово.
Это Defer скрипт: после запуска, он непрерывно работает. Рекомендую назначить его на кнопку тулбара, чтобы отключать, когда он не требуется.
Принцип работы: срабатывает только в момент смены трека, запускает экшн "Send all-notes-off and all-sounds-off to all MIDI outputs/plug-ins".

Переименовать в lua
Ура!!! Работает!!! Спасибо вам большое, Максим!!! Я две недели искал решение проблемы) Ещё раз спасибо, вы мне очень помогли!!!
 
Последнее редактирование:

truemanofan

Active Member
2 Июн 2019
170
172
43
Привет =)
А есть способ привязать изменение размера time selection к изменению размера выделенного айтема?
Чтоб в такой ситуации не приходилось постоянно жать shift+двойной клик:
shift+double click.gif
 

Kokarev Maxim

ex cool
13 Май 2007
5.311
4.426
113
44
Барнаул
recording-studio.ru

Вложения

  • Like
Реакции: truemanofan и sve

variator

Active Member
9 Сен 2008
414
45
28
Здравствуйте! Как обрезать записанный айтем по краю предыдущего?
243446

Нашел "Remove content (trim) behind items", но он тримит не в ту сторону. ).
 

variator

Active Member
9 Сен 2008
414
45
28
Как обрезать записанный айтем по краю предыдущего?
Может кому понадобится.
Custom: Trim before items
SWS/BR: Save edit cursor position, slot 02
Script: X-Raym_Move edit cursor to next frame.lua
Script: rodilab_Move cursor right to nearest item edge in selected tracks.lua
SWS: Move cursor left by default fade length
SWS/AW: Trim selected items to selection or cursor (crop)
SWS/BR: Restore edit cursor position, slot 02

Script: X-Raym_Move edit cursor to next frame.lua добавил, потому что без него иногда не срабатывает
 
  • Like
Реакции: Antonio

Trasher

Well-Known Member
12 Янв 2013
631
441
63
Ковырялся в jsfx(возможно будет полезно реаскриптовикам и плагинописателям пишушим на eel) и случайно(точно не уверен, как предположение) наколупал уязвимость(а может и нет). (аналог потоконебезопасной функции print в ansi c).
Суть проблемы/фичи/бага/глюка/неопределенности:
При использовании переменных с префиксом <_global. > (str и _global.str две разные переменные) открывается лазейка к глобальному буферу(но это не точно, тк возможен более печальный или положительный вариант ) посредством спецификатора для строки. Далее путем адресной арифметики ( перебором значений к указателю глобальной переменной) , возможен перебор всех строчных значений(строковые параметры всех функций, такие как название шрифта,строковая реализация значения со спецификаторами в параметре формат функций printf, gfx_printf) в реализации(те отображается реализация кода параметра функции принт, а не его предполагаемое значение) и выводом на печать(в моем случае был gfx_printf). Вроде бы и баг, но с помощью этой штуки можно хранить свои строки в функции принт(возможно лазейку прикроют). Масштабы проблемы я думаю не особо критичные,но это тоже не точно.....Интересно в движок рипера можно попасть позырить) , скорее всего нет конечно же.....
243815
 
Последнее редактирование:
  • Like
Реакции: Antonio

Trasher

Well-Known Member
12 Янв 2013
631
441
63
Ковырялся в jsfx(возможно будет полезно реаскриптовикам и плагинописателям пишушим на eel) и случайно(точно не уверен, как предположение) наколупал уязвимость(а может и нет). (аналог потоконебезопасной функции print в ansi c).
Всё-таки это фича.)(судя по исходникам языка EEL2)
 
  • Like
Реакции: Antonio

Trasher

Well-Known Member
12 Янв 2013
631
441
63
Всё-таки это фича.)(судя по исходникам языка EEL2)
Фича фичой, но на проверку(так сказать стресс тестированием, не на бумаге). Удалось (полуавтоматически сгенерировал плаг размером 8МБ с зарезервированным макс потреблением памяти в 34Миллиона слотов(около 256 МБ потребления ОЗУ на треке)) рипер превратить в инвалида 1 группы, почти лежачего вместе с jde,причем по приборам рипера и jde потребление почти в нулину(прям легковес по потреблению, тк в перформанс метре я так понимаю этот момент не учтен), а по факту совсем другая картина более печальная. В итоге из-за оптимизации разрабами потребления памяти(а также динамического выделения памяти) , очень специфичная картинка складывается. Но тест проводился на очень древнем и старом компе, те тест может быть не актуален/ошибочен для другой конфигурации, более мощной.Кому интересно попробовать(было бы интересно услышать также фидбэк от результатов теста) уложить рипер на лопатки ОДНОЙ инстанцией родного же плага, могу поделиться плагом стресс-теста.)
 
  • Wow
  • Like
Реакции: Landre и PianoIst

nounaim

Active Member
29 Авг 2010
284
52
28
Всем привет, подскажите пожалуйста можно ли как то через скрипт выделять айтем автоматизации под курсором мыши, не наводя курсор на полосу (которая снизу с названием айтема), а когда курсор находится именно на линии автоматизации тоже, но не на полосе,
Поделитесь если есть скриптом, или хотя бы направьте, какие то команды может есть есть в api ?
Хочу сделать экшен который на 3ью кнопку мыши удаляет айтемы, не удобно выделять автоматизацию когда высота трека автоматизации маленькая.

Поскроей бы разрабы сделали стирательную резинку как в миди эдиторе , которая все удаляет вообще когда мышкой нажатой ведёшь))..
 
Последнее редактирование:

Kokarev Maxim

ex cool
13 Май 2007
5.311
4.426
113
44
Барнаул
recording-studio.ru
можно ли как то через скрипт выделять айтем автоматизации под курсором мыши, не наводя курсор на полосу (которая снизу с названием айтема), а когда курсор находится именно на линии автоматизации тоже, но не на полосе
Ага, вот так:

Код:
track = reaper.GetSelectedTrack(0,0) -- берём выделенный трек

if track then

    reaper.Main_OnCommand(reaper.NamedCommandLookup("_BR_SEL_ENV_MOUSE"),0) -- выделяем envelope под мышкой (нужен sws)
    env_sel = reaper.GetSelectedTrackEnvelope(0) -- берём выделенную envelope
    if env_sel then
      count_auto_item = reaper.CountAutomationItems( env_sel )
      if count_auto_item then
        for idx = count_auto_item-1, 0, -1 do
          pos =  reaper.GetSetAutomationItemInfo( env_sel, idx, 'D_POSITION', 0, 0 ) -- берём старт айтема
          lngth =  reaper.GetSetAutomationItemInfo( env_sel, idx, 'D_LENGTH', 0, 0 ) --
          item_end = pos+lngth -- берём конец айтема
          cur_pos = reaper.BR_PositionAtMouseCursor(0) -- берём позицию курсора мыши (нужен sws)

          if cur_pos >= pos and cur_pos <= item_end then -- если курсор мыши в пределах айтема, то...
              reaper.GetSetAutomationItemInfo( env_sel, idx, 'D_UISEL', 1, 1 ) -- ...выделяем айтем
          end
        end
      end
    end

end
reaper.UpdateArrange()
Сходу две особенности: скрипт не учитывает play rate айтемов и не переключает выделение (если были выделенные айтемы, он добавит к выделению айтем под мышью. логичнее перед ним сбрасывать выделение всех айтемов).
 
Последнее редактирование:
  • Like
Реакции: nounaim

nounaim

Active Member
29 Авг 2010
284
52
28
@Kokarev Maxim, А можно ещё вопрос - как сделать проверку - что находиться под курсором мыши - айтем автоматизации или аудио/миди айтем?
И если выбрана автоматизация то удалял бы только её и наоборот если выбран обычный айтем то его?
Форматирование (BB-код):
track = reaper.GetSelectedTrack(0,0) -- берём выделенный трек

if track then

    reaper.Main_OnCommand(reaper.NamedCommandLookup("_BR_SEL_ENV_MOUSE"),0) -- выделяем envelope под мышкой (нужен sws)
    env_sel = reaper.GetSelectedTrackEnvelope(0) -- берём выделенную envelope
    if env_sel then
      count_auto_item = reaper.CountAutomationItems( env_sel )
      if count_auto_item then
        for idx = count_auto_item-1, 0, -1 do
          pos =  reaper.GetSetAutomationItemInfo( env_sel, idx, 'D_POSITION', 0, 0 ) -- берём старт айтема
          lngth =  reaper.GetSetAutomationItemInfo( env_sel, idx, 'D_LENGTH', 0, 0 ) --
          item_end = pos+lngth -- берём конец айтема
          cur_pos = reaper.BR_PositionAtMouseCursor(0) -- берём позицию курсора мыши (нужен sws)

          if cur_pos >= pos and cur_pos <= item_end then -- если курсор мыши в пределах айтема, то...
              reaper.GetSetAutomationItemInfo( env_sel, idx, 'D_UISEL', 1, 1 ) -- ...выделяем айтем
          end
        end
      end
    end

end
reaper.UpdateArrange()

--SELECT ITEM UNDER CURSOR
reaper.Main_OnCommand(40528, 0);

--delete items
reaper.Main_OnCommand(40006, 0);

--delete envelope points
reaper.Main_OnCommand(reaper.NamedCommandLookup("_BR_DEL_ENV_PT_MOUSE"),0)
Просто теперь удаляется и выбранные айтемы автоматизации, даже если курсор на обычном айтеме
 
Последнее редактирование:

nounaim

Active Member
29 Авг 2010
284
52
28
Кстати только сегодня узнал, что если повесить удаление айтемов на 3 или 4ую кнопку мыши, то она работает как резинка которой можно стирать что либо то есть не нужно постоянно нажимать на кнопку чтоб стереть то что под курсором мыши:Dle4:
 

nounaim

Active Member
29 Авг 2010
284
52
28
@Kokarev Maxim, Почти разобрался сам .Подскажите плиз как удалить выбраный айтем автоматизации через скрипт.
Нашёл такую команду - reaper.GetSetAutomationItemInfo, вроде как если её добавить, то вроде всё должно работать как задумано,
Только я с ёё параметрами не разобрался до конца, может кто знает - что написать чтоб через reaper.GetSetAutomationItemInfo удалялся выделенный айтем автоматизации?
 

Kokarev Maxim

ex cool
13 Май 2007
5.311
4.426
113
44
Барнаул
recording-studio.ru
  • Like
Реакции: nounaim

variator

Active Member
9 Сен 2008
414
45
28
Уверен, что Вам такой скрипт тоже будет нужен - "Релятивное (слово какое) выравнивание громкости выделенных айтемов".
Выделил айтемы, run script, появляется панель с фейдером. Двигаешь. Громкость айтемов выравнивается: те кто тише стают громче и наоборот. Причём те, что сильно громкие (или тихие) изменяются шибче. Это как ползунок Strength в миди квантовании: чем дальше ноты, тем быстрее бегут к сетке.
К какому значению бегут? Либо средняя громкость выделенных айтемов, либо можно вручную задавать.
Похожее выравнивание реализовано в Melodyne - macro volume.
Цель: "причесать" громкость (беки, семплы, с-ки на отдельном треке), при этом сохранив живость.
А вот как ровнять: по пиковой или RMS громкости? Это, наверное, смотря какой длины айтемы. Вопрос открытый.
 
  • Like
Реакции: Antonio

PianoIst

Well-Known Member
19 Май 2010
4.101
4.155
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@variator, так есть всякая-разная нормализация, в том числи и по LUFS и RMS. В стандартной поставке SWS всё есть.

Мне вот не хватало нормализации всех тейков внутри itemoв, но я, за неимением времени, сделал только один экшн нормализации по пику.
 
  • Like
Реакции: variator

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