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

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

     
  1. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    13.148
    Симпатии:
    6.238
    Пол:
    Мужской
    Адрес:
    Киев
    Ок, я просто с миди вообще почти не имею дело, только с живяком.
    Но раз есть возможность принять одну и ту-же ноту с разных каналов, с разных миди инструментов в один айтем (на один трек) и они могут наложиться друг на друга, то Рипер просто обязан с ними как-то корректно работать.
    Пока я вижу, что это не так.
    --- добавлено 7 сен 2017 ---
    @EUGEN27771, всё что ты написал про миди протокол и его ограничения - верно. Но вот ситуация когда наложившиеся друг на друга ноты имеют разные каналы - абсолютно легальна и должна правильно обрабатываться и Рипером и его API для скриптов.
    PS: И я проверил - таки правильно и обрабатывается!
    См. ниже
     
    Последнее редактирование: 7 сен 2017
  2. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    13.148
    Симпатии:
    6.238
    Пол:
    Мужской
    Адрес:
    Киев
    @lil-burn,
    А теперь измените у перекрывающихся нот каналы - и вашим же test note.lua получите корректные данные об обоих нотах.
    Вывод - в скриптах нужно для подобных нот в начале менять каналы, затем делать все действия нужные, а потом каналы возвращать.
    Хотя повторюсь - одна и та-же нота, находящаяся на одном канале дважды помещённая с перекрытием - нонсенс с точки зрения МИДИ.
     
    lil-burn нравится это.
  3. lil-burn

    lil-burn Well-Known Member

    Регистрация:
    15 авг 2012
    Сообщения:
    891
    Симпатии:
    598
    Пол:
    Мужской
    Адрес:
    Екатеринбург
    @Aleksandr Oleynik, за инфу по каналам спасибо, может пригодиться для получения отображаемого конца нот, но согласитесь - гораздо удобнее иметь специальную функцию для этого. Этот вопрос решал в последнем скрипте (который выше - Shuffle notes) немного по-другому, но тоже обходными путями - с помощью API функции DeleteNote(): прибегаем по каждой ноте от 1 до последней и для каждой из них сначала запоминаем все ее параметры (типа Save note) - добавляем в таблицу, а потом удаляем эту ноту. После того как проделали это для всех нот мы их добавляем из таблицы через функцию InsertNote(), поскольку мы их все удалили на предыдущем этапе, то есть делаем Restore notes. Но именно это удаление обеспечило получение именно отображаемых концов каждой ноты. Замечу, что такое имеет смысл проделывать только если отключена та самая галка с автокоррекцией
     
  4. lil-burn

    lil-burn Well-Known Member

    Регистрация:
    15 авг 2012
    Сообщения:
    891
    Симпатии:
    598
    Пол:
    Мужской
    Адрес:
    Екатеринбург
    @EUGEN27771, @Aleksandr Oleynik,
    а это видимо баг функции SetNote()
    смотрите, даже без явного перекрывания (просто ноты идет друг за другом), причем неважно включена ли автокоррекция:
    Скрипт на гиф устанавливает рандомные каналы для нот тейка.
    1) Сначала рисуем ноту (неважно какой длины).
    2) Затем делаем сплит по сетке с помощью экшена Split notes on grid
    3) Запускаем скрипт (иногда нужно несколько раз).
    PHP:
    local r reaper

    local take 
    r.MIDIEditor_GetTake(r.MIDIEditor_GetActive())
    if 
    not take then return end

    local _
    notes r.MIDI_CountEvts(take)
    if 
    notes == 0 then return end

    r
    .Undo_BeginBlock(); r.PreventUIRefresh(1)

    for 
    0notes do
      
    r.MIDI_SetNote(takeinilnil,nil,nil,math.random(1,16),nil,nil,1)
    end
    r
    .MIDI_Sort(take)

    r.PreventUIRefresh(-1); r.Undo_EndBlock('Set notes to random channels (bug)', -1)
    В результате видим, что меняется длина некоторых нот
    test bug 3.gif

    Теперь запускаем скрипт, который работает не через SetNote(), а использует мой метод, через функцию InsertNote()
    PHP:
    local r reaper

    function GetAndDelNotes(take)

      
    local t = {}

      for 
    01000 do
        
    local retselmutestart_noteend_notechanpitchvel r.MIDI_GetNote(take0)
        if 
    not ret then  break end
        t
    [#t+1] = {sel, mute, start_note, end_note, chan, pitch, vel}
        
    r.MIDI_DeleteNote(take0)
      
    end
      
    return t
    end

    local take 
    r.MIDIEditor_GetTake(r.MIDIEditor_GetActive())
    if 
    not take then return end

    local _
    notes r.MIDI_CountEvts(take)
    if 
    notes == 0 then return end

    r
    .Undo_BeginBlock(); r.PreventUIRefresh(1)

    local t_all GetAndDelNotes(take)

    for 
    1,#t_all do
      
    local selmutestart_noteend_notechanpitchvel table.unpack(t_all[i])
      
    r.MIDI_InsertNote(takeselmutestart_noteend_notemath.random(1,16), pitchvel0)
    end

    r
    .PreventUIRefresh(-1); r.Undo_EndBlock('Set notes to random channels', -1)
    и видим, что так работает.
    test bug 3 (working).gif
     
  5. lil-burn

    lil-burn Well-Known Member

    Регистрация:
    15 авг 2012
    Сообщения:
    891
    Симпатии:
    598
    Пол:
    Мужской
    Адрес:
    Екатеринбург
    Set selected notes to random channels.lua
    Set take notes to random channels.lua
    Set selected notes to one random channel.lua
    Set take notes to one random channel.lua
     
    arkaine нравится это.
  6. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.931
    Симпатии:
    2.357
    Пол:
    Мужской
    @lil-burn, можно еще посмотреть здесь
    Midi&Chunk.gif
    Небольшой скрипт для анализа трек-чанка в реал-тайм.
    Сравнивает текущий чанк с референсным, upd reference - делает текущий референсным.
    Стрелки - переход к след/предыдущему несовпадению. Удобная штука.
    ChunkListener
     
    Последнее редактирование: 8 сен 2017
    lil-burn нравится это.
  7. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.931
    Симпатии:
    2.357
    Пол:
    Мужской
    Сообщение отредактировал, осталось по скриптам только, JS упоминаются, потому что на них тестировалось все. До сами JS тоже доберусь более подробно, но в соотв. теме.
    По скрипту - начал переписывать все с нуля почти.
    Начальную стадию - завершил - все прекрасно подключается и работает.
    По самому скрипту получилось вот что, по-моему - круто.
    EBC1-1.gif
     
    Последнее редактирование: 12 сен 2017
  8. LilColt

    LilColt Well-Known Member

    Регистрация:
    28 ноя 2011
    Сообщения:
    1.113
    Симпатии:
    628
    Пол:
    Мужской
    Род занятий:
    Музырыцыруем потихой ;)
    Адрес:
    Саратов
    По моему тоже! :)
     
  9. naash_g

    naash_g Mixing...

    Регистрация:
    5 авг 2008
    Сообщения:
    1.845
    Симпатии:
    356
    Адрес:
    Che...
    Люди добрые помогите, пожалуйста. Чего-то я у меня возникли пара-тройка вопросов. Не знаю куда адресовать-напишу сюда.
    1) Очень много работаю в миди с барабанами последнее время, естественно возникает необходимость их хуманизировать. Но вот встроенный риперовский хуманайзер мне не совсем нравится, как то сильно разброс большой него и по временному смещению и по велосити. Можно ли как то создать свой хуманайзер например, или может он уже есть в природе?
    2) Опять вопрос из разряда "о барабанах" - если ли какой то экшн или что-либо в этом духе чтобы можно было выделить из цепочки нот (скажем хета) каждую вторую ноту? Хочется автоматизировать этой процесс.
     
  10. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    13.148
    Симпатии:
    6.238
    Пол:
    Мужской
    Адрес:
    Киев
    @EUGEN27771, на базе скрипта можно сделать ВИЗУАЛИЗАЦИЮ работы всех настроек компрессора для Новичков (и не только для Новичков, некоторые моменты становятся яснее и опытным).
    Одно слово - КРУТО!
    Я, кстати, твой симпл компрессор уже во всю использую и его отдельные блоки кода....
    Точно получился ReaComp только с включённым по умолчанию Make-Up

    ОБЩИЙ ВЫВОД -
    Женя, а ведь на самом деле Очень крутой способ написания скриптов и плагинов на базе внешних модулей (функций)!
    Тот кто с ним разобрался очень легко напишет любой новый функциональный плагин на базе отработанных и проверенных базовых функций.

    PS: возвращайся к Rack FX. :)
    --- добавлено 9 сен 2017 ---
    Я уже давно этот слоган себе прям на монитор повесил :)
     
    Последнее редактирование: 9 сен 2017
    Ivan_k26 нравится это.
  11. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    13.148
    Симпатии:
    6.238
    Пол:
    Мужской
    Адрес:
    Киев
    @EUGEN27771, что-то странно, что при лукахеде в 3,5 ms пик транзиента не компресится.
     
  12. arkaine

    arkaine Active Member

    Регистрация:
    13 сен 2007
    Сообщения:
    591
    Симпатии:
    113
    В Reapack'е есть созданные lil-burn'ом (me2beats) скрипты:
    Select Only Even Notes и Select Only Odd Notes.

    Ещё в лоджик эдиторе Куба создавал подобную команду и периодически задействовал её как раз при составлении барабанных партий, так что был рад случайно натолкнуться и в Рипере на такое. :)
     
    naash_g нравится это.
  13. arkaine

    arkaine Active Member

    Регистрация:
    13 сен 2007
    Сообщения:
    591
    Симпатии:
    113
    Ну в стандартном хуманайзере вроде есть возможность задавать диапазон рандомизации велосити и сщемения в процентах.) А так -- я тоже не в восторге от него и предпочёл бы открывающий окно экшн с рандомизацией различных параметров, и не в процентах, а с возможностью выбора минимальных и максимальных параметров для рандомизации и ещё кое-какими другими параметрами... Но понимаю, что ох и геморно реализовать данный скрипт.

    Но если озвучить соображения об идеальном рандомайзере:

    Мне кажется весьма интересной возможность рандомизации позиций нот, скажем, на указанное количество (хотя бы в пределах 2--3) грид юнитов и не выходящих за пределы позиций первой и последней нот.

    Также, чисто с практической стороны, знаю, сколь чудодейственен бывает рандомайз высоты нот с возможностью указать диапазон рандомайза; это не хрень, располагающая ноты во всех 8-ми (или сколько их там) октавах, а хрень (фактурный пласт) с ярко выраженной теситурой, применив к которому, например, "Key Snap", можно добиться очень даже интересных результатов.

    Из данного пункта вытекает то, что неплохо бы в рандомайзере иметь и функцию Key Snap.

    Ну и вот если говорить о рандомизации звучания нот (того, будут звучать или не звучать ноты) посредством Velocity и Mute, то тоже нет толковых скриптов с возможностью указания диапазона рандомизации. :(
     
    Последнее редактирование: 9 сен 2017
    naash_g нравится это.
  14. naash_g

    naash_g Mixing...

    Регистрация:
    5 авг 2008
    Сообщения:
    1.845
    Симпатии:
    356
    Адрес:
    Che...
    ну смещение нот после 3-4 процентов уже звучат как кривой барабанщик. Хочется конечно иметь какие то границы, и по велосити тоже, скажем задать планку чтобы хуманизировалось в промежутке между 107-127 велосити.
     
  15. arkaine

    arkaine Active Member

    Регистрация:
    13 сен 2007
    Сообщения:
    591
    Симпатии:
    113
    @naash_g, ну, он как бы так и действует.

    Random.gif
     
  16. naash_g

    naash_g Mixing...

    Регистрация:
    5 авг 2008
    Сообщения:
    1.845
    Симпатии:
    356
    Адрес:
    Che...
    что действует? мне нужно рамки выставлять самому), а не методом тыка, перебирать "рисунки" хуманизации, чтоб не дай бог какая нить нота ниже 107 например не ускакала.
     
  17. arkaine

    arkaine Active Member

    Регистрация:
    13 сен 2007
    Сообщения:
    591
    Симпатии:
    113
    @naash_g, а, Вы всё же именно о возможности указать диапазон для рандомизации.) Ну тогда не так действует.

    Просто после этой части сообщения:
    Мне подумалось, что Вас интересует именно возможность быстро переключаться между рандомизированными рисунками велосити.
     
  18. leshachooze

    leshachooze Member

    Регистрация:
    15 фев 2013
    Сообщения:
    26
    Симпатии:
    29
    Пол:
    Мужской
    Евгений, куда донаты присылать?
     
    Ivan_k26 нравится это.
  19. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    214
    Симпатии:
    39
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Посмотрите в репаке уважаемого @lil-burn. Там есть скрипты:
    - Select only even notes.lua
    - Select only odd notes.lua
     
    naash_g нравится это.
  20. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    267
    Симпатии:
    61
    @EUGEN27771, я так понимаю вы переделали свой скрипт gen_Envelope-based Compressor ???
    Вы его в рапак не кидали ещё??
     
  21. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.931
    Симпатии:
    2.357
    Пол:
    Мужской
    Кому-нибудь из реально нуждающихся, я серьезно, если есть желание.
    Итоговый скрипт выложу через пару дней, сегодня буду пить.
    "Я пол-жизни отдал за тебя, подлеца, а ты жизнь прожигаешь, Иуда" - Высоцкий заставляет.
     
    Последнее редактирование: 12 сен 2017
  22. Ivan_k26

    Ivan_k26 ''Life Under Music''

    Регистрация:
    18 июл 2007
    Сообщения:
    2.949
    Симпатии:
    3.221
    Пол:
    Мужской
    Адрес:
    Железногорск
    Женя, как сказала Мадонна на одном из концертов /в Питере по-моему/: "О..уенно!!!!".
     
  23. Намасте_намасте

    Намасте_намасте Well-Known Member

    Регистрация:
    21 ноя 2016
    Сообщения:
    511
    Симпатии:
    307
    Жень, офигительная наглядная штука! С удовольствием бы ее поюзал!
     
  24. SCHESCHA

    SCHESCHA New Member

    Регистрация:
    20 июн 2017
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Ребята, у Евгения Пилявского есть скрипт на дублирования нот. Он просто ставит ноту к последней ноте. Видел, что есть скрипт, который дублирует ноты на расстоянии, на котором они находились. Если кто помнит, где взять такой скрипт, был бы благодарен. И еще - где взять скрипт, который для выделенных треков создает папку. Тоже вроде где-то видел, но не найти. Заранее спасибо.
     
  25. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    214
    Симпатии:
    39
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Script: Create folder from selected tracks (+rename folder).lua на репозитории в скриптах автора me2beats, более известного здесь как @lil-burn
     
    YuriOl нравится это.
  26. SCHESCHA

    SCHESCHA New Member

    Регистрация:
    20 июн 2017
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    О, спасибо)
     
  27. Martin111

    Martin111 Member

    Регистрация:
    18 фев 2015
    Сообщения:
    311
    Симпатии:
    10
    Пол:
    Мужской
    Продолжение своего предыдущего вопроса о том как открыть папку проекта с рипера решил продолжить здесь.
    Возможно написать скрипт, в котором пользователь прописывает путь, тоесть, нажал хоткей - открывается папка, путь которой указан в скрипте.
     
  28. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    13.148
    Симпатии:
    6.238
    Пол:
    Мужской
    Адрес:
    Киев
    @Martin111, можно, конечно можно
     
  29. arkaine

    arkaine Active Member

    Регистрация:
    13 сен 2007
    Сообщения:
    591
    Симпатии:
    113
    Помогите и подскажите, пожалуйста.

    Составленные мною партии часто бывают "громоздкими" по высоте:
    Record 1.gif

    Меня интересует возможность вертикального выделения нот.

    В Рипере есть экшн Select All Events Under Selected Notes, но он (как и гласит его название) действует только на Event'ы, которые под нотами.

    Я создал такой макро-экшн (условно назвал его: Select All Notes Above and Under Selected Notes):
    Record 2.gif

    Состоящий из:
    Set Time Selection to Selected Notes
    Select All Notes in Time Selection

    Но он "сбивает" Time Selection.

    Для его логического завершения не хватает работающего из MIDI Editor'а экшна "Save/Restore Time Selection, Slot #" (такой экшн есть только для окна аранжировки). Не затруднит ли кого создать такой скрипт (хотя бы на один слот)?..

    Либо: Возможно, есть более удобный способ совершения данного действия? :)
     
    Последнее редактирование: 16 сен 2017
  30. lil-burn

    lil-burn Well-Known Member

    Регистрация:
    15 авг 2012
    Сообщения:
    891
    Симпатии:
    598
    Пол:
    Мужской
    Адрес:
    Екатеринбург
    @arkaine,
    Save time selection (MIDI Editor).lua
    Restore time selection (MIDI Editor).lua
    скрипт тоже можно такой написать, на днях
     
    arkaine нравится это.
  31. arkaine

    arkaine Active Member

    Регистрация:
    13 сен 2007
    Сообщения:
    591
    Симпатии:
    113
    @lil-burn,
    Мегаполезная штука (лично для меня, а там, может, и какому-нибудь другому миди-извращенцу [в хорошем смысле этого слова] потребуется). :) Спасибо огромное.

    Было бы удобно.
     
  32. Martin111

    Martin111 Member

    Регистрация:
    18 фев 2015
    Сообщения:
    311
    Симпатии:
    10
    Пол:
    Мужской
    Помогите доработать экшн. Это экшн, для копирования айтемов. (находясь на треке с айтемом, выделить таймселекшеном и применить экшн).
    Item: Unselect all items
    Item: Select all items on selected tracks in current time selection
    Edit: Copy items/tracks/envelope points (depending on focus) within time selection, if any (smart copy)
    Go to end of loop
    Item: Paste items/tracks
    Loop points: Double loop length

    Нужно чтобы не копировался трек "вниз с айтемами" ! Как я понял, реагирует на курсор мышки, нужно убрать эту функцию, копирования вниз.
     
    Последнее редактирование: 23 сен 2017 в 22:59
  33. sytch

    sytch Member

    Регистрация:
    10 май 2007
    Сообщения:
    37
    Симпатии:
    23
    Люди добрые, умельцы вы наши! Не смог бы кто запилить подобную штуковину:
    upload_2017-9-25_0-2-57.png
    Это из Пирамикса. Польза в том, что когда записываешь очередной тейк, в этом окне отображается его номер (точно такой же номер, какой добавляется к имени записываемого файла).
     

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