ReaScripts (скрипты для Reaper) - Учимся создавать!!! (1 онлайн

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Для чего там пустышка если он уже работает ON OFF, пустышка статус не показывает.
Показывает! У скрипта статуса нет, а у этой пустышки есть.
Если этот экшин вставить в код - то он и будет статус менять синхронно со скриптом.
Я же написал - я от куда знаю, зачем вам статус?
Мне это Михаил, в своё время, показал...
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
@Archchie, вы не понимаете того, что я спрашиваю?
[DOUBLEPOST=1516618857][/DOUBLEPOST]
что бы его видеть
Это целью быть не может, это ни чего не даёт!
И второе ваше утверждение ошибочно (по поводу Dummy) -
Менять будет — а показывать не будет!
И менять будет и показывать будет!
Вот в точности то, что вы хотите -
что бы в экшен листе появился статус (ON OFF)
Только так и не написали ДЛЯ ЧЕГО.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Что бы видеть статус работает скрипт или нет ,
просто кнопки все на тулбар не назначишь и часто приходится передвегается по экшен листу,а там ни как не поймёшь
работает скрипт или нет без этой надписи
Крайне не удобный и не правильный подход.
Скриптов с дефером, которые могут работать в фоне и можно просто не уследить (забыть) что их включил - не так много и их все можно разместить на видимом тулбаре.
Если ВДУГ всё-же 16 тулбаров не хватает, то сделайте для себя скрипт-тулбар и .... ну и делайте с ним что угодно.
Скрипты нужны для удобства и ускорения в работе, а поиски в Экшин листе скрипта и его статуса - это кошмар и бред!


Ну тогда покажите пример как сделать с Dummy чтоб показывался статус
Будьласка (кстати, какой-то смысл вложил в дефер) -
Dummy01.gif

PHP:
function SHOWINMIXER(show)
  reaper.Main_OnCommand(reaper.NamedCommandLookup("_S&M_DUMMY_TGL1"), 0)
  reaper.Main_OnCommand(40605,0)
  counttracks = reaper.CountTracks(0)
  if counttracks == nil then return end
  for i = 1, counttracks do
    track = reaper.GetTrack(0, i-1)
    ftr = reaper.GetParentTrack(track)
    ttr = reaper.GetMediaTrackInfo_Value(track, "I_FOLDERDEPTH")
    if ftr ~= nil and (ttr == 0 or ttr == -1 or ttr == -3) then
      htr = reaper.GetMediaTrackInfo_Value(track, "I_WNDH")
      if htr < 24 then
        reaper.SetMediaTrackInfo_Value( track, "B_SHOWINMIXER", show)
      end
    end
  end
  reaper.TrackList_AdjustWindows(false)
end

function mainloop ()
  reaper.defer(mainloop)
end

-- Set ToolBar Button ON
function SetButtonON()
  -- msg("YES")
  SHOWINMIXER(0)
  is_new_value, filename, sec, cmd, mode, resolution, val = 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()
  -- msg("NO")
  SHOWINMIXER(1)
  is_new_value, filename, sec, cmd, mode, resolution, val = reaper.get_action_context()
  state = reaper.GetToggleCommandStateEx( sec, cmd )
  reaper.SetToggleCommandState( sec, cmd, 0 ) -- Set OFF
  reaper.RefreshToolbar2( sec, cmd )
end
----------------------------------------------------------------------------------------------------

SetButtonON() -- функция запуска срипта с "поджигом" кнопки тулбара

mainloop ()

reaper.atexit(SetButtonOFF) -- выход из скрипта с запуском функции выхода с тушением кнопки тулбара

reaper.Main_OnCommand(40605,0) - делает типпа рефреша Экшин листу - так как статус то меняется, но без рефреша не отображается.
Но я повоторюсь - если у вас много скриптов с дефером, за открытием которых нужно следить и знать - то нужно это организовывать совершенно иначе!
 
Последнее редактирование:

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Я вас не понимаю!
Вот это вполне может быть - так я для этого и спрашиваю всё время - нужны ли пояснения или всё ясно!

Сейчас напишу пару нудных предложений, но вы наберитесь терпения и прочтите их!!!!!!!!
В любой работе 95% успеха это правильно поставленная задача!
И не важно вы сами её реализовыать собрались или ТЕМ БОЛЕЕ хотите попросить кого-то.
Самым не верным всегда будет, если вы со скудными знаниями предмета начнёте Задачу ставить используя эти самые знания, а не общие понятия и представления... ну вот как вы с deffer функцией начали пытаться что-то строить.
 
  • Like
Реакции: Archchie

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
1-е; в анимашке вы показываете статус экшена, а ни скрипта !
Так для этого и сделанны эти Дами, чтоб показывать статус ТОГО, что не имеет статуса.
Если у привязанного к скрипту Дами статус меняется - значит меняется и статус Скрипта, даже если там статуса не будет.
Вы же хотели ВИДЕТЬ в Экшин лист, что скрипт поменял статус - вот по привязанному дами будете видеть, хоть это (как я вам сразу написал) - бред.
Так что ваше вот это вот -
а вы сделайте с Dummy но без этой функции что бы статус показывал,как вы утверждали выше
поклёп на меня, я ни где не утверждал что ИМЕННО у Скрипта будет менятся статус с использованием Дами!
Вы хотели ВИДЕТЬ, что у скрипта поменялся статус - вот глядя на статус Дами вы это и будете ВИДЕТЬ!

В общем я устал.... Как только у вас созреет осознанный план какого-то скрипта - пишите в начале техническое задание для себя, а не кашу из набора функций, которые вы пока не понимаете.
[DOUBLEPOST=1516627165][/DOUBLEPOST]
Так вам уже указали - что не правильно учитесь... И не только я.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Скрипт ваш кстати не работает
Смотря какой работы вы от него ожидали.
Уберите лишние строки, которые только показывали работу дами, и всё работает -
при нажатии на кнопку скрипта он скрывает из Микшера треки чайлды свёрнутые до минимальной величины в окне аранжа,
а при отжатии кнопки их в Микшер возвращает (показывает).
 

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
Функция (SetMediaTrackInfo_Value атрибут - B_SHOWINMIXER) скрывает треки!
Подскажите ,а какой функцией их свернуть,развернуть ,а то ищу и не могу найти?Посмотреть вложение 141627
Спасибо!!!
GetSetTrackStateChunk() Вторая переменная BUSCOMP.
По понятным причинам работает только с папками и с включенным Mixer: Clickable icon for folder tracks to show/hide children


какой функцией их скрыть
Функция скрывает треки!
хочу того сам не знаю чего
 
Последнее редактирование:

gazzz

Gazzuar (Goa-trance)
17 Янв 2008
246
86
28
Lyubertsy
UPD: нашел ошибку: при L>0 значание формулы могло быть <0 и проскакивали эксессы там


помогите советом по JS плагину, по-моему данный код на выходе должен хардклиповать до 0 дБ, но такого не происходит, и при росте slider1 > 2
на выходе получаю что-то зашкаливающее

при slider1 <2 формула сама по себе находится в пределах -1 +1 sign(L) * (1 - pow(abs(1-L*sign(L)),trsh*slider3*(1-slider4)))

может я не правильно понимаю функции min/max ?


Код:
@sample
slider1 ? (
L = slider1 * spl0;
R = slider1 * spl1;

spl0 = L > 0
  ? min(1,sign(L) * (1 - pow(abs(1-L*sign(L)),trsh*slider3*(1-slider4))) * slider5)
  : max(-1,sign(L) * (1 - pow(abs(1-L*sign(L)),trsh*(1-slider4)))* slider5);
spl1 = R > 0
  ? min(1,sign(R) * (1 - pow(abs(1-R*sign(R)),trsh*(1+slider4)))* slider5)
  : max(-1,sign(R) * (1 - pow(abs(1-R*sign(R)),trsh*slider3*(1+slider4)))* slider5);
 
);
 
Последнее редактирование:
  • Like
Реакции: Aleksandr Oleynik

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Тем что она потом не разворачивается
Так делайте скрипт тогл.
И в общем - нафига это сворачивать скриптом????
Чтоб скрипт сработал вам фолдер трек нужно мышкой выделить. А не проще сразу на тот треугольник клацнуть и свернуть треки?
Очень не люблю делать что-то бесполезное, не продуманное, а попросту - надуманное.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Но я так и не понял что должен делать скрипт и чему он помогает.
Вы же всё урывками делаете.
[DOUBLEPOST=1516904548][/DOUBLEPOST]
Если я свернул папку в аранже, то он скрывает в микшере - что не удобно.
Так не делайте так, чтоб скрывал в Микшере.
@Archchie, пишите развёрнутое тех задание, если это уже не учёба, и финалом есть работающий скрипт.
Просто так писать вам функции я не стану, потому как на 99% уверен, что для задуманного функционала она не нужна или нужна в другом виде.
 

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
@Aleksandr Oleynik Наверно ему нужно чтобы был линк между состояниями папок в TCP и MCP при включенной функции Mixer: Clickable icon for folder tracks to show/hide children. Но видимо на двух страницах бессмысленного флуда это было сложно написать, хочется пожрать кактус, чем написать таки тех задание.
 
  • Like
Реакции: Aleksandr Oleynik

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
@Aleksandr Oleynik, Я Сворачиваю папку TCP и у меня скрываются дети в MCP, а надо чтобы они не скрывались, а сворачивалась папка
----
Потому что когда все свернуто и работая в микшере нет возможности развернуть
Развернул папку в микшере - развернулась в аранже и наоборот. И куда скрипту смотреть в первую очередь - в статус папки в микшере или в аранже? Можно тыкать по прежнему тыкать пальцем в небо, или дать тех задание, получить решение, затем по готовому решению задавать вопросы.
 

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
PHP:
function ShowChildrenInMCP(tr, is_show)
  local _,tr_chunk = reaper.GetTrackStateChunk(tr,'',true)
  local BUSCOMP_var1 = tr_chunk:match('BUSCOMP (%d+)')
  local tr_chunk_out = tr_chunk:gsub('BUSCOMP '..BUSCOMP_var1..' %d+', 'BUSCOMP '..BUSCOMP_var1..' '..(is_show and 0 or 1))
  reaper.SetTrackStateChunk(tr, tr_chunk_out,true)
end

tr = reaper.GetTrack(0,0)
ShowChildrenInMCP(tr, true)

Я то пожру, только ты быстрее забьёшь, чем что-то готовое получишь с таким подходом.
 
  • Like
Реакции: Archchie

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
ты также учился
Так как ты, я никогда не учился ни в одной из областей. Касаемо рипера - это 1) изучение чужих готовых решений 2) формирование собственных грамотных тех заданий и дальнейшее изучение решений 3)более конкретные вопросы после понимания и изучения механизмов большинства существующих API.
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
загвоздачка! понял о чем речь! надо подумать!
Вот решение подобных "загвоздочек" - и делается на этапе написания Тех Задания, о котором вас просят уже какую страницу.
[DOUBLEPOST=1516912363][/DOUBLEPOST]
Тут спрашиваю на меня смотрят как на дебила.
Не, не на дебила, а на упрямца, который решил, что знает лучше как нужно учиться :)
Рано или поздно ты поймёшь, что после того как ты более-менее освоиш синтаксис LUA и разберёшься с API Рипера - 80% твоего времени при написании законченного и работающего скрипта, будет занимать написание грамотного тех задания самому себе, а если понадобится помощь - то тем более - в твоих скриптах ни кто разбиратся без ТЗ не станет.
Так что процесс обучения этот этап должен содержать...

