ReaScripts (скрипты для Reaper) - делимся

Тема в разделе "Reaper", создана пользователем @Michael, 19 июн 2015.

  1. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.266
    Симпатии:
    446
    Удаление контента с выделенного трека без перемещения правой части контента. То есть айтемы и енвелопы. Позже посмотрю вариант для айтемов автоматизации. На первый взгляд не хватает API
    Код:
    reaper.Undo_BeginBlock(1)
    reaper.PreventUIRefresh(1)
    
    
    local count_tracks = reaper.CountSelectedTracks(0)
    local time_selection_start, time_selection_end = reaper.GetSet_LoopTimeRange( 0, 1, 0, 0, 0)
    if time_selection_start == time_selection_end then return end
    
    
    if count_tracks == 0 then return end
    
    
    for i=0, count_tracks-1 do
      local get_track = reaper.GetSelectedTrack(0,i)
      local count_envelopes = reaper.CountTrackEnvelopes(get_track)
      for j=0, count_envelopes-1 do
        local get_envelope = reaper.GetTrackEnvelope(get_track, j)
        local count_points = reaper.CountEnvelopePoints(get_envelope)
        local _, point_value_start, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_start, 0, 0)
        local _, point_value_end, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_end, 0, 0)
        if count_points ~= 0 then
          for h=0, count_points-1 do
            reaper.DeleteEnvelopePointRange(get_envelope, time_selection_start, time_selection_end+0.00000000000001)
          end
        end
        reaper.InsertEnvelopePoint(get_envelope, time_selection_start, point_value_start, 0, 0, 0, 0)
        reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_start, 0, 0, 0, 0)
        reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_end, 0, 0, 0, 0)
      end
     local count_items = reaper.CountTrackMediaItems(get_track)
     for t=count_items, 0, -1 do
      local get_item = reaper.GetTrackMediaItem(get_track, t)
      if get_item then
        reaper.SplitMediaItem( get_item, time_selection_end)
        reaper.SplitMediaItem( get_item, time_selection_start)
      end
     end   
       local count_items_two = reaper.CountTrackMediaItems(get_track)
        for z=count_items_two, 0, -1 do
          local get_item_selection = reaper.GetTrackMediaItem(get_track, z)
          if get_item_selection then
            local info_start = reaper.GetMediaItemInfo_Value(get_item_selection,'D_POSITION')
            if info_start >= time_selection_start and info_start <= time_selection_end-0.00000000000001 then
              reaper.DeleteTrackMediaItem(get_track, get_item_selection)
            end
          end
        end
    end
    
       
         
    reaper.Undo_EndBlock("Remove contents from selected items", -1)
    reaper.UpdateArrange()
    reaper.PreventUIRefresh(-1)
    
    
    
    То же самое для всех треков

    Код:
    reaper.Undo_BeginBlock(1)
    reaper.PreventUIRefresh(1)
    
    
    local count_tracks = reaper.CountTracks(0)
    local time_selection_start, time_selection_end = reaper.GetSet_LoopTimeRange( 0, 1, 0, 0, 0)
    if time_selection_start == time_selection_end then return end
    
    
    if count_tracks == 0 then return end
    
    
    for i=0, count_tracks-1 do
      local get_track = reaper.GetTrack(0,i)
      local count_envelopes = reaper.CountTrackEnvelopes(get_track)
      for j=0, count_envelopes-1 do
        local get_envelope = reaper.GetTrackEnvelope(get_track, j)
        local count_points = reaper.CountEnvelopePoints(get_envelope)
        local _, point_value_start, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_start, 0, 0)
        local _, point_value_end, _, _, _ = reaper.Envelope_Evaluate(get_envelope, time_selection_end, 0, 0)
        if count_points ~= 0 then
          for h=0, count_points-1 do
            reaper.DeleteEnvelopePointRange(get_envelope, time_selection_start, time_selection_end+0.00000000000001)
          end
        end
        reaper.InsertEnvelopePoint(get_envelope, time_selection_start, point_value_start, 0, 0, 0, 0)
        reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_start, 0, 0, 0, 0)
        reaper.InsertEnvelopePoint(get_envelope, time_selection_end, point_value_end, 0, 0, 0, 0)
      end
     local count_items = reaper.CountTrackMediaItems(get_track)
     for t=count_items, 0, -1 do
      local get_item = reaper.GetTrackMediaItem(get_track, t)
      if get_item then
        reaper.SplitMediaItem( get_item, time_selection_end)
        reaper.SplitMediaItem( get_item, time_selection_start)
      end
     end   
       local count_items_two = reaper.CountTrackMediaItems(get_track)
        for z=count_items_two, 0, -1 do
          local get_item_selection = reaper.GetTrackMediaItem(get_track, z)
          if get_item_selection then
            local info_start = reaper.GetMediaItemInfo_Value(get_item_selection,'D_POSITION')
            if info_start >= time_selection_start and info_start <= time_selection_end-0.00000000000001 then
              reaper.DeleteTrackMediaItem(get_track, get_item_selection)
            end
          end
        end
    end
    
       
         
    reaper.Undo_EndBlock("Remove contents from selected items", -1)
    reaper.UpdateArrange()
    reaper.PreventUIRefresh(-1)
    
    
    
     
    Последнее редактирование: 27 дек 2018
    Maestro Sound нравится это.
  2. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    565
    Симпатии:
    61
    @borisuperful, для одиночных итемов (внезависимости от выделенного трека, работать по выделенному итему) для Mouse Modifiers Удобней на не выделенном треке а под курсором мышки
     
    Последнее редактирование: 22 дек 2018
  3. Денис Фет

    Денис Фет Active Member

    Регистрация:
    22 апр 2007
    Сообщения:
    909
    Симпатии:
    235
    Пол:
    Мужской
    Адрес:
    Московская обл. г. Куровское
    А есть скрипт, который выполняет функцию "DeBreath" ? Ну то есть, который вырезает дыхания и т.п.
     
  4. Martin111

    Martin111 Member

    Регистрация:
    18 фев 2015
    Сообщения:
    393
    Симпатии:
    16
    Пол:
    Мужской
    @Денис Фет, такого скрипта нет, потому что ручной метод работы с такими вещами самый управляемый.
     
  5. Денис Фет

    Денис Фет Active Member

    Регистрация:
    22 апр 2007
    Сообщения:
    909
    Симпатии:
    235
    Пол:
    Мужской
    Адрес:
    Московская обл. г. Куровское
    Еще возник вопрос: допустим есть у меня какой-то айтем (ну или группа айтемов) и мне нужно, чтобы этот айтем после копирования сразу вставился в одно из мест, где у меня стоит маркер. Такое возможно?
     
  6. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    559
    Симпатии:
    131
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Вы имеете в виду наверное "эдит-курсор", а не "маркер"?
    если так, то сделайте простой кастом экшн и повесьте его на хоткей

    - Edit: Copy items
    - Item: Paste items/tracks

    Если таки "маркер", то Вам нужно знать его номер и вставить соотв. экшн между "копи" и "пэйст"
    Screenshot_1.png
     
  7. Денис Фет

    Денис Фет Active Member

    Регистрация:
    22 апр 2007
    Сообщения:
    909
    Симпатии:
    235
    Пол:
    Мужской
    Адрес:
    Московская обл. г. Куровское
    \

    Имел в виду именно маркер. Спасибо. Попробую.
     
  8. maksukay

    maksukay New Member

    Регистрация:
    31 дек 2018
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Имеется ли у скрипта возможность определить громкость в какой-либо момент? Если да, то как?
     
  9. MusPro

    MusPro Active Member

    Регистрация:
    20 май 2007
    Сообщения:
    517
    Симпатии:
    126
    Адрес:
    Москва
    Давно хочется одну такую фишку, но пока не придумал как и не нашел.
    Некое подобие Propagate для трека или эффекта. В идеале клонировать эффект и накручивая что-то на одном, автоматически дублировать на его теневые копии(ю).
    Нет ли ничего этакого?
     
  10. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    106
    Симпатии:
    2
    Пол:
    Мужской
    Подскажите пожалуйста.Я где-то давно здесь видел энвелоп компресор который работает на базе envelope volume Reaper.Подскажите где его найти.Спасибо
     
  11. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    3.018
    Симпатии:
    2.471
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    Aleksandr Oleynik нравится это.
  12. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    106
    Симпатии:
    2
    Пол:
    Мужской
    Что это означает. Я нашол етот компресор а как мне сделать чтобы он отображался в рипере.
     
    Последнее редактирование: 11 фев 2019
  13. dima4321

    dima4321 New Member

    Регистрация:
    31 дек 2018
    Сообщения:
    25
    Симпатии:
    1
    Пол:
    Мужской
    Добрый день, где то видел , но потерял..

    Интересует скрипт , который берет сообщения от педали sustian и конвертирует это в удлинение нот , удаляя из айтема соответственно сообщение 64.
     
    shuco нравится это.
  14. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    281
    Симпатии:
    44
    Адрес:
    Новосибирск
    Это скорее в раздел "Помогите создать экшн / кастом экшн / скрипт". Для меня тоже вопрос злободневный, ибо фортепианные треки в этом ключе приходится править через день. Использую вот этот экшн:Edit: Trim right edge of note to edit cursor. Можно сделать кастом в паре вот с этим:Script: Delete Notes Overlaps(poly).lua
     
    Последнее редактирование: 4 мар 2019
  15. dima4321

    dima4321 New Member

    Регистрация:
    31 дек 2018
    Сообщения:
    25
    Симпатии:
    1
    Пол:
    Мужской
    @shuco, соглашусь я бы и сам сделал но в экшн нет ни одного действия , которое бы продлевало ноту например до правой границы выделения или лупа ( так можно было обозначить вручную например ту самую точку педаль of )
     
  16. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    281
    Симпатии:
    44
    Адрес:
    Новосибирск
    dima4321, я себе грубо состряпал скрипт для аранжа и кастом для эдитора. Самое главное работает! Рипер действительно гениален! Я о такой простенькой фиче в кубейсе лет десять мечтал))).
     

    Вложения:

    • ar.gif
      ar.gif
      Размер файла:
      1.002,4 КБ
      Просмотров:
      28
    • edit.gif
      edit.gif
      Размер файла:
      3,2 МБ
      Просмотров:
      28
    Последнее редактирование: 5 мар 2019
    dima4321 нравится это.
  17. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    281
    Симпатии:
    44
    Адрес:
    Новосибирск
     

    Вложения:

    • pedal.jpg
      pedal.jpg
      Размер файла:
      23,1 КБ
      Просмотров:
      13
  18. dima4321

    dima4321 New Member

    Регистрация:
    31 дек 2018
    Сообщения:
    25
    Симпатии:
    1
    Пол:
    Мужской
    @shuco, попробовал, да это хорошая штука. Но т.к. я человек совсем новенький в рипере , проясни пару моментов.

    Скрипт написан на языке eel как я понял , по крайней мере я поставил это расширение в блокнот файле.

    В итоге скрипт работает корректно и в поле arrange и в midi editor.

    Но в миди едиторе почему то после выполнения действия сразу выкидывает в arrange , получается надо каждый раз снова заходить в mid editor и править очередную партию нот. Вместо того чтобы все время сидеть там .

    И прокомментируй вложение pedal , это расширение sws и прописанная последовательность действий в итоге генерирует сам скрипт - код ?
     
  19. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    281
    Симпатии:
    44
    Адрес:
    Новосибирск
    Я сам его месяц только осваиваю.
    Вложение pedal это кастом экшн именно для миди эдитора. А чтобы скрипт не выкидывал обратно в аранж нужно строчку Close MEditor убрать. И первую конечно( "open selected items in primeri MIDI editor")
    Но лучше кастом собрать.
     
    Последнее редактирование: 5 мар 2019
    dima4321 и riko нравится это.
  20. AlEX CAT

    AlEX CAT New Member

    Регистрация:
    25 окт 2018
    Сообщения:
    29
    Симпатии:
    2
    Пол:
    Мужской
    Род занятий:
    SOUND PRODUSER
    Адрес:
    MOSCOW
    Как установить файл Reapack в рипер? Помогите советом.
     
  21. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.482
    Симпатии:
    1.344
    Адрес:
    Гродно
  22. AlEX CAT

    AlEX CAT New Member

    Регистрация:
    25 окт 2018
    Сообщения:
    29
    Симпатии:
    2
    Пол:
    Мужской
    Род занятий:
    SOUND PRODUSER
    Адрес:
    MOSCOW
    @vitalker, Спасибо большое!!!
     
  23. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    565
    Симпатии:
    61
    Пытаюсь загрузить в FXRack.Lua плаги ругается. Кто в курсе? 11111111111.png
     

Поделиться этой страницей