BioEra

 

Updated on September 8, 2007. The most actual version of this manual can be accessed here.

 

Introduction. 6

Using BioEra. 6

On PDA. 6

Installation. 7

Biofeedback device. 7

MIDI 7

Hardware requirements 7

Upgrades 8

Supported biofeedback devices 8

User interface. 8

Designer 8

Runtime. 9

Example bio-designs 9

Architecture. 9

Why Java. 9

Java performance. 9

Dependency. 10

Portability. 10

Run modes 10

Create bio-design. 11

Pipes 11

Vector streams 11

Event inputs/outputs 12

Filters 12

Compare filters with FFT. 12

Controls 12

Interactors 12

Signal parameters on element level 13

System settings 13

Design settings 14

Element status 15

Scales 15

Amplitude. 15

Time. 16

Processing and initialization order 16

Graphics and performance. 16

Access to serial port 17

Mac OS X. 17

Command line options 17

Colors 17

Averaging functions 17

Tools 18

Video. 18

Integers versus float values 18

Border 19

Elements 19

ActivityDetector 19

BarDisplay. 19

BrainMaster 19

Button. 20

CMixer 20

ColorSet 20

ComboToolbarControl 20

ComplexFFTTransform. 21

ComplexToVector 21

ComplexTransform. 21

Counter 21

CustomInteractor 21

DayTimer 21

DayTimeCoincidence. 21

DebuggerElement 22

Decimator 22

Delay. 22

Demultiplexer 22

DesignInteractor 22

DeviceSet 22

DialogText 23

DVDPlayer 23

EDFFileReader 24

EDFFileWriter 24

EEGNeuroAmp. 25

ElementArray. 25

ElementInteractor 26

ExcelFileReader 26

ExcelFileWriter 26

ExpressionEvaluator 27

ExternalSource. 27

Evaluator 28

FFTTransform. 28

FFT2Transform. 29

FileStorageSource. 29

FileStorageWriter 30

Filter 30

FlashPlayer 30

Formatter 31

GainInteractor 31

Generator 31

GlobalVariable. 32

HotSpotMouseSensor 32

IconToolbarControl 33

ImageDisplay. 33

ImageMixer 33

ImageSequencer 33

ImageToMatrix. 34

ImageTransform. 34

InteractiveScalarSource. 34

Iterator 34

JandJ. 34

KeyboardAdvSource. 34

KeyboardSource. 35

KeyInteractor 35

KeyAdvSelector 35

KeySelector 36

LogicalMixer 36

LogicalMixerM. 36

MediaPlayer 36

MenuItemControl 36

MenuListControl 37

MIDI 37

Mixer 38

ModEEG_P2. 38

ModEEG_P3. 38

ModEEG_v21. 38

MouseInteractor 39

Multiplexer 39

NestedDesign. 39

NestedInputs 39

NestedOutputs 40

NetworkClient 40

NetworkServer 40

Neurobit 40

NeuroServerSource. 41

NeuroServerWriter 41

Notice. 41

NumericDisplay. 41

OrbitalDisplay. 41

Oscilloscope. 42

OSInfo. 43

OSInteractor 43

PatternRunner 44

PatternTrainer 44

PCMAudioPlayer 45

PCMAudioSource. 45

PET. 45

PianoKeyboard. 46

Pocket-EEG/HEG. 46

Pendant mode. 46

Polygraph. 47

ProgressBarDisplay. 47

PropertyGetter 47

PropertySetter 47

RangeFilter 48

RangeMapper 49

RateLimiter 49

RawFileReader 49

RawFileWriter 49

Resampler 49

RouteGame. 49

QPET. 50

ScalarBuffer 51

ScalarCrossTimeRatio. 51

ScalarCrossTransform. 51

ScalarInstantTransform. 52

ScalarSet 52

ScalarSingleMap. 52

ScalarTimeTransform. 52

ScalarToLogical 53

ScalarToText 53

ScalarsToVector 53

Selector 54

ScalarValue. 54

Sequencer 54

SerialDevice. 55

SerialPort 55

SetSignalParameters 55

Slider 56

SoundFileReader 56

Status 56

StatusML. 56

SimulationSource. 56

SteppedSoundFileReader 57

SteppedSoundPlayer 57

StreamToVector 58

SubVector 58

Switch. 58

SystemEventSource. 58

SystemInteractor 59

TextDisplay. 59

TextTransform. 59

TextSet 60

TextToScalar 60

Threshold. 60

TimeInterval 60

Timer 61

TimeRangeFilter 61

TimeSource. 61

ToggleButton. 61

Valve. 61

Vector2Transform. 62

Vector3DDisplay. 62

VectorBuffer 62

VectorCrossTransform. 62

VectorConstant 63

VectorConcatenator 63

VectorDisplay. 63

VectorInstantTransform. 63

VectorLineDisplay. 64

VectorMixer 64

VectorStorageSource. 64

VectorStorageWriter 64

VectorSTransform. 64

VectorTimeTransform. 64

VectorToComplex. 65

VectorToScalar 65

VectorValue. 65

VideoCameraImageSource. 65

VideoCameraRecorder 66

VideoFileImageSource. 66

VideoFileImageWriter 66

VideoFilePlayer 66

VideoScreenImageSource. 66

VLCPlayer 67

XmlFileReader 67

XmlNetController 67

XmlNetServer 68

Support 68

Debugging and problems 68

Troubleshooting. 69

Feedback and comment is welcome. 69

New versions 69

Related links 69

License. 69

Copyright notice. 69

 

 

Introduction

 

BioEra is a visual designer for analyzing bio-signals in real time. It is usually used together with bio-signal device which has ability to send data to a computer.

 

BioEra provides mechanisms to create designs. A design defines how the signal flows from input (e.g. biofeedback device) to output (e.g. visual or sound feedback). The signal flow can be modified using built-in objects (elements). There are hundreds built-in elements and functions that can be used to modify the signal flow.

 

BioEra is a tool which allows virtually any type of processing flow. To create a design no programming is required, only understanding of the process and requirements.

 

Using BioEra

Usually BioEra works as a real time processor of digital signals coming from biofeedback device. It is also possible to try it with archive files, Simulator or connecting it to a remote device via network (BioEra network elements). To read BioEra’s archive files (.bpa) use FileStorageSource element. To read EDF file EDFFileReader is most suitable.

 

On PDA

Initially BioEra was designed to work on PDA, several successful tests with FFT processing (see picture) were done at that time. PDA is a great opportunity for portable biofeedback, handheld devices are already very powerful (comparable to PC from before a few years) and they will be faster. Portability is great asset.

 

Since version 1.0 BioEra has been used and run almost only on PC (Windows and Linux).

 

Version 1.0.7 has been successfully installed and run on PDA. See picture1 and picture2.

 

Version 1.1 has been fully integrated for PDA and presented on Winter Brain conference working with PET device.

 

Since the version 1.2, BioEra works very well on PocketPC PDA.

 

PDA version has not been yet released as commercial product.

Installation

 

BioEra installer is very easy to use. BioEra is ready to run after installation with preconfigured settings.

 

Biofeedback device

 

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

 

DVD

DVD decoder must be installed in system before BioEra’s DVD can be played. Generally any DVD decoder which works with Windows Media Player should be fine.

 

We support only those 2 decoders:

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

2.    Cyberlink DVD – comes with Cyberlink DVD player, can be purchased and installed 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 should work too) are listed here.

MIDI

Base version of BioEra contains MIDI support with base instrument set. To improve the quality of MIDI sounds it is possible to download deluxe sound bank from here. It contains about 400 instruments of the best sound quality. It can be installed either by following the instructions (coming with the installation file) or simply by unzipping and copying the soundbank.gm file into main bioera folder.

Hardware requirements

Generally BioEra is platform independent; it works on any machine with Java Virtual Machine (JVM). It has been confirmed to successfully run on following operating systems:

·         Windows (XP),

·         UNIX (Sun Solaris),

·         Linux (RedHat, Debian),

·         MAC OS X

·         PDA linux.

·         PDA Windows Mobile 2003 - PocketPC

 

Since BioEra is supposed to work on PDA (Personal Digital Assistant) with limited resources therefore it requires not much processing power. I would guess that any machine that runs java 1.4 should be ok. Pentium II with 64M RAM is minimum requirement. The faster the machine the smoother processing will be, especially with graphic display.

 

BioEra was developed and tested mostly on Windows XP machine with P4 2.4GHz processor and 1GB RAM. It has been also run on PDA Linux (www.handhelds.com); here and here are older pictures of my PDA showing real time FFT processing of the EEG signal. Here is BioEra 1.0.7 on PDA.

 

Since version 1.9 BioEra is being released only for Windows XP and Windows Vista platforms.

Upgrades

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

Supported biofeedback devices

BioEra has built-in support for:

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

·         Pendant EEG pocket-neurobics.com

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

·         Neurobit – EEG device http://www.neurobitsystems.com

·         NeuroAmp – EEG device http://www.eeginfo.com

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

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

·         ModularEEG EEG device openeeg.sourceforge.net.

·         BrainMaster EEG www.brainmaster.com

 

Here is information how to add new device to BioEra.

User interface

The main effort was put on features and flexibility. In the default mode there are two windows: Designer and Runtime. Designer window serves as a design editor. Runtime window(s) present results. They can run both in the same time or individually. It is possible to have 2 Runtime windows.