Пока мы тут поняли ТОЛЬКО какой-то отрывок ТЗ, причём с взаимоисключающими условиями.
 
Последнее редактирование:
  • Like
Реакции: Archchie

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Наверно ему нужно чтобы был линк между состояниями папок в TCP и MCP при включенной функции Mixer: Clickable icon for folder tracks to show/hide children.
Сделать можно, но это скрипт не его пока уровня - нужно ведь запоминать состояние и сравнивать при его изменении. Значит нужно в таблицы нырять. А тут ещё и в чанки нужно нырять, так как ни Экшина ни API на закрытие/открытие папки в Микшере нет, только через чанки.
В общем - в данном конкретном случаи, написанная функция ни чего в голове не прояснит и в обучении не даст!

В общем я пас, в том числе и с целью правильного обучения...
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Да просто для работы нужен .Полезный скрипт .
Так напишите до конца что он должен делать, ну ей богу - Михаил одно предложение написал с интерпритацией (перводом) того, что вы пишите уже десяток постов - мне оно понятно, а то, что пишите вы - нет.
Вам нужно чтоб если вы в окне аранжа TCP закрыли папку до минимального размера чайлдов, в окне Микшера MCP она тоже закрылась?
А если откроете в аранже эту папку в Микшере она тоже должна открыться?
А если в Аранже папка закрыта, а вы её в Микшере ручками откроете, что скрипт должен делать с окном Аранжа?

