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

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

  1. YuriOl

    YuriOl Active Member

    Регистрация:
    6 май 2005
    Сообщения:
    505
    Симпатии:
    102
    Пол:
    Мужской
    Адрес:
    Луганск
    Wefilev нравится это.
  2. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    445
    Симпатии:
    101
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    подскажите, а можно ли что-то придумать (некий экшн поставить или скрипт), чтобы при запуске воспроизведения, оно само остановилось на правой границе видимого в данный момент на экране айтема (с учетом масштабирования). Т.е. если например в данном масштабе я вижу правые концы двух айтемов, то воспроизведение должно остановится на правой границе того айтема, который ближе к концу проекта.
    Типа в этом месте
    Screenshot_1.jpg
     
  3. YuriOl

    YuriOl Active Member

    Регистрация:
    6 май 2005
    Сообщения:
    505
    Симпатии:
    102
    Пол:
    Мужской
    Адрес:
    Луганск
    Ребята, есть отдельно скрипт Quantize selected note end only?
    Есть вот скрипт Михаила - Script: mpl_Quantize selected MIDI notes ends.lua, но он выравнивает не к ближней сетке, а всегда в плюс, не так как в штатном Quantize с выбранным режимом Note end only.
    Вот пример: Reaper.gif
     
  4. MusPro

    MusPro Active Member

    Регистрация:
    20 май 2007
    Сообщения:
    429
    Симпатии:
    86
    Адрес:
    Москва
    Есть такая функция в API - reaper.GetHZoomLevel()
    Возвращает значение зума. Но, кажется, работает она только для главного окна.
    Нет ли аналога для миди редактора? Очень хочется.
    Или я не понял как отловить ее в миди окне.
     
  5. Music_makers

    Music_makers Active Member

    Регистрация:
    25 июн 2016
    Сообщения:
    311
    Симпатии:
    57
    Пол:
    Мужской
    кто может сделать скрипт, который бы назначал на разные ноты сэмплы, загруженные в ReaSamplOmatic 5000?
     
  6. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
    http://rmmedia.ru/threads/132518/
     
  7. Alex Menco

    Alex Menco Active Member

    Регистрация:
    19 дек 2007
    Сообщения:
    720
    Симпатии:
    144
    Пол:
    Мужской
    Род занятий:
    DJ/REMIXER/SOUND-PRODUCER
    Адрес:
    Moscow
    решил поюзать рипер для аудиомонтажа, но не могу настроить экшны или даже просто найти эти горячие клавиши
    1) Как удалить все пустые места между айтемами на треке? есть несколько айтемов, между ними пустоты - я хочу их удалить, чтобы айтемы шли один за другим без пауз
    2) Хочу выделить кусочек айтема, удалить его и чтобы всё (все айтемы), что находится справа сдвинулось влево к соседнему айтему

    буду признателен за подсказку!
     
  8. Broojacker

    Broojacker Active Member

    Регистрация:
    4 сен 2010
    Сообщения:
    156
    Симпатии:
    96
    Адрес:
    Киев
  9. Slick

    Slick IDDQD

    Регистрация:
    13 май 2008
    Сообщения:
    1.945
    Симпатии:
    859
    Род занятий:
    Аранжировщик, Саунд Дизайнер
    Адрес:
    Москва, Апрелевка
    Ripple edit. По дефолту кнопка на панели. У нее 3 состояния. На трек, на все треки, и отключена
     
    Последнее редактирование: 18 авг 2018
    Alex Menco нравится это.
  10. mr.preacher

    mr.preacher New Member

    Регистрация:
    15 июл 2013
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    первоуральск
    Здравствуйте форумчане!
    Задумал для себя собрать простенький цикл действий, но вот не удалось.
    А суть вот в чем:
    • В Mouse modifiers > Context (Arrange view) > middle drag я назначил по дефолту “Marquee zoom” (мне так удобно)
    A. И вот после активного действия “middle drag” мне хотелось волшебства:
    1) Дефолтное состояние “Left drag” с “Move item” должно меняться на “Set default mouse modifier action for "Media item left drag" to "Marquee select items and time ignoring snap"
    2) Автоматически (без дополнительных действий руками) должен исполняться какой-либо action (например, “Cut selected area of items”) или какой я назначу.
    B. Возврат к исходному состоянию мышки, например, “middle click“.
    И ещё в тулбар запилить зависимую от пункта A/B кнопочку вкл/выкл (пункт А, в данном случае, меняет состояние “Left drag”.
    Прошу помощи аудитории.
     
    Последнее редактирование: 20 авг 2018
  11. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    Кто-нибудь в курсе: поддержка Python накрылась что ли в последних версиях рипера?
    Пару лет назад еще в четвертой линейке рипер с питоном отлично дружили, сейчас попытался воткнуть питоновский скрипт в рипер 5.9.41 и фиг... При нажатии на кнопку Load в списке поддерживаемых для открытия типов файлов только eel и lua, при попытке выставить all files и выбрать скрипт выдает что-то типа "not supported format"...

    Переходить на lua непланирую, так как и половины нужного мне в нем нет а писать метровые портянки вермишели нет желания.
     
  12. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Alex_028, в закладке ReaScript нужно поддержку Питона включать, ну и скачать и установить сам Питон, причём (так было раньше) определённой версии и по определённому пути.
    Там есть в закладке Download Python - может он сам знает что качать.
     
  13. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @Aleksandr Oleynik, :D :D :D Я уже 12 лет на питоне программирую)))) Он у меня уже установлен и путь в рипере указан к python27.dll, только вот ради интереса сделал портабельную версию 4.78 рипера который сразу с полпинка скрипт словил и все работает, а в последней версии расширения скриптов питона даже в списке нет, как писал выше.
     
  14. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Alex_028, ну мало ли. Помню что поддерживал какую то определённую версию и ещё чё то...
     
  15. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @Aleksandr Oleynik, вызов функций апи рипера от версии питона независит, там обработка все равно через модуль CTypes. А вот в самом рипере что-то намудрили. На оффоруме полистал поиском, я не первый кто с этим сталкивается но решений нет и разрабы нечешутся.
     
  16. incubator

    incubator Active Member

    Регистрация:
    24 янв 2007
    Сообщения:
    363
    Симпатии:
    143
    Адрес:
    Spb
    @Alex_028, подтверждаю питон завести на 5.хх не смог
     
  17. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @incubator, надо будет реквест на оффоруме скинуть, то что на луа заняло в полудоработаном виде на 80 строк я на питоне в три строки впихнул и мозг не ламал!
    Пробовал заставить рипер подхватить питон 2.7 и 3.7, нихрена неработает, ошибка та же.
     
  18. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    @Aleksandr Oleynik, @Alex_028, @incubator, для начала нужно поставить совпадающую с рипером битность. Качаем последний билд (64 бита скачать можно тут https://www.python.org/downloads/windows/), далее ставим в любую папку. Теперь заходим в рипер, включаем поддержку скриптов, выбираем папку куда ставили и ниже вписываем "python37" без кавычек. Перезапускаем рипер и вуаля!
     
    incubator нравится это.
  19. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    840
    Симпатии:
    1.266
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Это за скрипт такой?
     
  20. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @@Michael, конверсия Int_to_Float(), рандом выбраных параметров vst с контролем предельного значения для каждого параметра.
    Больше всего места заняла функция для преобразования int в float и чтобы была не более %0.4f а не как стандартный math.random генерит 0.10f.

    @vitalker, :D я тоже самое делал уже четыре раза за сегодня, если найду где бубен достать и пару шаманских танцев выучить буду по другому колдовать)))) ;)
     
  21. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    @Alex_028, а битность с рипером точно совпадает? Сможете сделать скриншот?
     
  22. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @vitalker, получилось запустить! Скачал
    python-3.7.0-embed-amd64
    И с ним все заработало, а установленый питон показывает в параметрах рипера как подходящий но при этом в экшены недавал добавить питоновский скрипт. С портабельным рипером завелось все сразу. Нифига непонимаю. Полдня убил на поиски инфы и ковыряние с рипером...
     
  23. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    @Alex_028, сложно что-то сказать. У меня получилось так, как сказал. Взял название самой большой библиотеки и вписал туда. После перезагрузки всё заработало - проверил тестовой командой с вики кокоса. Кстати, раньше (а может и сейчас тоже) можно писать на языке perl. Тут была информация https://wiki.cockos.com/wiki/index.php/ReaScript
     
  24. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @vitalker, я Perl почти незнаю, в моем институте этот язык не по профилю а только для обзора преподавался. Мне питон как-то больше нравится да и полезных функций у него океан))))
    У меня только с установленым питоном проблемы возникли, сейчас с помощью портабельного проверил десяток функций из апи рипера и все работает великолепно, даже рипер теперь вместе с питоном непривязан к диску))))
    Eel и Lua сильно ограничены в некоторых функциях, особенно те что касаются математики и преобразования типов. Так что прийдется пользоваться тем что лучше знакомо и привычней))))
     
  25. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @Alex_028, ell имеет некоторые ограничения, и то их Женя почти все написанными модулями порешал, а у lua пока не встретил ни каких ограничений и модулей достаточно много готовых.
    Все ограничения пока в отсутствующих в API Reaper функций, но Джастин их потихоньку по нашим просьбам добавляет.
    Из всех языков ell в Рипере самый быстрый.
    Питон, думаю, самый медленный.
     
  26. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    840
    Симпатии:
    1.266
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Что-то не верится, что в питоне на это ушло три строчки, а в lua 80. Конкретный пример кода из одного и другого языка сможешь привести?
     
  27. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @Michael, луаскрипт позавчера удалил, а на питоне вот:

    import random as r
    def rand(a):
    return float("%.3f" %r.uniform(0, a))

    Весь скрипт пока публиковать небуду, нашел два бага с передачей списка в качестве аргументов функции.

    На луа подобный код у меня занял около 50 строк с кучей промежуточных переменных. Я тем более плохо его знаю а в книге Иерузалимски возможно не все существующие функции языка описаны.

    @Aleksandr Oleynik, в Eel нехватает инструкций If, break, continue, for. И это только то что сразу вспомнил, когда начинал писать свои скрипты очень матюкался из-за этого!
    А луа быстрый только потому что у него нет пары сотен модулей подгружаемых по цепочке. И все равно некоторых полезностей нехватает.
    По части тормознутости мне привычно, на проце 1.6 ггц у меня все что угодно тормозит)))
     
  28. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    840
    Симпатии:
    1.266
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Код:
    function rand(min, max) return tonumber(string.format('%.2f', math.random()))*(max-min)+min end
    test = rand(.1, .3)
    
    Щас чувствую найдём ещё миллиард "багов" и нехватающих функций

    Так может и не стоит тогда заявлять, что "много нужного мне там нет".
     
    Последнее редактирование: 30 авг 2018
    Alex_028 и Aleksandr Oleynik нравится это.
  29. Alex_028

    Alex_028 Well-Known Member

    Регистрация:
    10 май 2015
    Сообщения:
    663
    Симпатии:
    291
    Пол:
    Мужской
    Род занятий:
    Программирование, VST DSP, Reaper accessibility
    Адрес:
    Донецк UA
    @@Michael, спасибо! string.format() я ненаходил.
     
  30. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    445
    Симпатии:
    101
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Нужен скрипт "Split selected item under mouse cursor and select left". Обычный экшен "Item: Split item under mouse cursor (select left)" есть в стандартном списке экшенов, но он не подходит, т.к. мне нужно нужно резать ВСЕ выделенные айтемы на разных треках по линии, где находится курсор мыши, и при этом во всех разрезанных айтемах оставлять выеленную левую часть после разреза.
    Может кто-то помочь сделать такой скрипт?
     
  31. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    352
    Симпатии:
    175
    Пол:
    Мужской
     

    Вложения:

  32. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    445
    Симпатии:
    101
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    @Archchie, спасибо большое, работает как нужно. А можно, если не сильно сложно, его немного допилить. Суть такая:
    если не активирована привязка SNAP, то работал как сейчас, т.е. резал точно по линии курсора
    а если активирована привязка, то резал по ближайшей к курсору мыши линии сетки, согласно выбранного режима (1/2, 1/4, 1/8 и т.д.

    ну или как вариант еще один отдельный скрипт для разрезания по ближайшему к курсору линии сетки
     
  33. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    352
    Симпатии:
    175
    Пол:
    Мужской
    Так это же было сделано в предыдущем скрипте.
    Screenshot_1.png
     

    Вложения:

    Supa75 нравится это.
  34. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    445
    Симпатии:
    101
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Супер! сейчас все работает в рамках одного скрипта. Спасибо большое
     
  35. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
    А вот интересует (ща работаю над двумя проектами Electro Swing) Можно ли сделать скриптами регулировку процентов сдвига Swing? Допустим +1% -1% или сразу статичные 20-50-75% а лучше и те и другие отдельными скриптами.за ранее благодарю
     
  36. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    352
    Симпатии:
    175
    Пол:
    Мужской
    Обновленно:
     

    Вложения:

    Последнее редактирование: 16 сен 2018
  37. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
    Archchie Дай Бог Здоровья
     
  38. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    353
    Симпатии:
    77
    На гифке видно рендер айтемов находящихся на разных треках в один трек
    скриптом Script: Render selected items on one separate track1.lua
    Хотелось бы ,чтоб треки кроме отрендеренного удалились.
    Помогите создать экшн.
     

    Вложения:

    • 444.gif
      444.gif
      Размер файла:
      799,8 КБ
      Просмотров:
      16
  39. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    352
    Симпатии:
    175
    Пол:
    Мужской
    Вставь вот этот кусок кода в начало скрипта(где помечено в начало) и в конец скрипта (где помечено в конец)
    PHP:

       
    ------------------ В начало -----------------------
        
    local function SaveSelTracksGuid()
            
    reaper.PreventUIRefresh(123456789)
            
    reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
            
    reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
            for 
    1,reaper.CountSelectedMediaItems) do
                
    reaper.SetTrackSelected(reaper.GetMediaItem_Track
               
    (reaper.GetSelectedMediaItem(0,i-1)),1)
            
    end
            sel_tracks 
    = {}
            for 
    1reaper.CountSelectedTracks(0) do
                
    sel_tracks[i]=reaper.GetTrackGUID(reaper.GetSelectedTrack(0,i-1))
            
    end
        end
        
    ---
        
    local function RestoreSelTracksGuid()
            
    reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
            
    reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
            for 
    1#sel_tracks do
            
    local track reaper.BR_GetMediaTrackByGUID(0,sel_tracks[i])
                if 
    track then
                    reaper
    .SetTrackSelected(track,1)
                
    end
            end
            reaper
    .Main_OnCommand40005)
            
    reaper.PreventUIRefresh(-123456789)
        
    end
        SaveSelTracksGuid
    ()
        ------------------------------------------------------------
      
                  ------------  
    ТВОЙ СКРИПТ ------------
      
        -----
    В конец----------
        
    RestoreSelTracksGuid()
        ----------------------

     
    Последнее редактирование: 13 сен 2018
    Maestro Sound нравится это.
  40. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    353
    Симпатии:
    77
    @Archchie, Спасибо большое.
    Работает как часы
     
    Последнее редактирование: 13 сен 2018
  41. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
    Выложите скриптик плиз, может сгодится.
     
  42. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    353
    Симпатии:
    77
  43. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
  44. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    353
    Симпатии:
    77
    @Maestro Sound,
    local function SaveSelTracksGuid()
    reaper.PreventUIRefresh(123456789)
    reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
    reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
    for i = 1,reaper.CountSelectedMediaItems( 0 ) do
    reaper.SetTrackSelected(reaper.GetMediaItem_Track
    (reaper.GetSelectedMediaItem(0,i-1)),1)
    end
    sel_tracks = {}
    for i = 1, reaper.CountSelectedTracks(0) do
    sel_tracks=reaper.GetTrackGUID(reaper.GetSelectedTrack(0,i-1))
    end
    end
    ---
    local function RestoreSelTracksGuid()
    reaper.SetOnlyTrackSelected(reaper.GetTrack(0,0))
    reaper.SetTrackSelected(reaper.GetTrack(0,0), 0)
    for i = 1, #sel_tracks do
    local track = reaper.BR_GetMediaTrackByGUID(0,sel_tracks)
    if track then
    reaper.SetTrackSelected(track,1)
    end
    end
    reaper.Main_OnCommand( 40005, 0 )
    reaper.PreventUIRefresh(-123456789)
    end
    SaveSelTracksGuid()
    reaper.Undo_BeginBlock() --call to start a new block
    ComandID = "_SWS_SAVETIME1" -- SWS: Save time selection, slot 1
    reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
    ComandID = 40290 -- Time selection: Set time selection to items
    reaper.Main_OnCommand(ComandID,0)
    ComandID = 41559 -- Item properties: Solo
    reaper.Main_OnCommand(ComandID,0)
    ComandID = "_SWS_SELTRKWITEM" -- SWS: Select only track(s) with selected item(s)
    reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
    ComandID = 41716 -- Track: Render selected area of tracks to stereo post-fader stem tracks (and mute originals)
    reaper.Main_OnCommand(ComandID,0)
    ComandID = 40421 -- Item: Select all items in track
    reaper.Main_OnCommand(ComandID,0)
    ComandID = 40644 -- Item: Implode items across tracks into items on one track
    reaper.Main_OnCommand(ComandID,0)
    ComandID = 41588 -- Item: Glue items
    reaper.Main_OnCommand(ComandID,0)
    tr = reaper.GetSelectedTrack(0,0) if tr then reaper.SetMediaTrackInfo_Value( tr, 'I_SELECTED', 0 ) end
    ComandID = 40005 -- Track: Remove tracks
    reaper.Main_OnCommand(ComandID,0)
    ComandID = 41560 -- Item properties: Unsolo
    reaper.Main_OnCommand(ComandID,0)
    ComandID = 40635 -- Time selection: Remove time selection
    reaper.Main_OnCommand(ComandID,0)
    ComandID = "_SWS_RESTTIME1"
    reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
    reaper.Undo_EndBlock("Archie_Render selected items on one separate track",1)
    RestoreSelTracksGuid()

    --- добавлено 13 сен 2018 ---
    Теперь ссылка работает
    https://cloud.mail.ru/public/3ygV/h9hMatKAH
     
    sve нравится это.
  45. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
  46. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    505
    Симпатии:
    54
    Одним скриптом на Mouse Modifiers 2 in 1 (Удаление итема под курсором, а если при этом выделен таймселекшн - то удаление применяется к частям итема под курсором попадающих в район выделения)
     
  47. Nagor

    Nagor Active Member

    Регистрация:
    4 окт 2010
    Сообщения:
    493
    Симпатии:
    65
    @Vilia33, для миди айтемов подойдёт? Например объединить хеты, закрытый, открытый, педаль в один трек.
     
  48. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    Друзья, есть догадки, что я делаю не так?
    Код:
    def create(name: str):
        with Reaper as r:
            r.Undo_BeginBlock()
            sel_item = r.GetSelectedMediaItem(0, 0)
            # take = r.GetActiveTake(sel_item)
            start = r.GetMediaItemInfo_Value(sel_item, "D_POSITION")
            end = start + r.GetMediaItemInfo_Value(sel_item, "D_LENGTH")
    
            ret = r.AddProjectMarker2(0, 1, start, end, name, 0, 0)
            r.Undo_EndBlock(f'add region with name {name}', -1)
        return ret
    создается регион, выглядит и работает как нормальный. Но при создании следующего, или при перезапуске проекта, вообще бе особой системы превращается в проименованный маркер, и непроименованный регион с нулевым размером на конце зоны бывшего региона. И ID у них одинаковый:)
    2018-09-14_15-38-55.png
     
  49. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    так, еще раз покурил доки, переписал:
    Код:
    def create(name: str):
        with Reaper as r:
            r.Undo_BeginBlock()
            sel_item = r.GetSelectedMediaItem(0, 0)
            # take = r.GetActiveTake(sel_item)
            start = r.GetMediaItemInfo_Value(sel_item, "D_POSITION")
            end = start + r.GetMediaItemInfo_Value(sel_item, "D_LENGTH")
    
            ret = r.AddProjectMarker(0, True, start, end, name, -1)
            r.Undo_EndBlock(f'add region with name {name}', -1)
        return ret
    все равно то же самое.

    Ага, проблема, кажись, в том, что Bayond каждую мою команду отсылает как отдельный экшн. И undo работает криво...

    хм, это, вроде, помогло:
    Код:
    def create(name: str):
        with Reaper as r:
            r.Undo_BeginBlock2(0)
            sel_item = r.GetSelectedMediaItem(0, 0)
            # take = r.GetActiveTake(sel_item)
            start = r.GetMediaItemInfo_Value(sel_item, "D_POSITION")
            end = start + r.GetMediaItemInfo_Value(sel_item, "D_LENGTH")
    
            # start = item_obj._start
            # end = start + item_obj._len
    
            ret = r.AddProjectMarker(0, True, start, end, name, -1)
            # r.Undo_EndBlock(f'add region with name {name}', -1)
            r.Undo_EndBlock2(0, f'add region with name {name}', -1)
        return ret
    нет, нифига...

    Короче, баг был там, где не ждал:
    У меня имена паттернов сохраненные загружались с символом \n на конце.
     
    Последнее редактирование: 14 сен 2018
  50. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    353
    Симпатии:
    77
    @Nagor, Надо пробовать может и подойдёт но я предполагаю, что скрипт будет рендерить
    вместе с VSTI инструментами в аудио файл.
     
    Nagor нравится это.

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