Designer

Designs are created and edited with mouse and keyboard.

 

Brief description:

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

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

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

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

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

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

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

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

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

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

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

 

Runtime

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

Runtime window has 2 modes: View or Edit. Either mode can be selected in designer window’s menu. The Edit mode is for setting layout of the display charts. The View mode is set by default when BioEra starts.

Example bio-designs

A few examples are included with BioEra to help with fast start and use for simple trainings. To load any of them click on Menu System->LoadDesign and navigate to design\examples folder. Example names are self explanatory, some of them contain one reward filter and others one reward and one inhibit filters. They demonstrate various types of feedback including Video, Continuous tone, Binaural Beats, Midi and simple PacMan game.

 

Architecture

Why Java

Java has been selected as the primary development tool for BioEra on all platforms because:

 

·         It is proven and reliable technology, used for instance by NASA on Mars :-).

·         It is the easiest and the most popular solution for portability. We want BioEra running on PDA, Mac and Linux.

·         Java development is very effective and allows rapid improvements.

·         Although the performance of Java can be sometimes lower then C language (see performance chapter below), with JIT (Just in Time) virtual machine, the speed is reasonable in most cases. External C libraries (like numerical recipes) can be reused and included easily with JNI interface.

·         If properly done, then the same code does run on many different systems without any modifications. This can depend heavily on JVM (Java Virtual Machine) chosen, it is recommended to use Sun’s JVM whenever possible. Although they are not always the fastest, they provide relatively consistent environment.

·         Java is perfect for elegant object oriented development that can be easily extended.

 

Java performance

There are many false beliefs about “bad” java performance. Although that was the case with first versions of Java, it has improved dramatically in recent versions with JIT compilers (which compile to native code on the fly). Due to effective optimizations it can be now sometimes faster then native C program. More research comments and results:

·         http://www.idiom.com/~zilla/Computer/javaCbenchmark.html

·         http://www.kano.net/javabench/

·         http://www.osnews.com/story.php?news_id=5602&page=3

·         http://www.aceshardware.com/read.jsp?id=153

 

Dependency

Some functionality in BioEra depends on external libraries:

·         On Windows operating system, an implementation of java communication API is required to access serial port. Sun’s implementation (http://java.sun.com/products/javacomm/) is included together with BioEra installation package. BioEra handles driver from http://www.rxtx.org/.

·         3D graphics is available only with using system dependent libraries. See the installation process.

·         Digital filters are implemented with using native (c-built) fidlib library developed by Jim Peters. Library file for Windows OS (DLL) is attached with default BioEra installation; other libraries (for Linux, Mac etc) need to be recompiled from sources provided fidlib site.
BioEra searches for library “fidlib”, and this is system dependent. It means, that for example on Windows it will be fidlib.dll file, but on linux it will be libfidlib.so file, and so on.

·         Media playback and recording (video and/or audio) is possible with JMF. More details.

Portability

BioEra is supposed to work on various operating systems, including those with limited resources like PDAs and cell phones eventually. That is one of the reasons why Java was chosen as primary language, extensions in C language are possible and easy for performance increase whenever required.

·         Visual runtime part of BioEra is done with pure AWT since it is fast and most portable. Visual designer was originally done in Swing, but since version 1.5 was fully converted to AWT.

·         Whenever possible processing operations are done with using only integer variables (no floats or doubles), to improve efficiency without coprocessor.

·         Threads in custom elements are not recommended.

 

BioEra was tested mostly on Windows XP; many tests were on PocketPC, some on RedHat Linux and Mac. It should run without any issues on any brand Linux or UNIX system and on any machine with Sun compatible java.

Run modes

There are 4 main modes how BioEra can be executed:

1.    Full mode, both visual designer and runtime(s) are shown.

2.    Visual Runtime mode, only runtime window is shown. Processing is automatically started when the program starts.

3.    Command line runtime mode, no graphics is displayed. All components that use graphics are not being processed at all. Processing is automatically started when the program starts. This option can be useful when the graphics is no available, or simply to increase performance.

4.    Designer Only mode. This is rarely needed and makes sense on PDA or when Runtime window is not needed.

 

Usually design is created on standalone PC and then executed womewhere else, e.g. on devices like PDA. It is also possible to edit designs on PocketPC PDA since version 1.5.

 

Create bio-design

System can be used with one bio design at a time. Each design is stored in a single bpd (BioEra process design) file. The same design file is used for either of the three run modes. Basically it is assumed, that the design process is being done on standalone PC and execution process on any system.

Pipes

Pipes represent data flow stream channels. At this moment there are three main types of stream: scalar stream, vector stream and object stream. Scalar stream value (up to 32 bit) can be considered as a vector with just one element, but optimized for higher performance. Object stream can exchange any objects (also vectors), but objects are exchanged by reference (not by value like in other streams).

 

·         Logical pipe is based on scalar pipe (they can be connected each to other). The 0 value is FALSE, and everything else is TRUE. Also this pipe operates on logical state rather then logical stream. This means, that logical elements usually send only the final logical value based on all available input.

·         Complex pipe is compatible with vector pipe. Two complex vectors are stored in one: lower half part contains real fields and higher half part contains imaginary values. It is possible to use vector elements to process complex vectors.

·         Matrix pipe is compatible with vector stream. Each matrix is stored as a vector, and matrix parameters (width, height) are stored in MatrixSignalParameters.

 

There are input pipes and output pipes. One output pipe can be connected to many input pipes. Input pipe is usually connected to only one output pipe. If input is connected to many outputs then it works as multiplexer, but without known order. Each input pipe has internal buffer.

 

Vector streams

Aside from traditional data streaming, BioEra introduces new way of data processing on vectors in real time. It is possible to process vector stream and that option gives new possibilities comparing to traditional scalar data streams.

 

One example is filtering. In conventional applications, input stream is being filtered with various types of digital filters. For example to get the amplitude of alpha brainwave a bandwidth filter is applied on the signal and the amplitude of the filtered result is measured. In BioEra signal can be first converted to vector (for example with FFT or Wavelet transform or any other), and then all further processing can be done on vectors.

 

Traditional filtering is also supported in BioEra.

 

One-dimensional vector streams have good support in BioEra. Matrix streams (two-dimensional) were added in version 1.1 and have little support (they were used mostly for image processing).

Event inputs/outputs

Each element in BioEra has special input/output (in designer located at the bottom of the element) for special purposes. Usually they are connected to blue outputs/inputs of an element which allows such special functions e.g. PropertySetter.

 

Filters

BioEra supports traditional digital filters (as well as filtering based on FFT). At the moment, there is one available implementation of Fidlib native (C-built) filters. In future further support for filters may be added, possibly in java and maybe on integers.

 

As was stated before, filter functionality can be also substituted with FFT and vector processing.

Compare filters with FFT

 

Several comparisons between FFT filtering (on vectors) and traditional filters were done, and either method has its unique advantages. Traditional filters provide more options and don’t require windowing; the FFT filtering produces more information (whole frequency spectrum) at one time. The overall results are similar.

 

An example comparison between traditional Butterworth 4-th order filter and FFT filter (on vectors) is presented here. The input signal comes from quasi random generator. Both filters are set at 7 to 11Hz. Each outcome is averaged over one second. The bottom left chart shows JTF characteristics from FFT filter (green line) and Butterworth filter (green). Although they are not exactly the same, all trends and amplitudes are evidently very similar.

Controls

BioEra Pro contains controls - elements which lets the user to control and modify current processing settings. They are put on Runtime window into toolbar, menu etc.

·         ComboToolbarControl – combo component to select one value out of many.

·         IconToolbarControl – icon that can be used as button to trigger action on current design.

·         MenuList – automatically creates list of submenus, only one sub-menu can be chosen at a time.

·         MenuItemControl, MenuItemList – creates a menu field which can then be used to trigger an action on current design.

Interactors

BioEra Pro contains several interactors - elements for advanced operations and communication with system. Those are for advanced use.

 

·         KeyInteractor – keyboard activity can be generated here

·         MouseInteractor  - mouse activity (buttons and movement)

·         SystemInteractor – to stop, start, pause, save etc.

·         SystemEventSource – to receive various system events about start, stop, pause, resume, init, errors and others.

·         ElementIntractor – various operations on single element (activate, deactivate, process)

·         DesignInteractor – load another design

·         CustomInteractor – load/save file path

·         OSInfo – get the list of available drives or files in folder

·         OSInteractor – execute external application

 

Signal parameters on element level

Information about signal parameters like rate, range or number of bits is provided on element level (as oppose to global level). An element can retrieve these values from other element connected to one of its inputs. An element can also modify its own values if necessarily. For example if an FFT transform is being done 4 times per second, then it means that the output rate is 4, and this value is returned when rate value is requested.

System settings

It is available under Menu->System->SystemSettings. Defines set of properties used in system for all designs.

General:

·         Designer element box default width – not used in iconified designer.

·         Designer element box default height – not used in iconified designer.

·         Designer zoom [%] – the display zoom on the designer window. Only element size and location is impacted. All other attributes (window size, fonts etc.) remain the same.
Note: this option has an effect only on versions without icons in designer (when Design has icons field is cleared).

·         Designer grid – sets in pixels

·         Runtime grid - sets in pixels

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

·         Resizable Runtime window – whether to allow user to resize Runtime window.

·         Clear buffers on resume – this advanced option clears all data in buffers when processing is resumed.

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

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

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

·         Show designer element's input/output names – used in designer without icons, defines whether the names of the pipes should appear on elements.

·         Read only – design can’t be saved if this is selected.

·         Design backup – whenever there is a change in a design, previous version is saved in backup.bpd file. If something happens, it can be retrieved from this file.

 

Chart colors:

·         All chart colors of all elements can be set individually.

 

Color profile:

·         Many colors in BioEra can be set and customized here. More will come when required.

 

Iconified designer:

·         Provides more customization for icon sizes and fonts used to draw elements on designer.

 

Internet:

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

 

 

Design settings

For each design separate configuration can be set. It can be modified under Menu->System->DesignerSettings menu. Here is description about available options:

·         Sleep time [ms]: this is an advanced option. Elements in design are being processed in loop one after another. The sleep time defines how long to wait between consecutive loops. Overall processing will be faster (more loops in time) if this value is smaller. If this time is set to 0, then BioEra is started automatically in special – ultra fast mode, but other programs and applications in operating system may be slowed down. By default it is set to 10 milliseconds which is optimal in most cases.

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

·         Default size of scalar buffer: each element has input buffer for each input pipe. This value defines default buffer size for scalar input pipe (includes logical pipes). Some elements may not use this default value.
Note: Since version 1.5 in most elements scalar buffer length is automatically calculated in regard to the input rate (of the element connected to input) and field Input buffer length set is System Settings. This allows to process wide range of signal rate and optimal use of memory.

·         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 – if an exception (error) occurred during processing of an element, it is deactivated. If this option is set, then this element is reinitialized and started again automatically.

·         Reinitialize element if failed during processing – if this is set, then any element is automatically reinitialized after it failed during processing of data (for example due to network problems). Usually something like doesn’t occur, so this option cleared by default.

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

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

·         Password protection – (available only in commercial version) provides password protection for the design. Protected design can be edited only by someone who enters valid password; without password design can be run only.

·         Expiry date – this option is possible only in password protection mode. If password is not set, then it has no effect. After the expiry date the design can’t be run any more (unless valid password is entered).

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

·         Design URL – (Pro version only) gives option to automatically check for newer design and download it when never version is released on a remote network server. This option requires direct access to internet.

Element status

Each element can provide status (being updated dynamically during processing). Status is located at the bottom of the element icon (on designer). At the moment status is represented as set of letters with different colors. The red letter X is generic for all elements, it means, that the element has been deactivated and is not processing data. Other letters are defined specifically for each element and described with element information.

Scales

BioEra is supposed to support all kinds of signals (not only neurofeedback). So there are many different signals and it is not possible to have just one measurement unit. That is why BioEra supports several scales. For example for EEG devices operate on uV (micro-volts), for EMG it is mV (mili-volts) etc. BioEra can operate on amplitude range, frequency domain and time domain.

Amplitude

Signal amplitude can be scaled on many ways. Often data that comes from input device is scaled in micro-volts. There are also other scales: digital and percentage. There are 6 possible amplitude scales available in BioEra at this moment:

·         microvolt or uV – microvolt values starting from 0 and more

·         digital or digi – digital values starting from 0 and more

·         percent or % – percent values from 0 to 100

·         balanced microvolt or =uV – balanced microvolt values, any range is possible
(although usually they will be within max range)

·         balanced digital or =digi – balanced digital values, any range is possible
(although usually they will be within max range)

·         balanced percent or =% – balanced percent values from -100 to 100

 

Note: there will be other scales added gradually here, e.g. radians, decibels. Mili-volts etc.

Microvolt

At this moment most EEG devices operate on micro-volts (or fraction of microvolt). Other biofeedback devices (like EMG or ECG) may use values of higher amplitudes.

Digital

Digital scale represents direct integer values being received from biofeedback device. BioEra operated on 32 bit numbers.

Percent

Percent scale is relative to full range allowed in an element. Range is from -100% to +100% for numbers symmetrical to zero, or from 0 to 100% for positive numbers.

Decibels

Not implemented yet.

Custom units:
Sometimes input signal can be scaled with unusual units (for example Hertz or degrees). This is not yet fully implemented.

Time

Time scales are at this moment presented usually in seconds. Eventually more units will be provided. Now the values are relative (since the recording start); eventually they will be option to show absolute times.

Absolute time

Not implemented yet.

Relative time in other units

It is implemented for all basic time units (seconds, minutes, milliseconds, hours, days).

Number of samples

This can be used when the rate of the input is constant.

Processing and initialization order

Elements are processed in order; next element is being processed after previous element finished processing.

 

Elements are being processed in the same order as they were initialized. Elements that are closer to input (signal source) are initialized and processed first.

Graphics and performance

Graphics is simple but powerful. It runs on all platforms and usually requires no system dependent libraries. Almost all properties like colors, fonts, borders, background images can be set individually for each chart in each design.

Access to serial port

BioEra installation package includes all necessary drivers to access serial port on Windows. On Linux there is driver available http://www.rxtx.org/ that has been implemented in BioEra. For further information about serial port installation or problems with serial port access see Sun’s site: http://java.sun.com/products/javacomm/downloads/index.html.

Mac OS X

On Mac OS X the RXTX driver has been confirmed to work properly. Serial driver installation process may depend on USB-to-Serial adaptor used. Here is more information about example installation that worked well.

Command line options

BioEra can be started without any options, and that will be full runtime with designer and default (last loaded) design. Command line options can alter its behavior. Command line syntax:

bioera.exe <-or|-op> [-diagnostic] [-log <filename>] [-start] [-root <folder_path>] [-logs <folder_path>] [-design <design_file.bpd>]


Where:

·         -or: runtime mode, runtime window is shown, and processing is started automatically after start.

·         -op: processing mode, design is started automatically after start

·         -od: designer mode

·         -diagnostic: set diagnostic mode (debugging messages printed on console). Additional menu with diagnostic options are available with this option.

·         -log <filename>: all text messages are written to this file (and console)

·         -start: processing is started automatically after start (useful only when working with visual Designer)

·         -root <folder_path>: path to BioEra folder, should be provided if started from different folder.

·         -impl <folder_path>: path to folder with elements implementations; default is bioerapro/impl.

·         -logs <folder_path>: path to folder where logs are stored; default is bioerapro/logs.

·         -priorityNormal: BioEra starts with Normal program priority.

·         -priorityAbove: BioEra starts with Above Normal program priority.

·         -priorityHigh: BioEra starts with High priority.

Colors

 

In some elements it is possible to specify colors for special purpose. It is possible to use predefined colors (case sensitive): black blue cyan darkGray gray green lightGray magenta orange pink red white yellow. In some places it is possible also to define the color as RGB components.

 

Averaging functions

Very often it is necessary to average results over a time period (ScalarTimeTransform, VectorTimeTransform, VectorInstantTransform) or to show on chart as a single line (VectorToScalar). Therefore it is important to understand how different averaging functions work. Here are example charts that show a few averaging functions on the same input signal:

·         JTF signal of delta (1-4Hz), FFT on 512 points (2 seconds with 256Hz input)

·         JTF signal of delta (1-4Hz), FFT on 1024 points (4 seconds with 256Hz input) – this result comes from the same input signal, but has 2 seconds delay when comparing to the above.

Tools

Tools folder in bioera installation folder contains special designs for specific purposes. A tool is basically a BioEra design that may contain specially prepared elements (usually not visible in the list of elements available in designer). You can add your tool if you like, and it will appear on the tools menu of Bioera. To have a nested design (inside a folder), the folder’s name should start with capital letter. Each design file should have standard .bpd extension.

 

Video

In version 1.0.9 BioEra provided ability to display and record video. Since version 1.1 it is also possible to edit video in real time. Although this feature is beyond the scope of traditional biofeedback, it was added here for number of reasons:

·         video feedback (or entrainment) became important part of biofeedback,

·         video recording maybe very useful with a research during sleep or with closed eyes

 

Video editing added in version 1.1 makes BioEra simple yet powerful tool not only for biofeedback but also for other type of research when video analyzing is required (e.g. robotics, face recognition, artificial intelligence etc).

 

Integers versus float values

BioEra uses mostly Integer values for calculations whenever possible. Values in scalar pipes are exchanged as integers. One advantage is the performance, especially on devices like PDA without coprocessor. Another is flexibility.

 

The major drawback is that some math operations may result with degraded precision because of that. This is usually not a problem since most elements do not perform mathematic calculations and don’t need fraction values, they only pass values. If precision is crucial then double precision float numbers are used to calculate the result (e.g. correlation), and then the final values are being exchanged as Integers. Other elements increase the integer range (like FFTTransform or Filter) of the output, to minimize the error.

 

Another drawback is the range. Each integer value is limited to 32 bits word; it means that if an operation on two input values exceeds the range, the result is truncated without showing error. To avoid such possibility, dynamic integer range is constrained usually to 16 bits. This is to make sure that multiplication of two values will never exceed 32 bit range. In most cases and examples that is not a problem at all. Most biofeedback devices use 10 or 12 bits of data, and that gives plenty room for calculations. And even if the range is exceeded, it is very easy to notice on graphic charts.

 

Border

Some graphical components like toolbar have option to set custom border which is loaded from an image. Border can be either only horizontal (image width is 1 pixel), or only vertical (image height is 1 pixel) or both. When border is painted the four quarters of border image are used for each border line, and four image corners for border corners. Border image can contain transparent pixels.

 

Example borders are in folder images/border.

 

Elements

 

This chapter provides list of all supported elements and descriptions of their functionality.

ActivityDetector

This element recognizes whether there is a change in activity on its input (if there are incoming samples). If so, then it sends TRUE to output, otherwise it sends FALSE. Each value (TRUE or FALSE) is sent only once, when the activity state changes. TRUE is sent for positive activity, and FALSE for lack of activity. Positive activity means at least one sample during the ON latency time period. Negative activity means there was no sample within OFF latency period.

Fields:

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

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

 

If the latency is set to 0, then any change of state is notified. If this is greater then 0, then small spikes of activity (or non-activity) that are shorter then latency are discarded.

BarDisplay

It shows graphic chart on vertical bar.

BrainMaster

This object provides interface for BrainMaster EEG device (www.brainmaster.com).

Fields:

·         Mode

·         1 channel – 1 channel mode.

·         2 channels – 2 channels mode.

·         Initialize device – whether to initialize the device.

 

Note:

It has been confirmed, that this elements works well with older BrainMaster 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!
Newer BrainMaster 2.0 devices may not work with this driver.

Button

This is an interactive feature for the user.

CMixer

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

Fields:

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

Functions:

·         ADD = (value + variable)

·         SUBTRACT = (value – variable)

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

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

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

·         MAX

·         MIN

·         REVERSED SUBTRACT is (variable - value)

ColorSet

This element contains set of colors which can be used in design. Each color can be selected by its index (coming to the input), first color index is 0, second color index is 1 and so on.

 

Fields:

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

 

Color format:

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

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

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

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

 

ComboToolbarControl

This element provides option to control design’s behavior from toolbar with combo component. This element is usually used with PropertySetter.

Fields:

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

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

·         Fields selection fields that are shown in the combo

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

 

This element is available in BioEra Pro version.

ComplexFFTTransform

This object provides FFT transform being calculated on complex streams.

ComplexToVector

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

ComplexTransform

This element provides instant transforms on complex numbers:

Functions:

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

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

Counter

This object counts number of occurrences. Other functions will be added in future (e.g. rising edges, falling edges).

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

·         Count – functions:

o        SAMPLES – counts incoming samples

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

 

CustomInteractor

This element contains various operations that can be used for interacting with system or environment.

Fields:

·         Action – select action

·         Input trigger – select what triggers this element

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

 

This element is available in BioEra Pro version.

DayTimer

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

DayTimeCoincidence

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


Fields:

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

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

DebuggerElement

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

Decimator

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

·         Send samples number – how many samples to pass.

·         Skip samples number - how many samples to abandon.

Delay

This element holds the data from input for Delay time and then sends it forward unchanged.

Fields:

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

Demultiplexer

This object passes input stream only to selected outputs.

Fields:

·         Binary – if set then it is possible to send input stream to many outputs. Each bit in the value coming to SEL selects output. For example number 1 selects output 1, number 2 selects output 2, but number 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.

 

Inputs:

·         IN – data stream

·         SEL – selected outputs

DesignInteractor

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

Fields:

·         Path – path to the design file.

 

DeviceSet

This element contains the set of supported devices plus simulator and archive. It allows easy switching between them without need to reconnect. Furthermore it allows set properties (serial port parameters and others) only once that will be automatically used in all designs.

Fields:

·         Source – source selection (device or simulator)

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

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

 

For detailed description of additional options available for the chosen device, go to description of the device in this manual.

 

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

DialogText

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

Fields:

·         Action type – whether to pause processing or continue

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

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

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

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

DVDPlayer

This element plays and controls DVD. It is only available on Windows OS (with BioEra Pro) version. There is example design attached with BioEra Pro which demonstrated how to use this element.

 

Fields:

·         DVD video decoder – allows to select which DVD codec is to be used (if more then one available in system). This option is good only if codec has been properly configured for BioEra. Currently configured codecs are: InterVideo (WinDVD) and PowerDVD (CyberLink). For other codes manual settings are likely required.

·         DVD drive – physical drive available in Windows system like D: or E: or a path to DVD files located on hard drive.

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

 

Advanced Settings fields:

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

o        Video codec – manual video codec

o        Audio codec – manual audio codec

o        Navigator codec – manual navigator

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

 

Inputs:

·         ON/OFF – play/pause.

·         Vol [0-100] sets volume.

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

·         Chapter – choose dynamically chapter number starting from 1

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

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

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

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

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

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

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

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

 

Outputs:

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

·         All titles - shows how many titles are available.

·         Chapter - shows chapter number which is currently played.

·         Title - shows title number which is currently played.

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

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

 

 

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

 

This element is available in BioEra Pro version.

EDFFileReader

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

Fields:

·         File path – path to the EDF file

·         Patient – contains information about patient stored in the file

·         Recording contains information about recording stored in the file

·         Start date – date when recording was started

·         Start time time when recording was started

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

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

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

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

 

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

 

EDFFileWriter

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

Fields:

 

 

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

 

This element is available in BioEra Pro version.

EEGNeuroAmp

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

Fields:

·         Line frequency

o        50Hz

o        60Hz

·         Mode

o        EEG – EEG acquisition mode

o        Impedance – impedance mode

 

Advanced settings:

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

ElementArray

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

Fields:

 

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

 

This element is available in BioEra Pro version.

 

ElementInteractor

This element provides special actions that can be performed on an element(s). For example activate and deactivate, that can be used to control design flow.

Fields:


This element is available in
BioEra Pro version.

ExcelFileReader

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

 

Fields:

 

This element is available in BioEra Pro version.

ExcelFileWriter

Data samples are saved in a text file.

 

Fields:

 

ExpressionEvaluator

This element is a simplified version of Evaluator. It can be used to create simple expressions calculated from many inputs to one output e.g.:

(In1 + In2) * Math.sqrt(In3)

 

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

 

Output value is calculated when input values arrive. If a value arrives only to one input (and not other used in the expression), then previously arrived value is used for that input to calculate expression. Therefore the output rate is the same as the highest input rate. All default input values are set to 0 before start.

 

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

 

If more then one output is used, then more advanced form of expression is required. Expressions created that way must be separated by semicolon (‘;’). And each expression must start with assignment to proper output, e.g.:

Out1=(In1+In2)/2;Out2=(In1-In2)/2

 

Fields:

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


This element is available in BioEra Pro version.

 

ExternalSource

This element can be useful for java developers who want to add their own source of data coming into bioera. It can be a software interface or a biofeedback device or anything else.

External class must implement ExternalSource and implement abstract methods defined in it. Basically there is one important method: read(), which is used to pass samples from this class into BioEra (others define signal parameters).

If more control is needed, then another interface should be implemented: ExternalInit, it provides methods like start(), stop() etc. invoked during runtime.

 

An example class that implements both interfaces has been prepared to demonstrate how it works; it generates 2Hz sine wave.

 

Fields:

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

Evaluator

This element allows creation of a custom behavior/logic with using full power of Java language. This element should be used instead of custom built java objects for simple functions. It provides not only the easiest method of doing that, but also assures compatibility with all next versions of BioEra. The code entered here is compiled on-fly, so that it can be executed with best 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

·         Reinitialization – 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 behavior. It will be definitely no problem for anyone with a minimal programming experience. The example code (provided with each new instance of Evaluator) implements simple mixer (sum two inputs). It should be easy to modify that for a new functionality.

 

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.

 

This element is available in BioEra Pro version.

FFTTransform

This object performs FFT transformation and sends vectors as results.

Fields:

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

·         Rate – how many computations is done per second.

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

·         Subtract bias – removes bias from the result.

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

·         Frequency resolution – shows the frequency precision.

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

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

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

o        NATIVE – allows use of external (native) FFT on integers. The library must be connected to BioEra with JNI interface.

·         Window – provides options for FFT windowing type.

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

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

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

 

FFT2Transform

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

FileStorageSource

Reads data from file stored earlier with FileStorageWriter object.

Fields:

·         File path – file name and path to read. If this file doesn’t exist, then the most recent file is loaded whose name begins with this path; this can be useful when option makeUniqueNames was chosen in FileStorageWriter element.

·         Read in loop – if this is set then, after all data is read, reading from beginning of the file is continued.

·         Keep original rate – If this is set, then data is read from file with the same rate as stored, otherwise all data is read up to available space in buffers.

·         Keep original time – if set then original time will be set to mainProcessingTime variable. The time is calculated either by rate or by time markers written by FileStorageWriter.

·         Chunk read – if greater then 0, then this number of bytes is read from archive (and written to output) at a time. Otherwise the number is equal to half of the available space in output element’s buffer.

·         Loaded file – this field shows the name o the archive file. This can be useful, when the latest file is being loaded automatically (by date of creation). This option can’t be modified, it is only for information. To change the loaded file - modify File Path.

·         Start time [s] – if greater then 0, then this elements starts reading from this time point (relatively to archive begin), otherwise this option is ignored. If this option is set, then it will be automatically reflected in all Oscilloscope and VectorLineDisplay charts of the same design.

·         End time [s] – if greater then 0, then this element stops reading at this time point (relatively to archive begin), otherwise this option is ignored. If this option is set, then it will be automatically reflected in all StreamDisplay and VectorLineDisplay charts of the same design.

 

Status:

·         E = source exhausted

FileStorageWriter

This object saves data in file in BioEra proprietary format.

·         File path – file name and path to save

·         Append existing – if this is set, then the data is appended to the file, otherwise file is overwritten

·         Unique names – if this is set, then each new session is saved in new file with unique name. To retrieve the data (with using FileStorageSource) user needs to know which file to read (see file names in the same folder as the original file).

·         Time marker period [ms] – if this is greater then 0, then time markers are written along with data in the archive file periodically (period defined here in milliseconds); they can be later used to find precise time when something was archived. This option is especially useful when the rate of the input is variable. This will be also needed for recording precisely response to a short stimulation.

 

At this moment, this element saves 16bit data bytes only. In future it will be improved to give ability to save up to 32bit data samples (number of bits will be chosen automatically depending on device’s capability). It is also possible that some compression will be added.

Filter

This object allows digital filtering.

Fields:

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

·         Filter order – selects order of the filter.

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

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

·         Implementation – choose which implementation of filters should be used, currently only fidlib is available.

FlashPlayer

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

Fields:

·         Input min, Input max – input value range

·         Variable min, Variable max – variable value range

·         Variable name – this variable is set

 

This element is available in BioEra Pro version.

Formatter

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

Fields:

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

Functions:

·         TO 2 Unsigned Little-Endian

·         TO 3 Unsigned Little-Endian

·         TO 4 Unsigned Little-Endian

·         FROM 2 Unsigned Little-Endian

·         FROM 3 Unsigned Little-Endian

·         FROM 4 Unsigned Little-Endian

·         TO 2 Signed Little-Endian - PCM

·         TO 3 Signed Little-Endian

·         TO 4 Signed Little-Endian............................................................... ........................................................................................

·         FROM 2 Signed Little-Endian – PCM

·         FROM 3 Signed Little-Endian

·         FROM 4 Signed Little-Endian

GainInteractor

This element is a helper element for Oscilloscope and/or Polygraph. It keeps in memory the latest data and restores it when destination element is re-inited. It is especially useful when trace amplitude has been just modified dynamically, because the trace is recalculated for the new amplitude.

Generator

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

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

 

Functions:

·         SINE – sine signal

·         TRIANGLE – triangle signal

·         RECTANGLE – rectangle signal

·         NOISE – noise, random values within defined range.

 

Fields:

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

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

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

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

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

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

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

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

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

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

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

GlobalVariable

This element can save variable which can be then retrieved in other design. Variable is available until BioEra exists. Variable needs to be saved first before it can be retrieved.

HotSpotMouseSensor

This element can detect whether mouse cursor hovers a hot spot (defined rectangle on the chart).

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

 

This element is available in BioEra Pro version.

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

 

This element is available in BioEra Pro version.

ImageDisplay

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

Fields:

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

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

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

 

 

ImageMixer

This object mixes two images into one output image.

Fields:

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

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

·         Function – defines how images are mixed

 

ImageSequencer

This element reads images from graph files and sends them to object image stream. Next image is send when input is triggered. The trigger is defined in Input trigger field.

Fields:

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

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

·         Image files – paths to the image files

·         Color type defines color format of the output image

 

ImageToMatrix

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

 

ImageTransform

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

 

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

·         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

·         Loop – whether this iterations should be repeated or not

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

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

·         Input trigger – select input trigger type

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

 

JandJ

This object provides interface for J&J C2-Plus device (www.jjengineering.com). It allows to select various configurations. The device can be also accessed inside DeviceSet element.

KeyboardAdvSource

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

 

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


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

 

This element is available in BioEra Pro version.

 

KeyboardSource

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

Fields:

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

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

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

 

KeyInteractor

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

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

 

This element is available in BioEra Pro version.

KeyAdvSelector

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

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


Differences:

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

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

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


Additional fields:

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

This element is available in BioEra Pro version.

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,

 

LogicalMixer

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

Fields:

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

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

·         A OR B – logical sum,

·         A AND B – logical multiplication.

·         A XOR B – logical multiplication.

LogicalMixerM

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

Fields:

·         AND – logical AND,

·         OR – logical SUM.


MediaPlayer

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

 

MenuItemControl

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

 

Fields:

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

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

·         Initial state – initial state of the menu field

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

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

 

Inputs:

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

 

Outputs:

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

 

This element is available in BioEra Pro version.

MenuListControl

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

 

Fields:

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

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

·         Initial state – initial state of the menu field

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

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

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

 

Inputs:

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

 

Outputs:

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

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

 

This element is available in BioEra Pro version.

 

MIDI

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

Inputs:

·         PITCH – turns ON/OFF the note.

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

Fields:

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

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

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

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

·         Midi device – set midi device available in system.

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

Mixer

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

 

Functions:

1.    SUM, is A + B

2.    DIFFERENCE is A - B

3.    MULTIPLICATION is A * B

4.    AVERAGE (A + B) / 2

5.    MAX is max(A, B)

6.    MIN is min(A, B)

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

8.    DIVISION is A / B

9.    ABS DIFFERENCE is absolute value of A - B

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

ModEEG_P2

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

 

ModEEG_P3

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

ModEEG_v21

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

MouseInteractor

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

Fields:

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

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

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

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

 

This element is available in BioEra Pro version.

Multiplexer

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

NestedDesign

This object is used to represent a nested design. All properties of all nested elements can be modified here, but to edit configuration of the sub-design (members and connection), it must be edited as a separate design. The main purpose of this design is: globalization (the same nested design can be used in many other designs and modified only once) and clarity (designs with large number of elements are hard to manage).


Fields:

·         Design file – path to the design file.

·         Save global – if set then the properties are saved in the original design. Otherwise the properties are set only locally.

 

This element is available in BioEra Pro version.

NestedInputs

This object can be used to allow current design be used as a nested in other design. Each output in this element will become input when used as nested design.

Fields:

·         Input names – this option allows set manually names of the design 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).

 

