Функции библиотеки 'Arc_Function_lua'
Library functions 'Arc_Function_lua'

FUNCTIONS:



Reaper.

Arc.no_undo();​

Что бы в ундо не прописывалось "ReaScript:Run"

if not --[[???]] then Arc.no_undo(); return end;

_

Arc.Action(Action id, [. . .] );​

Выполняет стандартные действие, id вписать через запятую для запуска нескольких действий;

Arc.Action(id,id,id,id);

_

boolean Arc.TrackFx_Rename(MediaTrackTrack, idx idx_Fx, Str Rename);

Переименовать Fx в треке.

Вернет true если переименовал, в противном случае false.

_

str NameDefault, str Name = Arc.TrackFX_GetFXNameEx(MediaTrack Track, idx idx_Fx);

Получить Имя эффекта на треке.

Вернет Имя по умолчанию и Имя переименованное.

_

boolean Arc.RemoveAllSendTr( MediaTrack Track, idx category );​

Удалить все посылы в треке send / receive / hardware,

Вернёт true если удаление произошло

Категория(category): < 0 для receives, 0 = sends, > 0 для аппаратных выходов.

_

boolean Arc.RemoveAllItemTr_Sel( MediaTrack Track, idx rem_Idx );​

Удалить все / выделенные / невыделенные элементы в треке

rem_Idx = 0 Удалить все невыделенные, = 1 удалить все выделенные, = 2 удалить все;

Вернёт true если удаление произошло

_

Arc.SelectAllTracks( numb Sel );

Выделить Все Дорожки; Снять выделение со Всех Дорожек. (numb = 0 / 1)

_

Arc.SaveSoloMuteSelStateAllTracksGuidSlot_SWS( numb Slot );

Сохранить "Выделение, Соло, Mute" Состояние Всех Дорожек в слот "n".

Востановить с помощью: RestoreSoloMuteSelStateAllTracksGuidSlot_SWS

_

Arc.RestoreSoloMuteSelStateAllTracksGuidSlot_SWS( numb Slot, boolean clean );

Востановить "Выделение, Соло, Mute" Состояние Всех Дорожек из слота "n".

clean = true или 1 - чтобы зачистить сохраненный кэш.

Сохранить с помощью: SaveSoloMuteSelStateAllTracksGuidSlot_SWS

_

boolean Api_js, version = Arc.js_ReaScriptAPI( boolean warning message,numb JS_API_Version );

Проверяет, Установлено ли расширение 'reaper_js_ReaScriptAPI.

Если установлено вернет true, в противном случае false и предупреждения. И версию вернет.

warning message: true - показать окно с предупреждением, false - не показать окно с предупреждением.

JS_API_Version - Установить версию, ниже которой будет ошибка. ПО умолчанию 0

_

boolean Api_sws = Arc.SWS_API( boolean warning message );

Проверяет, Установлено ли расширение 'SWS'.

Если установлено вернет true, в противном случае false и предупреждения.

warning message: true - показать окно с предупреждением, false - не показать окно с предупреждением.

_

Arc.SetCollapseFolderMCP( MediaTrack Track, numb clickable, numb is_show );

Collapsed / Uncollapsed Track MCP (Свернуть / Развернуть Трек в Mикшере)

clickable: 0 скрыть кликабельный значок для папок, 1 показать кликабельный значок для папок, иначе -1;

is_show: 1 - скрыть, 0 показать:

_

string Path, Name = Arc.GetPathAndNameSourceMediaFile_Take_SWS( MediaTake take );

Получить путь и имя исходного медиафайла у тейка

В отличии от "reaper.GetMediaSourceFileName(source,filenamebuf)" не ломается на реверсных файлах и видит .png

Если тейк содержит миди, то вернет false

_

Arc.GetSetToggleButtonOnOff(numb onOff,boolean Set);

Установить переключатель вкл выкл (подсветка кнопки);

onOff: 0 выкл, 1 вкл. По умолчанию 0

Set: true = Set; false = Get

_

numb = Arc.HelpWindow_WithOptionNotToShow( String Text, String Header, str buf, boolean reset);

Окно справки с опцией не показывать;

buf: хоть что - обычно "Arc_Function_lua" для навигации по ini;

reset = true только для сброса, а так всегда false;

return: ok 1; cancel 0; otherwise -1

_

String name Scr = Arc.HelpWindowWhenReRunning( numb BottonText, str buf, boolean reset, str header);

Окно справки при повторном запуске скрипта.

BottonText: 1 "'TERMINATE INSTANCES'", 2 "'NEW INSTANCE'";

buf: хоть что 'strung' / обычно "Arc_Function_lua" для навигации по ini;

