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

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

  1. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
  2. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Не нужно ни чего делить. В этой ветке обсуждается всё, что может быть обсужденно за три-пять постов.
    Если что-то сложнее - отдельная тема.
     
    CerberPic, Buyan и Al Brazy нравится это.
  3. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Друзья знающие! Может если кому не очень трудно создать скрипт вот с таким условием, потом править буду сам под свои нужды. На одном действии --- Если Тулбар закрытый он закрывал ниже указанные и открывал себя. А если он открытый он закрывался и открывал ниже указаный
     

    Вложения:

    Последнее редактирование: 7 дек 2017
  4. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Сорри не то сфоткал перескриншотил
     

    Вложения:

  5. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    А чем данный сайкл не устраивает?
     
  6. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    @Maestro Sound, я вообще не понял о чём речь :(
    Какой тулбар?
     
  7. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Резонный вопрос. Хочу свести цыкл экшины к минимуму и смотреть на скрипты и потихоньку учится
    --- добавлено 7 дек 2017 ---
    Да без разницы но в данном примере это тулбар 14 и 4 чередуются с условиями для других указаных
     
  8. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Если в скриптах присутствуют те-же Экшины (стандартные и SWS) - то толку от того, что это не в цикл экшине или в кастом экшине сделанно - НОЛЬ!
    Прелесть скриптов в использовании API функций работающих ПРЯМО с внутренностями Рипера.
     
  9. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Нельзя там сделать условие если у тебя что то выключено, тогда должно включится это.
     
  10. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Но в цикл экшинах можно
    Но в общем согласен - если нужна какая-то продвинутая логика - то скрипт писать удобнее и понятнее.
     
    Maestro Sound нравится это.
  11. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Ну это понятно
     
  12. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    Вопрос такой: как вообще вызвать функцию os.remove() ?
    Везде пишут, что
    Но у меня в любом случае голый nil. Путь получен, имя файла получено. Не работает даже в связке
    Код:
    os.execute(path)
    os.remove (filename)
    Подскажите кто-нибудь, уже всю голову сломал.


    Если совсем по-простому, то
    PHP:
    toggle_state reaper.GetToggleCommandState(41941) -- получаем 0если тулбар 14 закрыти 1если открыт
    if toggle_state == 0 then -- если тулбар 14 закрытто
        reaper
    .Main_OnCommand(reaper.NamedCommandLookup("id скрипта"), 0) -- закрываем тулбар Х
        reaper
    .Main_OnCommand(reaper.NamedCommandLookup("id скрипта"), 0) -- открываем тулбар 14
    else -- в противном случае
        reaper
    .Main_OnCommand(reaper.NamedCommandLookup("id скрипта"), 0) -- закрываем тулбар 14
        reaper
    .Main_OnCommand(reaper.NamedCommandLookup("id скрипта"), 0) -- открываем тулбар Х
    end
     
  13. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    360
    Симпатии:
    27
    Спасибо
     
  14. Слава

    Слава Member

    Регистрация:
    22 ноя 2006
    Сообщения:
    65
    Симпатии:
    19
    Уважаемые скриптописатели! Т.к. являюсь лишь скрипточитателем, имею к Вам просьбу.
    Есть в рипере такой экшн - Item: Import item media cues as project markers
    и есть такая опция в Project settings
    [​IMG]
    Так вот, мне нужен скрипт, к-рый бы делал обратное - прописывал маркера в item media cues.
    Понимаю, что запрос несколько туманный, поэтому сейчас более детально.

    Пишу многочасовые начитки. Чтецы ошибаются - я сразу, не останавливая, жму М (маркер) - в результате имею вэйву и 10-20 (30-40 :) ) маркеров в местах ошибок. Потом, когда редактирую, было бы очень удобно, чтоб маркера были привязаны к wav-ке, а не к таймлайну, но такого в рипере нет. С регионами работать не хочу (пробовал - мне не удобно). Уже было отчаялся, но вчера обратил внимание на то, что на картинке выше под спойлером - возможность сохранять маркера в wav. Попробовал как это выглядит на практике. А выглядит это так: если импортнуть wav из таким образом настроенного проекта в рипер (или любой аудиоредактор), на месте маркеров на этой импортированной вэйве увидим media cues. И они уже привязаны к вэйве т.е. если эту вэйву резать, двигать, то media cues двигаются вместе с новыми фрагментамы вэйвы. А это именно то, что нужно для удобного (быстрого) редактирования по маркерам.
    Так а чего ж я хочу? Да всё просто - закончил запись, выделил маркера, запустил скрипт и они (эти маркера) прописались в айтем(ы) уже как media cues. В противном случае нужно жать save и потом ре-импортировать вэйвы обратно в проект.

    Думаю, что запрос реально осуществимый, тем более что обратная операция (Item: Import item media cues as project markers) уже изначально встроена в рипер. Но чукча не писатель, чукча - читатель :) И именно поэтому буду весьма признателен за реализацию такого скрипта.
     
    Последнее редактирование: 7 дек 2017
  15. Broojacker

    Broojacker Member

    Регистрация:
    4 сен 2010
    Сообщения:
    83
    Симпатии:
    48
    Адрес:
    Киев
    Мне нужен экшн для рендера айтема с MIDI сенд трека на новый трек с сендом на мастер, уже нагородил такую телегу:

    Custom: Render item from MIDI track
    SWS: Save current track selection
    Script: mpl_Go to first send destination track.lua
    SWS: Mute all receives for selected track(s)
    SWS: Restore saved track selection
    SWS: Unmute all sends from selected track(s)
    Script: mpl_Go to first send destination track.lua
    Xenakios/SWS: Render receives of selected track as stems
    Track: Unmute tracks
    SWS: Unmute all receives for selected track(s)
    SWS: Enable master/parent send on selected track(s)
    SWS/S&M: Cut selected tracks sends
    Track: Go to previous track
    SWS/S&M: Split selected items at time selection, edit cursor (MIDI) or prior zero crossing (audio)

    Остался только экшн который бы удалял или выделял все айтемы кроме тех что в time selection, потому как экшн Xenakios/SWS: Render receives of selected track as stems рендерит весь трек.

    Select all item on selected track outside time selection.
    Есть ли подобный экшн или скрипт? Что то не могу нагуглить.
     
  16. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    @Слава, Исключительно практический совет - назначьте на удобный хоткей "Item: Add stretch marker at cursor", используйте stretch markers вместо item media cues.
     
    Последнее редактирование: 7 дек 2017
  17. Слава

    Слава Member

    Регистрация:
    22 ноя 2006
    Сообщения:
    65
    Симпатии:
    19
    @Buyan,
    Как вариант пробовал раньше и их (stretch markers). Не понравилось то, что они - не нейтральные текстовые метки и, помнится, что-то я там случайно понаделал... Уже не помню точно что именно я нахимичил тогда, но отбраковал... Хотя, если никто из здешних талантищей не поможет с преобразованием маркеров в media cue, вероятно, ещё раз попробую поработать с stretch маркерами.
    Спасибо за помощь :)
     
  18. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    @Слава, без рендера ни как. Метки ведь в wav пишутся.
    Только рендер и переоткрывать
     
  19. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    @Слава,
    Да просто нужно научится ими пользоваться. Можно заблокировать в момент записи и прослушивания, что-бы случайно не зацепить. А потом редактировать айтем без сплитов, с помощью тех-же stretch markers.
    Если активировать опцию Set default mouse modifier action for "Media item stretch marker left drag" to "Ripple move stretch markers", то можно использовать stretch markers для вырезания (стрэйчинга до минус-бесконечности) исключительно проблемных участков (между двумя маркерами).

    Если Вы недавно пользуетесь Reaper, то возможно имеют место привычки из предыдущих DAW:) Мне тоже поначалу в рипере было жутко неудобно, но все же я попытался привыкнуть к его логике и организации не прибегая к излишней кастомизации имитирующей другие DAW. Теперь понимаю насколько здесь все логичнее и удобней на самом деле по сравнению... Просто порой методика выполнения типичных операций может оказаться совершенно отличной от методик в других хостах, но более удобной и быстрой впоследствии.
    --- добавлено 7 дек 2017 ---

    Как по мне, то это как-то неэстетично, если для такой мелочи, без которой можно обойтись и тем более есть чем заменить, делать скрипт, который будет рендерить айтем, проверять кучу условий, установлены-ли нужные галочки в настройках, подменять текущий айтем и прочее... Но это исключительно мое мнение;), кому как удобно, тот так и делает.
     
    Последнее редактирование: 7 дек 2017
  20. Слава

    Слава Member

    Регистрация:
    22 ноя 2006
    Сообщения:
    65
    Симпатии:
    19
    Вот именно в этом не уверен... пока. Мне ещё хотелось бы узнать точку зрения EUGEN27771 по этому поводу. И если девствительно только рендер&переоткрыть то, вероятно, буду идти каким-то другим путём... Но
    моя методика ( :) ) меня устраивает и другие хосты здесь ни при чем. Мне лишь нужно как-то обойти это маленькое (?) неудобство с привязкой маркеров. Стретчинг аудио использую, но не в случае убирания лишнего (ошибочного) слова из предложения. Хотя, может быть, кому-то это и удобно, мне - нет.
    Так что пока жду. И... надежда умирает вместе с нами :)
     
    Buyan нравится это.
  21. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.208
    Симпатии:
    1.872
    Пол:
    Мужской
    1234.gif
     
    Buyan нравится это.
  22. Слава

    Слава Member

    Регистрация:
    22 ноя 2006
    Сообщения:
    65
    Симпатии:
    19
    @Aleksandr Oleynik,
    @Buyan,
    А-а-а!!! Я так и думаль!!!
    @EUGEN27771,
    Что это, прямая запись в файл?
    Т.е. рендер\ре-импорт не обязателен?
     
  23. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.208
    Симпатии:
    1.872
    Пол:
    Мужской
    Да, маркеры пишутся в файл напрямую. Но это только тестовый скрипт.
     
    Buyan нравится это.
  24. Слава

    Слава Member

    Регистрация:
    22 ноя 2006
    Сообщения:
    65
    Симпатии:
    19
    Так, ребята, кажись я офигенно протупил...
    Только что ещё раз проверил всю процедуру:
    в Project settings включил опцию сохранять маркера;
    включил запись, нащелкал 3 маркера;
    нажал стоп;
    не сохраняя проект и не рендеря ничего просто сдвинул (и удалил) маркера, а под ними, оказывается, уже есть media cues (!) Для пущей убедительности сразу (не сохраняя проект) открыл файл в вавозавре - да, media cues уже на месте.
    Т.е. файл уже содержит привязанные к нему маркера и его уже можно редактировать...
    Правда, я не уверен, что это тот же результат что и у вас, EUGEN27771, например у вас я вижу текст (M1 M2 M3 M4), а у меня вообще никакого текста...
    Т.е. какой формат того, что вставляет ваш скрипт - media cue, или это какие-то другие маркера. И можно ли те, или другие подвинуть, удалить (в рипере)?
     
    Последнее редактирование: 7 дек 2017
  25. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    Выручайте, мучаюсь. :confused:
    Имеется строка с путями вида D:\Audio\File01D:\Audio\File02D:\Audio\File03. Без пробелов, но они и не нужны.
    Скриптом получаю путь D:\Audio\File02, с помощью string.find ищу его в этой строке. Всё нормально, находит и выдаёт индекс 16.
    Далее пытаюсь удалить найденное из строки, но не тут-то было. Уже всё перепробовал, ничего не помогает.
    Делаю так:
    PHP:
    finds string.find (stringfilename1true)
    -- 
    возвращает индекс 16
    string
    .gsub (stringfilename"")
    -- 
    и результата никакого.

    ---- 
    И даже вот так не хочет:

    finds string.find (stringfilename1true)
    sss string.sub (stringtonumber (finds), tonumber (finds) + #filename - 1)
    string.gsub (stringsss"")
     
    Последнее редактирование: 8 дек 2017
  26. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.208
    Симпатии:
    1.872
    Пол:
    Мужской
    @CerberPic, строки в lua неизменяемые, нужно
    str = string.gsub (str, sss, "").
    И не используйте string как переменную - это таблица для строковой библиотеки.
     
  27. gazzz

    gazzz Gazzuar (Goa-trance)

    Регистрация:
    17 янв 2008
    Сообщения:
    206
    Симпатии:
    68
    Адрес:
    Lyubertsy
    странно, в таком скрипт виде работает
    Код:
    reaper.ShowConsoleMsg('')
    
    string = "D:\\Audio\\File01D:\\Audio\\File02D:\\Audio\\File03"
    filename = "D:\\Audio\\File02"
    finds = string.find (string, filename, 1, true)
    -- возвращает индекс 16
    reaper.ShowConsoleMsg(string.."\n"..filename.."\n")
    reaper.ShowConsoleMsg(string.gsub (string, filename, ""))
    
    
     
  28. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    716
    Симпатии:
    1.075
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Всё работает вроде
    Код:
    s = [[D:\Audio\File01D:\Audio\File02D:\Audio\File03]]
    s_sub = [[D:\Audio\File02]]
    s = s:gsub(s_sub, '')
     
  29. Buyan

    Buyan Member

    Регистрация:
    19 апр 2016
    Сообщения:
    80
    Симпатии:
    12
    Пол:
    Мужской
    Род занятий:
    Хобби: Гитара, Флейта, Звукорежиссура.
    Адрес:
    Белая Церковь
    Да, сам все проверил. Действительно таким образом cues прописываются в файл и видны в айтеме.
     
  30. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    @Archchie, слеш поставьте перед вторым PHP чтоб код не коверкался
     
    Archchie нравится это.
  31. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    Народ подскажите пожалуйста что я делаю не правильно? первое действия срабатывает ,а второе нет
    PHP:
    reaper.PreventUIRefresh(1)
      
    reaper.Undo_BeginBlock() --call to start a new block
    ---------------------------------------------------------
        
    toggle_state reaper.GetToggleCommandState(40296) -- получаем 0 если отключенно и 1 если включенно
        
    if toggle_state ~= 0 then


    -----------------------------------------------------------
            
    ComandID 40296   -- TrackSelect all tracks
            reaper
    .Main_OnCommand(ComandID,0)  
            
    ComandID "_NF_BYPASS_FX_EXCEPT_VSTI_FOR_SEL_TRACKS" --SWS/NFBypass FX (except VSTi) for selected tracks
            reaper
    .Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
            
    ComandID 40297   -- TrackUnselect all tracks
            reaper
    .Main_OnCommand(ComandID,0)
    ---------------------------------------------------------------------------------------------------------------
        else -- 
    в противном случае

    ---------------------------------------------------------------------------------------------------
            
    ComandID 40296   -- TrackSelect all tracks--
            
    reaper.Main_OnCommand(ComandID,0)
            
    ComandID "_S&M_FXBYPALL3" --SWS/S&MUnbypass all FX for selected tracks
            reaper
    .Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
            
    ComandID 40297   -- TrackUnselect all tracks
            reaper
    .Main_OnCommand(ComandID,0)
    ---------------------------------------------------------------------
        
    end
      

    ------------------------------------------------------------------------------------------------------
      
    reaper.Undo_EndBlock("Bypass all FX (except VSTi) for all tracks",1)
    reaper.PreventUIRefresh(1)
     
  32. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    @Archchie, для начала у Экшина 40296 нет State -
    toggle_state при любых условиях будет = -1 и ни когда ни 0 ни 1
    Если в Экшинах, в графе State на против Экшина нет on или off - то по такому экшину состояние получить нельзя.

    Да и вообще - какой-то безсмысленный скрипт.
    Даже если бу у Экшина 40296 был фидбэк по состоянию, что вы хотели сделать?
     
    Последнее редактирование: 8 дек 2017
  33. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    Уже всю голову сломал ! может подскажете? скажете! как его доделать что бы toggle заработал
     
  34. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Так напишите ЧТО вы хотите сделать????
    Пока я вижу полную безсмыслицу, даже если бы у Экшина 40296 было состояние.
    Опишити русским языком что хотите, тогда поясню как.
     
  35. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    Это скрипт забайпасить все FX в проекте разбайпасить все FX за исключением VST i, но это не важно ,мне нужен не скрипт ,а я просто хочу понять смысл ,не могу понять как работать с этим Toggle.Много где надо сделать Toggle путем совмещения двух трех скриптов ,а я не могу понять как
     
    Последнее редактирование: 8 дек 2017
  36. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Так в том то и дело, что ВАЖНО!
    Нет универсального Toggle, вы написали ПОЛНЕЙШУЮ логическую билиберду и пытаетесь в чём-то разобраться - НЕ РАЗБЕРЁТЕСЬ!
    Условия в начале нужно самому себе составить и пояснить, а потом садиться за скрипт.
    Хотите понять как писать скрипты с условиями else - ставьте КОНКРЕТНУЮ задачу и её решайте.

    Ещё раз спрошу - что должен делать скрипт?
    Вот это вот пояснение -
    НИ О ЧЁМ!
    Условия пишутся например так -
    Если:
    - Все FX в проекте находятся в состоянии Unbypass за исключением VSTi (их состояние не проверять)
    То:
    - сделать всем FX на всех треках проекта Bypass за исключением VSTi (их состояние не проверять)
    В противном случаи (т.е. противоположном изложенному в условии Если):
    - сделать всем FX на всех треках проекта Unbypass за исключением VSTi (их состояние не проверять)

    Если нужно сделать именно ЭТО - могу сделать такой скрипт с пояснениями, но просто не будет!
    Хотя, если нужно вообще ВСЕ FX на ВСЕХ треках, то наверное можно и по простому.
     
  37. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    Сделайте пожалуйста.
     
    Последнее редактирование: 8 дек 2017
  38. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    А если на одном треке FX-ы (не VSTi) в байпасе, а на другом в анбайпасе - что скрипт должен делать?
     
  39. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    отключить остальное ,включить ВСЁ
     
  40. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    ни чего опять не понял :(
    Какие такие "остальные", что такое "ВСЁ"?????

    Ещё раз спрошу с картинкой, что скрипт должен сделать на каждом из треков -
    2017-12-08_144133.png
     
  41. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    (клик off, клик on) если нажимаем off он отключает все остальное что включенно, кликаем on включает ВСЕ ВСЕ VST которые есть (не обращая внимания, что было раньше)
     
  42. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Ещё раз спрашиваю - что ОСТАЛЬНОЕ????
    ну чтож так тяжело то всё ? :(

    У вас сформировалось в голове какое-то очень не верное представление о логике работы функции toggle, которая управляет ни одним каким-то состоянием, а целой группой.
    Если речь идёт, например о - Show/hide video windows - что тут делает toggle предельно ясно - один раз вызвали экшин - он опросил состояние окна видео, если окно видимо - закрыл его, если не видимо - открыл.
    А что прикажете делать Функции в режиме toggle если она работает с множеством треков, на которых может быть самое разное состояние?
    Если ни каких дополнительных условия не написать скрипту, то в режиме toggle он забайпасенные FX-ы на треке будет делать анбайпас, а анбайпасенные - байпасить.
    Сомневаюсь, что вы именно такого хотите.
     
  43. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    @Aleksandr Oleynik, Есть в проекте 10 FX Bypass,10 FX Unbypass нажимаем на кнопку делается 20 FX Bypass(то есть, все), нажимаем еще раз делается 20 Unbypass
     
    Aleksandr Oleynik нравится это.
  44. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Ура!
    ОК!
    Это в самом деле простое условие без нюансов, но есть нюанс с точки зрения самого скрипта - я не знаю как сделать для срипта state, может кто-то другой знает (как-то обсуждали).
    Но можно использовать state так называемых Dummy экшинов.
    Я сделаю с пояснениями!
     
    Последнее редактирование: 8 дек 2017
  45. Archchie

    Archchie Active Member

    Регистрация:
    24 окт 2017
    Сообщения:
    244
    Симпатии:
    53
    Пол:
    Мужской
    @Aleksandr Oleynik, А вообще в скриптах можно делать типа как ---step---в cycle action ,набор команд (что то там) набор команд
     
  46. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    Можно, напишу - поймёте.
    Но лучше использовать совсем другой подход -
    при запуске скрипта не его (или того-же привязанного Dummy) state опрашивать и тупо делать что-то противоположное тому, что скрипт делал в прошлый раз, а Рипер опрашивать на предмет ключевых состояний и что-то делать в зависимости от этих ответов.
    Тут нужно не писать, а говорить - долго объяснять.
     
  47. CerberPic

    CerberPic Member

    Регистрация:
    17 фев 2017
    Сообщения:
    34
    Симпатии:
    9
    Пол:
    Мужской
    @EUGEN27771, @@Michael, @gazzz
    Вот кусок скрипта, в котором затычка. Возможно, это из-за того, что я как-то неправильно произвожу чтение из файла и запись в него?
    PHP:
    res_path string.gsub(reaper.GetResourcePath(), [=[\]=], [=[\\]=])
    track reaper.GetSelectedTrack(00)

    function 
    unfrz()
        
    item reaper.GetTrackMediaItem(track0)
        
    take reaper.GetActiveTake(item)
        
    source reaper.GetMediaItemTake_Source(take)
        
    proj_name string.gsub(reaper.GetProjectName(0""), ".RPP""")
        
    filename string.gsub(reaper.GetMediaSourceFileName(source""), proj_name.."_freeze_""")
      
        
    settings io.open(res_path..[[\\Freeze_data.txt]])
        
    text settings:read()
        
    settings:close()
        
    settings io.open(res_path..[[\\Freeze_data.txt]], "w")
        
    finds string.find(tostring(text), filename1true)
        if 
    finds then
            sss 
    string.sub(tostring(text), tonumber(finds), tonumber(finds) + #filename - 1)
            
    new_text string.gsub(tostring(text), sss"")
            
    settings:write(new_text)
        else
            
    settings:write(text)
        
    end
        settings
    :close()
      
        
    reaper.SelectAllMediaItems(00)
        
    reaper.SetMediaItemSelected(item1)
        
    reaper.Main_OnCommand(reaper.NamedCommandLookup("_S&M_DELTAKEANDFILE2"), 0)
        
    reaper.Main_OnCommand(416440) -- unfreeze
        reaper
    .UpdateArrange()
    end
    Я понимаю, я там просто в качестве примера так написал.
     
  48. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    14.728
    Симпатии:
    7.445
    Пол:
    Мужской
    Адрес:
    Киев
    @Archchie,
    PHP:
    reaper.Undo_BeginBlock() --call to start a new block
    ---------------------------------------------------------
    toggle_state reaper.GetToggleCommandState(reaper.NamedCommandLookup("_S&M_DUMMY_TGL1"),0) -- получаем 0 если отключено и 1 если включено

    if toggle_state == 0 then
      
    -----------------------------------------------------------
      
    ComandID 40296 -- TrackSelect all tracks
      reaper
    .Main_OnCommand(ComandID,0)
      
    ComandID "_NF_BYPASS_FX_EXCEPT_VSTI_FOR_SEL_TRACKS" --SWS/NFBypass FX (except VSTi) for selected tracks
      reaper
    .Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
      
    ComandID 40297 -- TrackUnselect all tracks
      reaper
    .Main_OnCommand(ComandID,0)

      
    ComandID "_S&M_DUMMY_TGL1" --
      
    reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
      --------------------------------------------------------------------------------------------------
    else -- 
    в противном случае
      
    --------------------------------------------------------------------------------------------------
      
    ComandID 40296 -- TrackSelect all tracks--40297
      reaper
    .Main_OnCommand(ComandID,0)
      
    ComandID "_S&M_FXBYPALL3" --SWS/S&MUnbypass all FX for selected tracks
      reaper
    .Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
      
    ComandID 40297 -- TrackUnselect all tracks
      reaper
    .Main_OnCommand(ComandID,0)

      
    ComandID "_S&M_DUMMY_TGL1" --
      
    reaper.Main_OnCommand(reaper.NamedCommandLookup(ComandID),0)
      ---------------------------------------------------------------------
    end

    ----------------------------------------------------------------------------------------------------
    reaper.Undo_EndBlock("Bypass all FX (except VSTi) for all tracks",1)
    reaper.PreventUIRefresh(1)
    Только тут VSTi ведь если в байпасе - тоже анбайпасится будут!

    "_S&M_DUMMY_TGL1" - Экшин используется как экшин - пустышка у которого есть состояние
     
    Archchie и Maestro Sound нравится это.
  49. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.208
    Симпатии:
    1.872
    Пол:
    Мужской
    А в чем конкретно проблема? Не могу проверять - что должен делать скрипт и где косяк?
     
  50. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    716
    Симпатии:
    1.075
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Видимо, анфризить трек и обновлять текстовый файл, где перечислены сурсы рендеров замороженных треков. Делается это конечно же проще, нежели в указанном скрипте.
     

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