Edison Инструмент Script

Данная статья является частью цикла статей "Fl Studio"

Инструмент Script в Edison и Slicex (Ctrl+T) - открывает меню, содержащее список доступных сценариев. Вы можете написать свой собственный сценарий, используя Visual Basic или Pascal, который будет скомпилирован paxCompiler и запустить при выборе сценария из меню. PaxCompiler это истинный компилятор Pascal, который позволяет писать код для выполнения сложных DSP над вашими сэмплами.

Сохраните сценарии - как .pas файлы в каталог установки FL Studio ..\Plugins\Fruity\Effects\Edison\Data\Scripts. Эти файлы будут видны при следующем запуске команды Run script.

Диалоги - обратите внимание на то, что некоторые из демо сценариев показывают диалоговые окна, не надо их использовать.

Ошибки – если сценарий имеет ошибки, то появится диалоговое окно с объяснением ошибки и вариантами "изменить" сценарий или "запустить" его снова.

Написание сценариев – изучить содержимое существующих сценариев и прочитайте файл Reference.txt находящийся в каталоге сценариев, чтобы узнать больше о их написании и доступных функциях. Вы можете узнать больше о Pascal здесь.

Ссылки на скрипты Edison[править]

Глобальные переменные
CRLF string - acts as a line feed for showing multiline messages
Editor TEditor
EditorSample TSample
ScriptPath string
Глобальные функции
ProgressMsg procedure ProgressMsg(const Msg:String;Pos,Total:Integer);
ShowMessage procedure ShowMessage(const s: string);
Функции Delphi/Windows
Dec procedure dec(var Value, Decrement: integer);
FloatToStr function FloatToStr(Value: extended): string;
Inc procedure inc(var Value, Increment: integer);
IntToStr function IntToStr(Value: integer): string;
Round function Round(Value: double): integer;
TimeGetTime function timeGetTime: integer; stdcall;
Класы связанные с сигналами
// PasteFromTo modes
0: insert
1: replace
2: mix
---
// NormalizeFormat Mode flags (combine as needed)
NF_NumChannels: normalize the number of channels
NF_Format: normalize the sample format
NF_Samplerate: normalize the samplerate
NF_All: normalize all (combines all flags)
---
// region
TRegion = class
constructor Create;
procedure Copy(Source: TRegion);
property SampleStart: integer;
property SampleEnd: integer;
property Name: string;
property Info: string;
property Time: single;
property KeyNum: integer;
end;
---
// sample
TSample = class
constructor Create;
function GetSampleAt(Position, Channel: integer): single;
procedure SetSampleAt(Position, Channel: integer; Value: single);
procedure CenterFromTo(x1, x2: integer);
function NormalizeFromTo(x1, x2: integer; Vol: single; OnlyIfAbove: boolean = FALSE): single;
procedure AmpFromTo(x1, x2: integer; Vol: single);
procedure ReverseFromTo(x1, x2: integer);
procedure ReversePolarityFromTo(x1, x2: integer);
procedure SwapChannelsFromTo(x1, x2: integer);
procedure InsertSilence(x1, x2: integer);
procedure SilenceFromTo(x1, x2: integer);
procedure NoiseFromTo(x1, x2: integer; Mode: integer = 1; Vol: single = 1);
procedure SineFromTo(x1, x2: integer; Freq, Phase: double; Vol: single = 1);
procedure PasteFromTo(aSample: TSample; var x1, x2: integer; Mode: integer = 0);
procedure LoadFromClipboard;
procedure DeleteFromTo(x1, x2: integer; Copy: boolean = FALSE);
procedure TrimFromTo(x1, x2: integer);
function MsToSamples(Time: double): double;
function SamplesToMS(Time: double): double;
procedure LoadFromFile(const Filename: string); // loads a full filename (use ScriptPath to complete it)
procedure LoadFromFile_Ask; // shows open dialog
procedure NormalizeFormat(Source: TSample; Mode: integer = nfAll);
function GetRegion(Index: integer): TRegion;
function AddRegion(const SetName: string; SampleStart: integer; SampleEnd: integer = MaxInt): integer;
procedure DeleteRegion(Index: integer);
property Length: integer;
property NumChans: integer;
property Samplerate: integer;
property RegionCount: integer;
end;
---
// editor
TEditor = class
function GetSelectionS(var x1, x2: integer): boolean;
function GetSelectionMS(var x1, x2: double): boolean;
property Sample: TSample;
end;
Диалог классов и функций
TInput = class
property DefaultValue: single;
property ValueAsInt: integer;
property Min: single;
property Max: single;
end;
---
TScriptDialog = class
constructor Create;
function AddInput(const aName: string; Value: single): TInput;
function AddInputKnob(const aName: string; Value, Min, Max: single): TInput;
function AddInputCombo(const aName, ValueList: string; Value: integer): TInput;
function GetInput(const aName: string): TInput;
function GetInputValue(const aName: string): single;
function GetInputValueAsInt(const aName: string): integer;
function Execute: boolean;
end;
---
function CreateScriptDialog(const Title, Description: string): TScriptDialog;