BSE Object Reference

/opt/src/beast/docs/psource/bse-objects.scad

SYNOPSIS

object  BseAdder;
object  BseAmplifier;
object  BseArtsCompressor;
object  BseAtanDistort;
object  BseBalance;
object  BseBiquadFilter;
object  BseBus;
object  BseBusModule;
object  BseCSynth;
object  BseConstant;
object  BseContainer {
 Signals:
  void  ::item-added  (arg1);
  void  ::item-remove  (arg1, arg2);
};
object  BseContextMerger;
object  BseContribSampleAndHold;
object  BseCxxBase;
object  BseDataPocket {
 Signals:
  void  ::entry-added  (arg1);
  void  ::entry-removed  (arg1);
  void  ::entry-changed  (arg1);
};
object  BseDavBassFilter;
object  BseDavChorus;
object  BseDevice;
object  BseEditableSample {
 Signals:
  void  ::changed  ();
};
object  BseEffect;
object  BseFreeVerb;
object  BseIIRFilter;
object  BseInstrumentInput;
object  BseInstrumentOutput;
object  BseItem {
 Signals:
  void  ::parasites-added  (arg1);
  void  ::parasite-changed  (arg1);
};
object  BseJanitor {
 Signals:
  void  ::progress  (arg1);
  void  ::action-changed  (arg1, arg2);
  void  ::action  (arg1, arg2);
  void  ::shutdown  ();
};
object  BseLadspaModule;
object  BseMidiController;
object  BseMidiDevice;
object  BseMidiDeviceALSA;
object  BseMidiDeviceNULL;
object  BseMidiDeviceOSS;
object  BseMidiInput;
object  BseMidiNotifier {
 Signals:
  void  ::midi-event  (arg1);
};
object  BseMidiSynth;
object  BseMidiVoiceInput;
object  BseMidiVoiceSwitch;
object  BseMixer;
object  BseMult;
object  BseNoise;
object  BseObject {
 Signals:
  void  ::release  ();
  void  ::icon-changed  ();
};
object  BsePart {
 Signals:
  void  ::range-changed  (arg1, arg2, arg3, arg4);
  void  ::links-changed  ();
};
object  BsePcmDevice;
object  BsePcmDeviceALSA;
object  BsePcmDeviceNull;
object  BsePcmDeviceOSS;
object  BsePcmInput;
object  BsePcmOutput;
object  BsePcmWriter;
object  BseProject {
 Signals:
  void  ::state-changed  (arg1);
};
object  BseSNet {
 Signals:
  void  ::port-unregistered  ();
};
object  BseSequencer;
object  BseServer {
 Signals:
  void  ::registration  (arg1, arg2, arg3);
  void  ::message  (arg1);
  void  ::script-start  (arg1);
  void  ::script-error  (arg1, arg2, arg3);
};
object  BseSimpleADSR;
object  BseSnooper;
object  BseSong {
 Signals:
  void  ::pointer-changed  (arg1);
};
object  BseSource {
 Signals:
  void  ::probes  (arg1);
  void  ::io-changed  ();
};
object  BseStandardGusPatchEnvelope;
object  BseStandardOsc;
object  BseStandardQuantizer;
object  BseStandardSaturator;
object  BseStorage;
object  BseSubIPort;
object  BseSubOPort;
object  BseSubSynth;
object  BseSummation;
object  BseSuper;
object  BseTrack {
 Signals:
  void  ::changed  ();
};
object  BseWave;
object  BseWaveOsc {
 Signals:
  void  ::notify-pcm-position  (arg1, arg2);
};
object  BseWaveRepo;
object  DavCanyonDelay;
object  DavOrgan;
object  DavSynDrum;
object  DavXtalStrings;

DESCRIPTION

BseAdder

object BseAdder
{
 Channels:
  JointInput  ::audio-in1;
  JointInput  ::audio-in2;
  Output  ::audio-out;
 Properties:
  SfiBool  ::subtract;
};
The Adder is a very simplisitic prototype mixer that just sums up incoming signals (it does allow for switching to subtract mode though)

