BioEra Manual

 

Introduction. 8

Installation. 9

Biofeedback device. 9

Requirements 9

Supported devices 9

User interface. 10

Designer 10

Tools menu. 11

Context menu options 11

Shortcuts 11

Runtime. 12

Examples and learning. 12

Architecture. 13

Element properties 13

Advanced element properties 13

Chart properties 13

General Tab. 13

Colors Tab. 14

Pen properties 14

Rendering hints 14

System settings 14

Design settings 16

Colors 18

Nested designs 18

Advanced architecture details 18

Time measure. 18

Environmental variables 19

DVD. 20

3D graphics 20

Elements 20

AbsRateLimitter 20

ActivityDetector 21

Alpha200. 21

Alpha400. 21

AngelSensor 21

ApplicationInteractor 22

ApplicationPlayer 22

BarDisplay. 23

BarDisplay2. 24

BerryMedBM1000. 24

BITalino. 24

BleDevice. 25

BrainMaster 25

BrainMasterAtlantis 25

BTGP38. 25

Button. 26

CameraImageSource. 26

Capnometer 27

ChartLayoutManager 28

ChartLine. 28

ChartBackgroundOverlay. 28

ChartTextOverlay. 28

ChartTransparency. 29

CMixer 29

Coherence. 29

ColorChartSensor 30

ColorSet 30

ColorVectorSet 30

ComboToolbarControl 30

ComponentInteractor 31

ContectCMS50EW. 31

Counter 31

Counter2. 31

Counter3. 32

Counter4. 32

CustomElement 32

CustomInteractor 33

DataToText 33

DebuggerElement 33

Decimator 34

Delay. 34

Delay2. 34

Demultiplexer 34

DesignArguments 34

DesignInteractor 35

DeviceSet 35

DialogComboList 35

DialogFile. 36

DialogText 36

DVDPlayer 36

EDFFileReader 37

EDFFileWriter 38

EEGNeuroAmp. 39

ElementArray. 39

ElementArrayInputs 39

ElementArrayOutputs 40

ElementInfo. 40

ElementInteractor 40

Evaluator 40

ExcelFileReader 41

ExcelFileWriter 42

ExpressionEvaluator 42

FFTTransform. 43

FFT2Transform. 44

Filter 44

FlashPlayer 44

FloatToScalar 45

FTDISerialPort 45

GainInteractor 45

Auto mode. 46

Ganglion. 46

Generator 47

GlobalConnector 47

GroupPropertySet 48

HEGduino. 48

HotSpotMouseSensor 48

HttpWriter 49

HtmlPlayer 49

IconToolbarControl 50

ImageDisplay. 50

ImageDisplay2. 50

ImageMarker 50

ImageMixer 51

ImageSource. 51

ImageSequencer 51

ImageToMatrix. 51

ImageTransform. 51

ImageWriter 51

InputCheckbox. 52

InputComboList 52

InputList 52

InputText 52

InteractiveScalarSource. 52

Iterator 52

JandJ 52

JCPirHEG. 53

KeyboardAdvSource. 53

KeyboardSource. 53

KeyInteractor 53

KeyAdvSelector 53

KeySelector 54

KT88-1016. 54

Lamp. 54

Lightstone. 54

LogicalMixer 54

LogicalMixerM. 55

LSLAcquisition. 55

MatrixRowDisplay. 55

MatrixToImage. 55

MatrixTransform. 56

MenuItemControl 56

MenuListControl 56

MiBand2. 57

MF_eSense. 57

MF_Temperature. 57

MIDI 58

MidiScale. 58

MindMaster 58

MitsarQEEG. 59

Mixer 59

MixerM. 59

ModEEG_P2. 60

ModEEG_P3. 60

MorphInteractor 60

MouseAdvPosition. 60

MouseChartSensor 60

MouseInteractor 61

Multiplexer 61

Muse. 61

NestedDesign. 62

NestedInputs 63

NestedOutputs 63

NestedProperties 63

NetworkClient 64

NetworkServer 65

Neurobit 65

NeurofieldQ20. 65

Neurosky. 65

Nia. 66

Nonin4100. 66

Notice. 66

NoticeYesNo. 66

NumericDisplay. 66

ObjectCompare. 67

ObjectCounter 67

ObjectDebugger 67

OpenBCI 67

OpenSoundReceiver 67

Oscilloscope. 68

Displayable range. 69

OscilloscopeXY. 69

OscilloscopeXY2. 69

OscilloscopeXYZ. 69

OSInfo. 69

OSInteractor 70

PCMAudioPlayer 70

PCMAudioSource. 71

PCMEnvelope. 71

PCMMixer 71

PET. 71

PN_Pendant_EEG. 72

PN_Pocket_A3. 72

Pendant mode. 73

PN_Pulse1. 73

PN_Wiz 73

PolarH7. 73

Polygraph. 74

Displayable range. 75

PostProcessor 75

PreProcessor 75

ProgressBarDisplay. 76

Property. 76

PropertyBuilder 76

PropertyGetter 76

PropertySetter 76

PulseInterpolator 78

Pulser 78

Random. 78

RangeMapper 79

RateLimiter 79

RateLimiter2. 79

RateNormalizer 80

RawFileReader 80

RawFileWriter 80

ReinitBuffer 80

ReportGraph. 80

ReportTable. 81

Resampler 81

Rhythm24. 82

RouteGame. 82

RRDetector 82

RuntimePanel 83

QDS 83

QPET. 83

ScalarBuffer 84

ScalarCrossTimeRatio. 85

ScalarCrossTransform. 85

ScalarInstantTransform. 85

ScalarSet 86

ScalarShifter 86

ScalarSingleMap. 86

ScalarTimeRatio. 86

ScalarTimeTransform. 87

ScalarTimeTransform2. 87

ScalarToLogical 88

ScalarToFloat 88

ScalarToText 88

ScalarsToVector 88

Scheduler 89

Selector 89

ScalarValue. 89

Sequencer 90

SerialDevice. 90

SerialPort 90

SetInfo. 91

SetIterator 91

Settings 92

SimulationSource. 92

Slider 92

SoundFileReader 92

SourceSelector 93

Status 93

StatusML. 93

SQLReader 93

SQLWriter 94

Database Installation. 94

SimulationSource. 95

State. 95

SteppedSoundFileReader 95

SteppedSoundPlayer 96

StreamToVector 97

StreamToVector2. 97

SubVector 97

SubVector2. 98

Synchronizer 98

Switch. 98

SystemEventSource. 99

SystemInteractor 99

TextDisplay. 99

TextFileReader 99

TextFileWriter 100

TextMapper 100

TextStreamToScalars 100

TextToLogical 100

TextToScalar 101

TextTransform. 101

TextSet 101

TextValue. 101

TextVectorSet 102

Threshold. 102

Throughput 102

TimeInterval 102

TimeIntervalResampler 102

TimeIntervalResampler2. 103

Timer 103

TimeSource. 103

ToggleButton. 103

Toolbar 104

Topograph. 104

Valve. 105

Vector2DDisplay. 105

Vector2Transform. 105

Vector3DDisplay. 105

VectorBuffer 106

VectorCrossTransform. 106

VectorConcatenator 106

VectorDisplay. 106

VectorExpressionEvaluator 107

VectorInstantTransform. 107

VectorMixer 107

VectorMultiDisplay. 107

VectorProperty. 107

VectorSTransform. 108

VectorTimeTransform. 108

VectorToComplex. 108

VectorToMatrixRows 108

VectorToScalar 109

VectorValue. 110

VideoFilePlayer 110

VideoScreenImageSource. 111

VilistusDevice. 111

VLCPlayer 112

WaveRider 112

WiiBalanceBoard. 112

WindowInteractor 112

WMDVDPlayer 113

WMVideoFilePlayer 113

WavFileWriter 113

XDFFileReader 114

XDFFileWriter 114

XDF file format 114

XDFSlider 115

XmlFileReader 115

XmlFileWriter 115

XmlNetController 115

XmlNetServer 116

XmlNetServerEvent 117

Support 117

Diagnostic. 117

Feedback and comments are welcome. 117

New versions 117

Related links 117

Copyright notice. 118

 

 

Introduction

 

BioEra is a development software for real time analyzing and real time presentation/feedback. It usually works together with a biofeedback device which has an ability to deliver data to a computer in real time.

 

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

 

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

 

BioEra is a development system. It comes with examples, but they are not finished solutions, they are only for demonstration. The best way to learn is to analyze working designs and then ask questions on forum.

Installation

The installer is easy to use and BioEra is ready to run after it is finished. There can be sometimes two installers: Full and Upgrade. In such case the Full version should be installed first, then the Upgrade version.

 

Biofeedback device

After installation BioEra is configured to process data from a signal Simulator. To receive data from a real device, select from Menu ‘Tools’ and then ‘Select device’ and follow the instructions.

Requirements

Windows XP, Windows Vista, Windows 7, Windows 8 or 8.1, Windows 10 or later.

 

At least 2GB RAM memory on Windows and multi core processor is recommended, although most designs will run fine on most computers.

Supported devices

BioEra directly supports 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

·       Neurobitwireless (classic Bluetooth) 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

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

·       Contec CMS50EW and CMS50FW – wireless (classic Bluetooth) oximeter

·       Vilistus – USB or classic Bluetooth EEG - http://www.vilistus.com/

·       PN_WizEEG, HEG http://www.pocket-neurobics.com

·       Capnometer – CO2, respiration

·       OpenBCI – wireless 8 or 16 channel EEG http://www.openbci.com

·       NeurofieldQ20 – 20 channels QEEG device http://www.neurofield.org

·       Ganglion – Bluetooth LE wireless 4 channel EEG http://www.openbci.com

·       HEGduino – HEG device https://www.hegalpha.com

·       BITalino – EEG, EMG, ECG, EDA with classic Bluetooth device https://bitalino.com/

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

·       Contec CMS-50D+, CMS-P, RPO-P2USB oximeters – can be used with PN_Pulse1 element.

·       MiBand2 – Bluetooth LE fitness tracker bracelet for real time heart rate.

·       BerryMedBM1000 – Bluetooth LE oximeter.

·       PolarH7 - Bluetooth LE heart rate sensor with HRV capability.

·       Rhythm24 - Bluetooth LE heart rate sensor with HRV capability.

·       Muse - Bluetooth LE EEG headband.

·       Nia Neural Impulse Actuator

·       Nonin4100 wireless (classic Bluetooth) oximeter www.nonin.com

·       Neurosky – wireless (classic Bluetooth) EEG www.neurosky.com

·       ModEEG - EEG openeeg.sourceforge.net

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

·       AngelSensor – Bluetooth LE wearable fitness device http://www.angelsensor.com/

·       Roshi - EEG device

 

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

 

Access to more devices is available via LSLAcquisition element and OpenVibe’s acquisition server. OpenVibe’s list of devices is listed here.

User interface

In the default mode there are two main 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 with mouse and keyboard.

 

Some operations:

·       To add new element press right mouse button and selectnew” from the popup menu. Then select any element from the list.

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

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

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

·       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.

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

·       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.

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

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

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

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

 

Tools menu

·       Release current design option creates release.zip file in the main BioEra folder. This file contains current design along with nested designs and resources it uses, so that is easy to move them all in one file to another computer with BioEra. To use this as an installer it can be renamed and copied into main BioEra folder on the target computer. When BioEra starts, it automatically searches for all files in its main folder which contain word install and have extension .zip (for example MyCompany-install.zip or install_MyCompany.zip) and automatically extracts them.

 

Context menu options

There are several context menu options available when right mouse button is clicked. The list of a context menu varies, it depends on current context. Here is a list of some options:

 

·       New – open a dialog with a list of elements which can be added to the designer.

·       Copy – copy selected element(s) to clipboard

·       Paste paste element(s) which were earlier copied to clipboard.

·       Delete delete selected item (element or connection)

·       Move this option can be moved a selected element to the current mouse position.

·       Switch connections this option is available if there are 2 elements highlighted. It switches all connections between those 2 highlighted elements.

·       Morph into this option allows to change a highlighted element into another element (of different type)

·       Description show a dialog with a short description about highlighted element

·       Properties open property editor dialog

·       Advanced properties - open advanced property editor dialog. Those changes may have unexpected effects, so they should be done with extra caution.

·       Add bend point available for connections. A bend point is a small rectangle which can be dragged with mouse.

·       Signal properties show a dialog with signal properties

·       Reinit reinitialized the highlighted element

·       Error description if an element has an error, which is indicated with a small red cross icon on the left bottom of the element, then this menu option will open a dialog with the error text message.

·       Load nested design close current design and open the nested design

·       Open nested design show the nested design content in a separate window. That can be used to edit properties of the nested design elements, but not to edit connections.

Shortcuts

·       Ctrl-C copy highlighted element(s) to the internal clipboard

·       Ctrl-V paste copied element(s) from the internal clipboard

·       Ctrl-A highlight all items

·       Ctrl-R – reload current design

·       Ctrl-L – load a new design

·       Ctrl-N – show a dialog to add a new element

