BioEra

 

Updated on May 6, 2012. The most recent version of this manual can be accessed here.

 

Introduction. 7

Installation. 8

Biofeedback device. 8

DVD. 8

Hardware requirements 8

Upgrades 8

3D graphics 9

Supported devices 9

User interface. 10

Designer 10

Runtime. 10

Examples 10

Architecture. 11

Element properties 11

Advanced element properties 11

Chart properties 11

General Tab. 11

Colors Tab. 12

Pen properties 12

Rendering hints 12

System settings 13

Design settings 14

Colors 16

Nested designs 16

Advanced architecture details 16

Time measure. 16

Environmental variables 17

Elements 17

ActivityDetector 17

Alpha200. 18

Alpha400. 18

ApplicationInteractor 18

ApplicationPlayer 19

BarDisplay. 19

BarDisplay2. 20

BrainMaster 20

BrainMasterAtlantis 20

BTGP38. 20

Button. 20

ChartLayoutManager 21

ChartLine. 21

ChartTextOverlay. 22

CMixer 22

ColorChartSensor 22

ColorSet 23

ComboToolbarControl 23

ComplexFFTTransform.. 23

ComplexToVector 23

ComplexTransform.. 24

ComponentInteractor 24

Counter 24

Counter2. 24

Counter3. 24

CustomElement 24

CustomInteractor 25

DataToText 25

DAQ6008. 26

DayTimer 26

DayTimeCoincidence. 26

DebuggerElement 27

Decimator 27

Delay. 27

Demultiplexer 27

DesignArguments 27

DesignInteractor 28

DeviceSet 28

DialogComboList 28

DialogFile. 28

DialogText 28

DVDPlayer 29

EDFFileReader 30

EDFFileWriter 30

EEGNeuroAmp. 31

ElementArray. 31

ElementInteractor 31

Evaluator 31

ExcelFileReader 32

ExcelFileWriter 33

ExpressionEvaluator 33

FFTTransform.. 34

FFT2Transform.. 34

FileStorageSource. 35

FileStorageWriter 35

Filter 35

FlashPlayer 35

FloatToScalar 35

Formatter 36

GainInteractor 36

Auto mode. 36

Generator 37

GroupInteractor 38

GroupPropertySet 38

HotSpotMouseSensor 38

IconToolbarControl 39

ImageDisplay. 39

ImageMixer 39

ImageSource. 39

ImageSequencer 40

ImageToMatrix. 40

ImageTransform.. 40

InputCheckbox. 40

InputComboList 40

InputList 40

InputText 40

InteractiveScalarSource. 40

Iterator 40

JandJ. 41

KeyboardAdvSource. 41

KeyboardSource. 41

KeyInteractor 41

KeyAdvSelector 42

KeySelector 42

KT88-1016. 42

Lamp. 43

Lightstone. 43

LogicalMixer 43

LogicalMixerM. 43

MatrixToImage. 43

MatrixTransform.. 43

MediaPlayer 44

MenuItemControl 44

MenuListControl 44

MF_Temperature. 45

MIDI 45

MidiScale. 45

MindMaster 46

MitsarQEEG. 46

Mixer 46

MixerM. 46

ModEEG_P2. 47

ModEEG_P3. 47

ModEEG_v21. 47

MorphInteractor 47

MouseAdvPosition. 47

MouseChartSensor 47

MouseInteractor 48

Multiplexer 48

NestedDesign. 48

NestedInputs 49

NestedOutputs 49

NestedProperties 49

NetworkClient 50

NetworkServer 51

Neurobit 51

NeuroServerSource. 51

NeuroServerWriter 51

NeuroSync. 51

NeuroSyncRemontage. 51

Nia. 51

Nonin4100. 51

Notice. 52

NoticeYesNo. 52

NumericDisplay. 52

ObjectCompare. 52

ObjectCounter 52

ObjectDebugger 52

OrbitalDisplay. 53

Oscilloscope. 53

Displayable range. 55

OscilloscopeXY. 55

OscilloscopeXYZ. 55

OSInfo. 55

OSInteractor 55

PatternRunner 56

PatternTrainer 56

PCMAudioPlayer 57

PCMAudioSource. 57

PCMMixer 58

PET. 58

PN_Pendant_EEG. 58

PN_Pocket_A3. 59

Pendant mode. 59

PN_Pulse1. 59

PianoKeyboard. 59

Polygraph. 60

Displayable range. 61

PostProcessor 61

ProgressBarDisplay. 61

PropertyBuilder 61

PropertyGetter 62

PropertySetter 62

RangeFilter 63

RangeMapper 63

RateLimiter 63

RateLimiter2. 64

RateNormalizer 64

RawFileReader 64

RawFileWriter 64

ReportGraph. 64

ReportTable. 65

Resampler 65

RouteGame. 66

RuntimePanel 66

QPET. 66

ScalarBuffer 67

ScalarCrossTimeRatio. 68

ScalarCrossTransform.. 68

ScalarInstantTransform.. 68

ScalarSet 68

ScalarShifter 68

ScalarSingleMap. 69

ScalarTimeRatio. 69

ScalarTimeTransform.. 69

ScalarToLogical 70

ScalarToFloat 70

ScalarToText 70

ScalarsToVector 70

Selector 71

ScalarValue. 71

Sequencer 72

SerialDevice. 72

SerialPort 72

SetInfo. 73

Settings 73

Slider 73

SoundFileReader 73

SourceSelector 74

Status 74

StatusML. 74

SQLReader 74

SQLWriter 74

Database Installation. 75

SimulationSource. 76

SteppedSoundFileReader 76

SteppedSoundPlayer 77

StreamToVector 77

StreamToVector2. 78

SubVector 78

SubVector2. 78

Synchronizer 78

Switch. 79

SystemEventSource. 79

SystemInteractor 80

TextDisplay. 80

TextFileReader 80

TextFileWriter 80

TextToLogical 80

TextToScalar 80

TextTransform.. 81

TextSet 81

TextValue. 81

Threshold. 81

TimeInterval 82

Timer 82

TimeRangeFilter 82

TimeSource. 82

ToggleButton. 83

Toolbar 83

Topograph. 84

USB_FTDI 84

Valve. 84

Vector2Transform.. 84

Vector3DDisplay. 85

VectorBuffer 85

VectorCrossTransform.. 85

VectorConcatenator 85

VectorDisplay. 85

VectorExpressionEvaluator 86

VectorInstantTransform.. 86

VectorLineDisplay. 86

VectorMixer 87

VectorProperty. 87

VectorStorageSource. 87

VectorStorageWriter 87

VectorSTransform.. 87

VectorTimeTransform.. 88

VectorToComplex. 88

VectorToScalar 88

VectorValue. 88

VideoCameraImageSource. 89

VideoCameraRecorder 89

VideoFileImageSource. 89

VideoFileImageWriter 89

VideoFilePlayer 89

VideoScreenImageSource. 90

VLCPlayer 90

WaveRider 90

WindowInteractor 90

WiTilt 90

WMDVDPlayer 91

WMVideoFilePlayer 91

WavFileWriter 91

XDFFileReader 91

XDFFileWriter 92

XmlFileReader 92

XmlFileWriter 92

XmlNetController 92

XmlNetServer 93

Support 94

Diagnostic. 94

Feedback and comments are welcome. 94

New versions 94

Related links 94

Copyright notice. 94

 

 

Introduction

 

BioEra software is for real time analyzing and real time presentation. Usually works together with a biofeedback device with ability to deliver data to a computer (via USB, serial port, wireless or other media).

 

BioEra provides very flexible mechanisms to create and visually edit designs. A design contains a signal flow model from input (like a biofeedback device) to output (like visual or sound feedback). The signal flow is passed through visually edited objects (elements). There are hundreds of built-in elements and functions.

 

Virtually any type of real time signal processing is possible. No programming language is required to create a design; entire process can be built visually by connecting pins and editing properties.

 

Most BioEra uses are for processing data from a biofeedback device. But data can be read also from other sources (archive files, simulators or data sources connected via network).

Installation

 

BioEra installer is very easy to use and BioEra is ready to run immediately after installation.

 

Biofeedback device

 

After installation BioEra is configured to read data from Simulation or File source. To receive data from a real device, select from Menu ‘Tools’ and then ‘Select device’ and follow the instructions.

 

DVD

To play DVD movies a DVD decoder must be first installed in system. Most DVD decoders which work with Windows Media Player should also work with BioEra, below is the list of the most popular (and most tested) decoders:

 

1.  InterVideo DVD - this decoder comes with WinDVD software. It can be also purchased here: http://www.corel.com/servlet/Satellite/us/en/Product/1177441133801

2.  Cyberlink DVD – comes with Cyberlink DVD player, can be purchased here: http://www.cyberlink.com/winxp_plugin/2007/enu/wmp.jsp

 

The above links are for decoders on Windows XP and were tested with BioEra. Other decoders (not tested but may also work) are listed here.


Hardware requirements

 

Currently only Windows system (XP, Vista and Windows 7) is officially supported. Support for other systems (like Linux or Mac OS) will be added if there is a demand.

 

To run most designs (up to hundred elements) the requirements are relatively low (Pentium II processor with 64M RAM), even notebooks should work just fine.

Upgrades

The best way to upgrade is to uninstall previous version and install new one and keep copy of files (designs, archives) manually. It is also safe to install new version on previous version without un-installation.

 

3D graphics

BioEra supports 3D real time rendered graphics on most computers. If 3D support is not available, then BioEra it will be detected and this message will be shown: 3D graphics has been disabled.

 

If you notice the above message, it means 3D support has not been detected in the system. It will not appear again unless you change system setting “3D graphics support” to ON. Possible reasons why this happened:

1.  Older graphics cards not always support all required features. ATI or NVidia cards are recommended with latest drivers installed.

2.  Another possible reason is that DirectX has not been installed, or its version is too old. Make sure that your version of DirectX is 9.0c and released in December 2006 or later. You can check this (and other parameters) using this command: dxdiag (type it in command line). Those are the most important values to verify on dxdiag screen: picture1 and picture2.

 

After you have fixed your DirectX and you are ready to try 3D again, change the system setting “3D graphics support” back to ON and restart BioEra. Then load a design with 3D graphics (most examples use it).

 

Supported devices

BioEra has a built-in driver support for devices listed below:

·        P-I and P-II (Abhayamudra) EEG/HEG pocket-neurobics.com

·        Pendant - EEG pocket-neurobics.com

·        PET - EEG, EMG, ECG, GSR www.brainquiry.nl

·        Neurobit – EEG, EMG, HRV, GSR, TEMP http://www.neurobitsystems.com

·        EEGNeuroAmp – EEG http://www.eeginfo.com

·        J&J C2-Plus – EEG, EMG, ECG, Temperature http://www.jjengineering.com

·        JCPirHEG – HEG Jeff Carmen’s

·        QPET - EEG, EMG, ECG, GSR www.brainquiry.nl

·        MindMaster - EEG www.mindmaster.de

·        MF_Temperature – Temperature http://www.mindfield.de

·        QDS – EEG http://www.qeeg.com.ar/defaultENG.htm

·        BrainMaster Atlantis – EEG, HEG www.brainmaster.com

·        WaveRider 2cx, Pro – EEG www.mindpeak.com

·        PN_Pulse1 - HEG pocket-neurobics.com

·        Alpha200, Alpha400 EEG www.telediagnostic.com

·        MitsarQEET – QEEG 25 channels http://www.mitsar-medical.com/

·        Contec KT88-1016 – QEEG 16 channels (installed separately from BioEra). Look for the installation instructions here.

·        Nia Neural Impulse Actuator

·        Nonin4100 – bluetooth (wireless) oximeter www.nonin.com

·        ModEEG - EEG openeeg.sourceforge.net

·        Lightstone – HEG and GSR http://www.wilddivine.com

·        WiTilt – accelerometer and gyrometer www.sparkfun.com

·        DAQ6008 – data acquisition USB device www.ni.com

·        Roshi, EEG device

 

Here is information how to request support for a new device in BioEra.

User interface

In the default mode there are two windows: Designer and Runtime. Designer window is for development and serves as a visual editor. Runtime window (one or more) presents results to the user (feedback). It is possible to have two Runtime windows and multiple dialogs.

Designer

Designs are created and edited visually with mouse and keyboard.

 

Brief description:

a.  To add new element press right mouse button and choose “new” from the popup menu. Choose any element from the list.

b.  To edit existing element highlight it and then press right mouse button over it and choose “properties” or press “space” on keyboard.

c.  To move existing element to new position press left button and drag. It is possible to highlight group of elements and drag them all.

d.  To learn about functionality press right mouse button and choose “description”.

e.  To add connection between output and input of two elements, click on node of an element, then move mouse to another node and click again.

f.  To remove an element or a connection, highlight it and choose “remove” with right mouse button or press “Del” button on the keyboard.

g.  To view a problem in the element (this can be observed when a small red cross appears in the bottom left corner of the element), choose “view error” with right mouse button.

h.  To load previously saved design, choose from menu System->Load and choose design file.

i.  To save your design in file, choose from menu System->Save or System->Save as.

j.  To switch between Edit and View mode of Runtime, choose Runtime->set edit mode (Runtime->set view mode) in Designer menu.

k.  To highlight group of elements press Ctrl button and click over next elements.

 

Runtime

There are 2 Runtime windows available. By default only one is visible, the other one can be set visible in Design Settings.

Runtime window can be in one those modes: View or Edit. Mode can be selected in designer. The Edit mode is for chart layout edition. The View mode is default when BioEra starts.

Examples

A few examples are included with BioEra to let quick start a simple training. To load any of them click on Menu->System->LoadDesign and navigate to design\examples folder. Example names are self explanatory, some of them contain one reward filter and others one reward and one inhibit filters. They demonstrate various types of feedback including:

·        3D Racer game

·        Video playback

·        Continuous tone

·        Binaural Beats

·        Midi

·        Simple PacMan game

·        Session report

 

Architecture

Element properties

Each element is configurable using properties. Properties dialog can be accessed on the mouse right button click popup menu. Each properties dialog has common tab ‘Element’ which contains element name and info. All other tabs are element specific and described in element description (listed below).

Advanced element properties

Each element has advanced properties. They are usually described in the element description (listed below). For more details see advanced architecture document.

 

Chart properties

All elements with charts (e.g. Oscilloscope) have chart properties. Chart properties provide many ways to customize chart appearance.

 

General Tab

 

·        X, Y – position of the chart on the Runtime Window is shown here and can be modified.

·        Width, Height – size of the chart

·        Left margin, Right margin, Top margin, Bottom margin – each chart has margins, with their default sizes. If the value here is -1, then the default value is used. Otherwise the select size (in pixels).

·        Show name – most charts by default show the name in its corner. This option can enable/disable that.

·        Show chart frame – Select whether to show default chart’s frame

·        Show horiz axis, Show vert axis - Select whether to show default the axis

·        Show horiz desc, Show vert desc - Select whether to show default axis descriptions

·        Show horiz unit, Show vert unit - Select whether to show the physical measure unit e.g. [uV] or [s]

·        Show chart on start – if not selected, then the chart will not appear on start (it can be then make visible during runtime using ElementInteractor)

·        Background image – each chart can have its own background image. This is powerful option to make it very effective, for example to replace all descriptions with a nice font and colors, this option can be used.

·        Background image layout – This option is used when chart is resized and background image is set. It defines how the background image should be resized.

o   TOP_LEFT – background image is not resized, it is shown in the top-left corner of the chart with its original sizes

o   FILL – background image is resized and covers entire chart.

o   CENTER - background image is not resized and shown in the center of the chart with its original sizes.

o   TILE – the background image is repeatedly painted to cover all area of the chart.

·        Resize mode – this option defines how the chart should be resized. The most common mode is FILL, other modes adds another level of flexibility

o   FILL – default mode, chart is resized proportionally to the main Runtime Window

o   CENTER – chart is NOT resized. It is put in the center of the area which would normally be covered by the resized chart.

o   TOP - chart is NOT resized. It is put at the top of the area which would normally be covered by the resized chart. This option is especially useful if we do not want to resize a text, and put it directly under another chart (e.g. Oscilloscope) which is resized.

o   LEFT, RIGHT – similar like TOP option, but the chart is put on the left or right side of the resizing area.

o   PROPORTIONAL – chart is resized proportionally to its original size.

·        Border image – this image will be used as border of the chart, see chapter about borders.

·        Transparent background – if this is selected, then this chart will show its background using the main Runtime’s image background. This will make this chart appear like it had a transparent background. NOTE: only the window’s background can be shown using this option, not other overlapped charts placed below this chart.

·        Frame – defines in which container the chart is placed. By default this is main Runtime window. But it can be other window Runtime2, separate Dialog or separate Frame. Separate dialog is a part of its Runtime, e.g. it closes when Runtime window closes, and it doesn’t have its own icon. The Separate Frame creates independent window for this chart, its size can be modified by double click on title bar.

 

Colors Tab

 

Each chart can define colors of all its parts, e.g. axis, trace, agenda, text, grid, etc. To do this, you must select the checkbox and then select the color.

 

Note: each color here can be also selected from PropertySetter. In such case the checkbox must be selected manually.

 

Pen properties

 

Those options here allow set the pen properties of the chart, for example to make the trace thicker in Oscilloscope.

 

Rendering hints

 

Those advanced options can influence the graphic rendering.

 

System settings

Those settings are default and global for all designs, available under Menu->System->SystemSettings.

General:

·        Designer zoom [%] – not used at this moment.

·        Designer grid [pixels] – grid resolution on Designer window

·        Runtime grid [pixels] - grid resolution on Runtime windows

·        Maximum start time [s] – this is advanced options, usually should not be modified. It specifies how long BioEra should wait before the startup process is interrupted.

·        Resizable runtime window – if selected then user can resize Runtime window(s).

·        Moveable runtime window – if selected then user can move the Runtime window(s).

·        Clear buffers on resume – advanced option, if selected all data in buffers is cleared when processing is resumed.

·        Designer has icons – designer can be shown in one of two modes: drawn or with icons. Icons are preferred and default mode.

·        Allow only one instance – if set, then BioEra will not start another instance if it is already running.

·        Input buffer length – this option was added for better memory management. Each input buffer length of any element is calculated automatically on base of the input rate and this value. For example if the rate is 200Hz, and this value is 2 seconds, then total buffer length is 400. Unless there are higher rates of the signal (example for real time sound processing) this options doesn’t need to be modified. The minimum default buffer size is 100.

·        Start design after loaded – if this is selected, then design is started automatically after it has been loaded.

·        Reinitialize all design elements on change – advanced, this option is accessed when a properties of an element has been changed in Designer, if this is selected then all elements are reinitialized, otherwise only this one element is reinitialized (which may cause the design to not function properly until next restart). This option should not be changed, unless the design contain a lot of elements (over hundred).

·        Native event loop delay – very advanced, it is used for special elements like Video or DVD. Normally should not be changed.

·        Designer window change when started – this option specifies what happens with Designer window when a design is started.

·        3D graphics support – defines how 3D support is organized, because on some (especially older) computers the default setting may not work

·        Hide detached dialog on X – if selected, then any dialog is hidden when mouse pressed X icon, otherwise nothing happens.

·        Keep window visible – when selected then the window (Designer or Runtime) is moved to main screen if it is not visible. This can happen when design is created on higher resolution monitor.

 

 

Chart colors:

·        Contain default chart colors. They can be overridden in each individual element.

 

Color profile:

·        Contain colors which can affect graphic appearance of BioEra windows.

 

Iconified designer:

·        Provides advanced options for icon sizes and fonts used to draw elements on designer. Usually should not be changed.

 

Internet:

·        Some options require access to internet. If access to Internet is via proxy, then proxy settings should be set here.

 

 

Design settings

Each design can have its own set of properties modified under Menu->System->DesignerSettings menu.

General:

·        Loop time [ms]: advanced option, elements in design are being processed in a loop one after another. This value defines how long each loop should take (or in other words, how many loops per second should be performed). This option (as opposed to the described below Sleep time [%]) guarantees that BioEra response time will not be longer than the value set here. If this time is set to 0, then BioEra is started automatically in special – ultra fast mode, but please note: this mode is not recommended, some elements which are based on real time may not be stable and it may also cause other (then BioEra) programs and applications to slow down. By default this time is set to 10 milliseconds which should be sufficient for most small to medium size designs. If your design utilizes too much processor - try to increase this time.