Channels:
audio-in1: Audio Input 1
audio-in2: Audio Input 2
audio-out: Audio Output


Properties:
subtract: Use subtraction to combine samplevalues (instead of addition)

BseAmplifier

object BseAmplifier
{
 Channels:
  Input  ::audio-in1;
  Input  ::audio-in2;
  Input  ::ctrl-in1;
  Input  ::ctrl-in2;
  Output  ::audio-out;
 Properties:
  SfiReal  ::alevel1;
  SfiReal  ::alevel2;
  SfiReal  ::abalance;
  SfiReal  ::clevel1;
  SfiReal  ::clevel2;
  SfiReal  ::cbalance;
  SfiBool  ::ctrl_mul;
  SfiBool  ::ctrl_exp;
  SfiReal  ::ostrength;
  SfiReal  ::base_level;
  SfiReal  ::master_volume;
};
BseAmplifier provides input signal controlled amplification or attenuation. It supports two control inputs and two audio inputs which are mixed together after balance and level adjustments. The gain setting controls preamplification of the mixed audio signal. The mixed control signal, weighted by a strength setting, determines additional amplification, allowing for external sources to modulate the overall volume (tremolo). The mixed control signal can influence the amplification linearly (to amplify other control signals) or exponentially (to amplify audio signals). Finally, the master volume controls amplification of the resulting output signal.

Authors: Tim Janik

License: GNU Lesser General Public License

Channels:
audio-in1: First audio input
audio-in2: Second audio input
ctrl-in1: First control input
ctrl-in2: Second control input
audio-out: Amplified audio output


Properties:
alevel1: Attenuate the level of audio input 1 (Range: 0 .. 100)
alevel2: Attenuate the level of audio input 2 (Range: 0 .. 100)
abalance: Balance audio input levels (Range: -100 .. 100)
clevel1: Attenuate the level of control input 1 (Range: 0 .. 100)
clevel2: Attenuate the level of control input 2 (Range: 0 .. 100)
cbalance: Balance control input levels (Range: -100 .. 100)
ctrl_mul: Switch the two control inputs to work like a chain of gain controls, rather than mixing them together, weighted by balance.
ctrl_exp: Toggle exponential and linear control response
ostrength: Adjust how much the control signals affect the output volume (Range: 0 .. 100)
base_level: Base amplification (the control signal adds up to this) (Range: 0 .. 100)
master_volume: Output stage amplification in decibel (Range: 0.0000158 .. 15.8489319)

BseArtsCompressor

object BseArtsCompressor
{
 Channels:
  Input  ::audio-in1;
  Input  ::audio-in2;
  Output  ::audio-out1;
  Output  ::audio-out2;
 Properties:
  SfiReal  ::attack;
  SfiReal  ::release;
  SfiReal  ::threshold_db;
  SfiReal  ::ratio_to_one;
  SfiReal  ::output_db;
  SfiBool  ::auto_output;
};
ArtsCompressor compresses the sound.

Compression is a dynamic operation that consists of two parts: (1) the current input volume of the signal is detected (2) if it exceeds a given theshold, the volume of the output signal will be reduced

The input volume detection has an attack and a release half-life time which can be specified - in milliseconds - with the corresponding properties. This envelope causes the compressor to adapt slowly to the actual input signal level.

The ratio specifies how the volume of a signal should be reduced, if it exceeds the threshold. A compression ratio of 2:1 means for instance that if the input volume is 2 dB over the threshold, the output volume will be 1 dB over the threshold. Example (threshold = -10, ratio 2:1): input = -20 dB => output = -20 dB input = -10 dB => output = -10 dB input = 0 dB => output = -5 dB input = 10 dB => output = 0 dB input = 20 dB => output = 5 dB