·       Ctrl-F – search element by name or class or id

·       Del delete highlighted items

·       Space show properties dialog of the highlighted item

·       C show chart properties dialog of the highlighted element

·       A - show advanced properties dialog of the highlighted element

·       E - show error message for the highlighted element

·       Highlight element_1 then press Shift and click on element_2 – the first output pipe on element 1 will be connected to the first unconnected and compatible input pipe on element 2. If there is no such one, then the first compatible input is connected to (if any).

·       Highlight a connection then press Shift and click on element – the previous destination of the connection moved to the element (assuming it has a compatible input).

 

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 and learning

The best way to start learning how to create BioEra designs is to analyze examples.

 

A few examples are included with BioEra to let quick start of 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 filter. They demonstrate various types of feedback including:

·       3D Racer game

·       Video playback

·       Continuous tone

·       Binaural Beats

·       Midi

·       Simple PacMan game

·       Session report

 

More advanced, and a very good set of design examples and information about BioEra can be downloaded here: BioEra designs.

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.

It is implemented using the java’s BasicStroke. More details can be found here.

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.

Settings tab:

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

·       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.

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

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

·       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.

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

·       Input buffer length – this option affects the memory usage. Each input buffer length of any element is calculated automatically based 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. 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 any property change this option takes effect when a property of an element has been changed in Designer. If 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 a hundred) and it takes long time to reinitialize them all.

·       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. For example it can be automatically minimized.

·       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.

·       Compress design file if set, then the design file size will be smaller but at a cost of additional time to do this.

 

 

Chart colors:

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

 

Report colors:

·       Contain default report colors. They can be altered in each individual element.

 

Color profile:

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

 

Runtime:

·       Runtime initial position – define where and how to position runtime windows 1 and 2.

·       Runtime defined location corrdinates used when Defined Location is selected above.

·       Show chat chart internal border – some charts have internal borders. They can be all disabled here.

·       Show slider central border – show or hide the central border in the Slider element chart.

·       Use charts below for transparency transparency in BioEra is not true, it is simulated (for performance reasons). If set, then background image is retrieved from other charts (which are located below), otherwise it is retrieved from the Runtime window.

·       Show warning when a device|source start failed – we usually want to be notified when the driver element which delivers data from the device fails to do so. But it can be disabled here.

·       Print buffer overflow warning on the console advanced option to allow disabling excessive warnings on the console.

·       Minimal chart size this should never be set less than 10.

·       Ordering mode – this is an advanced option which should not normally be changed.

·       Design load optimization - the Default mode is preferred and should not normally be changed unless designs load slowly. In such case the Faster load but slower save can help. When selected it will save only those element properties which are different than default values, so this can improve load time by as much as 30 to 80%. This option may have an unwelcome consequence: when a default property value is changed during development (this is rare, but happens), it will be automatically used and can alter current behavior (in the Default mode such change will have no effect).

 

Designer:

·       Various options about how the Designer behaves and looks.

 

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 a 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 done). 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 a 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 (than 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 than 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. 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, that element 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 the two separate runtime frames. This allows for example to show them on two monitors. This option is also useful on Android (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 a typical Windows option. When selected, then Runtime window will not be covered by other windows.

·       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 a 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’s 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 than 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 configure colors. Besides predefined colors (case sensitive): black blue cyan darkGray gray green lightGray magenta orange pink red white yellow it is also possible to use RGB components, see color format.

Nested designs

It is possible to combine two or more elements 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 measure. There are two ways how a BioEra element measures time:

·       Based on the 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 clock of the operating system (precision is affected by the design setting: Sleep time [ms]).

 

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

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

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

·       The calculation is not affected by the processing time (which depends on Sleep Time configurable in Design settings).

 

The real time measure is useful in others cases:

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

 

List of elements which measure time based on sample rate, and when correct input 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

 

List of 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

 

Note: for 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 local variables predefined in BioEra:

DESIGN_FOLDER or DF – folder from where the main design is loaded. For example %DF%\file.txt path will find the file.txt file in the same folder as the design. This is a very useful option which allows store ALL files used from the design (nested designs, images, resources etc.) in the same folder because it makes it easy to distribute or create newer versions which can coexist with older versions.

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

SDCARD – on Android only – path to the folder where the external SD card is mounted

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 for Windows XP:

 

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.

 

3D graphics

BioEra supports 3D real time rendered graphics on most computers. If 3D support is not available (on older computers), then BioEra will detect it and show up this message: 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).

 

Elements

Here is a long list of all supported elements. This list may not always be complete because the development advances fast; if you have any questions (not found below) please post them on forum.

 

AbsRateLimitter

This element is similar to RateLimitter, but it counts the number of samples and time from the moment the design was started.

ActivityDetector

This element detects a change on the input activity. If there is at least one input sample, 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).

 

Latency time (both ON and OFF) is measured from the moment when the last input sample arrived.

 

Fields:

·       ON latency [ms] – how quickly this element should react to the input activity (any sample arriving to the input)

·       OFF latency [ms] – how quickly this element should react to no activity (no sample arriving to the input)

 

Note 1:

  1. Change OFF -> ON occurs exactly ON latency time after the last sample arrived.

2.  Change ON -> OFF occurs at the first moment when there has been no input sample during OFF latency time.

 

Note 2:

1.  ON latency is measured after any sample arrived. 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 measured 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

 

AngelSensor

Driver element for Angel Sensor wearable fitness device.

 

Input of this element usually should be connected to a SerialPort element.

 

Note: this driver only works with BLED112 (BlueGiga Bluetooth 4.0 Smart dongle). This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Properties:

·       Device MAC address – this can be set to connect to a specific device. If this is not set, then it will be automatically discovered: the first found Angel Sensor will be connected to and its MAC address will be set here. If you need to connect to another Angel Sensor, remove (clear) this address value and make sure it is turned on when BioEra design starts.

 

 

Outputs:

·       PPG1 – real time PPG (channel 1) waveform at 100sps

·       PPG2 – real time PPG (channel 2) waveform at 100sps

·       Acceleration – real time acceleration waveform at 100sps

·       HR – heart rate value (calculated on the device) sent out when it changes (variable rate)

·       Temperature – skin temperature value sent out when it changes (variable rate)

·       Battery – battery level value (0 – 100%) sent out when it changes (variable rate)

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 applications can be controlled that way, only those compliant with Microsoft API.

 

Some applications which were tested and can be controlled: Internet Explorer, Google Chrome, Windows Calculator, Notepad, WordPad. The best way to verify if an application can be controlled is to try it out.

 

Application which can’t be controlled: Mozilla Firefox.

ApplicationPlayer

This element can be used to start external (executable) application and send keyboard strokes to it in order to control it.

 

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

 

Fields:

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

·       Execute in folder – some applications can only be executed from the folder they are in. If this is the case, this folder should be set.

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

·       Start sequence – those keyboard codes are sent to the program at start. Use KeyboardAdvSource to find out the code for each button.

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

·       Key codes – each logical input controls one key/button which is defined here. Logical TRUE presses 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 size [x,y,width,height]

·       Start time [s] – during this time just after start, the Start sequence events are sent to the app along with events to position the window and set focus. Because the app may take some time to start, those events are sent repeatedly every 400ms (they may be sent more than once).

·       Wait for application start [ms] – wait up to this time after application start and try to locate the application’s frame by its title. When it is found, this wait is over.

·       Close application on stop – the application is requested to close (CLOSE event sent to it) when processing stops.

·       Send events only to this app – if this is set, then BioEra checks if the application’s frame is in focus in each loop and proceeds only if that is the case. This might slow down the overall processing, so this option should be set only when necessary.

·       Add environment variables – some applications need special environment variables which can be set here.

·       Keystroke type Java type vs. Windows type differentiates the method used for keystrokes. The Windows methods should be more reliable, but Java method was available from the beginning, so is kept for backward compatibility. The Press/Release option is for controlling separately Press and Release events. True on input presses the key, and False on input releases the key. The Press-Release option sends both events (press then release) at the same time for any input value (true or false).

 

Note: only the last input value received to any input triggers a key event generation. In order to send several key strokes in a row, they must be delivered to input with a delay (at least one loop between each new input value).

 

BarDisplay

This chart shows a vertical bar. Height of the bar is controlled by the input value. Level inputs control horizontal line (shown only if Level input is connected), which should be used only for slowly changing signals (like 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.

 

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

Note 2: 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

Display horizontal bar which behaves like BarDisplay.

BerryMedBM1000

Driver element for the Berry Med BM1000 wireless (bluetooth 4.0) oximeter.

 

Note: this driver only works with BLED112 USB bluetooth dongle (good for any Windows version). This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Properties:

·       Device MAC address – this can be set to connect to a specific device. If not set, then the first BerryMed oximeter will be automatically discovered and connected to.

 

Input of this element must be connected to a SerialPort element.

 

Download an example snippet design here.

 

BITalino

Driver element for the BITalino devices.

 

Note: this element must be connected to a SerialPort element which points to the system serial port created by Windows after classic Bluetooth dongle has been paired with the BITalino device. The pairing must be done once before BioEra is started (pairing code: 1234).

 

Properties:

·       Sample rate – sample rate is configurable for all channels. The default value is 10, but it should be set higher for some channels. For example should be set to 100 (or 1000) for ECG, EMG or EEG channels.

·       Channel 1 to 6 – each channel can be configured for a different sensor type it is connected to. This element is by default preconfigured for use with BITalino (r)evolution device. Other devices (or a custom configuration) may need channels assigned to different signal types.

 

Download an example demonstration design for this element here.

 

BleDevice

Driver for a custom Bluetooth 4.0 device which implements BioEra BLE profile.

 

Note: this driver only works with BLED112 USB bluetooth dongle (good for any Windows version) connected as a SerialPort.

 

Properties:

·       Device MAC address – connect to a specific device with this MAC address. If not set, then the first detected device with BioEra name will be connected to.

 

The device name must have ‘BioEra’ text in it. The Bluetooth profile must implement one service and 2 characteristics with predefined UUIDs. To find out all the details see the example Arduino program which can be compiled and executed on any ESP32 board. Download it here. This example program must be compiled and executed first, before the BioEra design (link provided below) is used to communicate with it.

 

Snippet BioEra design which communicates with the above is available for download here. The above Arduino program must be executed first.

BrainMaster

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

 

Input of this element usually should be connected to a SerialPort element.

 

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

This is a 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).

 

Input of this element usually should be connected to a SerialPort element.

 

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 than 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.

 

CameraImageSource

This element is used to interface with video cameras (USB or others). It can be used to record video as well as output video frames (as images) in real time.

 

Properties:

·       Camera device id – list of unique camera identifiers.

·       Capture from camera (not input file) – this element is primarily about capturing video from a camera, but it can also be used to read from a file (when this is not selected).

·       Frame width – width of the video frame (or output image), typical values to put here: 1280, 1920, 800, 640, 320.

·       Frame height – height of the video frame (or output image), typical values to put here: 720, 1080, 600, 480, 240.

·       Request frame sample rate – some cameras (not all) can output (record) video at various frame rates, typical values to put here: 30, 15, 10, 5

·       Convert to gray image – output images are converted to gray (recorded video is in color)

·       Input video file – source video file used when Capture from camera is not selected.

·       Input video file decoder – select video codec to decode the video from file

·       Save output video file – video is recorded and saved in a file

·       Output video file – video file to save when Save output video file is selected

·       Output video compressor – compressor codec. This option is used to compress the size of the output video file, but it requires a lot of processing power.

·       Unique output video file name – is set, then each output video file will be unique (previous recording will never be overwritten)

 

Outputs:

·       Image – real time images of the video frames

·       Time – time of each video frame (measured in milliseconds). First frame is usually not 0 (camera usually needs some time to start), and FPS (frame rate) is often not constant, so in order to synchronize video with other signal (like EEG recording) this time must be used to know precisely the time point.

·       Matrix – this is the same pixel data as sent to Image output, but can be easier (more efficient) to process in the design.

 

Note: same advanced options are experimental, and may not work (like ‘Capture still image’ or audio settings). Feel free to ask on forum about that if you need them.

Capnometer

Driver element for a capnography device which is compatible with Respironics.

 

Serial input of this element usually should be connected to a SerialPort element.

 

Properties:

·       Data mode – the CO2 mode is available in all capnometers. The O2 is available only in mainstream capnometers (the O2 mode is untested at this moment).

·       Reset device – if this is set, then at the next start the reset command will be sent to the device and this value will be cleared

·       Trace mode – set this to see some debugging messages on console

 

 

Outputs:

·       CO2 – real time carbon dioxide data waveform at 100sps

·       ETCO2 – End tidal carbon dioxide sent at 1sps

 

This driver was tested with LoFlo (sidestream) C300 device. But it should work with any other Respironics compatible model.

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 and layout.

 

This element replaces the default (proportional) resizing on the 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

o   ToolbarLayout – good way for creating toolbars (charts aligned horizontally in one row)

 

ChartLine