reset: true только для сброса, а так всегда false; Скриншот

header = string - "Заголовок" или "".

Вернет всегда имя скрипта.

_

Arc.DeleteMediaItem( MediaItem item );

Удалить элемент мультимедиа

_

table numb CountSamples_AllChannels, CountSamples_OneChannel, NumberSamplesAllChan, NumberSamplesOneChan, Sample_min, Sample_max, TimeSample = Arc.GetSampleNumberPosValue( MediaTake take, numb SkipNumberOfSamplesPerChannel, boolean FeelVolumeOfItem, boolean FeelVolumeOfTake, boolean FeelVolumeOfEnvelopeItem);

Получить у образца номер значение позицию;

Вернет: кол-во сэмплов во всех каналах, кол-во сэмплов в одном канале, номер сэмпла со всех каналов, номер сэмпла с одного канала, минимальное значение сэмпла, максимальное значение сэмпла, время сэмпла.

SkipNumberOfSamplesPerChannel: Сколько сэмплов пропустить в секунду (обычно плэйрейт делим на сто - получится 100 точек в секунду).

FeelVolumeOfItem: false - не реагировать на громкость элемента, true - реагировать на громкость элемента.

FeelVolumeOfTake: false - не реагировать на громкость тейка, true - реагировать на громкость тейка.

FeelVolumeOfEnvelopeItem: false - не реагировать на автоматизацию громкости элемента, true - реагировать на автоматизацию громкости элемента.

_

Arc.SetMediaItemLeftTrim2( number position, MediaItem item );

Удлинить / укоротить Медиа Элемент Слева

_

Arc.SaveSoloMuteStateAllTracksGuidSlot_SWS( numb Slot );

Сохранить Соло Mute Состояние Всех Дорожек в слот "n"

Востановить с помощью: RestoreSoloMuteStateAllTracksGuidSlot_SWS

_

Arc.RestoreSoloMuteStateAllTracksGuidSlot_SWS( numb Slot, boolean clean );

Восстановить Соло Mute Состояние Всех Дорожек из слота "n"

clean = true или 1 - чтобы зачистить сохраненный кэш

Сохранить с помощью:SaveSoloMuteStateAllTracksGuidSlot_SWS

_

Arc.SaveMuteStateAllItemsGuidSlot_SWS( numb Slot );

Сохранить Mute Состояние Всех Дорожек в слот "n"

Востановить с помощью: RestoreMuteStateAllItemsGuidSlot_SWS

_

Arc.RestoreMuteStateAllItemsGuidSlot_SWS( numb Slot, boolean clean );

Восстановить Mute Состояние Всех Дорожек из слота "n"

clean = true или 1 - чтобы зачистить сохраненный кэш.

Сохранить с помощью: SaveMuteStateAllItemsGuidSlot_SWS

_

numb PosFirstIt, EndLastIt = Arc.GetPositionOfFirstItemAndEndOfLast();

Получить Позицию Первого Элемента И Конец Последнего Элемента.

_

numb PosFirstIt,EndLastIt = Arc.GetPositionOfFirstSelectedItemAndEndOfLast();

Получить Позицию Первого Выделенного Элемента И Конец Последнего Выделенного Элемента.

_

Arc.RemoveStretchMarkersSavingTreatedWave_Render_SWS( MediaTake take );

Удалить Маркеры Растяжки, Сохраняя Обработанную Волну, Удаление происходит при помощи рендера и это может замедлять процесс (Render)

_

boolean Perf = Arc.GetPreventSpectralPeaksInTrack( MediaTrack Track );

Получить предотвращение спектральных пиков в треке

_

Arc.SetPreventSpectralPeaksInTrack( MediaTrack Track, boolean Perf );

Установить предотвращение спектральных пиков в треке. Perf = true - Вкл. Perf = false - Выкл

_

Arc.CloseAllFxInAllItemsAndAllTake( boolean chain, boolean float );

Закрыть Все Fx Во Всех Элементах И Во всех тейках.

chain: true - закрыть только fx из списка, false не закрывать.

float: true - закрыть только fx плавающие, false не закрывать.

_

Arc.SetShow_HideTrackMCP( MediaTrack Track, numb Setshow_hide );

Показать Скрыть дорожку в микшере (MCP). Setshow_hide: 0 или 1

_

Arc.CloseAllFxInAllTracks( booleanchain, booleanfloat );

Закрыть Все Fx На Всех Дорожках.

chain: true - закрыть только fx из списка, false не закрывать из списка.

float: true - закрыть только fx плавающие, false не закрывать плавающие.

_