Note: Each output in this element must be connected to only one element at a time.

 

This element is available in BioEra Pro version.

NestedOutputs

This object can be used to allow current design be used as a nested in other design. Each input in this element will become output when used as nested design.

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

 

Note: Each output in this element must be connected to only one element at a time.

 

This element is available in BioEra Pro version.

NetworkClient

This object connects to a specified network server, and once a connection is established it exchanges scalar data through network. This can be any network server (not only NetworkServer available in BioEra), for example a web server. It is the logic contained in the design that handles communication properly.

 

Fields:

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

·         Port – port to connect to.

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

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

NetworkServer

This object listens on selected port (in a thread), and once a connection is established it exchanges data through network. Only one client can be connected at a time. Any client can be connected, not only NetworkClient available in BioEra. It is up to the logic contained in the design to handle communication properly.

Fields:

·         Port – port number the server listens to.

Neurobit

This object provides interface for Neurobit EEG devices (www.neurobitsystems.com).

Fields:

·         Model – select which device model you have.

·         Rate [sps] – current data rate can be set here.

·         Bandwidth [Hz] – select low pass filter

·         Artifacts – whether artifacts (e.g. weak connection) should block the device from sending data.

 

Status letters:

·         P – device has been paused

·         D – device has been disconnected

NeuroServerSource

