SetBusFloat('show.master.level', masterGain.asFloat);
ArrayOutput.asArray(i, GetBusArray('show.motion', i));
Set or get values for data or array buses.
| Procedure | Description |
|---|---|
function GetBusFloat(busname: string): float; |
Get the current float value of the specified Usine bus |
function GetBusArray(busname: string; index: integer): float; |
Get the float value of a specific element in a Usine bus array |
procedure SetBusFloat(busname: string; v: float); |
Set the float value of the specified Usine bus |
procedure SetBusArray(busname: string; index: integer; v: float); |
Set the float value of a specific element in a Usine bus array |
////////////////////////////////////////////////////////////////////////////////
// Bus Access Demo - demonstrates GetBusFloat/SetBusFloat and their array
// counterparts. Use the buttons to push UI values to Usine buses or pull the
// current bus contents back into the module.
////////////////////////////////////////////////////////////////////////////////
const BUS_SCALAR_NAME = 'demo.bus.scalar';
const BUS_ARRAY_NAME = 'demo.bus.array';
const ARRAY_SIZE = 4;
var
WriteBtn : TParameter;
ReadBtn : TParameter;
ScalarInput : TParameter;
ScalarMonitor : TParameter;
ArrayInput : TParameter;
ArrayOutput : TParameter;
procedure PushValuesToBuses;
var
i: integer;
begin
// Copy the scalar control value to the named Usine bus.
SetBusFloat(BUS_SCALAR_NAME, ScalarInput.asFloat);
// Copy every slot from the UI array to the matching bus array entry.
for i := 0 to ARRAY_SIZE - 1 do
SetBusArray(BUS_ARRAY_NAME, i, ArrayInput.asArray(i));
end;
procedure PullValuesFromBuses;
var
i: integer;
scalarValue: single;
begin
// Read the scalar bus value and expose it on the output parameter.
scalarValue := GetBusFloat(BUS_SCALAR_NAME);
ScalarMonitor.asFloat(scalarValue);
// Read each array element from the bus and mirror it to the output array.
for i := 0 to ARRAY_SIZE - 1 do
ArrayOutput.asArray(i, GetBusArray(BUS_ARRAY_NAME, i));
end;
procedure Init;
var
i: integer;
begin
ModuleColor($FF3949AB);
WriteBtn := CreateParam('write buses', ptButton, pioInput);
ReadBtn := CreateParam('read buses', ptButton, pioInput);
ScalarInput := CreateParam('scalar in', ptDataFader, pioInput);
ScalarMonitor := CreateParam('scalar out', ptDataField, pioOutput);
ArrayInput := CreateParam('array in', ptArray, pioInput);
ArrayOutput := CreateParam('array out', ptArray, pioOutput);
ScalarInput.Min(0);
ScalarInput.Max(1);
ScalarInput.AsFloat(0.5);
ScalarMonitor.Min(0);
ScalarMonitor.Max(1);
ArrayInput.Length(ARRAY_SIZE);
ArrayOutput.Length(ARRAY_SIZE);
for i := 0 to ARRAY_SIZE - 1 do
begin
ArrayInput.asArray(i, i * 0.25); // seed array slots for quick testing
ArrayOutput.asArray(i, 0);
end;
end;
procedure Callback(N: integer);
begin
if N = WriteBtn then
PushValuesToBuses;
if N = ReadBtn then
PullValuesFromBuses;
end;
function GetBusFloat(busname: string): float;
Get the current float value of the specified Usine bus.
var
BusMonitor: TParameter;
procedure Init;
begin
BusMonitor := CreateParam('bus monitor', ptDataField, pioOutput);
end;
procedure ProcessIDLE;
begin
BusMonitor.asFloat(GetBusFloat('demo.bus.scalar'));
end;
function GetBusArray(busname: string; index: integer): float;
Get the float value of a specific element in a Usine bus array.
var
ArrayOutput: TParameter;
procedure Init;
begin
ArrayOutput := CreateParam('bus array monitor', ptArray, pioOutput);
ArrayOutput.Length(4);
end;
procedure Process;
var
i: integer;
begin
for i := 0 to ArrayOutput.Length - 1 do
ArrayOutput.asArray(i, GetBusArray('demo.bus.motion', i));
end;
procedure SetBusFloat(busname: string; v: float);
Set the float value of the specified Usine bus.
var
GainKnob: TParameter;
procedure Init;
begin
GainKnob := CreateParam('master gain', ptDataFader, pioInput);
GainKnob.Min(0);
GainKnob.Max(1);
end;
procedure Callback(N: integer);
begin
if N = GainKnob then
SetBusFloat('demo.bus.scalar', GainKnob.asFloat);
end;
procedure SetBusArray(busname: string; index: integer; v: float);
Set the float value of a specific element in a Usine bus array.
var
CurveControl: TParameter;
procedure Init;
begin
CurveControl := CreateParam('curve data', ptArray, pioInput);
CurveControl.Length(4);
end;
procedure Callback(N: integer);
var
i: integer;
begin
if N = CurveControl then
for i := 0 to CurveControl.Length - 1 do
SetBusArray('demo.bus.motion', i, CurveControl.asArray(i));
end;
version 7.0.250121
Edit All Pages