This element draws a line on a chart. Currently it can be connected to Oscilloscope, Polygraph and Vector2DDisplay.

 

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 a target element with multiple channels (like Polygraph).

·       Color – color of the line.


ChartBackgroundOverlay
Paint a solid color, image or selection areas (vertical strips) in the background of the target chart (some charts are excluded, e.g. video or 3D chart).

 

The selection options requires that the chart has horizontal (time) axis.

ChartTextOverlay

Draw text on a chart (some charts are excluded, e.g. video and 3D charts). Text does not resize when the target chart is resized.

 

Properties:

·       Text - text to draw

·       Color – text color

·       Text background 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 than 0 or greater than 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.

·       Horizontal scale position – this option is effective ONLY when the Horizontal position property is set to a negative value (and therefore disabled). It can be used only with charts which have horizontal scale (like Oscilloscope). Text position is relative to this value on that scale.

ChartTransparency

Control dynamically transparency (brightness) of any chart including VideoFilePlayer and 3DDisplay or FlashPlayer.

 

Note about mouse/keyboard events: this chart is (automatically) put on top of the target chart, which means that the target chart will not receive mouse/keyboard events (it may work with FlashPlayer which has a special support).

CMixer

This element works almost 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 than one value arrives to the Var input, then the last value one is used for all following calculations.


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)

·       DIVIDE - (value / variable)

·       AVERAGE - ((value + variable) / 2)

·       MAX

·       MIN

·       REVERSED SUBTRACT - (variable - value)

Coherence

This is a multichannel coherence element, highly optimized for optimal processor usage. It can process up to 32 input channels (number of channels is configurable). The number of outputs is the same as number of inputs. Each output provides combined coherence value for the corresponding input channel. For example Output 1 is an average coherence value between Channel 1 and all other channels.

 

Interactive properties:

·       Select channel – by default no channel is selected. If this interactive property is set to a value between 0 and N (N is number of channels), it will affect all output values. Important – this index here starts from 0, while element channels are numbered from 1, value 0 here is for channel 1, value 1 is for channel 2 and so on.

Each output will be now relative to this selected channel. For example if the Selected Channel is set to 0 (which selects Channel 1), then the Output 1 will send coherence value calculated between Channel 1 and Channel 2. Or if the Selected Channel is set to 1 (which selects Channel 2), then the Output 2 will send coherence value calculated between Channel 2 and Channel 3, and Output 3 will send coherence between Channel 2 and Channel 4.

To reset (unselect) this channel, set it to -1.

 

ColorChartSensor

This element detects the color of a pixel on the target chart.

 

Inputs:

·       Element – target 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 a set of colors which can be used for processing. Each color is selected by the input numeric index (scalar coming to input), first color’s index is 0; second index is 1 and so on.

 

Fields:

·       Color Set – contain 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 transparent darkgreen seagreen

ColorVectorSet

Similar to ColorSet but colors are configured and sent as vectors. Vectors are separated by ‘|’ (pipe), vector fields are separated by ‘,’ (comma).

ComboToolbarControl

This element provides option to select and send a value from a drop down list.

 

Fields:

·       Toolbar position – determine position of this control (icon) in toolbar. This value is only relative to others, not absolute. It assures that component with a 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

 

ComponentInteractor

This element allows to set some properties (like font or colors) on a graphic components like: InputText or ComboToolbarControl and others (including nested charts).

·       Component – the graphic component is selected here

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

ContectCMS50EW

Driver element for Contec CMS50EW or CMS50FW wireless (bluetooth) oximeter.

 

Input of this element must be connected to a SerialPort element.

 

To pair bluetooth, use code: 7762.

Counter

This element can count occurrences.

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

·       Count – function:

o   SAMPLES – count incoming samples

o   INVOCATION – count processing loops

 

This element sends an output value in each invocation (loop). Therefore it repeats the last value if no input value has been received.

 

This element is quite computation expensive, so it is better and more recommended to use Counter2.

Counter2

This is a simplified, improved, less computation expensive and more recommended version of Counter. It sends output value only once in the defined Time period.

 

It should be used instead of Counter unless there is a need to get the output value also when there is no input samples received.

 

This element (as opposed to Counter) sends an output value ONLY if there is at least one input value received.

Counter3

This is a special version of Counter which counts samples (only) 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.

 

Counter4

This is the simplest (and least computation expensive) counter version of all. It counts ALL input samples from the start.

 

CustomElement

This element can be useful for professional java developers. It can be used to implement a custom element.

 

The java class which is created for this element 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. It is also possible to create a custom chart using ExternalChart interface.

 

Here is a demo java class with source code which implements all of the above interfaces (set as default). It multiplies input signal by 2 for the scalar category, and just draws the value on chart for all other categories (Float, DoubleFloat, Object).

 

Here is the interface documentation.

 

To create a custom element for Android, look for more details here.

 

Fields:

·       Java class – fully qualified class name (with package) that implements ExternalSource and optionally other interfaces. This class must be on default CLASSPATH, for example in a jar file put into the EXT folder.

 

The most preferred way is to put the custom element class into a jar file and place it in EXT folder.

 

It is however also possible to create a one simple class and put it in BioEraPro\impl folder like this:

  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 javac –version shows version the same BioEra uses (BioEra 3.xxx uses version 1.6 by default, or 1.7 optionally)
  6. Type: set CLASSPATH=.;..\ext\custom.jar
  7. Type: javac *.java
  8. Last step should have created Test.class file in the impl folder, if not, look for errors and fix them.
  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 must restart BioEra or reload design.

 

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

 

Note 2: To compile you need to use the same java version BioEra uses. BioEra version 3.xxx uses java 1.6.

CustomInteractor

This element provides various functions which can be used to interact with computer system and 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 for the Windows system where BioEra is executed.

 

DebuggerElement

This is a diagnostic element - it prints input values on console.

Decimator

This element passes through only portion of the samples that arrive to input.

·       Send samples number – how many samples to pass.

·       Skip samples number - how many samples to abandon.

Delay

This element holds the data for the selected time period and then sends it forward unchanged.

Fields:

·       Delay – defines how long the data should be hold before 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. You may also consider Delay2 element.

Delay2

This element is very similar to the Delay with selected option Use input rate to measure time. It is however more precise and also synchronized (which means it sends out as many samples as it received).

Demultiplexer

This element passes input data to selected outputs.

Fields:

·       Binary – if set then stream is sent out 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 program when it is started (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.

 

Special options:

·       -filedatasource” followed by a path to an archive file. In this case at start BioEra searches for the first DataSource element (XDF, EDF, Raw, etc) and sets this path on it before main design is started. That way it is easy to set a file path on command line without need to use DesignArguments and PropertySetter.

DesignInteractor

This element provides various operations to be performed on a design.

Fields:

·       Path – path to the design file.

·       Action

o   Load design – load the design located in the file specified by the above Path.

o   Load design in – show an interactive dialog to the user which allows selecting a design to load. The Path specifies the folder to list design files.

o   Save current design – save currently loaded main design (along with all nested designs if they are configured to do so).

o   Save current design as – show an interactive dialog to the user which allows selecting the file where current design should be saved in.

o   Save then Load new design – similar to the first option Load design, but the current design is saved first.

o   Save nested design – save parent nested design only (if any). This only works, if this DesignInteractor is put in a nested design.

 

DeviceSet

This element is for allowing access to all supported devices (plus simulator and archives) in one element 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 from the device.set file.

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

·       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.

 

If neither option Load Global nor Save Global is set, then the configuration saved locally in current design and effective for the current design only.

 

To choose a device in this element, select it in the list, then press Apply, and then set required setting. Some properties (e.g. COM port number) are necessary for the selected 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 to ComboToolbarControl.

DialogFile

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

DialogText

This is a triggered interactive element which can be used to ask user for a 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 it.

 

Fields:

·       DVD video decoder – allow to select which DVD codec is to be used (if more than 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.

EDFFileReader

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

Note: there is a more advanced substitute for this element: XDFFileReader.

 

Properties:

·       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 or PropertySetter):

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

·       Recorded samples – returns total number of recorded samples.

·       End-of-file reached – signals end of file. When the end-of-file is reached the element is deactivate. PropertyGetter can be triggered using its Element deactivated option to get this value instantly.

·       Current time [s] - this property can be used to get or set current position.

·       Annotation text – read annotation text, there is no need to trigger PropertyGetter

·       Annotation time [s] – read annotation time, there is no need to trigger PropertyGetter

·       End of fragment time [s] – get or set end of fragment time. When this position is reached, the data output is stopped.

 

Advanced properties:

·       Max samples per iteration – to activate this option its value it must be greater than 0. It has an effect only when Keep original rate option is not set. If active, then this is the maximum number of samples sent to output per loop.

·       Output sample count per iteration [%] – this option is active only if the above Max samples per iteration option is not active. It has an effect only when Keep original rate option is not set. It determines how many output samples are sent to output in relation to maximum available buffer space of the downstream element.

 

 

Note: All input data channels sent to this element must have equal characteristic (the same signal parameters e.g. amplitude, rate etc).

 

EDFFileWriter

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

 

Note: there is a more advanced substitute for this element: XDFFileReader.

 

Fields:

 

 

Note: All input streams connected to this element must have equal signal rate.

 

Advanced Properties:

EEGNeuroAmp

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

 

Input of this element usually should be connected to a SerialPort element.

 

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 very useful for designs with multi-channel processing like QEEG.

Fields:

 

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

 

Note: this element requires at least version 4.189.

 

ElementArrayInputs

This element can be connected to ElementArray in order to access additional inputs of the nested element (if it has more than one input).

 

ElementArrayOutputs

This element can be connected to ElementArray in order to access additional outputs of the nested element (if it has more than one output).

ElementInfo

This element provides special info about target element. Most of the outputs need to be triggered to get the desired info. Exception is the Reiniting output, which doesn’t have to (and can’t) be triggered.

ElementInteractor

This element provides special actions which can be performed on an element in the current design. For example: to start or stop an element.

 

Properties:

 

Evaluator

 

Note: this element is not supported at this moment.

 

This 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 stored in a text file. Data must be properly formatted, for example only one character can be between lines (packets) or between channels. Many programs can export like that. Typically lines (packets) are separated by End-Of-Line character, and channels are separated by comma (,), semicolon (;) or tabulation.

 

Fields:

 

ExcelFileWriter

Data is saved in a formatted text file.

 

Fields:

 

ExpressionEvaluator

This is a very powerful element. In simple form it is used to create math expressions calculated with values received to inputs e.g.: (In1 + In2) * Math.sqrt(In3). In advanced form it can use all java language power to create unlimited functionality.

 

Input values are represented by predefined identifiers: In1 for input 1, In2 for input 2 and so on (maximum 20 inputs or outputs), all case sensitive. Most common mathematical functions are available, 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 can be sometimes the sum of the highest input rates at any given moment. By default all input values are set to 0 at start.

 

Expression is compiled into java byte code and stored in the design file. It is then reused during the next start, so there is no delay.

 

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

 

Some useful links:

·       Java expressions

·       Java operators

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

·       Math functions

·       Predefined variables

 

The VectorExpressionEvaluator element allows to perform operations on vectors. The expression looks similar, but identifiers represent individual vector fields. For example, with expression In1+In2, each output vector field value is set to sum of input vector field values at the same index.

There are also some
extra variables available here, for example this expression: InVector1[VectorSize–VectorIndex–1] will reverse the input vector fields. More information about those variables can be found in advanced architecture document.

 

The ObjectExpressionEvaluator element is similar but more specialized expression evaluator and usually requires some (but basic) java knowledge. It works using objects (text, images, points, matrices, vectors and others) and not just numbers. So the mathematical examples described above are mostly not applicable. In order to use it, the input value object class must be known. For text it is java String, for images it is java Image. For example in order to get a substring of an input text starting from index 3 this expression can be used: ((String) In1).substring(3)

 

Advanced property

·       Declaration – this option allows more advanced java programming and structures. For example, it can be used to create custom variables or methods. The variables created here are not initialized or reset at start (like the predefined input and output variables, e.g. In1, In2 etc.), they persist until design is reloaded, or expression modified.

·       Execute at start – this expression is executed at every start of this element.

 

Special in-expression variables and functions:

·       SkipOutput – it is a boolean java variable available inside expression. If it is set to true (as part of the expression), then nothing is sent to the output for the current input value (the value is automatically reset to false afterwards). Using this variable can affect output rate.

·       setOutputValue(index, value) – can be used to set an output value by index (which starts with 1). Useful for loops and automatic output creation. Available only in advanced mode.

 

Note1: when ExpressionEvaluator is used with advanced expression (each output is assigned in the expression, e.g. Out1=In1+In2), then it is possible to use also all java code (like ‘for’ loops or local variables) together with such expression.

Note2: it is possible to access external precompiled classes or external libraries by adding them into extlibs.jar file put in ext folder.


FFTTransform

This element does FFT transformation and sends out vectors.

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 – define how many output vectors are sent 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 – remove bias from the input signal (deduct DC constant or mean value).

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

·       Frequency resolution – show the frequency resolution.

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

o   FLOAT – Recommended option. Performs calculations on float numbers.

o   INTEGER – performs calculations on integers. It is the fastest method but can process samples of only up to 15 bits and can only be used with Scalar type of this element.

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

·       Window – select windowing type.

 

For more detailed information about the algorithm see Fast Fourier Algorithm.

 

FFT2Transform

This is a more specialized version of the FFTTransform. It provides two output values: real and imaginary. There is no windowing on the input. And there is no magnitude (square root) calculation on the 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 about the algorithm see Fast Fourier Algorithm.

 

Filter

This element is for digital filtering.
Fields:

·       Filter type – choose filter algorithm e.g. Butterworth.

·       Band – choose filter type for the above algorithm (high pass, low pass, etc).

·       Filter order – select order of the filter.

·       Min frequency – minimum frequency in the band pass/stop filter or high pass filter.

·       Max frequency – maximum frequency in band pass/stop filter and low pass filter.

·       Chebyshev ripple – this value is used only when the filter type is set to Chebyshev.

FlashPlayer

This element 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 a float value to a 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.

 

FTDISerialPort

This element is alternative to the SerialPort for USB devices which have FTDI chip.

 

The main advantage of this element is that there is no need to know the serial port (COM) number (which can vary on different computers). If there is only one FTDI device connected, then the default settings will allow to automatically detect it and connect to it.

 

If there is more than one FTDI device, then it can be assigned by its name, serial number or its COM number.

 

Properties:

·       Search by device description – the target device is found using its device description. If this field is set, then other ways of searching (described below) are skipped.

·       Search by serial number – the target device must have this serial number to be found using this property. If this value is set, then the COM port selection (described below) is skipped.

·       Baud – select the serial port connection speed.

·       COM port – select the target device by the COM port assigned to it (it can be found in Windows Device Manager). The Auto Detect option can be reliably used if there is only FTDI USB device connected.

 

GainInteractor

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

 

Mode:

·       DATA BUFFER – 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 and Polygraph.

Ganglion

This is a driver element for the Ganglion device (www.openbci.com).

 

Note: this driver only works with BLED112 (BlueGiga Bluetooth 4.0 Smart dongle). This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Input of this element must be connected to a SerialPort element which must be configured to use the serial port added for the Bled112 dongle (configuration only needed if more serial ports are available in the system).

 

Properties:

·       Mode – the EXG (EEG, EMG or ECG) mode alone has slightly better precision (19 bits) than EXG + Accelerator (18 bits). So it is usually recommended unless accelerator is also needed.

·       Connect to MAC address – if this is empty, then BioEra will connect to the first found Ganglion device (or show error dialog if none found). Otherwise it connects only to this address set here. If this device is not found or powered off, there will be no error or dialog; the connection will be established when the devices is found (powered on again).

·       Extra commands – additional commands can be specified here (for example to disable some channels or reset the device at start)

 

In order to receive data from more than 1 Ganglion in one design, the Connect to MAC address field must be set for each of those devices. The 12 character MAC addresses can be found printed on the console (BioEra needs to be started with Console).

 

Download an example snippet design here.

Generator

This element is used for audio playback (not for bio signals). It generates periodic signals calculated mathematically. The amount of output data is controlled from PCMAudioPlayer via a blue line (the blue line must always be connected).


Functions:

·       SINE – sine signal

·       TRIANGLE – triangle signal

·       RECTANGLE – rectangle signal

·       RANDOM NOISE – noise, random values

·       SINE WITH SECOND HARMONIC – sine mixed with its second harmonic

·       SINE WITH THIRD HARMONIC – sine mixed with its third harmonic

 

Properties:

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

·       Output sample rate [sps]number of generated samples per second

·       Float input frequency used in scalar version of this element, if set then input Frequency value is scaled by 1000.

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

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

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

·       Frequency [Hz]initial frequency of the generated signal

·       Amplitude [%] – amplitude of the generated signal

·       Volume change dynamicssimilar to Frequency change dynamics but for amplitude and the minimum (fastest change) value is 0

·       Gradual OFF time – if greater than zero, then this is the time in which signal amplitude changes to 0 when the element is changed from ON to OFF state (using ON/OFF input).

·       Initially OFF set the initial state to OFF (can be changed using ON/OFF input).

 

GlobalConnector

Exchange data without a connection (usually between far parts of the project/design). It works not only in current design, but also across nested designs. The Global ID property is used to assign several elements to the same group. Then all data arriving to any input of any member of that group is sent out to all outputs of all members of the group.


Fields:

Global ID – text/name which identifies the group of GlobalConnector elements between which data is exchanged.

 

Note: this element is not equivalent to a connection. Some functions may not work as expected, for example using PropertySetter with post action set to “Reinit target and followers” will not propagate down the stream from one GlobalConnector to other in the same group.

GroupPropertySet

Group properties of several elements (of the same type) into one set of properties. Useful for example to change a property to the same value in multiple elements.

HEGduino

Driver element for the HEGduino device.

 

Input of this element must be connected to a SerialPort element, selected for COM port added when the device is connected to computer with USB.

 

Properties:

·       Startup command – select command codes sent to the device at start. The ‘t’ command is necessary to start streaming.

 

Example snippet design for this element can be downloaded from here.

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

 

HttpWriter

This element sends input text to a web server using http protocol. The computer must be connected to network. When the input text arrives, this element connects to the specified URL and sends there text using the specified http method. If the web service sends back a text, then it is provided to the Response output. The Status output can be used for showing current step of the above operation, since it may take some time on slower networks.

Fields:

·       URL – full network path to the web service.

·       Http method:

o   POST – input text is used as POST body.

o   GET – input text only acts as trigger.

o   GET+ - input text is appended to the URL.

·       Charset – the text encoding.

 

 

Note: sometimes it can take a long time to communicate over the network, especially over the Internet. This element will block current design until that operation is completed. If this is undesirable, this element can be put inside a nested design, which has an advanced option to run on a separate thread.

 

Here is an example design snippet which demonstrates that element: http://proatech.com/design/http_writer.bpd

 

The default URL points to an example web service, it is a simple php script which sends back the same text it received:

 

<?php $postdata = file_get_contents("php://input");

echo "POSTed: " . $postdata; ?>

 

HtmlPlayer

This element can display HTML 5 content which can be then (optionally) controlled from BioEra design in real time by using special java script functions.

 

Up to 20 inputs can be used to send numeric values to the browser. Up to 20 outputs can be used to receive text from the browser. It is also possible to send text values using XmlNetServerEvent.

 

The HtmlGame.bpd is an included simple example design which demonstrates how to use this element and how to create a game. It uses Html 5 Canvas to create animated content (which has capabilities comparable with Flash or Silverlight).

 

Special java script functions:

BioEra.getInputValue(index) – get the last value received to element’s input, index starts from 0

BioEra.getInputName(index) – configurable Channel name property, index starts from 0

BioEra.getInputEventText(eventName) – receive event text sent with XmlNetServerEvent element (which can be connected to HtmlPlayer).

BioEra.sendOutputText(index, textValue) – send textValue string to one of the HtmlPlayer’s outputs, index starts from 0.

 

The browser window position and size is remembered at stop, and restored at start.

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.

ImageDisplay2

Like ImageDisplay, but simpler and sometimes significantly faster. It should be used when images are painted often (for example with Videos or Camera preview) and resized to large areas (like full screen).

ImageMarker

This element paints a mark on an image.


Properties:

·       X, Y – position of the mark.

·       Width, Height size of the mark

·       Create copy – if selected then the input image is copied, and mark is painted on the copy.

·       Mark color – color of the mark

·       Pen properties set the line properties

·       Gravity TOP_LEFT option puts the mark in [X,Y,X+Width,Y+Height] rectangle, and CENTER option in [X-Width/2,Y-Height/,X+Width/2,Y+Height/2]

 

ImageMixer

This element 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 files and provide them to the design as objects. A next image is sent when input is triggered. The trigger is defined on the Input trigger property.


Fields:

·       X, Y, Width, Height – define 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 – show the actual size of the output image

·       Image files – path to the image files

·       Color type define color format of the output image

 

ImageToMatrix

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


Note: this element is not supported at this moment.

ImageTransform

Perform various transforms on the input images like rotation, zoom etc.

ImageWriter

Save input image on the disk. The “Image file path” should be set to an image with the same extension as set in File format.

 

The mode option allows to save more than one file in the same folder appended with a unique number or a timestamp.

InputCheckbox

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

InputComboList

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

InputList

Allow user to select among list of items in a list and process it in the design.

InputText

Allow 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 than 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 all J&J devices. Configuration can be customized using a configuration text file.

JCPirHEG

Driver element for Jeff Carmen’s HEG devices.

KeyboardAdvSource

This element is an advanced and a 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 key keystrokes also when BioEra 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 Android) (not in command line mode).

BioEra window
must have focus to receive keystrokes via this element.


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 on (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 a 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 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 probed, so it is possible that some very short keystrokes will be 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

It is possible to connect KT88-106 device and use it with BioEra. But it has no dedicated element and no official BioEra drive support.
 
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

Display a rectangle (or other shape) using one of two configured colors. The color is selected using input Logical value (true or false).

Lightstone

Driver element 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 values can be viewed on Windows in Device Manager like on the picture here.

 

LogicalMixer

Perform logical functions on 2 inputs. 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

Perform logical functions on multiple inputs. Rate is not guaranteed. 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.

 

LSLAcquisition

This element can receive streamed data from LSL sources like OpenVibe’s acquisition server.

 

Properties:

·       Signal type – signal type to search. This signal type must be set the same as on the server, otherwise it will not be detected. In order to auto detect all signals (requires version 4.197 or higher), this value can be set empty. If this value is empty, then the first detected signal is selected, and info about all other available signal types is printed on console.

·       Signal rate – sample rate of the signal (controlled by the LSL source).

·       Channel names – names of the currently available source signals.

 

Note: when this element is started and the detected source doesn’t match the one detected previously, the design is automatically restarted.

 

Download an example snippet design.

MatrixRowDisplay

Show multiple instant traces on one chart, one trace per each matrix row.

Fields:

·       Amplitude range – amplitude range defined in physical units.

·       Colors – define color for each trace. See color format.

 

Download a snippet example

 

MatrixToImage
Convert input matrix to an image. The matrix format is expected the same as created by ImageToMatrix.

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


MatrixTransform
This element contains various transforms on input matrix.

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

MenuItemControl

A simple option to create single menu field on Runtime window and connect its action to design.

 

Properties:

·       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.

 

Note: menu can be added on Runtime 1 or Runtime 2 frames. The other Frame options (like a separate dialog) have no effect.

MenuListControl

Simple option to create a menu list on Runtime frame.

 

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 sent when menu item is selected. If there is no value defined for the selected Field then nothing is sent to the Value output when such field is selected.

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

 

Inputs:

·       Enable/Disable – allow 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).

MiBand2

Driver element for the Xiaomi Mi Band 2 fitness tracking bracelet. This element only supports heart rate in real time.

 

It outputs a stream of heart rate values without any time synchronization (sample rate between 1sps and 5sps) which are averaged on the device. This means that rapid but short heart rate changes may be hard or impossible to detect here.

 

Note: this driver only works with BLED112 USB bluetooth dongle (good for any Windows version). This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Properties:

·       Device MAC address – this can be set to connect to a specific device. If not set, then the first MiBand 2 device will be automatically discovered and connected to.

 

Input of this element usually should be connected to a SerialPort element.

 

Download an example snippet design here.

 

MF_eSense

Driver for the MindField eSense muscle device.

 

Note: this driver only works with BLED112 USB bluetooth dongle (good for any Windows version) connected as a SerialPort. This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Properties:

·       Device MAC address – connect to a specific device. If not set, then the first eSense device will be automatically discovered and connected to.

·       Connected MAC – show the MAC address of the currently connected device. Useful to copy and paste into the above Device MAC address property.

·       Detect serial port – try to detect the serial port automatically. Useful if there are more serial ports in the system.

·       Search device by name – useful to select which device to connect to when there is more of them. Each device has a unique id in its name which can be used here. The above option to select by Device MAC address is better though, it is faster because no device discovery is needed. Here we have to discover all devices before selecting the right one.

 

Snippet design is available here.

MF_Temperature

