Flowstone Component Reference
Flowstone Component Reference
VERSION 3.0.8
C O N T E N T S
CHAPTER 1 1 Introduction 16
CHAPTER 2 2 Components 18
ABOUT TO CLOSE......................................................................................22
ACCEL CLAW.............................................................................................23
ADD.......................................................................................................... 24
ARC ......................................................................................................... 29
ASIO IN ..................................................................................................37
ASSEMBLER ..............................................................................................39
AUDIO STREAM...........................................................................................43
BALANCE BOT............................................................................................44
BINARY TO HEX..........................................................................................47
- ii -
C O N T E N T S
BITMAP ..................................................................................................... 50
BOOLEAN ..................................................................................................67
BOOLEAN OR ............................................................................................69
BUZZER CLAW............................................................................................73
CAMSHIFT TRACKER...................................................................................74
CHANGED...................................................................................................77
CLEAR AUDIO.............................................................................................78
CLIP ......................................................................................................... 79
COLOUR ................................................................................................... 80
COLOUR DETECT........................................................................................81
- iii -
C O N T E N T S
COS.......................................................................................................... 90
COS INVERSE.............................................................................................91
COSH ....................................................................................................... 92
COUNTER ..................................................................................................93
DE-ZIPPER ................................................................................................95
DECIBEL ................................................................................................... 96
DELAY ...................................................................................................... 97
DIGITAL IO CLAW.....................................................................................100
DIVIDE..................................................................................................... 105
DLL......................................................................................................... 106
DMX....................................................................................................... 108
DOUBLE TO STREAM.................................................................................114
- iv -
C O N T E N T S
ELLIPSE ..................................................................................................122
ENVELOPE CONTROL.................................................................................123
EQUALS ..................................................................................................124
EXE ZOOM..............................................................................................128
FFT........................................................................................................ 129
FLOAT INVERSE........................................................................................149
-v-
C O N T E N T S
FLOAT INVERT..........................................................................................150
FLOWBOARD............................................................................................155
FLOWBOARD GSM...................................................................................157
FLOWPAW...............................................................................................159
FONT....................................................................................................... 161
FORMAT STRING.......................................................................................162
FRAME SYNC............................................................................................163
FRAME TO MONO......................................................................................164
FULL SCREEN...........................................................................................165
GOAL PROGRESS......................................................................................167
GREATER THAN........................................................................................174
GYRO CLAW............................................................................................177
HID........................................................................................................ 183
- vi -
C O N T E N T S
IFFT....................................................................................................... 187
IF THEN ELSE...........................................................................................188
IMAGE DOWNLOAD....................................................................................190
IMPULSE ..................................................................................................191
INDEXER ..................................................................................................194
INT INVERSE.............................................................................................203
IR TEMP CLAW........................................................................................216
IS PLAYING .............................................................................................218
- vii -
C O N T E N T S
LABJACKU3-HV......................................................................................219
LABJACKU3-LV......................................................................................223
LESS THAN..............................................................................................230
MAGNITUDE/PHASE TO REAL/IMG...............................................................237
MAX........................................................................................................ 238
- viii -
C O N T E N T S
MIN......................................................................................................... 272
MODULE .................................................................................................274
MOTION DETECT.......................................................................................288
- ix -
C O N T E N T S
MULTIPLEXER ..........................................................................................300
MULTIPLY.................................................................................................301
NETVOX USB..........................................................................................312
PHIDGETS 2/2/2.......................................................................................337
PHIDGETS ANALOG...................................................................................343
-x-
C O N T E N T S
PHIDGETS BRIDGE....................................................................................345
PHIDGETS GPS........................................................................................351
PHIDGETS RFID.......................................................................................360
PHIDGETS TEMPERATURE...........................................................................370
PROXIMITY CLAW......................................................................................397
- xi -
C O N T E N T S
RECTANGLE ............................................................................................403
REDRAW .................................................................................................404
RELAY CLAW...........................................................................................407
RFID CLAW.............................................................................................408
ROTATE ..................................................................................................409
SAWTOOTH .............................................................................................416
SELECT ...................................................................................................418
SELECTOR ...............................................................................................419
SIN INVERSE.............................................................................................429
- xii -
C O N T E N T S
SMOOTH .................................................................................................433
SPEAKUP CLAW.......................................................................................436
STREAM ADD...........................................................................................437
STREAM DIVIDE........................................................................................438
STREAM MAX...........................................................................................443
STREAM MIN............................................................................................444
STREAM MULTIPLY....................................................................................445
STREAM SUBTRACT...................................................................................446
STREAM TO DOUBLE.................................................................................447
- xiii -
C O N T E N T S
STRING TO HEX........................................................................................463
SUBTRACT...............................................................................................469
TAN INVERSE............................................................................................480
TEXT....................................................................................................... 484
TEXT DRAW.............................................................................................485
TICKER 25 ..............................................................................................489
TRANSLATE .............................................................................................494
TRIANGLE ...............................................................................................495
- xiv -
C O N T E N T S
UNPACK ..................................................................................................500
VIDEO DELAY...........................................................................................501
VIDEO SAVE.............................................................................................502
VIDEO STREAM.........................................................................................504
VOICES TO POLY......................................................................................508
WII NUNCHUCK.........................................................................................529
WIIMOTE..................................................................................................531
WIIMOTE IR.............................................................................................533
- xv -
C O N T E N T S
XBOX 360...............................................................................................541
- xvi -
1 Introduction
ABOUT THIS GUIDE
CHAPTER 1
In this guide you’ll find individual descriptions for all the components supplied with FlowStone. It is
intended as reference material to accompany the main user guide.
The components are listed in ascending alphabetical order. If you want to look up a particular
component quickly use the table of contents at the beginning of this guide.
Other Information
We have a separate guide which describes how to use the software. This can be found in the Manuals
section of our web site at:
http://www.dsprobotics.com/manualsarea.php
If you are looking for tutorials then see the Tutorials section of the DSP Robotics web site:
http://www.dsprobotics.com/tutorials.html
Additional information and articles about the software can be found at:
http://www.dsprobotics.com/support
If you have any comments about this guide please email them to [email protected].
- 18 -
COMPONENTS
2 Components
A-Z LISTING OF ALL PRIMITIVES & MODULES
- 19 -
CHAPTER 2
Description
This component works in conjunction with the FlowPaw component and allows you to control a 7
Segment LED click board which is attached to one of the claws on your FlowPaw.
To change the displayed value simply send an Int value in the range 0-99 to the Value input.
Connectors
- 20 -
COMPONENTS
Description
This component works in conjunction with the FlowPaw component and allows you to control an 8x8
LED click board which is attached to one of the claws on your FlowPaw.
There are 3 ways to display data on the display. These are defined by supplying an int value to the
Function input.
The default is zero. This displays any supplied text as a right-to-left scrolling string of characters.
If function is 2 then the supplied text is assumed to be a matrix defined by a string of hex. The string
should be 8 sets of two characters – so that's 16 in total.
The first two characters represent the rightmost column. In hex this represents 8 bits of data for the 8
LEDs in the column. 00 (0 or 00000000 in binary) means all LEDs off. FF (255 or 11111111 in binary)
means all LEDs on.
- 21 -
CHAPTER 2
Connectors
- 22 -
COMPONENTS
About To Close
Description
The About To Close component will send a trigger just before the schematic, exported exe or plugin is
about to close. This allows you to save things like settings data or to prompt users to save any work
they did.
If the Hold input is connected and set to True the component will delay closing until the Done input is
triggered. This is useful if the output trigger ends up triggering events that return execution back to the
component but that need to be completed before the schematic can be closed.
Connectors
Whether to hold closing until Boolean Trigger when the the Trigger
the Done input is triggered schematic is about to close
- 23 -
CHAPTER 2
Accel Claw
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from an Accel click board which is attached to one of the claws on your FlowPaw.
Connectors
Connect to the Claw output Int Accel x-axis readout (-1 to 1) Float
on the FlowPaw component
that matches the claw that
the click board is plugged
into on your FlowPaw.
- 24 -
COMPONENTS
Add
Description
Connectors
Input 2 Template
- 25 -
CHAPTER 2
Description
This primitive adds a single float value to every entry in the input array.
Connectors
- 26 -
COMPONENTS
After Duplicate
Description
The After Duplicate component sends a trigger after a schematic has been duplicate. You can use this
to do any initialisation that may be needed after dragging a module from the toolbox or pasting it or any
other operation that involves duplication.
Connectors
- 27 -
CHAPTER 2
After Load
Description
The After Load component sends a trigger after a schematic has been loaded. You can use this to do
any post loading initialisation that may be needed.
Connectors
- 28 -
COMPONENTS
Append Array
Description
The Append Float Array, Append String Array and Append Int Array component will append the
contents of two arrays together resulting in one single array which contains the contents of both arrays.
Connectors
First array Float Array Array containing values from Float Array
both arrays
- 29 -
CHAPTER 2
Arc
Description
The Arc primitive draws a portion of the edge of a circle or ellipse depending on whether the bounding
area is square or rectangular (Technically an arc is a portion of the circumference of a circle but here it
is extended to ellipses as well). The arc is defined by the bounding area in which it is to be drawn, a
starting angle and an angle to indicate the amount of sweep (both in degrees), as well as by the pen
object to be used to draw the segment.
- 30 -
COMPONENTS
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 31 -
CHAPTER 2
Example
- 32 -
COMPONENTS
Area to Float
Description
The Area to Float component splits an Area into X, Y, Width and Height.
Connectors
Y component Float
- 33 -
CHAPTER 2
Area Union
Description
The Area Union primitive takes two area inputs and finds the smallest bounding rectangular area in
which both will fit.
Connectors
- 34 -
COMPONENTS
Example
- 35 -
CHAPTER 2
Array Builder
Description
The Array Builder components provide you with a more visual way of creating an array of Strings,
Floats or Ints. This component is useful for small to medium sized arrays. It can also make it easier to
manage arrays where the elements are frequently changing value.
The inputs define the values at each index in the array. So connecting a value to the first input will set
the first entry in the array. As this is a template connector the first link you make will also determine the
data type (String, Float or Int).
To add subsequent entries simply connect a value to the 'spare' template connector. This will become
a connector of the appropriate type and a new 'spare' will appear below it. By connecting more inputs
in this way you can quickly build up an array.
Connectors
The first entry in the array String / Float / Int The array itself String Array / Float
Array / Int Array
- 36 -
COMPONENTS
ASCII to String
Description
The ASCII to String primitive converts an integer into its corresponding ASCII character (or more
accurately the ISO Latin 1 character as ASCII is only defined through 127). For values above 255 the
output 'wraps' back to zero (so the character returned will equal the modulus remainder dividing by
256).
Connectors
- 37 -
CHAPTER 2
ASIO In
Description
ASIO (Audio Stream Input Output) is a digital audio protocol specified by Steinberg which provides an
interface between an application and the sound card. The ASIO In primitive provides a mono
connection for each mono input supported by the hardware sound device on your computer.
The ASIO In components provide the only way to receive audio signals from an external source (via
inputs on your sound card). Note that only one ASIO In component is allowed in your schematic.
Connectors
Other Features
The body of the component displays which input device is currently being used. All devices supporting
the ASIO protocol are listed so to select a different one just click on it.
To deselect a device (and therefore switch ASIO input off) simply click on it again.
A small spanner (wrench) icon allows quick access to the device driver's user interface.
- 38 -
COMPONENTS
ASIO Out
Description
ASIO (Audio Stream Input Output) is a digital audio protocol specified by Steinberg which provides an
interface between an application and the sound card. The ASIO Out primitive provides a mono
connection for each mono output supported by the hardware sound device on your computer.
The ASIO Out and Direct Sound Out components provide the only way to send audio signals to your
sound card. You therefore must have at least one of these connected up to your schematic if you want
to hear any sound. Note that only one ASIO Out component is allowed in your schematic.
Connectors
One input for each channel Mono The assembler code String
supported by the selected generated by the component
audio device
Other Features
The body of the component displays which output device is currently being used. All devices
supporting the ASIO protocol are listed so to select a different one just click on it.
To deselect a device (and therefore ASIO output off) simply click on it again.
A small spanner (wrench) icon allows quick access to the device driver's user interface.
- 39 -
CHAPTER 2
Assembler
Description
The Assembler component allows you to write low-level x86 assembler code and use it in your
schematic. There are special commands for creating inputs and outputs so that you can connect the
Assembler component to other components. See the Code Component section in the main user guide
for more information.
NOTE: This is a very advanced feature and should be used with care. With such low-level control it is
possible to crash the software.
Connectors
- 40 -
COMPONENTS
Supported Instructions
The assembler component only supports the following subset of the x86 instruction set:
- 41 -
CHAPTER 2
Audio Devices
Description
You can use the Audio Devices component to find out how many audio devices there are on the
system you're running on. The first output tells you how many devices there are and the second output
gives you a list of device names.
This component is used inside the Audio Selector module to provide the list from which you the choose
an audio device.
Connectors
- 42 -
COMPONENTS
Audio Select
Description
The Audio Select primitive allows you to select an audio device. It overrides whatever you have
selected on the ASIO In/Out or DirectSound In/Out components.
This component is used inside the Audio Selector module and is used in conjunction with the Audio
Devices primitive.
Connectors
- 43 -
CHAPTER 2
Audio Stream
Description
This component allows you to stream audio from media file locally or across a network.
To begin streaming, trigger the Start input. The audio arrives as a stereo mono stream.
To toggle streaming trigger the Pause/Play input. Triggering the Stop input will end streaming. Having
stopped, for an audio file, you can only resume by re-starting from the beginning.
Connectors
URL or file path for the audio String Left channel of streamed Mono
stream audio
- 44 -
COMPONENTS
Balance Bot
Description
The BalanceBot component calculates the servo offset required in order to keep a two wheeled
balancing robot level. It attaches to a FlowPaw component via its Info output and it takes input from a
Gyro and Accelerometer.
Effectively the component gives you access to a PID calculator which is built into the FlowPaw
hardware. This manages the change in servo offset as the gyro and accelerometer feed data about the
level status of the robot.
Just like any other PID calculation you can tweak the controls for proportional, integral and derivative
gain to get the kind of response that works for you.
The output is the PID value which you then use to adjust the servo motors.
- 45 -
CHAPTER 2
Connectors
Offset Int
Turn Int
- 46 -
COMPONENTS
Description
When your VST plugin is used within a host this component will output the current songs bar start
position (in 1 pulse (unit) per quarter). For more details see the VST SDK documentation.
Connectors
- 47 -
CHAPTER 2
Binary to Hex
Description
Converts a string of binary to a string of hex. Each 8 bits of binary is converted to Ascii and then the
hex representation of that byte is used in the hex string.
For example, the binary string “0010111110111011” is converted to the hex string “2FBB”.
Connectors
- 48 -
COMPONENTS
Biquad Filter
Description
A low pass biquad IIR filter using 2 poles, 2 zeros and 12dB per octave.
Connectors
Resonance Stream
- 49 -
CHAPTER 2
Description
A coefficient controlled biquad filter using 2 poles, 2 zeros and 12dB per octave specified by the filter
coefficients.
Connectors
a0 Stream
a1 Stream
a2 Stream
b1 Stream
b2 Stream
- 50 -
COMPONENTS
Bitmap
Description
The Bitmap primitive component loads a bitmap image from a file. Once the bitmap has been loaded
the component retains the data, no reference to the original file path is required.
FlowStone supports bmp, jpeg, tiff, gif and png image types.
You can also trigger the Paste input to make the bitmap take whatever image is on the clipboard.
Connectors
Trigger to load the file Trigger Width of the image in pixels Int
- 51 -
CHAPTER 2
Example
The following example shows how to use the Bitmap component to load an image into a schematic.
- 52 -
COMPONENTS
Bitmap Area
Description
The Bitmap Area primitive draws a portion of a bitmap into a view. The bitmap is drawn to the
destination area provided. If the destination area is a different size from the source area the bitmap will
be resized to fit. The can be used, for example, to magnify some portion of a bitmap. There is also an
optional colour matrix input that can be used to alter the resulting colours of the bitmap in the
destination area.
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 53 -
CHAPTER 2
Example
The schematic file below is bitmap viewer with a small magnifying box that works by moving the cursor
over the bitmap image. The mouse movements are tracked and a small segment directly over the
mouse movement becomes the source bitmap area and is displayed in a destination are in the same
location of the view but at a higher magnification.
Some calculations are required in order to achieve any interesting results as the source and
destination areas must calculated and use different dimensions (pixels vs. grid squares). In the above
schematic these calculations are hidden within the module labelled ‘calc areas’.
- 54 -
COMPONENTS
Description
The Bitmap Array from Bitmap primitive allows you to build an array of bitmaps from images that you
already have loaded in your schematic. You can choose how the bitmaps are stored when they are
saved with the schematic by selecting from one of five different image encoder types: bmp, jpeg, gif,
tiff and png. You can also choose not to store the bitmaps with the schematic using ‘none’ as the
encoder type.
Connectors
- 55 -
CHAPTER 2
- 56 -
COMPONENTS
Description
The Bitmap Array from File primitive allows you to build an array of bitmaps by loading them
individually from files. You can choose how the bitmaps are stored when they are saved with the
schematic by selecting from one of five different image encoder types: bmp, jpeg, gif, tiff and png. You
can also choose not to store the bitmaps with the schematic using ‘none’ as the encoder type.
Connectors
- 57 -
CHAPTER 2
Bitmap Create
Description
The Bitmap Create primitive generates a bitmap and draws onto it whatever is attached to its View
output. The bitmap can then be used as an input by other bitmap components.
Connectors
Grid Step to use when Float Trigger when bitmap has Trigger
drawing to the bitmap been created
- 58 -
COMPONENTS
Bitmap Draw
Description
The Bitmap Draw primitive draws a bitmap onto a view. An Area must be supplied to define the part of
the view that the bitmap is drawn into. The bitmap will be stretched if necessary to fit exactly into the
area supplied.
You can also define a transparency for the rendered bitmap. You should take care when using this
option for bitmaps that are likely to be redrawn many times per second as the calculation can be quite
cpu intensive, particularly with larger bitmaps.
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 59 -
CHAPTER 2
Description
The Bitmap Draw Transform primitive draws a bitmap onto a view. An Area must be supplied to define
the part of the view that the bitmap is drawn into. The bitmap will be stretched if necessary to fit exactly
into the area supplied.
You can also apply a colour transformation using a colour matrix. See the Colour Matrix component for
more information. You should take care when using this option for bitmaps that are likely to be redrawn
many times per second as the calculation can be quite cpu intensive, particularly with larger bitmaps.
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 60 -
COMPONENTS
Bitmap Get At
Description
Connectors
- 61 -
CHAPTER 2
Bitmap Resize
Description
This component resizes a bitmap by applying a specified scale factor. Depending on the scale factor
the bitmap can be increased or decreased in size.
Connectors
Scale factor to apply. Below Float Trigger when the bitmap has Trigger
1 will reduce the size and been resized
above 1 will increase the
size.
- 62 -
COMPONENTS
Description
The Bitmap Sample and Hold component will store a source bitmap when triggered. Any requests for
the bitmap from the Bitmap output will return the last one that was stored.
You can choose how the bitmaps are stored when they are saved with the schematic by selecting from
one of five different image encoder types: bmp, jpeg, gif, tiff and png. You can also choose not to store
the bitmaps with the schematic using ‘none’ as the encoder type.
Connectors
Trigger to store the current Trigger Trigger when the bitmap has Trigger
source bitmap been stored
- 63 -
CHAPTER 2
Bitmap Save
Description
The Bitmap Save component saves a bitmap to a specified file path. You can choose from one of five
different image encoder types for saving bitmaps: bmp, jpeg, gif, tiff and png.
Connectors
- 64 -
COMPONENTS
Bitmap Size
Description
Connectors
- 65 -
CHAPTER 2
Bool to False
Description
The Bool to False component sends a trigger whenever the value at the input changes from True to
False.
Connectors
- 66 -
COMPONENTS
Bool to True
Description
The Bool to True component sends a trigger whenever the value at the input changes from False to
True.
Connectors
- 67 -
CHAPTER 2
Boolean
Description
The Boolean primitive stores a two-state value: either True or False. To change the value stored click
on the main body of the component.
You can also change the type by right-clicking on the input or output. A pop-up menu will appear as
shown below.
Connectors
- 68 -
COMPONENTS
Boolean And
Description
Connectors
- 69 -
CHAPTER 2
Boolean Or
Description
Connectors
- 70 -
COMPONENTS
Boolean XOr
Description
Connectors
- 71 -
CHAPTER 2
Bus Create
Description
Allows you to combine several channels of data into just one. This can greatly simplify a schematic as
data can be passed in just a single bus link. The channels are defined by a comma separated string
which provides a name for each channel. You can extract data from a bus using the Bus Extract
component.
When you connect the channel names you’ll get a new template input for each channel. You then
connect these up to whatever you want to pass through the bus. You can resize the Bus Create
component so that longer connector labels can be read more easily.
Trigger, Boolean, Float, Int, String, Float Array, Int Array, String Array, Stream, Stream Boolean,
Poly, Poly Boolean, Mono, Mono Boolean, Mono4, Area, Pen, Colour, Colour Matrix.
Connectors
- 72 -
COMPONENTS
Bus Extract
Description
The Bus Extract component extracts one or more channels of data from a bus. Buses can be used to
greatly simplify a schematic as data can be passed in just a single bus link. The channels are defined
by a comma separated string which provides a name for each channel.
When you connect the channel names you’ll get a new template output for each channel. You then
connect these up to whatever you want to pass through the bus. You can resize the Bus Extract
component so that longer connector labels can be read more easily.
Trigger, Boolean, Float, Int, String, Float Array, Int Array, String Array, Stream, Stream Boolean,
Poly, Poly Boolean, Mono, Mono Boolean, Mono4, Area, Pen, Colour, Colour Matrix.
Connectors
- 73 -
CHAPTER 2
Buzzer Claw
Description
This component works in conjunction with the FlowPaw component and allows you to control a Buzzer
click board which is attached to one of the claws on your FlowPaw.
Connectors
- 74 -
COMPONENTS
CamShift Tracker
Description
The CamShift Tracker is a video processing component that allows you to track an area of an image
as it changes over time.
The tracker works by computing the histogram of the initial area and using this to compare against the
image as it changes. The image is converted to HSV in the process and the smin and vmin values
allow you to tweak how the S and V components are used in the algorithm.
Connectors
The initial area of the image Area The rotation angle of the Float
you want to track in pixel area you are tracking in
coordinates degrees
- 75 -
CHAPTER 2
Description
This component finds the edges in an image using the Canny edge detection algorithm.
The Canny algorithm uses hysteresis and the Thresh1 and Thresh2 inputs define the high and low
boundaries for this. They are in the range 0-255.
The Aperture is another input into the calculation. There are three options specified by an Int index,
0=3, 1=5 and 2=7. The default is 0 i.e. and aperture of 3.
Connectors
The source image you want Bitmap Processed grayscale image Bitmap
to process showing detected edges
- 76 -
COMPONENTS
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from a Cap Sense click board which is attached to one of the claws on your FlowPaw.
The click board has two buttons and a capacitative touch slider. The states of the buttons are given at
the two button outputs and the value of the slider is given at the Slider output. The slider value is in the
range 0-64.
Connectors
- 77 -
CHAPTER 2
Changed
Description
This simple primitive will only send data to the output when the input value changes to a different
value. You can use this to reduce the flow of triggers through a schematic. For example, if you may be
constantly calculating a result for display purposes but may only want to redraw the GUI when the
value differs from what went before.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings, Booleans, Float/Int/String arrays and Areas. You can right-click on the
connectors at any time to change the type.
Connectors
- 78 -
COMPONENTS
Clear Audio
Description
The Clear Audio component simply resets all audio streams. You can use this as a panic option if your
schematic uses feedback that might spiral out of control. It is also needed in some occasions to clear
the audio buffers when changing settings or presets.
Connectors
- 79 -
CHAPTER 2
Clip
Description
When you draw onto a View you draw inside a region called the Clipping Area. By default the clipping
area of a View is defined by the bounding area of the module panel to which it applies.
The clipping area can be changed by applying one or more Clip components in sequence. Each Clip
modifies the current clipping area by applying another area according to a particular clipping mode.
The clipping modes are as follows:
0 Intersect The clipping area becomes the intersection of the current clipping area and the new area
1 Union The clipping area becomes the areas covered by the current area and the new area
2 Complement The clipping area becomes the part of the new area that does not intersect with the current
clipping area
3 Exclude The clipping area becomes the area covered by the current area but not the new area
4 Xor The clipping area becomes the areas covered by the current area or the new area, but not
both
Connectors
- 80 -
COMPONENTS
Colour
Description
This component allows you to define a colour. Click on the central colour swatch to change the current
colour. The standard Windows colour dialog will appear. You can use this to select a colour.
Connectors
- 81 -
CHAPTER 2
Colour Detect
Description
The Colour Detect component finds the areas in an image that match a particular colour.
A colour range in HSV (Hue/Saturation/Value) format is used to define the regions of interest. You
provide a lower and upper HSV. The algorithm will check the H,S and V components of pixels in the
image against the upper and lower ranges for each component. H is in the range 0-360, S and V are in
the range 0-255. An example input would be “360,255,255”.
The MinArea input allows you to specify a threshold for discarding detected areas based on their size.
This input is an area in pixels2.
Connectors
The source image you want Bitmap Processed image showing Bitmap
to process the detected areas
- 82 -
COMPONENTS
Colour Dialog
Description
This component allows you to launch the standard Windows colour dialog and use it to get colour
selections from users. You can supply an alpha blend value so that the returned colour is modified to
have that value. You can also specify the default colour that the dialog shows when launched.
Connectors
- 83 -
CHAPTER 2
Colour Matrix
Description
This component creates a Colour Matrix which you can use for performing colour transformations on
bitmaps. The matrix itself is a 5x5 floating point matrix and is supplied by a comma separated string of
values. The best way to define a colour matrix is to use a Text component as shown below.
Connectors
Trigger to parse the supplied Trigger Whether the matrix was Boolean
data and create the matrix created
- 84 -
COMPONENTS
Description
The Colour Matrix Set component allows you to set the value for a particular entry in the matrix.
Connectors
Colour matrix to change Colour Matrix The modified colour matrix Colour Matrix
- 85 -
CHAPTER 2
Colour to HSV
Description
The Colour to HSV component converts a colour to Hue, Saturation and Value components.
Connectors
- 86 -
COMPONENTS
Colour to Int
Description
The Colour to Int component splits a colour into Alpha Transparency, Red, Green and Blue
components.
Connectors
- 87 -
CHAPTER 2
COM Port
Description
The COM Port component allows you to send and receive messages through a specified COM port.
Having specified the characteristics of the Port you need to send a trigger to the Open input. The Open
output will respond with True if this was a success. Any errors are reported through the Log output so
long as you have the Log input set to true.
Data is sent as strings. Data is received as complete strings only if you specify a terminator. The
terminator needs to be an ASCII code. So for example, specify zero for null terminated strings or 16 to
use carriage return.
If no terminator is specified then the component will deliver received data one byte at a time. If the Hex
input is set to True then this will be a two character hex code, otherwise it will be a single character.
You may find it useful to store this data in a String Queue for post processing.
- 88 -
COMPONENTS
Connectors
Index of the COM port you Int Whether the COM port was Boolean
want to use. So 1 = COM1 opened successfully.
and so on.
Baud rate. If not specified Int Data received in from the String
then 9600 is used COM port
Stop bits (0 for 1, 1 for 1.5 Int Trigger when data has been Trigger
and 2 for 2). Defaults to 1 successfully sent through
stop bit. the COMport
Byte size, the number of bits Int Array of port numbers that Int Array
in each byte sent. If not are available on the host PC
specified then 8bits are
used.
Close the COM port Trigger The size of the send buffer Int
in bytes
- 89 -
CHAPTER 2
debugging.
- 90 -
COMPONENTS
Cos
Description
Connectors
- 91 -
CHAPTER 2
Cos Inverse
Description
Standard trigonometric Inverse Cosine function with radians as the output units.
Connectors
- 92 -
COMPONENTS
Cosh
Description
Connectors
- 93 -
CHAPTER 2
Counter
Description
The Counter component is a simple counter that increments in unit steps from zero every time the Inc
input is triggered. You can reset the counter to zero by triggering the Reset input.
Connectors
- 94 -
COMPONENTS
Counter Advanced
Description
This is a more advanced version of the simple Counter component. You set a Minimum and Maximum
limit for the counter and also a place to start. The type input determines how to count:
0 Up The counter starts from the minimum value, counts up to the maximum and then stops
1 Down The counter starts from the maximum value, counts down to the minimum and then stops
2 Up/Down The counter starts from the minimum value, counts up to the maximum and then counts
back down again. The counting continues cycling between the two limits in this way.
- 95 -
CHAPTER 2
De-zipper
Description
The De-zipper component is used for making smooth transitions between float values when feeding
them into a stream section.
For example, say you have a knob connected to a stream multiplier for attenuating an audio signal. As
you turn the knob the floating point value changes in steps over time. This stepping can be heard as
background noise called zipper noise.
The De-zipper component removes zipper noise by applying a simple low-pass filter to input float
values.
Connectors
- 96 -
COMPONENTS
Decibel
Description
Connectors
- 97 -
CHAPTER 2
Delay
Description
The Delay primitive buffers incoming data and delays the output by the number of samples given in the
integer input.
The delay length is limited to 262144 samples (just less than 6 seconds at 44.1 kHz). Longer delays
can be implemented using the Code component.
Note that there is a minimum delay of 1 sample so even if the Delay input is zero there will be a single
sample delay.
Connectors
- 98 -
COMPONENTS
Description
The Delay by One Sample primitive buffers the incoming data for one sample duration before sending
it to the output.
Connectors
- 99 -
CHAPTER 2
Delay Compensation
Description
This primitive allows you to send delay compensation to a host in an exported plugin. In line with the
VST SDK, the delay time is expressed as a number of samples. You should only use this component
once per plugin.
Connectors
- 100 -
COMPONENTS
Digital IO Claw
Description
This component works in conjunction with the FlowPaw component and allows you to use one of the
claws on your FlowPaw for extended digital I/O
So this doesn't use a click board. Instead it allows you to use the pins on the claw socket as digital
inputs and outputs.
The top 3 pins on the left of the claw socket become 3 digital inputs (whose values are shown at the 3
outputs on the component). The pins are AN/PC0, RST/PA8 and CS/PE7.
The top 4 pins on the right of the claw socket become 4 digital outputs (whose values are controled by
the 4 inputs on the component). The pins are PE6/PWM, PC13/INT, PA3/RX and PA2/TX.
Connectors
- 101 -
CHAPTER 2
Direct Sound In
Description
Microsoft's DirectSound is a digital audio protocol specified which provides the interface between
applications and the sound card. The DirectSound In primitive provides a mono connection for the Left
and Right input channels of the sound devices on your computer.
The Direct Sound In and ASIO In components provide the only way to receive audio signals from an
external source (via inputs on your sound card). Note that only one Direct Sound In component is
allowed in your schematic.
Connectors
Other Features
The body of the component displays which input device is currently being used. All devices supporting
the DirectSound protocol are listed so to select a different one just click on it.
To deselect a device (and therefore switch Direct Sound input off) simply click on it again.
- 102 -
COMPONENTS
Description
You can use the Direct Sound In Devices component to find out how many Direct Sound input devices
there are on the system you're running on. The first output tells you how many devices there are and
the second output gives you a list of device names.
This component can be used used to provide information for GUI based selection controls that select
the input device.
Connectors
- 103 -
CHAPTER 2
Description
The Direct Sound In Select primitive allows you to select an Direct Sound input device. It overrides
whatever you have selected on the DirectSound In component.
This component can be used to build GUI components that control which Direct Sound input device is
selected.
Connectors
- 104 -
COMPONENTS
Description
Microsoft's DirectSound is a digital audio protocol specified which provides the interface between
applications and the sound card. The DirectSound Out primitive provides a mono connection for the
Left and Right channels of the sound devices on your computer.
The Direct Sound Out and ASIO Out components provide the only way to send audio signals to your
sound card. You therefore must have at least one of these connected up to your schematic if you want
to hear any sound. Note that only one Direct Sound Out component is allowed in your schematic.
Connectors
Other Features
The body of the component displays which output device is currently being used. All devices
supporting the DirectSound protocol are listed so to select a different one just click on it.
To deselect a device (and therefore switch Direct Sound output off) simply click on it again.
- 105 -
CHAPTER 2
Divide
Description
This component divides the first (top) value by the second one.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints and Float/Int arrays. You can right-click on the connectors at any time to change
the type.
Connectors
Input 2 Template
- 106 -
COMPONENTS
Dll
Description
There is a whole chapter dedicated to this component and how to use it in the FlowStone User Guide.
Please see that guide for more information.
The Dll and Func inputs are for the path to the dll and the name of the function you want to call. The
Embed input determines whether the dll is left external to the software or whether it is to be embedded
into the component.
The 3 boolean outputs will indicate whether the inputs that lie opposite them have succeeded. So the
first output will be true if the dll was found, the second will be true if the function was found within the
dll and the third will be true if the dll can be successfully embedded into the component (some dlls
can't be embedded because they depend on other dlls – more on that later).
The Reset input disconnects the software from the dll. This is useful if you want to make changes to
your dll and then retry them in your schematic without having to close it. Note that all DLL components
that use the dll will be disconnected because otherwise the dll would remain locked and you wouldn't
be able to rebuild it.
Finally the Exec inputs allow you to call the function in the dll. Two inputs are provided depending on
whether you want to execute the call based on a green data trigger or a Ruby event.
- 107 -
CHAPTER 2
Connectors
Path to the dll String Whether the dll was found Boolean
Name of function to call in dll String Whether the function was Boolean
found in the dll
Whether to embed the dll in Boolean Whether the dll is embedded Boolean
the component or leave it in the component
external
- 108 -
COMPONENTS
DMX
Description
The DMX component allows you to communicate with connected lighting and effects devices using the
DMX512 standard.
You supply the id of the DMX device that you want to connect to at the Device input. You can leave
this blank if you only have one device attached.
Trigger the Open input to open communications. The State output will change to indicate the result
(either “Connected”, “Not Connected” or “Not Found or In Use”).
Data is sent as a hex string which can be a maximum of 512 bytes so that's 1024 characters. Attach a
string of hex to the Data input and then trigger the Send input to send the data.
Connectors
- 109 -
CHAPTER 2
- 110 -
COMPONENTS
Description
This component converts Double Stream values to the nearest integer value.
Double Stream is similar to standard Float Stream except that it works at double the precision. It is
particularly useful for counters.
Connectors
- 111 -
CHAPTER 2
Description
Double Stream is similar to standard Float Stream except that it works at double the precision. It is
particularly useful for counters.
Connectors
- 112 -
COMPONENTS
Description
Double Stream is similar to standard Float Stream except that it works at double the precision. It is
particularly useful for counters.
Connectors
- 113 -
CHAPTER 2
Description
This component subtracts two Double Stream values from one another.
Double Stream is similar to standard Float Stream except that it works at double the precision. It is
particularly useful for counters.
Connectors
- 114 -
COMPONENTS
Double to Stream
Description
Double Stream is similar to standard Float Stream except that it works at double the precision. It is
particularly useful for counters.
Connectors
- 115 -
CHAPTER 2
Draw Loop
Description
The Draw Loop component runs a loop between two float values causing a draw at the View output at
each stage. You can use this to draw several similar items in one go. For example, you can draw a list
of strings using the current loop value as an input to change position. The Step LFO module in the
toolbox uses this to draw the bars for display.
Connectors
Start value for the loop Float Current loop value Float
- 116 -
COMPONENTS
Draw to Bitmap
Description
This component allows you to draw onto a bitmap. By connecting GUI components to the View output
you can draw onto a copy of a source bitmap and get the result at the Bitmap output.
Connectors
The grid step to use when Float View that represents the View
drawing onto the bitmap bitmap canvass. Connect
GUI components here
- 117 -
CHAPTER 2
Description
The Drop List Control defines a drop list of selectable values. The drop-list is displayed when you send
a trigger to the Open input. The drop-list closes when you select an item from the list.
You can decide whether to check an item in the list, usually to show the current selection. You can
also choose the style of the list when there are too many items to show vertically on the screen. The
default (if you leave the style blank) is “AutoCol” this will split the list into vertical columns. You can
also specify the exact number of items per column manually by using a number for the style.
The other option for style is “Scroll” - this will maintain a single column but with scroll buttons at either
end to scroll through the list.
For a good example of how the Drop List control works have a look inside the Selector control module
in the toolbox.
Connectors
View on which to display the View The last selected list item String
list when it opens
The desired x-coordinate of Float The index of the selected list Int
the top-left corner of the list item
when it is opened
- 118 -
COMPONENTS
- 119 -
CHAPTER 2
DSP Code
Description
The DSP Code component allows you to write algorithms using a small set of instructions and use it in
your schematic. There are special commands for creating inputs and outputs so that you can connect
the Assembler component to other components.
There is a whole chapter dedicated to the DSP Code component in the main user guide.
Connectors
- 120 -
COMPONENTS
Edit Control
Description
Creates an edit control on a view. You can define the size, position, font, text and background colours.
You can also specify whether the edit control is single line (for input fields) or multiline (for entering text
with line breaks).
Connectors
View to display the edit View The same View as the input, View
control on but anything connected here
is drawn on top
Area defining the position Area The string defined by the String
and size of the edit control control
Font to use for the text Font Flag showing True when the Boolean
control is in edit mode and
False otherwise
- 121 -
CHAPTER 2
- 122 -
COMPONENTS
Ellipse
Description
Connectors
View to display the ellipse View The same View as the input, View
on but anything connected here
is drawn on top
- 123 -
CHAPTER 2
Envelope Control
Description
The envelope control component is used for creating your own custom envelopes. The key to this is
the stage output which tells you what the voice is doing. The stages are:
If you have the Hold input set to true the voice will hold after note off until you send a TRUE value to
the End input at which point the voice will be deleted.
So just running through it: transition to stage 1 tells you to (re)start the envelope and you continue
executing until the stage moves to 4 (if Hold is true). At this point you execute the release part of your
envelope. When complete send a TRUE value to the End input.
Another benefit of this component is that it allows you to hard sync automatically without having to
connect to the retrigger from the MIDI to Poly module. This is exactly what happens in the Wave
Player module to make the wave restart from the beginning on retrigger.
Connectors
- 124 -
COMPONENTS
Equals
Description
This component determines whether the two input values are equivalent and sends a True or False
result to the output.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings and Float/Int/String arrays. You can right-click on the connectors at any
time to change the type.
Connectors
- 125 -
CHAPTER 2
Description
Use this in an exported exe to set the default background colour. This colour is also used for areas
outside of the main GUI when running in full screen mode
Connectors
- 126 -
COMPONENTS
Description
Use this in an exported exe to toggle between full screen and windowed modes . This could be linked
to a button on the GUI or in response to some outside event or timer.
Connectors
- 127 -
CHAPTER 2
EXE Quit
Description
Use this in an exported exe to close the application. This could be a button on the GUI or in response
to some outside event or timer.
Connectors
- 128 -
COMPONENTS
EXE Zoom
Description
Use this in an exported exe to set the zoom level. You may want to have a fixed level or change in
response to some user input.
You can only pick from discrete zoom levels. The options are as follows:
Connectors
- 129 -
CHAPTER 2
FFT
Description
This component performs a fast fourier transform using arrays of Real and Imaginary numbers.
Connectors
Array of Real parts Float Array Array of transformed Real Float Array
parts
- 130 -
COMPONENTS
File Dialog
Description
This component allows you to display the standard Windows file dialog box. You can choose whether
the dialog is for saving or loading. You also have access to file filters and extensions.
The File Filters input is used to determine which file types to display in the dialog. Each filter is made
from two strings. The first describes the filter. For example “Text Files (*.txt)”, you can use whatever
description you like. The second string is the file extension and this must be of the format “*.extension”.
The two strings are separated by a vertical bar | . You can have multiple extensions but these must be
separated by a semicolon.
You can also have multiple filters and these must be separated by a vertical bar |. The completed filter
specification must be terminated with a double vertical line ||.
Examples
- 131 -
CHAPTER 2
Connectors
Trigger to open dialog Trigger Path to the selected file (if String
any)
- 132 -
COMPONENTS
Filled Ellipse
Description
Connectors
View to display the ellipse View The same View as the input, View
on but anything connected here
is drawn on top
- 133 -
CHAPTER 2
Filled Rectangle
Description
Connectors
View to display the rectangle View The same View as the input, View
on but anything connected here
is drawn on top
- 134 -
COMPONENTS
Description
Draws a filled round rectangle on a View, that is a rectangle with rounded corners.
Connectors
View to display the rectangle View The same View as the input, View
on but anything connected here
is drawn on top
- 135 -
CHAPTER 2
Filter Coefficients
Description
Calculates the coefficients used for a low-pass biquad IIR filter using 2 poles, 2 zeros and 12dB per
octave from the cutoff frequency and resonance. Use this in the Biquad Filter Coeff component.
Connectors
a2 Stream
b1 Stream
b2 Stream
- 136 -
COMPONENTS
Find Files
Description
The Find Files component will look for files matching a certain specification inside a folder on your hard
disk. The Filter input specifies the folder followed by a filename. The filename can contain the *
character to specify a wildcard in which case multiple matching files may be found.
Example Filters
The component will return an array of filenames that match the filter. The number of files found is also
given together with a trigger when the operation is complete.
Connectors
Filter specifying what file(s) String Array of filenames that String Array
to look for match the filter
- 137 -
CHAPTER 2
Float
Description
The Float component allows you to enter and view floating point data. To enter a value just click on the
main body of the component and type it in. Press Return, Tab or just click away to finish editing.
You can also change the value using the scroll strip to the right of the component. To use the scroll
strip click on it and hold the mouse down. Keeping the mouse down, move up to increase the value
and move down to decrease the value.
The increment is proportional to the amount you move your mouse to the left or right of the scroll strip.
Moving to the left decreases the increment, moving to the right increases the increment. To maintain
the current increment independent of the horizontal position of the mouse hold SHIFT as you move. To
move in round number intervals hold CTRL (eg 1000, 100, 10, 1, 0.1, 0.01 etc. depending on the
current increments size).
You can copy and paste data using the standard accelerator key combinations (CTRL+C,X and V).
- 138 -
COMPONENTS
You can also change the type by right-clicking on the input or output. A pop-up menu will appear as
shown below.
Connectors
- 139 -
CHAPTER 2
Float Abs
Description
This component calculates the absolute value of the input or in other words the magnitude ignoring the
sign.
Connectors
- 140 -
COMPONENTS
Float Array
Description
The Float Array component creates an array of floating point numbers by setting, inserting and deleting
individual elements in the array. You define the index of the element you want to refer to and if
needed the value you want to set or insert at that index. The array will resize automatically to
accommodate elements set or inserted at indexes higher than the current size of the array.
Connectors
The reference index used for Int Trigger sent when the array Trigger
set, insert and delete has been changed
Set the value at the index Trigger The number of array entries Int
- 141 -
CHAPTER 2
Description
The Float Array Abs component will replace each value in a float array with its absolute value .
Connectors
The source array Float Array Array of absolute values Float Array
- 142 -
COMPONENTS
Description
The Float Array Draw component is used when you have a mouse drag operation that you need to
map onto a float array. The advantage it has over using just a standard float array is that it interpolates
between values when you are dragging. Without such interpolation you can get ‘missed’ points during
fast drags as the mouse drag resolution decreases.
Connectors
Number of points in the float Int The float array Float Array
array
- 143 -
CHAPTER 2
Description
The Float Array Get At component extracts a particular entry from a Float Array.
Connectors
The source array of floating Float Array The number at the given Float
point numbers index
The index to get the value Int Trigger sent when the value Trigger
for has been extracted
- 144 -
COMPONENTS
Description
This component allows you to up or down sample a float array to an alternative size.
Connectors
Source Float Array Float Array Resampled Float Array Float Array
- 145 -
CHAPTER 2
Description
When a trigger is received this component will take a sample of the float array and hold it at the output
until the next trigger is received.
Connectors
Source Float Array Float Array Last held sample of the input Float Array
Float Array
- 146 -
COMPONENTS
Description
This component splits off a section of a Float Array. The section is defined by a start point and a
section size.
Connectors
Source Float Array Float Array Section of Float Array Float Array
- 147 -
CHAPTER 2
Description
The Float Array to Mem component converts an array of floating point numbers to a memory buffer.
This can then be read at sampling rate by the Wave Read component.
Connectors
- 148 -
COMPONENTS
Description
Creates a Poly signal which consists of values extracted from a float array. The values are extracted
using a PolyInt signal as an index into the array.
Connectors
Array of floats to use for Float Array Generated poly signal Poly
generating the Poly signal
- 149 -
CHAPTER 2
Float Inverse
Description
This component calculates the inverse sign of the input value, effectively it multiplies the input by -1.
Connectors
- 150 -
COMPONENTS
Float Invert
Description
This component inverts the input value, effectively dividing the input into 1.
Connectors
- 151 -
CHAPTER 2
Float Power
Description
The Float Power primitive calculates the result of the first input raised to the power of the second input.
Connectors
- 152 -
COMPONENTS
Float Queue
Description
The Float Queue component stores float values in a queue. Values are pushed in and popped out on a
first in, first out basis (FIFO).
You can get the queue in Float Array form from the third output. The array contains items in the order
they would be popped out – so the first item is at the front of the queue, the second item is next and so
on.
Connectors
Trigger to pop the next Trigger The queue as a float array Float Array
number off the queue
- 153 -
CHAPTER 2
Float Stack
Description
The Float Stack component stores float values in a stack. Values are pushed in and popped out on a
last in, first out basis (LIFO).
You can get the stack in Float Array form from the third output. The array contains items in the order
they would be popped out – so the first item is at the top of the stack, the second item is next and so
on.
Connectors
Next number to be pushed Float The number at the top of the Float
onto the stack stack
- 154 -
COMPONENTS
Float to Area
Description
The Float to Area component constructs an Area from X, Y, Width and Height components.
Connectors
Y component Float
- 155 -
CHAPTER 2
FlowBoard
Description
This primitive allows you to send and receive data to and from the DSP Robotics FlowBoard DAQ.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
The board has 16 digital outputs, 16 digital inputs and 8 analog inputs. These are mirrored on the
component. The 16 boolean inputs will send data out through the 16 digital outputs. The 8 integer
outputs receive data from the 8 analog inputs. The 16 boolean outputs receive data from the 16 digital
inputs.
- 156 -
COMPONENTS
Connectors
- 157 -
CHAPTER 2
FlowBoard GSM
Description
This primitive allows you to control a FlowBoard GSM Board. The GSM Board hardware must be
connected to the Modem connector on your FlowBoard. In Flowstone you then need a FlowBoard
component and a FlowBoard GSM component in your schematic. You then need to link these
components together by connecting from the FlowBoard output on the FlowBoard component (the very
last output) to the FlowBoard input on the FlowBoard GSM component (the very first one).
Once the components are connected you then need to start the FlowBoard component by sending a
trigger to the first input. The 'On' output on the FlowBoard component will return True if a connection
has been established (False otherwise). The Board output on the FlowBoard GSM component will
return 1 if the FlowBoard is detected and 2 if both the FlowBoard and the GSM Board are detected.
Signal strength is shown at the Signal output. This is in the range 0-30. A value of -1 is output if the
board is searching for the network or if the board is not connected.
To send a message you need to provide message text and a phone number at the Message and
Number inputs. Trigger the Send input to send the message.
The Status output indicates the message send state. A value of 0 indicates that the last message has
been sent successfully. A value of 1 indicates sending in progress. A value of 2 is output if the last
message failed to send.
The Count output shows how many messages are waiting to be sent (including any message currently
being sent).
Received messages will automatically appear at the Messages and Numbers outputs. These two
string arrays are aligned such that the first number corresponds to the first message and so on.
You can use the Pop input to pop the oldest message off the top of the arrays. The Clear input will
clear all received messages.
- 158 -
COMPONENTS
Connectors
The text for the message String The network signal strength. Int
you want to send (160 This is in the range 0-30. A
characters max) value of -1 indicates
searching for network or no
connection
The telephone number for String The current send status. Int
the recipient of the message 0=last message succeeded,
1=sending in progress.
2=last message failed to
send.
- 159 -
CHAPTER 2
FlowPaw
Description
This primitive allows you to connect to a FlowPaw board that's attached to your PC.
Trigger the Start input to connect. The 'On' output will be set to true if the connection was made
successfully.
If you have more than one FlowPaw board attached then you need to specify which one you want to
connect to at the 'Id' input.
There are two ways to identify a FlowBoard. The easiest is to use a zero based index. So with two
boards connected, '0' will identify the first one and '1' will identify the second.
If you want to be absolutely certain of the board that you're connecting to then you should use the 24
character unique board id. This id is the first item in the string returned at the 'Info' output when the
board is connected. When you first get a FlowPaw board it's worth connecting it on its own and then
noting down the Id for future uses such as this.
The 'Info' output also provides you with the firmware version for the board and the number of click
boards that are supported.
All the other inputs and outputs are for communicating with the board – either setting servos or LEDs
or reading button presses or digital and analog inputs.
- 160 -
COMPONENTS
The four Claw outputs are for connecting components to handle the different Click Boards that could
be attached to each claw. Each Click Board has a corresponding component and by connecting the
FlowPaw input on that component to the Claw output which matches the arrangement on the physical
board you can then access the features of the click board.
There are certain situations under which the board may stop communicating with FlowStone. If this
happens the FlowPaw component will show a red warning message in the bottom-left corner.
If you click the message a dialog box appears with more information about the problem.
To rectify the situation, usually all you need to do is press the reset button on the board and then
trigger the Start input on the FlowPaw to connect again.
Connectors
LED1-LED4 switch the state Boolean B1-B4 will change from Boolean
of the four LEDs on the False to True when the
board. corresponding button is
pressed.
S0-S7 set the positions for Int A0-A3 show the readings at Int
the 8 servo outputs. Range the four analog input pins.
is 0-999.
Set the servo speed (0-99) Int D0-D3 show the states of Boolean
or you can use 100 to the four digital input pins.
engage Rover Mode which
changes servo outputs 3,4,5
& 6 to PWM.
- 161 -
CHAPTER 2
Font
Description
Creates a Font from a typeface, font size and style. The typeface is the name of the font face e.g. Arial
or Tahoma. Size is the height of the text in grid squares (it is not a point size).
Style can be any combination of the following strings (in any order):
Examples
You can leave the style parameter out and a regular style will be assumed.
Connectors
- 162 -
COMPONENTS
Format String
Description
The Format String primitive applies standard C string formatting to a numeric string input. This is
particularly useful for making numeric data conform to user interface requirements such as displaying
a fixed number of decimal places.
The value input has String type but should be connected to either an Int or Float for the formatting to
work correctly.
http://msdn.microsoft.com/en-us/library/kwwtf9ch(VS.71).aspx
Connectors
The Float or Int that you Float or Int The formatted string String
want to format
- 163 -
CHAPTER 2
Frame Sync
Description
This Frame Sync component sends an integer value precisely at the time each buffer of audio is
requested. The integer value is the number of samples that has been requested for the buffer.
For full details about how to use this see the section on Frames in the Ruby Component chapter of the
main user guide.
Connectors
- 164 -
COMPONENTS
Frame to Mono
Description
This Frame to Mono component converts a Frame of samples back to Mono. It should be used in
conjunction with the Mono to Frame component in order to process Mono data via the Ruby
component.
It can also be used with the Frame Sync component. The Frame Sync will tell your Ruby component
when to send a frame and how many samples to send so that you stay exactly in sync with the Mono
stream.
For more information about this see the section on Frames in the Ruby Component chapter of the
main user guide.
Connectors
- 165 -
CHAPTER 2
Full Screen
Description
This primitive is only used for exported exes and allows you to control full screen mode from the front
panel by connecting a GUI component like a toggle button to the trigger input.
Connectors
- 166 -
COMPONENTS
Get Pixel
Description
Connectors
- 167 -
CHAPTER 2
Goal Progress
Description
This component works with one or more Teaching Goal components to provide a mechanism for
teachers to set goals within a schematic and then record how a student progresses through them.
You can have only one Goal Progress component per schematic. By adding Teaching Goal
components you can create targets that when triggered will report back to the Goal Progress with the
time taken to complete.
The Goals output tells you how many goals have been set for the schematic ie. How many Teaching
Goal components the schematic contains.
The Complete output shows how many of the goals have been achieved.
The Results output has a formatted string showing the result for each goal including the completion
state and the time taken to reach that state.
Connectors
- 168 -
COMPONENTS
- 169 -
CHAPTER 2
Graph Dots
Description
Draws a set of points using a dot for each point. The Float Array input supplies the y-coordinates.
These are assumed to be in the range 0 to 1 ( –1 to 1 if the graph is centred on zero). This means that
you may need to use the Norm component if you want to make sure that your values are all visible.
The x-coordinates are automatically generated and are equally spaced across the horizontal axis.
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 170 -
COMPONENTS
Graph FFT
Description
The Graph FFT primitive performs a Fast Fourier Transform (FFT) on an array of float data. The
outputs are the magnitude and phase outputs from the FFT calculation.
Connectors
Source data (usually from a Float Array Magnitude component of the Float Array
wave file or a snapshot of a calculation
signal)
- 171 -
CHAPTER 2
Graph Lines
Description
Draws a line through a set of points. The Float Array input supplies the y-coordinates. These are
assumed to be in the range 0 to 1 ( –1 to 1 if the graph is centred on zero). This means that you may
need to use the Norm component if you want to make sure that your values are all visible. The x-
coordinates are automatically generated and are equally spaced across the horizontal axis unless you
set the Log input to True in which case the x-coordinates will be logged.
By default the line drawn through the points is made from straight line segments. You can also choose
to draw a best fit curve through the points by setting the Curve input to True.
- 172 -
COMPONENTS
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 173 -
CHAPTER 2
Description
The Graph to Point Array component creates an array of points from two float arrays. Currently the
only component that uses a Point Array is the Point Array Lines component and so the only use of this
component is in creating custom graphs.
Connectors
- 174 -
COMPONENTS
Greater Than
Description
This component compares the two inputs and returns a Boolean based on whether the first input is
greater than the second input.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings and Float/Int/String arrays. You can right-click on the connectors at any
time to change the type.
Connectors
Input 2 Template
- 175 -
CHAPTER 2
Description
This component compares the two inputs and returns a Boolean based on whether the first input is
greater than or equal to the second input.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings and Float/Int/String arrays. You can right-click on the connectors at any
time to change the type.
Connectors
Input 2 Template
- 176 -
COMPONENTS
Grid to Pixel
Description
The Grid to Pixel components convert values in Grid Squares to values in Pixels. There are two
versions, one for Floats and one for Areas.
Connectors
Float or Area in grid square Float/Area Float or Area in pixel units Float/Area
units
- 177 -
CHAPTER 2
Gyro Claw
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from a Gyro click board which is attached to one of the claws on your FlowPaw.
Connectors
- 178 -
COMPONENTS
Description
The Haar Face Detect component uses the Haar algorithm to find a face in an image.
The component requires a Haar cascade which is an XML file that defines the classification criteria
used in the detection process. You can download such files from the DSP Robotics support area.
Optional input parameters include a threshold for feature size, whether to apply Canny edge detection
pruning, whether to look for a single object and an option to perform only a rough calculation. All of
these serve to speed up the detection process.
Connectors
The source image you want Bitmap The bounding box of the Area
to process largest detected face
- 179 -
CHAPTER 2
Description
Gets the serial number of the first hard disk attached to the host PC.
Connectors
Trigger to get the serial Trigger Serial number of hard disk String
number
- 180 -
COMPONENTS
Hex to Binary
Description
Converts a string of hex to a string of binary. Each byte of hex is converted to 8 bit binary.
Connectors
- 181 -
CHAPTER 2
Hex to Int
Description
Connectors
- 182 -
COMPONENTS
Hex to String
Description
Converts a string of hex to a string of characters. Each byte of hex is converted to an Ascii character.
For example, the hex string “68656C6C6F” is converted to the character string “hello”.
Connectors
- 183 -
CHAPTER 2
HID
Description
The HID component allows you to connect to any HID device that is attached to your PC.
The three String Array outputs (Devs, Mfrs and Conns) will give you the device names, manufacturers
and connection strings respectively for each device that you have connected.
Once you have identified the device from these lists, note down its position and this is the index that
you should use at the Idx input.
Trigger the Start input to connect to the device. The On output will tell you whether connection has
been established or not.
Data is sent as a hex string which can be a maximum of 64 bytes so that's 128 characters. Attach a
string of hex to the Data input and then trigger the Send input to send the data.
Any data received back from the device will arrive at the In output.
- 184 -
COMPONENTS
Connectors
Index of the device you want Int Whether a connection has Boolean
to connect to as it appears in been established
the device lists.
Hex string of data to be sent String The connection strings for String Array
(max 128 characters ie. 64 each connected device
bytes)
Trigger to send the data. Trigger Any data that has been String
received
- 185 -
CHAPTER 2
HSV to Colour
Description
The HSV to Colour component creates a colour from Hue, Saturation and Value components. You can
choose whether to specify the HSV as a comma separated string or as separate integer components.
Connectors
- 186 -
COMPONENTS
HTTP Post
Description
The HTTP Post component allows you to send data to and receive data from a web server using the
HTTP post request method.
You specify the server URL at the URL input – for example, http://www.dsprobotics.com
The Names and Values array inputs allow you to specify the key-value pair data that you want to send
to the page. The first entry in the Names array is paired with the first value in the Values array. So for
example, “forename=Fred&age=30” would have forename and age in the Names array and Fred and
30 in the Values array.
Trigger the Submit input to send the post request. The Ok output will show true if it succeeded. Any
data returned can be accessed from the Data output
Connectors
Name of the page on the String Any data returned from the String
server server
- 187 -
CHAPTER 2
iFFT
Description
This component performs an inverse fast fourier transform on arrays of Real and Imaginary numbers.
Connectors
Array of Real parts Float Array Array of transformed Real Float Array
parts
- 188 -
COMPONENTS
If Then Else
Description
This component implements an if/then/else conditional statement. In a language like C this would be
written as follows:
For this component the If input defines the control variable this could be an int, float or string. You
specify which of these using the Type input (either “int”,”float” or “string”).
The 'Op' input defines the comparison operation, one of “=”,“<=”,”<”,”>' or ”>=”. If left blank then “=” will
be assumed.
The conditions and corresponding 'then outputs' are provided as two string arrays. However, these can
contain ints, floats or strings. Their treatment in the comparison process is determined by the Type
input.
- 189 -
CHAPTER 2
Connectors
The data type to be used, String The result of the comparison String
“int”,”float” or “string”
- 190 -
COMPONENTS
Image Download
Description
This component will download an image from a web server using HTTP GET.
This is useful for accessing web based cameras and such like.
You do is provide a valid URL for the image and then trigger the Download input and the image will be
downloaded and output as a bitmap.
Connectors
URL of the image file you String The downloaded image Bitmap
want to download
- 191 -
CHAPTER 2
Impulse
Description
Generates an impulse signal. This has a value of one as the first sample and zero for all others. Use
this to test the frequency response of a filter.
Connectors
- 192 -
COMPONENTS
Index Selector
Description
The Index Selector component is used to select between a list of string values. You supply these as a
comma separated string or using a Text component. The body of the component changes to show
each string as an option. You can click on these options to select one. The selected string and index
will be sent to the outputs.
The main use of the Index Selector is to provide a mechanism for creating a drop list of options on a
property panel (see the Properties section in the main user guide for more information).
- 193 -
CHAPTER 2
Connectors
- 194 -
COMPONENTS
Indexer
Description
The Indexer allows you to turn a set of trigger inputs into an integer index. It's handy when you have a
set of actions and you want to know which one occurred.
So here we have 3 buttons and we want to be able to translate this into a value that we can use to
identify the button that was pressed.
Connectors
Any number of trigger inputs Trigger Index of the input that was Int
last triggered
- 195 -
CHAPTER 2
Int
Description
The Int component allows you to enter and view integer data. To enter an integer just click on the main
body of the component and type in a number. Press Return, Tab or just click away to finish editing.
You can also change the value using the scroll strip to the right of the component. To use the scroll
strip click on it and hold the mouse down. Keeping the mouse down, move up to increase the value
and move down to decrease the value.
The increment is proportional to the amount you move your mouse to the right of the scroll strip. To
maintain the current increment independent of the horizontal position of the mouse hold SHIFT as you
move. To move in round number intervals hold CTRL (eg 1, 10, 100, 1000 etc. depending on the
current increments size).
You can copy and paste data using the standard accelerator key combinations (CTRL+C,X and V).
- 196 -
COMPONENTS
You can also change the type by right-clicking on the input or output. A pop-up menu will appear as
shown below.
Connectors
- 197 -
CHAPTER 2
Int Abs
Description
This component calculates the absolute value of the input or in other words the magnitude ignoring the
sign.
Connectors
- 198 -
COMPONENTS
Int And
Description
Connectors
- 199 -
CHAPTER 2
Int Array
Description
The Int Array component creates an array of integers by setting, inserting and deleting individual
elements in the array. You define the index of the element you want to refer to and if needed the value
you want to set or insert at that index. The array will resize automatically to accommodate elements
set or inserted at indexes higher than the current size of the array.
Connectors
The reference index used for Int Trigger sent when the array Trigger
set, insert and delete has been changed
Set the value at the index Trigger The number of array entries Int
- 200 -
COMPONENTS
Description
The Int Array Get At component extracts a particular entry from a Int Array.
Connectors
The source array of integers Int Array The number at the given Int
index
The index to get the value Int Trigger sent when the value Trigger
for has been extracted
- 201 -
CHAPTER 2
Description
When a trigger is received this component will take a sample of the int array and hold it at the output
until the next trigger is received.
Connectors
Source Int Array Int Array Last held sample of the input Int Array
Int Array
- 202 -
COMPONENTS
Description
The Int Array to Mem component converts an array of integers to a memory buffer. This can then be
read at sampling rate by the Wave Read component.
Connectors
- 203 -
CHAPTER 2
Int Inverse
Description
This component calculates the inverse sign of the input value, effectively it multiplies the input by -1.
Connectors
- 204 -
COMPONENTS
Int Loop
Description
The Int Loop component cycles a fixed number of times sending a trigger on each iteration. You
specify how many times to iterate (N). By default the loop counter starts at zero and increments in unit
steps but you can start at any integer value you like.
To prevent hanging the loop is automatically limited to a maximum of 1000 iterations. You can bypass
this safety mechanism by setting the No Limit input to True.
Connectors
The start value for the Int Trigger sent on each Trigger
iteration counter iteration
Trigger to start the loop Trigger Trigger sent when all the Trigger
iterations are complete
- 205 -
CHAPTER 2
Int Modulus
Description
The Int Modulus primitive calculates the remainder when the first input is divided by the second input.
Connectors
- 206 -
COMPONENTS
Int Not
Description
This component returns the bitwise NOT equivalent of the input value.
Connectors
- 207 -
CHAPTER 2
Int Or
Description
Connectors
- 208 -
COMPONENTS
Int Queue
Description
The Int Queue component stores int values in a queue. Values are pushed in and popped out on a first
in, first out basis (FIFO).
You can get the queue in Int Array form from the third output. The array contains items in the order
they would be popped out – so the first item is at the front of the queue, the second item is next and so
on.
Connectors
Trigger to pop the next Trigger The queue as an int array Int Array
number off the queue
- 209 -
CHAPTER 2
Description
Shifts the bits in the first input to the left by the number in the second input. This is equivalent to
multiplying the first input by 2 raised to the power of the second input.
Connectors
- 210 -
COMPONENTS
Description
Shifts the bits in the first input to the right by the number in the second input. This is equivalent to
dividing the first input by 2 raised to the power of the second input.
Connectors
- 211 -
CHAPTER 2
Int Stack
Description
The Int Stack component stores int values in a stack. Values are pushed in and popped out on a last
in, first out basis (LIFO).
You can get the stack in Int Array form from the third output. The array contains items in the order they
would be popped out – so the first item is at the top of the stack, the second item is next and so on.
Connectors
Next number to be pushed Float The number at the top of the Int
onto the stack stack
- 212 -
COMPONENTS
Int to Colour
Description
The Int to Colour component creates a colour from an Alpha Transparency, Red, Green and Blue
components.
Connectors
- 213 -
CHAPTER 2
Int to Hex
Description
Connectors
- 214 -
COMPONENTS
Int Transition
Description
The Int Transition component monitors an input value and sends a trigger whenever the value moves
from one ‘From’ value to another ‘To’ value. The monitored input value must be at the ‘From’ value
then change to the ‘To’ when it next changes in order for the transition to be counted.
Connectors
- 215 -
CHAPTER 2
Int XOr
Description
Connectors
- 216 -
COMPONENTS
IR Temp Claw
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from an IR Temp click board which is attached to one of the claws on your FlowPaw.
Connectors
- 217 -
CHAPTER 2
Is Key Pressed
Description
The Is key Pressed component is used to determine whether a particular key is currently pressed. The
key can be specified explicitly by it’s letter or you can use the Virtual Key Code.
For a complete list of virtual key codes see the following link (all codes are in hex and must be
converted to decimal before use):
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
You can also use “CTRL”, “ALT” or “SHIFT” as shortcuts for those keys.
Note that this component does not send a trigger when the state of the key changes, it can only be
used for investigating the current state of a key – this happens whenever you trigger the Check input.
Connectors
Letter or shortcut or virtual String Flag which will read True if Boolean
key code the key is currently pressed
and False otherwise
- 218 -
COMPONENTS
Is Playing
Description
When your VST is used within a host these components will tell you whether the host is playing or not.
There are two versions. The first version will output 1.0 when the host is playing and 0.0 otherwise and
should be used in Poly or Mono sections of your schematic.
The second version will output True when the host is playing and False otherwise. This is useful if you
want to respond to changes in the playing state by performing a one-off calculation or displaying visual
feedback. There are two output connectors, one Boolean for use in triggered sections of schematic
and another Ruby Value connector for use in Ruby components. The Ruby value is sent with precise
timing so if timing is an issue use this one.
Connectors
- 219 -
CHAPTER 2
LabJackU3-HV
Description
This primitive allows you to control and receive data from a LabJack U3-HV data acquisition device.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the address of the board
you want to connect to (the address is described in the U3 user guide).
The board has 16 flexible I/O pins and 4 fixed analog inputs. These are mirrored on the component.
Aside from the fixed analog inputs the I/O can be configured in various different ways to provide
- 220 -
COMPONENTS
analog or digital inputs. If a pin is configured as an input then it will appear as an output connector on
the component so that you can retrieve its value and if it is an output then it will appear as an input
connector on the component so that you can set its value.
Flexible I/O
To set the I/O you need to supply a comma separated string or a newline separated list of strings in a
Text component to the I/O input. Each entry defines the format for a particular I/O pin. The entry starts
with two characters to determine the type and direction: "DI", "DO" or "AI" for digital in, out and analog
in respectively.
In the case of analog it defaults to single ended but you can set the negative channel with a minus
symbol followed by "SE","SP","VR" (single ended, special (0-3.6v or -10/+20v), internal voltage ref) or
the number of the pin you want to have as the negative channel.
To set the I/O you need to trigger the Set input below the I/O String input.
For example:
“DO4, DO5, AI6, AI7-SP, AI8-6” would make pins 4 and 5 digital outputs. Pins 6,7 and 8 would all be
analog inputs with 6 being single ended, 7 using the special 0-3.6v range and 8 using input 6 as a
negative channel.
The U3 has two timers and two counters that you can use. The timers and counters take over the
flexible I/O. You specify a start pin and then depending on the number of timers and counters you use
the pins from this start pin onwards will be used as timers or counters.
You can set the number of counters via the Counters input.
The timers are set using a configuration string. This is similar to the I/O specification in that it's a
comma separated list of parameters (or a newline separated list if you use a Text component).
{number of timers} {clock{/divisor}} {mode timer0} {value timer0} {{mode timer1} {value timer1}}
Clock values can be 4, 12 or 48 MHz and can include a divisor as well. There is also a 1 MHz clock
which must include a divisor. This gives 7 possible clock value strings:
Modes are strings and map onto the U3 modes exactly. They can be one of the following:
- 221 -
CHAPTER 2
Some examples:
“1,48MHz,FREQOUT,128" – a single timer, clock 48MHz using the Frequency Output method
To set the timer and counter configuration trigger the Set unput below the Counters input on the
component.
Because the timers and counters take over some of the flexible I/O pins you should see the outputs on
the component corresponding to those pins change to Integer connectors labeled TIM0, TIM1, CTR0
or CTR1.
Note that when using a clock with a divisor the LabJack U3 only allows you to use 1 counter.
The U3 has two DACs you can set the value of these using the DAC0 and DAC1 inputs on the
component.
You can reset a timer or counter by sending the appropriate index value to the Reset input. Send 1 or
2 to reset the 1st or 2nd timer and 3 or 4 to reset the 1st or 2nd counter.
For more information on the workings of the U3 see the U3 user guide.
- 222 -
COMPONENTS
Connectors
Trigger to set the I/O Trigger 12 x outputs used for the Boolean / Float
FIO and EIO pins that are
setup as inputs on the U3
The start pin for any timers Int 4 x outputs used for the CIO Boolean
or counters pins that are setup as inputs
on the U3
- 223 -
CHAPTER 2
LabJackU3-LV
Description
This primitive allows you to control and receive data from a LabJack U3-LV data acquisition device.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the address of the board
you want to connect to (the address is described in the U3 user guide).
- 224 -
COMPONENTS
The board has 20 flexible I/O pins. These are mirrored on the component. The I/O can be configured in
various different ways to provide analog or digital inputs. If a pin is configured as an input then it will
appear as an output connector on the component so that you can retrieve its value and if it is an output
then it will appear as an input connector on the component so that you can set its value.
Flexible I/O
To set the I/O you need to supply a comma separated string or a newline separated list of strings in a
Text component to the I/O input. Each entry defines the format for a particular I/O pin. The entry starts
with two characters to determine the type and direction: "DI", "DO" or "AI" for digital in, out and analog
in respectively.
In the case of analog it defaults to single ended but you can set the negative channel with a minus
symbol followed by "SE","SP","VR" (single ended, special (0-3.6v or -10/+20v), internal voltage ref) or
the number of the pin you want to have as the negative channel.
To set the I/O you need to trigger the Set input below the I/O String input.
For example:
“DO4, DO5, AI6, AI7-SP, AI8-6” would make pins 4 and 5 digital outputs. Pins 6,7 and 8 would all be
analog inputs with 6 being single ended, 7 using the special 0-3.6v range and 8 using input 6 as a
negative channel.
The U3 has two timers and two counters that you can use. The timers and counters take over the
flexible I/O. You specify a start pin and then depending on the number of timers and counters you use
the pins from this start pin onwards will be used as timers or counters.
You can set the number of counters via the Counters input.
The timers are set using a configuration string. This is similar to the I/O specification in that it's a
comma separated list of parameters (or a newline separated list if you use a Text component).
{number of timers} {clock{/divisor}} {mode timer0} {value timer0} {{mode timer1} {value timer1}}
Clock values can be 4, 12 or 48 MHz and can include a divisor as well. There is also a 1 MHz clock
which must include a divisor. This gives 7 possible clock value strings:
Modes are strings and map onto the U3 modes exactly. They can be one of the following:
- 225 -
CHAPTER 2
Some examples:
“1,48MHz,FREQOUT,128" – a single timer, clock 48MHz using the Frequency Output method
To set the timer and counter configuration trigger the Set unput below the Counters input on the
component.
Because the timers and counters take over some of the flexible I/O pins you should see the outputs on
the component corresponding to those pins change to Integer connectors labeled TIM0, TIM1, CTR0
or CTR1.
Note that when using a clock with a divisor the LabJack U3 only allows you to use 1 counter.
The U3 has two DACs you can set the value of these using the DAC0 and DAC1 inputs on the
component.
You can reset a timer or counter by sending the appropriate index value to the Reset input. Send 1 or
2 to reset the 1st or 2nd timer and 3 or 4 to reset the 1st or 2nd counter.
For more information on the workings of the U3 see the U3 user guide.
- 226 -
COMPONENTS
Connectors
Configuration string to set String 16 x outputs used for the Boolean / Float
the I/O FIO and EIO pins that are
setup as inputs on the U3
Trigger to set the I/O Trigger 4 x outputs used for the CIO Boolean
pins that are setup as inputs
on the U3
- 227 -
CHAPTER 2
Last Switch
Description
The Float Switch component is used to select between two inputs depending on which one changed
last. The most recently changed input will be used to supply the float value to the output.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings, Booleans, Float/Int/String arrays and Colours. You can right-click on the
connectors at any time to change the type.
Connectors
- 228 -
COMPONENTS
Description
This component works in conjunction with the FlowPaw component and allows you to control a 5v
addressable 60 LED strip which is attached to one of the claws on your FlowPaw.
Connect the +5V wire to the positive output of a 5V-3A DC power Supply.
Connect the GND wire to the DC power supply ground output, and also to a GND pin on the FlowPaw.
Connect the Data wire to the PWM output pin of the FlowPaw Claw you want to use.
You can set the colour of the LEDs using the R, G and B inputs. These all take a value in the range
zero up to 255.
The Pattern input allows you to choose from one of the range of dynamic patterns we have built into
the FlowPaw firmware (note that you need firmware version 11 or above to use LED Strips).
Brightness can also be controlled. Again, this is a 0-255 value from off to fully on.
To change any of these settings you must trigger the Send input.
- 229 -
CHAPTER 2
Connectors
- 230 -
COMPONENTS
Less Than
Description
This component compares the two inputs and returns a Boolean based on whether the first input is
less than the second input.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings and Float/Int/String arrays. You can right-click on the connectors at any
time to change the type.
Connectors
Input 2 Template
- 231 -
CHAPTER 2
Description
This component compares the two inputs and returns a Boolean based on whether the first input is
less than or equal to the second input.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings and Float/Int/String arrays. You can right-click on the connectors at any
time to change the type.
Connectors
Input 2 Template
- 232 -
COMPONENTS
Line
Description
Draws a straight line on a View. The line is defined by an Area. The x and y coordinates of the area
define the start of the line and the width and height define a vector offset to the end point. This means
that for some lines you will need to use negative widths and heights.
Connectors
View to display the line on View The same View as the input, View
but anything connected here
is drawn on top
- 233 -
CHAPTER 2
Linear Gradient
Description
The Linear Gradient component draws either an ellipse or a rectangle with a gradient fill effect. This
produces a seamless linear transition between two colours.
- 234 -
COMPONENTS
Connectors
- 235 -
CHAPTER 2
Log10
Description
Connectors
- 236 -
COMPONENTS
MAC Address
Description
Gets the MAC addresses of all network devices attached to the host PC. The addresses are returned
as a comma separated list.
Note that on some systems this component will not return any MAC addresses.
Connectors
- 237 -
CHAPTER 2
Magnitude/Phase to Real/Img
Description
This component converts arrays of Magnitude and Phase to Real and Imaginary parts. This is used
mainly in FFT calculations.
Connectors
Array of Phases (0-2pi) Float Array Array of Imaginary parts Float Array
- 238 -
COMPONENTS
Max
Description
This component compares the two inputs and returns the greater of the two.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints and Float/Int arrays. You can right-click on the connectors at any time to change
the type.
Connectors
Input 2 Template
- 239 -
CHAPTER 2
Description
The Max Float Array component will give you the maximum value in an array of floats together with the
index in the array at which that maximum occurred.
Connectors
Float array to examine Float Array The index at which the Int
maximum occurs
- 240 -
COMPONENTS
Description
This primitive allows you to send and receive data to and from the Measurement Computing Corp.
1208FS data acquisition board.
If you have multiple boards connected to your PC then you should provide the number of the board
you want to connect to at the 'Board' input. This number is assigned by Measurement Computing's
InstaCal application so refer to that to get the board number if you need it.
- 241 -
CHAPTER 2
The board has 16 digital I/O pins and 8 analog inputs. The digital I/O is split into two banks, A and B.
Each bank can be configured as a set of digital inputs or digital outputs.
The analog inputs can be configured as 8 single ended inputs or 4 differential inputs.
To set the I/O configuration you need to supply a string to the I/O input of the component. This should
be a comma separated list of any combination of the following:
For example:
“SE,AI,BO” would use single ended analog, bank A as digital inputs and bank B as digital outputs.
Note that the I/O string only alters what you specify in the list. If you don't specify what bank A does it
will remain as it is – it will not be reset to default settings.
Also note that you need to trigger the Set input in order for changes to take place.
When using differential analog inputs you can set the ranges. To do this use a string formatted as
follows:
R[n]=[type]
Where [n] is a single digit in the range 0-3 representing the analog I/O pin you want to configure
So for example, "R2= BIP5VOLTS" would set analog input pin number 3 (so at index 2) to use the
range +/-5 volts.
These range settings are combined with the other I/O settings as comma separated values as before.
Note that cbw32.dll must be installed on the host system for this component to work. If you have
installed the Measurement Computing drivers then this file should be on your system.
- 242 -
COMPONENTS
Description
This primitive allows you to send and receive data to and from the Measurement Computing Corp.
1608FS data acquisition board.
If you have multiple boards connected to your PC then you should provide the number of the board
you want to connect to at the 'Board' input. This number is assigned by Measurement Computing's
InstaCal application so refer to that to get the board number if you need it.
The board has 8 digital I/O pins and 8 analog inputs. The digital I/O can each be configured
individually as either a digital input or a digital output. The analog inputs are all configured as single
ended.
To set the I/O configuration you need to supply a string to the I/O input of the component. This should
be a comma separated list of any combination of the following:
DIn - set digital I/O pin n to be an input where n is the index of the pin (0-7)
DOn - set digital I/O pin n to be an output where n is the index of the pin (0-7)
- 243 -
CHAPTER 2
For example, “DI2,DO4,DI5” would use pins DIO2 and DIO5 as inputs and pin DIO4 as an output.
Note that the I/O string only alters what you specify in the list. If you don't specify what DIO3 does for
example it will remain as it is – it will not be reset to default settings. Also note that you need to trigger
the Set input in order for changes to take place.
For the analog inputs you can set the ranges. To do this use a string formatted as follows:
Rn=[type]
Where n is a single digit in the range 0-7 representing the analog I/O pin you want to configure and
[type] is one of the following strings:
So for example, "R2= BIP5VOLTS" would set analog input pin CH2 IN to use the range +/-5 volts.
These range settings are combined with the other I/O settings as comma separated values as before.
Note that cbw32.dll must be installed on the host system for this component to work. If you have
installed the Measurement Computing drivers then this file should already be on your system.
Connectors
- 244 -
COMPONENTS
Description
This primitive allows you to send and receive data to and from the Measurement Computing Corp.
USB TEMP board.
If you have multiple boards connected to your PC then you should provide the number of the board
you want to connect to at the 'Board' input. This number is assigned by Measurement Computing's
InstaCal application so refer to that to get the board number if you need it.
The board has 8 digital I/O pins and 8 analog temperature inputs. The digital I/O can each be
configured individually as either a digital input or a digital output.
To set the I/O configuration you need to supply a string to the I/O input of the component. This should
be a comma separated list of any combination of the following:
DIn - set digital I/O pin n to be an input where n is the index of the pin (0-7)
DOn - set digital I/O pin n to be an output where n is the index of the pin (0-7)
For example, “DI2,DO4,DI5” would use pins DIO2 and DIO5 as inputs and pin DIO4 as an output.
- 245 -
CHAPTER 2
Note that the I/O string only alters what you specify in the list. If you don't specify what DIO3 does for
example it will remain as it is – it will not be reset to default settings. Also note that you need to trigger
the Set input in order for changes to take place.
For the analog temperature inputs you can set the scale. To do this use a string formatted as follows:
Svn
Where n is a single digit in the range 0-7 representing the analog I/O pin you want to configure and v
is one of the following: C, F, K or N (Centigrade, Fahrenheit, Kelvin or No scale)
So for example, "SF2" would set analog temperature input C2 to use Fahrenheit.
These scale settings are combined with the other I/O settings as comma separated values as before.
Note that cbw32.dll must be installed on the host system for this component to work. If you have
installed the Measurement Computing drivers then this file should already be on your system.
Connectors
- 246 -
COMPONENTS
Measure Text
Description
This component measures the area that text will occupy when drawn. You supply the text, font and
formatting information together with a maximum bounding rectangle that the text must fit inside. The
component then tells you the area within that boundary which the text will occupy.
Connectors
View to display the text on View The same View as the input, View
but anything connected here
is drawn on top
- 247 -
CHAPTER 2
Mem Address
Description
This component gives you the raw memory address of an attached Mem data buffer. It also gives you
the size of the buffer in bytes.
Connectors
- 248 -
COMPONENTS
Mem Create
Description
This component creates a memory buffer of a particular size. The size is specified in bytes. This
means that if you want to store N floats you’ll need 4*N bytes.
Connectors
- 249 -
CHAPTER 2
Description
This component is useful for extracting raw float data from a wave file either for display or for
manipulation.
Connectors
- 250 -
COMPONENTS
Description
This component converts a memory buffer to arrays of floats by finding the minimum and maximum
values over groups of samples. The size of each group of samples is defined by the Step input. If the
Mem contains mono data then the left and right arrays will return the same data.
This component is useful if you want to draw a wave but don’t want to draw every single sample in the
wave.
Connectors
- 251 -
CHAPTER 2
Message Box
Description
This component displays a Windows message box. You can set the message text, the window title, the
icon and the dialog type. The output is a boolean value indicating whether the OK or Yes button was
pressed.
Connectors
Trigger to open the message Trigger Whether the OK/Yes button Boolean
box was pressed
- 252 -
COMPONENTS
MIDI Aftertouch
Description
This component allows you to extract aftertouch information from MIDI data typically from the pressure
applied to an aftertouch sensitive MIDI controller. Aftertouch is specified as an integer in the range 0-
127 with 127 representing the highest level of aftertouch and zero meaning no aftertouch at all.
Note: this component is actually responding to channel pressure in that it is not responsive to
individual differences in note pressure between different keys and it is responding to MIDI events with
the status byte xC0 to xCF and not those between xA0 and xAF.
Connectors
- 253 -
CHAPTER 2
Description
The MIDI control change primitive extracts control change events for the specified control parameter.
The parameter is specified as an integer value. To find out what control parameters are available
please look them up in the MIDI standard documentation.
Connectors
- 254 -
COMPONENTS
MIDI Event
Description
MIDI data messages are composed of four distinct parts. Each part is an integer value. The parts are
as follows:
The MIDI Event component takes this information and creates a MIDI event message.
Connectors
- 255 -
CHAPTER 2
MIDI In
Description
If you want to use MIDI input from an external source then this is the component you need. Each MIDI
device installed on your PC is displayed as a button on the body of the component. To select or
deselect one of these just click on it.
You can choose to receive input from as many devices as you like. You can also have as many MIDI
In components in your schematic as you like. However, you will not be able to select the same MIDI
device on more than one of these components.
Connectors
- 256 -
COMPONENTS
Other Features
The first device on the MIDI In component is PC Keyboard. This isn’t a device as such but it allows you
to use your PC keyboard as a MIDI input device. This is very handy if you’re on a laptop or if you don’t
have an external MIDI controller.
The PC Keyboard covers 2 consecutive octaves spanning middle C. On a U.S. or U.K. keyboard the
lower octave begins at ‘Z’ with middle C at ‘Q’ and the upper octave ends at ‘I’. All other note
associations are shown in the diagram below.
On other keyboard layouts the key positions are the same although the key names may vary.
- 257 -
CHAPTER 2
MIDI In Devices
Description
This component retrieves the number of MIDI In devices on the host PC together with their names and
their availabilities.
Connectors
- 258 -
COMPONENTS
MIDI In Select
Description
The MIDI In Select component allows you to select a MIDI In device from within a schematic.
Connectors
The index of the device you Int MIDI data from the selected MIDI
want to select. The MIDI In device
Devices component returns
an array of device names
which you can refer to to find
the appropriate index.
- 259 -
CHAPTER 2
MIDI Mono
Description
The MIDI Mono primitive generates data that can be used to control a simple mono synth. A more
flexible voice management scheme is available through the Midi To Poly voice management module
and the MIDI to Voices and Voices to Poly primitives. However, the MIDI Mono primitive is still a viable
component to read the number of open note events on a MIDI stream, the frequency of the last played
note or the MIDI note number of the most recent note.
Connectors
- 260 -
COMPONENTS
MIDI Out
Description
The MIDI Out primitive allows you to send MIDI data to an external MIDI device. Each MIDI device
installed on your PC is displayed as a button on the body of the component. To select or deselect one
of these just click on it.
You can choose to send MIDI data to as many devices as you like. You can also have as many MIDI
Out components in your schematic as you like. However, you will not be able to select the same MIDI
device on more than one of these components.
Connectors
- 261 -
CHAPTER 2
Description
This component retrieves the number of MIDI Out devices on the host PC together with their names
and their availabilities.
Connectors
- 262 -
COMPONENTS
Description
The MIDI Out Select component allows you to select a MIDI Out device from within a schematic.
Connectors
MIDI to send to the selected MIDI The index of the currectly Int
device selected device
The index of the device you Int Trigger when the chosen Trigger
want to select. The MIDI Out device is already in use
Devices component returns
an array of device names
which you can refer to to find
the appropriate index.
- 263 -
CHAPTER 2
Description
MIDI Pitch Bend gives the amount of pitch bend as an integer from MIDI data typically from the pitch
bend wheel of a MIDI controller.
Connectors
- 264 -
COMPONENTS
MIDI Splitter
Description
MIDI data messages are composed of four distinct parts. Each part is an integer value. The parts are
as follows:
The MIDI Splitter component extracts this information from MIDI data and sends the results to its four
integer outputs. Note that no triggers are sent from the outputs when they change, instead a single
trigger is sent through the fifth output once all the other outputs have been updated.
Connectors
- 265 -
CHAPTER 2
Description
The MIDI to Multi Voice primitive takes all the functionality of the MIDI to Voices component but
extends it in two ways:
2. It allows you change the characteristics of a voice or voices depending on the note played
As with the MIDI to Voices this component works alongside the Voices to Poly component. You would
always pair these components together when using them in a synth.
How it Works
The MIDI to Multi Voice has 4 int array inputs. These come in two pairs one for note key range and
one for note velocity. For each pair, one array provides the lower value in the range and one provides
the upper value.
The entries in the arrays are indexed from 0 upwards. These indexes define a parameter called a
Voice Tag. When you play a MIDI note the MIDI to Multi Voice compares the note to the key and
velocity range at each index. If the note falls within the defined boundaries then a voice is generated
for that note and that voice is assigned a Voice Tag equal to the value of the index in question.
This is how (1) & (2) above are achieved. If a note matches the range(s) for more than one index then
more than one voice will be generated for that note achieving (1) above.
- 266 -
COMPONENTS
The Voice Tag is passed on to the Voices to Poly where it is accessible as a Poly output. You can use
this in your audio processing to make changes to the sound depending on the tag and this achieves
(2) above.
To show the effect on the voice tag based on these arrays is much easier using some examples.
EXAMPLE 1
LoKey HiKey
0 59
60 127
With this configuration notes up to middle C (0-59) will carry a voice tag of zero and notes at middle C
and beyond (60-127) will carry a voice tag of 1.
EXAMPLE 2
LoVel HiVel
0 31
62 63
63 95
96 127
With this configuration you will get voice tags in the range 0-3 and you can use this to increase the
volume or to vary filter parameters for example.
- 267 -
CHAPTER 2
EXAMPLE 3
0 59 0 63
60 127 0 63
0 59 64 127
60 127 64 127
This time tag 0 will represent low notes with low velocity, tag 1 will represent high notes with low
velocity and tags 2 and 3 will be represent low and high notes with high velocity.
EXAMPLE 4
In all the above cases a single note could only fall within the range(s) for any one index. However, you
don't have to define your key and velocity ranges so that they are mutually exclusive.
0 127 0 127
0 127 0 127
On this occasion any note you play will match the ranges at index 0 and index 1. In this case two
voices will be generated for a single note. This allows you to make some nice effects. For example,
you can detune the voice with tag 1 slightly or apply a different LFO rate to create a thicker layered
sound.
- 268 -
COMPONENTS
EXAMPLE 5
One ideal application of this new component is sample playback. You can now easily trigger different
samples for each key or play a different sample based on velocity.
LoKey HiKey
60 60
61 61
62 62
63 63
Here notes 60, 61, 62 and 63 will map onto voice tags 0,1,2 and 3 and you can use these as indexes
to specify which sample to use in a Wave Array.
As you have probably seen from the examples, you don't have to provide both key and velocity
information. If you leave one set blank then no restrictions will be applied.
If your key and velocity ranges are set up in such a way that a particular note doesn't fit into any of
them then no voices will be generated for that note.
Finally, if you don't specify any key or velocity ranges then every voice will get a tag of zero making
the MIDI to Multi Voice essentially behave the same as the MIDI to Voices.
Voice Mangement
This works in the same way as for the MIDI to Voices. You can define a maximum number of voices
(this is unlimited). When the maximum number of voices are in use the next note played will ‘steal’ one
of the existing voices. Stealing is done on a first in, first out basis.
The Hold Stolen input defines whether notes whose voices are stolen will be held so that, as long as
the stolen notes remains on (i.e. no note off has been received) , they can be reinstated when a free
voice becomes available.
The R-new input determines whether envelopes are re-triggered when a new note steals a voice.
The R-old input determines whether envelopes are re-triggered when a held note is reinstated.
The NoRpt input allows you to choose to reuse the same voice whenever the same note is repeatedly
played instead of repeating the note in a new voice each time (the default behaviour).
NoSus is the same as NoRpt but applies only when MIDI sustain is on.
- 269 -
CHAPTER 2
Connectors
- 270 -
COMPONENTS
MIDI to Voices
Description
The MIDI to Voices primitive component pairs with the Voices to Poly primitive to provide voice
managed data.
Note: Currently there is no reason to use this component on its own, instead you should use the MIDI
to Poly module which combines the MIDI to Voices and Voices to Poly components.
The inputs to the MIDI to Voices primitive define how the voice management works - by this we mean
how the module responds to note messages from the attached MIDI source. You can define a
maximum number of voices (this is unlimited). When the maximum number of voices are in use the
next note played will ‘steal’ one of the existing voices. Stealing is done on a first in, first out basis.
The Hold Stolen input defines whether notes whose voices are stolen will be held so that, as long as
the stolen notes remains on (i.e. no note off has been received) , they can be reinstated when a free
voice becomes available.
The R-new input determines whether envelopes are re-triggered when a new note steals a voice.
The R-old input determines whether envelopes are re-triggered when a held note is reinstated.
The NoRpt input allows you to choose to reuse the same voice whenever the same note is repeatedly
played instead of repeating the note in a new voice each time (the default behaviour).
NoSus is the same as NoRpt but applies only when MIDI sustain is on.
- 271 -
CHAPTER 2
Connectors
- 272 -
COMPONENTS
Min
Description
This component compares the two inputs and returns the lower of the two.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints and Float/Int arrays. You can right-click on the connectors at any time to change
the type.
Connectors
Input 2 Template
- 273 -
CHAPTER 2
Description
This component works out where the minimum value appears in the input array. It also returns the
index of the element in the array that corresponds to that minimum value.
Connectors
The source array Float Array The index of the entry that Int
contains the minimum value
- 274 -
COMPONENTS
Module
Description
Modules are special types of component in that they are defined by their own schematic containing
other components and modules. There are no inputs and outputs by default, you add these yourself by
placing Module Input and Module Output components inside.
For a complete description of how modules work see Chapter 4 of the main user guide.
- 275 -
CHAPTER 2
Module GUI
Description
The Module GUI component (MGUI for short) gives a module a front panel and allows you to use the
low-level GUI components to define the graphics and interaction capabilities.
Note that if you don’t want or need to use the GUI components then you can just use the G button on
the module action panel to add a front panel (see the Front Panel section in Chapter 4 of the main user
guide).
All GUI information is sent through View connectors. These are yellow circles with a V in the middle.
The MGUI has one View output. Anything connected to this will either draw onto the front panel or
handle mouse messages from it.
The two Float outputs can be used to get the size of the front panel if this is needed.
The two float inputs allow you to set the position of the module when it appears in a parent front panel.
Direct placement using front panel editing is usually preferred to explicit placement but this can
sometimes be useful.
If you want to hide the grey module border then you can do this by setting the Border input to False.
Mouse move messages are suppressed by default. By mouse moves we mean movement of the
mouse with no buttons held down. When a button is held we call it a mouse drag and these are not
suppressed.
The reason for suppressing mouse moves is that because of their frequency they use measurable
processing as messages are passed up and down the module hierarchy. Mouse moves are rarely
used and so there is no point in having this extra processing when it isn’t needed. If you do need to
have mouse move handling then set the Mouse input to True.
- 276 -
COMPONENTS
Connectors
Set the x position of the Float Width of the modules front Float
panel in a parent panel panel
Set the y position of the Float Height of the modules front Float
panel in a parent panel panel
- 277 -
CHAPTER 2
Module Input
Description
Place a Module Input primitive inside a module to give the module an input connector. The component
has a single Temple output connector. To change the type either right-click on the connector and
choose a type from the pop-up menu or create a link from the connector to another component and the
template will pick up the type.
For more information on module inputs see the section on Inputs and Outputs in the Modules chapter
(Chapter 4) of the main user guide.
Connectors
- 278 -
COMPONENTS
Module Output
Description
Place a Module Output primitive inside a module to give the module an output connector. The
component has a single Temple input connector. To change the type either right-click on the connector
and choose a type from the pop-up menu or create a link from the connector to another component
and the template will pick up the type.
For more information on module outputs see the section on Inputs and Outputs in the Modules chapter
(Chapter 4) of the main user guide.
Connectors
- 279 -
CHAPTER 2
Description
The Properties GUI component (PGUI for short) gives a module a property panel and allows you to
use the low-level GUI components to define the graphics and interaction capabilities.
Note that if you don’t want or need to use the GUI components then you can just use the P button on
the module action panel to add a front panel (see the Properties section in Chapter 4 of the main user
guide).
All GUI information is sent through View connectors. These are yellow circles with a V in the middle.
The MGUI has one View output. Anything connected to this will either draw onto the property panel or
handle mouse messages from it.
The two Float outputs can be used to get the size of the property panel if this is needed.
The two float inputs allow you to set the position of the property panel when it appears in a parent
property panel. Direct placement using front panel editing is usually preferred to explicit placement but
this can sometimes be useful.
Mouse move messages are suppressed by default. By mouse moves we mean movement of the
mouse with no buttons held down. When a button is held we call it a mouse drag and these are not
suppressed.
The reason for suppressing mouse moves is that because of their frequency they use measurable
processing as messages are passed up and down the module hierarchy. Mouse moves are rarely
used and so there is no point in having this extra processing when it isn’t needed. If you do need to
have mouse move handling then set the Mouse input to True.
- 280 -
COMPONENTS
Connectors
- 281 -
CHAPTER 2
Description
Most modules will have fixed output connectors that you physically link up to other connectors.
However, it is sometimes useful to make a module output wireless. Instead of using a Module Output
component you use a Module Wireless Output component.
The component has a single Temple input connector. To change the type either right-click on the
connector and choose a type from the pop-up menu or create a link from the connector to another
component and the template will pick up the type.
By adding wireless outputs to your module the module becomes a wireless module. The module will
behave In the same way as a Wireless Output component establishing wireless links with matching
Wireless Input components lower down in the module hierarchy. As with Wireless Outputs a match is
determined by the type of connector and the component label.
Wireless modules can be identified by the wireless symbol which appears on the module body. This
will appear grey when no links have been established. However, if one or more Module Wireless
Outputs within the module have established connections with matching Wireless Inputs the wireless
symbol will light up.
For more information on wireless links see the corresponding section in the Components and Links
chapter (Chapter 3) of the main user guide.
- 282 -
COMPONENTS
Connectors
- 283 -
CHAPTER 2
Description
The Mono Boolean Readout allows you to inspect the value of a signal from an output connector that’s
linked into a running mono section. This can be very handy for debugging.
Connectors
- 284 -
COMPONENTS
Mono to Float
Description
The Mono to Float component allows you to take Float samples from a Mono signal. The trigger input
defines when the sample is taken. This is very useful for visually examining the data passing through a
Mono stream.
Connectors
- 285 -
CHAPTER 2
Mono to Frame
Description
This version of the Mono to Frame component captures buffers of samples at the rate they are
processed by the audio engine. Unlike the Mono to Float and Mono to Graph components the Mono to
Frame allows you to capture and process every sample that passes through a Mono stream.
The output is a Ruby Frame object. You can examine or process this using a Ruby component. For
more information about this see the section on Frames in the Ruby Component chapter of the main
user guide.
Connectors
- 286 -
COMPONENTS
Mono to Frame
Description
This version of the Mono to Frame component captures buffers of samples at a rate determined by the
Samples input. The Samples input should be an integer value (a Ruby Fixnum) that specifies the
number of samples to grab.
The output will be the last N samples that passed through the Mono input (where N is the number of
requested samples).
The output value is a Ruby Frame object. You can examine or process this using a Ruby component.
For more information about Frames see the section on Frames in the Ruby Component chapter of the
main user guide.
Connectors
- 287 -
CHAPTER 2
Mono to Graph
Description
The Mono to Graph component allows you to take an array of samples from up to 8 Mono streams.
The trigger input defines when the samples are taken. The number of samples taken is defined at the
NS input. This component is very useful for graphing a mono signal.
There are four versions of the Mono to Graph. If you want to compare one or more signals you need to
use a single Mono to Graph component with multiple inputs. If you use two separate Mono to Graph
components then because the Mono section is calculated constantly, even if you trigger the Get input
from the same source it is very unlikely that you'll get exactly the same snapshot of samples from both
components.
Connectors
Mono signal to take samples Mono Array of samples taken (up Float Array
from (up to 8) to 8)
- 288 -
COMPONENTS
Motion Detect
Description
Motion Detect is a video processing component that locates areas of movement in an image.
Each new image is compared with the frame before and if any pixel differs by more than the Delta
input value then this is registered as movement and stored in a binary image.
These binary images are stored over a period of time defined by the Duration input (Dur). The images
are then faded out with the oldest image being almost transparent and the most recent being fully
opaque. These images are overlayed to produce a movement gradient called the Motion History Image
(MHI).
The algorithm looks at the MHI and for each pixel it examines the neighbouring pixels to determine the
difference in intensity gradient. If the gradient falls between the MinT and MaxT values then it registers
that movement has occurred.
MinT is the minimum MHI duration and MaxT is the maximum MHI duration. Because the gradient
exactly corresponds to the duration inside the MHI these values are specified as times in seconds. So
differences in intensity between neighbouring pixels are equivalent to differences in time between
neighbouring pixels.
- 289 -
CHAPTER 2
Connectors
The source image you want Bitmap Motion history image Bitmap
to process
- 290 -
COMPONENTS
Mouse Area
Description
Connectors
View to create the area on View The same View as the input, View
but anything connected here
is drawn on top
- 291 -
CHAPTER 2
Mouse Drag
Description
The Mouse Drag component allows you to handle drag operations for a mouse area. If you connect
this component to a Mouse Area then when a drag operation is in progress the component will send
the x and y coordinates of the mouse as the drag progresses.
Connectors
- 292 -
COMPONENTS
Mouse LDbl-click
Description
This component allows you to handle left mouse button double-click events for a mouse area. If you
connect this component to a Mouse Area then when you double-click on the area the component will
output the x and y coordinates of the clicked point.
Connectors
- 293 -
CHAPTER 2
Mouse LDown
Description
This component allows you to handle left mouse button down events for a mouse area. If you connect
this component to a Mouse Area then when you click on the area the component will output the x and
y coordinates of the clicked point.
Connectors
- 294 -
COMPONENTS
Mouse LUp
Description
This component allows you to handle left mouse button up events for a mouse area. If you connect this
component to a Mouse Area then when you click on the area and subsequently release the button,
the component will output the x and y coordinates of the clicked point.
Connectors
- 295 -
CHAPTER 2
Mouse Move
Description
The Mouse Move component allows you to track the mouse position as it passes over an area. Note
that mouse move message flow is turned off by default for performance reasons so in order to use a
Mouse Move component you must ensure that mouse moves are switched on in the MGUI for the
module where the mouse area is defined (see picture below).
When the Mouse Move component is configured correctly, the two Float outputs give the position of
the mouse as it moves over the defined area.
Connectors
- 296 -
COMPONENTS
Mouse Over
Description
This component determines whether the mouse is over a particular area in a view. The boolean output
will show True when the mouse is over and False otherwise. This output is triggered whenever the
state changes.
Note that mouse move message flow is turned off by default for performance reasons so in order to
use a Mouse Over component you must ensure that mouse moves are switched on in the MGUI for
the module where the mouse area is defined (see picture below).
Connectors
View on which to monitor the View Whether the mouse is over Boolean
mouse status the area
- 297 -
CHAPTER 2
Mouse RDbl-click
Description
This component allows you to handle right mouse button double-click events for a mouse area. If you
connect this component to a Mouse Area then when you right double-click on the area the component
will output the x and y coordinates of the clicked point.
Connectors
- 298 -
COMPONENTS
Mouse RDown
Description
This component allows you to handle right mouse button down events for a mouse area. If you
connect this component to a Mouse Area then when you right click on the area the component will
output the x and y coordinates of the right clicked point.
Connectors
- 299 -
CHAPTER 2
Mouse RUp
Description
This component allows you to handle right mouse button up events for a mouse area. If you connect
this component to a Mouse Area then when you right click on the area and subsequently release the
button, the component will output the x and y coordinates of the clicked point.
Connectors
- 300 -
COMPONENTS
Multiplexer
Description
The Multiplexer component routes a single input to just one of a number of outputs. The component
has template connectors which means that you can use it with any connector type. The type is defined
when you connect your first link to the component.
When you connect an output a new, unassigned output will appear below it. By continuously
connecting unassigned outputs in this way you can build up to the number of outputs you require.
Multiplexers are particularly useful with View connectors for switching between different displays.
Connectors
- 301 -
CHAPTER 2
Multiply
Description
The component has template connectors which means it can be used with multiple data types
including Floats, Ints and Float/Int arrays. You can right-click on the connectors at any time to change
the type.
Connectors
Input 2 Template
- 302 -
COMPONENTS
Description
This primitive multiplies each entry in the input array by a single float value.
Connectors
- 303 -
CHAPTER 2
Description
This primitive multiplies each entry in the input array by the entry at the same index in a second float
array. If the arrays are different sizes then the larger of the two is truncated to the length of the smaller
one.
Connectors
- 304 -
COMPONENTS
Description
This component allows you to connect to a Netvox alarm security device that is paired with a Netvox
USB adapter attached to your PC. Netvox alarm security devices include window and passive infra red
sensors.
IMPORTANT: you must first use a Netvox USB component and successfully connect to the USB
adapter before attempting to connect to a device.
Before starting the component you need to send the IEEE address of the device to the 'Id' input. The
IEEE address is usually written on the device itself.
Trigger the Start input to connect. The Status output will show as "Searching”. If the device can't be
found the status will show as “Not Found”. If the status shows “No Network” then the Netvox USB
adapter has been disconnected.
On successful startup the device details will be updated. Battery level, device type, tamper , alarm and
fault status are all updated.
You have the option to set the Heartbeat via the 'Heart' input. This is the rate at which the device will
send signals back to the USB adapter to tell it that it is still alive. It also reports full device details
during these signals. The Heartbeat period is in seconds.
To trigger an update manually you can send a trigger to the 'Query' input.
If the device alarm is triggered the 'Alarm' output will send its status immediately (or as soon as the
network allows).
If the connection is lost at any time the status will change to “Lost Connection”. Reconnection will start
automatically at which point the status will change to “Reconnecting”.
- 305 -
CHAPTER 2
Connectors
Set the heartbeat (in secs) Int The current heartbeat (secs) Int
- 306 -
COMPONENTS
Description
This component allows you to connect to a Netvox light sensor device that is paired with a Netvox USB
adapter attached to your PC.
IMPORTANT: you must first use a Netvox USB component and successfully connect to the USB
adapter before attempting to connect to a device.
Before starting the component you need to send the IEEE address of the device to the 'Id' input. The
IEEE address is usually written on the device itself.
Trigger the Start input to connect. The Status output will show as "Searching”. If the device can't be
found the status will show as “Not Found”. If the status shows “No Network” then the Netvox USB
adapter has been disconnected.
On successful startup the device details will be updated. Battery level and detected light level will be
sent to the relevant outputs.
You can set the minimum and maximum time reporting intervals in seconds and the reportable
change. These 3 work together as follows:
When the detected light intensity is greater than the change in light intensity value specified in
reportable change, the device will report the intensity information at the minimum reporting interval
specified. With the maximum time interval it's the other way around ie. when the detected light
intensity is less than the change in light intensity value specified in reportable change, the intensity
information will be reported at the maximum reporting interval specified.
Updates are triggered automatically based on the above settings. However, you can request an update
manually by sending a trigger to the 'Query' input.
If the connection is lost at any time the status will change to “Lost Connection”. Reconnection will start
automatically at which point the status will change to “Reconnecting”.
- 307 -
CHAPTER 2
Connectors
- 308 -
COMPONENTS
Description
This component allows you to connect to a Netvox mains power outlet device that is paired with a
Netvox USB adapter attached to your PC.
IMPORTANT: you must first use a Netvox USB component and successfully connect to the USB
adapter before attempting to connect to a device.
Before starting the component you need to send the IEEE address of the device to the 'Id' input. The
IEEE address is usually written on the device itself.
Trigger the Start input to connect. The Status output will show as "Searching”. If the device can't be
found the status will show as “Not Found”. If the status shows “No Network” then the Netvox USB
adapter has been disconnected.
On successful startup the device details will be updated. Battery level, On/Off status, Current, Voltage,
Power and Energy usage will all be sent to the relevant outputs.
You can request an update manually by sending a trigger to the 'Query' input.
To switch the mains outlet on or off you can send a boolean value to the 'On' input. Trigger the 'Toggle'
input to flip the state of the outlet.
If the connection is lost at any time the status will change to “Lost Connection”. Reconnection will start
automatically at which point the status will change to “Reconnecting”.
- 309 -
CHAPTER 2
Connectors
Toggle the outlet from its Boolean Voltage level in Volts Int
current state
- 310 -
COMPONENTS
Description
This component allows you to connect to a Netvox temperature sensor device that is paired with a
Netvox USB adapter attached to your PC.
IMPORTANT: you must first use a Netvox USB component and successfully connect to the USB
adapter before attempting to connect to a device.
Before starting the component you need to send the IEEE address of the device to the 'Id' input. The
IEEE address is usually written on the device itself.
Trigger the Start input to connect. The Status output will show as "Searching”. If the device can't be
found the status will show as “Not Found”. If the status shows “No Network” then the Netvox USB
adapter has been disconnected.
On successful startup the device details will be updated. Battery level, Temperature will be sent to the
relevant outputs. Humidity and UV levels will also be reported if supported by the device.
You can set the minimum and maximum time reporting intervals in seconds and the reportable
change. These 3 work together as follows:
Minimum reporting time interval is the minimum reporting time, in seconds. If this value is set
to 0, then there is no minimum limit. Maximum reporting time interval is the fixed reporting
time, in seconds. If this value is set to 0, then the device will not report the temperature.
Reportable change is the minimum temperature change between the previous and the last
detected. If the change in temperature is greater than Reportable Change value, the device
issues the report at the minimum reporting time. If the change is less than the reportable
change, it will not report until the time reaches the maximum reporting time.
Updates are triggered automatically based on the above settings. However, you can request an update
manually by sending a trigger to the 'Query' input.
- 311 -
CHAPTER 2
If the connection is lost at any time the status will change to “Lost Connection”. Reconnection will start
automatically at which point the status will change to “Reconnecting”.
Connectors
- 312 -
COMPONENTS
Netvox USB
Description
This component allows you to connect to a Netvox home automation USB adapter.
The adapter installs as a virtual COM port so you need to find out which port it's on before you can use
this component.
Send the com port number to the 'Port' input (just the number, not the 'COM' part). You can set the
Baud Rate or leave this unconnected to use the default.
Trigger the Start input to connect. The 'On' output will send True if successful or False otherwise. If
connected the Status output will show as "Connected”. If no USB adapter can be found the status will
show as “Device Not Found”.
Once you are connected to an adapter you can use the other Netvox components to connect to
devices that are paired with the adapter.
- 313 -
CHAPTER 2
Connectors
The COM port number that Int The current connection String
the adapter is connected to status
- 314 -
COMPONENTS
Network Client
Description
This primitive allows you to send and receive data to and from a server across a network.
You can choose whether to create a TCP or UDP connection. You can also specify whether you are
communicating via character strings (straight text) or hex strings.
- 315 -
CHAPTER 2
Connectors
The port you want to Int Data received in from the String
connect to server
The type of connection, String Trigger when data has been Trigger
either 'TCP' or 'UDP' sent out to the server
Trigger to open the Trigger If the Log input is set to true String
connection then the activity log can be
accessed from here
- 316 -
COMPONENTS
Network Server
Description
This primitive allows you to receive and and send data from and to clients across a network.
You can choose whether to create a TCP or UDP connection. You can also specify whether you are
communicating via character strings (straight text) or hex strings.
When sending the data is sent to all clients that are connected to the server.
- 317 -
CHAPTER 2
Connectors
The port you want the server Int Whether the server has String
to use through started and a connection is
open
Trigger to start the server Trigger Data received in from any String
clients
Trigger to stop the server Trigger Trigger when data has been Trigger
sent out
The data you want to send String If the Log input is set to true String
then the activity log can be
accessed from here
- 318 -
COMPONENTS
New Line
Description
Connectors
- 319 -
CHAPTER 2
Norm
Description
Normalises an array of float values. The values are scaled so that they fall between –1 and 1.
Connectors
- 320 -
COMPONENTS
Not
Description
This component returns the opposite value from the input turning True to False and False to True.
Connectors
- 321 -
CHAPTER 2
Note Equal
Description
The Note Equal primitive will filter out all MIDI events except those associated with the value fed to the
'note' input (each semitone has a unique MIDI integer value from 0 to 127 with Middle C = 60). MIDI
messages that do not relate to notes other than the specified one do not pass through.
Connectors
- 322 -
COMPONENTS
Note Event
Description
The Note Event primitive generates a MIDI note on/off event pair in order to play a note.
Connectors
- 323 -
CHAPTER 2
Note to Int
Description
Converts a note name to a MIDI note number. For example, C3 is MIDI note 60.
Connectors
- 324 -
COMPONENTS
Note to Int
Description
Converts a note name to a MIDI note number. For example, C3 is MIDI note 60.
Connectors
- 325 -
CHAPTER 2
Offline Mode
Description
When used inside an exported VST this component will determine whether the host is in offline mode
or not. This is useful if you want to apply more cpu intensive processing like over sampling only when
the host is using the plugin for rendering or some other non-live purpose.
Connectors
- 326 -
COMPONENTS
Description
Use this in an exported exe to provide access to the ASIO settings dialog. You can use a button or
other GUI element to trigger this. The boolean output allows you to determine whether an ASIO driver
is currently selected. This is useful because the ASIO settings only apply to the selected ASIO driver
and if no ASIO driver is selected the input trigger will do nothing.
Connectors
- 327 -
CHAPTER 2
Description
This primitive allows you to interface to an OWL Energy Monitor. It will work either with a direct
connection via USB cable or using an OWL USB adapter for connecting wirelessly.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the 'Start' input. The 'On' output will return True if a connection has been established (False
otherwise). If successful the 'Status' output should change from “Not Started” to “Started”.
To read data send a trigger to the 'Read' input. The status should change to “Connected - Waiting for
OWL data”. It may take up to a minute or two to find any devices and gather their readings so keep
triggering the Read input until your devices are found. If you want to get continuous readings use a
Ticker25 or a timer to repeatedly trigger the 'Read' input.
When devices are located the status will change to “Connected - Data read successfully”. The device
ids are sent as an array via the 'Devices' output. The corresponding current readings (in Amps) are
sent as an array via the 'Readings' output.
If you are connecting wirelessly and pick up more than one device you can focus on a particular one
by passing its id into the 'Selected Device' input. The reading from the device will be sent out through
the 'Selected Device' output. If no device id is supplied then the 'Selected Device' output will show the
reading for the first device.
- 328 -
COMPONENTS
Connectors
Id of the device you want to Int Returns an array of found Int Array
focus on device ids
- 329 -
CHAPTER 2
Pack
Description
The Pack component literally ‘packs’ 4 mono streams into one Mono4 stream. You can then take full
advantage of SSE as any stream components you connect up to this will effectively be processing the
original 4 mono channels at the same time.
To get the 4 mono streams back again use the Unpack component. Using Pack (and Unpack) can
radically increase the efficiency of a Mono section.
Connectors
- 330 -
COMPONENTS
Pen
Description
This component creates a Pen that you can use for drawing. A pen is defined by colour, line thickness
and style parameters. The thickness is a float and is in grid squares.
You can leave the style input disconnected and a solid style will be assumed.
Connectors
- 331 -
CHAPTER 2
Phidgets 0/0/4
Description
This primitive allows you to control a Phidgets 0/0/4 Interface Kit board.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The board has 4 digital outputs. These are mirrored on the component. The 4 boolean inputs will
control the 4 digital outputs on the board.
- 332 -
COMPONENTS
Connectors
- 333 -
CHAPTER 2
Phidgets 0/0/8
Description
This primitive allows you to control a Phidgets 0/0/8 Interface Kit board.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The board has 8 digital outputs. These are mirrored on the component. The 4 boolean inputs will
control the 8 digital outputs on the board.
- 334 -
COMPONENTS
Connectors
- 335 -
CHAPTER 2
Phidgets 0/0/16
Description
This primitive allows you to control a Phidgets 0/0/16 Interface Kit board.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
- 336 -
COMPONENTS
The board has 16 digital outputs and 16 digital inputs. These are mirrored on the component. The 16
boolean inputs will send data out through the 16 digital outputs on the board. The 16 boolean outputs
receive data from the 16 digital inputs on the board.
Connectors
- 337 -
CHAPTER 2
Phidgets 2/2/2
Description
This primitive allows you to control a Phidgets 2/2/2 Interface Kit board.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The board has 2 digital outputs, 2 digital inputs and 2 analog inputs. These are mirrored on the
component. The 2 boolean inputs will send data out through the 2 digital outputs. The 2 integer outputs
receive data from the 2 analog inputs. The 2 boolean outputs receive data from the 2 digital inputs.
- 338 -
COMPONENTS
Connectors
- 339 -
CHAPTER 2
Phidgets 8/8/8
Description
This primitive allows you to send and receive data to and from the Phidgets 8/8/8 Interface Kit board.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
- 340 -
COMPONENTS
The board has 8 digital outputs, 8 digital inputs and 8 analog inputs. These are mirrored on the
component. The 8 boolean inputs will send data out through the 8 digital outputs. The 8 integer outputs
receive data from the 8 analog inputs. The 8 boolean outputs receive data from the 8 digital inputs.
Connectors
- 341 -
CHAPTER 2
Phidgets Accelerometer
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
You can set the sensitivity for the three axes. This is a value from 0 to 1 and represents the amount
that the acceleration has to change in order for you to be sent an update.
The X, Y and Z outputs then give you the acceleration value for each axis in the range -1 to 1.
- 342 -
COMPONENTS
Connectors
- 343 -
CHAPTER 2
Phidgets Analog
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The board has 4 analog outputs. You can enable and set the voltage for each output independently.
Voltages are in the range -10 to +10 volts.
- 344 -
COMPONENTS
Connectors
- 345 -
CHAPTER 2
Phidgets Bridge
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The board has 4 analog inputs. You can enable and set the gain for each input independently. Gains
must be either 1,8,16,32,64 or 128. If you enter a value outside of this range it will be rounded to the
nearest of these values. Higher gain gives you lower noise and higher resolution.
- 346 -
COMPONENTS
Connectors
- 347 -
CHAPTER 2
Phidgets Encoder
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
You can set the sensitivity for the three axes. This is a value from 0 to 1 and represents the amount
that the acceleration has to change in order for you to be sent an update.
The X, Y and Z outputs then give you the acceleration value for each axis in the range -1 to 1.
- 348 -
COMPONENTS
Connectors
Set the position of the Int The change since the last Int
specified encoder recorded encoder change
- 349 -
CHAPTER 2
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The board has two channels for measuring. For each one you can enable the channel. You can set the
Filter to zero crossing or logic level (0=zero crossing, 1=logic level), depending on your sensor. You
can set the timeout in milliseconds (the default is 1000 if you leave this input empty). The reset trigger
will reset the counter.
- 350 -
COMPONENTS
Connectors
Set the filter for channel 0 Int Total time spent counting in Int
(0=zero crossing, 1=logic microseconds for channel 0
level)
- 351 -
CHAPTER 2
Phidgets GPS
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The component reads latitude, longitude, altitude, velocity and heading information from the board. It
also reports whether a fix has been achieved.
- 352 -
COMPONENTS
Connectors
- 353 -
CHAPTER 2
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
To send an IR code you need to attach a String to the Code input. This must contain the full NEC
encoding for the code you want to send . An example code would be:
08b750af,32,2,2,108500,501,8980,4590,501,1761,501,626,8980,2333,501,|,0,0,0,0
When IR codes are received you'll get the short hex code at the Hex output and the full NEC encoding
at the Code output. The Rept output gives you the repeat count for a code – the number of times it has
been repeated if say a transmit button on a remote was held down.
- 354 -
COMPONENTS
Connectors
Full NEC encoding of the IR String Full NEC encoding of any IR String
code you want to transmit receieved
Trigger to send the code Trigger Repeat count of any IR code Int
received
- 355 -
CHAPTER 2
Phidgets LED 64
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
This is a very simple component to use. Simply specify the LED you want to control using the LED
input. This should be a value from 0 to 63. Then set the luminance using the Lum input. Luminance is
in the range 0 to 100 with 0 being off and 100 being fully on.
The current luminance of the specified LED is also given at the Lum output.
- 356 -
COMPONENTS
Connectors
Index of the LED you want Int Luminance of the currently Int
to control (0-63) selected LED
- 357 -
CHAPTER 2
Description
This primitive allows you to interface to the two Phidgets Motor Control boards (both 2 motor HC and 4
motor LC).
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
Specify the index of the motor you want to control using the Motor input. This should be a value from 0
to 1 if using the two motor board and 0-3 for the 4 motor.
You can set the velocity and acceleration for the motor using the Vel and Accel inputs.
Current velocity is given at the Vel output as well as minimum and maximum acceleration capabilities.
- 358 -
COMPONENTS
You can set the braking from zero to 100% and switch back EMF sensing on or off. If the motor you're
using has an encoder then you can set this using the Encoder input.
If the board has digital inputs then the status of these is reflected by the four boolean outputs labeled
0-3.
If the board has analog inputs then the status of these is reflected by the two integer outputs labeled
A0 and A1.
- 359 -
CHAPTER 2
Connectors
Index of the motor you want Int Current velocity of the Float
to control (0-3) selected motor
Set the encoder on the Int State of the boards digital Boolean
motor if there is one input 1
Switch back EMF sensing Boolean State of the boards digital Boolean
on or off input 2
- 360 -
COMPONENTS
Phidgets RFID
Description
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The Ant input controls whether the RFID sensor is on or off. You can switch the on board LED on and
off via the LED input.
The board has two digital outputs that you can control using the '0' and '1' inputs.
When an RFID tag passes close enough to the sensor it's id is sent to the TagId output. The Found
output will change from false to true when a tag is in close proximity.
- 361 -
CHAPTER 2
Connectors
- 362 -
COMPONENTS
Description
This primitive allows you to interface to the two Phidgets Advanced servo boards (both 1 motor and 8
motor).
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
Specify the index of the servo you want to control using the Servo input. This should be a value from 0
to 7 depending on the board you have connected.
You can set the servo type using the Type input. This is optional and if left unconnected will adopt the
default type settings. The available types are:
- 363 -
CHAPTER 2
2 Raw US mode - all position, velocity, acceleration functions are specified in microseconds
rather then degrees
The other connectors allow you to control or inspect the state of the specified servo. There are all
explained in the Connectors table below.
- 364 -
COMPONENTS
Connectors
Index of the servo you want Int Whether the selected servo Boolean
to use is moving or not
- 365 -
CHAPTER 2
Phidgets Spacial
Description
This primitive allows you to interface to the two Phidgets Spacial boards (0/0/3 and 3/3/3).
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
- 366 -
COMPONENTS
Connectors
Set the rate at which data is Float Number of gyroscope axes Int
received from the board in supported by the board
milliseconds. Leave
disconnected or set to zero
for maximum rate
- 367 -
CHAPTER 2
Description
This primitive allows you to interface to the two Phidgets Stepper Controller boards (both 1 motor
bipolar and 4 motor unipolar).
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
Specify the index of the motor you want to control using the Motor input. This should be a value from 0
to 3 depending on the board. You can set the target position for the motor as well as velocity and
acceleration using the Pos, Vel and Accel inputs.
- 368 -
COMPONENTS
The Curr input sets the current and so allows you to control torque. If the board has digital inputs then
the status of these is reflected by the four boolean outputs labeled 0-3.
The Zero input will zero the position counter thus making the current motor position the initial reference
point.
- 369 -
CHAPTER 2
Connectors
Index of the motor you want Int Whether the selected motor Boolean
to control (0-3) is moving or not
Position you want to set for Float Current position of the Float
the selected motor selected motor
Velocity you want to set for Float Current velocity of the Float
the selected motor selected motor
Current you want to set for Float Maximum supported velocity Float
the selected motor for the motor
- 370 -
COMPONENTS
Phidgets Temperature
Description
This primitive allows you to interface to the two Phidgets Temperature Sensor boards (both 1 input and
4 input).
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The four Type inputs allow you to specify the type of thermocouple you have attached to input. This is
a string input and can be 'K','J','E' or 'T'. If no type is provided it is assumed to be type 'K'.
The four Snsy inputs allow you to set the sensitivity for each input i.e. how much the temperature
needs to change before an update in temperature will be received. The default is 0.5 degrees Celcius.
- 371 -
CHAPTER 2
Connectors
- 372 -
COMPONENTS
Description
This primitive allows you to interface to the Phidgets Text LCD and Text LCD Adapter boards.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
The Text LCD Adapter board allows you to control up to two screens. To choose the screen send
either 0 (first screen) or 1 (second screen) to the Screen input.
To tell FlowStone what screen size you are using with your adapter, use the Size input. This takes a
string of the format 'RxC' where R is the number of rows and C is the number of columns. For
example, '2x20' for a screen with 2 rows and 20 columns.
- 373 -
CHAPTER 2
Connectors
- 374 -
COMPONENTS
Description
This primitive allows you to interface to the Phidgets Linear and Circular Touch Sensor boards.
Once you have the board connected to your PC you need to start the component by sending a trigger
to the first input. The 'On' output will return True if a connection has been established (False
otherwise).
If you have multiple boards connected to your PC then you should provide the unique serial number of
the board you want to connect to at the 'Conn' (connection string) input. If you want to connect to a
device on a remote server provide the device serial, IP and port or server name and also a password if
necessary separated by commas. Use -1 as the serial if you want to connect to the first device found.
- 375 -
CHAPTER 2
Connectors
- 376 -
COMPONENTS
Pitch to Frequency
Description
Converts a pitch value to a frequency. There are two versions of this component. The stream version
should be used in Mono and Poly sections and performs the calculation at sampling rate. The Float
version should be used for static calculations.
Connectors
- 377 -
CHAPTER 2
Pixel to Grid
Description
The Pixel to Grid components convert values in Pixels to values in Grid Squares. There are two
versions, one for Floats and one for Areas.
Connectors
Float or Area in pixel units Float/Area Float or Area in grid square Float/Area
units
- 378 -
COMPONENTS
Plugin Folder
Description
The plugin folder component gives you the folder where your exported exe resides.
When inside FlowStone the folder given is whatever you have set up as the target folder for exported
executables. If you wish, you can provide a test folder that will be used only when working within
FlowStone.
Connectors
Optional test folder path String Folder path for your String
exported exe
- 379 -
CHAPTER 2
Description
The Point Array Lines component draws a line through a set of points. This is similar to the Graph
Lines component. However, in this case both the x and y coordinates are supplied. As with the Graph
Lines component, the y-coordinates are assumed to be in the range 0 to 1 ( –1 to 1 if the graph is
centred on zero). This means that you may need to use the Norm component if you want to make
sure that your values are all visible. The x-coordinates are automatically normalised so that they fit
within the area of the graph.
By default the line drawn through the points is made from straight line segments. You can also choose
to draw a best fit curve through the points by setting the Curve input to True.
To generate a Point Array to use as input use the Graph to Point Array component.
Connectors
View to draw onto View The same View as the input, View
but anything connected here
is drawn on top
- 380 -
COMPONENTS
- 381 -
CHAPTER 2
Poly to Graph
Description
The Poly to Graph component takes the first 2048 samples from a Poly stream and puts them in an
array. Poly sections are only active when voices are active and for this component the samples are the
first ones generated by the first note played only.
The Get trigger determines when the data is sent to the Float Array output but does not affect which
samples are taken – these are always the first 2048 in the signal no matter when the trigger is fired.
Connectors
Poly signal to take samples Poly Poly signal passing through Poly
from
- 382 -
COMPONENTS
Poly to Mono
Description
The Poly to Mono primitive is an essential part of any polyphonic synth. It acts as a voice combiner
adding together the independent signals from each Poly channel and producing a single Mono stream
of data.
Note: A Poly to Mono component must have a MIDI to Poly module (or a Voices to Poly) somewhere
in the Poly section that precedes it. It can also only connect into one such section – no two MIDI to
Poly modules can feed into the same Poly to Mono.
Connectors
- 383 -
CHAPTER 2
Poly to PolyInt
Description
The Poly to PolyInt primitive converts Poly signals to PolyInt signals by rounding float values to the
nearest integer above or below.
Example
A float value of 1.4 would be converted to an integer value of 1. However, a float value of 1.6 would be
converted to an integer value of 2 because 1.6 is closer to 2 than it is to 1.
Note that to round to the nearest integer below all you need to do is subtract 0.5 from the Poly signal
before running it through the Poly to PolyInt component.
Connectors
- 384 -
COMPONENTS
PolyInt to Poly
Description
The PolyInt to Poly primitive converts PolyInt signals to Poly signals by converting the integer values to
their equivalent in floating point form.
Connectors
- 385 -
CHAPTER 2
Description
The Popup List Control defines a popup list of selectable values. You need to define an area on the
View where the control is to appear and supply a list of options (via a comma separated string). Having
done this you can then click on the control and, as you hold the mouse down, the list will pop up. By
moving the mouse up and down you can scroll through the options. You then release the mouse to
accept the current selection.
The component outputs the selected string and the index of the selection (which is zero based).
Connectors
View on which to display the View The same View as the input, View
control but anything connected here
is drawn on top
- 386 -
COMPONENTS
The position and size of the Area The selected item String
control
The font to use for Font The index of the selected Int
displaying the selected item item in the list
on the control
- 387 -
CHAPTER 2
PPQ Pos
Description
The PPQ Pos primitive outputs the current songs quarter position when your VST is used within a
host. This is a floating point value, for more details see the VST SDK documentation
Connectors
- 388 -
COMPONENTS
Preset Manager
Description
The component stores the program names but the data is stored in Preset Parameter, Preset
Parameter array and Preset String components. The Preset Manager notifies these parameter
components via its Preset output connector. Mostly this information is transferred via use wireless
links.
The Preset Manager also controls parameter updates. The Lock input determines whether changes to
parameters are discarded between program changes. The Save input can be triggered regardless of
the lock state in order to save any changes made.
The Before and After Program Change trigger outputs are very useful if for delaying global calculations
until after a program change has occurred. If the calculations depend on several parameters then you
can wait until all parameters have been updated as a result of the program change before doing any
calculations.
You must have one and only one preset manager per module if you want to have preset support. In
the majority of cases the Preset Manager module will be all you need.
- 389 -
CHAPTER 2
Connectors
Set the name of the current String The current program name String
program (24 chars max)
Whether the programs are Boolean List of all program names String
locked so that data changes
are not altered permanently
Set all the program names String Trigger sent after a program Trigger
at once using a separated change occurs
string
- 390 -
COMPONENTS
Description
The Preset Manager module is the key to adding preset handling to your plugins. To add preset
support simply drop a Preset Manager inside your plugin module.
The Preset Manager is wireless and will establish a Preset type connection with all the preset
parameters and arrays inside the standard knob, slider and other built in modules. These connections
are used to manage preset changes and other such operations.
The number of programs and their names are set via the properties panel. You can also save and load
preset data and set program names using text files via the File menu (see Preset Text Files below).
Connectors
The software uses a very flexible system for managing preset data. The reason for using this system
instead of the standard fxb/fxp system is that it is much more adaptive to the synth building process.
The fxb/fxp system assumes a fixed format. However, when you’re developing a plugin the structure
can often change. If we used a rigid format like fxb/fxp your data would be unusable after making any
changes.
- 391 -
CHAPTER 2
Using the system we have you can save preset data part way through development and still retain that
data as your plugin evolves.
Using
The Preset Manager allows you to load and save preset data to and from text files for storage or for
modification. These features are accessed via the File menu on the Preset Manager front panel. You
can save/load all the programs or you can choose to save the current program or load a single
program into the current one.
File Format
The preset data is saved in a simple tabular format and stored in a text file for easy editing externally.
Best to use a spreadsheet program like Microsoft Excel™ to view or manipulate the data. The example
below shows an excerpt from the preset text file for a synth.
Number of programs = 32
Number of parameters = 26
The first 3 rows are always the same except for the number of programs and parameters which will
obviously vary.
There is then a blank line followed by the table of preset data. The first column is the preset parameter
name. Parameter names must be unique. If you find any that are the same then you need to go
back to your schematic and change them.
- 392 -
COMPONENTS
The next column is the data type. Currently this can only be one of the following:
String
Float
Float Array (N) (where N is the size of the float array)
For Float Arrays there is an entry in the parameter column for the name followed by a numbered entry
for each element in the array. These numbered entries do not count when considering uniqueness of
parameter names.
The rest of the columns define the parameter data for each program. If you’ve saved just the current
program then you’ll just have one column.
Manipulating
One advantage of the preset text file system is that you can manipulate the files before re-loading.
Possible uses include rearranging program order or collating programs from separate files into one.
You can also just update a selection of parameters by deleting the rows for the parameters you don’t
want to affect.
If you make any changes to the number of parameters or programs then you need to make sure you
update the figures for these in the 2nd and 3rd lines of the file.
At the top of each program column is the program name. You can change these names in the text file
and then load them back in so that all your program names get updated.
Loading
It’s useful to understand what happens when a preset text file is loaded into a schematic as you can
use this to your advantage under certain circumstances.
First the number of programs and number of parameters are read in. The software then cycles through
each parameter in turn. It reads the parameter name from the Parameter column and then tries to find
a preset parameter in your schematic that matches the name. If it fails to find a match the parameter
data is ignored. This means that if you have deleted something from your schematic the preset data
will still load in correctly.
If your schematic contains new preset parameters not included in the file then these will not be
affected. Having loaded in your previous preset data you can then make adjustments to the new
parameters and save out a new file to reflect the schematic changes you have made.
One other point to note is that the preset loading will never create new programs. If your data file has
more programs than you have set in the Preset Manager in your schematic then the extra programs
will be ignored. If you want to use these programs just go to your schematic and increase the number
of programs as required.
- 393 -
CHAPTER 2
Properties
The Total box is where you define how many programs you require. New programs are automatically
assigned program names. You can cycle through the programs using the + and – buttons. Program
names can then be changed in the Program box.
If you check the Lock box then the preset manager will only save changes when you press the save
button (this includes changes to both preset parameters via knobs/sliders and to program names). If
you move from one program to the next without saving any changes will be lost.
For the background you can set the outline style from the Line drop list. There are options for solid,
dashed, dotted lines or you can choose to have no outline at all. Line thickness is specified in grid
squares. The Corner size is also specified in grid squares and determines how rounded the corners
are.
There are several background Fill options. You can have a solid, linear or radial gradient fills. You can
also choose to have no fill colour. For a solid fill only the Col1 colour applies. For the two gradient fills
Col1 and Col2 define the boundary colours. For linear gradients you can also specify the angle of the
gradient.
- 394 -
COMPONENTS
Description
The Preset Text File component allows you to transfer preset data to and from a text file. The format
used is very flexible and has been designed with the plugin developer in mind as it allows the structure
of the plugin to change without losing the preset data.
The component accesses and updates the data stored in Preset Parameter and Preset Parameter
array components. It notifies these parameter components via its Preset output connector. Mostly this
information is transferred via use wireless links.
Connectors
Trigger to save the preset Trigger All program names in the String
data to the file text file (use a Text
component to view these)
- 395 -
CHAPTER 2
File Format
The file format used is very easy to understand. It is tab delimited and it’s best viewed in a
spreadsheet application like Microsoft Excel™. Here’s an extract from an example synth:
Number of programs = 32
Number of parameters = 26
continues down
- 396 -
COMPONENTS
The first three lines give the table format, number of programs and number of parameters. After that
comes a table which contains all the preset data. The first column shows the preset parameter name
(this must be unique for each parameter). The second column shows the data type – either String,
Float or Float Array. The columns after that show the data for each program and are headed by the
program name.
Parameter Order
If the Preset Text File Order input was set to True there will be an additional column after the Type
called Order. Initially this will show –1 for all parameters. To specify the order of parameters as they
will appear in the host you should assign a number to each parameter. Parameters with the lowest
numbers will appear at the top of the parameter list. Parameters left at –1 will be highest on the list.
When the text file is loaded back in the software will take each parameter in turn and locate the Preset
Parameter or Preset Parameter Array component with the same name in your schematic and load in
the data for all the programs. If it can’t find a match the data is ignored.
Program name data is also loaded and is sent to the Program Names output on the Preset Text File
component.
- 397 -
CHAPTER 2
Proximity Claw
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from a Proximity click board which is attached to one of the claws on your FlowPaw.
Connectors
- 398 -
COMPONENTS
Description
The PS2 Lynxmotion Controller component allows you to receive input data from a connected
Lynxmotion PS2 controller.
To use this you must have an appropriate PS2 controller attached to your PC. If you trigger the
Connect input on the component it will pick up the controller and you can then use the outputs to
respond to controller input.
NOTE: the Analog option on the controller must be selected in order for it to work with FlowStone.
- 399 -
CHAPTER 2
Connectors
- 400 -
COMPONENTS
- 401 -
CHAPTER 2
Ramp
Description
The Ramp primitive generates a non-bandlimited wave whose values increase linearly from 0 to 1
according to the normalised frequency input.
Connectors
- 402 -
COMPONENTS
Random Number
Description
The Random Number primitive generates pseudo-random numbers. You can choose a fixed seed to
reproduce a stream of numbers or leave the Seed input unconnected and the component will seed
itself based on system time when the component is loaded or added to a schematic. A seed of 1 will
reset the stream of numbers generated by the component.
Trigger the Get input to produce the next number in the current sequence.
Connectors
Trigger to produce the next number in the Trigger The last generated Int
current sequence. random number
- 403 -
CHAPTER 2
Rectangle
Description
Connectors
View to display the rectangle View The same View as the input, View
on but anything connected here
is drawn on top
- 404 -
COMPONENTS
Redraw
Description
The Redraw component gives you low-level control over when redraws occur on a view. This particular
version redraws everything on the view.
When inside an exported exe the Redraw component limits the redraw rate to 100Hz during
automation for efficiency purposes. You can switch this off by setting the HiRes input to True.
Connectors
- 405 -
CHAPTER 2
Redraw Area
Description
The Redraw Area component gives you low-level control over when redraws occur on a view. This
particular version redraws everything inside a particular area of a view.
When inside an exported exe the Redraw component limits the redraw rate to 100Hz during
automation for efficiency purposes. You can switch this off by setting the HiRes input to True.
Connectors
- 406 -
COMPONENTS
Redraw Limiter
Description
The Redraw Limiter component is used to restrict the rate of flow of triggers through a schematic. It is
primarily used for sections of schematic that are used for drawing whilst either interacting or
automating. In such cases redraws do not need to occur at the same rate that values are updating so
this component allows you to restrict data flow to something around 100Hz.
Connectors
- 407 -
CHAPTER 2
Relay Claw
Description
This component works in conjunction with the FlowPaw component and allows you to control a Relay
click board which is attached to one of the claws on your FlowPaw.
The board has two relays that you can control the state of. These are switched using the two boolean
inputs on the component.
Connectors
- 408 -
COMPONENTS
RFID Claw
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from an RFID click board which is attached to one of the claws on your FlowPaw.
Connectors
Connect to the Claw output Int RFID of any tag that passes String
on the FlowPaw component close to the sensor
that matches the claw that
the click board is plugged
into on your FlowPaw.
- 409 -
CHAPTER 2
Rotate
Description
Applies a rotation transformation to the view. Any GUI components attached to this component are
rotated according to the transformation.
Connectors
- 410 -
COMPONENTS
Round Rectangle
Description
Connectors
View to display the rectangle View The same View as the input, View
on but anything connected here
is drawn on top
- 411 -
CHAPTER 2
Ruby
Description
The Ruby component allows you to write standard Ruby code and use it in your schematic. The inputs
and outputs can be changed interactively by dragging the grippers below the connectors and by right-
clicking on the connectors themselves
There is a huge chapter dedicated to the Ruby component in the main user guide. All the information
about it can be found there.
Connectors
- 412 -
COMPONENTS
Description
This component holds a value until the trigger input is hit at which point the current value is passed to
the output.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings, Booleans, Float/Int/String arrays and Areas. You can right-click on the
connectors at any time to change the type.
Connectors
Float value to sample and Template Value when the trigger was Template
hold last fired
- 413 -
CHAPTER 2
Sample Position
Description
The Sample Position primitive outputs the current songs sample position when your VST plugin is
used within a host.
Connectors
- 414 -
COMPONENTS
Sample Rate
Description
The Sample Rate primitive will give you the sample rate of the currently selected audio device either
within FlowStone or when used in an exported exe.
This component is essential for ensuring that fixed time periods are translated into the correct number
of samples for use with low-level components like delays and ADSR envelopes.
Connectors
- 415 -
CHAPTER 2
Save Wave
Description
This component saves a memory buffer to a Wave file (.wav). You specify the path to the file, sampling
rate and the sample format.
The sample format can be 16, 24 or 32 bit integer or 32 bit float. This is determined by a string
supplied to the Format input. The string should be “int16”, “int24”, “int32” or “float32”.
Connectors
- 416 -
COMPONENTS
Sawtooth
Description
The Sawtooth primitive produces the classic Sawtooth waveform. Its rich harmonic content makes it
ideal for subtractive synthesis and this bandlimited form avoids aliased overtones. The phase input can
be used for frequency modulation (phase modulation).
This Sawtooth HB primitive produces a Sawtooth wave with overtones limited to half the available
bandwidth. Its inputs are the same as the basic Sawtooth and it is included primarily for educational
purposes.
This Sawtooth DB produces a Sawtooth wave with overtones limited to twice the available bandwidth.
It therefore produces aliasing. Its inputs are the same as the basic Sawtooth and it too is included
primarily for educational purposes.
Connectors
- 417 -
CHAPTER 2
Description
This component gives you the folder and filename for the schematic on the host PC. If the schematic is
new and has not yet been saved then the Folder output will be blank.
Connectors
- 418 -
COMPONENTS
Select
Description
The Select component will select between two inputs based on the value of the boolean input. The first
input is selected if boolean input is False and the second input is selected if the boolean input is True.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings, Booleans, Float/Int/String arrays and Areas. You can right-click on the
connectors at any time to change the type.
Connectors
- 419 -
CHAPTER 2
Selector
Description
The Selector component routes just one input from a set of inputs to a single output. The component
has template connectors which means that you can use it with any connector type. The type is defined
when you connect your first link to the component.
When you connect an input a new, unassigned input will appear below it. By continuously connecting
unassigned inputs in this way you can build up to the number of inputs you require.
Selectors are useful for choosing between different options or for switching stream sections in and out
of a schematic.
Connectors
- 420 -
COMPONENTS
Set Pixel
Description
Connectors
- 421 -
CHAPTER 2
Description
Sets the sample rate for the currently selected audio device. You provide a rate and then send a
trigger to the Set input in order to attempt the change. If the rate couldn't be set (usually because the
audio device doesn't support it) then you'll get a trigger sent to the output.
Connectors
The sample rate you want to Int Trigger if the sample rate Trigger
set (in samples per second) could not be set
- 422 -
COMPONENTS
SFZ
Description
The SFZ component parses an sfz format file creating a Bus from which you can read the parsed
parameters. The sfz format was developed by rgc audio which is now owned by Cakewalk. It's a basic
but very flexible concept using a simple text file to define a set of samples together with arrangement
and performance parameters. (see http://www.cakewalk.com/devxchange/sfz.asp)
The SFZ component supports a large subset of the opcodes but not the full set. These are listed
below. To read a parameter simply use a Bus Extract with the corresponding sfz opcode name(s).
Connectors
Trigger to start parsing the Trigger Bus containing the parsed Bus
file data
- 423 -
CHAPTER 2
Shell Execute
Description
The Shell Execute component will start an external program. You provide the path to the program
executable and any command line arguments then send a trigger to launch the app.
For example:
If the exe requires elevated security privileges then you need to use the 'runas' prefix as shown below:
- 424 -
COMPONENTS
Connectors
Full file path to the String Trigger when application has Trigger
application you want to been launched
launch
- 425 -
CHAPTER 2
Description
This component will shift the elements in a float array round by a particular number of entries.
Elements that get ‘pushed off’ the end of the array are wrapped round to the beginning of the array.
Connectors
The float array to be shifted Float Array The shifted array Float Array
- 426 -
COMPONENTS
Show Cursor
Description
The Show Cursor component allows you to show or hide the mouse cursor. You can also choose
whether to hold the mouse position when you hide the cursor and restore the mouse position when
you show it again.
WARNING: use this component with care or you may find yourself without a cursor.
Connectors
- 427 -
CHAPTER 2
Signal Analyser
Description
The Signal Analyser allows you to analyse the signal that would be produced by a section of Poly
components. The Analyser simply runs the Poly code section for a defined number of samples. The
output is an array containing the calculated samples. You can then plot this on a graph or use it for
some other calculation.
The other outputs from the Signal Analyser are a String containing the compiled code for the attached
Poly section and an array of the number of cpu cycles used for each calculated sample.
NOTE: You cannot connect an Analyser into a section of code that contains a Poly to Mono
component.
Connectors
The number of samples to Int The compiled code for the String
calculate attached Poly section
Trigger to recalculate Trigger Array of cpu cycles used for Float Array
each sample
- 428 -
COMPONENTS
Sin
Description
Connectors
- 429 -
CHAPTER 2
Sin Inverse
Description
Standard trigonometric Inverse Sine function with radians as the output units.
Connectors
- 430 -
COMPONENTS
Sine
Description
The Sine primitive produces a sinusoid waveform. The phase input can be used for frequency
modulation (phase modulation). It has no harmonic content of its own and is often used as modulation
source.
- 431 -
CHAPTER 2
Sinh
Description
Connectors
Connectors
- 432 -
COMPONENTS
Slide
Description
The Slide component will slide from one float value to another at a particular rate. This can be useful
for animation effects. The rate is specified as a time between steps in milliseconds. The component
uses Windows timers so it can’t be relied on for accuracy particularly below 15 milliseconds.
Connectors
- 433 -
CHAPTER 2
Smooth
Description
Changes the smooth mode for a View. By default smoothing (antialiasing) is applied to all GUI
graphics. This component can be used to switch this smoothing off or back on again.
Connectors
View to display the rectangle View The same View as the input, View
on but anything connected here
is drawn on top
- 434 -
COMPONENTS
Description
The Sort Float Array primitive sorts the elements in the input array into ascending numerical order.
Connectors
- 435 -
CHAPTER 2
Description
The Sort String Array component sorts an array of strings into ascending alphabetical order.
Connectors
Source string array String Array The sorted array String Array
- 436 -
COMPONENTS
SpeakUp Claw
Description
This component works in conjunction with the FlowPaw component and allows you to receive data
from a SpeakUp click board which is attached to one of the claws on your FlowPaw.
The SpeakUp click board comes with its own software that allows you to program the board with a set
of phrases or commands that you want it to recognise. Within the software that does this each
command is allocated a message id and it's this id that gets sent to FlowStone whenever one of the
phrases is picked up by the board.
Connectors
- 437 -
CHAPTER 2
Stream Add
Description
Connectors
- 438 -
COMPONENTS
Stream Divide
Description
This component divides the first Stream value by the second one.
Connectors
- 439 -
CHAPTER 2
Description
This component compares the two inputs and returns a Stream Boolean based on whether the first
input is greater than the second input.
Connectors
- 440 -
COMPONENTS
Description
This component compares the two inputs and returns a Stream Boolean based on whether the first
input is greater than or equal to the second input.
Connectors
- 441 -
CHAPTER 2
Description
This component compares the two inputs and returns a Stream Boolean based on whether the first
input is less than the second input.
Connectors
- 442 -
COMPONENTS
Description
This component compares the two inputs and returns a Stream Boolean based on whether the first
input is less than or equal to the second input.
Connectors
- 443 -
CHAPTER 2
Stream Max
Description
This component compares the two inputs and returns the greater of the two.
Connectors
- 444 -
COMPONENTS
Stream Min
Description
This component compares the two inputs and returns the lower of the two.
Connectors
- 445 -
CHAPTER 2
Stream Multiply
Description
Connectors
- 446 -
COMPONENTS
Stream Subtract
Description
Connectors
- 447 -
CHAPTER 2
Stream to Double
Description
Double Stream is similar to standard Float Stream except that it works at double the precision. It is
particularly useful for counters.
Connectors
- 448 -
COMPONENTS
String
Description
The String component allows you to enter and view character string data. To add a string just click on
the main body of the component and type it in. Press Return, Tab or just click away to finish editing.
You can copy and paste data using the standard accelerator key combinations (CTRL+C,X and V).
You can also change the type by right-clicking on the input or output. A pop-up menu will appear as
shown below.
Connectors
- 449 -
CHAPTER 2
String Array
Description
The String Array component creates an array of strings by setting, inserting and deleting individual
elements in the array. You define the index of the element you want to refer to and if needed the value
you want to set or insert at that index. The array will resize automatically to accommodate elements
set or inserted at indexes higher than the current size of the array.
Connectors
The reference index used for Int Trigger sent when the array Trigger
set, insert and delete has been changed
Set the value at the index Trigger The number of array entries Int
- 450 -
COMPONENTS
Description
The String Array Find primitive will find the first occurrence of a given string in the array. You can
choose whether comparisons are case sensitive. You can also choose whether to reverse the direction
of the find and start at the end of the array working backwards towards the front. By default the find will
start at the beginning of the array and work forwards.
Example
If the source array is Apple, Banana, Orange, Pear then finding “Orange” would return an index of 2.
However, if you change the Rev input to True then the result would be 1.
Connectors
- 451 -
CHAPTER 2
Description
The String Array Get At component extracts a particular entry from a String Array.
Connectors
The source array of text String Array The number at the given String
strings index
The index to get the value Int Trigger sent when the string Trigger
for has been extracted
- 452 -
COMPONENTS
Description
The String Array Split primitive will break a given string array into two parts at a given point. Note that
the split position starts at zero.
Connectors
Source string array String Array String array to the left of the String Array
split
Position at which to make Int String array to the right of String Array
the split (zero indexed) the split
- 453 -
CHAPTER 2
Description
This component converts a String Array to a single String by appending the entries in the array to each
other in order.
Example
Connectors
- 454 -
COMPONENTS
Description
This component converts a String Array to a single String by appending the entries in the array to each
other in order and inserting the Sep input string in between entries to separate them.
Example
The array “Apples”,”Oranges”,”Pears” with Sep set to “,” would become “Apples,Oranges,Pears”.
Connectors
- 455 -
CHAPTER 2
String Extract
Description
The String Extract primitive will give you a sub-string of a particular size starting from a particular point
in the string. Note that positions start at zero.
Example
If the string is ‘FlowStone’ then using a Pos of 4 and a Count of 5 you’d get ‘Stone’.
Connectors
- 456 -
COMPONENTS
String Find
Description
The String Find primitive will find the first occurrence of a given sub-string inside a string. You can
choose whether comparisons are case sensitive. You can also choose whether to reverse the direction
of the find and start at the end of the string working backwards. By default the find will start at the
beginning of the string and work forwards.
Example
If the source string is ‘C:\Windows\Temp’ then using a Find string of ‘\’ the result would be 2. However,
if you change the Rev input to True then the result would be 10.
Connectors
- 457 -
CHAPTER 2
String Length
Description
Calculates the length of a string by counting the number of characters. This includes all whitespace
characters.
Example
If the source string is ‘Apples and Oranges’ then the length will be 18.
Connectors
- 458 -
COMPONENTS
String Queue
Description
The String Queue component stores string values in a queue. Values are pushed in and popped out
on a first in, first out basis (FIFO).
You can get the queue in String Array form from the third output. The array contains items in the order
they would be popped out – so the first item is at the front of the queue, the second item is next and so
on.
Connectors
Next number to be pushed Float The string at the front of the String
onto the queue queue
Trigger to pop the next Trigger The queue as a string array String Array
number off the queue
- 459 -
CHAPTER 2
String Replace
Description
The String Replace primitive will replace the characters at a particular position in a given string with
another sub-string. Note that positions start at zero.
Example
If the source string is ‘Apples and Oranges’ then using a Pos of 10 and sub-string of ‘Bananas’ you’d
get ‘Apples and Bananas’.
Connectors
- 460 -
COMPONENTS
String Split
Description
The String Split primitive will break a given string into two parts at a given point. Note that the split
position starts at zero.
Example
If the source string is ‘FlowStone’ then using a Pos of 4 you’d get ‘Flow’ and ‘Stone’.
Connectors
Position at which to make Int String to the right of the split String
the split (zero indexed)
- 461 -
CHAPTER 2
String Stack
Description
The String Stack component stores string values in a stack. Values are pushed in and popped out on a
last in, first out basis (LIFO).
You can get the stack in String Array form from the third output. The array contains items in the order
they would be popped out – so the first item is at the top of the stack, the second item is next and so
on.
Connectors
Next number to be pushed Float The number at the top of the String
onto the stack stack
- 462 -
COMPONENTS
String to ASCII
Description
The String to ASCII primitive converts a string character to its corresponding ASCII character code (or
more accurately the ISO Latin 1 character as ASCII is only defined through 127).
Connectors
- 463 -
CHAPTER 2
String to Hex
Description
Converts a string of characters to a string of hex. Each character is first converted to Ascii and then the
hex representation of that byte is used in the hex string.
For example, the character string “hello” is converted to the hex string “68656C6C6F”.
Connectors
- 464 -
COMPONENTS
Description
This component converts a String to an Array of Strings by splitting the string up character by
character and inserting the characters into the array.
Example
The String “Apples” would become a String Array with entries: “A”,”p”,”p”,”l”,”e”,”s”.
Connectors
- 465 -
CHAPTER 2
Description
This component converts a String to an Array of Strings by splitting the string up using the supplied
delimiter or field width or both to determine where to make a split.
Examples
The String “Apples,Oranges,Pears” with a delimiter of “,“ would become a String Array with entries:
“Apples”, “Oranges” and “Pears”.
The String “1011011101011110” with a Width of 4 would become a String Array with entries:
“1011”,”0111”,”0101”,”1110”
Connectors
- 466 -
COMPONENTS
String to Sysex
Description
This component takes a string of hex and sends it out as MIDI System Exclusive data. Useful for
controlling external MIDI hardware.
- 467 -
CHAPTER 2
String Format
Description
Creates a String Format for use with a Text component. A String Format combines a text style,
horizontal alignment and vertical alignment.
For example:
nowrapvertical, nowraprighttoleft.
The righttoleft style specifies that the reading order is right to left, nowrap prevents text from
wrapping when it runs outside the defined area and vertical will cause text to be drawn vertically
instead of horizontally.
Connectors
- 468 -
COMPONENTS
Connectors
- 469 -
CHAPTER 2
Subtract
Description
The component has template connectors which means it can be used with multiple data types
including Floats, Ints and Float/Int arrays. You can right-click on the connectors at any time to change
the type.
Connectors
Input 2 Template
- 470 -
COMPONENTS
Description
Subtracts the same float value from every entry in a float array.
Connectors
- 471 -
CHAPTER 2
Description
The Sum Float Array primitive adds all the elements in the input array together and outputs the result.
Connectors
- 472 -
COMPONENTS
Sunburst Gradient
Description
The Sunburst Gradient component draws either an ellipse or a rectangle with a sunburst fill effect. This
effect creates a seamless transition through increasing concentric circles from a centre to an outer
colour. This component useful for creating lighting effects.
The gradient is defined by a bounding area inside which the fill can be rectangular or ellipsoid. You
specify a centre colour and a colour at the boundary and you can set the coordinates of the centre
point as well.
- 473 -
CHAPTER 2
The H focus and V focus inputs determine the focus scale. These are float values in the range (0-1)
and determine at which point the centre colour starts to blend into the boundary colour. A focus scale
value of zero will begin transition immediately. A focus scale of 0.5 will have the centre colour for half
the range of the fill before blending to the boundary colour for the other half.
The above picture shows a sunburst fill with H Focus of 0.2 and a V Focus of 0.8.
Connectors
- 474 -
COMPONENTS
Sysex to String
Description
This component receives MIDI System Exclusive data and outputs it as a string of hex. Useful for
processing data from external MIDI hardware.
Connectors
- 475 -
CHAPTER 2
System Folders
Description
This component gives you the full paths to the Document and Application Data folders on the host PC.
This is needed if you want to store local settings.
You can also get the values of other system specific folder paths from the Custom output by supplying
the appropriate id to the Int input.
Connectors
- 476 -
COMPONENTS
- 477 -
CHAPTER 2
- 478 -
COMPONENTS
System Fonts
Description
The System Fonts component gives you a list of all the fonts installed on the host system. The font
names are provided as a string array and as a delimited string that you can look at using a Text
component.
Connectors
Trigger to get the font list Trigger Array of font names String Array
- 479 -
CHAPTER 2
Tan
Description
Connectors
- 480 -
COMPONENTS
Tan Inverse
Description
Standard trigonometric Inverse Tangent function with radians as the output units.
Connectors
- 481 -
CHAPTER 2
Tanh
Description
Connectors
- 482 -
COMPONENTS
Teaching Goal
Description
This component allows teachers to set goals for students to achieve within a schematic. You simply
add a component and then change its label to give it a memorable name.
After that you set up your schematic so that when a student successfully achieves the task you want
them to achieve, your schematic sends a trigger to the Teaching Goal.
This is used in conjunction with the Goal Progress component to allow teachers to see how students
are progressing.
Connectors
- 483 -
CHAPTER 2
Tempo
Description
When your VST is used within a host these components will tell you the current host tempo in beats
per minute (BPM). This is most often used when creating tempo synchronised effects.
There are two versions of the Tempo primitive a Stream version for use in Poly or Mono sections and a
Float version for use in green data sections.
Connectors
- 484 -
COMPONENTS
Text
Description
The Text component allows you to enter and view character string data that stretches over several
lines. To add a string just click on the main body of the component and type it in. Press Return to start
a new line. Press Tab or just click away to finish editing.
You can copy and paste data using the standard accelerator key combinations (CTRL+C,X and V).
You can also use the mouse wheel, PGUP, PGDN, HOME and END keys to navigate text that spans
many lines.
The Text component can be used for generating fixed arrays of Floats or Ints as a list of numbers
separated by line breaks can be automatically converted to a Float or Int Array (and vice-versa).
The component can be resized horizontally and vertically for viewing larger amounts of text.
Connectors
- 485 -
CHAPTER 2
Text Draw
Description
Draws text on a view. You specify the area into which the text will be drawn together with any
formatting options.
Connectors
View to display the text on View The same View as the input, View
but anything connected here
is drawn on top
- 486 -
COMPONENTS
Text Load
Description
Connectors
Full path to the text file on String The contents of the text file String
your hard disk
Trigger to load the file Trigger Trigger when the file has Trigger
loaded
- 487 -
CHAPTER 2
Text Save
Description
Connectors
- 488 -
COMPONENTS
Ticker 100
Description
The Ticker 100 component sends a trigger roughly 100 times per second. The component uses a
Windows timer and therefore cannot be relied upon to be accurate. This component is useful for
animation or for restricting data flow through a schematic.
Connectors
- 489 -
CHAPTER 2
Ticker 25
Description
The Ticker 25 component sends a trigger roughly 25 times per second. The component uses a
Windows timer and therefore cannot be relied upon to be accurate. This component is useful for
animation or for restricting data flow through a schematic.
Connectors
- 490 -
COMPONENTS
Time
Description
The Time primitive will give you any or all of the components of the current system time. The time is
sampled when you trigger the Get input and this time is stored in the component.
Connectors
Year Int
Hour Int
Minute Int
Second Int
Millisecond Int
- 491 -
CHAPTER 2
Timer
Description
The Timer component allows you to schedule a trigger to be sent some time in the future. You specify
a time duration and then start the timer. After the duration has elapsed a trigger will be sent through
the output. The timer will automatically schedule another trigger so that the triggers keep coming every
N milliseconds (where N is the duration).
For a one single shot timer just connect the trigger output to the Stop input.
The component uses a Windows timer and therefore cannot be relied upon to be accurate, particularly
for durations below 15 ms.
IMPORTANT: because of multi-threading you cannot trigger timers in response to MIDI events. This
can cause unexpected behaviour or even crash the software.
Connectors
- 492 -
COMPONENTS
Time Signature
Description
The Time Signature primitive outputs the current songs time signature when your VST plugin is used
within a host. This is represented by a numerator and denominator (for example, numerator=1 &
denominator=4 for time signature of 1/4 ). For more details see the VST SDK documentation.
Connectors
- 493 -
CHAPTER 2
Tooltip Help
Description
The Tooltip Help component allows you to add tooltip help to a module. The help text should be
connected to the String input. Paragraphs can be identified using the new line character ‘\n’ if using a
String component or by starting a new line in a Text component. The first line is assumed to be the
name and is formatted in bold when the tool tip displays.
Connectors
- 494 -
COMPONENTS
Translate
Description
Applies a translation transformation to the view. Any GUI components attached to this component are
translated accordingly.
Connectors
- 495 -
CHAPTER 2
Triangle
Description
The Triangle primitive produces a Triangle waveform. The phase input can be used for frequency
modulation (phase modulation).
Connectors
- 496 -
COMPONENTS
Trigger Blocker
Description
The Trigger Blocker components prevents a change to a value from propagating through a schematic.
Instead, changes at the input are stored until requested.
This can be useful when values are changing quicker than they are required further down in the
schematic. By inserting a trigger blocker you can increase performance by saving the message flow
into parts of your schematic where the updates are not required.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings, Booleans, Float/Int/String arrays and Areas. You can right-click on the
connectors at any time to change the type.
Connectors
- 497 -
CHAPTER 2
Trigger Button
Description
The Trigger Button component sends a trigger when its red button is clicked. This component is
incredibly useful and comes in handy in many, many situations.
You can get a Trigger Button using the “Q” shortcut key.
Connectors
- 498 -
COMPONENTS
Trigger Div
Description
This primitive is used to reduce the rate that triggers pass through. The second input (the divisor)
defines the reduction. If the divisor is one then all triggers pass through. If the divisor is two then only
every other trigger passes through. If the divisor is three then only every third trigger passes through
and so on.
Connectors
Divisor Int
- 499 -
CHAPTER 2
Trigger Switch
Description
The trigger switch is used to control the flow of triggers through a schematic. When the boolean input
is True then triggers pass through otherwise they are blocked.
The component has template connectors which means it can be used with multiple data types
including Floats, Ints, Strings, Booleans, Float/Int/String arrays, Triggers and Areas. You can right-click
on the connectors at any time to change the type.
Connectors
- 500 -
COMPONENTS
Unpack
Description
The Unpack component separates the original 4 Mono streams from a Mono4 stream. The Mono
streams would have previously been packed together using the Pack component to create a Mono4
stream.
Using Unpack (and Pack) can radically increase the efficiency of a Mono section.
Connectors
- 501 -
CHAPTER 2
Video Delay
Description
The Video Delay component will delay the output of a video stream by a fixed number of frames.
All you need is a stream of video images at the first input and an integer number of frames to delay by
at the second input.
Connectors
- 502 -
COMPONENTS
Video Save
Description
The Video Save component allows you to save to a .AVI movie file.
Connect your source video images to the first input. These will be recorded as they play.
At the Path input you need to supply the full path to the target .avi file that you want to save to.
To specify the codec attach a string with the appropriate 4 character code to the Codec input.
Alternatively you can connect a String with -1 in it and the software will ask you to pick a codec from
the standard dialog box.
The Rate input should be the frame rate in frames per second. If you leave this out then this will
assume the default value of 30 fps.
- 503 -
CHAPTER 2
Connectors
- 504 -
COMPONENTS
Video Stream
Description
This component allows you to stream video from media file locally or across a network.
You must provide a valid URL or file path. Width and Height are optional and default to 640 x 480
pixels.
To begin streaming, trigger the Start input. The video arrives as constant stream of bitmaps. If you
want to control when a frame comes out of the component you can set the Manual input to true and
use the Grab trigger to get a frame exactly when you want it. This is useful if you don't want every
single frame but maybe need them at a particular time interval or on demand.
You can Step through the video frame by frame by triggering the Step input. Note that this is not the
same as manually grabbing a frame. When stepping the streaming is paused between steps whereas
when grabbing frames streaming continues between grabs.
To resume play after stepping trigger the Pause/Play input. This can also be used to pause playback.
Triggering the Stop input will end streaming and you can only resume by re-starting from the
beginning.
Most popular image formats are supported including AVI, MPEG, MP4, M4V, WMV, MOV.
- 505 -
CHAPTER 2
Connectors
URL or file path for the String Video as a set of streaming Bitmap
source video bitmap images
- 506 -
COMPONENTS
View Area
Description
The View Area component will give you the dimensions of a View in the form of an area. This is useful
if you’re trying to draw something exactly within the bounds of a view or if you want to position
elements relative to the size of the view.
Connectors
- 507 -
CHAPTER 2
View Size
Description
The View Area component will give you the dimensions of a View. This is useful if you’re trying to draw
something exactly within the bounds of a view or if you want to position elements relative to the size of
the view.
Connectors
- 508 -
COMPONENTS
Voices to Poly
Description
The Voices to Poly module generates voice managed Poly signals used to control a polyphonic
synthesizer.
Note: Currently there is no reason to use this component on its own, instead you should use the MIDI
to Poly module which combines the MIDI to Voices and Voices to Poly components.
- 509 -
CHAPTER 2
Connectors
MIDI data MIDI The normalised frequency for each active voice Poly
in range (0-1) where 1 is half sampling rate
The voice tag for each channel (if used with a Poly
MIDI to Multi Voice)
- 510 -
COMPONENTS
Description
The Editor Open primitive will tell you whether the plugin editor window is open in a host. This is very
useful for bypassing calculations that result in visual changes which will not be visible when the editor
window is closed.
When the state of the window changes from open to closed or closed to open this component will send
a trigger immediately so that you can respond to the change.
Connectors
- 511 -
CHAPTER 2
VST Parameter
Description
The VST Parameter primitive defines a preset parameter that can be automated or store preset data
for each program. All the built in knob modules each contain a single VST Parameter component so
that the knobs can be automated and store preset data in exported exes.
When a VST Parameter component is connected to a Preset Manager component it becomes part of
the preset system. This connection is made through the Preset input connector. When the Preset
Manager changes program the VST Parameter component will respond accordingly.
The VST preset parameter system requires values to be floats in the range 0 to 1. You must
make sure that you transform any values you want to store into this range before passing them to the
VST Parameter component.
If you want the host to display something other than the 0-1 float value you can create a section of
schematic that processes the float output of the VST Parameter component and connect it to the Disp
input.
Examples
1. You could have switch that you want to show On for 1.0 and Off for 0.
2. You might have a multiplier that you want to show as Level 1, Level 2 or Level 3. You’d convert the
input value to 0-1 by calculating (value-1)/2. This would give you 0,0.5 and 1. When the preset
changes you’d process the result back to a number in the range 1-3, append it onto “Level ” and pass
the result to the Disp input.
- 512 -
COMPONENTS
You can choose whether the parameter is automatable and also whether it is a preset. For example,
you might want to be able to automate a master volume control but not have it store a different value
for each program.
Connectors
Set the current value (must Float Trigger sent just before a Trigger
be in range 0-1) value change occurs
- 513 -
CHAPTER 2
Description
The VST Parameter Array primitive defines an array of VST parameters that can be automated or
store preset data for each program. This is a specialised component used for storing preset data for
step sequencers and the like.
When a VST Parameter Array component is connected to a Preset Manager component it becomes
part of the preset system. This connection is made through the Preset input connector. When the
Preset Manager changes program the VST Parameter Array component will respond accordingly.
The VST preset parameter system requires values to be floats in the range 0 to 1. You must
make sure that you transform any values you want to store into this range before passing them to the
VST Parameter Array component.
If you want the host to display something other than the 0-1 float value you can create a section of
schematic that processes the float output of the VST Parameter component and connect it to the Disp
input.
- 514 -
COMPONENTS
Examples
1. You could have switch that you want to show On for 1.0 and Off for 0.
2. You might have a multiplier that you want to show as Level 1, Level 2 or Level 3. You’d convert
the input value to 0-1 by calculating (value-1)/2. This would give you 0,0.5 and 1. When the preset
changes you’d process the result back to a number in the range 1-3, append it onto “Level ” and
pass the result to the Disp input.
You can choose whether the parameters in the array are automatable and also whether the array is a
preset. If the array data applies globally and is large in size for example you may not want to maintain
copies for each program so switching the Preset option off would save on memory.
- 515 -
CHAPTER 2
Connectors
Connector for Preset The array for the current Float Array
communicating with Preset program
Manager or Preset Text File
The current array index Int The current array index Int
Set the current value for the Float Trigger sent just before a Trigger
above array index (must be value change occurs
in range 0-1)
- 516 -
COMPONENTS
Description
The VST Plugin Info primitive allows you to provide default VST plugin information for a module. This
is optional but is helpful if you want to use the same information every time you export a plugin. Any
data not provided will use the global setting.
In order to use the component just drop it somewhere inside your VST plugin module.
Connectors
- 517 -
CHAPTER 2
Description
The VST Preset String primitive defines a VST parameter string that can be stored for each program.
This works in a very similar way to the VST Parameter component except that this is string data not a
number and so it can't be automated.
When a VST Preset String component is connected to a Preset Manager component it becomes part
of the preset system. This connection is made through the Preset input connector. When the Preset
Manager changes program the VST Preset String component will respond accordingly.
VST Preset Strings can be used for storing file paths or filenames for loading a particular sample but
they could be used to store any other kinds of data, really anything that can be represented as a string.
Connectors
Set the string for the current String Trigger sent just before a Trigger
program value change occurs
- 518 -
COMPONENTS
Description
This component will read data from a wave array at sample rate. There are two indexes, one to select
the wave from the array and one for the current sample(s) within the selected wave. The outputs are
the current samples for the left and right channels in the selected wave. If the selected wave is mono
both outputs will give the same value.
Connectors
- 519 -
CHAPTER 2
Wave File
Description
The Wave File component loads a wave file from your hard disk. You supply the complete path to the
file then trigger the Load input. The wave file is loaded and stored. You can access the data using a
Wave Read component.
The very last output on the component indicates the current state of the component using a flag. The
possible flags are as follows:
- 520 -
COMPONENTS
Connectors
Full path to wave file String Wave file data in a buffer Mem
- 521 -
CHAPTER 2
Description
The Wave File Array component allows you to construct a wave array by loading in individual wave
files one at a time. You specify a size for the array first and trigger the Resize input to create it.
To load in a file you need to specify an array index to say where it will go and then the complete path
to the file. The Load trigger will then load the file.
By default all waves are stored in stereo format. If you are only using mono waves then you can set
the Mono input to True and save some memory. If you set the Mono input when you have stereo wave
files loaded they will be converted permanently to mono.
- 522 -
COMPONENTS
Connectors
Trigger to resize the array. Trigger Array containing the sample Int Array
Note that if you make the rates for each wave in the
wave smaller it will be array
irreversibly truncated
Trigger to clear the wave at Trigger Array containing the number Int Array
the specified index of samples per channel for
each wave in the array
- 523 -
CHAPTER 2
Wave Read
Description
The Wave Read component will read data from a memory buffer at sample rate. The index input
specifies which sample to read. For stereo buffers the samples for the left and right channels at the
given index are sent to the two outputs. For mono buffers the same sample is sent to both outputs.
Connectors
- 524 -
COMPONENTS
Description
The Wave Read Hop component will read data from a memory buffer at sample rate. The index input
specifies which sample to read. For stereo buffers the samples for the left and right channels at the
given index are sent to the two outputs. For mono buffers the same sample is sent to both outputs.
This component is identical to the Wave Read except that, for efficiency, it allows you to provide a
Hop. This saves cpu by only performing the lookup every 'Hop' number of samples.
The Hop is specified as a power of 2 so 1=lookup every sample, 2=lookup every 4 samples, 3= every
8 samples and so on.
Connectors
- 525 -
CHAPTER 2
Wave Table
Description
The Wave Table component will take any 256 sample wave and create a bandlimited wavetable. This
allows you to define your own waveform and turn it into a playable sound source which does not alias.
The component uses FFT analysis to remove unwanted frequencies from the wave and creates 256
bandlimited tables which can be read using the Wave Table Read component.
Connectors
Trigger to create the wave Trigger Trigger when the wave table Trigger
table has been calculated
- 526 -
COMPONENTS
Description
The Wave Table Read component is used to read wave data created by the Wave Table component. It
works very much like the low-level oscillator components. You supply a frequency (in range 0-1, where
1 is nyquist) and a wave table and the component will read the data from the appropriate section of the
table.
- 527 -
CHAPTER 2
Web Cam
Description
This component allows you to capture an image from the default connected web cam.
Connectors
- 528 -
COMPONENTS
Web URL
Description
The Web URL component allows you to open a web link by opening a web browser.
Connectors
- 529 -
CHAPTER 2
Wii Nunchuck
Description
The Wii Nunchuk component allows you to receive input data from a Nunchuk controller attached to a
Nintendo Wiimote.
The Wiimote input must be connected to the Wiimote output of a Wiimote component in order to work.
Obviously that Wiimote component must also be associated with the relevant hardware.
- 530 -
COMPONENTS
Connectors
- 531 -
CHAPTER 2
Wiimote
Description
The Wiimote component allows you to receive input data from a Nintendo Wiimote that has been
paired with your PC via Bluetooth.
2. Go to Devices and Printers under the Control Panel and click Add a Device
Once the Wiimote is paired you can pick it up by triggering the Connect input to the component. The
first Boolean output will change to True when the connection has been established.
- 532 -
COMPONENTS
Connectors
- 533 -
CHAPTER 2
Wiimote IR
Description
The Wiimote IR component allows you to receive input data from the IR camera of a Nintendo
Wiimote.
The Wiimote input must be connected to the Wiimote output of a Wiimote component in order to work.
That Wiimote component must also be connected to a Wiimote that is paired with your PC.
The infra red camera at the front of the Wiimote can detect and track up to 4 IR points or dots. The
visibility state and position of these dots is returned by this component.
- 534 -
COMPONENTS
Connectors
- 535 -
CHAPTER 2
Wireless Input
Description
The Wireless Input and Wireless Output primitives provide two ends of a wireless link. Wireless links
provide a mechanism for passing data through the module hierarchy without having to create any
physical link.
The components have single Template input or output connectors. To change the type either right-click
on the connector and choose a type from the pop-up menu or create a link from the connector to
another component and the template will pick up the type.
A connection is established between a Wireless Output and a Wireless Input only if the following three
conditions are met:
1. The Wireless Input must appear in a module below the Wireless Output in the hierarchy
2. The Wireless Input and Output must have the same label
3. The Wireless Input and Output must have the same connector type
When a link is established the connection indicators on the Wireless Input and Output will light up.
- 536 -
COMPONENTS
Wireless links only work down the module hierarchy, you can’t link back upwards. Also, the range of a
wireless output only extends as far as the next wireless output below it which has the same label and
connector type.
The same wireless output can connect to multiple wireless inputs and vice-versa so long as they
conform to the 3 criteria described above.
Connectors
- 537 -
CHAPTER 2
Wireless Output
Description
The Wireless Output and Wireless Input primitives provide two ends of a wireless link. Wireless links
provide a mechanism for passing data through the module hierarchy without having to create any
physical link.
The components have single Template input or output connectors. To change the type either right-click
on the connector and choose a type from the pop-up menu or create a link from the connector to
another component and the template will pick up the type.
A connection is established between a Wireless Output and a Wireless Input only if the following three
conditions are met:
4. The Wireless Input must appear in a module below the Wireless Output in the hierarchy
5. The Wireless Input and Output must have the same label
6. The Wireless Input and Output must have the same connector type
When a link is established the connection indicators on the Wireless Input and Output will light up.
- 538 -
COMPONENTS
Wireless links only work down the module hierarchy, you can’t link back upwards. Also, the range of a
wireless output only extends as far as the next wireless output below it which has the same label and
connector type.
The same wireless output can connect to multiple wireless inputs and vice-versa so long as they
conform to the 3 criteria described above.
Connectors
- 539 -
CHAPTER 2
X Drag Accumulate
Description
The X Drag Accumulate component allows you to control a parameter by horizontal mouse drag
operations on a mouse area. You define the minimum and maximum limits for the parameter then
when a user drags horizontally on a mouse area the parameter will change between the limits
accordingly.
You can define the scale at which the changes apply. A scale of 1 will move the parameter by 1 unit
per grid square moved by the mouse. A scale of 0.1 will move the parameter by 0.1 units per grid
square moved by the mouse.
The most common use of this component would be in slider type controls.
- 540 -
COMPONENTS
Description
The X10 Active Home component allows you to control and receive input data from a X10 home
automation modules.
X10 commands are sent as text. Simply connect a valid command string to the first input then trigger
the Send input to send it.
Data received from X10 modules like PIRs (passive infra red) are sent out through the “In” output.
Any errors that occur are sent through the Error output.
Connectors
- 541 -
CHAPTER 2
XBox 360
Description
The XBox 360 component allows you to receive input data from a connected XBox 360 controller.
To use this you must have an XBox 360 controller attached to your PC. If you trigger the Connect input
on the component it will pick up the controller and you can then use the outputs to respond to
controller input.
- 542 -
COMPONENTS
Connectors
Set left rumble level (0-1) Float Is the A button pressed Boolean
Set right rumble level (0-1) Float Is the B button pressed Boolean
- 543 -
CHAPTER 2
Amount to move the Float Trigger sent when the drag Trigger
parameter per grid square operation ends (i.e. On
mouse movement mouse button release)
Set the current value of the Float Whether a drag operation is Boolean
parameter in progress
- 544 -
COMPONENTS
XY Drag Accumulate
Description
The XY Drag Accumulate component allows you to control a pair of parameters by mouse drag
operations on a mouse area. You define the minimum and maximum limits for the parameters then
when a user drags on a mouse area the parameters will change between the limits accordingly.
You can define the scales at which the changes apply. A scale of 1 will move the parameter by 1 unit
per grid square moved by the mouse. A scale of 0.1 will move the parameter by 0.1 units per grid
square moved by the mouse.
Use this component for controls where elements need to be moved around the display.
Connectors
- 545 -
CHAPTER 2
Set the current value of the Float Trigger sent when the drag Trigger
horizontal parameter operation ends (i.e. On
mouse button release)
Amount to move the vertical Float Trigger sent after the Trigger
parameter per grid square parameter has just changed
mouse movement
Set the current value of the Float Trigger sent when the drag Trigger
vertical parameter operation ends (i.e. On
mouse button release)
- 546 -
COMPONENTS
Y Drag Accumulate
Description
The X Drag Accumulate component allows you to control a parameter by vertical mouse drag
operations on a mouse area. You define the minimum and maximum limits for the parameter then
when a user drags horizontally on a mouse area the parameter will change between the limits
accordingly.
You can define the scale at which the changes apply. A scale of 1 will move the parameter by 1 unit
per grid square moved by the mouse. A scale of 0.1 will move the parameter by 0.1 units per grid
square moved by the mouse.
The most common use of this component would be in slider type controls or knobs.
- 547 -
CHAPTER 2
Connectors
Amount to move the Float Trigger sent when the drag Trigger
parameter per grid square operation ends (i.e. On
mouse movement mouse button release)
Set the current value of the Float Whether a drag operation is Boolean
parameter in progress
- 548 -