Buses

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;

GetBusFloat

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;

GetBusArray

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;

SetBusFloat

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;

SetBusArray

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;

more about scripts

version 7.0.250121

Edit All Pages