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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Я вообще-то помочь хотел, но раз так...идите с Богом.
Я понимаю что вы помочь хотели ,Спасибо конечно,просто вам сказали что ваш custom не работает,а вы не проверивши начинаете доказывать что все работает
 
Написал 2 новых-может кому-то пригодится.
1. собирает выбранные треки в проекте ( и полные папки с роутингом в т.ч. если нужно) и перемещает их в самый верх проекта-что очень удобно.
2. делает то же что и первый, плюс группирует и окрашивает группу в нужный цвет (что также очень удобно). Если окраска не нужна-этот пункт можно исключить.
По логике экшена никакие папки между и прочие причины мешать ему не должны.
1.jpg 2.jpg

Я понимаю что вы помочь хотели ,Спасибо конечно,просто вам сказали что ваш custom не работает,а вы не проверивши начинаете доказывать что все работает
Это не повод быть невежливым. Вежливость-это тот скилл, который стоит прокачивать бесконечно-в жизни пригодится.
 
@Aleksandr Oleynik, И все таки Александр Подскажите пожалуйста что тут не так, почему работает только на фриз. Как сделать цикличность? Как правильно оформить if then и else?
 
@Maestro Sound, найду время - посмотрю.
Реально - просто увяз в скрипте по оптимизации, очень всё сложно и туго идёт...
Пойдёт дым - сделаю паузу гляну.
 
Последнее редактирование:
  • Like
Реакции: Slick и Maestro Sound
Александр Если не в тягость посмотрите что тут не так почему работает только на фриз. Как сделать цикличность?
Тут ВСЁ не так, вы написали набор не связных выражений и функций.
А почему для чистки не использовать штатные инструменты Рипера,
Project Directory Cleanup?
Там можно выбрать что удалять, что оставить, в вопросах удаления доверять какому-то скрипту, самому умному - категорически нельзя ---- как нибудь снесёте не восстанавливаемую информацию.
Чтоб написать более-менее умный скрипт по удалению чего-то не нужного, прийдётся ОЧЕНЬ много думать.

Что касается синтаксиса скрипта -
строка -
reaper.BR_GetMediaTrackFreezeCount( track )
вообще ни чего не делает
Чтоб найти зафризенные треки нужно опросить ВСЕ треки проекта в лупе - по каждому проекту получить значение которое эта функция отдаёт, а значит присвоить параметр какой-то, куда значение запишется.

Вот простой опрос и получение номера зафризенного трека -

PHP:
----------------------------------------------------------------------------------------------------
local msg = function(M) reaper.ShowConsoleMsg(tostring(M).."\n") end
----------------------------------------------------------------------------------------------------

counttracks = reaper.CountTracks(0) -- находим количество треков в проекте
if counttracks == nil then return end -- если треков вообще нет, не выполняем код дальше
for i = 1, counttracks do -- это луп по всем трекам, где i - это порядковый номер в лупе, а counttracks - количество циклов
  track = reaper.GetTrack(0,i-1) -- тут i-1 потому как нумерация в Рипере начинается с НОЛЯ
-- находим медиа трек (это объект такой) по его id - порядковому номеру
  if track then       -- условие, что если хоть один трек найден, то идём дальше
    ss = reaper.BR_GetMediaTrackFreezeCount( track ) -- тут получаем состояние трека, если ss будет = 1 --- значит трек зафиризен, а если 0, значит нет
    msg(i.."   :   "..ss) -- просто выводим в окно консоли ReaScript информацию написанную в скобках
-- в кавычках пишется текст (двоеточие в частности), а без ковычек - переменные,
--которые берутся из цикла каждый раз, сколько треков, столько циклов, столько строк напечатает, две точки - это добавление в одну строку разных переменных и текста
  end
end
 
Последнее редактирование:
  • Like
Реакции: Maestro Sound
1. собирает выбранные треки в проекте ( и полные папки с роутингом в т.ч. если нужно) и перемещает их в самый верх проекта-что очень удобно.

