@EUGEN27771, работает просто фантастически, спасибо, а что нужно добавить в скрипт и в какую часть кода, что-бы не включался loop source?
Добавил,ссылка та же.что нужно добавить в скрипт и в какую часть кода, что-бы не включался loop source?
Спасибо, что прониклись идеей и поверили в её реальность. Но идея - это всего лишь идея, а вы проделали серьёзную работу, да ещё и ряд достаточно глобальных новшеств и возможностей проверили и реализовали - ими ведь теперь и в других ситуациях можно пользоваться.@Aleksandr Oleynik, по Вашей наводке.
Это не так просто видимо будет и не уверен, что нужно.Нужно еще сделать,чтобы при циклической(и не циклической тоже) записи при смене позиции неоконченные ноты заканчивались в месте смены позиции,и в новый айтем тоже переносились на момент его начала.
Так работает обычная запись в цикле.И зачем писать, оставшиеся нажатыми ноты при возврате цикла в начало? Ведь как правило их нажатость будет результат ошибки исполнителя.
Это скорее всего будет даже проще,чем сейчас.JS собирающий все нужные данные уже сделал.А нужно будет мне,по крайней мере,может быть и еще кому-нибудь пригодится.Если сделать опцией-можно будет отключать.Это не так просто видимо будет и не уверен, что нужно.
Только так.Вообще-то,можно сделать любым,это пара секунд,но будут неясности.трэк с плагином становится в проекте Первым и прячется
Мало кто делает такие сложные привязки,а тот кто делает без проблем сможет разобраться и перенести трек в любое место проекта.А если в этом проекте уже есть привязка все возможная не к Имени Трэков, а к их номерам? Всё улетит.
Как опцию - нормально!Это скорее всего будет даже проще,чем сейчас.JS собирающий все нужные данные уже сделал.А нужно будет мне,по крайней мере,может быть и еще кому-нибудь пригодится.Если сделать опцией-можно будет отключать.
Тоже согласен.Мало кто делает такие сложные привязки,а тот кто делает без проблем сможет разобраться и перенести трек в любое место проекта.
1) вставить в Первый слот fx (melodyne, autotune) на выделенном треке(ах)
соответственно, добавить в начало кастома выделение трека под курсором2) under cursor
Это я знаю. Но может как-то иначе можно от плагина эту инфу получить. Рипер же её получает и она есть в куче мест.В API для PDC ничего нет.
В EEL не знаю, в Lua os.execute это всё делает, я это использовал тут (строки 72-87).А как папку скриптом создать, и возможно ли?
И вообще манипуляции уже с имеющимися папками, файлами возможны? Хотябы перенос или копирование.
В EEL не знаю, в Lua os.execute это всё делает, я это использовал тут (строки 72-87).
В JSFX имеется переменная которая сообщает хосту о задержке плагина - называется pdc_delay. Доступна для записи и чтения. Если хост через неё может узнать о задержке, то по идее и скрипт наверное может.Насколько я понял, Рипер её по факту высчитывает, т.е. указать её нельзя (вроде).
@Aleksandr Oleynik, не туда. Посыл моего поста заключается в том что по аналогии с плагинами JSFX, у VST тоже должна быть какая-то переменная, которая сообщает хосту о задержке и что возможно до неё можно дотянуться с помощью скрипта.@belovw, и как JS может узнать задержку VST плага стоящего перед или после него?
function duplicate()
(
Undo_BeginBlock2(0);
GetCursorContext() === 0 ? (
Main_OnCommand(40062, 0); // duplicate tracks
Undo_EndBlock2(0, "Track : Duplicate Tracks", -1);
) : (
start = 0;
end = 0;
GetSet_LoopTimeRange2(0, 0, 0, start, end, 0);
start === end ? (
Main_OnCommand(41295, 0); // duplicate items
Undo_EndBlock2(0, "Item : Duplicate Items", -1);
) : (
Main_OnCommand(41296, 0); // duplicate selected area of items
Undo_EndBlock2(0, "Item: Duplicate Selected Area of Items", -1);
);
);
);
duplicate();
CountSelectedMediaItems(0) > 0 ? ( // if selected items
Main_OnCommand(41295, 0); // duplicate items
): CountSelectedMediaItems(0) == 0 && CountSelectedTracks(0) > 0 ? ( // if no selected items and tracks selected
Main_OnCommand(40062, 0); // duplicate tracks
);
function run ()
-- сделать что-нибудь
reaper.defer(run)
end
function exitnow()
_, _, sectionID, cmdID = reaper.get_action_context()
reaper.SetToggleCommandState(sectionID, cmdID, 0)
reaper.RefreshToolbar2(sectionID, cmdID)
gfx.quit()
end
_, _, sectionID,cmdID = reaper.get_action_context()
reaper.SetToggleCommandState(sectionID, cmdID, 1)
reaper.RefreshToolbar2(sectionID, cmdID)
reaper.atexit(exitnow)
run()
function run() (
tr = GetTrack(0, 2); //сделать что-нибудь
GetTrackUIVolPan(tr, volumeOut, panOut); //сделать что-нибудь
defer("run()");
);
function exitnow() (
get_action_context(#filename,sectionID,cmdID,mode,resolution,val);
SetToggleCommandState(sectionID, cmdID, 0);
RefreshToolbar2(sectionID, cmdID);
gfx_quit();
);
get_action_context(#filename,sectionID,cmdID,mode,resolution,val);
SetToggleCommandState(sectionID, cmdID, 1);
RefreshToolbar2(sectionID, cmdID);
atexit("exitnow()");
run();