Arc.CloseToolbarByNumber( idx ToolbarNumber );

Закрыть Панель Инструментов По Номеру. Несовместимо с верхним докером (top).

ToolbarNumber: 1-16

_

numb Arc.GetMediaItemInfo_Value( MediaItem item, Str parmname );

Получить атрибуты числового значения элемента мультимедиа.

parmname:

D_END : Конечная позиция элемента от старта проекта в секундах.

Так же СМ. другие атрибуты.

_

Arc.SetMediaItemInfo_Value( MediaItem item, Str parmname, numb val );

Установить атрибуты числовых значений элемента мультимедиа.

parmname:

D_END : Конечная позиция элемента от старта проекта в секундах.

Так же СМ. другие атрибуты.

_

String GridFormVal = Arc.Get_Format_ProjectGrid( numb divisionIn );

Форматирует значение сетки проекта в удобочитаемую форму СМ.

_

numb Arc.CountTrackSelectedMediaItems( MediaTrack Track );

Количество в треке Выбранных Элементов.

_

MediaItem Item = Arc.GetTrackSelectedMediaItems( MediaTrack Track, idx itemidx );

Получить в треке Выбранный Элемент.

_

numb = Arc.GetSetHeigthMCPTrack(MediaTrack Track, numb numbHeigth, numb Set);

Set 0: Вернет высоту трека от 0 до 1; 0 самый высокий, 1 самый маленький.

numbHeigth: от 0 до 1; 0 самый высокий, 1 самый маленький.

Set: 1 Set, 0 Get.

_

Arc.openFileURL(string pathUrl );

Открыть файл или url

pathUrl = путь/файл или url

_

String/numb id = Arc.GetIDByScriptName(string scriptName,string [scriptPath]);

Получить Id по имени скрипта или кастом экшена

scriptPath: Необязательный параметр, на случай если присутствует несколько скриптов с одинаковым именем

если присутствует несколько скриптов с одинаковым именем и если не указать scriptPath, то вернет первый найденный, а если указать scriptPath, то вернет точный результат

В случае неудачи вернет -1

_

String name = Arc.GetScriptNameByID(string id );

Получить имя скрипта или кастом экшена по ID

В случае неудачи вернет -1

_

number RecArm = Arc.GetTrackAutoRecArm(MediaTrack Track);

Получить значение автозаписи on/off

Вернет 1 если включена и 0 если выключена

_

Arc.SetTrackAutoRecArm(MediaTrack Track,number value);

Установите автозапись на треке / 0-1 / true-false;

_

boolean ret = Arc.SetHeightTrack_Env_TCP(MediaTrack Track,number Height [, number minHeigth, number resetHeigthEnv, number PercentageDefault ] );

Установить высоту трека совместно с огибающими

Height: Высота в пикселях которую нужно установить

minHeigth: минимальный размер трека(по умолчанию 24)

resetHeigthEnv: = 1 - при уменьшении env трека с пользовательской высотой,при достижении minHeigth сбросить в 0(по умолчанию 0)

PercentageDefault: Процент погибающей по умолчанию относительно трека TCP(по умолчанию 0.75)

minHeigth, resetHeigthEnv, PercentageDefault: Необязательные параметры

Вернет true в случае успеха

После изменения всех треков вызовите reaper.TrackList_AdjustWindows(false);


Погрешность +- 5 пикселей из за округления "I_HEIGHTOVERRIDE" каждой огибающей со стандартным размером

Пример погрешности из 4 огибающих:
reaper.SetMediaTrackInfo_Value(Track,"I_HEIGHTOVERRIDE",41);
val = reaper.GetMediaTrackInfo_Value(Track,"I_WNDH");--Вернет 161
reaper.SetMediaTrackInfo_Value(Track,"I_HEIGHTOVERRIDE",42);
val = reaper.GetMediaTrackInfo_Value(Track,"I_WNDH");--Вернет 166
Вот она погрешность в 5 пикселей

_

Arc.SetStartupScript(string nameAction,string id,string nameFun,string Clean);

С данной функцией нужно быть предельно аккуратным

Добавить скрипт в автозагрузку

Если нужно дважды добавить один и тот же скрипт в автозагрузку, то делаем цикл в скрипте и добавляем этот скрипт

Дважды один и тот же скрипт добавить в автозагрузку с помощью данной функции нельзя

nameAction: Имя экшена или скрипта добавляемого в автозагрузку

id: id экшена или скрипта добавляемого в автозагрузку

nameFun: Имя с которым будет создана функция в автозагрузке, обычно это свой ник. Например: "ArchieScript" *#8

Clean:

"ONE" удалить действие из автозагрузки из функции установленной в nameFun и с id установленного в id.(nameAction*)

"ALL" удалить все что в функции nameFun (id при ALL равен пустой строкой "").(nameAction*)

*nameAction при очистке может быть любой строкой(так как этот параметр не работает), но не менее 6 символов, для того что бы пропустила функция,.


Пример:
local scrPath,scrName = ({reaper.get_action_context()})[2]:match("(.+)[/\\](.+)")
local ID = Arc.GetIDByScriptName(scrName,scrPath);
if ID == -1 or type(ID) ~= "string" then Arc.no_undo()return end;
Arc.StartupScript(scrName,ID,"ArchieScript");

See: GetStartupScript

_

boolean check_Id, boolean check_Fun = Arc.GetStartupScript(string id,string nameFun);

Получить - установлен ли скрипт в автозагрузке

id = id по которому искать скрипт в автозагрузке в функции установленной в "nameFun

nameFun = Имя функции в которой искать скрипт по id (установленом в id) в автозагрузке. *#8

Вернет true если скрипт с данным id присутствует в функции nameFun в противном случае false

Вернет имя функции, если функция присутствует в файле автозагрузки,в противном случае false

Ищет только то, что было установленно при помощи "SetStartupScript"

See: SetStartupScript

_

boolean retval,string nameAct,string id = Arc.EnumStartupScript(numb idx,string nameAction);

Перечислите данные, хранящиеся в автозапуске, для конкретного id /name.

Возвращает false, когда больше нет данных иначе true.

nameFun = Имя функции в которой искать скрипт по idx. *#8

idx = индекс на основе нуля


See: GetStartupScript

_

boolean ret, numb val = Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(numb set,numb newState,string ScrPath,string ScrName);

Установите/получить - завершить все экземпляры или начать новый KB_ini

set = 0 / false

Если нашел запись скрипта в файле, то вернет (true,state)

Если не нашел запись скрипта в файле то вернет (false)

set = 1 / true

Если не нашел запись скрипта в файле то вернет (false)

Если нашел запись скрипта в файле, и значения равны с newState, то вернет (false,state), перезапись не будет производиться,сработает как get/

Если нашел запись скрипта в файле, и значения не равны с newState, то перепишет новое значения и вернет старое значение,true.

ScrName = "Archie_Edit cursor; MMM.lua"
ScrPath = 'C:/Users/Archie/Desktop/Reaper-Vremenno/Scripts/Archie-ReaScripts/MAIN/Edit cursor'
reaper.defer(function() Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(1,516,ScrPath,ScrName)end);
Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(1,516,ScrPath,ScrName)
Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(0,'',ScrPath,ScrName)
Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(0,nil,ScrPath,ScrName)

newState: 4=Reset; 260=TERMINATE INSTANCES; 516=NEW INSTANCES;

Требуется перезагрузка рипера

reaper.defer(function();
local ScrPath,ScrName = debug.getinfo(1,'S').source:match('^[@](.+)[/\\](.+)');
Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(1,516,ScrPath,ScrName)end);

------------------------

reaper.defer(function();
local ScrPath,ScrName = debug.getinfo(1,'S').source:match('^[@](.+)[/\\](.+)');
Arc.GetSetTerminateAllInstancesOrStartNewOneKB_ini(1,260,ScrPath,ScrName)end);

_

boolean val = Arc.ChangesInProject(string / number buf);

возвращает true при изменении состояния проекта

buf = Необязательный параметр, для использования функции в одном скрипте в

разных местах одновременно, buf должен быть разный (defer)

_

Arc.Save_Selected_Items_Slot( numb/str Slot );

Сохранить Выделенные элементы в слот "n" (внутри скрипта)

Востановить с помощью: Restore_Selected_Item_Slot

Вернет boolean и таблицу сохраненных элементов

_

Arc.Restore_Selected_Item_Slot( numb/str Slot, numb/boolean clean, numb/boolean noSelPrevIt, numb/boolean UpdateArrange );

Восстановить Выделенные элементы из слота "n"

clean = true или 1 - чтобы зачистить сохраненный кэш.

noSelPrevIt установить true или 1 что бы не снимать выделение с предыдущих элементов

Сохранить с помощью: Save_Selected_Items_Slot

_

Arc.Save_Selected_Track_Slot( numb/str Slot );

Сохранить Выделенные треки в слот "n" (внутри скрипта)

Востановить с помощью: Restore_Selected_Track_Slot

Вернет boolean и таблицу сохраненных треков

_

Arc.Restore_Selected_Track_Slot( numb/str Slot, numb/boolean clean, numb/boolean noSelPrevIt);