Compression is often thought off as an operation to make music "sound louder". To achieve this, the first step is to reduce the dynamic range like in the example above. As the loud parts of the music have been reduced in volume, we can now amplify everything, without risking distortion or clipping. This has the overall effect of the music sounding louder. In our example, an output amplification of 5 dB would be okay, if the input signal never exceeded 0 dB.

Authors: Matthias Kretz, Stefan Westerfeld

License: GNU General Public License

Channels:
audio-in1: Audio input 1
audio-in2: Audio input 2
audio-out1: Compressed audio output 1
audio-out2: Compressed audio output 2


Properties:
attack: Set the attack time in milliseconds (Range: 0.1 .. 250)
release: Set the release time in milliseconds (Range: 0.1 .. 250)
threshold_db: Only parts louder than threshold are compressed (Range: -100 .. 0)
ratio_to_one: Set the compression ratio to x:1 (Range: 1 .. 20)
output_db: Set the output amplification (Range: -20 .. 20)
auto_output: Adjust the output amplification automatically according to threshold and ratio

BseAtanDistort

object BseAtanDistort
{
 Channels:
  Input  ::audio-in;
  Output  ::audio-out;
 Properties:
  SfiReal  ::boost_amount;
};
BseAtanDistort compresses or expands the input signal with distortion (in a manner similar to the atan(3) mathematical function, thus it's name). The strength with which the input signal is treated is adjustable from maximum attenuation to maximum boost.

Channels:
audio-in: Audio Input Signal
audio-out: Distorted Audio Output


Properties:
boost_amount: The atan distortion boost amount (strength) ranges from maximum attenuation (0%) to maximum boost (100%). (Range: 0 .. 100)

BseBalance

object BseBalance
{
 Channels:
  Input  ::audio-in1;
  Input  ::audio-in2;
  Input  ::ctrl-in1;
  Input  ::ctrl-in2;
  Output  ::left-out;
  Output  ::mix-out;
  Output  ::right-out;
 Properties:
  SfiReal  ::alevel1;
  SfiReal  ::alevel2;
  SfiReal  ::abalance;
  SfiReal  ::clevel1;
  SfiReal  ::clevel2;
  SfiReal  ::cbalance;
  SfiReal  ::ostrength;
  SfiReal  ::lowpass;
  SfiReal  ::obalance;
};
BseBalance is a stereo panning module with two audio and two control inputs, each of which can be seperately level adjusted. The resulting output balance is controlled by a balance adjustment and the sum of the control inputs. To avoid aliasing artefacts for rapid balance changes, the control signal is preprocessed by a simple lowpass filter with adjustable cutoff frequency.

Authors: Tim Janik

License: GNU Lesser General Public License

Channels:
audio-in1: First audio input
audio-in2: Second audio input
ctrl-in1: First control input
ctrl-in2: Second control input
left-out: Left audio output
mix-out: Mixed audio output
right-out: Right audio output


Properties:
alevel1: Attenuate the level of audio input 1 (Range: 0 .. 100)
alevel2: Attenuate the level of audio input 2 (Range: 0 .. 100)
abalance: Balance audio input levels (Range: -100 .. 100)
clevel1: Attenuate the level of control input 1 (Range: 0 .. 100)
clevel2: Attenuate the level of control input 2 (Range: 0 .. 100)
cbalance: Balance control input levels (Range: -100 .. 100)
ostrength: Adjust how much the control signals affect the output balance (Range: 0 .. 100)
lowpass: Lowpass filter frequency for the control signal (Range: 100 .. 1000)
obalance: Adjust output balance between left and right (Range: -100 .. 100)

BseBiquadFilter

object BseBiquadFilter
{
 Channels:
  Input  ::audio-in;
  Input  ::freq-in;
  Input  ::freq-mod-in;
  Input  ::gain-mod-in;
  Output  ::audio-out;
 Properties:
  BseBiquadFilterType  ::filter_type;
  SfiReal  ::freq;
  SfiInt  ::note;
  SfiReal  ::gain;
  SfiReal  ::fm_perc;
  SfiBool  ::exponential_fm;
  SfiReal  ::fm_n_octaves;
  SfiReal  ::gain_perc;
};
BseBiquadFilter - an infinite impulse response filter, consisting of 2-zeros/2-poles segments (thus it's name: bi-quadratic). Various types of filters are supported with modulatable center (Cut-Off) frequency and gain input signals.

Channels:
audio-in: Unfiltered Audio Signal
freq-in: Center Frequency Input
freq-mod-in: Frequency Modulation Input
gain-mod-in: Gain Modulation Input
audio-out: Filtered Audio Signal


Properties:
filter_type: The filter design type
freq: Filter cutoff frequency in Hertz (Range: 0.00005 .. 19999.9)
note: Filter cutoff frequency as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)
gain: Gain [dB] (Range: -48 .. 48)
fm_perc: Strength of linear frequency modulation (Range: 0 .. 100)
exponential_fm: Perform exponential frequency modulation instead of linear
fm_n_octaves: Number of octaves to be affected by exponential frequency modulation (Range: 0 .. 5)
gain_perc: Strength of gain modulation (Range: 0 .. 100)

BseBus

object BseBus
{
 Channels:
  Input  ::left-audio-in;
  Input  ::right-audio-in;
  Output  ::left-audio-out;
  Output  ::right-audio-out;
 Properties:
  BseItemSeq*  ::inputs;
  BseItemSeq*  ::outputs;
  SfiBool  ::mute;
  SfiBool  ::solo;
  SfiBool  ::sync;
  SfiReal  ::left_volume;
  SfiReal  ::right_volume;
};
Bus implementation for songs, used to route track audio signals to the master output.

Channels:
left-audio-in: Left channel input
right-audio-in: Right channel input
left-audio-out: Left channel output
right-audio-out: Right channel output


Properties:
inputs: Synthesis signals (from tracks and busses) used as bus input
outputs: Mixer busses used as output for synthesis signals
mute: Mute: turn off the bus volume
solo: Solo: mute all other busses
sync: Syncronize left and right volume
left_volume: Volume adjustment in decibel of left bus channel (Range: 0.0000158 .. 15.8489319)
right_volume: Volume adjustment in decibel of right bus channel (Range: 0.0000158 .. 15.8489319)

BseBusModule

object BseBusModule
{
 Channels:
  Input  ::audio-in1;
  Input  ::audio-in2;
  Output  ::audio-out1;
  Output  ::audio-out2;
 Properties:
  SfiReal  ::volume1;
  SfiReal  ::volume2;
};
Synthesis module used internally by BseBus

Authors: Tim Janik

License: GNU Lesser General Public License

Channels:
audio-in1: First audio input
audio-in2: Second audio input
audio-out1: First audio output
audio-out2: Second audio output


Properties:
volume1: (Range: 0 .. 1000)
volume2: (Range: 0 .. 1000)

BseCSynth

object BseCSynth
{
};
BSE Synthesis (Filter) Network

BseConstant

object BseConstant
{
 Channels:
  Output  ::const-out1;
  Output  ::const-out2;
  Output  ::const-out3;
  Output  ::const-out4;
 Properties:
  SfiReal  ::value_1;
  SfiReal  ::frequency_1;
  SfiInt  ::note_1;
  SfiReal  ::value_2;
  SfiReal  ::frequency_2;
  SfiInt  ::note_2;
  SfiReal  ::value_3;
  SfiReal  ::frequency_3;
  SfiInt  ::note_3;
  SfiReal  ::value_4;
  SfiReal  ::frequency_4;
  SfiInt  ::note_4;
};
This module provides constant signal outputs

Channels:
const-out1: Constant Output 1
const-out2: Constant Output 2
const-out3: Constant Output 3
const-out4: Constant Output 4


Properties:
value_1: Constant signal value (Range: -1 .. 1)
frequency_1: Constant signal value interpreted as frequency value in Hertz (Range: 0 .. 24000)
note_1: Constant signal value as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)
value_2: Constant signal value (Range: -1 .. 1)
frequency_2: Constant signal value interpreted as frequency value in Hertz (Range: 0 .. 24000)
note_2: Constant signal value as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)
value_3: Constant signal value (Range: -1 .. 1)
frequency_3: Constant signal value interpreted as frequency value in Hertz (Range: 0 .. 24000)
note_3: Constant signal value as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)
value_4: Constant signal value (Range: -1 .. 1)
frequency_4: Constant signal value interpreted as frequency value in Hertz (Range: 0 .. 24000)
note_4: Constant signal value as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)