На этот раз все треки собираются правильно, только вот если на треках имеются посылы (sidechain и.т.д.)то все посылы пропадают!
 
ss = reaper.BR_GetMediaTrackFreezeCount( track ) -- тут получаем состояние трека, если ss будет = 1 --- значит трек зафиризен, а если 0, значит нет
А зачем выводить на экран? Нужно лишь узнать (выделенный или выделенные) треки, заморожены или нет? а дальше применять Freeze или Unfeeze

в вопросах удаления доверять какому-то скрипту, самому умному - категорически нельзя
Ну почему? Если задать задачу стирать только перед разморозкой , скрипт увидит что выделенный трек заморожен и только тогда включает стирание замороженного контента а уж потом размораживает. Тут трудно что либо стереть. Если скрипт увидит что это обычный трек, он его зафризит, любые другие действия ему не прописывать
[DOUBLEPOST=1510767337][/DOUBLEPOST]
А почему для чистки не использовать штатные инструменты Рипера,
Project Directory Cleanup?
Можно и так, но зачем засорять тем, что после разморозки точно не нужно. Это раз . И хотелось бы иметь один экшн на два действия
 

Вложения

  • Freez 2 in 1.gif
    Freez 2 in 1.gif
    878,7 KB · Просмотры: 60
Последнее редактирование:
@Maestro Sound, вывод на экран нужен для того, чтобы проверить что происходит.
По поводу удаления - я не могу и не хочу описывать все те ситуации, которые на 100% приведут в любом случаи к удалению не того, что хотелось.
 
описывать все те ситуации, которые на 100% приведут в любом случаи к удалению не того, что хотелось.
Ну не знаю. Я вот не могу представить что должно произойти в за мороженом треке, что бы он удалил то что он Freezeet
 
скажите пожалуйста экшен который убирает тишину в айтаме zчx.gif
 
На этот раз все треки собираются правильно, только вот если на треках имеются посылы (sidechain и.т.д.)то все посылы пропадают!
Вот: (с папкой)
3.jpg
Вот: (без папки)
4.jpg
Причём первый и последний пункт в каждом из кастомов теоретически не нужны. Просто на всякий случай и для красоты.
 
Последнее редактирование:
@Maestro Sound, при чём тут замороженный трек?
Вы удаляете ФАЙЛ на диске.
Как вы думаете, как скрипт его будет искать? Правильно, по имени, в котором есть сочетание имени самого файла и слова фриз. А если вы переименовали файл, сделали перед этим ему Glue, консолидировали проект, файл общий для пяти ваших разных проектов, и ещё пару сотен ЕСЛИ.
[DOUBLEPOST=1510777933][/DOUBLEPOST]@Archchie, тишину убирает не экшин, а штатная функция Рипера.
И тишина вещь относительная, там настраивается величина порога, которую считать тишиной и много другого.
 
тишину убирает не экшин, а штатная функция Рипера.
И тишина вещь относительная, там настраивается величина порога, которую считать тишиной и много другого.
Ну это и понятно что там настраивается порог, только где это в рипере вообще находится
 
Как вы думаете, как скрипт его будет искать?
Мы по-моему говорим о разных вещах. Когда мы делаем Unfreez мы удаляем все файлы с трека и возвращаем его в нормальное состояние с его оригинальными файлами. Мы больше не используем файлы которые удалил Unfreez они так и весят Project Directory Cleanup до удаления вручную. А при повторном фризе создаются новые которые также уходят в небытие при следующей разморозке и так по кругу не затрагивая оригинальные файлы. Так зачем же их держать десятками на винте если можно их сразу удалять. Просто нужно чтобы Unfreez срабатывал циклически только на фризенных треках, так как они не содержат оригинальные файлы, а лишь их обработанные копии. Если трек заморожен (его оригинальные файлы находятся на месте и не тронуты, и лишь Reaper знает, что они задействованы в проекте но на данный момент не используются, а за них играют фризенные копии ) значит включается стирание фризенного (обработаные копии вот их то и нужно удалять) и запускается Unfreez который возвращает оригинальные файлы на место.