Driver for MindField temperature sensor (http://www.mindfield.de/).

 

MIDI

This element is used as a sound feedback. Each received input value plays as a midi sound. Input note values can be from 0 to 127 (to turn a note on) or from 128 to 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 volume (see below) of the current 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 volume (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 element uses only one channel to play. That way if there are more midi elements each can play on a different channel.

·       Mono – if set, then only one note is played at a time. When a new note is requested, previous is turned off. If not set, then many notes can be played at 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 the input value is different than the 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 a selected chromatic 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 than 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

Driver for the MindMaster EEG device (www.mindmaster.de).

 

Input of this element usually should be connected to a SerialPort element.

 

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+

 

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. Only EEG-201 model can be used with this driver.

 

Note: this element is not supported at this moment. It stopped working with the last Windows version. It might work fine on previous Windows versions.

Mixer

This element can performa various arithmetic operations on two input streams; both input streams must 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.

 

Note: most of those functions can be also done with ExpressionEvaluator.

MixerM

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

ModEEG_P2

Driver element for the open source ModularEEG device with P2 protocol, details are here: http://openeeg.sourceforge.net.

 

Input of this element usually should be connected to a SerialPort element.

 

ModEEG_P3

Driver element for the open source ModularEEG device with P3 protocol, details are here: http://openeeg.sourceforge.net.

 

Input of this element usually should be connected to a SerialPort element.

MorphInteractor

This is a special element. It can gradually hide or show chart by morphing its image with the background image. Internally this element works like a simple movie or animation creator/player: first the animation 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 than 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 cursor 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 element can simulate mouse behavior.

 

Mouse movement is relative to the rectangle defined in 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 a rectangle, number of pixels from left, active only if inputs X, Y are connected

·       Y coordinate – Y coordinate of a rectangle, number of pixels from top, active only if inputs X, Y are connected

·       Width – rectangle width, number of pixels from X towards the right, active only if inputs X, Y are connected

·       Height – rectangle height, number of pixels from Y towards the bottom, active only if inputs X, Y are connected

·       Initial Mouse X, Initial Mouse Y – if those values are set to 0 or higher, then mouse cursor is moved to this position at start

 

Inputs:

·       X, Y – move mouse cursor to this position

·       Wheel – move mouse wheel to this position

·       Left, Right, Middle – press or release a mouse button. Logical TRUE presses the button, and logical FALSE releases it.

Multiplexer

First all buffered samples from input 1 is written to output, then all from input 2, and 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.

Muse

Driver element for the Muse devices. Tested with Muse 2016 (MU-02) and Muse S, it should also work with Muse-2 2018 (MU-03). Fully supported are EEG (4 + AUX), PPG, GYRO and ACC signals plus Battery level.

 

Note: this element requires BLED112 dongle (BlueGiga Bluetooth 4.0 Smart dongle). This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Input of this element must be connected to a SerialPort element which must be configured to use the serial port added for the Bled112 dongle (configuration only needed if more serial ports are available in the system).

 

Properties:

·       Connect to MAC address – if this is empty, then BioEra will connect to the first found Muse device (or show error dialog if none found). Otherwise it connects only to this address set here. This option is useful if more than one device is in use at the same time.

·       Preset this option can change the device profile. It may affect which channels are active, for example to activate Channel 5 (AUX) on Muse 1 the preset p21 should be selected. For Muse S the preset should be selected to p63 to get all data.

 

Note 2: This driver element does NOT work with Muse 2014 (MU-01).

Note 3: PPG channels are available only with Muse 2 and Muse S (not Muse 2016).

 

Download an example snippet design here.

NestedDesign

This element can be used to create 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.

 

Some 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. Special %DF% variable can be used here to set this file path relative to the main design file’s folder.

·       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 edited/modified only when loaded 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, but accessible also when main properties of the NestedDesign element are hidden.

·       Nested design password – it is the same as above password, but 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.

·       Design file path - it is the same as above File path, but accessible also when main properties of the NestedDesign element are hidden.

·       Process in separate thread – this is a very advanced option and it should NOT be used, unless it is really needed (for example to handle some external resource dependency like slow network speed) and very well tested. If it is used, then such nested design should contain minimum number of elements. The problem with this option is that most elements are tested only for single thread usage, so this can have unexpected (and hard to debug) side effects. All unexpected or negative effects of using this option are NOT supported – you need to use it at your own risk.

·       Separate thread options – this is available only if the above is Process in separate thread selected:

 

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 element is 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 element is 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 to a nested design to customize its properties (presented to the outer design as 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. EDFFileWriter or Polygraph).

·       Propagate nested dynamic connection – this is effective only if the above option is 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:

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

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

·       Clip right and bottom margin on the nested chart – this option has effect if the charts are nested (option above). If set, then all the empty space to the right and to the bottom of the last chart is removed.

·       Restart nested element when a property is set – if set then the nested design element (and all elements it contains) will be restarted.

·       Element inputs validation – select additional checks of element inputs performed before the nested design is loaded.

 

 

NetworkClient

This element connects to a specified network server, and once a connection is established it exchanges byte (8-bit integer) 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 greater than 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 than 0, then this is used for reconnection timeout.

 

The 8-bit data stream is sometimes not sufficient to exchange numbers. In such case the solution is to exchange numbers encoded, as text or in any other format.

NetworkServer

This element can send and receive data over the network. Only one client can be connected to it at the same time. Any TCP client can be connected (not only NetworkClient available in BioEra).

 

Fields:

·       Port – port number the server listens to.

·       Restart timeout [ms] – if NetworkServer elements receives data, then it is restarted if there is no arrived data within this time period.

·       Socket receive buffer size – if larger then 0, it sets the socket receive buffers size which is equivalent to method setReceiveBufferSize described here: http://docs.oracle.com/javase/1.4.2/docs/api/java/net/ServerSocket.html

·       Socket send buffer size – if larger then 0, it sets the socket send buffer size which is equivalent to calling method setSendBufferSize described here: http://docs.oracle.com/javase/1.4.2/docs/api/java/net/ServerSocket.html

 

The 8-bit data stream is usually not sufficient to exchange numbers. In such case the solution is to exchange numbers encoded, as text or in any other format.

Neurobit

Driver element for the 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.

NeurofieldQ20

Driver element for the Neurofield Q20 QEEG device (http://www.neurofield.org/neurofield-q20-eeg/).

 

Fields:

·       Allow other devices – if selected, then this driver will detect other devices like Q21. Please note though - they may not work at all, as they have not been tested. Only devices which have a similar data structure to Q20 (like Q21) can be effectively used with this option.

 

Neurosky

This is a driver element for the Neurosky MindWave device (www.neurosky.com).

 

Input of this element usually should be connected to a SerialPort element.

 

It outputs a raw EEG value, but can also be used to get device’s built in Meditation and Attention measurement.

 

This element should work with all Neurosky devices, but it was tested only with the Mobile Bluetooth version.

 

Nia

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

 

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

Nonin4100

Driver element for Nonin 4100, a wireless bluetooth oximeter http://www.nonin.com .

 

Input of this element usually should be connected to a SerialPort element.

Notice

This element provides a popup a dialog that must be then confirmed by the user. Further processing depends on the 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

Display a number or time value.

 

Scale:

·       phys direct physical value

·       % - value is scaled between 0 and 100

 

Fields:

·       Show unit – if selected, then physical unit (or percent character) unit is appended to the value.

·       Decimal placesavailable in float versions of this element

·       Align text align horizontal position of the text

·       Full height show higher text (may overlap chart label)

·       Font – select text font

·       Antialiasing – enable default antialiasing for fonts

·       Multiline only applicable to TextDisplay. If set, then input text which contains EOL characters will be displayed in multiple lines.

·       Fit width – if the input text (or number) is longer than the width of the chart, it is automatically rescaled horizontally to fit in it. This rescaling is a relatively slow operation, so watch out for processing usage with larger designs and fast changing text values.

ObjectCompare

This element can compare input 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 it received on input.

OpenBCI

Driver element for the OpenBCI’s Cyton device (www.openbci.com).

 

Input of this element must be connected to a SerialPort element. See the note below.

 

This driver was tested and works with the 8 or 16 channel device and the latest V3 packet format.

 

Properties:

·       Startup command – select command codes sent to the device at start. That can be used to configure each output EEG channel to specific configuration (like gain). The default command ‘v’ resets the device at start. For complete description of all commands, see http://docs.openbci.com/software/01-OpenBCI_SDK

·       Delay [ms] – wait time between each of the above command character sent to the device.

 

Note: when the OpenBCI device is used with its included radio dongle, it is recommended to connect this element’s input with FTDISerialPort for the best performance. When using Bluetooth, then the SerialPort should be used.

OpenSoundReceiver

This element can receive streamed data from  Open Sound Control (OSC) clients.

 

Properties:

·       UDP port – port to listen on. The element must be started to listen on this port.

 

Each type of this element can receive different data types. The Scalar version only receives integer numbers, the Float version receives only float numbers and the Object version receives text data.

 

In order to set signal properties (like sample rate) use Advanced Properties.

Oscilloscope

Draw 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).

·       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

 

Inputs:

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

 

Interactive Properties:

·       Offset – allow 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 than 0 then this value is used to set number precision on vertical axis. One digit after dot is 0.1, two digits 0.01 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 than 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 the input values.

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

OscilloscopeXY2

More advanced version of the OscilloscopeXY. It can display many traces simultaneously. Inputs are paired: In1 and In2 are for the first trace (In1 – horizontal, In2 – vertical), In3 and In4 for the second trace and so on.

OscilloscopeXYZ

This is a 3 dimensional version of the OscilloscopeXY.

 

Note: not supported at this moment.

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 – list of full paths to 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

o   File names in folder - list of file names in target folder

o   Configuration files – list of configuration files in config folder and dongle folder (if exists)

·       Argument – special field which contains parameter required for the selected in Action field:

o   Root folders – not used

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

o   File names in folder – path to the folder

o   Configuration files – not used

·       Argument 2 optional field which can contain a second argument for the option selected in the Action field:

o   Files in folder if this is not empty, then this value is used as a name filter. A file name is listed only if it contains the text defined here (including extension).

o   File names in folder - if this is not empty, then this value is used as a name filter. A file name is listed only if it contains the text defined here (including extension).

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.

 

PCMAudioPlayer

This element sends sampled (PCM) data to a sound device like a sound card.

 

Fields:

·       Buffer length – defines the size of the audio buffer. Smaller buffer makes better (faster) response for sounds which are modulated dynamically (e.g. binaural beats). But the buffer’s size must be large 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 not be 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 has a special purpose and it is highly recommended to use it. It usually improves sound quality and responsiveness when connected to a sound source element like Generator, SteppedSoundFileReader or SoundFileReader.

 

PCMAudioSource

This element can read audio data from a sound device like a microphone. It can be used for example for short voice messages saved along with data traces, or for sound/voice analysis.

PCMEnvelope

This element can be used to shape the amplitude of PCM data stream, which can be used to play single sounds. More information about ADSR envelope can be found here: http://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope

 

In order to use it, feed it with data (e.g. from Generator) and connect output to PCMAudioPlayer. Then use trigger input to start it.

 

Fields:

·       Amplitude targets – specify amplitude value here for each time point.

·       Time segments [ms] – time point values measured in milliseconds relative to each other.

·       Start and stop at zero – if this is set, then there are 2 extra amplitude targets inserted, set at 0 at the beginning at end.

 

Outputs:

·       Playing – this is set to TRUE when the envelope is triggered and to FALSE when envelope is done. This output can be used for synchronization when more than one envelope should be executed in quick succession.

 

Input:

·       Trigger – envelope is reset to configured values when this input is triggered. This trigger should be executed only when the Playing output is FALSE, otherwise the behavior is unspecified (may cause distortions etc.).

 

PCMMixer

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


Fields:

·       Has master line – if this is selected, then the output sample rate is the same as first input (number of input samples is the same as number of output samples). If not selected, then the maximum number of input samples is sent to output.

·       Division factor – each output sample value is divided by this value if it is greater than 0.

PET

Driver element for PET biofeedback devices (www.brainquiry.nl/).

Input of this element usually should be connected to a SerialPort element.

 

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

Driver element for Pendant EEG devices (www.pocket-neurobics.com).

 

Input of this element usually should be connected to a SerialPort element.

 

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 older Pocket-I and Pocket-II (Abhayamudra) biofeedback devices (www.pocket-neurobics.com).

 

Input of this element usually should be connected to a SerialPort element.

 

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).

 

Input of this element usually should be connected to a SerialPort element.

 

Note: this element can be also used with those devices: Contec CMS-50D+, CMS-P and RPO-P2.

PN_Wiz

This is a driver element for Wiz devices (www.pocket-neurobics.com).

 

Input of this element usually should be connected to a SerialPort element.

PolarH7

Driver element for the Polar H7 heart rate sensor device. It should work with other Polar heart rate devices as well. It can be used for real time HRV measurement because it also outputs RR intervals besides heart rate.

 

Note: this element requires BLED112 USB bluetooth dongle connected to input as a SerialPort. This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Properties:

·       Connect to MAC address – connect to a specific device. If not set, then the first Polar device will be automatically discovered and connected to.

·       Connected MAC – show the MAC address of the currently connected device. Useful to copy and paste into the above Connect to MAC address property.

·       Detect serial port – try to detect the serial port automatically. Useful if there are more serial ports in the system and only one BLED112 dongle.

·       Search device by name – useful to select which device to connect to when there is more than one. The above option to select by Connect to MAC address is more recommended, it is faster because no device discovery is needed.

 

Snippet design is available here.

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 the defined 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 name may be a little misleading. Here is how it works:

1.  buffer all input values

2.  send to output one value at a time and each time processes all connected (by blue line) elements.

PreProcessor

This element can be used to process (make active) some elements when BioEra design is stopped (before start or after stop). That can be useful for example for automatic design starting/stopping or a remote (from other application) starting/stopping.

ProgressBarDisplay

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

Property

This is a very simple element. It remembers the last input value and sends it out at start (only at start).

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 reads a target property dynamically.

 

To use this element, its input 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 Stop-Set-Reinit-Start All option which will reinitialize entire design after the property has been set.

 

Properties:

·       Scope – property range:

o   ELEMENT_PROPERTIES – main element properties

o   ADVANCED_PROPERTIES – advanced element 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 has 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 selectable 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 – select property of the target element which should be set. List of all properties is here once connected to the destination element.

·       Post action – execute a re-initialization option after the property has been 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 slower and processing must be restarted). Note: there is a newer and more recommended version of this option: Stop-Set-Reinit-Start Target described below.