·        Sleep time [%]: advanced option, it defines the sleep time relatively to the processing time, which translates directly to computer’s processor usage. For example if this value is set to 25%, then BioEra will use about 75% of the processor on a single core computer. If there are more cores, then this will be 75% of one core only (which means 35% total processor usage on dual core). Recommended value is 50% on one core processor or 20% on dual core processor. By default this option is disabled (set to -1), if set to >=0 then it replaces the described above: Loop time [ms].
Note 1: this option defines processor usage of the main bioera thread, which is the most calculation (and processor) intensive, but there are also other threads (as well as other applications then BioEra) which may increase overall processor usage, especially on a single core computer.
Note 2: this option is an alternative to the previous Loop time [ms], it can be preferred if processor usage is important and should not be exceeded above certain threshold (e.g. on slow computers). The processor usage can be controlled this way quite precisely.

·        Default size of vector buffer: each element has input buffer for each input pipe. This value defines default buffer size for vector input pipe (includes complex pipes). Some elements may not use this default value.

·        Default size of object buffer: each element has input buffer in each input pipe. This value defines default buffer size for object input pipe. Some elements may not use this default value.

·        Reinitialize element if failed during processing – advanced, if an exception (error) occurred during processing of an element, it is deactivated. If this option is set, then this element is reinitialized and started again automatically.

·        Stop when a single processing failed – if marked, then the processing is stopped when there is an error in any active element. Otherwise the element is deactivated, and processing continues.

·        Runtime 1 window hidden, Runtime 2 window hidden – runtime charts can be put on either of two separate windows. This allows for example to show them on two monitors. This option is also useful on PDA (with limited screen size) because runtime windows can be quickly switched from one to another providing more information combined.

·        Runtime window always on top – this is typical Windows option. When selected, then Runtime window will not be overlapped by others.

·        Password protection – provides password protection for the design. Protected design can be edited only by someone who enters valid password; without password design can be executed but not edited/changed.

·        Special design protection

o   Requires signature – this option restricts the design execution to one designated dongle only. It gives the seller a method to sell the design to specific dongle. In order to use it you must:

1.  Set password for the design

2.  Set the "Signature file name" setting.

3.  Get the "Hardware code" value for the dongle (accessible under Help->License, note: BioEra must be started with this dongle in order to see it)

4.  Create the signature file using Tools menu and "Create design signature" and select  "For dongle"

5.  Save the signature in the file of the same name as defined in the "Signature file name" design setting (described below).

6.  Put the file on the target computer in either the BioEraPro "Config" folder or on the dongle inside "bioeralic" folder (it is hidden but accessible)

·        Signature file name – if the above field is set to “Require signature” then this file specified here is searched in (a) BioEra config folder and then (B) in the dongle folder.

·        Expiry date – this option is possible only if password is set, otherwise it has no effect. After the expiry date the design can’t be run any more.

·        Expiry message – can provide custom instruction text with explanation what to do when design has expired.

·        Design URL – provides option to automatically check for a newer (updated) design and download it when never version is released from a remote Internet network server. This option requires direct access to internet.

Graphics:

·        Runtime background color: set background color for Runtime window.

·        Runtime background image: each design can have a background image on Runtime window. This helps to create very effective graphic layouts.

·        Runtime background image layout: - defines how the background image is painted on the window.

 

Action:

·        Runtime resize (min width, min height, max width, max height): this option allows to set minimal and maximal sizes for Runtime windows. This helps to make sure they are properly displayed. Each value is used (effective) only if greater then 0.

·        Resizable runtime window defines the resize options for Runtime windows (overwrites System Setting).

·        Required minimum BioEra version: this field contains (optionally) a BioEra version e.g. 2.2.55. If set, then this design will not start on any BioEra version below specified here. This is useful when current design uses options which were not available before.

 

Colors

 

In some elements it is possible to specify colors. It is possible to use predefined colors (case sensitive): black blue cyan darkGray gray green lightGray magenta orange pink red white yellow or RGB components, see color format.

 

Nested designs

It is possible to combine two or more designs using NestedDesign element. More details are provided in advanced architecture topics.

Advanced architecture details

 

More advanced architecture topics are described in document here.

Time measure

Many elements depend on Time. There are 2 ways how BioEra elements can measure time:

·        Based on sample rate – since almost all devices deliver samples at constant rate (constant number of samples per second) then it can be used to measure time.

·        Based on real time (precision depends directly on the design setting: Sleep time [ms]) provided by operating system.

 

The sample rate time measure has many advantages, so it is utilized whenever possible:

·        The same design can be used with all sources: devices and archives (also when processing archives without keeping the original recorded rate).

·        There are no side effects due to occasional Windows system delays or freezes (Windows is not a true real time system, so this is not unusual).

 

The real time measure is useful in others cases:

·        Input rate is unknown or uneven. The best example is the logical output pipe. In most elements it sends a value only when there is a change. The same is with text (object) pipes and others.

 

Here are elements which measure time based on sample rate, and when correct sample rate is necessary:

·        TimeTransform elements (e.g. ScalarTimeTransform)

·        Oscilloscope

·        Polygraph

·        Topograph

·        EDFFileWriter and XDFFileWriter

·        TimeRatio elements (e.g. ScalarTimeRatio)

·        CrossTimeRatio elements (e.g. ScalarCrossTimeRatio)

·        FFTTransform, FFT2Transform

·        Counter3

 

Here are elements which measure time based on real time, they can’t be used for batch (fast) archive processing:

·        RateLimitter, RateLimitter2, AbsRateLimitter, RateNormalizer

·        TimeSource

·        Timer

·        SimulationSource

·        Delay (in all time modes, except Loops and Samples)

·        Counter, Counter2, Counter4

·        TimeInterval

·        Scheduler

·        DayTimer

·       ActivityDetector

 

Important note: In all elements which measure time based on sample rate it is also assumed that that samples are equidistant, which means that the time between consecutive samples is the same. Currently all supported devices meet this requirement. But if for some reason some data source (e.g. from an archive file) doesn’t meet it, then it is necessary to resample such signal so that its samples are equidistant.

 

Environmental variables

Some elements like those which access files can use environmental variables. In BioEra in order to use such variables they have to be enclosed with ‘%’ characters, e.g. %USERPROFILE% or %HOMEPATH%. Such variable is then accessed from the system, and if found, it is replaced with its value.

 

There are also variables which are used the same way and predefined in BioEra:

DESIGN_FOLDER or DF – folder from where the main design is loaded

DESIGN_FOLDER_PARENT or DFP – parent folder from where the main design is loaded

 

For example, if in the TextFileReader you specify the path as: %DF%\file.txt, then this file will be read from the folder where the design file is executed from.

Elements

 

This chapter provides list and descriptions of all supported elements. This list may not always be complete as the development advances fast; if you have any questions post them on forum.

ActivityDetector

This element detects a change in activity on the input. If there are incoming samples, then it sets the output to TRUE, otherwise to FALSE. Each value (TRUE or FALSE) is sent only once, when the activity state changes. TRUE is sent for positive activity (one or more samples within ON latency time), and FALSE for lack of activity (no samples within OFF latency time).

 

Fields:

·        ON latency [ms] – defines how quickly this element should react after positive action (samples arriving to the input)

·        OFF latency [ms] – defines how quickly this element should react on no action (no samples arriving to the input)

 

Note1:

  1. Change OFF -> ON occurs exactly ON latency after first sample arrived (from the OFF state),

2.  Change ON -> OFF is at the first moment when there has been no sample during last OFF latency.

 

Note2:

1.  ON latency is counted after first sample arrived while being in OFF state. This means that any sample which arrived during OFF state will always change the output state to ON. Even if the OFF latency is much shorter then ON latency.

2.  OFF latency is counted from the last input sample while being in ON state.

 

Alpha200

Driver element for 2 channel Alpha200 EEG device (www.telediagnostic.com). Look for the description under Alpha400 below. The only difference is that Alpha200 is for 2 channel devices and Alpha400 for 4 channel device.

Alpha400

Driver element for 4 channel Alpha400 EEG device (www.telediagnostic.com). Alpha200 2 channel device is supported by its own BioEra element.

 

Fields:

·        Mode – select source between EEG, Impedance and Calibration.

·        EEG Range – amplitude sensitivity

·        Notch – turn on or off notch filter.

·        Reference – change reference settings.

·        Calibration amplitude – select calibration amplitude (if Mode Calibration is set)

·        Calibration frequency – set the frequency of the calibration sine wave

 

ApplicationInteractor

This element can be used to get some information from a Windows application.

 

NOTE: the application must be opened and be either in normal or maximized mode (not minimized).

 

Fields:

·        Application window title – title text on the application window, it is used to find (identify) the destination window. Must contain the exact text or part of it (case sensitive).

·        Mode

o   Text – the destination text is sent to output whenever it changes. The text can be also set from input.

·        Settings – the destination field can be visually selected here. Click mouse over the rectangle which you wish to select.

 

 

Note2: not all application can be controlled that way, only those compliant with Microsoft API. See the list below.

 

Applications which were tested and can be controlled: Internet Explorer, Google Chrome, Windows Calculator, Notepad, WordPad.

 

Application which can’t be controlled: Mozilla Firefox.

ApplicationPlayer

This element can be used to control external (executable) application functions which can be operated by keyboard.

 

An example is included with bioera (RacerGame) which demonstrates this element in action.

 

Fields:

·        Application executable – path to the application. It is automatically started when design is started.

·        Application window title – this title is set on the application window.

·        Start sequence – those keyboard codes are sent to the program on start. You can use KeboardAdvSource to find out the code for each button.

·        Stop sequence - those keyboard codes are sent to the program on stop.

·        Key codes – each logical input controls one key/button defined here. Logical TRUE pressed the key, and FALSE releases it. Please note: the application needs to be in focus to receive the keyboard key events.

·        Window coordinates – location of the window and the size [x,y,width,height]

·        Start delay [s] – some applications take some time to start. The above parameters can be set only after it has been fully started; this delay defines when this will occur.

·        Close application on stop – if selected application is closed when processing stops.

 

BarDisplay

This chart shows vertical bar. Height of the bar is controlled by input value. Level inputs control horizontal line (shown only if Level input is connected), which should be used only for slowly changing signals (e.g. auto-threshold).

 

Fields:

·        Level1 color, Level2 color – colors of the horizontal level lines

·        Redirected – if set, then bar is displayed from top to bottom otherwise it is displayed from bottom to top

·        Bar image – if this image is set, then it is used to print the bar, otherwise solid color fills the bar

·        Rescale level – should be usually set

 

Advanced Properties:

See the description of the scale properties in Oscilloscope description. For BarDisplay only vertical axis settings are implemented.

 

Note1: level (horizontal line) is visible only when either input or output is connected. For example to show Level1, either input Level1 or output Level1 must be connected.

Note2: level can be dragged with mouse only when corresponding output is connected. For example level1 can be dragged only when output Level1 is connected.

 

BarDisplay2

 

Show horizontal bar which behaves like BarDisplay (described above).

BrainMaster

This element provides an interface for older BrainMaster EEG device (www.brainmaster.com).

Fields:

·        Mode

·        1 channel – 1 channel mode.

·        2 channels – 2 channels mode.

·        Initialize device – select whether to initialize the device.

 

Note 1:

It has been confirmed, that this elements works well with older BrainMaster 1.0 devices. But only if the initialization if turned off (the initialization sometimes doesn’t work). Therefore to use this element you need to clear the “Initialize device” checkbox!


Note 2:

Newer BrainMaster devices may not work with this driver, use BrainMasterAtlantis instead.

BrainMasterAtlantis

This element provides an interface for all BrainMaster EEG devices (www.brainmaster.com).

 

It requires Passkey which can be purchased directly from BrainMaster company.

BTGP38

Driver element for Bluetooth GPS receiver. It was tested with BTGP38 device, but it should work with all GPS receivers which use NMEA protocol (most do).

 

Outputs:

Button

Interactive option feature for the user.

 

Fields:

·        Label – text label displayed on the button.

·        Initial state – can be enabled or disabled, button can be enabled/disabled using its logical input

·        Initial output state – defines what logical value send to output when the design is started

·        On press – output state when button is pressed

·        On release – output state when button is released

·        On hold - if the button is pressed and hold for more then 1 second, then this option allows to repeat (send) the last value configured in "On press" option until released.

 

Advanced features:

·        Top shade color – used when mouse hovers over the button

·        Bottom shade color - used when mouse hovers over the button

·        Mouse hover image – this image is displayed when mouse hovers over the button (changes back to background image when mouse moves out of the button area)

·        Pressed button image – image displayed when button is pressed

·        Disabled button image – image displayed when button is disabled

 

Note 1: regular (not-pressed) button image can be set in Chart Properties (Background image).

Note 2: layout/resize options of the above images are set in Chart Properties.

ChartLayoutManager

This advanced element allows automatic control of the position and size of charts (applied during resize). It can be useful for designs which require more sophisticated resizing.

 

This element replaces default (proportional) resizing on current Window. When it is added in a design, then it must select all charts (unselected charts will not be visible).

 

Properties:

·        Layout manager

o   BorderLayout – simple layout described here

o   GridBagLayout – very sophisticated layout described here

 

ChartLine

This element draws a line on a chart. Currently it can be connected only to Oscilloscope or Polygraph.

 

Properties:

·        Orientation:

o   Horizontal – horizontal line is drawn across entire chart width.

o   Vertical cursor – vertical line is drawn at the latest trace position.

·        Type: type of the line

o   Solid – solid line, 1 pixel width

o   Dashed-3-4 – dashed line, 1 pixel width, 3 drawn pixels are followed by 4 pixels empty space

·        Channel – channel index (starts from 0) of the destination element with many channels (Polygraph).

·        Color – color of the line.

ChartTextOverlay

This element draws a text on top of a chart (some charts are excluded, e.g. video or 3D charts). Text is invariant to resizing; its position is related to the selected Horizontal/Vertical area.

 

Properties:

·        Text - text to draw

·        Color – text color

·        Text backgrond color – if set to a non-transparent color, then the rectangle under the text if filled with this color

·        Horizontal position, Vertical position – text position is defined relatively to the selected Horizontal/Vertical area (described below). The value within range 0 to 1 will place the text on the selected area. Other values (less then 0 or greater then 1) are also possible; in such case the text will be positioned outside of the selected area, but relatively to it. For example if the text should be put always on top of the chart center (invariant to resizing), then it should be placed relatively to the top margin (area: Top Margin).

·        Horizontal area, Vertical area – part of the chart used to calculate text position. Note: not all charts have margins, in those cases margin options are not available.

CMixer

This element works the same as Mixer, but the single input signal IN is mixed with a variable. The variable can be set constant, or dynamically changed through Var input. If more then one values arrived to Var input, so the last one is taken.

Fields:

·        Value – this value is used for mixing if the Var input is not connected, or as initial value.

Functions:

·        ADD = (value + variable)

·        SUBTRACT = (value – variable)

·        MULTIPLY = (value * variable) – NOTE: variable is digital, not a micro volt.

·        DIVIDE = (value / variable) – NOTE: variable is digital, not a micro volt.

·        AVERAGE = ((value + variable) / 2) – NOTE: variable is digital, not a micro volt.

·        MAX

·        MIN

·        REVERSED SUBTRACT is (variable - value)

ColorChartSensor

This element sends current color of any pixel on the connected chart.

 

Inputs:

·        Element – element with chart must be connected here

·        X,Y – position of the pixel on chart

 

Outputs:

·        Color – color is sent as object

·        RGB – color is sent as scalar

ColorSet

This element contains set of colors which can be used for processing. Each color is selected by a numeric index (scalar coming to input), first color index is 0, second color index is 1 and so on.

 

Fields:

·        Color Set – contains all colors, each color is separated by either ‘|’ or ‘,’

 

Color format:

Each color defined in ‘Color Set’ field can be defined in one of those formats:

·        R-G-B or R-G-B-A, where R – red component, G – green component, B – blue component, and A – optional transparent component. All values must be decimal. E.g. 255-0-0-128 is half transparent red color, and 0-255-0 is an opaque green.

·        RRGGBB or AARRGGBB, where AA – alpha (transparency), RR – red, GG – green, BB – blue. All values are hexadecimal numbers, each number contains exactly 2 characters, e.g. 00FF0000 is red color, and 00FF00 is green color.

·        Predefined color names: black blue cyan darkGray gray green lightGray magenta orange pink red white yellow

 

ComboToolbarControl

This element provides option to control design’s behavior from toolbar with combo (drop down list) component.

 

Fields:

·        Toolbar position – determines position of this control (icon) in toolbar. This value is only relative to others, not absolute. It assures that lower element with lower number is always on the left of an element with higher number, e.g. value 3 doesn't mean position 3 from left; it means that all elements with higher numbers are on the right, and with lower numbers are on the left. This field is available in all elements which can be placed on toolbar.

·        Label – text description label shown in the toolbar at the left side of the combo control

·        Fields selection fields that are shown in the combo

·        Values – corresponding values for the fields that are used for processing

 

ComplexFFTTransform

This object provides FFT transform being calculated on complex streams.

ComplexToVector

This object will provide functions to convert complex stream to vector stream.

ComplexTransform

This element provides instant transforms on complex numbers:

Functions:

·        RECT_TO_POLAR converts from rectangular complex notation (Re/Im) to polar notation (Mag/Phase). The output range of Mag is from 0 to +MAX. The range of Phase is from –MAX to +MAX, where –MAX corresponds to –PI and +MAX corresponds to +PI;

·        POLAR_TO_RECT converts from polar complex notation (Mag/Phase) to rectangular notation (Re/Im).

ComponentInteractor

This element allows set listed properties (font, colors) in graphic components like: InputText or ComboToolbarControl and others.

·        Component – the graphic component is selected here

·        Travers subcomponents – if this is selected, then all subcomponents are also affected, otherwise only the selected component’s properties are set.

 

Counter

This object counts number of occurrences.

·        Time period [s] – if greater then 0, then occurrences are counted within this time period; otherwise they are counted since the processing start. Real time is measured; it is independent from input rate.

·        Count – functions:

o   SAMPLES – counts incoming samples

o   INVOCATION – counts how many times the processed() method was invoked.

 

Counter2

This is a simplified (and less computation expensive) version of Counter. It sends output value only once in each Time period.

 

Counter3

This is a special version of Counter which counts only samples and calculates time based on the input rate (not real time). This can be useful for example when data is processed in a batch (not in real time).

 

The first input is used as a time base.

 

The first counter is the closest to the input rate. All other counters are relative to the first counter.

 

Example: rate is 256sps, and Time period is 1s. In the first five consecutive loops first input receives: 110, 120, 130, 0 and 50 samples, the second input receives 10, 20, 100, 40, 50 samples. The first output will send values: 110, 230, 250 and 180, the second output will send 10, 30, 120 and 190.

CustomElement

This element can be useful for java developers. It allows create a custom element linked dynamically during runtime.

 

The class must implement at least one interface: ExternalSource and/or ExternalSink, for output and/or input data.

 

For more control another interface is available: ExternalInit, it provides methods like start(), stop() etc.

 

Here is a demo java class source which implements all the above interfaces (set as default). It multiplies input signal by 2.

 

Here is the interface documentation.

 

Fields:

·        Java class – contains fully qualified class name (with package) that implements ExternalSource and optionally ExternalInit interfaces. This class must be on default CLASSPATH, for example in impl folder.

 

Example implementation steps:

  1. Copy the above example java source into BioEraPro\impl\Test.java file
  2. In Test.java file remove first line: “package com.proatech.examples;”
  3. In Test.java change the class name from ExternalElementExample to Test
  4. Open command line window in the impl folder
  5. Make sure that you have a java jdk installed (version 1.5 or higher), to verify type: javac –version. If you don’t then download it here, choose Jdk 5.0 Update 16.
  6. Type: set CLASSPATH=.;..\ext\custom.jar
  7. Type: javac *.java
  8. Previous step should have created Test.class file in the impl folder
  9. Start BioEra, add CustomElement, and set the Java class property to Test
  10. Restart BioEra with console and watch for error messages (there should be none).
  11. Add SimulationSource (before CustomElement) and Oscilloscope (after CustomElement) to create a simple test design. Each time you modify the source of your Test.java file, you need to restart BioEra.

 

Note: An example of a real driver implemented using this element is available with full sources here.

CustomInteractor

This element provides various functions which can be used to interact with system or environment.

Fields:

·        Action – select the action

·        Input trigger – select what triggers this element

·        Immediate – whether to allow this element working outside of processing mode.

 

DataToText

This element produces text output from many data inputs. Each input can be of a different type, e.g. Float and Text.

 

Fields:

·        Format – format string defines how the input values should be concatenated. Full specification is available here: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html. This must be precisely defined, otherwise an error will be generated AFTER this element starts processing.

·        Country – values can be formatted according to the selected country standards, for example numeric or date or amounts etc. If Default is selected, then the country will be selected according to Windows operating system settings.

 

DAQ6008

This is BioEra driver for USB DAQ6008 National Instruments device http://www.ni.com/pdf/manuals/371303h.pdf . It can read/write analog (voltage) signals from and to ADC/DAC converters. It also can set and read digital inputs/outputs.

Fields:

·        Analog input range – range of the eight input ADC converters. Lower range provides better precision (the number of bits is the same).

·        Input configuration

·        Digital I/O mask – the DAQ6008 has 12 digital pins. Each can be configure as input or output. This parameter here defines which bit is set as output. For example value=1 means that only bit 1 is output (all other are inputs), or value=13 means that bit 1, 3 and 4 is set as output.

·        Rate – the sample rate of the voltage acquisitions is set to this rate. For example 1000 will provide thousand analog samples from the device.

 

Note: this driver can be also used for other National Instruments USB devices but has not been tested.

 

DayTimer

This element sends precise number of seconds (or milliseconds) starting from midnight.

 

Note: this element is not supported any more. The TimeSource should be used instead.

DayTimeCoincidence

This element is usually connected to a time source (like DayTimer or Timer). It sends TRUE when the input time coincides with defined Time. On start this element sends FALSE.


Fields:

·        Time – day time in HH:MM:SS format (hours are in 24-hour mode, for example 22:04:18)

·        Margin [s] – this value defines how long after the above time has passed the output should be still activated. For example if Margin is 1 hour, and BioEra was started 10 minutes after the Time then TRUE is sent to output.

DebuggerElement

This is diagnostic element; it prints all incoming values on console. This element is hidden by default. To make it available uncomment its section in bioera/config/configuration.xml file.

Decimator

This object lets through only part of the samples that came to the input.

·        Send samples number – how many samples to pass.

·        Skip samples number - how many samples to abandon.

Delay

This element holds the data from input for the selected time period, which is then sent forward unchanged.

Fields:

·        Delay – defines how long the data should be hold befiore sent to output.

·        Send initial zeros – can be used only with the Use input rate to measure time described below. If set, then zero values are sent to output at start, the amount is equal to the delay. For example if the Delay is 100ms, and the input rate is 250sps, then 25 zero values is sent to output on start.

·        Use input rate to measure time – if selected, then the input rate is used as a time reference. Otherwise, real time is measured. Note: this option is recommended if the input rate is known and constant, e.g. from a device.

Demultiplexer

This object passes input stream to selected outputs.

Fields:

·        Binary – if set then stream is sent to many outputs. Each bit in the value coming to SEL input is used to select output index. For example number 1 selects output 1, number 2 selects output 2, but selector value 3 selects outputs 1 and 2, number 4 selects output 3, number 5 selects output 1 and 3 and so on.
If this flag is not set, then input value selects only one output directly by its number, number 0 is for first output.

 

Inputs:

·        IN – data stream

·        SEL – selected output(s)

DesignArguments

This element provides a list of all command line arguments passed to BioEra (anything not prefixed with ‘-‘, and not ended with ‘.bpd’). It can be useful for automation and background data processing.

 

Number of outputs corresponds to the number of arguments. Each text output contains one argument.

DesignInteractor

This object allows to load a design from within another design.

Fields:

·        Path – path to the design file.

 

DeviceSet

This element contains all supported devices (plus simulator and archive) together in one place so that it is easy to switch between them without a need to reconnect. Furthermore all device properties (serial port etc) are stored outside of the current design, the same in all designs which uses DeviceSet element (if the Save Global property is set).

Fields:

·        Source – source selection (device or simulator)

·        Load global – if set then global (available to all designs) configuration is loaded.

·        Save global – if set then all changes in this element will be saved globally.

·        Show warning when there is no data - if set, then all activity from the device is monitored, and if there is no activity (no data arriving from the device) during the last 5 seconds, a dialog is shown with message. Note: this option only works if at least one output pipe is connected.

 

For detailed description and options available for each selected device, look for description of this device element in this manual.

 

To choose a device in this element, select it in the list, then press Apply, and then set required setting. Some of them (e.g. COM port number) are necessary for the device to work properly.

DialogComboList

This triggered interactive element allows to select text (or index) value from a drop down list. Its functionality is identical like ComboToolbarControl.

DialogFile

This is triggered interactive element can be used to ask user to select a file or folder on local file system. This is a more advanced version of the same function provided in CustomInteractor element.

DialogText

This is triggered interactive element which can be used to ask user for text which can be then processed in the design.

Fields:

·        Action type – whether to pause processing or continue

·        Dialog label – label text displayed on the top of the dialog window

·        Text label – label text displayed on the left side of the text field

·        Initial text – this text is put initially into text field

·        Remember text – if set, then last entered text is saved in Initial text

DVDPlayer

This element plays and controls DVD. It is only available on Windows OS. There is an example design attached with demonstrated how to use this element.

 

Fields:

·        DVD video decoder – allows to select which DVD codec is to be used (if more then one available in system). This option is good only if codec has been properly configured for BioEra. Currently supported codecs: InterVideo (WinDVD) and PowerDVD (CyberLink). Other codecs may also work.

·        DVD drive – physical drive available in Windows system like D: or E: or a path to DVD files located on hard drive. If this field is empty, then default DVD drive will be automatically selected.

·        Reflect time range if set, then the video can start at specified time.

 

Advanced Settings fields:

·        Manual codec setting – only if selected then the following settings will be used, otherwise BioEra uses DVD video decoder setting.

o   Video codec – manual video codec

o   Audio codec – manual audio codec

o   Navigator codec – manual navigator

·        Brightness available, Contrast available, Saturation available, Hue available, Sharpness available, Gamma available – this is read/only checkbox (change has no effect) is set after DVD starts playing. It shows whether particular filter is available in hardware. If yes, then it can be controlled from element’s inputs.

 

Inputs:

·        ON/OFF – play/pause.

·        Vol [0-100] sets volume.

·        Rate – 100 is nominal forward rate, and -100 is nominal backward rate, 300 is three times faster forward rate and so on.

·        Chapter – choose dynamically chapter number starting from 1

·        Title - choose dynamically title number starting from 1, usually title #1 is used.

·        Time [s] – set play time in current title

·        Brightness [0-100] – sets brightness (if available)

·        Contrast [0-100] – sets contrast (if available)

·        Sharpness [0-100] – sets sharpness (if available)

·        Hue [0-100] – sets hue (if available)

·        Saturation [0-100] – sets saturation (if available)

·        Gamma correction [0-100] – sets gamma correction (if available)

 

Outputs:

·        All chapters – shows how many chapters are available in current title.

·        All titles - shows how many titles are available.

·        Chapter - shows chapter number which is currently played.

·        Title - shows title number which is currently played.

·        Time [s] - shows time in current title.

·        Total time [s] – shows length of current title.

 

 

Note: DVD player requires native Windows DVD codec installed in system (not included with BioEra). Such codec is usually automatically added with software installed for DVD, for example WinDVD. Any codec that works for Windows Media Player is appropriate.

 

EDFFileReader

This element can read multi-channel file stored in EDF (European Data Format) format.

Fields:

·        File path – path to the EDF file

·        Patient – contains information about patient stored in the file

·        Recording contains information about recording stored in the file

·        Start date – date when recording was started

·        Start time time when recording was started

·        Transducers – information about transducers (electrodes) used for the measurement

·        Show labels indicates whether to use the labels stored in EDF file as description of this element’s output pipes.

·        Keep original rate – whether read data from this file at the same rate as stored.

·        Read in loop – if the reading should be repeat in a endless loop

 

Interactive properties (available via PropertyGetter/Setter):

·        Current sample index – this property can be used to get current position or set it.

·        Recorded samples – returns total number of recorded samples.

·        End-of-file reached – signals end of file.

 

 

Note: All channels stored in EDF file must have equal characteristics (the same signal parameters e.g. amplitude, rate etc).

 

EDFFileWriter

This element saves data in multi-channel EDF (European Data Format) file.

Fields:

 

 

Note: All input streams connected to the EDFFileWriter must have equal signal rate.

 

EEGNeuroAmp

This object provides interface for NeuroAmp EEG device (www.eeginfo.com).

Settings:

·        Line frequency

o   50Hz

o   60Hz

·        Mode

o   EEG – EEG acquisition mode

o   Impedance – impedance mode

 

Advanced settings:

·        Delay [ms] – delay between commands send to device required in older versions of firmware.

ElementArray

This element contains array of elements of the same type and properties. It can be especially useful for designs with multi-channel processing like QEEG.

Fields:

 

Properties the same for all elements are set in the Properties tab (and sometimes other tabs depending on element).

 

ElementInteractor

This element provides special actions which can be performed on an element(s) in current design. For example: to activate or deactivate an element.

 

Fields:

 

Evaluator

 

Note: this element is not supported at this moment.

 

This very advanced element allows create a custom program using full power of Java language. The code entered here is compiled on-fly, so that it can be executed with maximum speed (just like all other code).

 

Here is the official documentation of additional functionality that can be used inside the source code to set/get information about BioEra environment and properties. Besides that all standard java functionality is available (for example Math class).

 

Sections:

·        Declaration – declare global variables here

·        Construction – construct all structures that will not require any changes later

·        Re-initialization – executed whenever there is a change in the design.

·        On start – executed just before processing is started

·        Processing – the main process method, it should be optimized for highest possible performance.

·        On stop – executed when processing is stopped (either by user action or on error)

Fields:

·        Font size – set the font size in the above sections.

 

Prerequisites:

Although some java knowledge may be useful to use this element (and full power of java platform), it is not absolutely necessary to create a simple program. It will be definitely not a problem for anyone with a minimal programming experience. The example code (provided with each new instance of Evaluator) implements a simple mixer (a sum of two inputs).

 

Installation: here.

 

Note: When the code is being created, all errors and problems are printed on console. Therefore it is necessarily to start BioEra in console mode.

 

Note2:

It may be necessary to restart BioEra whenever the source code in the evaluator has changed.

 

ExcelFileReader

This element can read and parse numeric data in a text file. Data format must meet certain criteria, for example only one character can be between lines (packets) or between channels. Most programs can export like that, very often lines (packets) are separated by End-Of-Line character, and channels are separated by comma (,), semicolon (;) or tabulation.

 

Fields:

 

ExcelFileWriter

Data samples are saved in a text file.

 

Fields:

 

ExpressionEvaluator

This element can be used to create simple expressions calculated with using values received to inputs e.g.: (In1 + In2) * Math.sqrt(In3)

 

Input values are represented by predefined identifiers: In1 for input 1, In2 for input 2 and so on (maximum 20 inputs). All mathematical functions available in Java can be used for example: Math.sqrt(In1), Math.power(In1, In2) etc.

 

An output value is calculated and sent when at least one input value arrives. If any other input doesn’t receive a value at the same time, then previous (remembered) value is used for that input to calculate entire expression. Therefore the output rate is the same as the highest input rate. By default all input values are set to 0 before start.

 

Expression is compiled into java byte code and stored in the configuration. It is then reused during next start, so there is no recompilation or delay. It also can be executed on BioEra PDA without expression compiler.

 

If more then one output is needed, then more advanced form of expression is required. Expressions created that way must be separated by semicolon (‘;’). And each expression must start with assignment to proper output, e.g.: Out1=(In1+In2)/2;Out2=(In1-In2)/2

 

Fields:

Expression – expression text, e.g.: (In1 + In2) * Math.sqrt(In3)

 

Expression reference links:

·        Java expressions

·        Java operators

·        Very useful Ternary conditional operator (?:) is described here.

·        Math functions


FFTTransform

This object performs FFT transformation and sends vectors as results.

Fields:

·        Period [s] – processing time interval, this must be power of 2, for example 1, 2, 4, 8, 16 etc. or 0.5, 0.25, 0.125, 0.0625 etc. Make sure the input rate is high enough for very small periods.

·        Rate – how many computations is done per second.

·        Fast response – if this is set, then all data in input buffer is being processed according to above rate, otherwise only the most recently received data is processed once and the buffer is purged.

·        Subtract bias – removes bias from the result.

·        Maximum frequency – shows maximum frequency calculated according to the above settings.

·        Frequency resolution – shows the frequency precision.

·        FFT type – chooses FFT algorithm. At this moment there are 3 types:

o   INTEGER – performs calculations on integers. It is the fastest method but can process samples of only up to 15 bits.

o   FLOAT - performs calculations on floats, this option is slower then INTEGER (about 2 times slower on my PC). The main advantage is that it always works, for example INTEGER may not work well for input samples of more then 15bits.

o   NATIVE – allows use of external (native) FFT on integers.

·        Window – provides options for FFT windowing type.

·        High resolution of amplitude – if set, then FFT output resolution is increased to 15 bits. This means that in some other elements (that process FFT results) digital scales or values may not work any more (unless defined for 15 bit values). The microvolt and percentage scales are fine.

·        Adjust length – if set, then the length of the window is automatically adjusted to the closest value that is power of 2. This option is useful if input rate is not power of 2. If not set and the input rate is not power of 2, then this element is deactivated.

·       Calculation error – shows error that is a result of adjusting window length (to be power of 2).

 

FFT2Transform

This is more specialized version of FFTTransform. It provides ability to operate on complex values of the FFT.

 

There is no windowing on input. And there is no square root calculation on output.

 

Inputs: RE (real) and IM (Imaginary)

 

The RE input must be connected. IM input may be not connected (it is substituted with 0 filled vector in such case).

 

Outputs: RE (real) and IM (Imaginary)

 

Outputs send real and imaginary coefficients as two vectors.

 

For more detailed information refer to Fast Fourier Algorithm.

 

FileStorageSource

This element has been deprecated and is not supported any more. Either EDFFileReader or XDFFileReader should be used instead.

 

FileStorageWriter

This element has been deprecated and is not supported any more. Either EDFFileWriter or XDFFileWriter should be used instead.

 

Filter

This object allows digital filtering.

Fields:

·        Filter type – chooses filter type (high pass, low pass, etc).

·        Filter order – selects order of the filter.

·        Low/middle frequency – it is low frequency in band pass/stop filter, or middle frequency in low/high pass filter.

·        High frequency – it is high frequency in band pass/stop filter.

·        Implementation – choose which implementation of filters should be used, currently Fidlib.

FlashPlayer

This object can play and control Macromedia Flash animations. The control is achieved using flash variable which can be set dynamically.

 

Fields:

·        Flash file: path to the flash file

·        Variable names – this variable is set (in the flash movie) for each input

 

Note: input can receive either Logical values or Scalar values. If the logical value arrives, then 1 or 0 is sent to the flash movie. If scalar value arrives, then its float value is sent to the flash movie.

 

FloatToScalar

 

This element converts float value to scalar value.

 

Mode:

·        TRUNCATE – rounds the float value to the lower integer, e.g. 2.3 becomes 2, and 3.9 becomes 3.

·        ROUND - rounds the float value to the closest integer, e.g. 2.3 becomes 2, and 3.9 becomes 4.

·        TO_DIGIT_FLOAT – the float value becomes scaled by 1000 ratio

·        SCALED - the float value becomes scaled by DIGITAL_MAX/PHYSICAL_MAX factor (set in Signal Properties)

 

Input SP can be used to inherit Signal Properties from another element.

 

Formatter

This element performs various conversions on one channel data format. BioEra internally operates on 4-byte signed integers. Sometimes it is required to convert this to different format, for instance during communication with another software (via network or while reading a file).

Fields:

·        Adjust range – if this is set, then the range is shifted to the center of the destination range.

Functions:

·        TO 2 Unsigned Little-Endian

·        TO 3 Unsigned Little-Endian

·        TO 4 Unsigned Little-Endian

·        FROM 2 Unsigned Little-Endian

·        FROM 3 Unsigned Little-Endian

·        FROM 4 Unsigned Little-Endian

·        TO 2 Signed Little-Endian - PCM

·        TO 3 Signed Little-Endian

·        TO 4 Signed Little-Endian

·        FROM 2 Signed Little-Endian – PCM

·        FROM 3 Signed Little-Endian

·        FROM 4 Signed Little-Endian

GainInteractor

This element can be connected to Oscilloscope, Polygraph, BarDisplay, NumericDisplay and VectorDisplay.

 

Mode:

·        MANUAL – trace on the destination element is remembered and restored (and rescaled if needed) after the element has been reinitialized during processing (e.g. from PropertySetter).

·        AUTO – amplitude of the trace is monitored continuously and if it gets out of the range, then the scale range on the destination element is automatically adjusted (and destination element reinitialized).

Auto mode

·        Refresh period [s] – how often to adjust the auto range

·        Auto gain detection time [s] – auto range is calculated over this time period.

·        Margin [%] – defines upper and bottom margin. Signal maximum must stay within upper margin, and signal minimum must stay within lower margin. If any of those go outside their range, then auto range change is performed, so that (directly after the change) signal maximum/minimum is in the middle of its margin range.

·        One scale for all channels – if set then the same auto range scale is used for all signals on Polygraph. Otherwise each signal is auto-ranged separately.

·        Special options per channel – if auto range is to be performed only on some channels but not all, then excluded channels can be set here to manual (if nothing is set, then auto range is assumed).

·        Attached base – if selected and if the signal is unbalanced (range from 0 to MAX), then only the maximum is adjusted, and minimum set to 0. This can be useful in BarDisplay or VectorDisplay, when only upper amplitude should be adjusted.

·        Center signal – request that the signal is centered on the currently visible area.

·        Keep original range – if set, then original range (set in element’s properties) is preserved. Can be useful together with “Center signal” to keep signal in visible area without changing its range. Implemented now only on Oscilloscope.

Generator

This element can generate periodic signals calculated mathematically. The output rate is not controlled. This element creates as many samples as the next element (connected to output) can receive (up to max buffer capacity). If there are more elements connected to output, then it sends maximum amount of data that can be fit in each of them without overflow.

Exception from this rule is when PCMPlayer’s event line is connected, in such case amount of generated data is controlled by PCMPlayer.

 

This element has been used and tested almost exclusively with PCMAudioPlayer, it should not be used to create a bio signal simulation (use SimulationSource in this case).

 

Functions:

·        SINE – sine signal

·        TRIANGLE – triangle signal

·        RECTANGLE – rectangle signal

·        NOISE – noise, random values within defined range.

 

Fields:

·        Frequency [Hz] – frequency of the signal being generated

·        Amplitude [peak-to-peak] – amplitude of the generated signal

·        Signal range – full output range (this value is used in other elements connected to output).

·        Phase shift [0-360] – defines phase shift

·        Points [sps] – defines how many samples per second are being generated.

·        Frequency factor – this value is used only if the frequency is being changed dynamically by input “Freq”. It allows setting frequency at fraction of hertz (non integer) using integer input value. If this value is 1, then it is neutral (no impact). If this value is greater then 1, then the input frequency value is divided by this factor. Frequency factor must be power of 2.
Example 1: the frequency factor is set to 4, and the input value (coming to Freq input) is 1. The generated frequency will be 1 / 4 that gives 0.25Hz.
Example2: We need precise frequency of 13.5Hz. So we set frequency factor at 2, and input integer value of 27 will generate precisely 13.5Hz (obviously the input value of 13 will generate 6.5Hz).
Using of frequency factor requires appropriate set in the design, so that input values coming to the Freq input reflect this factor.

·        Smooth frequency change – if set, then frequency is being changed slower according to Frequency change dynamics field.

·        Frequency change dynamics – defines how quickly should the frequency change. The minimum value is 1 (fastest change). Each higher value increases frequency change time.

·        Remember – if this checkbox is marked, then the last input value coming to Freq or Amp is remembered and stored in Frequency or Amplitude field.

·        Buffer bottom threshold [%] – defines the bottom point in the output buffer from which it is populated.

·        Buffer top threshold [%] - defines the upper point in the output buffer up to which it is populated

GroupInteractor

This is special element which allows to process elements BEFORE main design is Started. That can be used to operate some user controls which are used before start, e.g. icons in a Button element or Slider values.

 

Note: this is very specialized element, used rarely. It is not recommended unless necessary.

 

GroupPropertySet

This special element allows to group properties of several elements into one. It can be useful for example to change one property to the same value in multiple elements of the same type e.g. change range in multiple BarDisplay elements.

HotSpotMouseSensor