А если вы переименовали файл, сделали перед этим ему Glue
Файл фризят для того чтобы разгрузить систему, с ними не работают, и нечего там не меняют они по умолчанию залочены
 
Последнее редактирование:
По умолчанию шоткат - D
Dynamic split item
Разобрался! а экшена нет такого ? У меня просто кастом, когда я рендерю какой то айтэм он рендерит длину всего трека ,а я хочу что бы он обрубал эту тишину автоматом
 
@Aleksandr Oleynik, Смотрите Александр Как есть а как нужно
 

Вложения

  • Freez 2 in 1 Как есть.gif
    Freez 2 in 1 Как есть.gif
    1,1 MB · Просмотры: 83
  • Freez 2 in 1 Как нужно.gif
    Freez 2 in 1 Как нужно.gif
    518,1 KB · Просмотры: 71
  • Like
Реакции: Maestro Sound
@Archchie, есть экшин, но он выведет такое же окно настроек.
[DOUBLEPOST=1510784448][/DOUBLEPOST]
Та я понял как вам нужно, но как этот файл фриза искать? Экшина я такого не знаю
Я вот перед Unfreeze ставлю выделить все итемы на треке и этот экшн
 

Вложения

  • 2017-11-16_003622.jpg
    2017-11-16_003622.jpg
    12,6 KB · Просмотры: 64
Последнее редактирование:
Так зачем же их держать десятками на винте если можно их сразу удалять.
Я делаю просто. В процессе работы над проектом храню все. Когда проект закончен - сохраняю в соседнюю папку с новым именем, с конвертированием во флак и тп. после этого старый проект сношу. Огромные проекты с кучей бекапов и тп превращаются в 100-200 мегабайт. Причем в черновом проекте всегда можно в случае чего (а такое бывает) отыскать любой файл. Бывают случаи со странными задачами (например клиент говорит, а можно сделать вокал как от 1-го сентября?). И тут все что было сохранено и не удалено помогает. Фризы, анфризы и другие вещи храню до последнего. В том числе не разобранные версии тейков и тп. По мне - идеальнее не придумать. Автосейв бекапов настроен на 2 минуты разницы. Довел уже до автоматизма момент сохранения законченного проекта. В конце процесса - бэкап на винт и в облако. Причина, почему сразу не во флак - melodyne как экстернал не понимает флак. В результате папка с проектами весит в десятки раз меньше, чем это было в том же Logic. Попробуйте
 
  • Like
Реакции: axis
Соласен. поступаю так же. Но анфризные треки после их использования уже не нужны . После разморозки трека они не играют ни какой роли . Они цельные не чистые "обработаные Fxсами" скажите зачем к ним обращаться, если есть оригинал .
 
@Aleksandr Oleynik, Александр (удалять как удалять) это не важно а может и не всем нужно. А вот сделать цикличность в одном скрипте Freez-Unfreez. Если будет желание и свободка . Будет здорово/
 
  • Like
Реакции: fractala
@Maestro Sound, ОК.
Но там ведь всё просто, вы должны были бы уже и сами вникнуть в эти простые логические выражения.
Например у вас условие - по выделенному треку - если он фриз, удалить файлы фриза и его пик и сделать анфриз, а если он не зафризен - зафризить.
Ну так и в том-же цикле перебора всех треков проекта пишите функцию проверки выделенного трека, если выделен (if то то == то то then), то смотрим фриз он или анфриз и опять делаем условие (if параметр фриза == 1 then) делать то -то, else (если нет) - делать то-то
 
  • Like