BseContainer

object BseContainer
{
 Signals:
  void  ::item-added 
(BseItem arg1);
  void  ::item-remove 
(BseItem arg1,
 gint    arg2);
};
Base type to manage BSE items

BseContextMerger

object BseContextMerger
{
 Channels:
  JointInput  ::input-1;
  JointInput  ::input-2;
  JointInput  ::input-3;
  JointInput  ::input-4;
  JointInput  ::input-5;
  JointInput  ::input-6;
  JointInput  ::input-7;
  JointInput  ::input-8;
  Output  ::output-1;
  Output  ::output-2;
  Output  ::output-3;
  Output  ::output-4;
  Output  ::output-5;
  Output  ::output-6;
  Output  ::output-7;
  Output  ::output-8;
};
Internal CONTEXT Voice glue object (merger)

BseContribSampleAndHold

object BseContribSampleAndHold
{
 Channels:
  Input  ::audio-in;
  Input  ::trigger-in;
  Output  ::audio-out;
};
SampleAndHold samples the input signal when triggered and holds it until triggered again.

Authors: Artem Popov

License: GNU General Public License

Channels:
audio-in: Audio Input
trigger-in: Trigger Input
audio-out: Audio Output

BseCxxBase

object BseCxxBase
{
};

BseDataPocket