This element can detect whether mouse cursor is over a hot spot (defined rectangle on the chart). It can be used for example to create custom buttons on an image.

Fields:

·        Hot spots – array of rectangular hotspots. Each hotspot must have 4 coordinates: x, y, x1, y1. The x, y values are absolute coordinates starting from the top-left corner of the chart. The x1, y1 are either absolute coordinates or relative to x, y.

·        Absolute coordinates – if selected, then x1, y1 are absolute coordinates (relatively to chart), otherwise the x1 is the width and y1 is the height of the hot spot.

·        Cursor cursor chosen here is shown when the mouse is over the hot spot. It reverts to default when mouse is moved out of the hot spot.

 

Value sent to any output is an index in the Hot Spots array. If the mouse if over a hot spot, then the value of 0 or more is sent, otherwise -1 is sent.

 

Outputs:

·        Moved – hot spots are recognized when mouse moves

·        Pressed – hot spots are recognized when mouse is pressed

·        Released – hot spots are recognized when mouse is released

 

IconToolbarControl

This element provides option to control design’s behavior from toolbar by adding an icon image and set action invoked when the icon is pressed or released. This element is usually used with PropertySetter or one of the Interactor elements to change settings in the design.

Fields:

·        Toolbar position – determines position of this control (icon) in toolbar. This value is only relative to others, not absolute. It assures that lower element with lower number is always on the left of an element with higher number, e.g. value 3 doesn't mean position 3 from left; it means that all elements with higher numbers are on the right, and with lower numbers are on the left. This field is available in all elements which can be placed on toolbar.

·        Label – text description label shown in the toolbar at the right side of the icon control

·        Fields selection fields that are shown in the combo

·        Icon – points to the image file used as icon (in active state)

·        Disabled icon - points to the image file used as disabled icon

·        Initial state – whether icon is active or disabled after start

·        On press – set this action when icon is pressed

·        On release – set this action when icon is released

ImageDisplay

This element displays an image from Image object stream. Input must be connected to element which produces Images for example ImageSequencer. Current image is displayed as long as another image arrives, which replaces previous one.

Fields:

·        Center – if selected then image is shown in the center of the chart rectangle, otherwise it is shown in left top corner.

·        Restore background – background color is painted before next image is shown.

·        Rescale image is rescaled so that it covers the chart rectangle in full.

ImageMixer

This object mixes two images into one output image.

Fields:

·        X, Y – position of the image received from input Image2.

·        Create copy – if selected then mixing is done on a copy of Image1, otherwise image2 is printed on image1.

·        Function – defines how images are mixed

 

ImageSource

This element creates an image according to the selected function.

 

Function:

·        Chart – image of the selected chart is sent when triggered.

 

ImageSequencer

This element can read images from image files and provide to the design as objects. Next image is sent when input is triggered. The trigger is defined in Input trigger field.

Fields:

·        X, Y, Width, Height – defines position and size of the file image in output image. This is useful if images stored in files have different sizes.

·        Actual width, Actual height – shows the actual size of the output image

·        Image files – paths to the image files

·        Color type defines color format of the output image

 

ImageToMatrix

This object converts image from image stream to matrix (vector stream).


Note: this element is not supported at this moment.

ImageTransform

This element performs various transformations (rotation, zoom etc) on input image.

InputCheckbox

This element allows user to select between ON and OFF state on a checkbox and process it in the design.

InputComboList

This element allows user to select among list of items in a combo box list and process it in the design.

InputList

This element allows user to select among list of items in a list and process it in the design.

InputText

This element allows user to enter the text and process it in the design.

InteractiveScalarSource

This element provides ability to send defined scalar values interactively. This element is more advanced version of Button, it can send integer values (not only logical values).

Iterator

This element is for iterations – it can generate a sequence of values different by a constant value (step), for example from 1 through 10.

Fields:

·        Start value –  start value, iteration starts from here in Normal mode

·        Stop value – end value, iterations ends here or at a value that is closest but not larger then this one.

·        Step – step, iteration is increased by this value

·        Initial value – iteration starts from here in the mode “Start from the Initial Value”

·        Loop – whether this iterations should be repeated or not

·        Loop count – if set to greater then 0, then iteration will end at this loop

·        Iterations – how many output values are generated per one input trigger

·        Input trigger – select input trigger type

·        Bidirectional – can be used to iterate in both directions. Backward direction is possible only if Input Trigger is set to Any Sample; then if the input trigger is TRUE, then iteration goes forward, if it is FALSE, then iteration goes backward.

·        Mode

o   Normal – iteration starts from the Start value

o   Remember last value – the last iteration value is remembered in the Initial Value variable. Next start is from this value.

o   Start from the Initial Value – iteration starts from this value.

·        First iteration on start – if selected then the iteration starts when the element is started.

 

JandJ

Driver element for J&J devices.

KeyboardAdvSource

This element is an advanced and special version of KeyboardSource, it should be used only if necessary otherwise KeyboardSource is recommended.

 

The main advantage of this element is that it can receive keyboard (and mouse) key keystrokes also if BioEra’s window doesn’t have focus.


Note: the key codes here may be different then in KeyboardSource, therefore KeySelector may not work properly with this element (KeyAdvSelector is recommended instead).

KeyboardSource

This element provides ability to receive events from keyboard. It works well only with GUI windows (both PC and PDA) (not in command line mode). BioEra MUST have focus to receive keystrokes to this element. On linux it is possible to read directly from the keyboard device (/dev/tty0 or other).

Fields:

·        Key pressed – keyboard codes (10, 48 etc) is sent when a key is pressed,

·        Key released – keyboard code + 1000 (e.g. 1010, 1048 etc) is sent when a key is released,

·        Key typed - keyboard code + 2000 (e.g. 2010, 2048 etc) is sent when a key is typed,

KeyInteractor

This element can simulate a key press/release action (from keyboard or mouse). It can be used to control other applications (e.g. games).

When the input value is TRUE, the key is pressed, when FALSE it is released. Each press must be preceded by a release, and vice versa. That means, that for example if button is already pressed, then next TRUE value will do nothing (it will not be pressed again until it is released by a FALSE value).

KeyAdvSelector

This is an advanced and special version of KeySelector. It should be used only if necessary, otherwise KeySelector is recommended.

The main advantage of this element is that it can receive keyboard (and mouse) key keystrokes also if BioEra’s window doesn’t have focus.


Differences:

·        There is no input pipe in this element; key codes are taken directly from system.

·        This element doesn’t receive system events, instead the key states are being continuously checked, so it is possible that some very short keystrokes are missed.

·        The numeric key codes here may be different then in KeySelector because they are system dependent. Key codes are compatible only with KeyboardAdvSource, so it is recommended to check them first there.


Additional fields:

·        Key codes – if this array field contains at least one value, then Key1-Key8 fields are NOT used. This array can contain up to 8 key codes. Each key is then continuously being checked and any change is notified by sending index of the key code to output. Key codes are compatible with the output of KeyboardAdvSource (which can be used to detect them).

KeySelector

This element is usually connected to the output of KeyboardSource and translates input key codes into indexed output values. For example the key code defined in Key1 sends value 0; Key2 sends value 1 and so on.

Fields:

·        Key1, Key2 … – key selection,

KT88-1016

BioEra supports KT88-106 device. But it has no dedicated element.
 
Installation:

·        Install latest KT88-1016 drivers

·        Install bioera driver for the device. Can be downloaded here.

 

To add element in a design:

·        Add CustomElement and set property Java class to KT88_BioEra


Example design:

·        Download and save this design on your local drive.

·        Open the design and set correct Serial Port number (assigned to your device). You can find about the serial port in Device Manager

Lamp

This element is very simple. It displays a rectangle (or other shape) using one of two configured colors. The color is selected using input Logical value (true or false).

Lightstone

This is a driver for Lightstone device produced by Wild Divine Group http://www.wilddivine.com.

 

Note: current version of the driver supports only devices with vendor id VID_0x14FA and product id PID_0001. Those parameters can be viewed on Windows in Device Manager like on the picture here.

 

LogicalMixer

This element provides logical functions for 2 inputs. Rate is not important. The last value on any input is remembered and used if nothing arrived to this input at the moment of calculation. A new single value is written to output whenever anything arrives to any input.

Fields:

·        NOT A – logical negation of A, input B is not used for calculation, but can be used to activate the calculation

·        NOT B – logical negation of B, input A is not used for calculation, but can be used to activate the calculation

·        A OR B – logical sum,

·        A AND B – logical multiplication.

·        A XOR B – logical multiplication.

LogicalMixerM

This element provides logical functions for many inputs. Rate is not considered. The last value on each input is remembered and used if no data arrived to this input at the moment of calculation. New logical value is sent to output whenever anything arrives to any input.

Fields:

·        AND – logical AND,

·        OR – logical SUM.


MatrixToImage
This object converts input matrix into an image. The matrix was usually created using earlier ImageToMatrix.

Note: this element is not supported at this moment. It might not work.


MatrixTransform
This object contains various transforms on input matrix.

Note: this element is not supported at this moment. It might or might not work.

MediaPlayer

This object can play video and/or audio. It requires additional installation of media package, either JMF or QuickTime for Java (or both). More information about installation and supported formats can be found in installation section here.

 

Note: to play a video file, it is better to use VideoFilePlayer.

 

MenuItemControl

This element provides easy option to create single menu field on Runtime window and connect its action to design.

 

Fields:

·        Menu Labels – set position of the menu. First name indicates position in menu bar, next names indicates names inside menu tree. Each name can be (optionally) followed by ‘:’ and number, which is used to set order (all menus on the same level should use different numbers).

·        Separated – if set then a menu separator is added before this menu field.

·        Initial state – initial state of the menu field

·        Initial output state each menu field when selected send a value TRUE or FALSE. This option allows to set initial state of this menu field.

·        On Press, On Release – defines what state (TRUE or FALSE or nothing) is send when menu is pressed/released

 

Inputs:

·        Enable/Disable – to enable or disable menu dynamically.

 

Outputs:

·        Value – sends to output logical state when menu is clicked.

 

MenuListControl

This element provides easy option to create menu list on Runtime window and connect it design.

 

Fields:

·        Menu position – set position of the menu which contains the list. First name indicates position in menu bar, next names indicates names inside menu tree. Each name can be (optionally) followed by ‘:’ and number, which is used to set order (all menus on the same level should use different numbers).

·        Separated – if set then a menu separator is added before this menu field.

·        Initial state – initial state of the menu field

·        Fields – contains names of all menu fields in the list.

·        Values – contains optionally values which are send when menu is selected

·        Selected index – defines which menu field from the list is selected on start.

 

Inputs:

·        Enable/Disable – allows to enable/disable menu dynamically.

 

Outputs:

·        Value – sends to output one of the value defined in Values property..

·        Index – sends to output index of the selected menu (index starts from 0).

 

MF_Temperature

This object provides driver for MindField’s temperature sensor (http://www.mindfield.de/).

 

MIDI

This object is used as a sound feedback. Each input value is played as a different note. Appropriate range mapping is usually necessarily to fit into desired sound pitch. Notes values can be 0-127 (to turn a note on) or 128-255 (to turn it off), so the mapping should use a sub-range of that. Value 60 represents note C.

Inputs:

·        PITCH – turns ON/OFF the note.

·        VOL – sets the velocity (see below) of the played note. Can be any value from 0 to 127. If this input is not connected, then the value defined in velocity property is used.

Fields:

·        Velocity – determines the midi sound velocity (see MIDI specification on www.midi.org for further details). This value is used only if the VOL input is not connected.

·        Channel – sets the channel for this midi. One midi object uses only one channel to play. That way if there is more midi objects each can play on different channel.

·        Mono – if set, then only one note is played at a time. When new note is to be played, previous is turned off. If not set, then many notes can be played in the same time.

·        Sound restart – this setting is used only in Mono mode. If set, then sound is restarted for each new input value, if not set, then sound is restarted only if input value is different then previous one.

·        Midi device – set midi device available in system.

·        Instrument – it is possible to choose instrument only for Default Synthesizer midi device.

MidiScale

This element can be used together with MIDI to play sounds only on the selected scale.

 

Fields:

·        Scale – selected musical scale. For example Pentatonic Major C scale plays only notes C, D, E, G, A. The “None” is the Chromatic scale.

·        Key – the scale key

·        Range [0 – 127] – if selected, then input range is 0 to 127, the same as the range of the MIDI input. For example value 60 in Pentatonic Major C scale will play C (60), value 61 will also play C (60), value 62 will play D (62) and so on.
If this value is not selected, then the input range is less then 127 and depends on the note count on the scale. For example Pentatonic Major scale contains 5 notes, so the input range will be 55 (5 * 10.5). The input value 0 will play note C (0); input value 1 will play note D (2), input value 7 will play E (16) and so on.

 

MindMaster

This object provides interface for MindMaster EEG device (www.mindmaster.de).

Fields:

·        Mode

o   EEG – EEG acquisition mode

o   Impedance – impedance for channel ch1-, ch1+, ch2-, ch2+, DRL

o   Calibration – calibration for channel ch1-, ch1+, ch2-, ch2+

 

Input: typically must be connected to SerialPort element.

 

Outputs:

·        EEG1 – EEG channel 1

·        EEG2 – EEG channel 2

·        Impedance – output for Impedance

·        Status – status code

 

Status code is sent once per second. Code:

0 – OK, no error detected.

1 – Synchronization frame not found

2 – Synchronization frame invalid.

3 or more – Other error.

MitsarQEEG

Driver element for 25 channel Mitsar QEEG device. At this moment only only EEG-201 model is supported.

Mixer

This object performs various arithmetic operations on two input streams; both input streams should have the same rate. The rate of the output is the same as the rate of the input A (unless ONLY_INPUT_B option was selected).

 

Functions:

1.  SUM, is A + B

2.  DIFFERENCE is A - B

3.  MULTIPLICATION is A * B

4.  AVERAGE (A + B) / 2

5.  MAX is max(A, B)

6.  MIN is min(A, B)

7.  ONLY_INPUT_A, ONLY_INPUT_B this option can work as a selector between inputs.

8.  DIVISION is A / B

9.  ABS DIFFERENCE is absolute value of A - B

10.ASSYMETRICAL AVERAGE – it averages both input samples, or passes sample from input A if there is no available sample at B.

MixerM

This object is very similar to Mixer, but it has dynamic inputs. Because of that it has less functions then Mixer.

ModEEG_P2

This object decodes P2 protocol stream from ModularEEG, details can be found on http://openeeg.sourceforge.net.

 

ModEEG_P3

This object decodes P3 protocol stream from ModularEEG, details can be found on http://openeeg.sourceforge.net.

ModEEG_v21

This object decodes v21 protocol stream from ModularEEG (details on http://www.bioera.net/bw/modeeg_firmware/index.html). This protocol is useful whenever higher performance or backward communication is required. On desktop PC, the P2 protocol is usually fast enough.

MorphInteractor

This is a very unique element. It allows gradually hide or show chart by morphing its image to the background image. Internally this element works like a simple movie or animation creator/player, first the movie is created and then played. This operation may spike processor usage for a moment, but since the animation time is usually short (1 second by default) then there is no impact for the main process (all is done in its own private thread).

 

Fields:

·        Morph time [s] – entire operation (hide or show) takes this long.

·        Refresh rate – defines how many times per second the image will be updated (animation grade).

·        Mode – mode

o   Default – this mode works with any background

o   Fast, black background – this method is about twice faster then the above, but it requires black background color.

·        Action – determine how the show/hide operation is triggered.

 

MouseAdvPosition

This element provides mouse pixel position coordinates on the screen. Outputs X and Y send values when mouse changes its position.

MouseChartSensor

This element provides info about the mouse cursor/buttons when it is over the chart.

 

Input

·        Element – an element with chart is connected here

 

Outputs

·        X – X position of the mouse on this chart, note: this value is sent only for connected outputs below

·        Y – Y position of the mouse on this chart, note: this value is sent only for connected outputs below

·        Press/Release – sends TRUE when mouse is pressed, and FALSE when it is released, mouse position are sent at those times to X, Y outputs

·        Enter/Exit – sends TRUE when mouse is moved over this chart, and FALSE when mouse is moved out of this chart

·        Drag/Move - sends TRUE when mouse is dragged over the chart, and FALSE when it is moved over the chart, mouse positions are sent at those times to X, Y outputs

 

MouseInteractor

This object allows simulation of mouse movement on screen. It can be used to control other applications (e.g. games) or just to show a mouse movement on screen. Mouse movement is being done inside rectangle defined in system properties, meaning that the input pipe values are relative to the defined X, Y coordinates (e.g. input X value 0 will set the cursor on the X coordinate on the screen).

Fields:

·        X coordinate – X coordinate of the rectangle, number of pixels from left

·        Y coordinate – Y coordinate of the rectangle, number of pixels from top

·        Width – rectangle width, number of pixels from X towards the right

·        Height – rectangle height, number of pixels from Y towards the bottom

 

Multiplexer

First all buffered samples from input 1 is written to output, then all from input 2, end so on. This element is especially useful if order (priority) is important. Otherwise the same functionality can be achieved when the same input is connected to many outputs.

NestedDesign

This element can be used to embed a nested design. Properties of the elements from the nested design can be modified here, but the layout (elements and connections) can be edited only in a separate/standalone design.

 

Useful functions of a nested design:

1.  globalization (the same nested design can be used in many other designs and modified only once)

2.  clarity (large number of elements in one design is hard to manage, it is better to split them into smaller designs)

3.  reusability – the same functionality can be easily multiplied


Fields:

·        File path – path to the nested design file.

·        Nested initialization – select how properties of the nested design are saved and loaded

o   Load global properties – properties are loaded but not saved (design is saved only when loaded as standalone).

o   Load global and save - properties are loaded and also saved in the nested design file. This option is useful for globalization of the settings (which can be accessed from different designs).

o   Load/save local properties – the properties are stored in a local copy. Only the elements, connections and default (initial) properties are loaded from the nested design file. This setting is optimal for reusability, for example one chart from the same nested design can have different location in this mode.

·        Nested design password – if the nested design file is protected by password, then it can be set here. It is also possible to set this password in Advanced Properties. Read note below about password behavior.

 

Advanced properties:

·        Nested initialization – it is the same as above, it is accessible also when properties of the NestedDesign element are hidden.

·        Nested design password – it is the same as above password, it is accessible also when properties of the NestedDesign element are hidden.

·        Reset local properties – if selected then local properties will not be saved, but only one time. This field will be automatically set to FALSE during the next design load.

 

 

Note: password is required only to edit/view the nested design (‘Open Nested design’ option is available on the mouse right click over the NestedDesign element). Password is not required to run the nested design. To make a nested design more closed it is recommended to include NestedProperties element which will limit the access to properties.

 

NestedInputs

This object can be added inside a nested design. Each output in this element will become an input on the NestedDesign element.

Fields:

·        Input names – this option sets manually names of the pipe inputs. If not set, then the names will be the same as in connected elements. Note: All names of the interface must be unique (case sensitive).

 

NestedOutputs

This object can be added inside a nested design. Each input in this element will become an output on the NestedDesign element.

Fields:

·        Output names – this option allows set manually names of the design outputs. If not set, then the names will be the same as in connected elements. Note: All names of the interface must be unique (case sensitive).

 

NestedProperties

 

This element can be added inside a nested design to customize its properties (presented to the outside world in NestedDesign element) and behavior.

 

Output can be connected to one or more PropertyBuilder elements; each PropertyBuilder creates a tab on properties (visible when this nested design has been put in main design).

 

Note: this element hides all default properties in the NestedDesign element, so if any property needs to be set (e.g. initialization mode), it has to be done before path to the nested design file is set.

 

Fields:

·        Force NestedDesign to save local properties – in most cases it makes sense to use NestedProperties only when “Load/Save local properties” mode has been selected in NestedDesign. If this option here is set, then the mode “Load/Save local properties” will be always set in NestedDesign. Otherwise it may be set to any mode in NestedDesign element manually (but only before the design is loaded first time because its properties are later hidden by the NestedProperties).

·        Allow dynamic connections – if set, then nested design can have dynamic pipes. This is possible if the last pipe of a NestedInputs or NestedOutputs is connected to an element with dynamic pipes (e.g. EDFWriter or Polygraph).

·        Propagate nested dynamic connection – this is effective only if the above option was set. If set, then dynamic connection propagates from input/output as long as there are dynamic elements on the path. For example if the input is connected to Synchronizer, which is then connected to Polygraph, then dynamic connection will be added from input to Synchronizer and also from Synchronizer to Polygraph. It can be observed by opening nested design using ‘Open Nested Design’ option in popup menu (right mouse click over the Nested Design element).

·        Requires password to run – This option is useful if a password was set for this design.
Note: in many cases this option is not needed. If not set then this nested design can be run but not viewed or edited. If this is set, then this design can be edited and run only when the password is correctly set in client’s design.

·        Element initial name – useful when this nested design is used as a library or component. This name is used when such a nested design was added on Designer.

·        Designer icon – icon visible on Designer

·        Charts are nested into one chart – if set, then all charts in this nested design are put into a single chart (which contains them all). This nested design with nested chart can be then used like any other element with a chart.
Limitations: some options are available if this option is selected:

*  All nested charts must be on the same container. This means that the ‘Frame’ options in Chart Properties of all internal charts are ignored.

*  Individual Chart Colors are overwritten by the nested Chart Colors.

 

 

NetworkClient

This object connects to a specified network server, and once a connection is established it exchanges scalar data through network. This can be any network server (not only NetworkServer available in BioEra), for example a web server.

 

Fields:

·        Host – address of the server, can be DNS or IP address.

·        Port – port to connect to.

·        Reconnect count – if this is greater then 0, then connection will be re-established after Connection delay timeout. If connection can’t be established after this count, then the element is deactivated. The connection counter is reset after successful connection.

·        Reconnect delay [ms] – if Reconnect count is greater then 0, then this is used for reconnection timeout.

NetworkServer

This object listens on selected port (in a thread), and once a connection is established it exchanges data through network. Only one client can be connected at a time. Any TCP client can be connected, not only NetworkClient available in BioEra.

 

Fields:

·        Port – port number the server listens to.

Neurobit

Driver for Neurobit EEG devices (www.neurobitsystems.com).

 

More info about device installation can be found here.

 

Fields:

·        Device Name – select the device model

·        Device Settings – this button opens dialog with device settings. This dialog is provided by Vendor, any questions about it should be directed to Neurobit Systems.

 

Note: If sample rate is set higher then 500sps, then the Sleep Time design setting must be 3ms or less.

 

NeuroServerSource

This element is not available any more.

NeuroServerWriter

This element is not available any more.

NeuroSync

This is a driver element for an undisclosed QEEG device.

NeuroSyncRemontage

This is an element used primarily with the NeuroSync element for QEEG remontage.

Nia

This is a driver for Nia device produced by OCZ Technology.

 

It provides raw EEG/EOG/EMG signal delivered by Nia USB device.

Nonin4100

This is a driver for Nonin 4100, a wireless bluetooth oximeter http://www.nonin.com .

Notice

This element allows to popup a dialog window that must be then confirmed by user. Further processing depends on chosen function.

Functions:

·        STOP PROCESSING – processing is stopped.

·        PAUSE PROCESSING – processing is paused, and resumes automatically after user closes the Notice dialog.

·        CONTINUE PROCESSING – processing is continued without a break.

 

Fields:

·        Messages – contains messages that are shown in the popup dialog depending on input value. For logical stream, only first 2 fields need to be set. First for FALSE and second for TRUE. It is possible to define more messages that will be chosen for higher numbers. If a message is not set, then it is considered as not active (no popup window).

NoticeYesNo

This element is similar to Notice. It shows user dialog with selection between Yes and No. When the option is selected and dialog closed, the selected value is sent to output as TRUE or FALSE.

NumericDisplay

This object displays current value from the input as a number or text.

 

Scale:

·        uV – value is scaled in micro-volts

·        digi – value is shown as digital

·        % - value is scaled in percent

 

Fields:

·        Show unit – if selected, then microvolt or percent letter unit is shown.

·        Align to left – text can be shown on the left or right side

·        Format – text/number can be formatted according to this function

o   Decimal – integer number, no conversion

o   Hexadecimal - integer shown as hexadecimal number

o   Binary - integer shown as binary number

o   Float 1 – float number shown with single digit after dot (for uV or %)

o   Float 2 - float number shown with two digits after dot (for uV or %)


ObjectCompare

This element can compare objects which are comparable. Currently the only comparable object is: Text.

ObjectCounter

This element counts input objects e.g. texts or images.

ObjectDebugger

This element can show some information (on Console) about the object value it received on input.

OrbitalDisplay

This is an interesting animation element. Planets move around their center (Sun). Each planet’s movement speed is based on biofeedback value. Number of planets is configurable. Planets icons are configurable, so it is possible that other pictures are used e.g. cars or train or anything else. It can be used in various ways for example:

Train your desired brainwave or try to control specified brainwave. Set Rotation threshold so that planet moves right or left depending on amplitude of the brainwave.

Show each wave band as a different planet. The higher is the brainwave amplitude the faster is planet’s velocity. The lower is the frequency of the wave the farther the planet from the center or vice versa etc.

Train for just one specific wave. When desired wave amplitude increases and reaches higher level, next planets starts to move. First the planet in the center and last the planet on the far orbit. The goal is to keep moving all planets.

Set threshold to desired value and try to switch rotation from one direction to another.

Play a race game with other people (as many as you want) connected either to the same computer or via network (with NeuroServer or BioEra network elements). Different planets (or other icons) can represent different people. This can be a start point for other games based on biofeedback.

Fields:

·        Planet size – set the size of the planet. Size can be 16, 32 or 64 (pixels). In case of included with BioEra planets, the size means actual icon width, but in reality this can be any width. Important part is, that the icon file name must be started with one of these numbers (see file names in bioera/images folder, for instance: 16_earth.gif).

·        Rotation threshold – planet movement depends on this threshold. If biofeedback value is greater then threshold, then planets movement speed is proportional to difference between value and the threshold. If the value is below the threshold, planet moves in other direction. If you want to move the planet only one direction, set this threshold to 0.

·        Clockwise rotation – set the planets’ default rotation direction. If marked and if the value is greater then Rotation Threshold, then the planet will move clockwise around the center.

·        Show trajectory – show orbital lines for each planet.

·        Planet icons – graphic icon files can be specified here, trajectory of each orbit is calculated on base on icon’s actual size.

 

Note: this element is not available at this moment.

Oscilloscope

Draws input data on graphic chart like on an oscilloscope.

 

Inputs: Level1 and Level2 perform both the same function. Each can display a horizontal (dashed) line. It can be useful to show threshold(s) level on top of the signal.

 

Fields:

·        Time range [s] – time range in seconds

·        Amplitude range – amplitude range (contains value, value unit, scale (display) unit).

·        High precision – if set then all values are printed on screen. Otherwise averaged value is printed. This makes a difference when there is more values then pixels to draw on.

·        Reflect time range – if marked then the time range is set automatically to values provided by any other (predecessor) element that defined it (TimeRangeFilter or ArchiveReaders).

·        Show grid – indicates whether to show grid lines on the chart.

·        Display mode – defines how the trace should be drawn on chart:

o   Redraw – trace is printed from left to right, chart is cleared when trace reach the right side

o   Overlap - trace is printed from left to right, trace overlaps previously drawn trace.

o   Scroll to left – trace is scrolled to the left, so that most recent data is on the right side of the chart

o   Scroll to right – trace is scrolled to the right, so that most recent data is on the left side of the chart

·        Level color – sets the color of the Level dashed line (connected to either Level1 or Level2 input)

 

 

Inputs:

·        In – input signal arrives here, the trace is drawn based on this data.

·        Level1, Level2 – allows displaying horizontal dashed line. The most recent input value sets the current line level.

 

Interactive Properties:

·        Offset – allows to dynamically shift the trace vertically (up or down).

 

Advanced Properties:

·        Vertical axis max value – force the maximum value on the vertical (Y) axis. Note: this is only a description and doesn’t influence the signal amplitude.

·        Vertical axis min value – force the minimum value on the vertical (Y) axis. Note: this is only a description and doesn’t influence the signal amplitude.

·        Vertical axis unit – set the unit on the vertical (Y) axis

·        Vertical offset – sets the vertical offset (trace is shifted vertically). This value is overridden by the Offset in Interactive Properties (if set there).

·        Vertical steps – if 0 then the scale is automatically created, otherwise this value defines how many steps are on the (Y) scale

·        Vertical precision – if greater then 0 then this value is used to set number precision on vertical axis. One digit after dot is 0.1, two digits 0.1 and so on. If this value is 0, then the precision is automatically calculated.

·        Horizontal axis max value – same as above but on horizontal (X) scale

·        Horizontal axis min value – same as above but on horizontal (X) scale

·        Horizontal axis unit – same as above but on horizontal (X) scale

·        Horizontal offset – same as above but on horizontal (X) scale

·        Horizontal steps – same as above but on horizontal (X) scale

·        Horizontal precision – if greater then 0 then this value is used to set number precision on horizontal axis. One digit after dot is 0.1, two digits 0.1 and so on. If this value is 0, then this is selected automatically.

 

Displayable range

By default Oscilloscope displays signal range from 0 to +MAX or from –MIN to +MAX. How this is set depends on the input signal source, for example SimulationSource provides symmetric signal (-MIN to +MAX) and signal after ScalarInstantTransform with ABS function is from o to MAX.

 

It is possible to set any a sub-range visible on the Oscilloscope.

 

For example if the input signal is 0 to 100uV, and you want to display only range from 5 to 7uV this can be done that way:

1)  set the Amplitude Range property to 2uV (because 7–5=2)

2)  set the Vertical offset to -5

