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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
@lil-burn, Спасибо, дописал, чтоб регистр букв (не только первых) в имени трека не имел значение вообще! Ну и чилдрен патерны тоже можно писать без учёта регистра, т.е. как угодно.
Перезалил оба скрипта!
 
Последнее редактирование:
  • Like
Реакции: stepperian
@lil-burn, Спасибо, дописал, чтоб регистр букв (не только первых) в имени трека не имел значение вообще! Ну и чилдрен патерны тоже можно писать без учёта регистра, т.е. как угодно.
Перезалил оба скрипта!
Александр , перепроверьте скрипт пожалуйста , по моему не работает писать без учёта регистра, или я что то не то настроил
 
@stepperian, ок, перепроверю, но желательно приводить, как это делает @Martin111 ошибку, которую пишет скрипт - мне это сильно помогает, я не в состоянии наступить сам на все возможные пользовательские грабли.

PS: Проверил, всё работает -
xxxxxx11111.gif
Может ты не перезакачал скрипт и используешь старый?
 
Последнее редактирование:
  • Like
Реакции: stepperian
PS: Добавил возможность создания любого кол-ва пар - Парент - Чилдрен одновременно.
Эффектнее выглядит скрипт с дефером, который постоянно следит за проектом и при возникновении треков с соответствующими именами, раскладывает их по соответствующим папкам.

Можно скачивать! -
http://rmmedia.ru/threads/117419/page-3#post-2014008
 
Последнее редактирование:
  • Like
Реакции: stepperian
@stepperian, ок, перепроверю, но желательно приводить, как это делает @Martin111 ошибку, которую пишет скрипт - мне это сильно помогает, я не в состоянии наступить сам на все возможные пользовательские грабли.

PS: Проверил, всё работает -
xxxxxx11111.gif
Может ты не перезакачал скрипт и используешь старый?
А если назвать трек не tom а 12 Tom ? будут стоять цифры или буквы перед словом , он же не находит трек ?
 
Проблема имено в функции отвязки от регистра для символов - она не работает со слогами, она сравнивать может только ПОЛНЫЕ имена -
PHP:
function compare_str_case_insens (str_1, str_2)
    capture = ''
    if str_1 and str_2 then
      for w in str_1:gmatch('.') do capture = capture..'['..w:lower()..','..w:upper()..']' end
      if str_2:match(capture) then return true end
    end
  end
т.е. если str_1 и str_2 отличаются только регистром у букв в словах - то всё ОК, а если str_2 только часть строки str_1 - то всё
 
Проблема имено в функции отвязки от регистра для символов - она не работает со слогами, она сравнивать может только ПОЛНЫЕ имена -
PHP:
function compare_str_case_insens (str_1, str_2)
    capture = ''
    if str_1 and str_2 then
      for w in str_1:gmatch('.') do capture = capture..'['..w:lower()..','..w:upper()..']' end
      if str_2:match(capture) then return true end
    end
  end
т.е. если str_1 и str_2 отличаются только регистром у букв в словах - то всё ОК, а если str_2 только часть строки str_1 - то всё
Если не возможно сделать отвязку от регистра другими путями , тогда наверное лучше ее убрать
 
@Aleksandr Oleynik, возможно сделать чтобы всегда было в положении on, и выключалось только вручную ? Попробовал сохранить темплейт, но посл перезапуска кнопка сама переключается в положение off, отжатый режим.
 
Если не возможно сделать отвязку от регистра другими путями , тогда наверное лучше ее убрать
Всё возможно, просто нужно время чтоб найти как.
Код по регистру не мой и я с ним не разбирался.
[DOUBLEPOST=1468003712][/DOUBLEPOST]
@Aleksandr Oleynik, возможно сделать чтобы всегда было в положении on, и выключалось только вручную ? Попробовал сохранить темплейт, но посл перезапуска кнопка сама переключается в положение off, отжатый режим.
Я не понял о чём вы?
 
@Martin111, насколько знаю defer не должен ничего запоминать при перезапуске. Думаю, самый простой в данном случае вариант - использовать SWS Startup actions. Создать кастом из моего, @Aleksandr Oleynik и других экшенов и все
 
  • Like
Реакции: Aleksandr Oleynik
@lil-burn, как это должно быть собрано ?
Custom:
1. Show progect/global startup action
2. Скрипт !_Set BUS Folder with children slog_deffer version v2.lua или ваш который делает букву заглавной (имею ввиду что оба эти нужно сделать, отдельно разумеется)
 
@@Michael, так получше?
Код:
function main()
  tracks = reaper.CountTracks(0)
  for i = 0, tracks-1 do
    tr = reaper.GetTrack(0,i)
    _, tr_name = reaper.GetSetMediaTrackInfo_String(tr, 'P_NAME', '', 0)
    if tr_name ~= '' then
      if #tr_name > 1 then
        tr_name = tr_name:sub(1,1):upper()..tr_name:sub(2,-1)
      else tr_name = tr_name:sub(1,1):upper() end
      reaper.GetSetMediaTrackInfo_String(tr, 'P_NAME', tr_name, 1)
    end     
  end
end

function first_letter_upper_all_tracks()
  st_ch = reaper.GetProjectStateChangeCount(0) - init_st_ch
  if st_ch - update_st_ch > 0 then update_st_ch = st_ch; main() end
  reaper.defer(first_letter_upper_all_tracks)
end

-- Set ToolBar Button ON
function SetButtonON()
  _, _, sec, cmd = reaper.get_action_context()
  state = reaper.GetToggleCommandStateEx( sec, cmd )
  reaper.SetToggleCommandState( sec, cmd, 1 ) -- Set ON
  reaper.RefreshToolbar2( sec, cmd )
end
--
-- Set ToolBar Button OFF
function SetButtonOFF()
  _, _, sec, cmd = reaper.get_action_context()
  state = reaper.GetToggleCommandStateEx( sec, cmd )
  reaper.SetToggleCommandState( sec, cmd, 0 ) -- Set OFF
  reaper.RefreshToolbar2( sec, cmd )
end

init_st_ch = reaper.GetProjectStateChangeCount(0)
update_st_ch = reaper.GetProjectStateChangeCount(0) - init_st_ch

main()
first_letter_upper_all_tracks()

SetButtonON()

reaper.atexit( SetButtonOFF )
[DOUBLEPOST=1468064297][/DOUBLEPOST]@@Michael, а если создавать таблицу с именами треков и сравнивать ее после каждого State Change - это же еще бодрее? или нет?
 
@lil-burn, имею ввиду копирование ID и вставку в Set global startup action, допустим сделал ваш скрипт на запоминание нажатой кнопки для заглавной буквы, а ещё хочу сделать нажатой BUS Folder, то что сделал Aleksandr Oleynik.
 
если разгрузить папки то треки не собираются все
потому как разгружаете вы их не верно - клацая по папочке вы меняете статус только парента, а чилдрен остаётся с прежним статусом - это БАГ Рипера!
Снимать статус фолдера нужно выделив и папку и чилдрены и нажав экшин - Set selected tracks folder states to normal

Но я посмотрю как и этот баг обойти.

PS: Исправил - перекачиваем v4
Жду новых фидбэков
 
Последнее редактирование:
  • Like
Реакции: stepperian
Ребята, очень нужен скрипт который делает фриз, подгоняя к концу таймселекшена, с возможностью при
необходимости вручную вытягивать хвост айтема. Былобы хорошо, если бы была возможность самому настраивать
(хвост) Fade Out 0:00.050 из скрипта.
 

Вложения

  • Gif.gif
    Gif.gif
    97,3 KB · Просмотры: 90

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