object BseDataPocket
{
 Signals:
  void  ::entry-added 
(gint arg1);
  void  ::entry-removed 
(gint arg1);
  void  ::entry-changed 
(gint arg1);
};
Data pocket type

BseDavBassFilter

object BseDavBassFilter
{
 Channels:
  Input  ::audio-in;
  Input  ::trigger-in;
  Output  ::audio-out;
 Properties:
  SfiReal  ::cutoff_perc;
  SfiReal  ::reso_perc;
  SfiReal  ::env_mod;
  SfiReal  ::env_decay;
  SfiBool  ::trigger;
};
DavBassFilter is a low-pass resonant TB-303 style filter based on the VCF303 portions of gsyn v0.2. The filter algorithm is partly based on the one described in "Musical Applications of Microprocessors" by Hal Chamberlin.

Authors: David A. Bartold, Tim Janik

License: GNU Lesser General Public License

Channels:
audio-in: Audio input
trigger-in: Trigger input
audio-out: Filtered audio output


Properties:
cutoff_perc: Set the cutoff frequency percentage (Range: 0 .. 100)
reso_perc: Set the amount of resonance in percent (Range: 0 .. 100)
env_mod: Set the envelope magnitude in percent (Range: 0 .. 100)
env_decay: Set the decay length in percent (Range: 0 .. 100)
trigger: Trigger filter

BseDavChorus

object BseDavChorus
{
 Channels:
  Input  ::audio-in;
  Output  ::audio-out;
 Properties:
  SfiReal  ::wet_out;
};
DavChorus adds more depth to sounds

Authors: David A. Bartold

License: GNU Lesser General Public License

Channels:
audio-in: Audio input
audio-out: Chorus audio output


Properties:
wet_out: Set the amount of modified data to mix (Range: 0 .. 100)

BseDevice

object BseDevice
{
};
Abstract device base type

BseEditableSample

object BseEditableSample
{
 Signals:
  void  ::changed 
();
};
Editable sample type

BseEffect

object BseEffect
{
};
BseEffect implements an abstract C++ effect base.