3)  set the Vertical axis max value to 7

4)  set the Vertical axis max value to 5

5)  set the Vertical axis unit to uV (if not already set)

 

OscilloscopeXY

This is similar to Oscilloscope, but there is no Time axis. Instead both X and Y axis values are set by input values.

One example of using this object is to display Lissajous curves.

OscilloscopeXYZ

This is a 3 dimensional version of OscilloscopeXY.

OSInfo

This element provides some information about operating system and environment.

 

Fields:

·        Action – selects what information is retrieved. Possible options:

o   Root folders

o   Files in folder

o   Date/Time – provides current date and/or time.

o   Folders in folder – list of full paths of folders

o   Folder names in folder – list of folder names

·        Parameter – special field which contains parameter(s) required for information selected in Action field:

o   Root folders - none

o   Files in folder – path to the folder

o   Date/Time format – defines how to format the date and time.
For example MMM d, yy will print Feb 2, 06, and or MM/dd/yyyy will print 02/02/2006. Full specification of the format can be found here.

o   Folders in folder – path to the folder

o   Folder names in folder – path to the folder

 

OSInteractor

Execute a system application, script or a command.

Fields:

·        Path – full path to the executable file

·        Action – action to perform

o   Start application – application is started and control is returned immediately to BioEra

o   Execute application – application is started and BioEra waits until it is finished (should not be used if it takes long time to execute)

o   Start command – any command is executed, also including parameters, and control is returned immediately to BioEra. There is no check if the command can be executed, or if it executed with error of any kind.

 

PatternRunner

This object (along with PatternTrainer) implements pattern recognition. It is implemented with 3-layer neural network and back propagation algorithm for effective learning and recognizing nonlinear patterns.

·        IN – vector samples - patterns

·        OUT – recognition results – vectors

·        Path - the network is stored in this file. This file needs to be created earlier in PatternTrainer.

 

Note: this element is not available at this moment.

PatternTrainer

This object (along with PatternRunner) implements pattern recognition. It is implemented with 3-layer neural network and back propagation algorithm for effective learning and recognizing nonlinear patterns.

 

Inputs/Outputs:

·        IN – input vectors with patterns (each pattern must have the same size)

·        OUT – input vectors with expected patterns results (patterns are of the same size).

·        L – Learning ratio can be set dynamically here.

·        M - Momentum can be set dynamically here on statically in properties.

·        Eff – effectiveness (percent) of the trained neural network. This is a vector; its size is the same as the number of patterns. Each field shows effectiveness [0-1] for each pattern.

·        Mat – Matrix. Similar like Eff, but the error is calculated for each field of each pattern. This is matrix [NxM], where N is number of patterns and M is the size of single pattern.

 

Properties:

·        Learning ratio [0-1] – parameter used for neural network training. Used if the input L is not connected.

·        Momentum [0-1] - parameter used for neural network training. Used if the input M is not connected.

·        Middle layer size – number of neurons in the middle layer of the network. Input layer’s size is the same as input pattern size (coming to input PTR), and output layer’s size is the same as expected pattern result vector (coming to input RES).

·        Learning ratio, momentum those are parameters used in back propagation training process.

·        Max pattern count – the maximum number of input patterns. If more patterns arrive to the input, only the last will be used for training. This value determines also the size of the output EFF vector. Each field in the output EFF vector contains information about percentage effectiveness of the training process for each pattern.

·        Same train number – how many patterns a single pattern is trained before the next pattern is taken.

·        No of cycles – how many times the whole neural learning process is repeated during single processing loop.

·        Show range error – each value in the input and output pattern must be within range 0.0 to 1.0. Otherwise the network will not work properly. If this checkbox is marked, then those ranges are being checked automatically and errors are printed on console.

·        Path - the neural network is stored in this file. File is saved, when bioera exits (or another design is loaded). It can be then used later in any PatternTrainer element to continue training, or in PatternRunner to run stream of patterns against the learned network.

 

Note: this element is not available at this moment.

 

PCMAudioPlayer

This object can send sampled (PCM) data to sound device (if available in system) like sound card.

 

Fields:

·        Buffer length – defines the size of the input buffer. Smaller value causes better (faster) response for sound being modulated dynamically (e.g. binaural beats). But the buffer’s size must be high enough so that the sound is not distorted.

·        Sample rate – this is the sample rate for this sound to play.

 

Inputs:

·        Left – left channel sound samples are provided here, or both channels (mono), if the right channel is not connected. This input must be connected.

·        Right – right channel sound samples are provided here. This input may be not connected.

·        Volume – accepts values from 0 to 100, when 100 is the highest volume. Note: this value changes system volume setting (mixer in Windows).

 

Outputs:

·        Request – this output is for special purpose. It can improve sound quality if connected to sound source elements. Currently there are two sound source elements which support it: Generator and SteppedSoundFileReader.

 

Note: only one instance of this element can be added in a design (including nested designs). If more sounds are to be played, then they should be mixed in PCMMixer before PCMAudioPlayer.

 

PCMAudioSource

This object can read data stream from a sound device like microphone. It can be used for example for short voice messages saved along with data traces. Or for sound/voice analyze.

 

PCMMixer

This element is exclusively to mix audio streams (coming from Generator or SteppedSoundFileReader or SoundFileReader).

 

PET

This object provides interface for PET biofeedback devices (www.brainquiry.nl/).

Fields:

·        Initialize device – this should be checked if BioEra works with real PET device. Only if the input stream comes from a file (or other stream like network), this shall be unchecked.

Advanced features:

·        Output bits. This is currently set to work on up to 16 bit values. Smaller values are possible, although there is probably not much use of that.

·        Input signal range 0-2500 [mV] – This sets what should be +/- input range of the signal. For EEG this will be about +/- 0.5mV (+/- 500uV), for others this will be higher. After this value is set, it is then calculated automatically to accommodate appropriate range that depends on bits. For example for 16 output bits, the lowest EEG range is +/- 300uV.

·        DC filter for channel – this sets DC high pass filter that works on full PET’s input range. Very simple single pole filter was implemented here so that there is no delay.

·        Channel filter coefficient – sets the filter parameter.

 

PN_Pendant_EEG

This is a driver for Pendant EEG device (www.pocket-neurobics.com).

 

Fields:

·        Rate – shows current transmission rate.

 

Status letters:

·        N – channel not connected

·        C – channel connected and works properly

·        R – out of range error,

·        S – synchronization problems, perhaps connectivity between device and PC is unstable

·        X – the element is not active because of a critical problem

 

Outputs:

·        ch1, ch2 – two EEG channels

·        Status – shows current status, can be used to get button status and battery status

·        Errors – sends errors:

·        0 – when device comes back from range error to proper (working) state,

·        1 – when the output 1 is connected and the range error occur (shown also as R status letter as per above description),

·        2 – when the output 2 is connected and the range error occur (shown also as R status letter as per above description),

·        3-9 – reserved, not used now

·        10 and above – when the synchronization error occurs. This value shows the number of synchronization errors (+10) since the session started. To get the actual number, the 10 must be subtracted from this value.

 

PN_Pocket_A3

This element is a driver for Pocket-I and Pocket-II (Abhayamudra) biofeedback devices (www.pocket-neurobics.com).

Fields:

·        Mode – in all modes raw->PC must be set on the device.

o   EEG – sends EEG data to output channels.

o   HEG – sends HEG data to channel 1 and 2, and EEG data to channel 3 and 4

o   Internal protocol – sends 8-bit values (0-255) out of internal firmware protocol.

o   Pendant – sends 12-bit values (available only for Pendant device).

·        Rate – shows current transmission rate.

Status letters:

·        N – channel not connected

·        C – channel connected and works properly

·        R – out of range error,

·        S – synchronization problems, perhaps connectivity between device and PC is unstable

·        X – the element is not active because of a critical problem

 

Pendant mode

If the mode is set to Pendant, it is also possible to read additional information from the ch4 output (which is normally not used by Pendant device). The following numeric codes are being sent to this output:

·        0 – when device comes back from range error to normal/proper working state,

·        1 – when the output 1 is connected and the range error is being indicated (shown also as R letter as per above description),

·        2 – when the output 2 is connected and the range error is being indicated (shown also as R letter as per above description),

·        3-9 – reserved

·        10 and above – when the synchronization error occurs. This value shows the number of synchronization errors (+10) since the session begun. To get the actual number, the 10 must be subtracted from this value.

 

PN_Pulse1

This is a driver for Pulse1 HEG biofeedback device (www.pocket-neurobics.com).

 

PianoKeyboard

This object can used as a display (e.g. for external piano keyboard connected to BioEra) or an interactive element to allow playing simple melodies with a mouse.

Fields:

·        Octaves [1-10] – defines how many octaves should be shown

·        Transposition [1-127] – defines which note is represented by the first piano key

·        Interactive – whether this is interactive (used with mouse) chart or not.

 

Allowed input values are from range [0-255]. Range [0-127] defines ON action for a button, and range [128-255] defines OFF action. All input values are sent to output. Additionally if interactive mode is turned on, then all interactive actions on keyboard (with mouse) are also recorded and sent.

 

Polygraph

This element is similar to Oscilloscope element, but it can display many traces on the same chart. It can be useful to compare traces visually.

 

See the Oscilloscope element above for properties descriptions that are same as here, otherwise look below.

 

Fields:

·        Time range [s] – defines how long the displayed trace is.

·        Show grid – enable or disable grid on the chart.

·        Display mode – how the trace is painted:

o   Redraw – trace is started on the left side toward the right side, when it reaches right edge chart is cleared and starts again from the left

o   Overlap – similar to Redraw, but chart is not cleared at the end, instead only currently painted trace is updated.

o   Scroll to left – trace is scrolled to left

o   Scroll to right – trace is scrolled to right

o   Scroll to left and fill – trace is scrolled to left and filled under the trace. More options is provided in Advanced Properties which can further customize this display.

·        Traces – defines how traces are put on the chart

o   Evenly distributed – each trace has equal amount of space starting from the top.

o   Overlapped – traces share the same vertical space.

·        Labels location – defines where the trace labels are put

o   Top

o   Left

o   No labels

·        Colors – color of each trace can be defined here. If this field is empty, then the colors are generated automatically. See color format.

·        Labels – each label can be names differently here if option DEFINED_LABELS is selected in Trace Description (see below).

·        Trace description – select how the traces are being described on the chart.

o   PRECEEDING ELEMENT – descriptions are taken from the element connected to the input

o   DEFINED_LABELS – descriptions are defined manually in the Labels field.

o   INDEXES sequential indexes (numbers) are used as descriptions

o   PRECEEDING_OUTPUT – output names from the preceding element(s) are used as descriptions.

o   PRECEEDING ELEMENT + OUTPUT – both connected to input element name and its output name are displayed.

·        Traces – defines how traces are displayed each to other

o   Evenly distributed – each trace has its own vertical space to display

o   Overlapped – traces are displayed on the same vertical space

 

Interactive Properties:

·        Offset – allows to shift all traces vertically (up or down).

 

 

Advanced Properties:

 

Note: some properties are the same as in Oscilloscope and they are not described here. Properties used exclusively in Polygraph:

·        Vertical offsets – offset for each channel can be set here

·        Channel modes – advanced customization for individual channel options, only available in "Scroll to left and fill" mode:

o   Value 1: area is filled with gradient color.

