- NB: this document is work in progress. details may change (doc updated 10.Jul.2017).
Expected OpenViBE 2.0 release date: 31.07.2017
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 in the scope of a project called CertiViBE. The SDK started from the previous OpenViBE kernel and 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).
The CertiViBE project
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.
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. 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 OpenViBEs, it comes 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
- 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
- A few new contributed drivers (todo: list after merged)
- 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 (version TBD)
- For Windows developers, Visual Studio 2013 is required. VS 2010 is no longer supported.
When upgrading from previous version
OpenViBE 2.0 aims to be largely compatible with OpenViBE 1.3.0. Most previous features remain available and compatible. Previous 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.
Known incompatibilities introduced by OpenViBE 2.0 will include
1. Scenario and box related changes to do
- 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)
- Simple 3D Viewer box has been removed
- 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 disable previously muted boxes manually.
- (Possibly more to be announced)
The warnings of the following kind occur when loading scenarios saved with a previous version. 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
2. Dropped/changed features
- Box messaging functionality has been removed
- Nonfunctional CoAdapt P300 source code is no longer included (get it from OV 0.18.0 if needed)
3. Changes required to box code
If you have developed your own C++ boxes which are not part of 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 ov distribution with 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 and development (in alphabetic order),
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
OpenViBE 2.0 including the OpenViBE SDK will be available free of charge as Windows binary installer and multiplatform source code from the OpenViBE web site as soon as it is released. The license will remain AGPL3. If interested, you can request a preliminary test version by contacting the developers.