Реакции: fractala и Maestro Sound
@Aleksandr Oleynik @Maestro Sound , поддержу идею ребята - тоже есть огромное желание иметь скрипт, что бы при анфризе удалялись пик файлы и старые фризы. Так как ноутбук старенький, а работаю постоянно с тяжелыми vst ( Serum, Spire) - постоянные фризы/анфризы - а лазить в настройки и делать миллион раз clean current project directory -неудобно
 
  • Like
Реакции: Maestro Sound
@Aleksandr Oleynik, Александр Извините что буду немного Вас беспокоить но уж очень хочется самому написать. и не просто попасть перебором а вдумчиво. В первой строчке писать

MediaTrack
reaper.GetSelectedTrack(ReaProject proj, integer seltrackidx)
Получить выбранный трек из проекта (proj = 0 для активного проекта) с помощью выбранного количества дорожек (с нулевой основанием). Эта функция игнорирует основную дорожку, или GetSelectedTrack2 . исключаю потому как он учитывает и мастер трек.

___________________________
local freeze_track = 41223
local unfreeze_track = 41644

MediaTrack reaper.GetSelectedTrack(0, integer seltrackidx????) --- сначала я ищу выделенные треки? или все таки все треки и их ИД. А потом выделенные .Что писать после активного проекта (0, integer seltrackidx??? индекс выбранного трека значит мне нужно до этого узнать его индекс?
[DOUBLEPOST=1510824648][/DOUBLEPOST]
@Aleksandr Oleynik @Maestro Sound , поддержу идею ребята - тоже есть огромное желание иметь скрипт, что бы при анфризе удалялись пик файлы и старые фризы. Так как ноутбук старенький, а работаю постоянно с тяжелыми vst ( Serum, Spire) - постоянные фризы/анфризы - а лазить в настройки и делать миллион раз clean current project directory -неудобно
Идея хороша, но учтите проблем с удалением нужной информации не будет, а вот в приделах одной сессии до сохранения проекта, будут неудобства с UNDO. (если нужно будет откатится на точку с замороженным треком а после этой точки он уже был разморожен, файла не будет и размораживать на оригинальные приведется вручную каждый раз. Или создавать новый скрипт разморозки всех имеющихся Фризов. Хотя вот проверил, если стирать размороженый контент, он всегда будет замораживатся с одинаковым названием, и потому при возврате назад в замороженый вариант УНДО, он будет подставлять последнюю заморозку а вот если этот трек перед возвратом не будет заморожен а туда где мы возвращаемся он заморожен тогда, там его нужно размораживать вручную ибо фаил заморозки там будет отсутствовать. Если это не пугает!......... то....
 
Последнее редактирование:
@Aleksandr Oleynik, УРА как ребенок. Александр посмотрите!!!
local freeze_track = 41223
local unfreeze_track = 41644

select_tracks = reaper.GetSelectedTrack(0, 0)
if select_tracks == nil then return end
frez_track = reaper.BR_GetMediaTrackFreezeCount( select_tracks )
if frez_track == 0 then
reaper.Main_OnCommand(freeze_track, 0)
else
reaper.Main_OnCommand(unfreeze_track, 0)
end
Спасибо!!! Но возникла проблема. Нужно что бы он не замораживал трек без Fx на инсертах и итеме. И если выделены два трека один заморожен другой нет они фризятся оба. 1. А нужно один разморозить другой заморозить или так: 2. Если хоть один из выделенных треков не заморожен то размораживать все остальные. Первый вариант нравится больше НО. Тут уж я Пас Надежда на ВАС
 
Последнее редактирование:
Чтоб не замораживал трек при каких то условиях - опять, пишите условие, проверяйте его, если выполненно - делайте, не выполненно - не делайте.

Чтоб работало на не одном выделенном треке - ищите функцию отдающую вам кол-во выделенных треков и делайте по это у кол-ву луп и все выше перечисленные условия проверяйте для КАЖДОГО выделенного трека последовательно.
Логика написания скриптов очень проста.
Сложности начинаются, когда условий много и они порой взаимоисключающие.
 

Сейчас просматривают