o   ReinitAll – this reinitializes all elements in current design, it guarantees the new settings will work, but it may take longer time then other Post actions. This option also restarts all elements. Note: there is a newer and improved version of this option: Stop-Set-Reinit-Start All or Stop-Set-Reinit-Start All if changed described below.

o   Stop-Reinit-Start – works similar to Reinit Target, but also stops/start the target element. This option is deeper the Reinit Target and more preferred.

o   Reinit Target and followers – this option reinitializes the target element and all elements connected to its output (and their outputs). Please note, this option must 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 is more than one PropertySetter 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 to have it set.

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

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

o   Stop-Set-Reinit-Start Target. This option works almost like Reinit Target option, but it stops each element BEFORE the property is set on it. It also performs a slightly deeper re-initialization. It is recommended more than Reinit Target.

o   Restart Target if started – the target element is restarted only if it is already started.

o   Stop-Set-Reinit-Start All if changed – this works the same as Stop-Set-Reinit-Start All, but it is performed only when the new value of the property is different than the previous one.

Advanced Properties:

·       Set last input value – most properties need only one value. So by default each PropertySetter takes the last input value and sets it. In case of interactive properties this behavior may not always be desirable. If this option is cleared, then all input values are set on the target property.

 

Hint: if the target element is a Data Source (EDF, XDF or a device), and this PropertySetter must update a property value at start (e.g. file name in XDF reader), then it may be a good idea to Deactivate the target element (set “Do not start” advanced option) and use Stop-Set-Reinit-Start Target option in order to start it. Otherwise the target data source element will most likely start before this PropertySetter and may process (and send) some initial data which is not always welcome.

 

PulseInterpolator

Convert input values arriving at uneven rate to a constant output rate based on the current design “Sleep time”. For example, if the sleep time is 10ms, then the output rate here is 100sps. The input values are interpolated. Output data is sent out when an input sample arrives (which means it can be uneven, but the average SPS should stay constant).

 

This element was created for use with devices like MiBand2 with uneven heart rate values in order to show them on displays like Oscilloscope which require constant rate.

Pulser

Simple element which generates high precision time intervals. The primary purpose of this element is receiving data from sources in real time (not batch) which have unpredictable sample rate.

 

The sample rate of this element depends on the design setting: Sleep Time [ms].

 

For achieving the best precision, this value of this setting should be a multiple of 10, for example 10, 20, 50 etc.

Random

Generate pseudo random numbers. The range minimum is inclusive, and range maximum is exclusive.

 

More information about number generation can be found here.

RangeMapper

This element converts values from input range to output range, for example if the input range is 1-9, and output 21-29, then for input value 7, output value will be 27. Or if input range is 100-300, and output is 1-5, then for input 150, output value will be 2, and for input 200, it will be 3. Output value is always kept within output range. If input value is out of the range, then output will be at one of the output edges, 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, and it is processing faster. It is more recommended whenever possible.

 

Fields:

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

·       Deliver last sample – if this is set, then during the wait time period (within Time range since the last sample was sent out) the last sample in the input buffer is kept and sent out when the wait time period elapses (all other earlier samples are purged). If this option is not set, then all input samples are purged from the input buffer during the wait time.

 

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 being resent to the output. If the input sample count is higher than required on output, then input samples are held in the input buffer and sent later to output (in the order they arrived). If there is no more space in the input buffer ALL input samples (currently buffered) are dropped – lost (a warning message is printed on the console when that happens).

 

Fields:

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

 

This element can be connected to RateNormalizerSync, which delivers time markers in milliseconds, used to measure the time (useful for batch processing).

RawFileReader

Read a raw byte values from a file.

RawFileWriter

Write to a file raw 8-bit values (without headers or formatting).

ReinitBuffer

This advanced element remembers one last input value and resends it during reinitialization. Most elements only can send initial (or remembered) values at start. This element does this during its reinitialization. It should not be needed unless in a very special case.

ReportGraph

Display or browse static (already captured) data. The graph is shown when the design (or this element) is stopped.

 

Right mouse click brings a popup menu with options:

·       Back or [Backspace] – change back to the previous state.

·       Show All - show entire recording.

·       Zoom Out or [PgDown] - zoom twice amplitude of all channels.

·       Zoom full or [F] - the same as above but for all channels.

·       Wider or [W] - time window is extended twice.

·       Scroll left – scroll to the left.

·       Scroll left half or [Left] – scroll a little to the left.

·       Scroll right – scroll to the right.

·       Scroll right half or [Right] – scroll a little to the right.

·       Center vertical or [Space] – center vertically.

·       Delete segment or [Del] – delete currently visible part of the data.

·       Export segment – export currently visible part of the data. If anything in the data has been deleted (using the above Delete Segment option), then this option creates a brand new EDF/XDF file from the locally edited data. If nothing has been deleted, then the export is from the original input data file.

·       Refresh or [R] - 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 (horizontal and vertical), 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. 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 or other reasons the full time range may not always match the actual length of the recording. This field allows readjusting 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 input of ReportGraph. Each column in the table represents signal connected to input of ReportTable. See the SessionReport.bpd example design which demonstrates how this can be setup.

 

Right mouse click brings a popup menu with options:

·       Export table to Excel file – save all rows (which are set to On) in the table to a text file in a format which can be then imported to Excel.

 

Resampler

This element converts from one sample rate to another. It can up sample or down sample depending on the options. The input rate must be known and constant.

 

Fields:

·       Input samples – number of input samples

·       Output samples – number of output samples produced for Input samples count.

 

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.

Rhythm24

Driver element for the Scosche Rhythm24 heart rate device. It can be used for real time HRV measurement because it also outputs RR intervals besides heart rate.

 

Note: this element requires BLED112 USB bluetooth dongle connected to input as a SerialPort. This dongle doesn’t come with the device and must be purchased separately (for example here).

 

Properties:

·       Connect to MAC address – connect to a specific device. If not set, then the first Polar device will be automatically discovered and connected to.

·       Connected MAC – show the MAC address of the currently connected device. Useful to copy and paste into the above Connect to MAC address property.

·       Detect serial port – try to detect the serial port automatically. Useful if there are more serial ports in the system and only one BLED112 dongle.

·       Search device by name – useful to select which device to connect to when there is more than one. The above option to select by Connect to MAC address is more recommended, it is faster because no device discovery is needed.

 

Snippet design is available here.

 

Note 2: the RR support is unofficial (has not been provided by the manufacturer), so it may not fully work with future versions of the device.

Note 3: the RR interval values can be missed sometimes if the signal is unclear like during a movement.

RouteGame

This element provides an ability to create a simple game with a moving animation and actions controlled from the design. The animation avatar moves along a selected route, and events (like bonus points, game finish etc.) are sent to output (which can be then connected to a sound playback or any other action).

 

The appearance of the game can be easily customized by changing/creating the animation images. An example set for Pacman (the default game) – can be found under images/games/pacman folder.

 

Fields:

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

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

·       Play in loop – game starts again after finish

·       Image folder – contains the animation pictures

·       Velocity – movement speed can be controlled here

·       Animation rate – animation can be controlled here

RRDetector

This element can be used to detect heart beat intervals. Input of this element is connected to Oximeter (tested most), and might also work with ECG signal, although it has not been tested with the latter.

 

The detection algorithm is very simple. There are 3 consecutive moving average windows. Each window length is configured in the Average period [s] property. The top peak is detected when the middle average period is higher than the other two.

 

The Detector output is primarily for debugging; it can be used to show the detection graphically parallel with the input signal (its rate is the same as input rate).

 

The RR output is used to send millisecond intervals. Its signal rate is undefined and variable.

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.

QDS

Driver element for QDS devices (www.qeeg.com.ar).

 

Input of this element usually should be connected to a SerialPort element.

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 the input trigger.

 

Fields:

·       Initial value – initial value can be set manually. It is sent to output if the 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.

·       Rotate buffer – this option is available for all functions except BUFFER_LAST_SEND_ONE. If selected and buffer already contains some data, then the input values will be put at the end of the buffer. If there is not enough space, the beginning of the buffer will be cleared to make room for the new data (and buffer will be full after that).

·       Purge buffer – this option is available only for BUF_ALL_SEND_ALL function. If selected then the data in the buffer is removed after it was sent to output (when triggered). After that buffer is empty.

 

Outputs:

·       Out – buffer data is sent to this output

·       Available – this output is used for all functions except BUFFER_LAST_SEND_ONE. It is set to TRUE when new data arrives to input and buffer is empty. It is set to FALSE when buffer becomes empty again. For the BUF_ALL_SEND_ALL function, this can happen only if the Purge buffer option 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 element counts samples arriving 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 than 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

Transform on a time period is performed with two input scalar streams. Output rate is the same as input rate.

 

Fields:

·       Size – number of input samples

 

Functions:

·       CORRELATION – standard cross-correlation calculation.

ScalarInstantTransform

Transform function is performed on a single input 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.

·       BACK DIFFERENCE – output value is the difference between current input sample and previous input sample. First value is compared with 0.

·       ABS – takes the absolute value of the sample.

·       WITHIN_DEFAULT_RANGE – if sample is out of the default range (of the signal properties, visible in advanced properties), then it is converted to maximum or minimum value of the range.

·       POSITIVE – positive values are sent to output unchanged. Negative values are changed to 0.

·       ROOT – square root of input value is sent to output

·       BACK DIFFERENCE 2 - output value is the difference between current input sample and previous input sample. First value is dropped; it is not sent to output since it has no previous value to compare with. The output sample count is 1 less then input sample count.

ScalarSet

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

Fields:

·       Values – set of values

ScalarShifter

This element has an 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, the time period over which the ratio is calculated

·       Time ratio – [0-100%] – defines the spot in the Time period

 

Here is how it works. All input values in 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, then this is a special condition. For 0 - the signal Max value is sent, and for 100 – signal 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 calculated as InputRate divided by Time range (in seconds). Each transform is performed on the Time range period.

 

Fields:

·       Time range – the transform is performed on this time period. The input data is buffered so the first output sample will come when the input buffer is full (unless the PreProcessing is set, see below).

·       Down sampling – if this is set, then there is one output sample per each Time range. Otherwise number of output samples is the same number of input samples.

·       PreProcessing – this option makes processing performed before input buffer is fully filled. That way output values are immediately available calculated with the currently available input samples.

·       Synchronizing value – under normal conditions (without PreProcessing) 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 processing is set.

 

Functions:

·       AVERAGE – calculate average value on the time period.

·       MAX – take the maximum value on the time period.

·       MIN – take the minimum value on the time period.

·       PEAK_TO_PEAK – take the maximum difference of signal amplitude, or a difference between max and min.

·       VARIANCE – variance is calculated as SUM((v – mean)^2) / mean

·       STANDARD_DEVIATION – calculated as SquareRoot(SUM((v – mean)^2) / mean)

·       AVERAGE(ABS) – average from the sum of absolute input values

·       MAX(ABS) – maximum absolute value

·       LONG AVERAGE – this average method should be used for longer time periods, especially 1 minute or more. The calculation is much faster (optimized) than in the AVERAGE mode. But the Down sampling option is not available here.

·       SUM – calculate sum of all input samples in the time period

·       RMS – calculate SquareRoot(Mean(Sum of Squares))

·       Z-SCORE – calculate (v – mean) / (standard deviation), see this link for more details.

·       MEAN ABS DEVIATION – calculate Mean(Sum of Abs(v)), see this link for more details.

ScalarTimeTransform2

This element is similar to above ScalarTimeTransform, but it calculates the selected function on the time period since it was started.

 

It has additional output Time (comparing with ScalarTimeTransform). It is used with MAX, MIN and MAX(ABS) functions. Whenever a new extreme value is reached (larger value for max functions and lower for min function), current time (scaled in seconds and calculated based on input rate – number of received input values) is sent to this output.

ScalarToLogical

Convert input scalar value 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). Output rate is usually much lower than input rate.

 

Functions:

·       = – equal to the threshold

·       <> – different then threshold

·       > – greater than threshold

·       < – less than threshold

·       >= – greater or equal to threshold

·       <= – less or equal to threshold

ScalarToFloat