o   Value 2: area is filled with color.

o   Value 4: gray line is drawn

o   Value 8: color line is drawn.

o   Value 256: force channel amplitude max/min to use (if this is not set, then only non-zero values are used)

Note: the above values can be combined, for example value 5 (5=1+4), will fill the area with gradient color and also draw the gray line on top of the trace.

·        Channel amplitude max, Channel amplitude min – those two values allow set any range (for each channel) to show on Polygraph. It can be asymmetric. Those values override (for this channel) the default amplitude value set in main properties.

·        Mouse selects scale – if selected, then mouse click will switch between trace scales (if labels are on top), this is useful when they are different.

·        Fill images – used to select gradient color image for each trace. Some gradient image examples are in images/gradient folder.

·        Scroll grid – if set then the grid will scroll along with the trace, otherwise only trace will scroll.

·        Special modes – advanced customization for some options:

o   Value 1: force horizontal scale min/max to use (if this is not set, then only non-zero values are used)

o   Value 2: force horizontal scale min/max to use (if this is not set, then only non-zero values are used)

Note: the above values can be combined, e.g. value 3 (3=2+1) will force both horizontal and vertical min/max settings to use.

 

Displayable range

See similar section under Oscilloscope.

PostProcessor

This element buffers input values, then sends one value to output at a time and processes all connected elements for each value sent.

ProgressBarDisplay

It element is the same as BarDisplay, but it displays bar horizontally. Refer to the description of BarDisplay.

PropertyBuilder

This element combines properties from many elements into one set (for easy access). Primary use of this element is for NestedProperties. Each single property requires single connection from the output to the destination element.

 

Fields:

·        Put on General Tab – if set then all properties set here will be put on General tab. Otherwise they are on a separate tab.

 

PropertyGetter

This element is very similar to PropertySetter (described below), but it lets read a property dynamically.

 

To use this element, its output must be connected to EVENT output pipe (right blue pipe on the BOTTOM of an element).

PropertySetter

This element can change a property in any element dynamically during processing. This is a very unique and very powerful mechanism, it offers ultimate flexibility, e.g. it allows changing features like threshold, range, positions etc, which are modified rarely (e.g. based on user interface).

 

This mechanism should be used only for rarely modified properties because it is not as fast as data exchanged via pipes. That means it is perfect to change occasionally a property, but it is not recommended to exchange streamed data.

 

To use this element its output must be connected to EVENT input pipe (left blue pipe on the BOTTOM an element).

 

Note: this element must be used with caution, it may have unexpected effect on the design. If possible then select REINIT_ALL option which will reinitialize design after a change has been made.

 

Fields:

·        Scope – property range:

o   ELEMENT_PROPERTIES – main element’s properties

o   ADVANCED_PROPERTIES – advanced element’s properties

o   CHART_PROPERTIES – chart properties (e.g. trace, border, axis, fonts) if the target element has one

o   SIGNAL_PARAMETERS – this is very advanced property, allows to change signal parameters

o   INTERACTIVE_PROPERTIES – this option is available only in some elements e.g. Oscilloscope or Polygraph. If the destination element implements Interactive Properties, then they will be selected in the Property field. The Interactive Properties are described in the target element section.

o   ELEMENT NOTES – second tab on the element properties

·        Input type – input pipe’s type is controlled here. For example to set integer property we need SCALAR input; to set an array, we need VECTOR; to set a picture this must be OBJECT pipe and so on. The DIGI_FLOAT type is for non-integer fields (with floating point).

·        Property – selects which property of an element should be set. List of all properties is listed here once it is connected to destination element.
Note: Only properties that compatible with Input Type are listed here. To see other properties change Input Type and press Apply.

·        Post action – provides various re-initialization options that may be performed after the property is set:

o   None – no action

o   Reinit Target – only the target element is reinitialized. Note: this reinitialization is fast but may not be good enough for each element. If possible, it is recommended to always select ReinitAll, because it will work with all elements (but it is slow and processing is restarted).

o   ReinitAll – this reinitializes all elements in current design, it guarantees the new settings will work, but it may take longer time then others Post actions. This option also restarts all elements.

o   Stop-Reinit-Start – works similar to Reinit Target, but also stops/start the target element. This opton is much deeper the Reinit Target.

o   Reinit Target and followers – this option reinitializes the target element and all elements connected to its output (and their outputs). Please note, this needs to be used with extra caution, if possible ReinitAll is recommended instead.

o   Stop-Reinit-Start target and followers. Like the above, but all elements are also stopped and started.

o   Reinit Target with delay. This option is useful when there are more PropertySetters connected to the same destination Element. In such case the initialization is postponed until all are set. Only one PropertySetter (among all modifying the same element) needs it be set.

o   Reinit Target and followers with delay. Similar to the two above options.

o   Stop-Set-Reinit-Start All. This option works almost like ReinitAll, but it stops all elements BEFORE the property is set in the target element.

RangeFilter

This object controls the range of the sample values. The output rate depends on the values in the input stream, so it can fluctuate. This object can be useful for example for controlling unexpected (out of range) behavior or as a threshold sensor. See OSInfo.

Fields:

·        Inclusive – if this is set, then only the values from within defined range constraints are sent to output. Otherwise only those out of range are sent.

·        Range – defines value range.

 

Note: this element has been removed. Threshold element should be used instead.

 

RangeMapper

This element converts values from input range to output range, for example if input range is 1-9, and output 21-29, then for input value 7, to output will be sent 27. Or if input range is 100-300, and output is 1-5, then for input 150, value 2 will be sent to output, and for input 200, it will be 3. Output value is always kept inside output range. If input value is out of the range, then output will be at one of the output edge, either maximum or minimum.

Fields:

·        invertedOrder – modifies order of the output range, in the last example, for input 150, the output would be 4.

RateLimiter

 

Note: RateLimiter2 is recommended to use instead of this element unless you do need all the options available here.

 

This element controls throughput, or how many samples will be passed from input to output.


Fields:

·        Number of samples defines maximum number of samples that will be passed to output within specified below time range.

·        Time range [ms] – rate is calculated for this time specified in milliseconds. For example if number of samples is 4, and time range is 1000, then it means max rate is 4. If number of samples is 4, and time range is 500, then the output rate is 8 (samples per second), but not more than 4 per each 500ms.

·        Clean excessive data – input values may be piled up in input pipe buffer if the input rate is greater than rate here. To avoid buffer overload this checkbox should be set.

RateLimiter2

This is a simpler version of RateLimiter. Because only Time range is configurable, it can be optimized for faster processing.

 

Fields:

·        Time range [ms] – only one sample is sent to output within this time range. If there is no input sample within this time, then next available input sample is sent to output immediately when it arrives and next time frame starts from this moment again.

 

RateNormalizer

Output rate in this element is configurable and constant at all times.

 

If the input sample count is less than needed to maintain the output count, then the last input sample is resend to output. If the input sample count is more then required on output, then input samples are being sent consecutively to output (in the order they arrived) unless more of them arrived then defined in “Input count to drop”, in which case all input samples are dropped (lost).

 

Fields:

·        Output rate [sps] – define the output rate. Note: if changed with PropertySetter, then the element must be restarted.

·        Input count to drop – maximum input sample count before they are all dropped.

 

RawFileReader

Read raw bytes values from a file.

RawFileWriter

This object writes to a file the raw values (without headers or formatting).

ReportGraph

This element can be used to display and browse static (already captured) data. The graph is shown when the design (or element) is Stopped.

 

Right mouse click brings a popup menu with several options:

·        Show All - show entire recording.

·        Zoom Out - zoom twice amplitude of all channels.

·        Zoom Out Channel - zoom twice amplitude of currently selected channel.

·        Zoom channel full - currently selected channel data is zoomed in so that it fits full vertical range of the chart.

·        Zoom full - the same as above but for all channels.

·        Wider - time window is extended twice.

·        Refresh - refresh current state.

 

Left mouse can be used to select visible part of the trace. If done on the chart, then both amplitude and time ranges are set. If selection is done on a margin, then only one dimension (time on bottom or top and amplitude on left or right margin) is adjusted. Further, if selection is done on right margin, then only current channel is adjusted.

 

If the left mouse button is clicked together with the CONTROL key, then the current point is marked on both scales, to allow precise value reading. If this operation is repeated, then two points are marked, and additionally the difference between their values is displayed.

 

Properties:

·        Grid - select grid type.

·        Show actual recording time - if not selected, then the X (horizontal) scale starts from 0. Otherwise it starts from the time when the recording was made (during day). This can work only if connected to XDF or EDF reader.

·        Connect all input channels - if selected, and input is connected to XDF or EDF reader, then ReportGraph's input channel count is adjusted and all outputs of the XDF/EDF reader are connected automatically.

·        Use one scale - if set, then one scale (of the channel with maximum amplitude range) is used for all channels. Otherwise each channel can have different scale, which is automatically adjusted so that the channel's amplitude range covers full height of the chart.

 

Advanced Properties:

·        Correct time - due to rounding the full time range may not always match the actual length of the recording. This can be observed if the recording is very long (e.g. 10 hours or more). This field allows to readjust the length.

·        Start sample index, End sample index - set (or read) the visible time range (scaled in samples).

 

ReportTable

This element can be used ONLY together with ReportGraph to present additional information on a table. Each row in the table represents signal connected to the input of ReportGraph. Each column in the table represents signal connected the input of ReportTable. See the SessionReport.bpd example design which demonstrates how this can be setup.

Resampler

This element converts from one sample rate to another. It can up sample or down sample depending on the parameters.

Fields:

·        Input samples – number of input samples

·        Output samples – number of output samples produced for input samples.

 

Smooth: - this function is used only for up-sampling

·        FLAT – halfway samples are copied from the last corresponding input value.

·        ZEROS - halfway samples are set to zero.

RouteGame

This element provides ability to create a simple game with animation and action being controlled dynamically. At this moment it simply moves animated figure along chosen route, and each event (bonus points, game finish etc) is send to output (it can be then connected to a sound control or other action).

 

The animation and bonus figures can be designed separately and used in the game. Default PacMan - like implementation is provided.

 

Fields:

·        Route width, route height – route sizes can be customized

·        Trajectory – route can be now SPIRAL, LAYER and RECTANGLE.

·        Play in loop – game starts again on finish

·        Image folder – contains all animation pictures

·        Velocity – movement speed can be controlled here

·        Animation rate – animation can be controlled here

RuntimePanel

This element can create custom panel/dialog which can be designed the same as main Runtime Window. Its output must be connected to an element (one or more) which contains a chart; this chart will be then shown on the panel dialog.

 

Note: This element should be avoided as it is not being improved or supported any more. Instead a nested chart should be created and put on a separate Frame or Dialog.

QPET

Driver element for QPET biofeedback device (www.brainquiry.nl).


Fields:

·        Configuration - QPET is highly configurable, therefore it is possible to create various configurations and selects between them here during runtime. Default (example) configurations are set for EEG, GSR and AI, but each of them can be set any way.

 

Configuration fields:

There is up to 7 output channels, each channel can be configured for EEG, GSR or AI. Each type must contain its own configuration format; consecutive fields are separated by spaces.

 

EEG channel (micro-volt) format:

<EEG> <name> <+electrode> <-electrode> <signal-rate> <gain> <+range> <-range>
where:

·        EEG - channel type selector

·        name – channel’s name (visible on the QPET element output, the name should contains only letters and digits)

·        + electrode – positive (active) EEG electrode

·        - electrode – negative (reference) EEG electrode

·        signal-rate – signal output rate (speed), it must be matched to what the device can handle. If it doesn’t then an error message explains what is the nearest available signal rate.

·        gain – by default set to 1, if more sensitive signals are measured, then it can be set to: 1, 2, 4, 8, 16, 32 or 64

·        + range – this is nominal positive signal range. It should be set as close to effective maximum as possible.

·        - range – this is nominal negative signal range. For EEG it must be negative and its absolute value equal to +range.

 

 

GSR channel (ohm):

<GSR> <name> <signal-rate> <+range> <-range>
where:

·        GSR - channel type selector

·        name – channel’s name (visible on the QPET element output, the name should contains only letters and digits)

·        signal-rate – signal output rate (speed), valid values: 13, 27, 55

·        + range – this is nominal positive signal range. It should be set as close to effective maximum as possible.

·        - range – this is nominal negative signal range. For GSR it is set to 0.

 

 

AI channel (mill-volt):

<AI> <name> <channel> <signal-rate> <+range> <-range>
where:

·        AI - channel type selector

·        name – channel’s name (visible on the QPET element output, the name should contains only letters and digits)

·        channel – channel index: 1, 2, 3 or 4

·        signal-rate – signal output rate (speed), valid values are: 13, 27, 55

·        + range – this is nominal positive signal range. It should be set as close to effective maximum as possible.

·        - range – this is nominal negative signal range. For AI it should be negative and its absolute value equal to +range.

 

ScalarBuffer

This element has an internal buffer where input values are stored and then released by input trigger.

Fields:

·        Initial value – initial value can be set manually. It is sent to output if internal buffer is empty unless BUFFER_ALL_SEND_ALL_AVAILABLE is selected.

·        Remember – If set then the last value will be remembered, unless BUFFER_ALL_SEND_ONE_IF_AVAILABLE or BUFFER_ALL_SEND_ALL_AVAILABLE is selected.

 

Functions:

·        BUFFER_LAST_SEND_ONE – only last input value is remembered and it is sent when triggered.

·        BUFFER_ALL_SEND_ONE – all input scalar values are stored in internal buffer. When triggered they are sent one at a time. When internal buffer is empty, the last input value is sent for each trigger.

·        BUFFER_ALL_SEND_ONE_IF_AVAILABLE - all input scalar values are stored in internal buffer. When triggered they are sent one at a time. When internal buffer is empty, nothing is sent.

·        BUFFER_ALL_SEND_ALL_AVAILABLE - all input scalar values are stored in internal buffer. When triggered all of them are sent at once and internal buffer is emptied.

ScalarCrossTimeRatio

This object counts samples coming to both inputs, and sends the ratio value calculated as C1/(C1+C2) where C1, C2 are counters for input 1 and 2. The output value is in range 0 – 1000.

·        Time period [s] – if greater then 0, then occurrences are counted within this time period; otherwise they are counted since processing started. Real time is measured; it is not dependent on input’s rate.

ScalarCrossTransform

Transformation is being performed on two scalar streams. Output rate is the same as input rate.

Fields:

·        Size – number of input samples

 

Functions:

·        CORRELATION – standard cross-correlation calculation.

 

ScalarInstantTransform

Each transform is performed on single sample. Output rate is the same as input rate.

Functions:

·        INVERTER - output value is inverted (against middle of the scale). For example if input sample value is 2uV, then the output will be -2uV.

·        DIFFERENCE – output value is the difference between current input sample and previous input sample.

·        ABS – takes the absolute value of the sample.

·        WITHIN_DEFAULT_RANGE – if sample is out of the default range, then it is converted to max or min value within the allowed range. Allowed range is defined in source element. For example for ModEEG_P2 element it is from -512 to 511.

ScalarSet

This element contains a set of scalar values that can be chosen by input index. Input values starts from 0, this means that first scalar from the set is sent for input 0, second scalar for input 1 and so on.

Fields:

·        Values – set of scalar values

ScalarShifter

This element has internal buffer and it allows parallel access to a few last samples.

 

The first output (Out1) always sends the latest input sample, the second output (Out2) sends previous sample and so on.

ScalarSingleMap

Input value(s) can be mapped to other (single) output value.

Fields:

·        From – set (array) of input values that are mapped to output value

·        To – single output value

·        Pass other values – if this is set, then all values different then input, are passed to output unchanged. Otherwise they are abandoned.

ScalarTimeRatio

This element can be also known as a “median filter”. It is most often used to calculate Auto-threshold value.

 

Fields:

·        Time period – also known as Epoch Time, over this time period the ratio is calculated

·        Time ratio – [0-100%] – defines the spot in the Time period

·        Down sampling – if set, then output value is sent once per each Time period, otherwise its rate is the same as input rate.

 

Here is how it works. All input values inside the Time Period are sorted from max to min. Then value at the index defined by Time ratio is taken and sent to output. For example if the input rate is 100 samples per second, and Time period is set to 2 seconds, then there are 200 samples in the time period. Those samples are sorted from the highest to the lowest value. This means that value at index 1 has highest value, and value at index 200 has lowest value. If the time ratio is 50%, then value at index 100 is sent to output. If Time ratio is 80%, then value at index 160 is sent to the output.

 

If the Time ratio is 0 or 100, than this is a special condition. For 0 - the Digital Max value is sent, and for 100 - Digital Min value is sent to output. Both min and max value can found in Advanced Properties of this element.

 

ScalarTimeTransform

There are several functions available in this element. All of them keep the output rate the same as input rate unless “Down sampling” is selected. If “Down sampling” is selected then the output rate is: InputRate divided by Time range (in seconds). Each transform is being performed over the Time range period.

 

Fields:

·        Time range – the processing is being done over this range. The input data is buffered so the first output sample will come when the input buffer is full (unless the Pre calculation is set, see below).

·        Down sampling – if this is set, then there is one output sample per Time range. Otherwise number of output samples is the same number of input samples.

·        Pre processing – in this option additional processing is performed before input buffer is fully filled with the input values. That way output values are immediately available calculated over the available samples.

·        Synchronizing value – under normal conditions (without Pre Processing) there is a delay until input buffed is filled. To avoid time asynchrony, the synchronizing value can be sent to output (the same count as Time range) unless it is set to -1. This option has no effect if Down Sampling or Pre calculation is set.

 

Functions:

·        AVERAGE – output value is averaged over the number of input samples.

·        MAX – output maximum value from the last N of input samples.

·        MIN – output value is the minimum from the last N input samples.

·        PEAK_TO_PEAK – the maximum difference of signal amplitude is written to output.

·        VARIANCE – variance is calculated as sum((n – mean)^2) / mean

·        STANDARD_DEVIATION – calculated as square_root(sum((n – mean)^2) / mean)

·        AVERAGE(ABS) – average from sum of absolute values is calculated

·        MAX(ABS) – maximum absolute value

·        LONG AVERAGE – this average method should be used for long time periods, 1 minute or more. The calculation is much faster (optimized) then in the regular AVERAGE mode. But the option ‘Down sampling’ is not available here.

ScalarToLogical

Convert scalar stream to a logical state. The last value in the input buffer is compared with the threshold. Only one logical value (1 or 0) is sent to output (neither is repeated unless it changes).

 

Functions:

·        = – equal to the threshold

·        <> – different then threshold

·        > – greater then threshold

·        < – less then threshold

·        >= – greater or equal to threshold

·        <= – less or equal to threshold

ScalarToFloat

Convert a scalar to a float value.

Mode:

·        DIRECT – output value is the same as integer (digital) input (no rescaling)

·        DIGI_SCALED – scalar is a pseudo-float number scaled by DIGITAL_MAX/PHYSICAL_MAX ratio.

·        DIGI_FLOAT - scalar is a pseudo-float number scaled by 1000.

ScalarToText

Convert a scalar value to a Text value. Can be converted back using TextToScalar.

ScalarsToVector

Create a vector from several scalar inputs. All scalar inputs must have the same rate. The output rate is the same as the lowest of all inputs rates.

 

Fields:

·        Fields descriptions – if checked then each field in output vector will have the same name as the element connected to input. Otherwise the vector field names are not specified.

·        Synchronized inputs – if checked, then each input element should provide the same number of samples, excessive samples are buffered. If not checked, then excessive samples are not buffered (discarded).

Selector

Select one or many output(s). If an output N is selected, then its state is set to TRUE. In the same time the output that was selected previously sends FALSE. When processing starts, all outputs are set to FALSE. Number of outputs can be changed (but BioEra restart is necessarily after that). Value of the input sample determines which output is activated.

 

Fields:

·        Remember selection – output selection is remembered and set on the next start.

·        Initial selection – initial value can be set manually here. It will be overridden if Remember selection option is selected. If this value is less than 0, then it is inactive.

·        Negative input selects none – if marked, then negative input value will unselect all outputs. If cleared, the negative input value is disregarded

 

Selection mode:

·        SINGLE – only one output can be set in this mode. Initially all outputs are not set (unless Initial Selection is 0 or more). The indexing of the output starts from 0. This means, that to set the first output, the number 0 must be sent to the input pipe (or set Initial Value field).

·        BINARY – many outputs can be set simultaneously. Each output is set according to each bit in the input value. For example input number 6 will set output 2 and 3 to TRUE, and all other outputs to FALSE.

 