Ну напишите вы ВСЕ случаи работы с папкой, ну в чём же проблема?
если вы не можете сформулировать чётко и ясно условия для простейшего скрипта, то как же вы будете писать эти скрипты???? Вы на пол пути запутаетесь и ни чегно работать не будет.
 

Archchie

Well-Known Member
24 Окт 2017
791
439
63
@@Michael СПАСИБО!!!
Именно оно.Только можно чуть чуть подправить что бы папки в микшере сворачивались когда в аранже папка крошечная,а не маленькая(средняя)?
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
@Archchie, строку -
PHP:
ShowChildrenInMCP(track, TCP_state==0)
измените на -
PHP:
ShowChildrenInMCP(track, TCP_state==0 or TCP_state==1)
Хотя, если бы разобрались сами - было бы лучше....
[DOUBLEPOST=1516956613][/DOUBLEPOST]@@Michael, не очень удобен такой функционал по "зажиганию" кнопки - чтоб выключить, нужно два раза на кнопку клацать.
 

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
Еще заметил когда папки свернуты в аранже,а в микшере нет, включаешь скрипт и он не сворачивает папки в микшере, пока не выделишь папку в аранже. Надо выделить каждую папку по отдельности
Производительность. Твой комп сдохнет раньше, чем перелопатит все папки в больших проектах.

Тулбар:
ReaPack/mpl_Link TCP MCP folder collapsed state (background).lua
 
Последнее редактирование:

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
18.460
10.523
113
57
Киев
forum.videoediting.ru
Производительность. Твой комп сдохнет раньше, чем перелопатит все папки в больших проектах.
Не....., тут ты не прав - это всего лишь стартовая проверка проекта и приведение его в правильное состояние для работы скрипта в фоне, до дефера.
Ни чего не сдохнет сколько бы там треков в проекте не было, просто будет какая-то задержка перед нормальной работой.
 
  • Like
Реакции: Archchie

Сейчас онлайн (Пользователей: 0, Гостей: 1)