This element can be used to read data from NeuroServer. Only one data channel can be read here at a time. To read more then one channel, add more elements and choose different channels.

Fields:

·         Receive channel – determines which channel to read. Default is 0.

·         deviceNumber – if this value is less then 0, then the first found NeuroServer EEG device is chosen automatically. Otherwise a device with this number is chosen.

NeuroServerWriter

This element can be used to write data to NeuroServer. Only one data channel can be written a time. This channel can be then read by other NeuroServer clients.

Notice

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

Functions:

·         STOP PROCESSING – processing is stoppped

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

·         CONTINUE PROCESSING – processing is continued without 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).

NumericDisplay

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

 

Scale:

·         uV – value is scaled in micro-volts

·         digi – value is shown as digital

·         % - value is scaled in percent

 

Fields:

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

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

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

o        Decimal – integer number, no conversion

o        Hexadecimal - integer shown as hexadecimal number

o        Binary - integer shown as binary number

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

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

OrbitalDisplay

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

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

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

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

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

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

Fields:

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

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

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

·         Show trajectory – show orbital lines for each planet.

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

Oscilloscope

Shows input stream on graphic chart like on oscilloscope.

 

Inputs Level1 and Level2 perform the same function. Each can display a horizontal (dashed) line. It can be useful to show threshold(s) over the signal.

 

Fields:

·         Time range [s] – time range in seconds

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

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

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

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

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

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

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

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

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

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

 

 

Inputs:

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

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

 

Interactive Properties:

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

 

OSInfo

This element provides selected information about operating system that can be useful for processing.

 

Fields:

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

o        Root folders

o        Files in folder

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

o        Folders in folder – list of full paths of folders

o        Folder names in folder – list of folder names

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

o        Root folders - none

o        Files in folder – path to the folder

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

o        Folders in folder – path to the folder

o        Folder names in folder – path to the folder


This element is available in
BioEra Pro version.

OSInteractor

Allows start executable application or script.

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)

 

This element is available in BioEra Pro version.