ScalarValue

This element contains a single scalar value. It is similar to the Slider element, but there is no graphic user interface here. Incoming samples can modify the value according to the selected function. Whenever an incoming sample arrives, the value is modified and sent to the output. Therefore the input rate is the same as the output rate.


Fields:

·        Minimum value – output value can’t be lower than this value.

·        Maximum value – output value can’t be higher than this value.

·        Initial value – initial value after start

 

Functions:

·        SUM MODULO – input value is added using modulo (rotation) function.

·        SUM - input sample is added to the value.

·        INCREMENT – any input sample causes the value to increment (add) by 1.

·        INCREMENT MODULO – like above, but the increment of MaxValue will switch to MinValue.

·        DECREMENT - any input sample causes the value to decrement (subtract) by 1.

·        DECREMENT MODULO – like above, but the decrement of MinValue will switch to MaxValue.

·        SET VALUE – destination value is set using input value.

·        TWICE/HALF – any input sample equal to 0 (or FALSE) will divide the value by 2 (take half of it), and any input sample different then 0 (e.g. TRUE) will multiply the value by 2.

·        INCREMENT/DECREMENT – any input sample equal to 0 (or FALSE) will decrement (subtract) the value by 1, and any input sample different then 0 (e.g. TRUE) will increment (add) the value by 1.

 

Sequencer

This object sends to output the defined values in a sequence. To send a value, sequencer must be triggered (which means it must receive a triggering sample on its input).

 

Input trigger:

·        Any sample – each incoming sample triggers next output value

·        TRUE – only TRUE value (see info about Logical pipes) triggers next output value

·        FALSE – only FALSE value triggers next output value

·        TRUE_THEN_FALSE  – only FALSE after TRUE value triggers next output value

·        FALSE_THEN_TRUE  – only TRUE after FALSE triggers next output value

 

Output value:

·        SEQUENCE – output values are sent in defined order.

·        SUM – each next output value is a sum of previously sent value and next sequence (defined) value.

·        RANDOM ANY – any random value is taken from available values.

·        RANDOM ALL – like above, but random value is taken from not-yet-sent values until all defined values are sent. The RANDOM_ANY function should work statistically the same (in long time), but this one here is to make sure all values are evenly distributed.

SerialDevice

This element can be used on Linux/Unix machines to access serial port directly from a serial device (without using SerialPort).

 

Note: This element is currently not available.

 

SerialPort

This element can be used to access a serial port.

Fields:

·        Port – select port to use. All available ports are automatically listed here. If a port is not listed then it either doesn’t exist or is not visible in system.

·        Baud – serial transmission speed

·        Data bits – data bits

·        Stop bits – stop bits

·        Parity – parity

·        Flow control – flow control

·        Implementation – this is an advanced option. It gives ability to choose which driver of serial port should be used. At this moment two solutions are available

o   javax.comm (driver is provided with BioEra but only on Windows system)

