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

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

  1. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    330
    Симпатии:
    64
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    так пусть окно FX открывается последеним.
    1. создаем трек в конце TCP
    2. роутируем на него выделенные треки
    3. открываем на нем FX для добавления.
    4.....фиг с ним...этим флоутом :)
     
  2. Nordum

    Nordum Member

    Регистрация:
    28 окт 2016
    Сообщения:
    89
    Симпатии:
    10
    Пол:
    Мужской
    @Supa75, Пилите экшн:

    Script: Lokasenna_Create mix bus and reroute all selected tracks to it.lua
    View: Show FX browser window
     
  3. Microtonic

    Microtonic Любознательный

    Регистрация:
    21 сен 2008
    Сообщения:
    476
    Симпатии:
    99
    Пол:
    Мужской
    Адрес:
    Москва
    Вам, возможно, очень понравится функционал "Contextual Toolbar". В настройках пресета для нужного Туллбара есть галочка "Закрывать" тулбар после выполнения.
    В двух словах, что это вообще такое.
    У вас есть туллбар №1 с плагинами. У вас туллбар №2 с кнопками рендера. У вас есть туллбар №3 с кнопками для работы с тейками.
    В Contextual Toolbar есть пресеты с настройками разных опция для поведения туллбаров при НАХОЖДЕНИИ КУРСОРА МЫШКИ в нужной вам области.
    Навели мышку на дорожку, нажали гор.клавишу вызова пресета №1 и у вас открывается туллбар №1, навели мышку на миди айтем, нажали гор.клавишу вызова пресета №1, да, да... всё тот же пресет №1, у вас откроется туллбар №2, навели мышку на аудио айтем, ГКМ для пресета №1 и откроется туллбар №3.
    Далее, что можно:
    При открытии туллбара может выбираться дорожка (т.е. чтобы добавить тот же плагин), выбираться айтем, чтобы рендерить и изменять. После нажатия кнопки на луттбаре, туллбар может закрываться.
    Для удобства можно немного изменить координаты открывания туллбара относительно курсора.
    Так же можно настроить для Contextual Toolbar пресет №2 и вызывать его уже другой гор.клавишей.
    Допустим, находится курсор над дорожкой. Пресет №1, вызывает туллбар с плагинами, а пресет №2 вызывает разные опции типа: "Сгруппировать трек в папку", "выделить все дочерние треки в папке", "Сделать фриз трека", и т.п. Тоже самое будет происходить когда курсор будет под айтемом или в свободной области или над линейкой...
    Фантазировать можно бесконечно и если всё настроить - то этим пользоваться очень удобно!
    А если у вас мышка с доп.кнопками и её можно программировать, допустим повесить туда как раз все эти пресеты - то вобще будет сказка. :)
     
    Archchie нравится это.
  4. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    692
    Симпатии:
    1.031
    Пол:
    Мужской
    Адрес:
    Орёл / Москва

    PHP:
    for key in pairs(reaper) do _G[key]=reaper[key]  end

    -- 1
    InsertTrackAtIndex
    CountTracks(), false )
    TrackList_AdjustWindowsfalse )
    dest_tr GetTrack(0,CountTracks()-1)

    -- 
    2
    for 1CountSelectedTracks(0) do CreateTrackSendGetSelectedTrack(0,i-1), dest_tr end

    -- 3
    SetOnlyTrackSelected
    dest_tr )
    Main_OnCommand(40914,0) -- TrackSet first selected track as last touched track
    Main_OnCommand
    (402710) -- fx browser

    --4
    st0 
    GetProjectStateChangeCount)
    function 
    run()
      
    st GetProjectStateChangeCount)
      if 
    st == st0 then defer(run) else TrackFX_Showdest_tr,  TrackFX_GetCountdest_tr )-1end
    end
    run
    ()
     
  5. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Да про "Contextual Toolbar" что то не видосов не какой либо информации я не нашёл,а сам открывал как то вообще не разобрался !

    Разобрался! вообще удобная штука .Спасибо за подсказку!
     
    Последнее редактирование: 30 ноя 2017
    Microtonic нравится это.
  6. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    @@Michael, Спасибо а можно вписать функцию, чтобы самому вписывать нужный плагин в скрипт и не открывать FX Browse?

    Отдельное спасибо за Ваш стрим с Разумовым по скриптам. Очень не хватает продолжения и более детального разбора
     
  7. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Скажите как увеличеть количество тулбаров с 16 до ?
     
  8. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Нельзя
     
  9. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.411
    Симпатии:
    7.261
    Пол:
    Мужской
    Адрес:
    Киев
    @Maestro Sound, почему это?
    Можно... Правда опять без скриптов не обойтись....
    Можно сделать ЛЮБОЕ кол-во тулбаров, с любым кол-ом кнопок на них, как GUI скрипта.
     
    Maestro Sound нравится это.
  10. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    А вот встречный вопрос. Почему количество добавляемых функций в меню ограничено ну те что в reaper-menu.ini?
     
  11. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.411
    Симпатии:
    7.261
    Пол:
    Мужской
    Адрес:
    Киев
    Многие ограничения можно в тех же ini и снять.
    А почему? Думаю потому, что всё это оказывает нагрузку на Рипер, и без особой нужды этого делать не стоит.
     
    Archchie и Maestro Sound нравится это.
  12. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    330
    Симпатии:
    64
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    @@Michael, спасибо большое! Все отлично работает. Подскажите, где что дописать в скрипте, чтобы после добавления AUX-трека скрипт предлагал ввести его название перед тем как открыть на нем FX
     
  13. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    330
    Симпатии:
    64
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    @@Michael, я дописал в скрипт в 3-м блоке строку
    Main_OnCommand(40696,0) -- Track: Rename last touched track

    теперь он выглядит так
    -- 3
    SetOnlyTrackSelected( dest_tr )Main_OnCommand(40914,0)
    Track: Set first selected track as last touched track
    Main_OnCommand(40271, 0) -- fx browser
    Main_OnCommand(40696,0) -- Track: Rename last touched track

    вроде работает (активирует название нового аукс-трека на изменение)
    Я все правильно сделал? или что-то еще нужно?
     
  14. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Народ подскажите пожалуйста ,начал с малого обучения, пишу типо кастом, только скриптом вставляя ID Экшина.
    Родные риперовские id работают, которые состоят из цифр , загораются жёлтым цветом ,
    а от SWS которые состоят из букв не работают,не загораются жёлтым цветом
    почему?что не правильно?
    Hidden Content:
    **Hidden Content: To see this hidden content your post count must be 10 or greater.**
     
    Последнее редактирование: 1 дек 2017
  15. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    692
    Симпатии:
    1.031
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Archchie нравится это.
  16. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.411
    Симпатии:
    7.261
    Пол:
    Мужской
    Адрес:
    Киев
    @Archchie, для SWS экшинов другая функция нужна.
    Посмотрите в моих скриптах пример,
    Пока писал - Михаил ответил
     
  17. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    @@Michael, @Aleksandr Oleynik, Спасибо!
    А подскажите ещё пожалуйста что в конце скрипта прописать что бы на ctrl+z была отмена всего этого скрипта,а не каждой комбинации отдельно( как типа галочка в кастомах — consolidate undo points)
     
    Последнее редактирование: 1 дек 2017
  18. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    330
    Симпатии:
    64
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    @Aleksandr Oleynik, @Michael, подскажите, как в скрипт портировать строчки, которые отключат мастер-сенд с выделенных треков. Хочу в скрипт Михаила, который он сделал по ауксу (выше на несколько постов) добавить отключение мастер-посыла, таким образом сделав его скриптом по добавлению bus-трека
     
  19. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    692
    Симпатии:
    1.031
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
     
    Supa75 нравится это.
  20. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    @@Michael, Спасибо большое!!!
     
  21. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Не работает! выдает вот такую ошибку. .lua:20: syntax error near 'to'
    что это может быть?
     
    Последнее редактирование: 1 дек 2017
  22. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.411
    Симпатии:
    7.261
    Пол:
    Мужской
    Адрес:
    Киев
    @Archchie,
    reaper.Undo_BeginBlock()
    --call to start a new block - это описание того что делает строка сверху, его писать в скрипте не нужно,
    Строка сверху пишется в начале блока всех функций, а строка ниже пишется в конце - и тогда сможете всё, что скрипт сделает оменить одним ctrl+z
    reaper.Undo_EndBlock( descchange, extraflags )
    --call to end the block,with extra flags if any,and a description - это ведь тоже просто описание
     
    Beckoff нравится это.
  23. Kokarev Maxim

    Kokarev Maxim ex cool

    Регистрация:
    13 май 2007
    Сообщения:
    3.696
    Симпатии:
    2.109
    Пол:
    Мужской
    Род занятий:
    freelance, mixing
    Адрес:
    Барнаул
    Решаемо ли это?
    Есть в меню mouse modifiers две раздельные функции, которые назначаются на клавишу мыши. В моём случае, это Clear time selection и Deselect all items and move edit cursor. (в разделе Track - Left Click) Задача - выполнить по одному клику обе эти функции. Как? Экшены для этого клика доступны, но конкретно из этих функций невозможно создать кастом - первый это переключатель модификатора мыши, а второго просто нет в списке
    .

    Отбой, решено.
     
    Последнее редактирование: 2 дек 2017
  24. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Спасибо!!!А я вставлял все это просто в конец скрипта
    Сделал все как вы написали,скрипт работает но выдает вот такую вот ошибку.555.lua:21: bad argument #1 to 'Undo_EndBlock' (string expected, got nil) Снимок.PNG
    где может быть ещё ошибка?
    Hidden Content:
    **Hidden Content: To see this hidden content your post count must be 10 or greater.**
     
  25. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.411
    Симпатии:
    7.261
    Пол:
    Мужской
    Адрес:
    Киев
    @Archchie, смотрите чужие скрипты, где используется эта функция и поймёте, что нужно ставить вместо орисания аргументов.
    Ошибка та-же - оставили описание, а нужно было вписать аргументы.
     
  26. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Разобрался!
     
    Aleksandr Oleynik нравится это.
  27. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    ( descchange, extraflags ) Н хехочу угадывать хочу понять, а можно объяснить пожалуйста descchange что сюда? и что сюда extraflags?
     
  28. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Вот опять непонятно я говорил ( descchange, extraflags ) а не о (script_title, 1) "descchange" что сюда? "extraflags" и что сюда? script_title, 1 название скрипта ввожу но вот меняя цифру возврата нет
     
  29. Al Brazy

    Al Brazy Well-Known Member

    Регистрация:
    14 авг 2009
    Сообщения:
    751
    Симпатии:
    1.049
    Пол:
    Мужской
    Адрес:
    Россия
    Просьба , если не сложно и возможно , сделать скрипт или экшен. Хотелось , чтобы скрипт работал на подобии Nudge Volume , но делал этот Nudge с параметром плагина под указателем мыши . Скрипт нужен для более точной подгонки параметров , ибо некоторые производители , в своём аналогоизме , склонны и аналоговый геморрой в цифру вносить . У плагинов могут быть "0,01" и "0,1" значения . Пожалуй лучше , разные скрипты для разных величин . Мне посоветовали для этого использовать NeatMouse , но неудобно , что его надо включать , удерживать одну кнопку постоянно . А так , было бы здорово , навёл мышь , и жмакай кнопу , слушая результат .
     
  30. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    Учусь писать скрипты, пока весьма несложные, попутно читаю эту ветку форума. Наткнулся на пост прошлогодней давности
    и сделал собственный скрипт, чисто для собственного же развития. Оставлю его здесь, вдруг кому-нибудь пригодится.

    Что делает скрипт:
    - Если включено воспроизведение или запись, маркеры ставятся тремя секундами ранее позиции плейкурсора. При этом эти маркеры создаются жёлтого цвета и с именем "!" (как напоминание о чём-то важном).
    - Если воспроизведение остановлено, маркеры ставятся дефолтные, ровно по позиции эдит курсора (аналогично экшну Insert marker at current position).
    - Также аналогично упомянутому экшну, если в позиции курсора уже стоит маркер, то новый создаваться не будет.
    - Если в проекте имеются маркеры с индексами, к примеру, 1, 2, 4, 5 - созданный маркер будет с индексом 3, а не 6.

    Назначил его на клавишу М, буду пользоваться.
     

    Вложения:

    Buyan нравится это.
  31. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Вау!!!!!!!!!!!! посмотрел скрипт....... а с чего начинали учиться
    ?
     
  32. Microtonic

    Microtonic Любознательный

    Регистрация:
    21 сен 2008
    Сообщения:
    476
    Симпатии:
    99
    Пол:
    Мужской
    Адрес:
    Москва
    Замечена ошибка:
    1. Если в проекте нет маркеров, то выполнение скрипта выдаёт ошибку.
    [​IMG]
     
  33. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Решил объединить два скрипта в один.Скажите что нужно прописать между ними что бы получилось Toggle ?типа цикл экшена.
     
    Последнее редактирование: 3 дек 2017
  34. Kokarev Maxim

    Kokarev Maxim ex cool

    Регистрация:
    13 май 2007
    Сообщения:
    3.696
    Симпатии:
    2.109
    Пол:
    Мужской
    Род занятий:
    freelance, mixing
    Адрес:
    Барнаул
    Это через Cycle Action Editor делается, который в меню Extemsions появляется после установки SWS.
    !Step ставится командой insert step
     
  35. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Я это знаю ,я хочу сделать не Cycle Action ,а тоже самое ,только одним скриптом.
     
  36. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    Да вначале как и все, наверное, с анализа чужих скриптов. Потом посмотрел видеоуроки X-Raym'a (с английскими субтитрами на удивление всё понял), почитал некоторые материалы по Lua. Как-то так, постепенно.

    Да, уже тоже заметил, поправил.
     
  37. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    @EUGEN27771, Ваш скрипт Freeze selected tracks(only instruments).lua пришелся очень кстати.
    Но обнаружилось некоторое неприятное обстоятельство, Freeze срабатывал через раз. Врезультате анализа алгоритма выяснил, что VSTi не всегда успевает подгрузить сэмплы до начала фриза, после выхода из офлайн-режима.
    Ввиду того, что c lua я еще не знаком, да из скриптами для риппера в целом, пришлось помучатся, покурить документацию и поломать голову.
    Ну в общем проблему исправил и внес еще пару мелких корректировок (получил так-сказать, свой первый опыт скрипто-писательства(скорее скрипто-осквернительства:) для рипер).
    В офaлайн вводятся только те FX которые, стоят после VSTi. Так-как часто перед инструментом могут находится разные FX работающие с MIDI и прочие. Сам VSTi не офлайнится, что и устраняет возникшую проблему.
    Добавил еще одно условие - если VSTi необнаружен на треке, фриз не происходит.

    PHP:
    --[[
      * 
    ReaScript Name:Freeze selected tracks(only instruments)
      * 
    Lua script for Cockos REAPER
      
    AuthorEUGEN27771
      
    Author URIhttp://forum.cockos.com/member.php?u=50462
      
    LicenceGPL v3
      
    Version1.2 (Rebuilding by Byuan 07.12.2017)
      ]]

    ---------------------------------------------
    -- 
    Freeze -----------------------------------
    ---------------------------------------------
    function 
    Freeze(track)
      
    reaper.SetOnlyTrackSelected(track)  -- Select current track only
      
    if reaper.TrackFX_GetInstrument(track)==-1 then  -- If VSTi not existfreezing canceled
      reaper
    .ShowMessageBox"The instrument is not found on selected track.", [[gen_Freeze selected tracks(only instruments)]], )
      return
      
    end   

      
    -- Offline alls FX excepted instruments --------------
      
    reaper.Main_OnCommand(reaper.NamedCommandLookup("_S&M_SELFX1"), 0)  -- select first fx
      
    for fx=1reaper.TrackFX_GetCount(track) do
      if 
    fx>reaper.TrackFX_GetInstrument(track)+1 then
      reaper
    .Main_OnCommand(reaper.NamedCommandLookup("_S&M_FXOFF_SETOFFSEL"), 0) -- Offline only the following FX after VSTi
      end
      reaper
    .Main_OnCommand(reaper.NamedCommandLookup("_S&M_SELFXNEXT"), 0)  -- to next fx
      end

      
    -- Freezeonline all -------------------
      
    reaper.Main_OnCommand(408770)  -- Freeze
      reaper
    .Main_OnCommand(405360)  -- online all fxs
    end

    ---------------------------------------------
    -- 
    Start ------------------------------------
    ---------------------------------------------
    local track_cnt reaper.CountSelectedTracks(0)
    local track_tb = {}
    -- 
    Get sel tracks ------
    for 
    i=1track_cnt do  
      
    track_tb[i] = reaper.GetSelectedTrack(0i-1)
    end
    -- Freeze tracks -------
    reaper.Undo_BeginBlock()
    for 
    i=1track_cnt do
      
    Freeze(track_tb[i])
    end
    -- Restore sel state ---
    for 
    i=1track_cnt do
      
    reaper.SetTrackSelected(track_tb[i], true)
    end
    reaper
    .Undo_EndBlock("Freeze selected tracks(only instruments)", -1)



     
    Последнее редактирование: 7 дек 2017
  38. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    Немного подкорректировал скрипт @Aleksandr Oleynik: свёл всё в один цикл, добавил undo name и включение группировки треков (Enable track grouping), если она выключена.
    PHP:
    local undo "Set tracks symmetrically and add to unused group"
    track_g 0
    stm_n 
    1
    counttracks 
    reaper.CountTracks(0)
    count_selected_tracks reaper.CountSelectedTracks(0)
    if 
    count_selected_tracks == 2 then
        reaper
    .Undo_BeginBlock()
        if 
    reaper.GetToggleCommandState(40771) == 0 then
            reaper
    .Main_OnCommand(407710) -- Enable track grouping
        end
        
    for 1counttracks do
            
    local function error()
                
    reaper.MB("One or both of selected tracks is already in group" "Error"0)
            
    end
           
            local track 
    reaper.GetTrack(01)
            
    local track_sel reaper.IsTrackSelected(track)
            
    stm reaper.GetSetTrackGroupMembership(track"VOLUME_MASTER"00)
            if 
    stm >= stm_n then
            stm_n 
    stm*2
            end

            
    if track_sel == true and stm ~= 0 then
                track_g 
    2
                error
    ()
                break
            
    end
           
            
    if track_sel == true and track_g == 0 then
                reaper
    .SetMediaTrackInfo_Value(track"D_PAN", -1)
                
    reaper.GetSetTrackGroupMembership(track"PAN_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"PAN_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"VOLUME_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"VOLUME_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"MUTE_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"MUTE_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"SOLO_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"SOLO_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"PAN_REVERSE"stm_nstm_n )
                
    track_g 1
            
    elseif track_sel == true and track_g == 1 then
                reaper
    .SetMediaTrackInfo_Value(track"D_PAN"1)
                
    reaper.GetSetTrackGroupMembership(track"PAN_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"PAN_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"VOLUME_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"VOLUME_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"MUTE_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"MUTE_SLAVE"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"SOLO_MASTER"stm_nstm_n )
                
    reaper.GetSetTrackGroupMembership(track"SOLO_SLAVE"stm_nstm_n )
            
    end
        end
        reaper
    .Undo_EndBlock(undo, -1)
    end
     
  39. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    Было-бы очень интересно ознакомится с данным продуктом. Но ссылка таргетируется пост "http://rmmedia.ru/threads/110165/page-19#post-2165444" который не имеет по ходу никакого отношения к..

    Возникает впечатления, что многие сообщения Евгения, возможно и других пользователей в этой ветке, либо мне не видны, либо были удалены. По контексту видно, что они должны были быть, так-как есть много ответов на несуществующие сообщения.
    Прошу простить меня за мой интерес и подозрительность, но я просто немного в растерянности. Хотелось-бы немного ориентироваться в происходящем здесь.
     
    Последнее редактирование: 5 дек 2017
  40. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    @Buyan,
    Вот и я тоже перечитываю ветку и понимаю, что некоторые посты были удалены. С чем это связано, понять не могу.
     
  41. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.411
    Симпатии:
    7.261
    Пол:
    Мужской
    Адрес:
    Киев
    Последнее редактирование: 5 дек 2017
    Alex_HS нравится это.
  42. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    @Aleksandr Oleynik, Премного благодарен за ссылку!
    Низкий поклон Евгению, он действительно гений и настоящий энтузиаст. Такую работу проделал. Я без преувеличения восхищен.
    FX Reack - это именно то, что я себе представлял и видел в своих снах, решение многих проблем и... в общем пока одни эмоции. Рипер имеет уникальные возможности в плане роутинга и вообще, но как всегда, возникает вопрос удобства и оперативности управления сложными решениями в прожектах. Одним словом такие скрипты раскрывают всю мощность рипера.
    Приятно, когда на форуме есть фидбэк, радует, что проблемы и вопросы можно решить. Еще раз Вам @Aleksandr Oleynik, спасибо!
     
    Последнее редактирование: 5 дек 2017
    Aleksandr Oleynik нравится это.
  43. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    190
    Симпатии:
    31
    Пол:
    Мужской
    Скажите пожалуйста что нужно дописать в скрипт, что бы когда отсутствует тайм селекшен скрипт не срабатывал?

    Hidden Content:
    **Hidden Content: To see this hidden content your post count must be 10 or greater.**
     
    Последнее редактирование: 6 дек 2017
  44. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    Можно ли как-нибудь узнать при добавлении FX, эффект это или же инструмент, неросредственно до его добавления?

    Пишу свой вариант скрипта для добавления FX и хочу исключить случайную вставку VSTi на мастер. Для этого прописать условие: если выделен Мастер, то проверить, является ли выбранный FX эффектом или инструментом, и если это инструмент - не добавлять его. Возможно такое?
     
  45. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    692
    Симпатии:
    1.031
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    сравнить с индексом reaper.TrackFX_GetInstrument( track ) или по i в имени (VSTi, AUi, DXi)
     
    Buyan и CerberPic нравится это.
  46. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    330
    Симпатии:
    64
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Мне кажется, есть смысл создать отдельную ветку для скриптописателей типа "Вопросы по созданию скриптов", чтобы вопрошающие могли в отдельной ветке получать от гуру ответы на вопросы типа "Как достать такую-то функцию", "Что добавить в скрипт, чтобы....." и т.д.
     
    Microtonic нравится это.
  47. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    @Supa75, так вроде бы как и эта тема называется "Помогите создать экшн / кастом экшн / скрипт".
     
    Aleksandr Oleynik нравится это.
  48. Microtonic

    Microtonic Любознательный

    Регистрация:
    21 сен 2008
    Сообщения:
    476
    Симпатии:
    99
    Пол:
    Мужской
    Адрес:
    Москва
    я думаю, что идея в разделении: кто-то пишет сам, кто-то просит чтобы ему написали.
     
    Buyan нравится это.
  49. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    Поддерживаю. Можно разделить на две ветки. В одной просьбы и инструктажи по написанию скриптов и экшнов, в другой - напишите мне скрипт пожалуйста.
    Хотя с другой стороны обсуждаемое в двух таких отдельных ветках неизбежно будет пересекается и вопросы будут перемещаться с одной в другую. В данном случае тоже возможна путаница.
     
  50. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    @Archchie, попробуйте вот это.
    PHP:
    local undo "Delete all items and envelope points in time selection"

    reaper.PreventUIRefresh(-1)
    reaper.Undo_BeginBlock()
    local start_timeend_time reaper.GetSet_LoopTimeRange(00000)
    if 
    start_time ~= end_time then
        reaper
    .SelectAllMediaItems(00)
        
    reaper.Main_OnCommand(400610) -- Split items at time selection
        local item_count 
    reaper.CountMediaItems(0)
        if 
    item_count ~= 0 then
            
    -- reaper.ShowConsoleMsg("Items: "..tostring(item_count).."\n")
            for 
    0item_count do
                
    local item reaper.GetMediaItem(0i)
                
    local item_pos reaper.GetMediaItemInfo_Value(item"D_POSITION")
                
    local item_len reaper.GetMediaItemInfo_Value(item"D_LENGTH")
                
    local item_end item_pos item_len
                
    if (item_pos == start_time) or (item_end == end_time) or (item_pos start_time and item_end end_timethen
                    reaper
    .SetMediaItemSelected(item1)
                    
    reaper.SetMediaItemInfo_Value(item"C_LOCK"0)
                
    end
            end
            reaper
    .Main_OnCommand(400060) -- Remove items
        end
        local track_count 
    reaper.CountTracks(0)
        for 
    0track_count do
            
    local track reaper.GetTrack(0t)
            
    local env_count reaper.CountTrackEnvelopes(track)
            for 
    0env_count do
                
    local env reaper.GetTrackEnvelope(tracke)
                
    reaper.DeleteEnvelopePointRange(envstart_timeend_time)
                
    local autoitem_count reaper.CountAutomationItems(env)
                for 
    ai 0autoitem_count do
                    
    reaper.GetSetAutomationItemInfo(envai"D_UISEL"11)
                
    end
                reaper
    .Main_OnCommand(reaper.NamedCommandLookup("_BR_SAVE_CURSOR_POS_SLOT_1"), 0) -- Save edit cursor positionslot 01
                reaper
    .Main_OnCommand(406300) -- Go to start of time selection
                reaper
    .Main_OnCommand(420870) -- Split automation items
                reaper
    .Main_OnCommand(406310) -- Go to end of time selection
                reaper
    .Main_OnCommand(420870) -- Split automation items
                reaper
    .Main_OnCommand(reaper.NamedCommandLookup("_BR_RESTORE_CURSOR_POS_SLOT_1"), 0) -- Restore edit cursor positionslot 01
                autoitem_count 
    reaper.CountAutomationItems(env)
                for 
    ai 0autoitem_count do
                    
    reaper.GetSetAutomationItemInfo(envai"D_UISEL"01)
                    
    local autoitem_pos reaper.GetSetAutomationItemInfo(envai"D_POSITION"00)
                    
    local autoitem_len reaper.GetSetAutomationItemInfo(envai"D_LENGTH"00)
                    
    local autoitem_end autoitem_pos autoitem_len
                    
    if (autoitem_pos == start_time) or (autoitem_end == end_time) or (autoitem_pos start_time and autoitem_end end_timethen
                        reaper
    .GetSetAutomationItemInfo(envai"D_UISEL"11)
                    
    end
                end
            end
        end
        reaper
    .Main_OnCommand(420860) -- Delete automation items
    end
    reaper
    .Undo_EndBlock(undo, -1)
    reaper.PreventUIRefresh(1)

    Попробуйте тоже скрипт. Айтемы автоматизации тоже удаляет.

    Так и для тех, кто пишет, есть темы. А здесь те, кто пишет, помогают тем, кто либо вообще не пишет, либо только начинает писать. Как-то так. :)

    Именно.
     
    Последнее редактирование: 7 дек 2017

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