PatternRunner

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

·         IN – vector samples - patterns

·         OUT – recognition results – vectors

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

 

PatternTrainer

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

 

Inputs/Outputs:

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

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

·         L – Learning ratio can be set dynamically here on statically in properties.

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

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

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

 

Properties:

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

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

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

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

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

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

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

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

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

 

PCMAudioPlayer

This object can send wave data to sound device (if available in system) like sound card or other sound mixer.

Fields:

·         Buffer length – defines size of the input buffer. If this value is smaller, then there is better response time for sound being created dynamically (line binaural beats). But the buffer’s size must be high enough so that there is no interruption in sound being played.

·         Sound device path – if this is empty, then internal java sound driver is being used. Otherwise the device path provided here is assumed to be sound device on UNIX, usually /dev/dsp. This option is provided here in case the quality of the internal java driver is too low or not available.

 

Note: due to unknown (to me) reasons, the quality of the sound generated with this element may be not perfect for small signal’s rate; there are small clatters from time to time. Even if the sound is generated cleanly, it is not played as well as it should. The java driver has some issues that I do not know how to fix at this moment. On linux I was able to fix that without using java driver by writing directly to sound device like /dev/dsp. On Windows it is not resolved at this moment. The problem is not big, but can be annoying if the actual feedback sound is quiet.

PCMAudioSource

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

 

PET

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

Fields:

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

Advanced features:

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

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

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

·         Channel filter coefficient – sets the filter parameter.

 

PianoKeyboard

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

Fields:

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

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

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

 

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

 

This element is available in BioEra Pro version.

Pocket-EEG/HEG

This object provides interface for Pocket-I and Pocket-II (Abhayamudra) biofeedback devices (www.pocket-neurobics.com).

Fields:

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

o        EEG – sends EEG data to output channels.

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

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

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

·         Rate – shows current transmission rate.

Status letters:

·         N – channel not connected

·         C – channel connected and works properly

·         R – out of range error,

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

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

 

Pendant mode

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

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

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

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

·         3-9 – reserved

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

 

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:

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

o        PRECEEDING_ELEMENT – descriptions are taken from the preceding elements (connected to inputs) names

o        DEFINED_LABELS – description 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.

·         Labels – contains values that can be used to describe traces of the channels. Option DEFINED_LABELS must be selected in Trace Description.

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

·         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 dynamically shift all trace vertically (up or down).

 

ProgressBarDisplay

It works like BarDisplay element, but horizontally.

 

PropertyGetter

This element is very similar to PropertySetter, but it allows reading a property dynamically. More information about its using can be found in PropertySetter.

 

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

PropertySetter

This element allows changing a property in any element dynamically during processing. This is very unique and very powerful mechanism, it offers ultimate flexibility, 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 data via pipes. That means it is good to set occasionally a property, but it is not recommended to exchange streamed data this way.

 

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 cautiously, is possible always select REINIT_ALL option which will reinitialize design after a change has been made.

 

Fields:

·         Scope – there are many kind of properties which can be set. The most often used are

Ø       ELEMENT_PROPERTIES – those are the same as selected by element Properties

Ø       ADVANCED_PROPERTIES – equivalent to Advanced properties of any element

Ø       CHART_PROPERTIES – very powerful, each chart component (e.g. trace, border, axis, fonts) can be changed here dynamically

Ø       SIGNAL_PARAMETERS – this is very advanced feature, allows to impact signal parameters of this element

Ø       INTERACTIVE_PROPERTIES – this option is available only in some elements e.g. Oscilloscope or Polygraph. If the destination element implements Interactive Properties, then they will be selected in Property field. The explanation of Interactive Properties is in the the element description.

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

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

·         Post action – provides various re-initialization options that may be required after a property is set.

o        Reinit Target – only this one element is reinitialized. Note: this reinitialization is fast but may not be enough for each element. It is recommended to always select ReinitAll.

o        ReinitAll – this reinitializes all elements in current design, it guarantees new setting will work, but it may take longer time.

o        Stop-Reinit-Start – works like Reinit Target, but also stops/start the destination element.

o        Reinit Target and followers – this option reinitializes the target element and all elements connected to its output (and their outputs).

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 can be useful when there are more PropertySetters connected to the same destination Element. In such case the initialization is postponed until all of them set their property.

·         Immediate – this option allows setting property when design is not in the processing mode (before Start button was pressed). If the design is in processing mode, then this option should be used with slight caution, because it may cause synchronization conflicts (very unlikely but possible) with the normal processing operations.

 

This element is available in BioEra Pro version.

RangeFilter

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

Fields:

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

·         Range – defines value range.

RangeMapper

This object converts values from one range to another, for example if input range is 1-9, and output 21-29, then for input value 7, to output will be sent 27. Or if input range is 100-300, and output is 1-5, then for input 150, value 2 will be sent to output, and for input 200, it will be 3.

Fields:

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

RateLimiter

This object controls throughput. Rate means how many samples per second 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 then 4 per each 500ms.

·         cleanExcessiveData – input values may be pilled in input buffer if the predecessor rate is greater then defined here rate. To avoid buffer overload this checkbox should be set.

RawFileReader

Read raw bytes values from a file.

RawFileWriter

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

Resampler

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

Fields:

·         Input samples – number of input samples

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

 

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

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

·         ZEROS - halfway samples are set to zero.

RouteGame

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

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

 

Fields:

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

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

·         Play in loop – game starts again on finish

·         Image folder – contains all animation pictures

·         Velocity – movement speed can be controlled here

·         Animation rate – animation can be controlled here

 

QPET

This element provides driver and decoder 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):

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

 

 

GSR channel (ohm):

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

 

 

AI channel (mill-volt):

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

 

ScalarBuffer

This element has internal buffer where input scalar values are kept until released by input trigger.

Fields:

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

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

 

Functions:

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

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

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

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

ScalarCrossTimeRatio

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

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

ScalarCrossTransform

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

Fields:

·         Size – number of input samples

 

Functions:

·         CORRELATION – standard cross-correlation calculation.

 

ScalarInstantTransform

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

Functions:

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

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

·         ABS – takes the absolute value of the sample.

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

ScalarSet

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

Fields:

·         Values – set of scalar values

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.

ScalarTimeTransform

There are a few functions available in this object. 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: input rate divided by “Samples count”. Each transform is being performed on input Sample count samples.

 

Fields:

·         Time range – the processing is being done for this range of samples. The input data is buffered so the first output sample will come when the input buffer is full (except when the Pre calculation is set).

·         Down sampling – if this is set, then for each Samples count input samples, there is only one output sample. Otherwise number of output samples is the same number of input samples (function overlaps).

·         Pre calculation – this option can be useful for very long input range. If set, then additional processing is performed before input buffer is full populated on the available samples.

·         Synchronizing value – under normal conditions there is a delay until input buffed is populated. To avoid time asynchrony, this value can be sent to output (the same count as Time range) unless it is set to -1. This has no effect if Down Sampling or Pre calculation is set.

 

Functions:

·         AVERAGE – output value is averaged over the number of input samples.

·         MAX – output maximum value from the last N of input samples.

·         MIN – output value is the minimum from the last N input samples.

·         PEAK_TO_PEAK – the maximum difference of signal amplitude is written to output.

·         VARIANCE – variance is calculated as sum((n – mean)^2) / mean

·         AVERAGE(ABS) – average from sum of absolute values is calculated


ScalarToLogical

This element converts scalar stream to logical state. The last value in input buffer is compared with threshold. Only one logical value at a time (1 or 0) is sent to output.

Functions:

·         = – equal to the threshold

·         <> – different then threshold

·         > – greater then threshold

·         < – less then threshold

·         >= – greater or equal to threshold

·         <= – less or equal to threshold

ScalarToText

This element converts scalar value to Text value. Can be converted back using TextToScalar.

ScalarsToVector

This object creates vectors from several scalar inputs. All scalar inputs should have the same rate. The output rate is the same as the lowest of all inputs rates.

 

Fields:

·         Fields descriptions – if checked then each field in output vector will have the same name as the element connected to input. Otherwise the vector field names are not specified.

·         Synchronized inputs – if checked, then each input element should provide the same number of samples, excessive samples are buffered. If not checked, then excessive samples are not buffered (discarded).

Selector

This element can be used to select one/many output(s). If an output N is selected, then its state is set to TRUE. In the same time the output that was selected previously sends FALSE. When processing starts, all outputs are set to FALSE.

Number of outputs can be changed (but BioEra restart is necessarily after that). Value of the input sample determines which output is activated.

 

Fields:

·         Remember selection – output selection is remembered and set on the next start.

·         Initial selection – initial value can be set manually here. It will be overridden if the Remember option is selected. If this value is less then 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 1 and 3 to TRUE, and all other outputs to FALSE.

 

ScalarValue

This object contains single scalar value. It is similar like the Slider element, but there is no graphic user interface here. Incoming samples can modify the value according to various functions. Whenever incoming sample arrives, the value is modified and sent to output. Therefore input rate is the same as output rate.

Fields:

·         Minimum value – output value can’t be lower then this value.

·         Maximum value – output value can’t be higher then this value.

·         Initial value – initial value after start

 

Functions:

1.    SUM MODULO – input sample is added to the value with modulo function.

2.    SUM - input sample is added to the value.

 

Sequencer