o   gnu.io – provides wider range of drivers for various systems including MAC OS (see http://www.rxtx.org/). Windows version of this driver is provided in the default installation bundle. To use it on other system, simply download version 2.1 of appropriate RXTXcomm.jar file and replace the existing one.

·        DTR, RTS – set manually those lines on the serial device.

·        Check device during initialization – this turns on additional control of the serial port connection, so that any problem is known before processing is started. If this is unchecked, then any problem will be signaled after processing is started.

SetInfo

This element provides size of the connected Set element, e.g. ScalarSet, TextSet and others.

Settings

This element provides access to Design Settings and System Settings programmatically from within the design.

Slider

This element contains single value that can be modified within defined range (min and max). Value can be changed either in the runtime window (slider chart) or by incoming input values.

Fields:

·        Maximum value – output value will never go above this.

·        Minimum value – output value will never go below this.

·        Initial value

·        Remember last value – is set then “Initial value” will be set to the last value sent.

·        Input sends output value – when selected each input value sends output value, otherwise output value is sent only when the slider is moved by the mouse

·        External PS – if set and input is connected, then the output digital range is the same as the one in the element connected to input. Otherwise the range is between Max and Min values.

 

Function – defines how the input sample modifies current state:

·        SUM MODULO – input value is added to the value with using modulo (rotated) operation.

·        SUM – input value is added, but the output value cannot exceed defined range.

SoundFileReader

Read a sound from a WAV file (uncompressed) or an mp3 file. The data can be then further processed or used as a direct sound feedback together with PCMAudioPlayer.

SourceSelector

This element allows switching between many input source streams, e.g. from a Device and from Simulator. Because sources may have different signal characteristics, then the selection is only possible via PropertySetter. It is also necessary that entire design is reinitialized after that from PropertySetter (best to use “ReinitAll” option).

Status

This element shows text message on the chart.

Functions:

·        DYNAMIC – text messages is received on input. Consecutive lines are separated with ‘\n’ or ‘\r’ characters.

·        STATIC – one of the defined text messages selected by input value is shown. For input value 0, the first defined message is shown, for input value 1 the second defined message and so on.

 

Note: This element is not supported anymore. The TextDisplay should be used instead.

 

StatusML

This is multi line status. It works just like Status, but handles dynamic messages. The consecutive messages are scrolled vertically.

 

Note: This element is not supported anymore. The TextDisplay should be used instead.

SQLReader

The element used to read data saved in an SQL database (with SQLWriter). To use it, database must be installed and setup, read details in the SQLWriter description below.

 

Settings:

·        Host – database host, can be on the same or other computer.

·        Username – username which can access bioera database.

·        Password – username password

·        SessionID – select which session to read from. If this value is negative, then the last saved (maximum) session is automatically selected

·        Max SessionID – (read only), shows the last session id

·        TimeStamp – (read only), shows the time when the selected session was created

·        Record count – how many records have been inserted in the selected session

·        Read in loop – if selected the data is read in loop.

·        Keep original rate – if set then data is read at the same speed as it was recorded.

 

Headers tab contains all (read only) columns and values in BioEraHeader table for this session.

SQLWriter

The element used to save real time data in an SQL database.

 

Note: Before this element can be used, the database and jdbc_driver have to be installed. See chapters below.

Database organization:
There are 2 main tables automatically created and populated by SQLWriter: BioEraHeader and BioEraData. After design is started one row is inserted into BioEraHeader, it contains predefined SessionID column, predefined Timestamp column, and more columns which are configurable in Header Colums property (described below). Then records are inserted into BioEraData table during processing. Each data record contains predefined SessionID column (same as above) and predefined Trial column, which starts from 1 and is incremented by 1 in each new data record. The other columns are configurable in Data columns property (described below). There is also a third internal table: BioEraProperties, it is needed primarily for SQLReader and should not be used externally.

 

Settings:

·        Host – database host, can be on the same or other computer.

·        Username – username which can access bioera database.

·        Password – username password

·        Data columns – used to define configurable columns in BioEraData table, at least one is required.  

·        Header columns – used to define configurable columns in BioEraHeader table, at least one is required.

·        Recreate database – this checkbox can be used to delete all content and recreate the tables. The recreation is performed during the next start (and this checkbox is automatically cleared). This operation is required whenever configuration of the SQLWriter have changed significantly.

 

Headers tab contains configurable (in the Header columns property described above) columns and values which are inserted into BioEraHeader.

 

Database Installation


MYSQL database server can be downloaded (free) here and installed on local computer. The ‘Essential’ version is good enough. Follow the installation instructions, make sure that you set a password (default password for root user is empty which is not good).

 

After it has been installed, create BioEra database using mysqladmin command line tool (installed in folder c:\Program Files\MySQL\MySQL Server 5.1\bin):


mysqladmin --user=root --password=root create BioEraDatabase

To verify that database has been created use this command:

 

mysql --user=root --password=root

 

Then:

 

mysql> use BioEraDatabase;


Driver installation

Access to a database is possible via a JDBC driver which is different for each database. For MySQL the driver name is Connector/J, and can be downloaded from here: http://dev.mysql.com/downloads/connector/j/5.1.html

 

After you downloaded the mysql-connector-java-5.1.8.zip file (or a newer version), extract this file: mysql-connector-java-5.1.8-bin.jar and put it into BioEraPro\ext folder.

 

SimulationSource

This simulation object can generate various signals.
 

Fields:

·        Frequency array [Hz] - contains array of signals.

·        Amplitude array [uV] – contains array of corresponding amplitudes for the above signals.

·        Signal range [uV] – output signal range

·        Delay[s] – shifts the phase of the output, this can be useful if more simulation sources are used and different phases are needed between them.

·        Noise level [uV] – generates random noise.

·        Output sample rate [Hz] – output sample rate.

SteppedSoundFileReader

Read sounds from several files. The file to read from is selected by the input numeric value.

 

File name must be either a number (e.g. 1.wav, 2.mp3) or a number followed by an underscored name (e.g. 1_nameA.wav, 2_nameB.mp3). Extension must be the same as set in the property File extension described below.

Fields:

§  Output buffer [s] – number of samples sent to output at once is never more then this value.

§  Cache files – this option is useful if the same sound file is being played often, especially if it is compressed (mp3), and the decompression takes too much time. It allows to load the whole (uncompressed) file content into cache (internal buffer) and then play it directly from there. The total number of uncompressed samples in the cache must be not more then 1 million (1Meg), otherwise only the first 1 Meg is loaded.

o   NO CACHE – cache is not used

o   CACHE FILES DURING RUNTIME – useful when low number of files is played and there are many files in folder

o   CACHE FILES ON INIT – useful when most of the files in folder are being played.

§  Read in loop – if selected then the last selected sound will be read (and sent) in an infinite loop

§  Sound rate – this option is to make sure that output rate is always the same, no matter how the sound file is recorded. If a sound file is recorded with different rate, then it is automatically re-sampled to the selected rate.

§  Sample folder – sound files are being searched in this folder only

§  File extension – file extension (the same for of all files). Currently implemented are .wav and .mp3.

 

Outputs:

§  Left channel, right channel – sound data for mono or stereo.

§  Finished – TRUE sent when a sound has finished playing

§  New sound – TRUE sent when a new sound started playing

§  File name – file name object is sent when the sound starts playing

 

Special features:

1.  Samples sent are either counted in time (this is when Output Buffer set is used) or triggered by an AudioRequestor element through Event input (currently only PCMAudioPlayer can be AudioRequestor). If any AudioRequestor is connected, then it takes control over the samples that are being sent, otherwise number of samples sent is calculated by the size of buffers.

SteppedSoundPlayer

Play sound files. Sounds can be played either using internal (java) sound player, or external executable player. If the path to the external player is specified, then this external player is run, otherwise internal java player is used.

1.  For each input numeric value, different sound file is played.

2.  Each file name must contain number (which corresponds to the scalar value)

3.  File can be either pure number with extension (e.g. 1.wav, 2.wav), or a number followed by ‘_’ (underscore) and name, e.g. 1_alpha_msg.was, 2_beta_msg.wav.

4.  If only one file is played, then it may be the best to put it in different folder. Name can begin with 1_name.wav, and be triggered by logical output (each logical TRUE is equal to 1).

 

There is an example folder with sounds in folder media/ding.

Fields:

§  Folder with sound files – path to existing folder with files.

§  Sound file extension – constant file extension in all files.

§  External sound player path path to external player. If it exists, then it is executed, and the file name is passed to it as parameter.

 

Note: This element is NOT recommended. Better use SteppedSoundFileReader or SoundFileReader with PCMAudioPlayer element to play sounds.

StreamToVector

Convert scalar stream to vector stream.

Fields:

·        Size – size of the vector

·        Rate – output rate (resolved on base on input rate)

Functions:

·        FRAME – takes N input samples (defined in Size parameter), creates vector and sends it to output. This is done every N sample depending on Rate.

·       TRIANGULAR, HANNING, HAMMING, BLACKMAN – as above, but the windowing is added.

 

StreamToVector2

More advanced version of the StreamToVector element, with more options.

Fields:

·        Output vector length – size of the output vector

·        Input sample count – number of samples which are written into the output vector, it can be equal or lesser then Output vector length. If this number is lesser then Output vector length, then remaining fields are filled with zeros.

·        Overlapped sample count – each new vector is created for this period, for example if this is 2, then output vector is created on every other input sample. Output rate is equal to Input Rate / Overlapped sample count.

·        Pre processing – if set, then output vector is created also before Input sample count samples arrives.

·        Normalize power – if set, then each value in the output vector is multiplied by: (Output vector length / Input sample count). During preprocessing it is (Output vector length / AvailableInputSampleCount), where AvailableInputSampleCount is the number of samples currently available.

·        Function – the same as described in StreamToVector.

 

SubVector

Take the input vector, and send only part of it to the output. Output vector’s resolution is the same as input resolution.

Fields:

·        Low frequency [Hz] – minimum physical value of the sub-vector

·        High frequency [Hz] – maximum physical value of the sub-vector

·        Output vector size – shows the sub-vector’s actual size.

·        Start index – shows the start position of the sub-vector in original input vector.

·        End index - shows the ending position of the sub-vector in original input vector.

 

SubVector2

Similar element to SubVector, but the sub-vector is calculated by integer vector index.

 

Fields:

·        Index – the beginning of the sub-vector (the lowest index is 0).

·        Size – the size of the sub-vector, Size + Index must be lesser then input vector length.

 

Synchronizer

The element useful when many (more then one) channels deliver data of uneven rate and the output (following) element (e.g. Polygraph or EDFFileWriter) requires synchronized data (the same amount of samples in all channels).

 

This element always sends the same amount of samples to all connected outputs.

 

Mode:

·        EQUAL_INPUT_RATES – this mode assumes that all input channels are of the same rate, but not always evenly distributed (in short term) across all channels (they must be evenly distributed in within 1-2 seconds). In this mode excessive samples are hold on in input buffers until their number matches in all inputs.
The output rate is the same as the lowest input rate.

·        OUTPUT RATE BY FIRST INPUT – output rate is the same as the rate of the first input. Any excessive data in other channels is dropped, if they receive less data then the first channel, then the last received value (for each channel) is repeatedly sent to output.

·        OUTPUT RATE BY HIGHEST – output rate is the same as the rate of the input which receives the highest number of samples in a loop. In all other channels, the last received value is send again to match this rate.

·        OUTPUT RATE BY LOWEST – output rate is the same as the rate of the input which receives the lowest number of samples in the same loop. Excessive data in all other channels is dropped.

 

Switch

Redirect the input channel to the selected output, e.g. to change channel order. It may be useful when the switching needs to be done during processing or be configurable like with QEEG montage.

 

SystemEventSource

Send TRUE if the selected event type has taken place in the system. With some options it may also send text message to Msg output.

 

Currently available events:

·        PROCESSING_STARTED – this event is sent always one loop after processing has started

·        PROCESSING_STOPPED - this event is sent always just after processing and all elements have been stopped

·        PROCESSING_RESUMED - this event is sent always after processing and all elements have been resumed

·        PROCESSING_PAUSED - this event is sent always after processing and all elements have been paused

·        PROCESSING_STOPPING - this event is sent one loop before processing is about to stop. Note: this event is sent only when stop is initiated from SystemInteractor or main Stop button.

·        PROCESSING_PAUSING - this event is sent just before processing is about to pause. Note: this event is sent only when pause is initiated from SystemInteractor or main Pause button.

·        PROCESSING_STARTING - this event is sent always after all elements have been started, but just before element processing started

·        DESIGN_REINITIALIZED - this event is sent always after all elements have been reinitialized

·        ALL_ACTIVE – sends text error message with error description if any element is deactivated

·        BUFFER_OVERFLOW – sends text error message with error description if any input pipe’s buffer has been overloaded

·        RUNTIME_RESIZED – this event is sent when runtime window is resized. It can be used to reinitialize charts which are recreated during each resize.

 

SystemInteractor

The element can be triggered to execute standard system action.

Fields:

·        System action – select system action

·        Input trigger – select what triggers this element

·        Immediate – whether to allow this element working before processing is started.

 

TextDisplay

The element displays textual value of the input object.

 

Fields:

·        Align to left – text can be shown on the left or right side of the chart

TextFileReader

This element reads entire text file and send it to output as a text object.

 

It re-reads the data (and sends to output) on each start, and then on each trigger event.

TextFileWriter

This element writes input text object to a text file.

TextToLogical

This element can perform various validations of the input text. Element sends TRUE if validation is passed; and FALSE otherwise.

 

Functions:

·        EMPTY – text is empty

·        EMPTY_OR_WHITE_CHARACTERS_ONLY – text is either empty or contain white spaces (space and non printable characters)

·        CONTAINS_AT_LEAST_ONE_CHARACTER – characters are defined in the parameter, if the text contains one of them, then the validation is passed

·        CONTAINS_ALL_CHARACTERS – all characters must exist in the text

·        CONTAINS_TEXT – input text must contain the parameter text

·        MATCH_REGEXP – input text must match regular expression

TextToScalar

This element converts Text object to a scalar number. If the text is not a number then no value is sent to output (and warning printed on console).

 

Fields:

·        Destination – destination type

o   INTEGER – integer value

o   DIGI FLOAT – scaled float value

 

TextTransform

This element performs various operations on input text.


Separator:

·        TEXT + Var – concatenates variable at the end of the text

·        Var + TEXT – concatenates variable to the beginning of the text

·        MATCH – input text is sent unchanged to output ONLY if it contains variable

·        REPLACE – variable must be formatted as FROM=TO, where FROM is the text to replace, and TO is destination text. For example “dog=cat” variable, will replace all occurrences of “dog” with “cat”, and “dog=” variable will remove all occurrences of dog in each input text.

·        MATCH_REGEXP – input text is send to output ONLY if it contains variable defined as regular expression.

·        REPLACE REGEXP – just like REPLACE, but the FROM field is defined as regular expression.

·        INSERT - variable must be defined as DEST=TOKEN, DEST defines where input text is to be inserted. The DEST text must contain TOKEN text inside, which will be replaced by the text value coming to input pipe.
For example for variable dog%=%, the input text will replace ‘%’ character. For variable dogANDcat=AND, input text will replace AND word between dog and cat, so if the input text is ‘monkey’, then output text will be ‘dogmonkeycat’.

TextSet

This element contains set of text labels that can be selected by input index value.

 

TextValue

This object can hold and release a single text value. The last value is remembered and saved with the design.

 

Threshold

This element divides samples that are above or below certain value.

Functions:

·        = – equal to threshold

·        <> – different then threshold

·        > – greater then threshold

·        < – less then threshold

·        >= – greater or equal to threshold

·        <= – less or equal to threshold

 

Outputs:

·        Pass – values that pass on the threshold are send here

·        Fail – values that fail on the threshold are send here

·        On/Off – logical state. It is TRUE if the last input value passed over threshold, otherwise it is FALSE.


Inputs:

·        In – input stream

·        Thr – the threshold value can be set dynamically here

 

TimeInterval

This element can be used to control actions precisely in time. When input is triggered, then the element is changed to ON state, and the output is set to TRUE. After timeout elapses, element is changed back to OFF state and the output is set to FALSE.

 

If the input is triggered again while being in ON state, then the TRUE value is sent again to output, but the time is reset and calculated again from this moment.

Timer

This element generates selected number of pulses in a time period.

Fields:

·        Time period [s] – time period in seconds

·        Pulse count – how many pulses are generated during the above Time period

 

Output TIME shows number of pulses since the processing started. Output Tick generates logical TRUE then FALSE for each pulse.

TimeRangeFilter

This object can control data flow in time. It passes data only within the defined time range. The actual number of samples is calculated on base on sample rate, so the preceding element must provide valid rate of the signal. This feature can be useful when analyzing small pieces of an archived signal.

Fields:

·        Start time [s] – if greater then 0, then this elements starts reading from this time point, otherwise this option is ignored. If this option is set, then it will be automatically reflected in all Oscilloscope and other charts.

·       End time [s] – if greater then 0, then this element stops reading at this time point, otherwise this option is ignored. If this option is set, then it will be automatically reflected in all Oscilloscope and other charts.

TimeSource

This object provides various times scaled in seconds or milliseconds. Time scaled in seconds can be displayed directly with NumericDisplay.

Fields:

·        FROM_START – time measured since the start of BioEra

·        FROM_RESUME – time measured since the last resume of BioEra

·        SESSION_TIME – total session time since start, the session time doesn’t include pauses

·        FROM_LAST – time from the last loop, only milliseconds option makes sense here

ToggleButton

This is an interactive feature for the user.

 

It works very similar to Button, but it keeps current pressed/released state after each single click.

 

Fields:

·        ON/OFF Label – text labels displayed on the button when button is pressed/released

·        Initial state – can be enabled or disabled, button can be enabled/disabled using its logical input

·        Initial output state – defines what logical value send to output when the design is started

·        Current state – this field only shows current state, but can’t be used to set it.

·        Initially – defines the state of the button after start

 

Advanced options:

·        Top shade color – used when mouse hovers over the button

·        Bottom shade color - used when mouse hovers over the button

·        OFF mouse hover image – this image is displayed when mouse hovers over the button (changes back to background image when mouse moves out of the button area) and the button is in released state

·        OFF disabled button image – image displayed when button is disabled and released

·        ON button image – image displayed when button is pressed

·        ON mouse hover image – this image is displayed when mouse hovers over the button (changes back to background image when mouse moves out of the button area) and the button is in pressed state

·        ON disabled button image – image displayed when button is disabled and pressed

·        Send option – defines whether to send output (logical) value when button is pressed/released using its OnOff input pipe (and not the mouse click).

 

Toolbar

This is more advanced option for toolbar customization. Toolbar contains elements like ComboToolbarControl, IconToolbarControl etc. If Toolbar element doesn’t exist, then be default toolbar is created at the top of the Runtime window. If Toolbar exists, its output must be connected to all (toolbar) elements which it should contain. That way it is possible to have several toolbars.

Fields:

·        TOP, BOTTOM, LEFT, RIGHT – toolbar is permanently attached on the Runtime window in this location.

·        HORIZONTAL LAYOUT CHART – toolbar can be put as a chart anywhere on the Runtime window, its components are in horizontal direction

·        VERTICAL LAYOUT CHART – toolbar can be put as a chart anywhere on the Runtime  window, its components are in vertical direction

Topograph

The element to show graphically spatial correlation between points located on flat 2-dimensional surface. It can be useful to display topography maps.

Fields:

·        Active size – higher value improves resolution, but degrades responsiveness.

·        Refresh frequency – define how often the map should be updated. If this value is too high and chart size too large it could affect processor usage and overall performance.

·        Colors – colors are defined manually and used to paint the map.

·        Color gradient – colors are taken from a file. This field is effective only if the above ‘Colors’ property is not set (is empty).

·        Point coordinates – each point’s position is defined by 2 coordinates x and y. Each coordinate is scaled in percents, from 0 (left, top) to 100 (right, bottom), related to the size of the chart.

·        Influence – higher value increases influence between points, which means that their change in amplitude affects all other colors. Influence is calculated based on distance from other points.

·        Mark points – if selected, then a small black rectangle is drawn in each point.

 

Advanced properties:

·        Active area image path – this image can be used to customize the active area, where topography map is being drawn. Black color in this image defines active part and other color (white) is not active. For the best quality, this image’s size should be same as Active size property set above. The area defined here is only for the center part on the chart, doesn’t include margins (defined on Chart Properties or default).

USB_FTDI

This element can replace SerialPort for devices which:

·        Connect via USB using FTDI chip

·        Read data from a serial port

 

Its advantage is that there is no need to enter serial port number (which can be different after installation) and instead the device name is used which is the same on all computers. There is also no need to configure serial port.

Valve

This element can be used to control the flow of a scalar stream. If the logical Tap input is set to TRUE, then all input samples are being sent to output (valve is open). Otherwise incoming samples are discarded (valve is closed). If Tap input is not connected, then all input samples are being sent to output (valve is open).

Status:

·        C – valve is closed

·          – valve is open

 

Vector2Transform

Performs various transformations, where two input vectors are transformed into two output vectors.

Fields:

·        SYNCHRONIZE – passes vectors to output only when they are available on both inputs.

 

Vector3DDisplay

This element presents graphics on 3D chart. Vector fields are or X axis, time is on Y axis and amplitude is on Z axis.

Fields:

·        Depth (points) – defines how many vectors are shown on screen.

·        Rotate (x,y,z) [0-360] – the chart can be rotated to better fit on screen.

·        Shift position (x,y,z) – the chart can be shifted in each direction.

·        Scale (x,y,z,A) – each direction or all of them can be scaled.

·        Range [uV] – amplitude range

·        Redraw mode – defines how the chart is being rendered. If set, then chart works like oscilloscope, new values are drawn until the end of the chart and then start from the beginning. If not set, then current values are shifted back, and the most recent are drawn in front.

·        Colors – colors are used to show the amplitude better. If not set here, then they will be created automatically. See color format.

·        Invert – if set then the lowest index of vector is shown on the end.

 

VectorBuffer

This element has internal buffer where input vector values are stored and released by trigger. It works exactly the same as ScalarBuffer, but for vectors.

VectorCrossTransform

Transformation is being performed on two vector streams. Output rate is the same as input rate. This is similar like in VectorMixer, but the transforming function is more specialized.

Fields:

·        Size – number of input samples.

 

Functions:

·        CORRELATION – standard cross-correlation calculation is calculated for each field of input vectors. The output is scaled to min, max ranges.

 

VectorConcatenator

This element concatenates two input vectors into one vector. Input A is usually a stream input, and input B can be used for either stream or as a constant.

Functions:

·        B_CONSTANT – The last value that arrived to input B is used for concatenation. At least one value must arrive before any action can be taken.

 

VectorDisplay

Show instant vector value on a graphic chart.

Fields:

·        Range [uV] – amplitude range

·        Show bars – select to show bars or a line.

·        Scopes – defines index ranges, so that different vector fields can be displayed with different colors defined in Colors field (below).

·        Colors – define color for each scope. See color format.

·        Orientation – the vector can be displayed horizontally, or vertically on the left or right.

VectorExpressionEvaluator

This element works the same as ExpressionEvalutor, but with vectors. For more information how to construct expression see the ExpressionEvaluator element description.

 

The output vector size is the same as the lowest input vector size.

 

The expression is one (the same) for all fields of the vector. It is performed on the fields of the same index. Suppose we have expression “In1 + In2 + In3”, and three input vectors VA[1,2], VB[2,3] and VC [4,5], the output vector will be [7, 10], because 1+2+4=7 and 2+3+5=10.

 

VectorInstantTransform

This object provides various transformations on single vector. The output rate is always the same as input rate, functions are preformed on one vector only (as oppose to VectorTransform).

Field:

·        Left – defines window length on the left (lower) side of the sample (value) according to chosen function.

·        Right - defines window width on the right (higher) side of the sample (value) according to chosen function.

Function:

·        AVERAGE - each vector field is averaged over its neighbors.

·        MAX - each vector field is set to max value over its neighbors.

·        MIN - each vector field is set to min value over its neighbors.

·        RMS – each vector field is set to Root Mean Squares of all its neighbour fields: sqrt(sum(Sn^2) / N).

·        ABS – each vector field is set to its absolute value. Left and right values are not used here.

·        HAMMING_WINDOW – input vector is converted by the hamming window. Left and Right parameters are not used.

VectorLineDisplay

 

This element is not available any more.

 

Prints on chart all fields of the vector as separate lines, each has different color.

·        Time range [s] – show time range

·        Amplitude range [uV] – show amplitude range

·        Colors – define colors for each field of the vector. If not provided, then default colors are provided. See color format.

·        Descriptions – description of each field in agenda can be defined here. It will be used only if Agenda field is set to DEFINED NAMES.

·        Reflect time range – if marked then the time range is set automatically to values provided by any other (predecessor) element that defined them.

·        Agenda – defines what description should be in agenda:

§  PREDESSOR – description is defined in predecessor element,

§  DEFINED NAMES – description is defined in field: Descriptions

§  PHYSICAL VALUES – physical value is calculated for each field and shown,

§  INDEXES – indexes of the vector are shown.

VectorMixer

This object works like Mixer but with vectors.

VectorProperty

This element contains single vector. Incoming vector replaces the value. The most important function of this element is to provide constant vector which is used for initialization during start (the value is sent once for each start).

 

The output vector size depends on whether the input is connected. If input is connected, then the output vector size is inherited from the connected input element. If the input is not connected, then the output vector size is the same as set in the property vector.

VectorStorageSource

 

Note: this element is not supported at the moment.

 

Reads data from file stored earlier with VectorStorageWriter object. All options are like in FileStorageSource element.

VectorStorageWriter

 

Note: this element is not supported at the moment.

 

This element saves vector stream data in file in BioEra proprietary format. All options available in FileStorageWriter are here.

 

Additional options:

·        Save descriptions – description of each vector field is saved.

VectorSTransform

This object can apply single scalar value to the vector according to selected function.

 

Functions:

·        SET SCALAR AT INDEX – replaces vector field at index (provided in index input) with scalar value.

·        INCREMENT SCALAR AT INDEX – adds 1 to the vector field at index provided in index input.

VectorTimeTransform

This object contains various transformations on vector. The output rate is always the same as input rate, however functions are performed on many samples defined in Samples number field (as oppose to VectorSingleTransform, where transformed is only one vector).

Fields:

·        Samples number – defines number of samples upon to perform the transform.

 

Functions:

·        AVERAGE – each vector field is averaged over a period of time. Processing is hold until number of samples is available.

·        MAX - each vector field is set to max value over a period of time. Processing is hold until number of samples is available.

·        MIN - each vector field is set to min value over a period of time. Processing is hold until number of samples is available.

VectorToComplex

This object converts each vector to complex vector according to chosen function.

VectorToScalar

This object converts each vector to scalar value according to chosen function. Output rate is the same as input rate.

Function:

·        AVERAGE – calculated average of all vector values over physical vector range (not digital).

·        MAX – takes the maximum from all vector values.

·        MIN – takes the minimum from all vector values.

·        MIDDLE_POWER – calculates index of the vector, so that sum of the values below the index is closest to the sum of values above the index.

·        MIDDLE_POWER_2 – calculates index of the vector, so that sum of the square values below the index is closest to the sum of the square values above the index.

·        SUM – sum of all vector fields: sum(Sn)

·        RMS – Root Mean Squares of all vector fields: sqrt(sum(Sn^2) / N) over physical vector range (not digital).

·        RS – Root of Squares: sqrt(sum(Sn^2))

·        DOMINANT_INDEX – index of the maximum value in the vector

·        DIGITAL_AVERAGE – the average is taken over the number of fields in vector, not over the physical values like in AVERAGE function.

·        DIGITAL_RMS - the calculation is taken over the number of fields in vector, not over the physical values like in RMS function.

·        STREAM – all fields of the vector are written to the output. The output rate in that case is input_rate * vector_size.

VectorValue

This element contains a vector that can be used as a variable (similar to ScalarValue).

 

Fields:

·        Implicit vector size – if greater then 0 then it determines the vector size. If this value is greater then property vector’s size, then all remaining fields are filled with value set in Fill value fields, if this value is smaller, then property vector is truncated.

·        Fill value – this is used to fill vector’s fields that are not set in property (when the Implicit vector size is set).

·        Vector value – manually set vector’s fields

·        Min value – minimum value for each field in vector, used with dynamic modifications

·        Max value – maximum value for each field in vector, used with dynamic modifications

 

Functions:

·        SUM MODULO – input vector is added to the current vector modulo (within range specified by Min value and Max value.

·        SUM – input vector is added to the current vector. Each vector field value remains within the min/max range.

·        SET VALUE – input vector replaces current vector. Each vector field value remains within the min/max range.

 

VideoCameraImageSource

This element provides a source of frames being created by a camera (any camera or image device available in system) as Image objects.

VideoCameraRecorder

This element can record video from video sources available in system like web cameras. The video recording can be done simultaneously with bio-signals or other recordings. All available video/audio devices and all possible formats are listed in the properties. If for some reason a device is not listed there, then it can’t be accessed from this element.

Fields:

·        Path – path to the destination file.

·        Video device – choose between video devices.

·        Video format

·        Audio device – choose between audio devices.

·        Audio format

·        Implementation – at this moment only JMF is available.

·        Output format – format of the video file: AVI or MOV.

VideoFileImageSource

This element provides a source of frames from a video file in format of Image pictures.

VideoFileImageWriter

This element provides a way to save a source of Image objects as a video file.

VideoFilePlayer

This element can play a video file at a controlled rate, direction (forward or backward) time position and sound volume. It is available only on Windows (in BioEra Pro) version.

 

Fields:

·        Video file – path to the media file.

·        Reflect time range if set, then video can be automatically started at specified time.

·        Play in loop if set, then at the end video will revert to beginning and start play again automatically.

·        Reverse step – this option may be required on slower computers. If step 1 is too slow, then change it to 2, 3 or 4.

 

Inputs:

·        ON/OFF – play/pause

·        Vol [0-100] sets volume

·        Brightness [0-100] sets brightness

·        Contrast [0-100] sets contrast

·        Rate – sets the rate of the video playback, rate can be positive or negative. Input range is scaled in percents, for example input 100 will play the video at nominal rate, and input value -200 will play reverse twice as fast as nominal rate.

 

Outputs:

·        Time – current time in the movie is sent here in seconds

·        Total time – total time of the movie, in seconds

 

VideoScreenImageSource

This element provides a stream of images taken from screen at specified rectangle.

VLCPlayer

This object can control the VLC video/DVD player.

 

Note: this object is not supported at this moment. Use VideoFilePlayer or DVDPlayer elements.


WaveRider

This is a driver for WaveRider 2cx (2 channels) and WaveRider Pro (4 channels) devices (www.mindpeak.com).


Settings:

·        Device – select between WaveRider 2cx and WaveRider Pro

·        EEG Range – each channel has configurable range (sensitivity)

WindowInteractor

This element can set some properties of a Window (Frame or Dialog) of a chart which was put in a separate Frame or Dialog (option in chart properties).

 

WiTilt

This is a driver for WiTilt accelerometer device http://www.sparkfun.com/commerce/product_info.php?products_id=8563.

 

The RAW mode is used (see WiTilt documentation), and raw values are sent to outputs.

 

Note 1: You have to configure the WiTilt device manually before BioEra start. BioEra only automatically sets the RAW mode on during start (sends 52), but all other options (thresholds, selected channels etc) must be set manually (you can use Windows Hyper Terminal for that).

 

Note 2: For some reason the WiTilt v3 doesn’t work with default Windows Bluetooth software. The ‘default’ password is not accepted even though WiTilt doesn’t have any password. I had to install Bluetooth stack from www.bluesoleil.com to be able to connect on PC (Windows XP SP2).


WMDVDPlayer

This element is almost identical as DVDPlayer, but it uses Windows Media Player to play DVD.

 

Comparing to the DVDPlayer this element doesn’t provide brightness/contrast control and DVD decoder selection.

 

To list and select which DVD decoder should be used, use this tool:

 

http://www.microsoft.com/downloads/details.aspx?familyid=DE1491AC-0AB6-4990-943D-627E6ADE9FCB&displaylang=en


WMVideoFilePlayer

This element works almost exactly the same as VideoFilePlayer, but it has been built on top of the Windows Media Player. This is to provide support for all Windows Media files –files that run on Windows Media Player will run here.

 

In compare to VideoFilePlayer this element has fewer options: no brightness/contrast control and the reverse playback not available (unless the currently installed Windows Media Player supports it).


WavFileWriter

It saves data stream to WAV file.

XDFFileReader

This element can read from a multi-channel file stored in XDF (Extended Data Format) file.

For details about properties, look at EDFFileReader.

 

This element is almost identical to EDFFileReader, but it uses 32 bit number to store data (EDF is 16 bit). This means higher range is available, but the file is not compatible with EDF.

 

The XDF file format is open and available to everyone free of charge.

 

XDFFileWriter

This element saves data in multi-channel XDF (Extended Data Format) file.

 

For details about properties, look at EDFFileWriter.

 

This element is almost identical to EDFFileWriter, but it uses 32 bit number to store data (EDF is 16 bit). This means higher range is available, but the file is not compatible with EDF.

 

The XDF file format is open and available to everyone free of charge.

XDFSlider

This element can be used for data browsing and navigation. It can be connected to either XDFFileReader or EDFFileReader. The slider can be used to either move to another time point, or to show current time point.

Fields:

·        Fast forward – when the current position is changed to another time point (using the slider knob), BioEra quickly processes this amount of data starting from the selected time point.

·        Go to Time Point – the time point can be selected precisely on the text field. Can be useful when the input file is large or to easily go back to the same time point again.

·        Orientation – slider can be horizontal or vertical

·        Remember last position – the last time point is restored after the next start.

XmlFileReader

This element can be used to read data from an XML file. The file must contain top section “Configuration”. The selected value is sent to output when the input is triggered.

 

Fields:

·        File path – path to the XML file

·        Tag path – contains path to the selected Tag.

 

XmlFileWriter

This element can be used to store text data in an XML file. The previous content of this file is unaltered (unless it is invalid and can't be parsed), only the value under Tag path is set/changed. If the tag or file doesn't exist, then it is created. It is safe to use this element many times writing to the same file (but different tag). The top section is always "Configuration", it can't be changed.

 

Fields:

·        File path – path to the XML file

·        Tag path – contains path to the selected Tag.

 

XmlNetController

This element can be used to control BioEra from external world (another application, manual remote controller etc).

 

Fields:

·        Port – network port

 

External application (like Telnet) can connect to the specified port and perform commands for example Start or Stop BioEra. The list of all commands is available in SystemInteractor element (you need to open the element in designer; the list is not documented in this manual). Commands are case sensitive.

 

Commands can be sent as plain text or as XML tag. The XML format is preferred for applications (programs). The plain format is good for manual interaction but may change in future without notice.

 

Plain command is sent as a text ended with <Enter>, for example Start <Enter>. After the command is successfully processed “OK” response is sent back, otherwise “Error” with message description.

 

XML format is also simple e.g. <command type=”Start”/> or <command type=”Pause”/>. Response is also sent in Xml format as: <OK/> or <Error/>.

 

Some commands require parameter(s), in such case additional parameter(s) follow the command e.g. <command type=”Load design” path=”c:\bioera\design\adesign.bpd”/>

 

Note! Parameters must be provided in the order as in Example.

 

Besides commands listed in SystemInteractor element, additional commands are available:

·        Load design – file path to BioEra design
Example: <command type=”Load design” path=”c:\bioera\design\adesign.bpd”/>
Return: <OK/>

·        Set Property – set property of an element
Example: <command type="Set Property" element_name="Osc" property_name="Time range [s]" property_value="20"/>
Return: <OK/>

·        Get Property – get property of an element
Example: <command type="Get Property" element_name="Osc" property_name="Time range [s]"/>
Return: <OK value="20.0"/>


Even though some properties are changed there may be no effect until the design is reinitialized. Therefore it is recommended to run “Reinit All” command (available in SystemInteractor) after all changes have been made.

XmlNetServer

This element can be used to send dynamically data from BioEra to an external application via TCP network. Data is sent in a simple Xml format. TCP socket is universal and can be accessed in most languages (C++, Java, VB, C# and others) and systems (Windows, Linux, Mac, PDA).

 

Fields:

·        Port – network port

 

There are two types of tags sent from BioEra: Status or Data

 

Status tag is sent upon a change in BioEra (Start, Stop, change in design etc). Status tag contains information about number of channels and current state, after that each channel’s name is provided:

 

E.g.: <BioEraStatus Channels="2" Status="stopped" Name1="High" Name2="Low" />

 

Data is sent as often as the sampling rate of the connected element. Data tag contains values of all channels. Each value is in range 0..1 or -1..1. Logical TRUE is sent as 1, and logical FALSE is sent as 0.

 

E.g.: <BioEraData Ch1="9.765923E-4" Ch2="0.0056764428" />

 

Support

Reports with bugs or requests for new features can be posted on forum. Please note, this manual is in many ways incomplete, options are being added to BioEra on a daily bases. If something is not clear or not explained ask questions on forum.

Diagnostic

If something is obviously wrong, try to exit BioEra and then start it again with console. See if there is any additional information printed on the console which can explain the problem. Or post a question on forum.

 

If you wish to report a bug or a problem, please do the following:

  1. Create diagnostic file. If you select on the designer’s menu: Tools->Create diagnostic file), it will build diagnostic.zip file in the main BioEra folder,
  2. Attach the diagnostic.zip file with the error description.

Feedback and comments are welcome

Any feedbacks or comments are very welcome. Especially appreciated is any information about bugs or obvious problems or suggestions about improvements.

New versions

Designs are automatically migrated to new bioera versions. If something can’t be automatically migrated, then there is note about it in the change log. If you upgrade regularly there should be no major problems.

 

Related links

 

Projects and designs:

Copyright notice

 

Copyright © PROATECH LLC (http://www.proatech.com). All rights reserved.