Convert input scalar value 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 if the Synchronized inputs option is set. In such case output rate is the same as the lowest of all inputs rates.

 

Fields:

·       Description from names – 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).

·       Last input values if set, then the least input value is read from each input, all other data is discarded. The output rate is usually unpredictable. If this option is set, then the above Synchronized inputs option has no effect.

·       Maximum vector size set the maximum size of the output vector. It can be lesser than the number of connected inputs. It is active only when set to a value larger than 0, otherwise the output vector size is the same as the number of connected inputs.

Scheduler

This element can send events at specified time of day or week.

 

Times are configured in an array. Each field in the time array corresponds to output. For example, first output is activated at the time defined in the first field.

Selector

Select one or many outputs. If an output N is selected, then its state is set to TRUE. In the same time the output that was selected previously is set to 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 a 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.

·       RESEND - current value is resent to output unmodified for each input sample.

 

Sequencer

This element sends to output values of a sequence. To send a value, sequencer must be triggered (which means it must receive a triggering sample to 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 – configurable sequence values

·       SUM – each next output value is a sum of previously sent value and next (defined in sequence) value

·       RANDOM ANY – any random value is sent from all sequence values

·       RANDOM ALL – like the above, but random value is taken from not-yet-sent values until all sequence values are sent. The RANDOM_ANY function should work statistically the same (in a long time), the option here assures and all values in the sequence are sent before next one is started.

 

Output pipes:

·       Started – used with SEQUENCE, SUM and RANDOM_ALL – when a new sequence is started, it sends TRUE, and when it is finished (last value is sent) it sends FALSE.

SerialDevice

This element can be used on Linux/Unix machines to access serial port directly from a serial device (instead of SerialPort).

 

Note: This element is currently not available.

 

SerialPort

This element can be used to access a serial port (real or virtual).

Important Note: there are other serial port elements which provide the same functionality and can be used in place of this element in some cases. Whenever a “SerialPort” is mentioned, it means also any other serial port element like FTDISerialPort or SerialDevice.

 

Properties:

·       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 accessible.

·       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 for serial port access is 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 when processing is started.


Advanced properties:

·       COM name – some serial ports can be detected by their names. But not all. So this option needs to be tested with a particular serial device driver.

·       COM name modeonly effective when the above COM name is set:

o   Select if available - current COM port is switched automatically to the one selected by COM name. If not found, currently selected port is used.

o   Show error if not found – if COM name port is not found – show error dialog.

·       Detect data spikes – if selected, then BioEra will detect excessive amounts of data arriving to the serial port. This option should not be used in most cases and is not recommended unless necessary.

·       Custom baud – can be used to select any baud (useful if this number is not listed in the main Baud property).

 

 

SetInfo

This element provides size of the connected Set element, e.g. ScalarSet, TextSet and others.

SetIterator

This element can iterate over set values (any Set element).

 

Fields:

·       Trigger action:

o   Send all – request sending all Set values at once

o   Send next – request sending the next value in cycle - first value is sent again if last value was sent previously

o   Send next skip after last – very similar to the above option, but one trigger which comes after last value was just sent has no effect. Next trigger continues with the first value.

o   Send next once – like Sent next option, but input trigger has no effect after last value was sent (until element restart).

Settings

This element provides access to Design Settings and System Settings programmatically from the design.

SimulationSource

This element is used primarily for debugging and experimenting. It can generate real time noise or sine waves of a configurable amplitude, frequency, phase shift, sample rate etc. This element is preferred for all snippets and examples.

 

Slider

This UI element outputs a single value which can be modified either interactively on the slider chart or by incoming input values.


Fields:

·       Maximum value – output value will never be above this.

·       Minimum value – output value will never be below this.

·       Initial value

·       Step – smallest increment value. Not used if set to 0.

·       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.

·       Slider image – if set, then the default slider knob is replaced with this image

 

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.

 

Advanced properties:

·       Resize slider image – if the Slider image property is set, then this image will be rescaled at the same ratio as the main windows this chart is placed on.

 

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 can switch between many input source streams, e.g. from a Device or from a Simulator. Because sources may have different signal characteristics, then the selection is only possible via PropertySetter. Unless signal characteristics are the same, it is also necessary to reinitialize entire design after that from PropertySetter (highly recommended option is “ReinitAll”).

 

The blue output “Action” pipe can be used to control which source elements are started or stopped. It uses and sets/resets “Do not start” advanced property on connected (from this blue pipe) source elements to do that. Design restart (or reinitAll) is required to take effect of such change.

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 is used to read data from an SQL database (saved earlier 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

This element is used to save real time data into 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 a 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 element can generate various signals used typically for testing and debugging.
 

Fields:

·       Frequency array [Hz] - contains array of simulated signal frequency.

·       Amplitude array [uV] – contains array of amplitudes corresponding with the above signals.

·       Signal range [uV] – combined output signal range

·       Digital range – corresponding combined output signal range for scalar type.

·       Phase shift[s] – all signals are shifted by this time interval

·       Noise level [uV] –random noise amplitude.

·       Output sample rate [Hz] – output sample rate.

·       Impulse time – signals are generated for this time period and then the element is stopped

·       Physical unit – physical unit for the signals

·       Real time – if selected then system clock is used to measure the time and corresponding number of output samples (rate). If not set, then data is sent much faster (can be used for some special testing).

State

This element is used to pass a value only if it has changed. If the same value arrives to input, then it is dropped.

 

SteppedSoundFileReader

Read sounds from several files. The file to read from is selected by the input index 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:

 

·       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.

·       Output buffer [s] – number of samples sent to output at once is never more than this value (unless this element is connected to PCMAudioPlayer with a blue line).

·       Cache files – this option is useful if the same sound file is played often, especially if it is compressed (mp3), and the decompression takes longer 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 than 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.

 

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 audio requestor element through Event input (currently only PCMAudioPlayer can be an audio requestor). If any audio requestor is connected, then it takes control over the samples being sent, otherwise number of samples sent is calculated by the size of buffers.

Note: It is recommended to this element together with PCMAudioPlayer via its blue output.

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 output vector

·       Rate – output rate (based on the input rate)

·       Input size – this value is only active if greater than 0. In such case the output vector is filled with data only of this length. The rest is filled with 0 value. This value must not be greater than Size.

Function:

·       FRAME – no windowing function. Take N input samples (defined either in Size or Input size option), create vector and send it to output.

·       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 windowing 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 minimum index is 0).

·       Size – the size of the sub-vector, Size + Index must be lesser then the input vector size.

 

Synchronizer

This element can be useful when many (more than 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 number of samples to all connected outputs.

 

Mode:

·       EQUAL_INPUT_RATES – this mode assumes that all input channels are of the same rate, but may be shifted in time (in short term) across all channels (they must be evenly distributed within 1-2 seconds). In this mode extra data is kept in input buffers until it is matched with 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 extra data in other channels is dropped; insufficient data is filled with the last input value (for each channel) which is repeatedly sent out 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.

·       FIRST FULL, OTHERS LAST – output rate is the same as the rate of the first input. All data arriving to the first input is sent out to the first output. All other channel data is filled with the last input value (if more than one sample arrives to at the same time, only last is taken and sent out).

 

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

This element can be triggered to execute an available 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

This element displays text.

 

See the description of its properties in NumericDisplay.

TextFileReader

Read text from an ascii file and send it to output as a text object.

 

This element re-reads the data (and sends it to output) at each start and at each input event.

TextFileWriter

This element saves input text object in a text file.

TextMapper

Convert one set of text into another set.

If the input text object is equal to any text defined in the Key list, then corresponding Value (at the same position/index as the Key) is sent to output.

TextStreamToScalars

This element works similar to ExcelFileReader, it can parse multichannel data encoded as text and sends out separate channels.

 

This example contains 2 packets (lines) and 3 channels. Lines are separated by a new line character and channels by commas (there must be only one character separator):

 

12.34,2.0,1.5

1.34,1.3,4.2

 

 

The input can be connected to an element which delivers text as a byte stream (each byte value in range 0 to 255). For example SerialPort, NetworkServer, NetworkClient or RawFileReader.

 

Properties

 

 

Note: The scalar version of this element can only parse integer numbers. Use Float version to receive and parse float numbers.

 

Important Note: If using this element to receive data from Arduino makes sure you do not send double end-of-line characters. For example the Println function sends two characters (\r and \n). In order to send out only one end-of-line character, use Print(“\n”) function.

 

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 – concatenate variable at the end of the text

·       Var + TEXT – concatenate 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’.

Options:

·       Var contains special characters – if this is selected, then special characters entered as \r \n \t and \s are replaced with ‘line feed’, ‘new line’, ‘tab’ or ‘space’ characters consecutively.

TextSet

This element contains set of text labels that can be selected by input index value.

 

TextValue

This element can hold and output a single text value. The last value is remembered and saved with the design.

 

TextVectorSet

Similar to TextSet but text values are configured and sent as vectors. Vector fields are separated by ‘|’, vector fields are separated by ‘,’.

.

Threshold

This element divides samples that are above or below certain value.

Functions:

·       = – equal to threshold

·       <> – different then threshold

·       > – greater than threshold

·       < – less than 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 is larger than threshold, otherwise it is FALSE.


Inputs:

·       In – input stream

·       Thr – the threshold value can be set dynamically here

 

Throughput

This element controls the maximum throughput. It is useful when receiving data from a source of uneven rate, with bursts of large data chunks which would normally cause buffer overflow.

 

It buffers all input data and sends to output maximum number of samples which downstream elements (only those directly connected) can receive without input buffer overflow.

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.

 

TimeIntervalResampler

This element can resample data stream which contains millisecond samples (for example coming out of the RR output of RRDetector) into equidistant stream. It uses a method similar to one described in this article.

TimeIntervalResampler2

This element can resample data stream which contains millisecond samples (for example coming out of the RR output of RRDetector) into equidistant stream. It uses a linear interpolation to calculate mid-sample values.

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.

TimeSource

This element provides various time values scaled in seconds or milliseconds. Time scaled in seconds and milliseconds can be displayed directly with NumericDisplay.

Fields:

·       FROM_START – time measured since the start (or restart) of the main design

·       FROM_RESUME – time measured since the last resume of the main design

·       SESSION_TIME – total session time since the start, the session time doesn’t include pauses (time between pause and resume)

·       FROM_LAST – time from the last loop, only milliseconds option makes sense here

·       FROM_ELEMENT_START - time since the start (or restart) of this element

·       DAY_TIME - time since the last midnight

ToggleButton

This element works very similar to Button, but it remembers current (pressed or released) state after.

 

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 mouse clicks).

 

Toolbar

This is a 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

 

Note: this element is not available on Android.

Topograph

This element shows topography map of points located on flat 2-dimensional surface.

 

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).

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

Vector2DDisplay

This element displays vector history over a time period on a 2D chart. Amplitude range is projected to a color range.


Fields:

·       Time period [s] – vectors are displayed over this time period.

·       Vector to chart interpolation – this interpolation is additional to the interpolation described below. If selected, then each vector is interpolated vertically along full chart height.

·       Color gradient – color is used to show amplitude. If this field is set, then it must point to a file with a color gradient. If the color gradient file exists, then other options about colors are ignored.

·       Colors – if there is no color gradient file defined above, then this option can be used to define color range manually using individual colors.

·       Interpolation – if set, then each pixel is interpolated according to the selected function.

·       Interpolation pixel count – when the Interpolation option is set, then this many neighbor pixels are used to interpolate.

·       Display mode – several options to decide how the chart should display.

 

Vector2Transform

Synchronize input vectors.


Fields:

·       SYNCHRONIZE – passes vectors to output only when they are available on both inputs.

 

Vector3DDisplay

Present graphics on 3D chart. Vector components are along X axis, time is along Y axis and amplitude along on Z axis.


Fields:

·       Depth (points) – define 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

Transform is 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.

 

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:

·       Amplitude range – amplitude range defined in physical units

·       Show bars – select to show bars or a line.

·       Bar color – define display colors. See color format.

·       Color range – define physical ranges for above colors. Each range value is matched with one color above. If the number of colors is larger than the number of ranges, then the first unmatched color is used for bars larger than the last range (if any).

·       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 see the ExpressionEvaluator element description.

VectorInstantTransform

Select a function performed on a single vector. Output rate is always the same as input rate, functions are performed on one vector only (as oppose to VectorTimeTransform).

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 neighbor 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.

VectorMixer

This element works like Mixer but uses input vectors.

VectorMultiDisplay

Display several vectors on one chart.

Fields:

·       Amplitude range – amplitude range defined in physical units

·       Display mode:

o   Stacked filled lines – each next vector is displayed on top of the previous vector.

o   Stacked filled bars – each next vector is displayed on top of the previous vector.

o   Lines – all vectors are shown on the same plane and scale as lines.

o   Stacked lines – all vectors are shown on the same plane and scale but the area below each line is filled. This option may be more useful when colors are set with some transparency.

VectorProperty

