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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
@Diroll, Боюсь, гораздо более прямым решением будет научиться отжимать педаль)
all notes off, хоть и посылается достаточно часто ‒ на самом деле несёт кучу доп нагрузки. Особенно, если представить, что вы переключаете треки во время аранжировки.

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

241407
 
Последнее редактирование:
Да. Это условие работает только для play/stop
@Diroll, а есть ли в Рипере команда для этого? Ну, чтобы экшном отправить note offs или скриптом? Остальное вроде реально сделать.
экшн есть Send all-notes-off and all-sounds-off to all MIDI outputs/plug-ins. Нужен скрипт выполняющий условие запуска этого экшна
 
экшн есть 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
 

Вложения

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

Переименовать в lua
Ура!!! Работает!!! Спасибо вам большое, Максим!!! Я две недели искал решение проблемы) Ещё раз спасибо, вы мне очень помогли!!!
 
Последнее редактирование:
Привет =)
А есть способ привязать изменение размера time selection к изменению размера выделенного айтема?
Чтоб в такой ситуации не приходилось постоянно жать shift+двойной клик:
shift+double click.gif
 

Вложения

  • Like
Реакции: truemanofan и sve
Здравствуйте! Как обрезать записанный айтем по краю предыдущего?
243446

Нашел "Remove content (trim) behind items", но он тримит не в ту сторону. ).
 
Как обрезать записанный айтем по краю предыдущего?
Может кому понадобится.
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
Ковырялся в jsfx(возможно будет полезно реаскриптовикам и плагинописателям пишушим на eel) и случайно(точно не уверен, как предположение) наколупал уязвимость(а может и нет). (аналог потоконебезопасной функции print в ansi c).
Суть проблемы/фичи/бага/глюка/неопределенности:
При использовании переменных с префиксом <_global. > (str и _global.str две разные переменные) открывается лазейка к глобальному буферу(но это не точно, тк возможен более печальный или положительный вариант ) посредством спецификатора для строки. Далее путем адресной арифметики ( перебором значений к указателю глобальной переменной) , возможен перебор всех строчных значений(строковые параметры всех функций, такие как название шрифта,строковая реализация значения со спецификаторами в параметре формат функций printf, gfx_printf) в реализации(те отображается реализация кода параметра функции принт, а не его предполагаемое значение) и выводом на печать(в моем случае был gfx_printf). Вроде бы и баг, но с помощью этой штуки можно хранить свои строки в функции принт(возможно лазейку прикроют). Масштабы проблемы я думаю не особо критичные,но это тоже не точно.....Интересно в движок рипера можно попасть позырить) , скорее всего нет конечно же.....
243815
 
Последнее редактирование:
  • Like
Реакции: Antonio
Ковырялся в jsfx(возможно будет полезно реаскриптовикам и плагинописателям пишушим на eel) и случайно(точно не уверен, как предположение) наколупал уязвимость(а может и нет). (аналог потоконебезопасной функции print в ansi c).
Всё-таки это фича.)(судя по исходникам языка EEL2)
 
  • Like
Реакции: Antonio
Всё-таки это фича.)(судя по исходникам языка EEL2)
Фича фичой, но на проверку(так сказать стресс тестированием, не на бумаге). Удалось (полуавтоматически сгенерировал плаг размером 8МБ с зарезервированным макс потреблением памяти в 34Миллиона слотов(около 256 МБ потребления ОЗУ на треке)) рипер превратить в инвалида 1 группы, почти лежачего вместе с jde,причем по приборам рипера и jde потребление почти в нулину(прям легковес по потреблению, тк в перформанс метре я так понимаю этот момент не учтен), а по факту совсем другая картина более печальная. В итоге из-за оптимизации разрабами потребления памяти(а также динамического выделения памяти) , очень специфичная картинка складывается. Но тест проводился на очень древнем и старом компе, те тест может быть не актуален/ошибочен для другой конфигурации, более мощной.Кому интересно попробовать(было бы интересно услышать также фидбэк от результатов теста) уложить рипер на лопатки ОДНОЙ инстанцией родного же плага, могу поделиться плагом стресс-теста.)
 
  • Wow
  • Like
Реакции: Landre и PianoIst
Всем привет, подскажите пожалуйста можно ли как то через скрипт выделять айтем автоматизации под курсором мыши, не наводя курсор на полосу (которая снизу с названием айтема), а когда курсор находится именно на линии автоматизации тоже, но не на полосе,
Поделитесь если есть скриптом, или хотя бы направьте, какие то команды может есть есть в api ?
Хочу сделать экшен который на 3ью кнопку мыши удаляет айтемы, не удобно выделять автоматизацию когда высота трека автоматизации маленькая.

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

Код:
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
@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)
Просто теперь удаляется и выбранные айтемы автоматизации, даже если курсор на обычном айтеме
 