This object sends to output defined values in sequence. To send a value, sequencer must be triggered, means it must receive a triggering sample on its input.

 

Input trigger:

1.    Any sample – each incoming sample triggers next output value

2.    TRUE – only TRUE value (see info about Logical pipes) triggers next output value

3.    FALSE – only FALSE value triggers next output value

4.    TRUE_THEN_FALSE  – only FALSE after TRUE value triggers next output value

5.    FALSE_THEN_TRUE  – only TRUE after FALSE triggers next output value

 

Output value:

1.    SEQUENCE – output values are sent in defined order.

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

3.    RANDOM ANY – any random value is taken from available values.

4.    RANDOM ALL – like above, but random value is taken from not-yet-sent values until all defined values are sent. Above function should work statistically the same in longer time, but this here is to make sure all values are equally distributed.

SerialDevice

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

SerialPort

This object is used to access a serial port.

Fields:

·         Port – select port to use. All available ports are automatically listed here. If a port is not listed then it either doesn’t exist or is not visible in system.

·         Baud – serial transmission speed

·         Data bits – data bits

·         Stop bits – stop bits

·         Parity – parity

·         Flow control – flow control

·         Implementation – this is an advanced option. It gives ability to choose which driver of serial port should be used. At this moment two solutions are available

o        javax.comm (driver is provided with BioEra but only on Windows system)