BseFreeVerb

object BseFreeVerb
{
 Channels:
  Input  ::left-audio-in;
  Input  ::right-audio-in;
  Output  ::left-audio-out;
  Output  ::right-audio-out;
 Properties:
  SfiReal  ::room_size;
  SfiReal  ::damping;
  SfiReal  ::wet_level;
  SfiReal  ::dry_level;
  SfiReal  ::width;
};
BseFreeVerb - Free, studio-quality reverb (SOURCE CODE in the public domain) Written by Jezar at Dreampoint - http://www.dreampoint.co.uk

Channels:
left-audio-in: Left Input
right-audio-in: Right Input
left-audio-out: Left Output
right-audio-out: Right Output


Properties:
room_size: Room Size (Range: 0.7 .. 0.98)
damping: Damping [%] (Range: 0 .. 100)
wet_level: Wet Level [dB] (Range: 0 .. 3)
dry_level: Dry Level [dB] (Range: 0 .. 2)
width: Width [%] (Range: 0 .. 100)

BseIIRFilter

object BseIIRFilter
{
 Channels:
  Input  ::audio-in;
  Output  ::audio-out;
 Properties:
  BseIIRFilterAlgorithm  ::filter_algorithm;
  BseIIRFilterType  ::filter_type;
  SfiInt  ::order;
  SfiReal  ::epsilon;
  SfiReal  ::cut_off_freq;
  SfiInt  ::cut_off_note;
  SfiReal  ::cut_off_freq_2;
  SfiInt  ::cut_off_note_2;
};
BseIIRFilter is an infinite impulse response filter of variable order

Channels:
audio-in: Unfiltered Input
audio-out: Filtered Output


Properties:
filter_algorithm: The filter design type
filter_type: The type of filter to use
order: Order of Filter (Range: 1 .. 18)
epsilon: Passband falloff at cutoff frequency (Range: 0 .. 0.98)
cut_off_freq: Filter cutoff frequency (Range: 0.00005 .. 20000)
cut_off_note: Filter cutoff frequency as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)
cut_off_freq_2: Second filter cutoff frequency (Range: 0.00005 .. 20000)
cut_off_note_2: Filter cutoff frequency as note, converted to Hertz according to the current musical tuning (Range: 0 .. 131)

BseInstrumentInput

object BseInstrumentInput
{
 Channels:
  Output  ::frequency;
  Output  ::gate;
  Output  ::velocity;
  Output  ::aftertouch;
};
Virtual input module for synthesis networks which implement instruments

Channels:
frequency: Note Frequency
gate: High if the note is currently being pressed
velocity: Velocity of the note press
aftertouch: Velocity while the note is pressed

BseInstrumentOutput

object BseInstrumentOutput
{
 Channels:
  Input  ::left-audio;
  Input  ::right-audio;
  Input  ::unused;
  Input  ::synth-done;
};
Virtual output module for synthesis networks which implement instruments

Channels:
left-audio: Left Channel Output
right-audio: Right Channel Output
synth-done: High indicates the instrument is done synthesizing

BseItem

object BseItem
{
 Signals:
  void  ::parasites-added 
(gchararray arg1);
  void  ::parasite-changed 
(gchararray arg1);
};
Base type for objects managed by a container

BseJanitor

object BseJanitor
{
 Properties:
  const gchar*  ::ident;
  SfiBool  ::connected;
  const gchar*  ::status_message;
  SfiInt  ::exit_code;
  const gchar*  ::exit_reason;
 Signals:
  void  ::progress 
(gfloat arg1);
  void  ::action-changed 
(gchararray arg1,
 gint       arg2);
  void  ::action 
(gchararray arg1,
 gint       arg2);
  void  ::shutdown 
();
};
BSE connection interface object

Properties:
ident: Script Identifier
connected: Connected
status_message: Status Message
exit_code: Exit Code (Range: -256 .. 256)
exit_reason: Exit Rea