Последнее редактирование:
Кстати только сегодня узнал, что если повесить удаление айтемов на 3 или 4ую кнопку мыши, то она работает как резинка которой можно стирать что либо то есть не нужно постоянно нажимать на кнопку чтоб стереть то что под курсором мыши:Dle4:
 
@Kokarev Maxim, Почти разобрался сам .Подскажите плиз как удалить выбраный айтем автоматизации через скрипт.
Нашёл такую команду - reaper.GetSetAutomationItemInfo, вроде как если её добавить, то вроде всё должно работать как задумано,
Только я с ёё параметрами не разобрался до конца, может кто знает - что написать чтоб через reaper.GetSetAutomationItemInfo удалялся выделенный айтем автоматизации?
 
  • Like
Реакции: nounaim
Уверен, что Вам такой скрипт тоже будет нужен - "Релятивное (слово какое) выравнивание громкости выделенных айтемов".
Выделил айтемы, run script, появляется панель с фейдером. Двигаешь. Громкость айтемов выравнивается: те кто тише стают громче и наоборот. Причём те, что сильно громкие (или тихие) изменяются шибче. Это как ползунок Strength в миди квантовании: чем дальше ноты, тем быстрее бегут к сетке.
К какому значению бегут? Либо средняя громкость выделенных айтемов, либо можно вручную задавать.
Похожее выравнивание реализовано в Melodyne - macro volume.
Цель: "причесать" громкость (беки, семплы, с-ки на отдельном треке), при этом сохранив живость.
А вот как ровнять: по пиковой или RMS громкости? Это, наверное, смотря какой длины айтемы. Вопрос открытый.
 
  • Like
Реакции: Antonio
@variator, так есть всякая-разная нормализация, в том числи и по LUFS и RMS. В стандартной поставке SWS всё есть.

Мне вот не хватало нормализации всех тейков внутри itemoв, но я, за неимением времени, сделал только один экшн нормализации по пику.
 
  • Like
Реакции: variator
Дорогие гуру скриптотворения, помогите плиз!
Я всю голову себе уже сломал, никак не могу найти элементарной фичи: моментального включения\выключения snap для Take Pitch Envelope... Натурально приходится каждый раз лезть в Preferences.
Сделайте, плиз, скрипт (скрипты?)
В идеале чтобы можно было по кнопке выбирать snap в одном из трёх значений - off, 1 semitone, 25 cent (ну или внести свои юзерные настройки).
Или ткните плиз фейсом об тейбл, если подобная фича есть где-то в экшнах или скриптах.
P.S. А если бы ещё и скрипт, позволяющий моментально выбирать Take Pitch Envelope Range для выделенного тейка - вообще было бы счастье.
 
Дорогие гуру скриптотворения, помогите плиз!
Я всю голову себе уже сломал, никак не могу найти элементарной фичи: моментального включения\выключения snap для Take Pitch Envelope... Натурально приходится каждый раз лезть в Preferences.
Сделайте, плиз, скрипт (скрипты?)
В идеале чтобы можно было по кнопке выбирать snap в одном из трёх значений - off, 1 semitone, 25 cent (ну или внести свои юзерные настройки).
Или ткните плиз фейсом об тейбл, если подобная фича есть где-то в экшнах или скриптах.
P.S. А если бы ещё и скрипт, позволяющий моментально выбирать Take Pitch Envelope Range для выделенного тейка - вообще было бы счастье.
Так это ж (отсутствующий) функционал daw, я даже не представляю, как это можно скриптом сделать. Они только совсем недавно добавили snap для контроллера pitch wheel в миди эдиторе. Может, когда нибудь и до обычных энвелопов доберутся...
 
  • Like
Реакции: diggidon
Дорогие гуру скриптотворения, помогите плиз!
Я всю голову себе уже сломал, никак не могу найти элементарной фичи: моментального включения\выключения snap для Take Pitch Envelope... Натурально приходится каждый раз лезть в Preferences.
Сделайте, плиз, скрипт (скрипты?)
В идеале чтобы можно было по кнопке выбирать snap в одном из трёх значений - off, 1 semitone, 25 cent (ну или внести свои юзерные настройки).
Или ткните плиз фейсом об тейбл, если подобная фича есть где-то в экшнах или скриптах.
P.S. А если бы ещё и скрипт, позволяющий моментально выбирать Take Pitch Envelope Range для выделенного тейка - вообще было бы счастье.
Если только вешать в фон что-то такое
 
  • Like
Реакции: diggidon
Так это ж (отсутствующий) функционал daw, я даже не представляю, как это можно скриптом сделать. Они только совсем недавно добавили snap для контроллера pitch wheel в миди эдиторе. Может, когда нибудь и до обычных энвелопов доберутся...
Но прикол в том, что в Преференсах это всё есть:
247336


Почему это нельзя было вынести в отдельные экшны - ума не приложу.
 

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