o        gnu.io – provides wider range of drivers for various systems including MAC OS (see http://www.rxtx.org/). Windows version of this driver is provided in the default installation bundle. To use it on other system, simply download version 2.1 of appropriate RXTXcomm.jar file and replace the existing one.

·         DTR, RTS – set manually those lines on the serial device.

·         Check device during initialization – this turns on additional control of the serial port connection, so that any problem is known before processing is started. If this is unchecked, then any problem will be signaled after processing is started.

SetSignalParameters

This element is no longer available.

Slider

This element contains single value that can be modified within defined range (min and max). Value can be changed either in the runtime window (slider chart) or by incoming input values.

Fields:

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

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

·         Initial value

·         Remember last value – is set then “Initial value” will be set to the last value sent.

·         External PS – if set and input is connected, then the output digital range is the same as the one in the element connected to input. Otherwise the range is between Max and Min values.

 

Function – defines how the input sample modifies current state:

·         SUM MODULO – input value is added to the value with using modulo (rotated) operation.

·         SUM – input value is added, but the output value cannot exceed defined range.

SoundFileReader

This element allows reading data stream from a sound file. The data can be then further processed (for sound analyze) or used for creation of sound feedback.

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.

 

StatusML

This is multi line status. It works just like Status, but handles dynamic messages. The consecutive messages are scrolled vertically.

SimulationSource

This simulation object can provide various signals.

Fields:

·         Frequency array [Hz] - contains array of required signals.

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

·         Signal range [uV] – output signal range

·         Phase shift [0-360] – shifts the phase of the output, this can be useful if more simulation sources are used and different phases are needed between them.

·         Noise level [uV] – generates random noise.

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

SteppedSoundFileReader

This object can be used to read samples from a file selected by numeric value and send them to output. File is selected the same way as in SteppedSoundPlayer: file name must either be a number (e.g. 1.wav, 2.mp3) or a number followed by underscored name (e.g. 1_one.wav, 2_two.mp3).

Fields:

§         Output buffer [s] – number of samples sent to output is up to this size.

§         Cache files – this option is useful if the same sound file is being played oftenand it is compressed (like mp3), and the decompression takes too much time. It allows to load the whole (uncompressed) file content into cache (local memory buffer) and then play it directly from there. The total number of uncompressed samples in cached file must be not more then 1 million (1Meg), otherwise only the first 1 Meg is loaded.
Available options:

o        NO CACHE – cache 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.

§         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

§         File extension – constant file extension of all files.

 

Outputs:

§         Left channel, right channel – sound data.

§         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 that are being sent can be either counted in time (this is when Output Buffer set is used) or triggered by another AudioRequestor element through Event input (currently only PCMAudioPlayer). If any AudioRequestor is connected, then it takes control over the samples that are being sent.
This option is used for synchronization between samples sent here and received at the sound device.

SteppedSoundPlayer

This object is used to play sounds that are stored in files. They can be played either with 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.

StreamToVector

This object converts scalar stream into vector stream.

Fields:

·         Size – size of the vector

·         Rate – output rate (resolved on base on input rate)

Functions:

·         FRAME – takes N input samples (defined in Size parameter), creates vector and sends it to output. This is done every N sample depending on Rate.

·        TRIANGULAR, HANNING, HAMMING, BLACKMAN – as above, but the windowing is added.

 

SubVector

Takes a vector from input, and sends only part of it to 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.

 

Switch

Allows redirecting input channel to output, e.g. to change channel order. It may be useful when the switching needs to be done during processing or be configurable like for QEEG montage.

 

SystemEventSource

This element sends TRUE if the selected event type has taken place in the system. For some options it may also send 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 disactivated

·         BUFFER_OVERFLOW – sends text error message with error description if any input pipe’s buffer has been overloaded

 

This element is available in BioEra Pro version.

SystemInteractor

This element can be triggered to execute standard system action.

Fields:

·         System action – select system action

·         Input trigger – select what triggers this element

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

 

This element is available in BioEra Pro version.

TextDisplay

This object displays textual value of the input object.

 

Fields:

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

TextTransform

This element performs various operations on input text.


Separator:

·         TEXT + Var – concatenates variable at the end of the text

·         Var + TEXT – concatenates variable to the beginning of the text

·         MATCH – input text is sent unchanged to output ONLY if it contains variable

·         REPLACE – variable must be formatted as FROM=TO, where FROM is the text to replace, and TO is destination text. For example “dog=cat” variable, will replace all occurrences of “dog” with “cat”, and “dog=” variable will remove all occurrences of dog in each input text.

·         MATCH_REGEXP – input text is send to output ONLY if it contains variable defined as regular expression.

·         REPLACE REGEXP – just like REPLACE, but the FROM field is defined as regular expression.

·         INSERT - variable must be defined as DEST=TOKEN, DEST defines where input text is to be inserted. The DEST text must contain TOKEN text inside, which will be replaced by the text value coming to input pipe.
For example for variable dog%=%, the input text will replace ‘%’ character. For variable dogANDcat=AND, input text will replace AND word between dog and cat, so if the input text is ‘monkey’, then output text will be ‘dogmonkeycat’.

This element is available in BioEra Pro version.

TextSet

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

TextToScalar

This element converts Text object to scalar number. If the text is not a number then no value is sent to output.

 

Threshold

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

Functions:

·         = – equal to threshold

·         <> – different then threshold

·         > – greater then threshold

·         < – less then threshold

·         >= – greater or equal to threshold

·         <= – less or equal to threshold

 

Outputs:

·         Pass – values that pass on the threshold are send here

·         Fail – values that fail on the threshold are send here

·         On/Off – logical state. It is TRUE if the last input value passed over threshold, otherwise it is FALSE.


Inputs:

·         In – input stream

·         Thr – the threshold value can be set dynamically here

 

TimeInterval

This element can be used to control actions precisely in time. When input is triggered, then the element is changed to ON state, and the output is set to TRUE. After timeout elapses, element is changed back to OFF state and the output is set to FALSE.

 

If the input is triggered again while being in ON state, then the TRUE value is sent again to output, but the time is reset and calculated again from this moment.

Timer

This element generates selected number of pulses in a time period.

Fields:

·         Time period [s] – time period in seconds

·         Pulse count – how many pulses are generated during the above Time period

 

Output TIME shows number of pulses since the processing started. Output Tick generates logical TRUE then FALSE for each pulse.

TimeRangeFilter

This object can control data flow in time. It passes data only within the defined time range. The actual number of samples is calculated on base on sample rate, so the preceding element must provide valid rate of the signal. This feature can be useful when analyzing small pieces of an archived signal.

Fields:

·         Start time [s] – if greater then 0, then this elements starts reading from this time point, otherwise this option is ignored. If this option is set, then it will be automatically reflected in all Oscilloscope, VectorLineDisplay and other charts.

·        End time [s] – if greater then 0, then this element stops reading at this time point, otherwise this option is ignored. If this option is set, then it will be automatically reflected in all Oscilloscope, VectorLineDisplay and other charts.

TimeSource

This object provides various times scaled in seconds or milliseconds. Time scaled in seconds can be displayed directly with NumericDisplay.

Fields:

·         FROM_START – time measured since start of BioEra

·         FROM_RESUME – time measured since the last resume of BioEra

·         SESSION_TIME – total session time since start, the session time doesn’t include pauses

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

ToggleButton

This is an interactive feature for the user.

Valve

This element can be used to control the flow of a scalar stream. If the logical Tap input is set to TRUE, then all input samples are being sent to output (valve is open). Otherwise incoming samples are discarded (valve is closed). If Tap input is not connected, then all input samples are being sent to output (valve is open).

Status:

·         C – valve is closed

·           – valve is open

 

Vector2Transform

Performs various transformations, where two input vectors are transformed into two output vectors.

Fields:

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

 

Vector3DDisplay

This element presents graphics on 3D chart. Vector fields are or X axis, time is on Y axis and amplitude is on Z axis.

Fields:

·         Depth (points) – defines how many vectors are shown on screen.

·         Rotate (x,y,z) [0-360] – the chart can be rotated to better fit on screen.

·         Shift position (x,y,z) – the chart can be shifted in each direction.

·         Scale (x,y,z,A) – each direction or all of them can be scaled.

·         Range [uV] – amplitude range

·         Redraw mode – defines how the chart is being rendered. If set, then chart works like oscilloscope, new values are drawn until the end of the chart and then start from the beginning. If not set, then current values are shifted back, and the most recent are drawn in front.

·         Colors – colors are used to show the amplitude better. If not set here, then they will be created automatically.

·         Invert – if set then the lowest index of vector is shown on the end.

 

This element is available in BioEra Pro version.

VectorBuffer

This element has internal buffer where input vector values are stored and released by trigger. It works exactly the same as ScalarBuffer, but for vectors.

VectorCrossTransform

Transformation is being performed on two vector streams. Output rate is the same as input rate. This is similar like in VectorMixer, but the transforming function is more specialized.

Fields:

·         Size – number of input samples.

 

Functions:

·         CORRELATION – standard cross-correlation calculation is calculated for each field of input vectors. The output is scaled to min, max ranges.

 

VectorConstant

This element contains a vector that can be used as a variable/constant.

Fields:

·         Implicit vector size – sets the vector size no matter of how many fields are set manually. If this value is greater then manual vector’s length, then all remaining fields are filled with value set in Fill value fields, if this value is smaller, then manual vector is truncated. If this value is set to 0 or less, then the vector length is the same as manual vector’s length.

·         Fill value – this is used to fill vector’s fields that are not set

·         Constant vector – manually set vector’s fields

·         Min value – minimum value of each field in vector, used with dynamic modifications

·         Max value – maximum value of each field in vector, used with dynamic modifications

 

Functions:

·         SUM MODULO – input vector is added to the current vector modulo (within range specified by Min value and Max value.

 

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

It shows instant vector value on graphic chart.

Fields:

·         Range [uV] – amplitude range

·         Show bars – choose whether show bars or a line.

·         Scopes – defines index ranges, so that different vector fields can be displayed with different colors defined in Colors field (below).

·         Colors – define color for each scope.

VectorInstantTransform

This object provides various transformations on single vector. The output rate is always the same as input rate, functions are preformed on one vector only (as oppose to VectorTransform).

Field:

·         Left – defines window length on the left (lower) side of the sample (value) according to chosen function.

·         Right - defines window width on the right (higher) side of the sample (value) according to chosen function.

Function:

·         AVERAGE - each vector field is averaged over its neighbors.

·         MAX - each vector field is set to max value over its neighbors.

·         MIN - each vector field is set to min value over its neighbors.

·         RMS – each vector field is set to Root Mean Squares of all its neighbour fields: sqrt(sum(Sn^2) / N).

·         ABS – each vector field is set to its absolute value. Left and right values are not used here.

·         HAMMING_WINDOW – input vector is converted by the hamming window. Left and Right parameters are not used.

VectorLineDisplay

Prints on chart all fields of the vector as separate lines, each has different color.

·         Time range [s] – show time range

·         Amplitude range [uV] – show amplitude range

·         Colors – define colors for each field of the vector. If not provided, then default colors are provided

·         Descriptions – description of each field in agenda can be defined here. It will be used only if Agenda field is set to DEFINED NAMES.

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

·         Agenda – defines what description should be in agenda:

§         PREDESSOR – description is defined in predecessor element,

§         DEFINED NAMES – description is defined in field: Descriptions

§         PHYSICAL VALUES – physical value is calculated for each field and shown,

§         INDEXES – indexes of the vector are shown.

VectorMixer

This object works like Mixer but for vectors.

VectorStorageSource

Reads data from file stored earlier with VectorStorageWriter object. All options are like in FileStorageSource element.

VectorStorageWriter

This object saves vector stream data in file in BioEra proprietary format. All options available in FileStorageWriter are here. Additional options:

·         Save descriptions – description of each vector field is saved.

VectorSTransform

This object can apply single scalar value to the vector according to selected function.

Functions:

·         SET SCALAR AT INDEX – replaces vector field at index (provided in index input) with scalar value.

·         INCREMENT SCALAR AT INDEX – adds 1 to the vector field at index provided in index input.

 

VectorTimeTransform

This object contains various transformations on vector. The output rate is always the same as input rate, however functions are performed on many samples defined in Samples number field (as oppose to VectorSingleTransform, where transformed is only one vector).

Fields:

·         Samples number – defines number of samples upon to perform the transform.

 

Functions:

·         AVERAGE – each vector field is averaged over a period of time. Processing is hold until number of samples is available.

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

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

VectorToComplex

This object converts each vector to complex vector according to chosen function.

VectorToScalar

This object converts each vector to scalar value according to chosen function. Output rate is the same as input rate.

Function:

·         AVERAGE – calculated average of all vector values over physical vector range (not digital).

·         MAX – takes the maximum from all vector values.

·         MIN – takes the minimum from all vector values.

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

·         MIDDLE_POWER_2 – calculates index of the vector, so that sum of the square values below the index is closest to the sum of the square values above the index.

·         SUM – sum of all vector fields: sum(Sn)

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

·         RS – Root of Squares: sqrt(sum(Sn^2))

·         DOMINANT_INDEX – index of the maximum value in the vector

·         DIGITAL_AVERAGE – the average is taken over the number of fields in vector, not over the physical values like in AVERAGE function.

·         DIGITAL_RMS - the calculation is taken over the number of fields in vector, not over the physical values like in RMS function.

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

VectorValue

This object contains single vector value. Incoming vector replaces the value. The most important function of this element is to provide constant vector which is used for initialization during start (the value is sent once for each start).

VideoCameraImageSource

This element provides a source of frames being created by a camera (any camera or image device available in system) as Image objects.

VideoCameraRecorder

This element can record video from video sources available in system like web cameras. The video recording can be done simultaneously with bio-signals or other recordings. All available video/audio devices and all possible formats are listed in the properties. If for some reason a device is not listed there, then it can’t be accessed from this element.

Fields:

·         Path – path to the destination file.

·         Video device – choose between video devices.

·         Video format

·         Audio device – choose between audio devices.

·         Audio format

·         Implementation – at this moment only JMF is available.

·         Output format – format of the video file: AVI or MOV.

VideoFileImageSource

This element provides a source of frames from a video file in format of Image pictures.

VideoFileImageWriter

This element provides a way to save a source of Image objects as a video file.

VideoFilePlayer

This element can play a video file at a controlled rate, direction (forward or backward) time position and sound volume. It is available only on Windows (in BioEra Pro) version.

 

Fields:

·         Video file – path to the media file.

·         Reflect time range if set, then video can be automatically started at specified time.

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

·         Reverse step – this option may be required on slower computers. If step 1 is too slow, then change it to 2, 3 or 4.

 

Inputs:

·         ON/OFF – play/pause

·         Vol [0-100] sets volume

·         Brightness [0-100] sets brightness

·         Contrast [0-100] sets contrast

·         Rate – sets the rate of the video playback, rate can be positive or negative. Input range is scaled in percents, for example input 100 will play the video at nominal rate, and input value -200 will play reverse twice as fast as nominal rate.

 

This element is available in BioEra Pro version.

VideoScreenImageSource

This element provides a stream of images taken from screen at specified coordinates.

VLCPlayer

This object can control the VLC video/DVD player.


This element is available in BioEra Pro version.

WavFileWriter

It saves data stream in WAV file, so that it can analyzed by a sound editor.

XmlFileReader

This element can be used to read data from an XML type file. The XML file must contain top section “Configuration”. The selected value is sent to output when the element is triggered.

 

Fields:

·         File path – path to the XML file

·         Tag path – contains path to the selected Tag.


This element is available in BioEra Pro version.

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

This element is available in BioEra Pro version.

XmlNetServer

This element can be used to send dynamically data from BioEra to external application via TCP network. Data is sent in Xml format which is flexible and simple. TCP socket is universal and can be accessed in most languages (C++, Java, VB, C# and others) and systems (Windows, Linux, Mac, PDA).

 

Fields:

·         Port – network port

 

There are two types of tag 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" />

 

This element is available in BioEra Pro version.

Support

Reports with bugs or requests for new features can be posted on forum.

Debugging and problems

If something is obviously wrong, you can exit BioEra and then start it again with using start_console.bat. See if there is any additional information that could be helpful there. Or post question on Forum.

 

If you want to report a bug or a problem use option to create diagnostic file (menu Tools->CreateDiagnosticFile), which will build diagnostic.zip file in main BioEra folder, then attach it along with the error description.

Troubleshooting

Report any problem on public forum: http://www.proatech.com/forum/.

Feedback and comment is welcome

Any feedbacks or comments are very welcome. Especially appreciate information about bugs and obvious problems that make BioEra difficult or unpleasant to use.

New versions

Each new version of BioEra introduces new functionality as well as modifications of current functions. At this moment there is no method for migration from older to newer designs. We try to keep compatibility as much as possible. If something has changed significantly there is a note about it. We also try to make sure, that all example designs work the same way as before.

 

Related links

License

BioEra GPL is licensed as GNU GPL. Other distributions have their own licenses.

Copyright notice

 

Copyright © PROATECH LLC (http://www.proatech.com). All rights reserved.