BioEra
Updated on July 3, 2010. The most recent version of this manual can be accessed here.
Feedback and comment is welcome
BioEra software is for real time analyzing and real time presentation. Usually works together with a biofeedback device with ability to deliver data to a computer (via USB, serial port, wireless or other media).
BioEra provides very flexible mechanisms to create and visually edit designs. A design contains a signal flow model from input (like a biofeedback device) to output (like visual or sound feedback). The signal flow is passed through visually edited objects (elements). There are hundreds of built-in elements and functions.
Virtually any type of real time signal processing is possible. No programming language is required to create a design; entire process can be built visually by connecting pins and editing properties.
Most BioEra uses are for processing data from a biofeedback device. But data can be read also from other sources (archive files, simulators or data sources connected via network).
BioEra installer is very easy to use and BioEra is ready to run immediately after installation.
After installation BioEra is configured to read data from Simulation or File source. To receive data from a real device, select from Menu Tools and then Select device and follow the instructions.
To play DVD movies a DVD decoder must be first installed in system. Most DVD decoders which work with Windows Media Player should also work with BioEra, below is the list of the most popular (and most tested) decoders:
1. InterVideo DVD - this decoder comes with WinDVD software. It can be also purchased here: http://www.corel.com/servlet/Satellite/us/en/Product/1177441133801
2. Cyberlink DVD comes with Cyberlink DVD player, can be purchased here: http://www.cyberlink.com/winxp_plugin/2007/enu/wmp.jsp
The above links are for decoders on Windows XP and were tested with BioEra. Other decoders (not tested but may also work) are listed here.
BioEra contains MIDI bank with basic instruments. Optionally 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.
Currently only Windows (XP, Vista and Windows 7) system is officially supported. Support for other systems (like Linux or Mac OS) will be added if there is a demand.
To run simple designs the requirements are low: Pentium II processor with 64M RAM should be just fine for small designs (up to hundred elements). The faster the machine the smoother processing will be, especially with rapid graphic changes on the feedback display.
The best way to upgrade is to uninstall previous version and install new one and keep copy of files (designs, archives) manually. It is also safe to install new version on previous version without un-installation.
BioEra supports 3D real time rendered graphics on most computers. If 3D support is not available, then BioEra it will be detected and this message will be shown: 3D graphics has been disabled.
If you notice the above message, it means 3D support has not been detected in the system. It will not appear again unless you change system setting 3D graphics support to ON. Possible reasons why this happened:
1. Older graphics cards not always support all required features. ATI or NVidia cards are recommended with latest drivers installed.
2. Another possible reason is that DirectX has not been installed, or its version is too old. Make sure that your version of DirectX is 9.0c and released in December 2006 or later. You can check this (and other parameters) using this command: dxdiag (type it in command line). Those are the most important values to verify on dxdiag screen: picture1 and picture2.
After you have fixed your DirectX and you are ready to try 3D again, change the system setting 3D graphics support back to ON and restart BioEra. Then load a design with 3D graphics (most examples use it).
BioEra has a built-in driver support for devices listed
below:
· P-I and P-II (Abhayamudra) EEG/HEG pocket-neurobics.com
· Pendant - EEG pocket-neurobics.com
· PET - EEG, EMG, ECG, GSR www.brainquiry.nl
· Neurobit EEG, EMG, HRV, GSR, TEMP http://www.neurobitsystems.com
· EEGNeuroAmp EEG http://www.eeginfo.com
· J&J C2-Plus EEG, EMG, ECG, Temperature http://www.jjengineering.com
· JCPirHEG HEG Jeff Carmens
· QPET - EEG, EMG, ECG, GSR www.brainquiry.nl
· MindMaster - EEG www.mindmaster.de
· MF_Temperature Temperature http://www.mindfield.de
· QDS EEG http://www.qeeg.com.ar/defaultENG.htm
· BrainMaster Atlantis EEG, HEG www.brainmaster.com
· WaveRider 2cx, Pro EEG www.mindpeak.com
· PN_Pulse1 - HEG pocket-neurobics.com
· Alpha400 EEG www.telediagnostic. com
· Nia Neural Impulse Actuator
· Nonin4100 bluetooth (wireless) oximeter www.nonin.com
· ModEEG - EEG openeeg.sourceforge.net
· Lightstone HEG and GSR http://www.wilddivine.com
· WiTilt accelerometer and gyrometer www.sparkfun.com
· DAQ6008 data acquisition USB device www.ni.com
· Roshi, EEG device
Here is information how to request support for a new device in BioEra.
In the default mode there are two windows: Designer and Runtime. Designer window is for development and serves as a visual editor for designs. Runtime window (one or more) presents results to the user (feedback). It is possible to have two Runtime windows and multiple dialogs.
Designs are created and edited visually with mouse and keyboard.
Brief description:
a. To add new element press right mouse button and choose new from the popup menu. Choose any element from the list.
b. To edit existing element highlight it and then press right mouse button over it and choose properties or press space on keyboard.
c. To move existing element to new position press left button and drag. It is possible to highlight group of elements and drag them all.
d. To learn about functionality press right mouse button and choose description.
e. To add connection between output and input of two elements, click on node of an element, then move mouse to another node and click again.
f. To remove an element or a connection, highlight it and choose remove with right mouse button or press Del button on the keyboard.
g. To view a problem in the element (this can be observed when a small red cross appears in the bottom left corner of the element), choose view error with right mouse button.
h. To load previously saved design, choose from menu System->Load and choose design file.
i. To save your design in file, choose from menu System->Save or System->Save as.
j. To switch between Edit and View mode of Runtime, choose Runtime->set edit mode (Runtime->set view mode) in Designer menu.
k. To highlight group of elements press Ctrl button and click over next elements.
There
are 2 Runtime windows available. By default only one is visible, the other one
can be set visible in Design Settings.
Runtime window can be in one those modes: View or Edit. Mode can be selected in designer. The Edit mode is for chart layout edition. The View mode is default when BioEra starts.
A few examples are included with BioEra to let quick start a simple training. To load any of them click on Menu->System->LoadDesign and navigate to design\examples folder. Example names are self explanatory, some of them contain one reward filter and others one reward and one inhibit filters. They demonstrate various types of feedback including:
· 3D Racer game,
· Video,
· Continuous tone,
· Binaural Beats,
· Midi,
· Simple PacMan game,
· Session report.
Each element is configurable via its properties. Properties dialog can be accessed on the mouse right button click popup menu. Each properties dialog has common tab Element which contains element name and info. All other tabs are element specific and described in element description (listed below).
Each element has advanced properties. They are usually described in the element description (listed below). For more details see advanced architecture document.
All elements with charts (e.g. Oscilloscope) have chart properties. Chart properties provide many ways to customize chart appearance.
· X, Y position of the chart on the Runtime Window is shown here and can be modified.
· Width, Height size of the chart
· Left margin, Right margin, Top margin, Bottom margin each chart has margins, with their default sizes. If the value here is -1, then the default value is used. Otherwise the select size (in pixels).
· Show name most charts by default show the name in its corner. This option can enable/disable that.
· Show chart frame Select whether to show default charts frame
· Show horiz axis, Show vert axis - Select whether to show default the axis
· Show horiz desc, Show vert desc - Select whether to show default axis descriptions
· Show horiz unit, Show vert unit - Select whether to show the physical measure unit e.g. [uV] or [s]
· Show chart on start if not selected, then the chart will not appear on start (it can be then make visible during runtime using ElementInteractor)
· Background image each chart can have its own background image. This is powerful option to make it very effective, for example to replace all descriptions with a nice font and colors, this option can be used.
· Background image layout This option is used when chart is resized and background image is set. It defines how the background image should be resized.
o TOP_LEFT background image is not resized, it is shown in the top-left corner of the chart with its original sizes
o FILL background image is resized and covers entire chart.
o CENTER - background image is not resized and shown in the center of the chart with its original sizes.
o TILE the background image is repeatedly painted to cover all area of the chart.
· Resize mode this option defines how the chart should be resized. The most common mode is FILL, other modes adds another level of flexibility
o FILL default mode, chart is resized proportionally to the main Runtime Window
o CENTER chart is NOT resized. It is put in the center of the area which would normally be covered by the resized chart.
o TOP - chart is NOT resized. It is put at the top of the area which would normally be covered by the resized chart. This option is especially useful if we do not want to resize a text, and put it directly under another chart (e.g. Oscilloscope) which is resized.
o LEFT, RIGHT similar like TOP option, but the chart is put on the left or right side of the resizing aread.
· Border image this image will be used as border of the chart, see chapter about borders.
· Transparent background if this is selected, then this chart will show its background using the main Runtimes image background. This will make this chart appear like it had a transparent background.
· Frame defines in which container the chart is placed. By default this is main Runtime window. But it can be other window Runtime2, separate Dialog or separate Frame. Separate dialog is a part of its Runtime, e.g. it closes when Runtime window closes, and it doesnt have its own icon. The Separate Frame creates independent window for this chart, its size can be modified by double click on title bar.
Each chart can define colors of all its parts, e.g. axis, trace, agenda, text, grid, etc. To do this, you must select the checkbox and then select the color.
Note: each color here can be also selected from PropertySetter. In such case the checkbox must be selected manually.
Those options here allow set the pen properties of the chart, for example to make the trace thicker in Oscilloscope.
Those advanced options can influence the graphic rendering.
Those settings are default and global for all designs, available
under Menu->System->SystemSettings.
General:
· Designer zoom [%] not used at this moment.
· Designer grid [pixels] grid resolution on Designer window
· Runtime grid [pixels] - grid resolution on Runtime windows
· Maximum start time [s] this is advanced options, usually should not be modified. It specifies how long BioEra should wait before the startup process is interrupted.
· Resizable runtime window if selected then user can resize Runtime window(s).
· Moveable runtime window if selected then user can move the Runtime window(s).
· Clear buffers on resume advanced option, if selected all data in buffers is cleared when processing is resumed.
· Designer has icons designer can be shown in one of two modes: drawn or with icons. Icons are preferred and default mode.
· Allow only one instance if set, then BioEra will not start another instance if it is already running.
· Input buffer length this option was added for better memory management. Each input buffer length of any element is calculated automatically on base of the input rate and this value. For example if the rate is 200Hz, and this value is 2 seconds, then total buffer length is 400. Unless there are higher rates of the signal (example for real time sound processing) this options doesnt need to be modified. The minimum default buffer size is 100.
· Start design after loaded if this is selected, then design is started automatically after it has been loaded.
· Reinitialize all design elements on change advanced, this option is accessed when a properties of an element has been changed in Designer, if this is selected then all elements are reinitialized, otherwise only this one element is reinitialized (which may cause the design to not function properly until next restart). This option should not be changed, unless the design contain a lot of elements (over hundred).
· Native event loop delay very advanced, it is used for special elements like Video or DVD. Normally should not be changed.
· Designer window change when started this option specifies what happens with Designer window when a design is started.
· 3D graphics support defines how 3D support is organized, because on some (especially older) computers the default setting may not work
· Hide detached dialog on X if selected, then any dialog is hidden when mouse pressed X icon, otherwise nothing happens.
· Keep window visible when selected then the window (Designer or Runtime) is moved to main screen if it is not visible. This can happen when design is created on higher resolution monitor.
Chart colors:
· Contain default chart colors. They can be overridden in each individual element.
Color profile:
· Contain colors which can affect graphic appearance of BioEra windows.
Iconified designer:
· Provides advanced options for icon sizes and fonts used to draw elements on designer. Usually should not be changed.
Internet:
· Some options require access to internet. If access to Internet is via proxy, then proxy settings should be set here.
Each design can have its own set of properties modified
under Menu->System->DesignerSettings menu.
General:
· Loop time [ms]: advanced option, elements in design are being processed in a loop one after another. This value defines how long each loop should take (or in other words, how many loops per second should be performed). This option (as opposed to the described below Sleep time [%]) guarantees that BioEra response time will not be longer than the value set here. If this time is set to 0, then BioEra is started automatically in special ultra fast mode, but please note: this mode is not recommended, some elements which are based on real time may not be stable and it may also cause other (then BioEra) programs and applications to slow down. By default this time is set to 10 milliseconds which should be sufficient for most small to medium size designs. If your design utilizes too much processor - try to increase this time.
·
Sleep time [%]: advanced option, it defines the sleep time
relatively to the processing time, which translates directly to computers
processor usage. For example if this value is set to 25%, then BioEra will use
about 75% of the processor on a single core computer. If there are more cores,
then this will be 75% of one core only (which means 35% total processor usage
on dual core). Recommended value is 50% on one core processor or 20%
on dual core processor. By default this option is disabled (set to -1), if set
to >=0 then it replaces the described above: Loop time [ms].
Note 1: this option defines processor usage of the main bioera thread,
which is the most calculation (and processor) intensive, but there are also
other threads (as well as other applications then BioEra) which may increase
overall processor usage, especially on a single core computer.
Note 2: this option is an alternative to the previous Loop time [ms],
it can be preferred if processor usage is important and should not be exceeded
above certain threshold (e.g. on slow computers). The processor usage can be
controlled this way quite precisely.
· Default size of vector buffer: each element has input buffer for each input pipe. This value defines default buffer size for vector input pipe (includes complex pipes). Some elements may not use this default value.
· Default size of object buffer: each element has input buffer in each input pipe. This value defines default buffer size for object input pipe. Some elements may not use this default value.
· Reinitialize element if failed during processing advanced, if an exception (error) occurred during processing of an element, it is deactivated. If this option is set, then this element is reinitialized and started again automatically.
· Stop when a single processing failed if marked, then the processing is stopped when there is an error in any active element. Otherwise the element is deactivated, and processing continues.
· Runtime 1 window hidden, Runtime 2 window hidden runtime charts can be put on either of two separate windows. This allows for example to show them on two monitors. This option is also useful on PDA (with limited screen size) because runtime windows can be quickly switched from one to another providing more information combined.
· Runtime window always on top this is typical Windows option. When selected, then Runtime window will not be overlapped by others.
· Password protection provides password protection for the design. Protected design can be edited only by someone who enters valid password; without password design can be executed but not edited/changed.
· Special design protection
o Requires signature this option will force the design to run on only one instance of BioEra (e.g. on one dongle). See description in the Signed Design chapter.
· Expiry date this option is possible only if password is set, otherwise it has no effect. After the expiry date the design cant be run any more.
· Expiry message can provide custom instruction text with explanation what to do when design has expired.
·
Design URL provides option to automatically check for a newer
(updated) design and download it when never version is released from a remote Internet
network server. This option requires direct access to internet.
Graphics:
· Runtime background color: set background color for Runtime window.
· Runtime background image: each design can have a background image on Runtime window. This helps to create very effective graphic layouts.
· Runtime background image layout: - defines how the background image is painted on the window.
Action:
· Runtime resize (min width, min height, max width, max height): this option allows to set minimal and maximal sizes for Runtime windows. This helps to make sure they are properly displayed. Each value is used (effective) only if greater then 0.
· Resizable runtime window defines the resize options for Runtime windows (overwrites System Setting).
· Required minimum BioEra version: this field contains (optionally) a BioEra version e.g. 2.2.55. If set, then this design will not start on any BioEra version below specified here. This is useful when current design uses options which were not available before.
In some elements it is possible to specify colors. It is possible to use predefined colors (case sensitive): black blue cyan darkGray gray green lightGray magenta orange pink red white yellow or RGB components, see color format.
It is possible to combine two or more designs using NestedDesign element. More details are provided in advanced architecture topics.
More advanced architecture topics are described in
document here.
This chapter provides list and descriptions of all supported elements. This list may not always be complete as the development advances fast; if you have any questions post them on forum.
This element detects a change in activity on the input. If there are incoming samples, then it sets the output to TRUE, otherwise to FALSE. Each value (TRUE or FALSE) is sent only once, when the activity state changes. TRUE is sent for positive activity (one or more samples within ON latency time), and FALSE for lack of activity (no samples within OFF latency time).
Fields:
· ON latency [ms] defines how quickly this element should react after positive action (samples arriving to the input)
· OFF latency [ms] defines how quickly this element should react on no action (no samples arriving to the input)
Note1:
2. Change ON -> OFF is at the first moment when there has been no sample during last OFF latency.
Note2:
1. ON latency is counted after first sample arrived while being in OFF state. This means that any sample which arrived during OFF state will always change the output state to ON. Even if the OFF latency is much shorter then ON latency.
2. OFF latency is counted from the last input sample while being in ON state.
Driver element for Alpha400 EEG device (www.telediagnostic.com).
Fields:
· Mode select source between EEG, Impedance and Calibration.
· Channels select 4 or 2 active channels.
· EEG Range set device sensitivity
· Notch turn on or off notch filter.
· Reference change reference settings.
· Calibration amplitude select calibration amplitude (if Mode Calibration is set)
· Calibration frequency set the frequency of the calibration sine wave
This element can be used to get some information from a Windows application.
NOTE: the application must be opened and be either in normal or maximized mode (not minimized).
Fields:
· Application window title title text on the application window, it is used to find (identify) the destination window. Must contain the exact text or part of it (case sensitive).
· Mode
o Text the destination text is sent to output whenever it changes. The text can be also set from input.
· Settings the destination field can be visually selected here. Click mouse over the rectangle which you wish to select.
Note2: not all application can be controlled that way, only those compliant with Microsoft API. See the list below.
Applications which were tested and can be controlled: Internet Explorer, Google Chrome, Windows Calculator, Notepad, WordPad.
Application which cant be controlled: Mozilla Firefox.
This element can be used to control external (executable) application functions which can be operated by keyboard.
An example is included with bioera (RacerGame) which demonstrates this element in action.
Fields:
· Application executable path to the application. It is automatically started when design is started.
· Application window title this title is set on the application window.
· Start sequence those keyboard codes are sent to the program on start. You can use KeboardAdvSource to find out the code for each button.
· Stop sequence - those keyboard codes are sent to the program on stop.
· Key codes each logical input controls one key/button defined here. Logical TRUE pressed the key, and FALSE releases it. Please note: the application needs to be in focus to receive the keyboard key events.
· Window coordinates location of the window and the size [x,y,width,height]
· Start delay [s] some applications take some time to start. The above parameters can be set only after it has been fully started; this delay defines when this will occur.
· Close application on stop if selected application is closed when processing stops.
This chart shows vertical bar. Height of the bar is controlled by input value. Level inputs control horizontal line (shown only if Level input is connected), which should be used only for slowly changing signals (e.g. auto-threshold).
Fields:
· Level1 color, Level2 color colors of the horizontal level lines
· Redirected if set, then bar is displayed from top to bottom otherwise it is displayed from bottom to top
· Bar image if this image is set, then it is used to print the bar, otherwise solid color fills the bar
· Rescale level should be usually set
Advanced Properties:
See the description of the scale properties in Oscilloscope description. For BarDisplay only vertical axis settings are implemented.
Note1: level (horizontal line) is visible only when either input or output is connected. For example to show Level1, either input Level1 or output Level1 must be connected.
Note2: level can be dragged with mouse only when corresponding output is connected. For example level1 can be dragged only when output Level1 is connected.
This element provides an interface for older BrainMaster EEG device (www.brainmaster.com).
Fields:
· Mode
· 1 channel 1 channel mode.
· 2 channels 2 channels mode.
· Initialize device select whether to initialize the device.
Note 1:
It has been confirmed, that this elements works well with older BrainMaster 1.0 devices. But only if the initialization if turned off (the initialization sometimes doesnt work). Therefore to use this element you need to clear the Initialize device checkbox!
Note 2:
Newer BrainMaster devices may not work with this driver, use
BrainMasterAtlantis instead.
This element provides an interface for all BrainMaster EEG devices (www.brainmaster.com).
It requires Passkey which can be purchased directly from BrainMaster company.
Driver element for Bluetooth GPS receiver. It was tested with BTGP38 device, but it should work with all GPS receivers which use NMEA protocol (most do).
Outputs:
Interactive option feature for the user.
Fields:
· Label text label displayed on the button.
· Initial state can be enabled or disabled, button can be enabled/disabled using its logical input
· Initial output state defines what logical value send to output when the design is started
· On press output state when button is pressed
· On release output state when button is released
· On hold - if the button is pressed and hold for more then 1 second, then this option allows to repeat (send) the last value configured in "On press" option until released.
Advanced features:
· Top shade color used when mouse hovers over the button
· Bottom shade color - used when mouse hovers over the button
· Mouse hover image this image is displayed when mouse hovers over the button (changes back to background image when mouse moves out of the button area)
· Pressed button image image displayed when button is pressed
· Disabled button image image displayed when button is disabled
Note 1: regular (not-pressed) button image can be
set in Chart Properties (Background image).
Note 2: layout/resize options of the above images are set in Chart Properties.
This advanced element allows automatic control of the position and size of charts (applied during resize). It can be useful for designs which require more sophisticated resizing.
This element replaces default (proportional) resizing on current Window. When it is added in a design, then it must select all charts (unselected charts will not be visible).
Properties:
· Layout manager
o BorderLayout simple layout described here
o GridBagLayout very sophisticated layout described here
This element draws a line on a chart. Currently it can be connected only to Oscilloscope or Polygraph.
Properties:
· Orientation:
o Horizontal horizontal line is drawn across entire chart width.
o Vertical cursor vertical line is drawn at the latest trace position.
· Type: type of the line
o Solid solid line, 1 pixel width
o Dashed-3-4 dashed line, 1 pixel width, 3 drawn pixels are followed by 4 pixels empty space
· Channel channel index (starts from 0) of the destination element with many channels (Polygraph).
· Color color of the line.
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)
This element sends current color of any pixel on the connected chart.
Inputs:
· Element element with chart must be connected here
· X,Y position of the pixel on chart
Outputs:
· Color color is sent as object
· RGB color is sent as scalar
This element contains set of colors which can be used for processing. Each color is selected by a numeric index (scalar coming to input), first color index is 0, second color index is 1 and so on.
Fields:
· Color Set contains all colors, each color is separated by either | or ,
Each color defined in Color Set field can be defined in one of those formats:
· R-G-B or R-G-B-A, where R red component, G green component, B blue component, and A optional transparent component. All values must be decimal. E.g. 255-0-0-128 is half transparent red color, and 0-255-0 is an opaque green.
· RRGGBB or AARRGGBB, where AA alpha (transparency), RR red, GG green, BB blue. All values are hexadecimal numbers, each number contains exactly 2 characters, e.g. 00FF0000 is red color, and 00FF00 is green color.
· Predefined color names: black blue cyan darkGray gray green lightGray magenta orange pink red white yellow
This element provides option to control designs behavior from toolbar with combo (drop down list) component.
Fields:
· Toolbar position determines position of this control (icon) in toolbar. This value is only relative to others, not absolute. It assures that lower element with lower number is always on the left of an element with higher number, e.g. value 3 doesn't mean position 3 from left; it means that all elements with higher numbers are on the right, and with lower numbers are on the left. This field is available in all elements which can be placed on toolbar.
· Label text description label shown in the toolbar at the left side of the combo control
· Fields selection fields that are shown in the combo
· Values corresponding values for the fields that are used for processing
This object provides FFT transform being calculated on complex streams.
This object will provide functions to convert complex stream to vector stream.
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).
This element allows set listed properties (font, colors) in graphic components like: InputText or ComboToolbarControl and others.
· Component the graphic component is selected here
· Travers subcomponents if this is selected, then all subcomponents are also affected, otherwise only the selected components properties are set.
This object counts number of occurrences.
· Time period [s] if greater then 0, then occurrences are counted within this time period; otherwise they are counted since the processing start. Real time is measured; it is independent from input rate.
· Count functions:
o SAMPLES counts incoming samples
o INVOCATION counts how many times the processed() method was invoked.
This is a simplified (and less computation expensive) version of Counter. It sends output value only once in each Time period.
This is a special version of Counter which counts only samples and calculates time based on the input rate (not real time). This can be useful for example when data is processed in a batch (not in real time).
The first input is used as a time base.
The first counter is the closest to the input rate. All other counters are relative to the first counter.
Example: rate is 256sps, and Time period is 1s. In the first five consecutive loops first input receives: 110, 120, 130, 0 and 50 samples, the second input receives 10, 20, 100, 40, 50 samples. The first output will send values: 110, 230, 250 and 180, the second output will send 10, 30, 120 and 190.
This element can be useful for java developers. It allows create a custom element linked dynamically during runtime.
The class must implement at least one interface: ExternalSource and/or ExternalSink, for output and/or input data.
For more control another interface is available: ExternalInit, it provides methods like start(), stop() etc.
Here is a demo java class source which implements all the above interfaces (set as default). It multiplies input signal by 2.
Here is the interface documentation.
Fields:
· Java class contains fully qualified class name (with package) that implements ExternalSource and optionally ExternalInit interfaces. This class must be on default CLASSPATH, for example in impl folder.
Example implementation steps:
This element provides various functions which can be used to interact with system or environment.
Fields:
· Action select the action
· Input trigger select what triggers this element
· Immediate whether to allow this element working outside of processing mode.
This element produces text output from many data inputs. Each input can be of a different type, e.g. Float and Text.
Fields:
· Format format string defines how the input values should be concatenated. Full specification is available here: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html. This must be precisely defined, otherwise an error will be generated AFTER this element starts processing.
· Country values can be formatted according to the selected country standards, for example numeric or date or amounts etc. If Default is selected, then the country will be selected according to Windows operating system settings.
This is BioEra driver for USB DAQ6008 National Instruments device http://www.ni.com/pdf/manuals/371303h.pdf . It can read/write analog (voltage) signals from and to ADC/DAC converters. It also can set and read digital inputs/outputs.
Fields:
· Analog input range range of the eight input ADC converters. Lower range provides better precision (the number of bits is the same).
· Input configuration
· Digital I/O mask the DAQ6008 has 12 digital pins. Each can be configure as input or output. This parameter here defines which bit is set as output. For example value=1 means that only bit 1 is output (all other are inputs), or value=13 means that bit 1, 3 and 4 is set as output.
· Rate the sample rate of the voltage acquisitions is set to this rate. For example 1000 will provide thousand analog samples from the device.
Note: this driver can be also used for other National Instruments USB devices but has not been tested.
This element sends precise number of seconds (or milliseconds) starting from midnight.
Note: this element is not supported any more. The TimeSource should be used instead.
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.
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.
This object lets through only part of the samples that came to the input.
· Send samples number how many samples to pass.
· Skip samples number - how many samples to abandon.
This element holds the data from input for the selected time period, which is then sent forward unchanged.
Fields:
· Delay defines how long the data should be hold befiore sent to output.
· Send initial zeros can be used only with the Use input rate to measure time described below. If set, then zero values are sent to output at start, the amount is equal to the delay. For example if the Delay is 100ms, and the input rate is 250sps, then 25 zero values is sent to output on start.
· Use input rate to measure time if selected, then the input rate is used as a time reference. Otherwise, real time is measured. Note: this option is recommended if the input rate is known and constant, e.g. from a device.
This object passes input stream to selected outputs.
Fields:
·
Binary if set then stream is sent
to many outputs. Each bit in the value coming to SEL input is used to select
output index. For example number 1 selects output 1, number 2 selects output 2,
but selector value 3 selects outputs 1 and 2, number 4 selects output 3, number
5 selects output 1 and 3 and so on.
If this flag is not set, then input value selects only one output directly by
its number, number 0 is for first output.
Inputs:
· IN data stream
· SEL selected output(s)
This element provides a list of all command line arguments passed to BioEra (anything not prefixed with -, and not ended with .bpd). It can be useful for automation and background data processing.
Number of outputs corresponds to the number of arguments. Each text output contains one argument.
This object allows to load a design from within another design.
Fields:
· Path path to the design file.
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.
This triggered interactive element allows to select text
(or index) value from a drop down list. Its functionality is identical like
ComboToolbarControl.
This is triggered interactive element can be used to ask user to select a file or folder on local file system. This is a more advanced version of the same function provided in CustomInteractor element.
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
This element plays and controls DVD. It is only available on Windows OS. There is an example design attached with demonstrated how to use this element.
Fields:
· DVD video decoder allows to select which DVD codec is to be used (if more then one available in system). This option is good only if codec has been properly configured for BioEra. Currently supported codecs: InterVideo (WinDVD) and PowerDVD (CyberLink). Other codecs may also work.
· DVD drive physical drive available in Windows system like D: or E: or a path to DVD files located on hard drive. If this field is empty, then default DVD drive will be automatically selected.
· Reflect time range if set, then the video can start at specified time.
Advanced Settings fields:
· Manual codec setting only if selected then the following settings will be used, otherwise BioEra uses DVD video decoder setting.
o Video codec manual video codec
o Audio codec manual audio codec
o Navigator codec manual navigator
· Brightness available, Contrast available, Saturation available, Hue available, Sharpness available, Gamma available this is read/only checkbox (change has no effect) is set after DVD starts playing. It shows whether particular filter is available in hardware. If yes, then it can be controlled from elements 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 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 elements output pipes.
· Keep original rate whether read data from this file at the same rate as stored.
· Read in loop if the reading should be repeat in a endless loop
Interactive properties (available via PropertyGetter/Setter):
· Current sample index this property can be used to get current position or set it.
· Recorded samples returns total number of recorded samples.
· End-of-file reached signals end of file.
Note: All channels stored in EDF file must have equal characteristics (the same signal parameters e.g. amplitude, rate etc).
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 object provides interface for NeuroAmp EEG device (www.eeginfo.com).
Settings:
· Line frequency
o 50Hz
o 60Hz
· Mode
o EEG EEG acquisition mode
o Impedance impedance mode
Advanced settings:
· Delay [ms] delay between commands send to device required in older versions of firmware.
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 provides special actions which can be performed on an element(s) in current design. For example: to activate or deactivate an element.
Fields:
Note: this element is not supported at this moment.
This very advanced element allows create a custom program using full power of Java language. The code entered here is compiled on-fly, so that it can be executed with maximum speed (just like all other code).
Here is the official documentation of additional functionality that can be used inside the source code to set/get information about BioEra environment and properties. Besides that all standard java functionality is available (for example Math class).
Sections:
· Declaration declare global variables here
· Construction construct all structures that will not require any changes later
· Re-initialization executed whenever there is a change in the design.
· On start executed just before processing is started
· Processing the main process method, it should be optimized for highest possible performance.
· On stop executed when processing is stopped (either by user action or on error)
Fields:
· Font size set the font size in the above sections.
Prerequisites:
Although some java knowledge may be useful to use this element (and full power of java platform), it is not absolutely necessary to create a simple program. It will be definitely not a problem for anyone with a minimal programming experience. The example code (provided with each new instance of Evaluator) implements a simple mixer (a sum of two inputs).
Installation: here.
Note: When the code is being created, all errors and problems are printed on console. Therefore it is necessarily to start BioEra in console mode.
Note2:
It may be necessary to restart BioEra whenever the source code in the evaluator has changed.
This element can read and parse numeric data in a text file. Data format must meet certain criteria, for example only one character can be between lines (packets) or between channels. Most programs can export like that, very often lines (packets) are separated by End-Of-Line character, and channels are separated by comma (,), semicolon (;) or tabulation.
Fields:
Data samples are saved in a text file.
Fields:
This element can be used to create simple expressions calculated with using values received to inputs e.g.: (In1 + In2) * Math.sqrt(In3)
Input values are represented by predefined identifiers: In1 for input 1, In2 for input 2 and so on (maximum 20 inputs). All mathematical functions available in Java can be used for example: Math.sqrt(In1), Math.power(In1, In2) etc.
An output value is calculated and sent when at least one input value arrives. If any other input doesnt receive a value at the same time, then previous (remembered) value is used for that input to calculate entire expression. Therefore the output rate is the same as the highest input rate. By default all input values are set to 0 before start.
Expression is compiled into java byte code and stored in the configuration. It is then reused during next start, so there is no recompilation or delay. It also can be executed on BioEra PDA without expression compiler.
If more then one output is needed, then more advanced form of expression is required. Expressions created that way must be separated by semicolon (;). And each expression must start with assignment to proper output, e.g.: Out1=(In1+In2)/2;Out2=(In1-In2)/2
Fields:
Expression expression text, e.g.: (In1 + In2) * Math.sqrt(In3)
Expression reference links:
· Very useful Ternary conditional operator (?:) is described here.
This object performs FFT transformation and sends vectors as results.
Fields:
· Period [s] processing time interval, this must be power of 2, for example 1, 2, 4, 8, 16 etc. or 0.5, 0.25, 0.125, 0.0625 etc. Make sure the input rate is high enough for very small periods.
· Rate how many computations is done per second.
· Fast response if this is set, then all data in input buffer is being processed according to above rate, otherwise only the most recently received data is processed once and the buffer is purged.
· Subtract bias removes bias from the result.
· Maximum frequency shows maximum frequency calculated according to the above settings.
· Frequency resolution shows the frequency precision.
· FFT type chooses FFT algorithm. At this moment there are 3 types:
o INTEGER performs calculations on integers. It is the fastest method but can process samples of only up to 15 bits.
o FLOAT - performs calculations on floats, this option is slower then INTEGER (about 2 times slower on my PC). The main advantage is that it always works, for example INTEGER may not work well for input samples of more then 15bits.
o NATIVE allows use of external (native) FFT on integers.
· Window provides options for FFT windowing type.
· High resolution of amplitude if set, then FFT output resolution is increased to 15 bits. This means that in some other elements (that process FFT results) digital scales or values may not work any more (unless defined for 15 bit values). The microvolt and percentage scales are fine.
· Adjust length if set, then the length of the window is automatically adjusted to the closest value that is power of 2. This option is useful if input rate is not power of 2. If not set and the input rate is not power of 2, then this element is deactivated.
· Calculation error shows error that is a result of adjusting window length (to be power of 2).
This is more specialized version of FFTTransform. It provides ability to operate on complex values of the FFT.
There is no windowing on input. And there is no square root calculation on output.
Inputs: RE (real) and IM (Imaginary)
The RE input must be connected. IM input may be not connected (it is substituted with 0 filled vector in such case).
Outputs: RE (real) and IM (Imaginary)
Outputs send real and imaginary coefficients as two vectors.
For more detailed information refer to Fast Fourier Algorithm.
This element has been deprecated and is not supported any more. Either EDFFileReader or XDFFileReader should be used instead.
This element has been deprecated and is not supported any more. Either EDFFileWriter or XDFFileWriter should be used instead.
This object allows digital filtering.
Fields:
· Filter type chooses filter type (high pass, low pass, etc).
· Filter order selects order of the filter.
· Low/middle frequency it is low frequency in band pass/stop filter, or middle frequency in low/high pass filter.
· High frequency it is high frequency in band pass/stop filter.
· Implementation choose which implementation of filters should be used, currently Fidlib.
This object can play and control Macromedia Flash animations. The control is achieved using flash variable which can be set dynamically.
Fields:
· Flash file: path to the flash file
· Variable names this variable is set (in the flash movie) for each input
Note: input can receive either Logical values or Scalar values. If the logical value arrives, then 1 or 0 is sent to the flash movie. If scalar value arrives, then its float value is sent to the flash movie.
This element converts float value to scalar value.
Mode:
· TRUNCATE rounds the float value to the lower integer, e.g. 2.3 becomes 2, and 3.9 becomes 3.
· ROUND - rounds the float value to the closest integer, e.g. 2.3 becomes 2, and 3.9 becomes 4.
· TO_DIGIT_FLOAT the float value becomes scaled by 1000 ratio
· SCALED - the float value becomes scaled by DIGITAL_MAX/PHYSICAL_MAX factor (set in Signal Properties)
Input SP can be used to inherit Signal Properties from another element.
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
This element can be connected to Oscilloscope, Polygraph, BarDisplay, NumericDisplay and VectorDisplay.
Mode:
· MANUAL trace on the destination element is remembered and restored (and rescaled if needed) after the element has been reinitialized during processing (e.g. from PropertySetter).
· AUTO amplitude of the trace is monitored continuously and if it gets out of the range, then the scale range on the destination element is automatically adjusted (and destination element reinitialized).
· Refresh period [s] how often to adjust the auto range
· Auto gain detection time [s] auto range is calculated over this time period.
· Margin [%] defines upper and bottom margin. Signal maximum must stay within upper margin, and signal minimum must stay within lower margin. If any of those go outside their range, then auto range change is performed, so that (directly after the change) signal maximum/minimum is in the middle of its margin range.
· One scale for all channels if set then the same auto range scale is used for all signals on Polygraph. Otherwise each signal is auto-ranged separately.
· Special options per channel if auto range is to be performed only on some channels but not all, then excluded channels can be set here to manual (if nothing is set, then auto range is assumed).
· Attached base if selected and if the signal is unbalanced (range from 0 to MAX), then only the maximum is adjusted, and minimum set to 0. This can be useful in BarDisplay or VectorDisplay, when only upper amplitude should be adjusted.
· Center signal request that the signal is centered on the currently visible area.
· Keep original range if set, then original range (set in elements properties) is preserved. Can be useful together with Center signal to keep signal in visible area without changing its range. Implemented now only on Oscilloscope.
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 PCMPlayers event line is connected, in such
case amount of generated data is controlled by PCMPlayer.
This element has been used and tested almost exclusively with PCMAudioPlayer, it should not be used to create a bio signal simulation (use SimulationSource in this case).
Functions:
· SINE sine signal
· TRIANGLE triangle signal
· RECTANGLE rectangle signal
· NOISE noise, random values within defined range.
Fields:
· Frequency [Hz] frequency of the signal being generated
· Amplitude [peak-to-peak] amplitude of the generated signal
· Signal range full output range (this value is used in other elements connected to output).
· Phase shift [0-360] defines phase shift
· Points [sps] defines how many samples per second are being generated.
·
Frequency factor this value is used only if the
frequency is being changed dynamically by input Freq. It allows setting
frequency at fraction of hertz (non integer) using integer input value. If this
value is 1, then it is neutral (no impact). If this value is greater then 1,
then the input frequency value is divided by this factor. Frequency factor must
be power of 2.
Example 1: the frequency factor is set to 4, and the input value (coming
to Freq input) is 1. The generated frequency will be 1 / 4 that gives 0.25Hz.
Example2: We need precise frequency of 13.5Hz. So we set frequency factor
at 2, and input integer value of 27 will generate precisely 13.5Hz (obviously
the input value of 13 will generate 6.5Hz).
Using of frequency factor requires appropriate set in the design, so
that input values coming to the Freq input reflect this factor.
· Smooth frequency change if set, then frequency is being changed slower according to Frequency change dynamics field.
· Frequency change dynamics defines how quickly should the frequency change. The minimum value is 1 (fastest change). Each higher value increases frequency change time.
· Remember if this checkbox is marked, then the last input value coming to Freq or Amp is remembered and stored in Frequency or Amplitude field.
· Buffer bottom threshold [%] defines the bottom point in the output buffer from which it is populated.
· Buffer top threshold [%] - defines the upper point in the output buffer up to which it is populated
This is special element which allows to process elements BEFORE main design is Started. That can be used to operate some user controls which are used before start, e.g. icons in a Button element or Slider values.
Note: this is very specialized element, used rarely. It is not recommended unless necessary.
This special element allows to group properties of
several elements into one. It can be useful for example to change one property
to the same value in multiple elements of the same type e.g. change range in
multiple BarDisplay elements.
This element can detect whether mouse cursor is over a
hot spot (defined rectangle on the chart). It can be used for example to create
custom buttons on an image.
Fields:
· Hot spots array of rectangular hotspots. Each hotspot must have 4 coordinates: x, y, x1, y1. The x, y values are absolute coordinates starting from the top-left corner of the chart. The x1, y1 are either absolute coordinates or relative to x, y.
· Absolute coordinates if selected, then x1, y1 are absolute coordinates (relatively to chart), otherwise the x1 is the width and y1 is the height of the hot spot.
· Cursor cursor chosen here is shown when the mouse is over the hot spot. It reverts to default when mouse is moved out of the hot spot.
Value sent to any output is an index in the Hot Spots array. If the mouse if over a hot spot, then the value of 0 or more is sent, otherwise -1 is sent.
Outputs:
· Moved hot spots are recognized when mouse moves
· Pressed hot spots are recognized when mouse is pressed
· Released hot spots are recognized when mouse is released
This element provides option to control designs 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 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.
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
This element creates an image according to the selected function.
Function:
· Chart image of the selected chart is sent when triggered.
This element reads images from graph files and provides to the design as object image stream. Next image is sent when input is triggered. The trigger is defined in Input trigger field.
Fields:
· X, Y, Width, Height defines position and size of the file image in output image. This is useful if images stored in files have different sizes.
· Actual width, Actual height shows the actual size of the output image
· Image files paths to the image files
· Color type defines color format of the output image
This object converts image from image stream to matrix (vector stream).
Note: this element is not
supported at this moment.
This element performs various transformations (rotation, zoom etc) on input image.
This element allows user to select between ON and OFF state on a checkbox and process it in the design.
This element allows user to select among list of items in a combo box list and process it in the design.
This element allows user to select among list of items in a list and process it in the design.
This element allows user to enter the text and process it in the design.
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).
This element is for iterations it can generate a sequence of values different by a constant value (step), for example from 1 through 10.
Fields:
· Start value start value, iteration starts from here in Normal mode
· Stop value end value, iterations ends here or at a value that is closest but not larger then this one.
· Step step, iteration is increased by this value
· Initial value iteration starts from here in the mode Start from the Initial Value
· Loop whether this iterations should be repeated or not
· Loop count if set to greater then 0, then iteration will end at this loop
· Iterations how many output values are generated per one input trigger
· Input trigger select input trigger type
· Bidirectional can be used to iterate in both directions. Backward direction is possible only if Input Trigger is set to Any Sample; then if the input trigger is TRUE, then iteration goes forward, if it is FALSE, then iteration goes backward.
· Mode
o Normal iteration starts from the Start value
o Remember last value the last iteration value is remembered in the Initial Value variable. Next start is from this value.
o Start from the Initial Value iteration starts from this value.
· First iteration on start if selected then the iteration starts when the element is started.
This object provides interface for J&J C2-Plus device (www.jjengineering.com). It allows flexible/customized configurations. The device can be also accessed from inside DeviceSet element.
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 BioEras window doesnt 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 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,
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 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 BioEras window doesnt have focus.
Differences:
· There is no input pipe in this element; key codes are taken directly from system.
· This element doesnt 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 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,
This element is very simple. It displays a rectangle (or other shape) using one of two configured colors. The color is selected using input Logical value (true or false).
This is a driver for Lightstone device produced by Wild Divine Group http://www.wilddivine.com.
Note: current version of the driver supports only devices with vendor id VID_0x14FA and product id PID_0001. Those parameters can be viewed on Windows in Device Manager like on the picture here.
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.
This element provides logical functions for many inputs.
Rate is not considered. The last value on each input is remembered and used if
no data arrived to this input at the moment of calculation. New logical value
is sent to output whenever anything arrives to any input.
Fields:
· AND logical AND,
· OR logical SUM.
MatrixToImage
This object converts
input matrix into an image. The matrix was usually created using earlier
ImageToMatrix.
Note: this element is not supported at this moment. It might not work.
MatrixTransform
This object contains
various transforms on input matrix.
Note: this element is not supported at this moment. It might or might not work.
This object can play video and/or audio. It requires additional installation of media package, either JMF or QuickTime for Java (or both). More information about installation and supported formats can be found in installation section here.
Note: to play a video file, it is better to use VideoFilePlayer.
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 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 object provides driver for MindFields temperature sensor (http://www.mindfield.de/).
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.
This element can be used together with MIDI to play sounds only on the selected scale.
Fields:
· Scale selected musical scale. For example Pentatonic Major C scale plays only notes C, D, E, G, A. The None is the Chromatic scale.
· Key the scale key
·
Range
[0 127] if selected, then input range is 0 to 127, the same
as the range of the MIDI input. For example value 60 in Pentatonic Major C
scale will play C (60), value 61 will also play C (60), value 62 will play D
(62) and so on.
If this value is not selected, then the input range is less then 127 and
depends on the note count on the scale. For example Pentatonic Major scale
contains 5 notes, so the input range will be 55 (5 * 10.5). The input value 0
will play note C (0); input value 1 will play note D (2), input value 7 will
play E (16) and so on.
This object provides interface for MindMaster EEG device (www.mindmaster.de).
Fields:
· Mode
o EEG EEG acquisition mode
o Impedance impedance for channel ch1-, ch1+, ch2-, ch2+, DRL
o Calibration calibration for channel ch1-, ch1+, ch2-, ch2+
Input: typically must be connected to SerialPort element.
Outputs:
· EEG1 EEG channel 1
· EEG2 EEG channel 2
· Impedance output for Impedance
· Status status code
Status code is sent once per second. Code:
0 OK, no error detected.
1 Synchronization frame not found
2 Synchronization frame invalid.
3 or more Other error.
This object performs various arithmetic operations on two input streams; both input streams should have the same rate. The rate of the output is the same as the rate of the input A (unless ONLY_INPUT_B option was selected).
Functions:
1. SUM, is A + B
2. DIFFERENCE is A - B
3. MULTIPLICATION is A * B
4. AVERAGE (A + B) / 2
5. MAX is max(A, B)
6. MIN is min(A, B)
7. ONLY_INPUT_A, ONLY_INPUT_B this option can work as a selector between inputs.
8. DIVISION is A / B
9. ABS DIFFERENCE is absolute value of A - B
10.ASSYMETRICAL AVERAGE it averages both input samples, or passes sample from input A if there is no available sample at B.
This object is very similar to Mixer, but it has dynamic inputs. Because of that it has less functions then Mixer.
This object decodes P2 protocol stream from ModularEEG, details can be found on http://openeeg.sourceforge.net.
This object decodes P3 protocol stream from ModularEEG, details can be found on http://openeeg.sourceforge.net.
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.
This is a very unique element. It allows gradually hide or show chart by morphing its image to the background image. Internally this element works like a simple movie or animation creator/player, first the movie is created and then played. This operation may spike processor usage for a moment, but since the animation time is usually short (1 second by default) then there is no impact for the main process (all is done in its own private thread).
Fields:
· Morph time [s] entire operation (hide or show) takes this long.
· Refresh rate defines how many times per second the image will be updated (animation grade).
· Mode mode
o Default this mode works with any background
o Fast, black background this method is about twice faster then the above, but it requires black background color.
· Action determine how the show/hide operation is triggered.
This element provides mouse pixel position coordinates on the screen. Outputs X and Y send values when mouse changes its position.
This element provides info about the mouse cursor/buttons when it is over the chart.
Input
· Element an element with chart is connected here
Outputs
· X X position of the mouse on this chart, note: this value is sent only for connected outputs below
· Y Y position of the mouse on this chart, note: this value is sent only for connected outputs below
· Press/Release sends TRUE when mouse is pressed, and FALSE when it is released, mouse position are sent at those times to X, Y outputs
· Enter/Exit sends TRUE when mouse is moved over this chart, and FALSE when mouse is moved out of this chart
· Drag/Move - sends TRUE when mouse is dragged over the chart, and FALSE when it is moved over the chart, mouse positions are sent at those times to X, Y outputs
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
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.
This element can be used to embed a nested design. Properties of the elements from the nested design can be modified here, but the layout (elements and connections) can be edited only in a separate/standalone design.
Useful functions of a nested design:
1. globalization (the same nested design can be used in many other designs and modified only once)
2. clarity (large number of elements in one design is hard to manage, it is better to split them into smaller designs)
3. reusability the same functionality can be easily multiplied
Fields:
· File path path to the nested design file.
· Nested initialization select how properties of the nested design are saved and loaded
o Load global properties properties are loaded but not saved (design is saved only when loaded as standalone).
o Load global and save - properties are loaded and also saved in the nested design file. This option is useful for globalization of the settings (which can be accessed from different designs).
o Load/save local properties the properties are stored in a local copy. Only the elements, connections and default (initial) properties are loaded from the nested design file. This setting is optimal for reusability, for example one chart from the same nested design can have different location in this mode.
· Nested design password if the nested design file is protected by password, then it can be set here. It is also possible to set this password in Advanced Properties. Read note below about password behavior.
Advanced properties:
· Nested initialization it is the same as above, it is accessible also when properties of the NestedDesign element are hidden.
· Nested design password it is the same as above password, it is accessible also when properties of the NestedDesign element are hidden.
· Reset local properties if selected then local properties will not be saved, but only one time. This field will be automatically set to FALSE during the next design load.
Note: password is required only to edit/view the nested design (Open Nested design option is available on the mouse right click over the NestedDesign element). Password is not required to run the nested design. To make a nested design more closed it is recommended to include NestedProperties element which will limit the access to properties.
This object can be added inside a nested design. Each
output in this element will become an input on the NestedDesign element.
Fields:
· Input names this option sets manually names of the pipe inputs. If not set, then the names will be the same as in connected elements. Note: All names of the interface must be unique (case sensitive).
This object can be added inside a nested design. Each
input in this element will become an output on the NestedDesign element.
Fields:
· Output names this option allows set manually names of the design outputs. If not set, then the names will be the same as in connected elements. Note: All names of the interface must be unique (case sensitive).
This element can be added inside a nested design to customize its properties (presented to the outside world in NestedDesign element) and behavior.
Output can be connected to one or more PropertyBuilder elements; each PropertyBuilder creates a tab on properties (visible when this nested design has been put in main design).
Note: this element hides all default properties in the NestedDesign element, so if any property needs to be set (e.g. initialization mode), it has to be done before path to the nested design file is set.
Fields:
· Force NestedDesign to save local properties in most cases it makes sense to use NestedProperties only when Load/Save local properties mode has been selected in NestedDesign. If this option here is set, then the mode Load/Save local properties will be always set in NestedDesign. Otherwise it may be set to any mode in NestedDesign element manually (but only before the design is loaded first time because its properties are later hidden by the NestedProperties).
· Allow dynamic connections if set, then nested design can have dynamic pipes. This is possible if the last pipe of a NestedInputs or NestedOutputs is connected to an element with dynamic pipes (e.g. EDFWriter or Polygraph).
· Propagate nested dynamic connection this is effective only if the above option was set. If set, then dynamic connection propagates from input/output as long as there are dynamic elements on the path. For example if the input is connected to Synchronizer, which is then connected to Polygraph, then dynamic connection will be added from input to Synchronizer and also from Synchronizer to Polygraph. It can be observed by opening nested design using Open Nested Design option in popup menu (right mouse click over the Nested Design element).
·
Requires
password to run This option is useful if a password was set for
this design.
Note: in many cases this option is not needed. If not set then this nested
design can be run but not viewed or edited. If this is set, then this design
can be edited and run only when the password is correctly set in clients
design.
· Element initial name useful when this nested design is used as a library or component. This name is used when such a nested design was added on Designer.
· Designer icon icon visible on Designer
·
Charts
are nested into one chart if set, then all charts in this nested design are
put into a single chart (which contains them all). This nested design with
nested chart can be then used like any other element with a chart.
Limitations: some options are available if this option is selected:
All nested charts must be on
the same container. This means that the Frame options in Chart Properties of
all internal charts are ignored.
Individual Chart Colors are
overwritten by the nested Chart Colors.
This object connects to a specified network server, and once a connection is established it exchanges scalar data through network. This can be any network server (not only NetworkServer available in BioEra), for example a web server.
Fields:
· Host address of the server, can be DNS or IP address.
· Port port to connect to.
· Reconnect count if this is greater then 0, then connection will be re-established after Connection delay timeout. If connection cant 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.
This object listens on selected port (in a thread), and once a connection is established it exchanges data through network. Only one client can be connected at a time. Any TCP client can be connected, not only NetworkClient available in BioEra.
Fields:
· Port port number the server listens to.
Driver for Neurobit EEG devices (www.neurobitsystems.com).
More info about device installation can be found here.
Fields:
· Device Name select the device model
· Device Settings this button opens dialog with device settings. This dialog is provided by Vendor, any questions about it should be directed to Neurobit Systems.
Note: If sample rate is set higher then 500sps, then the Sleep Time design setting must be 3ms or less.
This element is not available any more.
This element is not available any more.
This is a driver element for an undisclosed QEEG device.
This is an element used primarily with the NeuroSync element for QEEG remontage.
This is a driver for Nia device produced by OCZ Technology.
It provides raw EEG/EOG/EMG signal delivered by Nia USB device.
This is a driver for Nonin 4100, a wireless bluetooth oximeter http://www.nonin.com .
This element allows to popup a dialog window that must be then confirmed by user. Further processing depends on chosen function.
Functions:
· STOP PROCESSING processing is stopped.
· PAUSE PROCESSING processing is paused, and resumes automatically after user closes the Notice dialog.
· CONTINUE PROCESSING processing is continued without a break.
Fields:
· Messages contains messages that are shown in the popup dialog depending on input value. For logical stream, only first 2 fields need to be set. First for FALSE and second for TRUE. It is possible to define more messages that will be chosen for higher numbers. If a message is not set, then it is considered as not active (no popup window).
This element is similar to Notice. It shows user dialog with selection between Yes and No. When the option is selected and dialog closed, the selected value is sent to output as TRUE or FALSE.
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 %)
This element can compare objects which are comparable. Currently the only comparable object is: Text.
This element counts input objects e.g. texts or images.
This element can show some information (on Console) about the object value it received on input.
This is an interesting animation element. Planets move around their center (Sun). Each planets 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 planets 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 icons actual size.
Note: this element is not available at this moment.
Draws input data on graphic chart like on an oscilloscope.
Inputs: Level1 and Level2 perform both the same function. Each can display a horizontal (dashed) line. It can be useful to show threshold(s) level on top of the signal.
Fields:
· Time range [s] time range in seconds
· Amplitude range amplitude range (contains value, value unit, scale (display) unit).
· High precision if set then all values are printed on screen. Otherwise averaged value is printed. This makes a difference when there is more values then pixels to draw on.
· Reflect time range if marked then the time range is set automatically to values provided by any other (predecessor) element that defined it (TimeRangeFilter or ArchiveReaders).
· Show grid indicates whether to show grid lines on the chart.
· Display mode defines how the trace should be drawn on chart:
o Redraw trace is printed from left to right, chart is cleared when trace reach the right side
o Overlap - trace is printed from left to right, trace overlaps previously drawn trace.
o Scroll to left trace is scrolled to the left, so that most recent data is on the right side of the chart
o Scroll to right trace is scrolled to the right, so that most recent data is on the left side of the chart
· Level color sets the color of the Level dashed line (connected to either Level1 or Level2 input)
Inputs:
· In input signal arrives here, the trace is drawn based on this data.
· Level1, Level2 allows displaying horizontal dashed line. The most recent input value sets the current line level.
Interactive Properties:
· Offset allows to dynamically shift the trace vertically (up or down).
Advanced Properties:
· Vertical axis max value force the maximum value on the vertical (Y) axis. Note: this is only a description and doesnt influence the signal amplitude.
· Vertical axis min value force the minimum value on the vertical (Y) axis. Note: this is only a description and doesnt influence the signal amplitude.
· Vertical axis unit set the unit on the vertical (Y) axis
· Vertical offset sets the vertical offset (trace is shifted vertically). This value is overridden by the Offset in Interactive Properties (if set there).
· Vertical steps if 0 then the scale is automatically created, otherwise this value defines how many steps are on the (Y) scale
· Vertical precision if greater then 0 then this value is used to set number precision on vertical axis. One digit after dot is 0.1, two digits 0.1 and so on. If this value is 0, then the precision is automatically calculated.
· Horizontal axis max value same as above but on horizontal (X) scale
· Horizontal axis min value same as above but on horizontal (X) scale
· Horizontal axis unit same as above but on horizontal (X) scale
· Horizontal offset same as above but on horizontal (X) scale
· Horizontal steps same as above but on horizontal (X) scale
· Horizontal precision if greater then 0 then this value is used to set number precision on horizontal axis. One digit after dot is 0.1, two digits 0.1 and so on. If this value is 0, then this is selected automatically.
By default Oscilloscope displays signal range from 0 to +MAX or from MIN to +MAX. How this is set depends on the input signal source, for example SimulationSource provides symmetric signal (-MIN to +MAX) and signal after ScalarInstantTransform with ABS function is from o to MAX.
It is possible to set any a sub-range visible on the Oscilloscope.
For example if the input signal is 0 to 100uV, and you want to display only range from 5 to 7uV this can be done that way:
1) set the Amplitude Range property to 2uV (because 75=2)
2) set the Vertical offset to -5
3) set the Vertical axis max value to 7
4) set the Vertical axis max value to 5
5) set the Vertical axis unit to uV (if not already set)
This is similar to Oscilloscope, but there is no Time
axis. Instead both X and Y axis values are set by input values.
One example of using this object is to display Lissajous curves.
This is a 3 dimensional version of OscilloscopeXY.
This element provides some information about operating system and environment.
Fields:
· Action selects what information is retrieved. Possible options:
o Root folders
o Files in folder
o Date/Time provides current date and/or time.
o Folders in folder list of full paths of folders
o Folder names in folder list of folder names
· Parameter special field which contains parameter(s) required for information selected in Action field:
o Root folders - none
o Files in folder path to the folder
o Date/Time format
defines how to format the date and time.
For example MMM d, yy will print Feb 2, 06, and or MM/dd/yyyy
will print 02/02/2006. Full specification of the format can be found here.
o Folders in folder path to the folder
o Folder names in folder path to the folder
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 object (along with PatternTrainer) implements pattern recognition. It is implemented with 3-layer neural network and back propagation algorithm for effective learning and recognizing nonlinear patterns.
· IN vector samples - patterns
· OUT recognition results vectors
· Path - the network is stored in this file. This file needs to be created earlier in PatternTrainer.
Note: this element is not available at this moment.
This object (along with PatternRunner) implements pattern recognition. It is implemented with 3-layer neural network and back propagation algorithm for effective learning and recognizing nonlinear patterns.
Inputs/Outputs:
· IN input vectors with patterns (each pattern must have the same size)
· OUT input vectors with expected patterns results (patterns are of the same size).
· L Learning ratio can be set dynamically here.
· M - Momentum can be set dynamically here on statically in properties.
· Eff effectiveness (percent) of the trained neural network. This is a vector; its size is the same as the number of patterns. Each field shows effectiveness [0-1] for each pattern.
· Mat Matrix. Similar like Eff, but the error is calculated for each field of each pattern. This is matrix [NxM], where N is number of patterns and M is the size of single pattern.
Properties:
· Learning ratio [0-1] parameter used for neural network training. Used if the input L is not connected.
· Momentum [0-1] - parameter used for neural network training. Used if the input M is not connected.
· Middle layer size number of neurons in the middle layer of the network. Input layers size is the same as input pattern size (coming to input PTR), and output layers size is the same as expected pattern result vector (coming to input RES).
· Learning ratio, momentum those are parameters used in back propagation training process.
· Max pattern count the maximum number of input patterns. If more patterns arrive to the input, only the last will be used for training. This value determines also the size of the output EFF vector. Each field in the output EFF vector contains information about percentage effectiveness of the training process for each pattern.
· Same train number how many patterns a single pattern is trained before the next pattern is taken.
· No of cycles how many times the whole neural learning process is repeated during single processing loop.
· Show range error each value in the input and output pattern must be within range 0.0 to 1.0. Otherwise the network will not work properly. If this checkbox is marked, then those ranges are being checked automatically and errors are printed on console.
· Path - the neural network is stored in this file. File is saved, when bioera exits (or another design is loaded). It can be then used later in any PatternTrainer element to continue training, or in PatternRunner to run stream of patterns against the learned network.
Note: this element is not available at this moment.
This object can send sampled (PCM) data to sound device (if available in system) like sound card.
Fields:
· Buffer length defines the size of the input buffer. Smaller value causes better (faster) response for sound being modulated dynamically (e.g. binaural beats). But the buffers size must be high enough so that the sound is not distorted.
· Sample rate this is the sample rate for this sound to play.
Inputs:
· Left left channel sound samples are provided here, or both channels (mono), if the right channel is not connected. This input must be connected.
· Right right channel sound samples are provided here. This input may be not connected.
· Volume accepts values from 0 to 100, when 100 is the highest volume. Note: this value changes system volume setting (mixer in Windows).
Outputs:
· Request this output is for special purpose. It can improve sound quality if connected to sound source elements. Currently there are two sound source elements which support it: Generator and SteppedSoundFileReader.
Note: only one instance of this element can be added in a design (including nested designs). If more sounds are to be played, then they should be mixed in PCMMixer before PCMAudioPlayer.
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.
This element is exclusively to mix audio streams (coming from Generator or SteppedSoundFileReader or SoundFileReader).
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 PETs input range. Very simple single pole filter was implemented here so that there is no delay.
· Channel filter coefficient sets the filter parameter.
This is a driver for Pendant EEG device (www.pocket-neurobics.com).
Fields:
· Rate shows current transmission rate.
Status letters:
· N channel not connected
· C channel connected and works properly
· R out of range error,
· S synchronization problems, perhaps connectivity between device and PC is unstable
· X the element is not active because of a critical problem
Outputs:
· ch1, ch2 two EEG channels
· Status shows current status, can be used to get button status and battery status
· Errors sends errors:
· 0 when device comes back from range error to proper (working) state,
· 1 when the output 1 is connected and the range error occur (shown also as R status letter as per above description),
· 2 when the output 2 is connected and the range error occur (shown also as R status letter as per above description),
· 3-9 reserved, not used now
· 10 and above when the synchronization error occurs. This value shows the number of synchronization errors (+10) since the session started. To get the actual number, the 10 must be subtracted from this value.
This element is a driver for Pocket-I and Pocket-II (Abhayamudra) biofeedback devices (www.pocket-neurobics.com).
Fields:
· Mode in all modes raw->PC must be set on the device.
o EEG sends EEG data to output channels.
o HEG sends HEG data to channel 1 and 2, and EEG data to channel 3 and 4
o Internal protocol sends 8-bit values (0-255) out of internal firmware protocol.
o Pendant sends 12-bit values (available only for Pendant device).
· Rate shows current transmission rate.
Status letters:
· N channel not connected
· C channel connected and works properly
· R out of range error,
· S synchronization problems, perhaps connectivity between device and PC is unstable
· X the element is not active because of a critical problem
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.
This is a driver for Pulse1 HEG biofeedback device (www.pocket-neurobics.com).
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 similar to Oscilloscope element, but it can display many traces on the same chart. It can be useful to compare traces visually.
See the Oscilloscope element above for properties descriptions that are same as here, otherwise look below.
Fields:
· Time range [s] defines how long the displayed trace is.
· Show grid enable or disable grid on the chart.
· Display mode how the trace is painted:
o Redraw trace is started on the left side toward the right side, when it reaches right edge chart is cleared and starts again from the left
o Overlap similar to Redraw, but chart is not cleared at the end, instead only currently painted trace is updated.
o Scroll to left trace is scrolled to left
o Scroll to right trace is scrolled to right
o Scroll to left and fill trace is scrolled to left and filled under the trace. More options is provided in Advanced Properties which can further customize this display.
· Traces defines how traces are put on the chart
o Evenly distributed each trace has equal amount of space starting from the top.
o Overlapped traces share the same vertical space.
· Labels location defines where the trace labels are put
o Top
o Left
o No labels
· Colors color of each trace can be defined here. If this field is empty, then the colors are generated automatically. See color format.
· Labels each label can be names differently here if option DEFINED_LABELS is selected in Trace Description (see below).
· Trace description select how the traces are being described on the chart.
o PRECEEDING ELEMENT descriptions are taken from the element connected to the input
o DEFINED_LABELS descriptions are defined manually in the Labels field.
o INDEXES sequential indexes (numbers) are used as descriptions
o PRECEEDING_OUTPUT output names from the preceding element(s) are used as descriptions.
o PRECEEDING ELEMENT + OUTPUT both connected to input element name and its output name are displayed.
· Traces defines how traces are displayed each to other
o Evenly distributed each trace has its own vertical space to display
o Overlapped traces are displayed on the same vertical space
Interactive Properties:
· Offset allows to shift all traces vertically (up or down).
Advanced Properties:
Note: some properties are the same as in Oscilloscope and they are not described here. Properties used exclusively in Polygraph:
· Vertical offsets offset for each channel can be set here
· Channel modes advanced customization for individual channel options:
o Value 1: area is filled with gradient color.
o Value 2: area is filled with color.
o Value 4: gray line is drawn
o Value 8: color line is drawn.
o Value 256: force channel amplitude max/min to use (if this is not set, then only non-zero values are used)
Note: the above values can be combined, for example value 5 (5=1+4), will fill the area with gradient color and also draw the gray line on top of the trace.
· Channel amplitude max, Channel amplitude min those two values allow set any range (for each channel) to show on Polygraph. It can be asymmetric. Those values override (for this channel) the default amplitude value set in main properties.
· Mouse selects scale if selected, then mouse click will switch between trace scales (if labels are on top), this is useful when they are different.
· Fill images used to select gradient color image for each trace. Some gradient image examples are in images/gradient folder.
· Scroll grid if set then the grid will scroll along with the trace, otherwise only trace will scroll.
· Special modes advanced customization for some options:
o Value 1: force horizontal scale min/max to use (if this is not set, then only non-zero values are used)
o Value 2: force horizontal scale min/max to use (if this is not set, then only non-zero values are used)
Note: the above values can be combined, e.g. value 3 (3=2+1) will force both horizontal and vertical min/max settings to use.
See similar section under Oscilloscope.
This element buffers input values, then sends one value to output at a time and processes all connected elements for each value sent.
It element is the same as BarDisplay, but it displays bar horizontally. Refer to the description of BarDisplay.
This element combines properties from many elements into one set (for easy access). Primary use of this element is for NestedProperties. Each single property requires single connection from the output to the destination element.
Fields:
· Put on General Tab if set then all properties set here will be put on General tab. Otherwise they are on a separate tab.
This element is very similar to PropertySetter (described below), but it lets read a property dynamically.
To use this element, its output must be connected to EVENT output pipe (right blue pipe on the BOTTOM of an element).
This element allows change a property in any element dynamically during processing. This is very unique and very powerful mechanism, it offers ultimate flexibility, e.g. allows changing features like threshold, range, positions etc, which are modified rarely (e.g. based on user interface).
This mechanism should be used only for rarely modified properties because it is not as fast as data sent 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 with caution, it may have unexpected effect on the design. If it is possible then select REINIT_ALL option which will reinitialize design after a change has been made.
Fields:
· Scope there are many kinds of properties which can be set. The most often are:
o ELEMENT_PROPERTIES those are the same as selected by element Properties
o ADVANCED_PROPERTIES equivalent to Advanced properties of any element
o CHART_PROPERTIES very powerful, each chart component (e.g. trace, border, axis, fonts) can be changed here dynamically
o SIGNAL_PARAMETERS this is very advanced feature, allows to impact signal parameters of this element
o INTERACTIVE_PROPERTIES this option is available only in some elements e.g. Oscilloscope or Polygraph. If the destination element implements Interactive Properties, then they will be selected in Property field. The explanation of Interactive Properties is in the element description.
· Input type input pipes 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 good enough for every element. It is recommended to always select ReinitAll.
o ReinitAll this reinitializes all elements in current design, it guarantees the new settings will work, but it may take longer time then others Post actions.
o Stop-Reinit-Start works similar to Reinit Target, but also stops/start the target element.
o Reinit Target and followers this option reinitializes the target element and all elements connected to its output (and their outputs). Please note, this needs to be used with extra caution, if possible ReinitAll is recommented instead.
o Stop-Reinit-Start target and followers. Like the above, but all elements are also stopped and started.
o Reinit Target with delay. This option is useful when there are more PropertySetters connected to the same destination Element. In such case the initialization is postponed until all of them set their properties. Only one PropertySetter (among all modifying the same element) needs it be set.
· 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 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.
Note: this element has been removed. Threshold element should be used instead.
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.
Note: RateLimiter2 is recommended to use instead of this element unless you do need all the options available here.
This element controls throughput, or how many samples will be passed from input to output.
Fields:
· Number of samples defines maximum number of samples that will be passed to output within specified below time range.
· Time range [ms] rate is calculated for this time specified in milliseconds. For example if number of samples is 4, and time range is 1000, then it means max rate is 4. If number of samples is 4, and time range is 500, then the output rate is 8 (samples per second), but not more then 4 per each 500ms.
· Clean excessive data input values may be pilled up in input pipe buffer if the input rate is greater then rate here. To avoid buffer overload this checkbox should be set.
This is a simpler version of RateLimiter. Because only Time range is configurable, it can be optimized for faster processing.
Fields:
· Time range [ms] only one sample is sent to output within this time range. If there is no input sample within this time, then next available input sample is sent to output immediately when it arrives and next time frame starts from this moment again.
Read raw bytes values from a file.
This object writes to a file the raw values (without headers or formatting).
This element can be used to display and browse static (already captured) data. The graph is shown when the design (or element) is Stopped.
Right mouse click brings a popup menu with several options:
· Show All - show entire recording.
· Zoom Out - zoom twice amplitude of all channels.
· Zoom Out Channel - zoom twice amplitude of currently selected channel.
· Zoom channel full - currently selected channel data is zoomed in so that it fits full vertical range of the chart.
· Zoom full - the same as above but for all channels.
· Wider - time window is extended twice.
· Refresh - refresh current state.
Left mouse can be used to select visible part of the trace. If selection is done on the chart, then both amplitude and time range are set. If selection is done on margin, then only one dimension (time on bottom or top and amplitude on left or right margin) is adjusted. Further, if selection is done on right margin, then only current channel is adjusted.
Properties:
· Grid - select grid type.
· Show actual recording time - if not selected, then the X (horizontal) scale starts from 0. Otherwise it starts from the time when the recording was made (during day). This can work only if connected to XDF or EDF reader.
· Connect all input channels - if selected, and input is connected to XDF or EDF reader, then ReportGraph's input channel count is adjusted and all outputs of the XDF/EDF reader are connected automatically.
· Use one scale - if set, then one scale (of the channel with maximum amplitude range) is used for all channels. Otherwise each channel can have different scale, which is automatically adjusted so that the channel's amplitude range covers full height of the chart.
Advanced Properties:
· Correct time - due to rounding the full time range may not always match the actual length of the recording. This can be observed if the recording is very long (e.g. 10 hours or more). This field allows to readjust the length.
· Start sample index, End sample index - set (or read) the visible time range (scaled in samples).
This element can be used ONLY together with ReportGraph to present additional information on a table. Each row in the table represents signal connected to the input of ReportGraph. Each column in the table represents signal connected the input of ReportTable. See the SessionReport.bpd example design which demonstrates how this can be setup.
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.
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
This element can create custom panel/dialog which can be designed the same as main Runtime Window. Its output must be connected to an element (one or more) which contains a chart; this chart will be then shown on the panel dialog.
Note: This element should be avoided as it is not being improved or supported any more. Instead a nested chart should be created and put on a separate Frame or Dialog.
This is a driver for QPET biofeedback device (www.brainquiry.nl).
Fields:
· Configuration - QPET is highly configurable, therefore it is possible to create various configurations and selects between them here during runtime. Default (example) configurations are set for EEG, GSR and AI, but each of them can be set any way.
Configuration fields:
There is up to 7 output channels, each channel can be configured for EEG, GSR or AI. Each type must contain its own configuration format; consecutive fields are separated by spaces.
EEG channel (micro-volt) format:
<EEG>
<name> <+electrode> <-electrode> <signal-rate>
<gain> <+range> <-range>
where:
· EEG - channel type selector
· name channels name (visible on the QPET element output, the name should contains only letters and digits)
·