OpenViBE 2.0 is a major new release of one of the world’s leading BCI software systems. OpenViBE 2.0 is the first OpenViBE to be based on the OpenViBE SDK, a result of 7+7 man years of expert software development and quality assurance work from Inria (France) and Mensia Technologies during 2015-2017. The SDK started from the previous OpenViBE kernel and a subset of critical components and pushed them further in a scope of a rigorous software development process aiming for the SDK to be usable as core technology in medically certified EEG products (for example the Mensia Koala).
(Executive summary: “Downloads are here“)
The OpenViBE SDK
The largest improvements introduced in OpenViBE 2.0 have been made in the CertiViBE project, a joint effort between Inria and Mensia Technologies. The CertiViBE project aims to enable building medical devices based on OpenViBE (standard IEC 62304:2006 Medical device software). A significant amount of the work has centered on robustness, quality assurance, predictable behavior and error handling of the software, as well as documentation and testing. The biggest outcome of the project is the OpenViBE SDK.
In the scope of the project, the OpenViBE kernel has been heavily refactored and simplified, as well as optimized, to allow easier maintainability, scalability and future development with a more gentle learning curve for new software developers. In addition, the project has produced extensive documentation such as Software Definition, Software Requirements and Software Architecture documents (see CertiViBE related documentation). Such documentation has not been previously available for the OpenViBE platform. In addition, an extensive amount of new tests have been specified and implemented. The parts of documentation and tests that intend to serve medical certification purposes will remain proprietary and be available on confidential, contractual basis. However, the technical documentation that is relevant to the scientific audiences and more casual BCI hackers will be released to the public along with the source code of the SDK.
OpenViBE 2.0 will consist of OpenViBE SDK (kernel, specific modules and plugins) plus applications such as Acquisition Server and Designer. Like previous OpenViBE releases, version 2.0 is shipped with additional plugins, tutorials and demos. For the end user, feature highlights of the 2.0 version are the following,
- New advanced visualization boxes contributed by Mensia Technologies: 2D Topography, 3D Cubes, 3D Tomographic Visualization, 3D Topography, Continuous Bars, Continuous Bitmap, Continuous Multi Oscilloscope, Continuous XYZ plot, Instant Bars, Instant Bitmap, Instant Bitmap (3D Stream), Instant Multi Oscilloscope, Instant Oscilloscope, Instant XYZ Plot, Stacked Bitmap (Horizontal), Stacked Bitmap (Vertical)
- Metaboxes, a technique to wrap ‘scenarios inside boxes’
- Scenarios can now have local settings
- New boxes: zero crossing detector, resampling
- Improved boxes: CSV Reader, CSV Writer, Temporal Filter, xDawn
- Scenario player without GUI allows easier use of OpenViBE scenarios in embedded systems without any graphical dependency (no need for GTK/CEGUI/Ogre)
- OpenViBE kernel and Designer no longer depend on Ogre (demos and 3rd party apps can still use it)
- Improved error handling
- Improved documentation (e.g. specifications)
- Improved Designer interface
- New supported stream type: Time/Frequency Matrix
- The maximum fast forward speed in Designer can now be controlled
- Lots of bugfixes
- Performance improvements and code streamlining
- Drivers: Brain Products LiveAmp driver (contributed by Brain Products GmbH)
- Drivers: LabStreamingLayer (LSL) driver support for sampling rate auto-estimation (contributed by Brain Support Brazil)
- For developers: C++11 is now allowed
- Faster Windows command line builds with Ninja
- New flag system : It is possible to define custom flags to add to boxes and algorithms
- Modern Windows system (7/8/10), Linux Ubuntu 14.04 & 16.04 or Linux Fedora 25.
- For Windows developers, Visual Studio 2013 is required. VS 2010 is no longer supported.
Upgrading from a previous version
n.b. Users on OpenViBE 2.0 BETA are strongly recommend to upgrade. Additional modifications required are minimal.
OpenViBE 2.0 aims to be largely compatible with OpenViBE 1.3.0. Most previous features remain available and compatible. Non-merged third-party OpenViBE scenarios and drivers should work with little or no modifications, requiring not much more work than a normal major OpenViBE update. However, backwards compatibility has not been maintained in situations where it was estimated not to be worth the development cost.
However, when moving from OpenViBE 1.3, it is useful to be aware of the known incompatibilities introduced by OpenViBE 2.0. These are as follows,
1. Configuration files
OpenViBE 2.0 will write its configuration files to
%USERPROFILE%/AppData/Roaming/openvibe-2.0 folder on Windows and
~/.config/openvibe-2.0 on Linux in order to allow coexistence with a previous OpenViBE installation. However, these configuration files are not compatible with those from 1.3. It is recommended the user just lets the openvibe tools (Acquisition Server, Designer) to automatically recreate these files for 2.0 and then modify them if/when necessary.
2. Scenario and box related changes
Several boxes in OpenViBE 2.0 have either changed or been subsumed by other boxes. If some box is no longer present when you load an old custom scenario, there may be a suitable replacement box available. The following list should help by making the update,
- Voxel Display has been replaced with 3D Tomography
- 3D Topographic Map has been replaced with 3D Topography
- Power spectrum box is replaced by Instant Bars
- Time-frequency map box is replaced by Stacked Bitmap (Horizontal)
- The Temporal Filter box has been replaced with a new version. The previous INSERM box is still available.
- The xDAWN box has been replaced with a new version. The previous INRIA box is still available.
- The CSV Reader/Writer boxes have been replaced with new versions. The previous boxes are still available (the old boxes have the tag ‘deprecated’ in the box list). However, these old boxes may vanish from future openvibe versions.
- Configuration token Path_Samples is no longer available. Use Path_Data instead.
- Configuration token BuildType has been removed.
- Box mute has been replaced with box enable/disable toggles. In your custom scenarios, you may need to manually disable previously muted boxes.
- Note that the new kernel is much more strict about boxes conforming to OV standards,
hence you will see more warnings than before until these boxes are fixed to conform to the kernels’ expectations.
The warnings of the following kind occur when loading scenarios saved with a previous version of the software. They can be safely ignored (unless your scenarios have relied on the box messaging feature which is no longer present):
[ WARNING ] Failed to validate xml: error [no declaration found for element 'MessageLinks'], line number  [ WARNING ] Importing scenario with legacy format: legacy scenarii might be deprecated in the future so upgrade to v1 format when possible
3. Dropped features
- Box messaging functionality has been removed
- Nonfunctional CoAdapt P300 source code is no longer included (you can get it from OV 0.18.0 if needed)
- Simple 3D Viewer box has been removed
4. For developers
Note that 2.0 uses new git repositories in Inria-hosted gitlab. Please see the instructions.
If you have developed your own C++ boxes which has not been merged to the OpenViBE distribution, you may need to modify the boxes on the code level to accommodate non-backwards compatible changes made to the OpenViBE kernel. To see how the boxes have to be modified, look into some box in the OpenViBE source tree that has similar characteristics. The required changes are as follows,
- Boxes that process input now must provide a valid processInput() implementation
- Boxes with visualizations need small code-level changes related to Visualization Context interface
- Boxes using Spectrum Stream need code-level changes due to changes in the stream specification
- Boxes with unstable flag will require trivial code-level changes (adding a header + replacing a value)
- The function getSettingValue() no longer expands tokens in the parameters. Either expand the tokens manually or use the FSettingValueAutoCast() function instead.
The following people contributed to the OpenViBE SDK and OpenViBE 2.0 during its planning, documentation, development and testing (in alphabetic order),
Laurent Bonnet / Mensia
Jerome Chabrol / Inria
Morgane Fauvet / Mensia
Charles Garraud / Inria
Thierry Gaugry / Inria
Anatole Lecuyer / Inria
Jozef Legeny / Mensia
Jussi T. Lindgren / Inria
Benoit Perrin / Mensia
Alexis Placet / Mensia
Yann Renard / Mensia
Cedric Riou / Inria
Agnes Dos Santos / Mensia
The new version of OpenViBE also includes some fresh external contributions. For these, we would like to thank
- Brain Products GmbH (Germany) for contributing a ‘LiveAmp’ driver
- Brain Support (Brazil) for contributing LabStreamingLayer (LSL) rate estimation patch
Also many thanks to the previous contributors whose work is inherited from the preceding OpenViBE versions.
OpenViBE 2.0 including the OpenViBE SDK is available free of charge as Windows binary installer and multiplatform source code archive from the downloads page. The license is AGPL3.