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

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

  1. Iskander M

    Iskander M Member

    Регистрация:
    6 мар 2014
    Сообщения:
    123
    Симпатии:
    4
    Адрес:
    Москва
    А куда эти скрипты из папки Inc добавить конкретно? Туда же куда и основной скрипт Envelope-based Compressor?
    Или текста этих скриптов скопировать в текст основного скрипта Envelope-based Compressor?
     
  2. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Iskander M, их не из папки, а вместе с папкой Inc и папкой над этой папкой следует положить в папку Скриптов Рипера. При этом «проинсталить» нужно только основной скрипт.
    Это модули без которых основной скрипт работать не будет.
     
  3. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    Написал такой колхозный скрипт (только начал программировать), но пока это лучшее, что есть для подгона сетки под стретч маркеры, которые в свою очередь можно выставить по транзиентам. Собственно в сравнении с SWS/BR: Create project markers from stretch markers in selected items в связке с SWS/BR: Convert project markers to tempo markers... как-то правильней работает, несмотря на отсутствие настроек, т.к. работает по принципу move closest grid. Собственно если стретч-маркеры стоят по сильны долям, и если есть периодически между ними разрывы (допустим маркеры стоят на расстоянии 2/3/4 доли друг от друга, но не сильно дальше), и если исходный темп проекта не сильно отличается (не вдвое), подгон будет правильным с большой вероятностью. Если же такую ситуацию решить SWS методом, то там, где маркеров не будет, не будет и сетки, что отличает алгоритм работы, и по мне не в лучшую сторону. Здесь же на примере песни средний темп определен, как 118 и сетка равномерно подогналась. Целесообразно также сетку ставить на четверти.
    Код:
    script_title = "Tempo detection"
    
    function main()
      selitem = reaper.GetSelectedMediaItem(0,0)
      take = reaper.GetActiveTake(selitem)
      count =  reaper.CountSelectedMediaItems()
      num = reaper.GetTakeNumStretchMarkers(take)
      result = num*count
    
      cursor_position = reaper.GetCursorPosition()
      startTime, endTime = reaper.BR_GetArrangeView(0)
      reaper.CSurf_OnZoom( 100,0 )
      reaper.Main_OnCommand(41173, 0)
      reaper.Main_OnCommand(40433, 0)
      for i = 1, result do
       reaper.Main_OnCommand (41860, 0)
       commandID = reaper.NamedCommandLookup("_BR_MOVE_GRID_TO_EDIT_CUR")
       reaper.Main_OnCommand(commandID, 0)
      end
      reaper.SetEditCurPos(  cursor_position, 0, 0)
      reaper.BR_SetArrangeView(0, startTime, endTime )
    end
    
    reaper.Undo_BeginBlock()
    reaper.PreventUIRefresh(1)
    main()
    reaper.UpdateArrange()
    reaper.PreventUIRefresh(-1)
    reaper.Undo_EndBlock(script_title,-1)
    
    Пытался его немного автоматизировать по скорости, если несколько выделенных айтемов, и вроде получилось, если сделать count takes вместо count items, но почему-то неправильно тогда работает. Вообще надо писать хороший скрипт на эту тему, возможно даже без использования стретч маркеров, а с учетом ручного транзинета детекшиона
    Гиф
    2018-06-14_16-04-05.gif
     
    Последнее редактирование: 14 июн 2018
  4. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @borisuperful, по транзиентам - там еще фильтр поставить на детектор - будет хорошо. Я не делал, если есть желание - просто возьмите фильтр из каких-то других скриптов, из моих же, например, будет намного эффективнее, это точно, проверено.
    Сам по себе принцип детектирования у меня предельно простой - быстрая огибающая, медленная огибающая, и разница между ними.
    Я пробовал с разными огибающими, rms, разное время атаки, релиза, что угодно. Все это херня, самый большой профит дает СБРОС ПОСЛЕ СРАБАТЫВАНИЯ!
    Тут нужно понять, как все работает - всего один раз понять. Дальше - все очень просто.
     
  5. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @EUGEN27771, да, спасибо, кстати с несколькими айтемами я таким образом решил. Это по поводу скрипта вашего для проставления маркеров (когда-то задавал вопрос)
    Код:
    function MAIN()
    local(j, item, srate, Threshold_dB, Sensitivity_dB, Retrig_sec)
    (
      Undo_BeginBlock();
      Main_OnCommand(41844, 0);  // remove old str-marks(All)
      PreventUIRefresh(1);
      j = 0;
      loop(CountSelectedMediaItems(0),
        item = GetSelectedMediaItem(0, j);
        j += 1;
        item ? (
          //-- Detection settings --
          srate = 44100;
          Threshold_dB   = Thresh.val;
          Sensitivity_dB = Sens.val;
          Retrig_sec     = Retrig.val/1000;
          //------------------------
          start = time_precise();
          DetectTransients(item, srate, Threshold_dB, Sensitivity_dB, Retrig_sec);
          //ShowConsoleMsg(sprintf(#, "%f \n", time_precise()-start); );
        );
      );
      PreventUIRefresh(-1);
      Undo_EndBlock("Add stretch markers at transients",-1);
    );
    
    Если блок графики добавить до remove old str-marks(All), то получается феншуйно, плавненько, но визуально не очень удобно видеть новые маркеры после старых :)
     
    Последнее редактирование: 29 июн 2018
  6. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @borisuperful, наверное, помудрю потом, сделаю детектор с фильтром и доп. настройками.
    Кстати, я знаю что даже такой простой вариант будет работать, он будет прекрасно работать и в реал-тайм, для чего изначально и предназначен.
    Никаких проблем - я старался;)
    --------------------------------------
    Хочу спросить - интересен ли Вам EEL?
    Есть много интересных вещей, заинтересованность решает.
    ---------------------
    Ко мне обращайтесь на "ты".
    (Я же не старик, напротив, совсем молодой;))
     
  7. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @EUGEN27771, мне интересно все, что касается скриптинга рипера, но мне еще нужно основ программирования нахвататься :) Еще конечно документация по API не такая подробная, как хотелось.
     
  8. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Все просто, сплошная логика, в этом и кайф, чисто и красиво. Не нужно ничего учить - решения получаются абсолютно естественными!
     
  9. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Это же тема про скрипты. Хочу пару слов про EEL. Конечно, по сравнению с Lua корявенько - с точки зрения программинга.
    loop, while - это просто пародия
     
  10. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @EUGEN27771, заметил, что скрипт твой для расставления стретч-маркеров медленнее работает на аудио, у которых частота дискретизации больше 44.1 ггц. Возможно ли это оптимизировать?
    UPD собственно, там где srate = 44100, вписал 48000, и теперь как прежде работает, но наоборот на 44.1 медленней. Соответственно далее вписал так srate = GetMediaSourceSampleRate(item); :)
    Теперь на разных сэмплрейтах одинаково быстро работает
     
    Последнее редактирование: 2 июл 2018
    Aleksandr Oleynik нравится это.
  11. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @EUGEN27771, еще, если придраться, заметил также увеличение скорости работы после Glue или рендера внутри проекта. Айтем разумеется один. Думал, что это связано с кэшированием в проджект директории, но при попытке поставить в настройках кэширование медиа айтема в директорию при импорте в проект ничего не изменилось. Есть какие мысли по этому поводу? :)
    UPD Нашел собаку, это связано с mp3 :)
     
    Последнее редактирование: 2 июл 2018
    Aleksandr Oleynik нравится это.
  12. Mixandry

    Mixandry New Member

    Регистрация:
    26 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Привет ребята! Подскажите пожалуйста, а то я все перерыл в Рипере не могу найти функцию выделения области по выделенному айтому, как это реализовано в Кубейсе на кнопке P.
    Часто надо выделить область точно по выделенному айтому приходится подгонять вручную.
    Так же не нашел где включается привязка к началу и концу айтома при выделении области.
     
  13. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Mixandry, за один и тот же вопрос в разных темах на этом Форуме можно отправится в бан - вам нужно не только мануал Рипера, но и правили форума почитать.
     
  14. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    Кому может пригодится.
    Благо в последней бете Джастин добавил возможность назначать для колеса мыши сочетания с клавишей win, что раньше работало только для шорткатов, появился смысл создания "колесных" скриптов
    1) Скрипт для релугирования по колесу pitch айтема - первый регулирует semitones, второй fine.

    semitones
    Код:
    script_title = "pitch mouswheel"
    local _,_,_,_,_,_,val = reaper.get_action_context()
    
    
    local count = reaper.CountSelectedMediaItems()
    
    function Pitch()
    if val > 0 then
       reaper.PreventUIRefresh(1)
        for i = 0, count-1 do
        count = reaper.CountSelectedMediaItems()
        selitem = reaper.GetSelectedMediaItem(0,i)
        take =  reaper.GetActiveTake(selitem)
        pitch = reaper.GetMediaItemTakeInfo_Value(take, 'D_PITCH' )
        reaper.SetMediaItemTakeInfo_Value(take, 'D_PITCH', pitch+1)
        reaper.UpdateItemInProject(selitem)
        end
       reaper.PreventUIRefresh(-1)
       end
    if val < 0 then
       reaper.PreventUIRefresh(1)
        for i = 0, count-1 do
        count = reaper.CountSelectedMediaItems()
        selitem = reaper.GetSelectedMediaItem(0,i)
        take =  reaper.GetActiveTake(selitem)
        pitch = reaper.GetMediaItemTakeInfo_Value(take, 'D_PITCH' )
        reaper.SetMediaItemTakeInfo_Value(take, 'D_PITCH', pitch-1)
        reaper.UpdateItemInProject(selitem)
        end
       reaper.PreventUIRefresh(-1)
      end
    end
    
    reaper.defer(Pitch)

    fine
    Код:
    script_title = "pitch mouswheel"
    local _,_,_,_,_,_,val = reaper.get_action_context()
    
    
    local count = reaper.CountSelectedMediaItems()
    
    function Pitch()
    if val > 0 then
       reaper.PreventUIRefresh(1)
        for i = 0, count-1 do
        count = reaper.CountSelectedMediaItems()
        selitem = reaper.GetSelectedMediaItem(0,i)
        take =  reaper.GetActiveTake(selitem)
        pitch = reaper.GetMediaItemTakeInfo_Value(take, 'D_PITCH' )
        reaper.SetMediaItemTakeInfo_Value(take, 'D_PITCH', pitch+0.01)
        reaper.UpdateItemInProject(selitem)
        end
       reaper.PreventUIRefresh(-1)
       end
    if val < 0 then
       reaper.PreventUIRefresh(1)
        for i = 0, count-1 do
        count = reaper.CountSelectedMediaItems()
        selitem = reaper.GetSelectedMediaItem(0,i)
        take =  reaper.GetActiveTake(selitem)
        pitch = reaper.GetMediaItemTakeInfo_Value(take, 'D_PITCH' )
        reaper.SetMediaItemTakeInfo_Value(take, 'D_PITCH', pitch-0.01)
        reaper.UpdateItemInProject(selitem)
        end
       reaper.PreventUIRefresh(-1)
      end
    end
    
    reaper.defer(Pitch)

    2) Скрипт для панорамирования айтема по колесу
    Код:
    script_title = "pan mouswheel"
    local _,_,_,_,_,_,val = reaper.get_action_context()
    
    
    local count = reaper.CountSelectedMediaItems()
    
    function Pan()
    if val < 0 then
       reaper.PreventUIRefresh(1)
        for i = 0, count-1 do
        count = reaper.CountSelectedMediaItems()
        selitem = reaper.GetSelectedMediaItem(0,i)
        take =  reaper.GetActiveTake(selitem)
        pan = reaper.GetMediaItemTakeInfo_Value(take, 'D_PAN' )
        reaper.SetMediaItemTakeInfo_Value(take, 'D_PAN', pan+0.1)
        reaper.UpdateItemInProject(selitem)
        end
       reaper.PreventUIRefresh(-1)
       end
    if val > 0 then
       reaper.PreventUIRefresh(1)
        for i = 0, count-1 do
        count = reaper.CountSelectedMediaItems()
        selitem = reaper.GetSelectedMediaItem(0,i)
        take =  reaper.GetActiveTake(selitem)
        pan = reaper.GetMediaItemTakeInfo_Value(take, 'D_PAN' )
        reaper.SetMediaItemTakeInfo_Value(take, 'D_PAN', pan-0.1)
        reaper.UpdateItemInProject(selitem)
        end
       reaper.PreventUIRefresh(-1)
      end
    end
    
    reaper.defer(Pan)
    
     
    Последнее редактирование: 1 авг 2018
    elektrozz нравится это.
  15. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @borisuperful, вот и все;)
    Заведи на github страницу. Клонируй частный репо. Это просто.
    Даже такой дятел, как я завел, десктоп-версию.
    Ссылка верная, если нет - удалю - https://desktop.github.com
    Синхрон, это удобно...по крайней мере.
    (Еще есть мнение "Десктоп - это лажа, только православная командная строка!"
    ХЗ... Можно согласиться, но пользоваться неудобно, как не разукрашивай. Даже клацая в терминале - неудобно. 98% людей без напильников выберут десктоп)
     
    Последнее редактирование: 18 июл 2018
  16. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Хочу спросить, кто-то подробнее распишите -
    + ReaScript: add drag and drop receive support with gfx.getdropfile()/gfx_getdropfile()

    + ReaScript: allow deferred script execution to continue during modal windows triggered by MIDI
    + ReaScript: StuffMIDIMessage() for control defers to process similar to a hardware MIDI event

    Про перетаскивание давно слышал - буду тестить. По ходу - и в JS заводится!
    Два последних пункта пока не могу проверить
     
  17. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Это я давно нашел. Акцессор, конечно, работает быстрее с родным семплрейт.
    Если посмотреть на алгоритм компрессора - там все это учтено, и я описал в деталях, что делаю. Поэтому там относительно мутный алгоритм.
    С учетом плейрейт, и прочего, но не просто так. То есть, сперва, все выравнивается под реальный рейт, компрессируется именно в таком, именно в сыром виде, а затем восстанавливается исходная ситуация. Это хороший ход - во-первых - скорость, во-вторых - точность работы. Работа именно с исходным файлом.
     
  18. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    Это Михаил просил для своего скрипта RS5k manager, вот там она и реализована.
    Теперь ещё можно использовать контекстные меню(с версии 5.92): ReaScript: add ShowPopupMenu() API
     
    EUGEN27771 и Aleksandr Oleynik нравится это.
  19. mitishna

    mitishna New Member

    Регистрация:
    14 янв 2007
    Сообщения:
    19
    Симпатии:
    1
    Адрес:
    Alma-Ata
    А можно сделать так,что бы Reaper работал с ключами Pro Tools??.
     
  20. YuriOl

    YuriOl Active Member

    Регистрация:
    6 май 2005
    Сообщения:
    505
    Симпатии:
    102
    Пол:
    Мужской
    Адрес:
    Луганск
    А как избавиться от выскакивающего меню пуск в нижнем левом углу монитора при использовании кнопки Win?
     
  21. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @YuriOl, не использовать один shift
     
  22. Barto

    Barto Member

    Регистрация:
    20 апр 2017
    Сообщения:
    41
    Симпатии:
    76
    Пол:
    Мужской
    а можете поподробнее, как именно его не использовать, чтобы меню пуск перестало выскакивать?
     
  23. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @Barto, как написал, так и написал "не использовать один shift". Только при шифте кнопка уводит в пуск, во всяком случае у меня на 8.1. Если что нибудь будет другое, даже вместе с shift, то не уйдет в пуск
     
  24. YuriOl

    YuriOl Active Member

    Регистрация:
    6 май 2005
    Сообщения:
    505
    Симпатии:
    102
    Пол:
    Мужской
    Адрес:
    Луганск
    У меня на Win 10 наоборот. С шифтом не выскакивает меню пуск.
     
  25. Barto

    Barto Member

    Регистрация:
    20 апр 2017
    Сообщения:
    41
    Симпатии:
    76
    Пол:
    Мужской
    @borisuperful , то есть просто Win+колесо использовать никак не выйдет?
    У меня windows 7, в пуск уплясывает только если нажать одну Win, или +колесо мыши покрутить, при любых других комбинациях в пуск не уходит.
    У нас тут прям басня "Лебедь, рак и щука" получается. Кнопка одна, а винда у всех разная, и тянут они пуск в разные стороны.
     
  26. elektrozz

    elektrozz Active Member

    Регистрация:
    12 авг 2009
    Сообщения:
    310
    Симпатии:
    108
    Пол:
    Мужской
    Род занятий:
    Sound Prod
    а можно сделать такой же скрипт, только на октаву?
    и кстати скрипт не работает
    Снимок.PNG
     
    Последнее редактирование: 27 июл 2018
  27. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @elektrozz, даже не знаю, в чем дело. На октаву можно, просто поменять там pitch+12 и pitch-12
    @Barto, разумеется с одним win работать не будет и это логично - win и сделана для вызова пуска, причем именно в случае зависонов, минуя как бы саму программу.
     
    Последнее редактирование: 1 авг 2018
  28. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
    me2beats_Show-hide children of selected tracks.lua !!!!!!!!!! Друзья скриптоиды. А можно ли данный скрипт про абгрейдить, чтобы он работал не только с фолд-треком скрывая его подтреки, а и с обычным треком. Тобишь указать скрипту если данный трек является фолдер треком то Работает как работает (скрывать-показывать его подтреки). А если это подтрек или просто трек то просто скрывать его одного.
     
    YuriOl нравится это.
  29. allure52

    allure52 New Member

    Регистрация:
    4 ноя 2017
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Track Manager Ctrl+Shift+M - как вариант
     
  30. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    Можно всё, что угодно. Но разбираться с чужим скриптом - очень не хочется.
     
  31. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    840
    Симпатии:
    1.266
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Немного поправил первый пост. Если кому есть что дополнить (ссылки и прочие интересности) - дополню.
     
  32. YuriOl

    YuriOl Active Member

    Регистрация:
    6 май 2005
    Сообщения:
    505
    Симпатии:
    102
    Пол:
    Мужской
    Адрес:
    Луганск
    А свой такой можно написать? Очень бы удобно было бы!
     
    Maestro Sound нравится это.
  33. Дима Горелик

    Дима Горелик New Member

    Регистрация:
    25 июл 2017
    Сообщения:
    14
    Симпатии:
    8
    Пол:
    Мужской
    Здравствуйте, друзья! Существует ли скрипт для синхронизации трэков решающий проблемы с несинхронными Word Clock-ами? К примеру есть два одинаковых , но разных по качеству трека записанных одновременно на концерте разными устройствами (Скажем, один из них - это multi-miked multitrack, а другой сумма). У них разный Word Clock и по времени они плывут? Вопрос, есть ли скрипт, который может их синхронизировать. (То есть не менять длину нот stretch marker-ами) а просто в нужных местах, скажем каждые 20 секунд split items и подвигать айтем синхронизируя его с исходником.
     
  34. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Дима Горелик, такой задачи не существует. Записанные треки синхронизировать как то иначе, чем кинуть на разные дорожки в Reaper - не нужно!
    Если они, как вы написали выше, «плывут», то это скорее всего проблема музыкантов (не ритмично игравших), либо (если это была одновременная запись) - какие то сумасшедшие проблемы дивайсов или кривых рук тех, кто писал.
    Встречал таких ламеров, которые ухитрялись писать с устройства синхорнизированного в 48 kHz в DAW с частотой 44,1 kHz. Такую хрень нужно разбирать отдельно, возвращая в нормальную частоту исходники перед их использованием.
     
  35. maxsizeprod

    maxsizeprod New Member

    Регистрация:
    20 май 2018
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Скрипт проверяет есть ли time selection, если есть - убирает его, если нет - закрывает плавающие окна.
    Зависит от SWS Extension (если sws не установлен - закрывать окна не будет).

    Юзкейс: вешаешь скрипт на "esc", и в midi редакторе по первому нажатию esc убирает time selection если он есть, если нет - закрывает midi редактор.
    Зачем: по умолчанию в контексте окна аранжировки по esc убирается time selection, а в контексте midi редактора - закрывается midi редактор. Мне это доставляло боль. Поведение, реализованное в скрипте, мне кажется более логичным.
    script_show.gif
     

    Вложения:

    Последнее редактирование: 6 окт 2018
  36. Alexmolecul

    Alexmolecul Active Member

    Регистрация:
    19 апр 2010
    Сообщения:
    280
    Симпатии:
    86
    Пол:
    Мужской
    Род занятий:
    vk.com/alexmoleculprod moleculband.ru
    Адрес:
    Moscow
  37. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    думаю в -
     
  38. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @Alexmolecul, порог ниже попробуйте. Вообще, это скрипт очень старый, множество недостатков.
    Этот лучше - https://raw.githubusercontent.com/EUGEN27771/ReaScripts/master/Various/gen_Envelope-based Deesser.eel
    Тоже строит огибающую, только иначе - работает как многие плагины(подобный алгоритм), плюс намного, в разы быстрее.
    ---------------------------------------
    По поводу картинки. В первом скрипте есть картинка, во втором нет.
    Первый скрипт на Lua, там проще - картинку какую-никакую нарисовал, но сам алгоритм корявый.
    Второй скрипт на EEL, на момент написания сделать картинку мне было действительно трудно, но там алгоритм нормальный. Картинку на данный момент сделать не так сложно. Если все же сделаю - она может пойти сразу на диэссер, компрессор, гейт, транзиент-детектор и триггер. Поэтому, смысл вроде бы есть.
     
    Последнее редактирование: 9 окт 2018
    Wefilev, Moyses, sve и 5 другим нравится это.
  39. Alexmolecul

    Alexmolecul Active Member

    Регистрация:
    19 апр 2010
    Сообщения:
    280
    Симпатии:
    86
    Пол:
    Мужской
    Род занятий:
    vk.com/alexmoleculprod moleculband.ru
    Адрес:
    Moscow
    @EUGEN27771, ситуация такая, я "подравниваю" огибающую громкости с помощью скрипта gen_Envelope-based Compressor.eel, а потом хотел бы еще и "с" ки убавить скриптом gen_Envelope-based Deesser.eel, но разумеется огибающая каждый раз создается заново, обнуляя предыдущую, можно как то совместить эти скрипты или сделать, чтобы они друг друга не отменяли?
     
  40. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Alexmolecul, можно- делаете айтему Glue после первого скрипта , потом применяете второй.
     
    sve нравится это.
  41. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    Простенький скрипт, чтобы увеличивать/уменьшать отображение пиков без необходимости нажимать на shift+стрелки, достаточно в нужную сторону покрутить колесо
    Код:
    local _,_,_,_,_,_,val = reaper.get_action_context() 
    
    function Peaks()
    if val > 0 then
    reaper.Main_OnCommand(40155, 0)
    end
    if val < 0 then
    reaper.Main_OnCommand(40156, 0)
    end
    end
    
    reaper.defer(Peaks)
    
     
    BAYANBAYAN нравится это.
  42. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    В идеале надо просто эту функцию интегрировать, чтобы кривая формировалась как и в зависимости от настроек компрессора, так и в зависимости от настроек де-эссера, одновременно и вместе
     
    Alexmolecul нравится это.
  43. Nagor

    Nagor Active Member

    Регистрация:
    4 окт 2010
    Сообщения:
    493
    Симпатии:
    65
    @borisuperful, увеличивает/уменьшает на всех треках, или на выделенном?
     
  44. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @Nagor, это для айтемов работает. Да как угодно, хоть для всех. Но если айтемов много, то может начать тупить при детектировании транзиентов
     
    Nagor нравится это.
  45. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    Скрипт чтобы удалять нечетные стретч-маркеры. Чтобы были четные, в DeleteTakeStretchMarkers где i-1, поставить i+1
    Код:
    script_title = "Remove every odd stretch marker"
    reaper.Undo_BeginBlock()
    reaper.PreventUIRefresh(1)
    
    function main()
    count_items = reaper.CountSelectedMediaItems()
    for i = 0, count_items-1 do
      selitem = reaper.GetSelectedMediaItem(0,i)
      if selitem == nil then return end
      take = reaper.GetActiveTake(selitem)
      num = reaper.GetTakeNumStretchMarkers(take)
      for i = 0, num-1 do
       retval, pos, srcpos = reaper.GetTakeStretchMarker( take, 0 )
       reaper.DeleteTakeStretchMarkers( take, i-1,1 )
      end
    end
    end
    
    main()
    
    reaper.UpdateArrange()
    reaper.PreventUIRefresh(-1)
    reaper.Undo_EndBlock(script_title,-1)
    
     
  46. BAYANBAYAN

    BAYANBAYAN Active Member

    Регистрация:
    4 мар 2010
    Сообщения:
    163
    Симпатии:
    67
    Подскажите, я правильно понял, что это надо назначать на колесо мыши в модификаторах? А в каком разделе модификатора?
     
  47. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @BAYANBAYAN, нет, action list. При вписывавнии шотрката нужно задать любое сочетание shift alt ctrl win, и крутануть колесо
     
    BAYANBAYAN нравится это.
  48. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.044
    Симпатии:
    330
    @Nagor, а. я ж про другое подумал :)) Если про peak view, да, на всех конечно. Это штатная фишка, которую интегрировал в колесо
     
    Последнее редактирование: 18 окт 2018
    Nagor нравится это.

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