Восстановить Выделенные треки из слота "n"

clean = true или 1 - чтобы зачистить сохраненный кэш.

noSelPrevIt установить true или 1 что бы не снимать выделение с предыдущих треков

Сохранить с помощью: Save_Selected_Track_Slot

_




Lua.



boolean Arc.If_Equals_Or( Str If_Equals_Or, Str ... );

Сократить условие. Вернет true при совпадении, иначе false.


Пример:
if item == item_1 or item == item_2 or item == item_3 or item == item_4 then код end;
if If_Equals(item, item_1, item_2, item_3, item_4 ) then код end;
boolean Arc.If_Equals_OrEx( Str If_Equals_Or, Str / table ... );

Тоже самое, что и If_Equals_Or , только ищет значения еще и в таблицах

Сравнить значение EqualsToThat на совпадения со значением из таблицы или переданным аргументом


Пример:
EqualsToThat = "arg4"
T1 = {"arg1", "arg2"}
T2 = {"arg3", "arg4"}
Ar = "Arg5"
Boolean = If_Equals_OrEx(EqualsToThat , T1,T2,Ar) -- Вернет true
Boolean = If_Equals_OrEx(EqualsToThat , T1, Ar) -- Вернет false
numb boolean Arc.ValueFromMaxRepsIn_Table( table array, Str min_max );

Вернет значение из максимальных повторений в таблице.

array: таблица, min_max: "MIN", "MAX", "RANDOM"


пример:
t1{1,2,3,4,5,6,7}; вернет false - повторений нет
t2{1,2,3,3,4,5,6}; вернет 3; min_max необязателен
t3{1,1,2,2,3,4,5}; вернет 1; если min_max = "MIN", 2 если min_max = "MAX", случайное число 1 или 2 если min_max = "RANDOM"
t4{1,1,2,2,5,5,5}; вернет 5; min_max необязателен
t5{1,2,5,5,1,1,5}; вернет 1 или 5 в зависимости от min_max (читать t3)
numb String Arc.randomOfVal(numb Str ... );

Вернет случайное из значений.

пример: Val = randomOfVal("one","two",1,2); Вывод: "one" или "two" или 1 или 2.

numb number Arc.invert_number(numb X);

Инвертировать число из минуса в плюс и наоборот. Например: Arc.invert_number(20); вернет -20; Arc.invert_number(-20); вернет 20;

boolean Arc.iniFileWriteLua(strsection,str key, str value, str iniFile, boolean lua, boolean clean);

boolean 'lua' Необязательный параметр

Если установлен,будет добавлять комментарий 'два тире', полезно для записи в луа файл.

boolean 'clean', true=Очистка пустых строк, Необязательный параметр.

вернет true если данные былы записанны в файл, иначе false (запись не производится, если это не не обходимо)

[section]key=value

boolean Arc.iniFileReadLua(str section, str key, str iniFile, boolean lua);

boolean 'lua' - Смотреть function iniFileWrite, Необязательный параметр

Вернет value или ''

boolean Arc.iniFileRemoveSectionLua(str section, str iniFile, boolean lua);

Удалить всю секцию, со всеми ключами

boolean 'lua' - Смотреть function iniFileWrite, Необязательный параметр

вернет трие при успешном удалении, иначе false

boolean retval,str key,str val = Arc.iniFileEnumLua(str section, numb idx, str iniFile, boolean lua);

Перечислите данные, хранящиеся в ini для конкретного имени 'section'

Возвращает false, когда больше нет данных

idx На основе нуля

boolean 'lua' - Смотреть function iniFileWrite, Необязательный параметр

retval, key, val = iniFileEnum(section,idx,iniFile,lua);

tbl = Arc.iniFileReadSectionLua(str section, str iniFile, boolean lua);

boolean 'lua' - Смотреть function iniFileWrite, Необязательный параметр

Вернет в виде таблицы все ключи и их значения из указанной секции

tbl = Arc.iniFileWriteSectionLua(str section, table tbl, str iniFile, boolean lua, boolean clean);

boolean 'lua' - Смотреть function iniFileWrite, Необязательный параметр

Переписать всю секцию из таблицы

таблица должна иметь структуру как в из функции (iniFileReadSection)

tbl = {{key=1,val=1},{key=2,val=2},{key=3,val=3}}

tbl = {}
tbl[1].key = {}
tbl[1].key = 'bla'
tbl[1].val = 'bla'
tbl[2].key = {}
tbl[2].key = 'bla'
tbl[2].val = 'bla'
tbl[3].key = {}
tbl[3].key = 'bla'
tbl[3].val = 'bla'

тут должна быть картинка