This element contains a single vector. Vector value on the input replaces it. The most important function of this element is to provide a constant vector which is used for initialization during start (the value is sent once at 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.

VectorSTransform

This element can apply a single scalar value on the input vector according to the 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 element can do various transformations on a vector. The output rate is the same as input rate, however functions are performed on many samples defined in Samples number field (as oppose to VectorInstantTransform, 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 on a period of time. Processing is hold until number of samples is available.

·       MAX - each vector field is set to max value on a period of time. Processing is hold until number of samples is available.

·       MIN - each vector field is set to min value on a period of time. Processing is hold until number of samples is available.

VectorToComplex

This element converts a vector to a complex vector according to the chosen function.

 

Note: This element and operations on complex values are not supported any more.

 

VectorToMatrixRows

This element converts a single vector to one or more rows in the output matrix.


Properties:

·       Matrix height – number of rows created for each input vector

·       Row width interpolation – define how to interpolate the size of data in a row (from minimum to maximum row width)

·       Windowing function – windowing function applied to each row. Only for the part filled with input data, not with Margin value.

·       Margin value – value appended to the real data in each row

·       Minimum row width – define how much real input data is put into the shortest row (the rest filled with Margin value). All other row sizes are interpolated between this size and Maximum row width (which is the same as the input vector length).

 

The typical use of this element is to create several vectors (rows) for FFT transform, so that each FFT trace will have different response time (faster or slower).

 

See MatrixRowDisplay for an example snippet.

 

VectorToScalar

This element converts a vector to a scalar value according to selected function. Output rate is the same as input rate.

Function:

·       AVERAGE – calculate average of all vector values in the physical vector range (not digital)

·       RMS – Root Mean Square of all vector fields: Sqrt(sum(Sn^2) / N) over physical vector range (not digital)

·       MAGNITUDE – Sqrt(sum(Sn^2))

·       MAX – take the maximum from all vector values

·       MIN – take the minimum from all vector values

·       MIDDLE_POWER – calculate index in the vector, so that the sum of values below the index is closest to the sum of values above the index.

·       MIDDLE_POWER_2 – calculate index in the vector, so that the sum of 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)

·       DOMINANT_INDEX – index of the maximum value in the vector

·       DIGITAL_AVERAGE – the average is performed on digital values, not physical values like in AVERAGE function.

·       DIGITAL_RMS - the RMS calculation is performed digital values, not physical values like in RMS function.

·       AVERAGE_RS – Mean Root of Squares: Sqrt(sum(Sn^2))/N

·       STREAM – all fields of the vector are sent to the output. The output rate in that case is input_rate * vector_size.

·       DOMINANT_VALUE vector range value at the dominant index. For example, if the vector is from 1Hz to 11Hz, it has 10 fields, and the dominant index is 3, then the output will be 4Hz.

·       SELECTED_INDEX – this is the vector value at the selected index (selected index is received from input scalar pipe)

·       SELECTED_INDEX_SYNC – like SELECTED_INDEX, but inputs are synchronized

·       SUM_OF_SQUARES – sum(Sn^2)

·       MIDDLE_POWER_VALUE - vector range value at the MIDDLE_POWER index. This option can be used to calculate Median Frequency, or MDF.

·       MIDDLE_POWER_2_VALUE - vector range value at the MIDDLE_POWER_2 index

·       MIN_INDEX – index of MIN value

·       WEIGHTED_VALUE - vector range value is calculated using the input vector as weight vector. First the input vector is normalized (so that sum of all fields is 1.0). Then those normalized values are multiplied by values from the VectorMin to VectorMax range and summed. For example, if the input vector is [0.1, 0.2, 0.7], then the output value is 0.1*VectorMin+0.2*(VectorMin + VectorMax)/2+0.7*VectorMax. This option can be used to calculate Mean Frequency (MNF) or Spectral Centroid (center of mass).

 

Note: Vector range is a value between VectorMin and VectorMax (defined in signal properties). It is NOT a value of the vector field.

 

VectorValue

This element contains a vector value that can be used as a variable (similar to ScalarValue) which can be modified by input vectors or input scalar values.

 

Fields:

·       Vector value initial vector

·       Output vector size – if greater than 0 then it sets the output vector size, otherwise the Vector value defines output size. If this size is greater than Vector value size, then all remaining fields are filled with Fill value, if the size is smaller, then the current output vector is truncated.

·       Fill value used when the Output vector size is greater than the size of the Vector value.

·       Input vector function – operation performed on current vector value for each input vector

·       Input vector min value – minimum value for each field of the vector, only executed by Input vector function (and not Input value function)

·       Input vector max value – maximum value for each field in vector, only executed by Input vector function (and not Input value function)

·       Send trigger – trigger options for Send input

·       Input value function – operation to be performed for each incoming input scalar value.

 

 

Functions:

·       SUM MODULO – input vector is added to the current vector modulo (inside Min/Max range).

·       SUM – input vector is added to the current vector. Each vector field value remains inside the Min/Max range.

·       SET VALUE – input vector replaces current vector. Each vector field value remains within the Min/Max range.

 

Inputs:

·       Invector input, each incoming vector executes operation selected by Input vector function

·       Value – scalar input, each incoming value executes operation selected by Input value function

·       Send trigger to send out current vector value

 

VideoFilePlayer

Play a video file at a controlled rate, direction (forward or backward) time position and sound volume.

 

Note: this element needs codecs to play videos. By default it only uses codecs which are available in Windows system. Additional codecs can be installed with k-lite codec pack. Free download from here. If your video doesn’t play, this is a recommended solution.

 

Fields:

·       Video file – path to the video file.

·       Play in loop if set, then at the end video will revert to beginning and start play again automatically.

·       Keep original size – video will be shown without any rescaling at start.

·       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] set volume.

·       Brightness [0-100] set brightness, if this input is connected it may affect playback of some video formats, see note below.

·       Contrast [0-100] set contrast, if this input is connected it may affect playback of some video formats, see note below.

·       Rate – set the rate of the video playback, rate can be positive or negative. Input is a percent, 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 of the movie rounded to full seconds.

·       Total time – total time of the movie, in seconds, sent only once at the start of the video.

·       Playing – sends TRUE at start and FALSE when current video stops playing.

 

 

Note: some videos may not play well with this element if they are encoded with a format which can’t be decoded by Windows. Starting from version 4.103 we recommend using WEBM video format for the best reliability. The WEBM codec has a special support in BioEra and it comes with the full BioEra installer. If you have a WEBM file which doesn’t play in BioEra, please contact BioEra support.

 

Note: brightness control may not always work well or at all, not even with a WEBM video file. Alternate (and in some ways better) method is to use ChartTransparency for brightness (color transparency) control.

 

VideoScreenImageSource

This element provides a stream of images captured from screen at a defined rectangle.

VilistusDevice

Driver element for Vilistus EEG device.

 

Fields:

·       Request sample rate – the default sample rate is set to 256sps. If this value is set to a positive value, then it is used to set the sample rate on the device. Please note, only some other rates are allowed, like 512 or 1024.

·       Mode

§  EEG – signal range is set from -512 to +512

§  RAW – signal range is set from 0 to 1023.

 

 

Note: it may be necessary to set the serial port number for the Bluetooth Vilistus devices. The USB devices work well with auto detection, but it is also better to set the port if it is known.

VLCPlayer

This element can control VLC video/DVD player if it is installed.

 

Note: this element is not supported at this moment. Use VideoFilePlayer or DVDPlayer elements.

WaveRider

Driver element for WaveRider 2cx (2 channels) and WaveRider Pro (4 channels) devices (www.mindpeak.com).

 

Input of this element usually should be connected to a SerialPort element.


Settings:

·       Device – select between WaveRider 2cx and WaveRider Pro

·       EEG Range – each channel has configurable range (sensitivity)

 

WiiBalanceBoard

Driver element for the Wii Balance Board device.

 

Pairing – the device needs to be paired before BioEra can connect with it. In order to do this, press the synchronization button on the device, then select Add Bluetooth device, click on Nintendo RVL-WBC-01 and pair. There is no pin, just leave the field empty. You should see Nintendo RVL-WBC-01 connected after that.

 

Note 1: pairing needs to be done each time the device is powered on.

 

Note 2: pairing sometimes fails the first time, do it again when that happens.

 

WindowInteractor

This element can change or retrieve properties or states of a Window (Frame or Dialog) of a chart which was put in a separate Frame or Dialog (option in chart properties).

 

Properties:

·       Resizable – set the target window be resizable or not.

·       Always on top target window will be shown on top of other windows (unless they also use the same flag).

·       Resize constraints set maximum size (width and height) of the target window.

·       Center to runtime window – target windows will be located at the center of the Runtime window.

·       Center to the screen – target windows will be located at the center of the screen.

·       Undecorated – and undecorated window has no borders or options to resize or move.

·       Width – set the horizontal size of the target window.

·       Height – set the vertical size of the target window.

·       Location– set the location of the target window.

 

 

Inputs:

·       Request focus – focus is set on the target window when this input receives TRUE

 

Outputs:

·       Elem – this output needs to be connected to the element which has a chart put in a separate Frame or Dialog we want to control

·       Resized – sends out TRUE when the size of the window has changed

·       Visible - sends out TRUE when the target window was made visible (from hidden)

·       Moved - sends out TRUE when the location of the window has changed

·       Window – sends out java window object which can be used in elements like ObjectExpressionEvaluator with java code

·       Minimized - sends out TRUE when the target window has been minimized

·       Focused - sends out TRUE when the target window has been focused

·       Closing - sends out TRUE when the “X” button on target window was pressed

 

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 (this may be out of date for new recent Windows version):

 

http://www.microsoft.com/downloads/details.aspx?familyid=DE1491AC-0AB6-4990-943D-627E6ADE9FCB&displaylang=en

 

Note: this element is not supported at this moment. Use DVDPlayer instead.

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.

 

Comparing 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

This element saves data stream in a 16bit WAV (audio) file. It is usually used for saving audio files. But can also be used to save bio signals for further analysis in audio software (like Audacity or SoundForge).

XDFFileReader

This element can read from a multi-channel file stored in XDF (Extended Data Format) file.

For details about element properties, look at EDFFileReader.

 

The XDF file format is not as popular as EDF, but its format is open, see the XDFFileWriter for details.

 

XDF reader can also retrieve text annotations. It can be done with PropertyGetter and Annotation interactive property.

XDFFileWriter

This element saves data in a multi-channel XDF (Extended Data Format) file.

 

For info about element properties, look at EDFFileWriter.

 

Additional option (comparing to EDF writer) is ability to save text annotations. It can be done with PropertySetter and Annotation interactive property. There is a default limit of 50 characters per second, it can be changed using advanced property Annotation characters per second. If there is no room in current slot (each slot’s size is 1 second or 50 default characters), then the annotation is postponed and saved in the next slot. If the size of the text is larger than the size of the slot, then it is dropped (with an error message on console). Each annotation is saved with the time it occurred (time can be retrieved using PropertyGetter and interactive property Annotation time), which may not be exactly the same as the time it was sent to PropertySetter’s output if it had to be postponed to a next slot.

 

XDF file format

The format of the file is almost identical to the EDF+ file format.

 

The differences comparing to EDF+ format:

1.  One data sample is stored as 32bit float number (EDF+ is 16bit integer); the format of the float number is described here.

2.  The file header is set to XDF+C (EDF+ uses similar EDF+C string), only continuous signals are stored here.

3.  The digital range values (max and min) are (sometimes) saved in encoded form WHEN the range is too large for the EDF field to store (maximum is 8 characters). The encoded form starts with letter ‘x’, followed by digital number encoded in the 36 radix. For example, to decode that in a java program use this expression: Integer.parseInt(value.substring(1), Character.MAX_RADIX), the substring removes the first ‘x’ character, and then decodes the number. If there is no heading ‘x’, then this is a normal digital number compatible with EDF+ format

4.  The Annotation channel size specified in the header is not compliant with the EDF+ spec. It contains the number of characters (not the number of samples). So for example number 15 in the header means 15 characters (and not 60 characters).

 

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. That allows seeing the calculated (by other elements) results from this point immediately.

·       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 at 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 save text data in XML file. The previous content of this file is preserved and unmodified (unless it is invalid and can't be parsed). Only the value under Tag path is modified. 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 a different tag). The root xml section is "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, Android, iOS).

 

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" />

 

XmlNetServerEvent

This element can be used with XmlNetServer or HtmlPlayer to send text events.

 

Format of each event:

 

<BioEraEvent name="EventName" value="EventValue" />


Support

Reports with bugs or requests for new features should be posted on forum. Please note, this manual is in many ways incomplete, options are being added to BioEra almost every day. If something is not clear or not explained ask questions on forum.

Diagnostic

When something looks 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. If not, feel free to 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 creates diagnostic.zip file in the main BioEra folder,
  2. Send the diagnostic.zip file by email along with a description how to reproduce it.

Feedback and comments are welcome

Any feedback 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

Copyright notice

 

Copyright © PROATECH LLC (http://www.proatech.com). All rights reserved.

 

__ _ _ ­_ ­_ _