<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OpenViBE</title>
	<atom:link href="http://openvibe.inria.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://openvibe.inria.fr</link>
	<description>Software for Brain Computer Interfaces and Real Time Neurosciences</description>
	<lastBuildDate>Mon, 29 Apr 2013 09:38:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Supported acquisition devices</title>
		<link>http://openvibe.inria.fr/supported-hardware/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=supported-hardware</link>
		<comments>http://openvibe.inria.fr/supported-hardware/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 12:00:55 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://traindelux/openvibe/?p=1158</guid>
		<description><![CDATA[Comprehensive list of all acquisition devices currently supported in OpenViBE, officially or not, and on which OS platform they run. <a href="http://openvibe.inria.fr/supported-hardware/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Integrated drivers</h2>
<p>The following drivers have been integrated into OpenViBE release 0.15.0.</p>
<table class="table-drivers" style="width: 940px;" cellspacing="0">
<thead>
<tr dir="" lang="" align="" valign="" bgcolor="">
<td rowspan="1" colspan="1">Manufacturer</td>
<td rowspan="1" colspan="1">Amplifier</td>
<td rowspan="1" colspan="1">Driver Name</td>
<td rowspan="1" colspan="1">OS</td>
<td rowspan="1" colspan="1">Status</td>
<td style="text-align: left;" rowspan="1" colspan="1">Officially Supported</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2"><a href="http://www.ant-neuro.com/">ANT</a></td>
<td><a href="http://www.ant-neuro.com/products/asa-lab">Neuro ASALAB EEG / ERP amplifier</a></td>
<td>Either MindMedia Nexus32B or TMSi drivers</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Has been reported to work</td>
<td>No</td>
</tr>
<tr>
<td><a href="http://www.tmsi.com/?id=4">Others TMSi derived devices</a></td>
<td>Either MindMedia Nexus32B or TMSi drivers</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Untested</td>
<td>No</td>
</tr>
<tr>
<td rowspan="2"><a href="http://www.brainmaster.com/">BrainMaster</a></td>
<td><a href="http://store.brainmaster.com/browse.cfm/4,258.html">Atlantis</a></td>
<td>Brainmaster Atlantis and Discovery</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Community :
<ul>
<li>Mensia Technologies</li>
</ul>
</td>
</tr>
<tr>
<td><a href="http://store.brainmaster.com/browse.cfm/4,233.html">Discovery</a></td>
<td>Brainmaster Atlantis and Discovery</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Community :
<ul>
<li>Mensia Technologies</li>
</ul>
</td>
</tr>
<tr>
<td rowspan="5"><a href="http://www.brainproducts.com/">Brain Products</a></td>
<td><a href="http://www.brainproducts.com/productdetails.php?id=15">V-Amp</a></td>
<td>Brain Products V-Amp</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>No</td>
</tr>
<tr>
<td><a href="http://www.brainproducts.com/productdetails.php?id=42&amp;tab=3">actiCHamp</a></td>
<td>Brain Products actiCHamp</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Yes, contact <a href="http://mensiatech.com">Mensia Technologies</a></td>
</tr>
<tr>
<td><a href="http://www.brainproducts.com/productdetails.php?id=14">QuickAmp</a></td>
<td>Either MindMedia Nexus32B or TMSi drivers</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Has been reported to work</td>
<td>No</td>
</tr>
<tr>
<td><a href="http://www.brainproducts.com/products_by_name.php?letter=1">BrainAmp Series</a></td>
<td>Brain Products BrainAmp Series</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Community :</p>
<div>
<ul>
<li>Yann Renard</li>
</ul>
</div>
</td>
</tr>
<tr>
<td><a href="http://www.brainproducts.com/products_by_type.php?tid=1">All</a></td>
<td>Brain Products BrainAmp Standard (through BrainVision Recorder)</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td>Stable</td>
<td>Community :</p>
<div>
<ul>
<li>Emmanuel Maby (<em>INSERM</em>)</li>
<li>Pierre-Emmanuel Aguera (<em>INSERM</em>)</li>
</ul>
</div>
</td>
</tr>
<tr>
<td rowspan="1">CTF/VSM</td>
<td>MEG</td>
<td>CTF/VSM MEG</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td>Unstable</td>
<td>Community :</p>
<div>
<ul>
<li>Emmanuel Maby (<em>INSERM</em>)</li>
<li>Pierre-Emmanuel Aguera (<em>INSERM</em>)</li>
</ul>
</div>
</td>
</tr>
<tr>
<td rowspan="1"><a href="http://www.egi.com/">EGI</a></td>
<td><a href="http://www.egi.com/research-division-research-products/eeg-systems/251-conventional-eeg">Net Amps 300</a></td>
<td>EGI Net Amps 300 (through AmpServer)</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td>Unstable</td>
<td>Community</td>
</tr>
<tr>
<td rowspan="1"><a href="http://www.emotiv.com/">Emotiv</a></td>
<td><a href="http://emotiv.com/store/">EPOC</a></td>
<td>Emotiv EPOC</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Yes</td>
</tr>
<tr>
<td rowspan="2"><a href="http://www.gtec.at/">gTec</a></td>
<td><a href="http://www.gtec.at/Products/Hardware-and-Accessories/g.USBamp-Specs-Features">gUSBamp</a></td>
<td>g.Tec gUSBamp</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable(multi amp missing)</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="http://www.gtec.at/Products/Hardware-and-Accessories/g.MOBIlab-Specs-Features">gMobilab+</a></td>
<td>gTec gMOBIlab+</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/none.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td>Stable</td>
<td>Community :</p>
<div>
<ul>
<li>Lucie Daubigney (<em>Supelec</em>)</li>
</ul>
</div>
</td>
</tr>
<tr>
<td rowspan="1"><a href="http://www.micromed.eu/">Micromed</a></td>
<td><a href="http://www.micromed.eu/prodsel.asp?cat=2&amp;prod=11">SD LTM</a></td>
<td>Micromed SD LTM (through SystemPlus Evolution)</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Yes</td>
</tr>
<tr>
<td rowspan="1"><a href="http://www.mindmedia.nl/">MindMedia</a></td>
<td><a href="http://www.mindmedia.nl/CMS/en/products/nexus-systems/item/163-nexus32f.html">NeXus32</a></td>
<td>MindMedia Nexus32B</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Yes</td>
</tr>
<tr>
<td rowspan="1"><a href="http://www.neurosky.com/">Neurosky</a></td>
<td><a href="http://neurosky.com/Products/MindSet.aspx">Mindset</a></td>
<td>NeuroSky MindSet<br />
<span style="color: #000000;">(MindWave Mobile since SVN r3590 / unreleased 0.16.0)</span></td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Yes</td>
</tr>
<tr>
<td rowspan="2"><a href="http://www.openeeg.sourceforge.net/">OpenEEG</a></td>
<td>MonolithEEG</td>
<td>OpenEEG Modular EEG P2</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td>Stable</td>
<td>Community :</p>
<div>
<ul>
<li>Christoph Veigl (<em>University of Applied Sciences Technikum Wien</em>)</li>
<li>Yann Renard</li>
</ul>
</div>
</td>
</tr>
<tr>
<td><a href="http://openeeg.sourceforge.net/doc/modeeg/modeeg.html">ModularEEG</a></td>
<td>OpenEEG Modular EEG P2</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td>Stable</td>
<td>Community :</p>
<div>
<ul>
<li>Christoph Veigl (<em>University of Applied Sciences Technikum Wien</em>)</li>
<li>Yann Renard</li>
</ul>
</div>
</td>
</tr>
<tr>
<td rowspan="3"><a href="http://www.tmsi.com/">TMSi</a></td>
<td><a href="http://www.tmsi.com/?id=12">Porti32</a></td>
<td>Either MindMedia Nexus32B or TMSi drivers</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="http://www.tmsi.com/?id=7">Refa32</a></td>
<td>Either MindMedia Nexus32B or TMSi drivers</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Stable</td>
<td>No</td>
</tr>
<tr>
<td><a href="http://www.tmsi.com/?id=4">Others devices</a></td>
<td>Either MindMedia Nexus32B or TMSi drivers</td>
<td><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td>Untested</td>
<td>No</td>
</tr>
</tbody>
</table>
<h2>Beta drivers</h2>
<p>These drivers are currently being integrated or does not comply with, some of them can be found in the current Acquisition Server branches in the SVN, others can be found in the deprecated branches folder (checkout the SVN at address <em>svn://scm.gforge.inria.fr/svn/openvibe/deprecated-branches</em>). To use them, you must build the corresponding branch. If the driver is in a deprecated folder, you first have to put it manually in your SVN local repository under <em>openvibe-application/acquisition-server/branches/.</em></p>
<p>&nbsp;</p>
<table class="table-drivers" cellspacing="0">
<thead>
<tr dir="" lang="" align="" valign="" bgcolor="">
<td dir="" id="" lang="" scope="" align="" valign="">Manufacturer</td>
<td dir="" id="" lang="" scope="" align="" valign="">Amplifier</td>
<td dir="" id="" lang="" scope="" align="" valign="">Driver Name</td>
<td dir="" id="" lang="" scope="" align="" valign="">OS</td>
<td dir="" id="" lang="" scope="" align="" valign="">Status</td>
<td dir="" id="" lang="" scope="" align="" valign="">Officially supported</td>
</tr>
</thead>
<tbody>
<tr>
<td dir="" id="" lang="" rowspan="1" scope="" align="" valign=""><a href="http://www.mitsar-medical.com/">Mitsar</a></td>
<td dir="" id="" lang="" scope="" align="" valign=""><a href="http://www.mitsar-medical.com/eeg-machine/">EEG 202</a></td>
<td dir="" id="" lang="" scope="" align="" valign="">Mitsar EEG 202</td>
<td dir="" id="" lang="" scope="" align="" valign=""><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /></td>
<td dir="" id="" lang="" scope="" align="" valign="">Unstable</td>
<td dir="" id="" lang="" scope="" align="" valign="">Community :</p>
<div>
<ul>
<li>Guillaume Lio (<em>GipsaLab</em>)</li>
</ul>
</div>
</td>
</tr>
<tr>
<td dir="" id="" lang="" rowspan="1" scope="" align="" valign=""><a href="http://www.neuroscan.com/">Neuroscan</a></td>
<td dir="" id="" lang="" scope="" align="" valign=""><a href="http://www.neuroscan.com/synamps.cfm">SynAmps2</a></td>
<td dir="" id="" lang="" scope="" align="" valign="">Neuroscan SynAmps2 (through Scan 4.3)</td>
<td dir="" id="" lang="" scope="" align="" valign=""><img alt="" src="http://openvibe.inria.fr/documentation/unstable/windows.svg.png" /><img alt="" src="http://openvibe.inria.fr/documentation/unstable/linux.svg.png" /></td>
<td dir="" id="" lang="" scope="" align="" valign="">Unstable</td>
<td dir="" id="" lang="" scope="" align="" valign="">Community :</p>
<div>
<ul>
<li>David White (<em>Swinburne University of Technology</em>)</li>
</ul>
</div>
<div>This driver has been moved to the deprecated branches SVN folder</div>
<div>(openvibe-applications-acquisition-server-wip-neuroscan)</div>
</td>
</tr>
</tbody>
</table>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/supported-hardware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling on Fedora 14</title>
		<link>http://openvibe.inria.fr/compiling-on-fedora-14/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=compiling-on-fedora-14</link>
		<comments>http://openvibe.inria.fr/compiling-on-fedora-14/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 14:45:02 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[CMake]]></category>
		<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2630</guid>
		<description><![CDATA[In the newer versions of openvibe we have updated the CMake dependency to 2.8.7. Newer build system also relies on the GNUInstallDirs CMake include file, which is not present in CMake 2.8.4 and earlier. If you wish to compile latest &#8230; <a href="http://openvibe.inria.fr/compiling-on-fedora-14/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div class="no-sidebar"></div>
<p>In the newer versions of openvibe we have updated the CMake dependency to 2.8.7. Newer build system also relies on the GNUInstallDirs CMake include file, which is not present in CMake 2.8.4 and earlier. If you wish to compile latest openvibe on Fedora 14 you will need this file.</p>
<p>You can download the file (distributed under the OSI-approved BSD license) here: <a href="http://openvibe.inria.fr/openvibe/wp-content/uploads/2013/03/GNUInstallDirs.cmake">GNUInstallDirs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/compiling-on-fedora-14/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software architecture</title>
		<link>http://openvibe.inria.fr/software-architecture/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-architecture</link>
		<comments>http://openvibe.inria.fr/software-architecture/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 14:52:30 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Architecture and practices]]></category>
		<category><![CDATA[architecture]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2612</guid>
		<description><![CDATA[Overview of the software architecture of OpenViBE with pointers to specific manager documentation. <a href="http://openvibe.inria.fr/software-architecture/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This section describes the software architecture of the platform. The design relies on the concept of box algorithm which ensures maximum flexibility and reusability. The platform is composed of a kernel and several plug-ins dedicated to specific tasks.</p>
<p><a href="/openvibe/wp-content/uploads/2013/03/Doc_SoftwareArchitectureOverview_SoftwareComponents.png" rel="lightbox[post-2612]"><img title="Software Architecture" alt="Doc_SoftwareArchitectureOverview_SoftwareComponents" src="/openvibe/wp-content/uploads/2013/03/Doc_SoftwareArchitectureOverview_SoftwareComponents.png" width="700" height="473" /></a></p>
<h2>The box algorithm</h2>
<p>The box algorithm is a key component of the platform. It consists of a &#8220;black box&#8221; in charge of a fraction of the whole processing pipeline, which exposes inputs and outputs to other box algorithms. Boxes are notified on clock ticks and upon input data and message arrival. The behavior of a box can be adapted to the needs of each algorithm (for instance, acquisition algorithms typically react to clock signals whereas processing algorithms typically react to input arrival). The characteristics and constraints that are common to all box algorithms include reasonable granularity to allow quick software components rearrangement. Newly developed box algorithms are immediately available to the user thanks to the plugin system (see section <a title="Introduction to algorithms and boxes" href="http://openvibe.inria.fr/introduction-algo-boxes/">The plug-ins</a>).</p>
<h2>The kernel</h2>
<p><b>The kernel</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Kernel_1_1IKernelContext.html">OpenViBE::Kernel::IKernelContext</a>) provides global services to applications through several managers, each of them providing a set of specialized services. Virtually any manager can be added to the kernel in order to extend its services. The most significant managers of the platform are:</p>
<p><b>The scenario manager</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Kernel_1_1IScenarioManager.html">OpenViBE::Kernel::IScenarioManager</a>) helps creating and configuring scenarios. After a scenario is created, it can instantiate new box algorithms, change their settings and connect boxes together using communication links. The scenario manager is designed to edit any number of scenarios at once, allowing an application to handle multiple scenarios simultaneously. The designer authoring tool takes advantage of this.</p>
<p><b>The player manager</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Kernel_1_1IPlayerManager.html">OpenViBE::Kernel::IPlayerManager</a>) provides an easy to use interface in order to build and configure a runtime session. For this, the manager handles a collection of players, each one managing several boxes, as described in the scenario it has to run. Each of these box rely on a plug-in box algorithm to perform its tasks.</p>
<p><b>The visualization manager</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Kernel_1_1IVisualisationManager.html">OpenViBE::Kernel::IVisualisationManager</a>) is responsible for displaying 2D or 3D graphical information and dispatching it in the correct place. Indeed, multiple visualization windows may be used. The windows arrangement in space is done by the visualization manager at editing time, thanks to the designer application, and saved to a file. Basic signal display windows are provided with a 2D rendering context (see Figure fig-display-widgets), while more advanced rendering is performed thanks to the 3D library encapsulated in the player module (see section openvibe-vr).</p>
<p><b>The type manager</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Kernel_1_1ITypeManager.html">OpenViBE::Kernel::ITypeManager</a>) ensures coherency of all data types. Two kinds of data are manipulated in the platform: simple parameters used to configure boxes, and streams used to connect boxes together and send buffers between boxes. The manager provides a list of registered types, handles conversions and provides information about type compatibility. Simple parameters include integer values, floating point values, strings and filenames. The manager also supports enumerations or bit masks. The stream type tells the scenario editor which box output can be connected to which box input. Stream types are organized hierarchically, allowing to easily downcast some of the streams. For example, an n-electrode raw record will most probably use the signal stream type. This stream type is a specialization of the basic matrix stream type. Thus, each box algorithm working on basic matrix streams will be able to work on raw signal streams.</p>
<p><b>The plug-in manager</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Kernel_1_1IPluginManager.html">OpenViBE::Kernel::IPluginManager</a>) makes the platform extensible. This manager is able to dynamically load plug-in modules (e.g., .DLL files under Windows, or .so files under Linux) and collect plug-in object descriptors from them. Then, using these plug-in object descriptors, it provides the service of building new specialized plug-in objects, acting as an object factory for the whole platform. Specialized plug-in objects include scenario serializers, algorithms and box algorithms (see section <a>The plug-ins</a>).</p>
<p>The plug-in system allows to quickly and efficiently expand functionalities. The communication interface between plug-in objects and the platform is defined so that these external objects can be shared, integrated to the platform and replaced when needed.</p>
<h2>The plug-ins</h2>
<p>Our platform includes three different plug-in families:</p>
<p><b>The algorithm plug-ins</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Plugins_1_1IAlgorithm.html">OpenViBE::Plugins::IAlgorithm</a> and <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Plugins_1_1IAlgorithmDesc.html">OpenViBE::Plugins::IAlgorithmDesc</a>) are a generic abstraction for any extension that could be added to the platform (e.g., add a new feature extraction or signal processing methods). Only developers can work with this kind of object. Algorithms are the developer&#8217;s atomic objects. The developer may compose several algorithms in order to achieve a complex task. This kind of plugin allows to massively share and reuse software components, even in an offline context where time is managed differently (e.g., EEG file reading or signal visualisation widgets).</p>
<p><b>The box-algorithm plug-ins</b> (see <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Plugins_1_1IBoxAlgorithm.html">OpenViBE::Plugins::IBoxAlgorithm</a> and <a href="http://openvibe.inria.fr/documentation/unstable/classOpenViBE_1_1Plugins_1_1IBoxAlgorithmDesc.html">OpenViBE::Plugins::IBoxAlgorithmDesc</a>) are the software components each box relies on. Box algorithms are the author&#8217;s atomic objects. The developer describes them in a simple structure that notably contains the box prototype (its name, input/output connectors and settings). The box algorithm itself is responsible for the actual processing, i.e., it reads from inputs, computes data to produce a result and writes to outputs. However, the box algorithm generally combines several algorithm plug-ins together to perform this processing. This ensures fast development thanks to the re-usability of components (e.g., most box algorithms use a specific algorithm in order to easily read from inputs and write to outputs). Thus, the box algorithm can be seen as a set of callbacks called periodically by the player. The most important callbacks are the three notification callbacks (clock tick, input arrival and message arrival) and the actual processing function which produces output data. Each phase of the processing callback can rely on one or more algorithms in order to reuse code.</p>
<p>It should be noted that the box algorithm has a restricted access to kernel functionalities, and can not directly communicate with other box algorithms. A kernel accessor is provided at runtime whenever a callback is triggered, allowing for better flexibility in programming bridges to kernel objects and to other box algorithms.</p>
<p>Currently, the player does not take advantage of computation distribution. However, the box algorithm concept makes such distribution possible and easier because the communication is done thanks to input and output connectors and because box algorithms do not share information directly.</p>
<p><b>The scenario loading and saving plug-ins</b> allow to keep and reuse created and configured scenarios in files. In addition to loading and saving scenarios, this plug-in can also be used to import scenarios from closely related softwares or to export scenarios to such softwares. The scenario saver basically writes each scenario component into a file. The scenario loader works the opposite way: it reads from a file and creates each box in turn, configuring and connecting boxes together as needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/software-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing openvibe using Qt Creator</title>
		<link>http://openvibe.inria.fr/developing-openvibe-using-qt-creator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=developing-openvibe-using-qt-creator</link>
		<comments>http://openvibe.inria.fr/developing-openvibe-using-qt-creator/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 16:23:39 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Qt Creator]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2592</guid>
		<description><![CDATA[With the new build system using CMake for all the heavy lifting it is now possible to use any IDE capable of understanding CMake projects to develop openvibe in integrated manner. One of the most polished tools for C++ development &#8230; <a href="http://openvibe.inria.fr/developing-openvibe-using-qt-creator/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div class='top-banner work'><a>This tutorial concerns the 0.16.0 version, currently available only in the SVN repository. </a></div>
<p>With the new build system using CMake for all the heavy lifting it is now possible to use any IDE capable of understanding CMake projects to develop openvibe in integrated manner.</p>
<p>One of the most polished tools for C++ development on linux is the Qt Creator which, contrary to its name, is a general purpose IDE and does not only serve to develop Qt applications.</p>
<h2 id="settingeverythingup">Setting everything up</h2>
<p>The new build system has made it quite easy to use the native building capabilities of any IDE. Still, some tweaks will be necessary to make everything work.</p>
<h3 id="cmake">CMake</h3>
<p>Openvibe now uses CMake (almost) exclusively to create a build environment. Since Qt Creator has a native support for CMake projects it makes importing very easy.</p>
<p>Run Qt Creator, choose <em>Open File or Project…</em> and in the dialog navigate to the <em>CMakeLists.txt</em> file in the openvibe root.</p>
<p>A dialog will open, prompting you to run the CMake process. To this you will need to provide additional arguments:</p>
<pre><code> -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=OPENVIBE_ROOT/dist
</code></pre>
<p>Do not forget to change the <em>OPENVIBE_ROOT</em> path to location where you put your openvibe files.</p>
<h3>Building application</h3>
<p>By default, Qt Creator will run <strong>make</strong> on build and <strong>make install</strong> before run. This might not be the ideal behavior for openvibe development since the install process can be a bit lengthy. Better way to proceed is to use make install for compiling and skip the compile step entirely before running.</p>
<p>In order to do this go to Projects (on the left) -&gt; Build&amp;Run -&gt; Build. Click on the Details button in build steps and add install as an additional argument to make.</p>
<p><a href="/openvibe/wp-content/uploads/2013/03/qt-creator-build.png" rel="lightbox[post-2592]"><img class="alignnone size-full wp-image-2599" alt="qt-creator-build" src="/openvibe/wp-content/uploads/2013/03/qt-creator-build.png" width="800" height="300" /></a></p>
<p>Then go to Tools-&gt;Options-&gt;Build&amp;Run-&gt;General and un-check the <strong>Always build before deploying it</strong> and <strong>Always deploy before running it</strong> steps.</p>
<p><a href="/openvibe/wp-content/uploads/2013/03/qt-creator-deploy.png" rel="lightbox[post-2592]"><img alt="qt-creator-deploy" src="/openvibe/wp-content/uploads/2013/03/qt-creator-deploy.png" width="800" height="300" /></a></p>
<h3 id="runningapplication">Running application</h3>
<p>In order to be able to run applications directly from the Qt Creator you will need to set up a few environmental variables for each run setting.</p>
<p><a href="/openvibe/wp-content/uploads/2013/03/qt-creator-settings.png" rel="lightbox[post-2592]"><img alt="qt-creator-settings" src="/openvibe/wp-content/uploads/2013/03/qt-creator-settings.png" width="800" height="380" /></a></p>
<p>Go to Projects (on the left)-&gt;Run. Select the application for which you want to set the run environment. There are several things to change. First you need to change the working path to the /bin folder in the /dist folder made during the install. Change it to:</p>
<pre><code>OPENVIBE_ROOT/dist/bin
</code></pre>
<p>Then you will need to set up the environment. The build system makes it so you have a very few of them to set manually. Hint: you can use the <em>batch edit</em> button to edit the variables more easily:</p>
<pre><code>LD_LIBRARY_PATH=OPENVIBE_ROOT/scripts/software/lib:OPENVIBE_ROOT/dist/lib
OV_DISTROOT=OPENVIBE_ROOT/dist
</code></pre>
<p>If you are interested in using the Clean Environment instead of the system one, you will also need to set these two up:</p>
<pre><code>DISPLAY=:0
HOME=/home/YOUR_HOME
</code></pre>
<h2 id="whatyouget">What you get</h2>
<p>Qt Creator has a lot to offer in terms of features.</p>
<h3 id="semanticcodehighlightingandfullcode-completion">Semantic code highlighting and full code-completion</h3>
<p>As any other respectable IDE, Qt Creator has a parser providing a very good semantic code highlighting and excellent code-completion capabilities. All of this is also very fast.</p>
<p><a href="/openvibe/wp-content/uploads/2013/03/qt-creator-completion.png" rel="lightbox[post-2592]"><img alt="qt-creator-completion" src="/openvibe/wp-content/uploads/2013/03/qt-creator-completion.png" width="800" height="300" /></a></p>
<h3 id="subversionintegration">Subversion integration</h3>
<p>The nice thing is that Qt Creator also works with Subversion, albeit the support is quite rudimentary, you can check for modifications of the current file quickly (<strong>alt+s</strong>, <strong>alt+d</strong>), commit it instantly (<strong>alt+s</strong>, <strong>alt+c</strong>) and a few other handy functions.</p>
<h3 id="visualdebugging">Visual debugging</h3>
<p>The best improvement is that you can use the visual debugger with all of the features right out of the box without any tinkering.</p>
<p><a href="/openvibe/wp-content/uploads/2013/03/qt-creator-debugging.png" rel="lightbox[post-2592]"><img alt="qt-creator-debugging" src="/openvibe/wp-content/uploads/2013/03/qt-creator-debugging.png" width="800" height="300" /></a></p>
<p>In order to do this you have, of course, to build the software in Debug mode. In order to do this you will have to re-run the CMake with these arguments:</p>
<pre><code> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=OPENVIBE_ROOT/dist
</code></pre>
<p>Note that it is actually easier on Linux to only ever build the Debug version.</p>
<p>You can also use the Valgrind profiler directly from the IDE.</p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/developing-openvibe-using-qt-creator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>News for mid-February</title>
		<link>http://openvibe.inria.fr/news-for-mid-february/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=news-for-mid-february</link>
		<comments>http://openvibe.inria.fr/news-for-mid-february/#comments</comments>
		<pubDate>Wed, 13 Feb 2013 16:10:33 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2558</guid>
		<description><![CDATA[Hello everyone, this is a small announcement regarding what is happening in the SVN. As you can see there were minor tweaks made to the webpage in order to modernize the looks for the new year. Some more changes will &#8230; <a href="http://openvibe.inria.fr/news-for-mid-february/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div class="no-sidebar"></div>
<p>Hello everyone,</p>
<p>this is a small announcement regarding what is happening in the SVN.</p>
<p>As you can see there were minor tweaks made to the webpage in order to modernize the looks for the new year. Some more changes will be coming later.</p>
<p>In terms of code we have rolled out a new build system for the SVN release. There are some precautions to take so it is best to do a fresh checkout. Note that the code structure did not change, the only differences were made to the CMake files. Also you can still use the branch system for development of separate plugins and of course the openvibe-externals continue working as before.</p>
<p>Currently we are working on simplification of how dependency installation works on Linux and some changes should be rolled out soon.</p>
<p>Be sure to check the newly updated <a title="Send stimulations from your application to the Acquisition Server" href="http://openvibe.inria.fr/send-stimulations-from-your-application-to-the-acquisition-server/">tutorial on software stimulation</a>.</p>
<p>Cheers<br />
The OpenViBE Team</p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/news-for-mid-february/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tuning the build process  &#8211; pre 0.16.0</title>
		<link>http://openvibe.inria.fr/tuning-the-build-process-pre-0-16-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tuning-the-build-process-pre-0-16-0</link>
		<comments>http://openvibe.inria.fr/tuning-the-build-process-pre-0-16-0/#comments</comments>
		<pubDate>Tue, 12 Feb 2013 09:53:45 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Source code handling]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2540</guid>
		<description><![CDATA[Before openvibe 0.16.0 (not yet released) the build process was tuned inside the win32-init_env_command or linux-init_env_command. Since then the build has changed and the tuning process is described in the Building OpenViBE/Tuning the build process page. If you wish to &#8230; <a href="http://openvibe.inria.fr/tuning-the-build-process-pre-0-16-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Before openvibe 0.16.0 (not yet released) the build process was tuned inside the win32-init_env_command or linux-init_env_command. Since then the build has changed and the tuning process is described in the Building OpenViBE/Tuning the build process page.</p>
<p>If you wish to use an older openvibe then you should follow these instructions:</p>
<p>If you want to customize the build process, modify the <code>init_env_command</code> script. In case you have trouble using your modified script, the <em>skeletons</em> may represent useful backups. Here are some tips for common developer needs :</p>
<ul>
<li>Default behaviour: The script will build all the modules, except the documentation (that you find on the website anyway). After a fresh checkout, please build the software like this once.</li>
</ul>
<ul>
<li>Build a branch instead of module&#8217;s trunk: Modify the <code>init_env_command </code>script by specifying the branch path. For example, if you want to try a specific &#8211; unstable &#8211; driver located in a branch on Windows:
<div>
<pre>SET OpenViBE_application_acquisition_server_branch=</pre>
</div>
<p>will become :</p>
<div>
<pre>SET OpenViBE_application_acquisition_server_branch=branches/wip-unstable-driver</pre>
</div>
<p>if you want to try a specific &#8211; unstable &#8211; driver located in a branch on Linux:</p>
<div>
<pre>OpenViBE_application_acquisition_server_branch=</pre>
</div>
<p>will become :</p>
<div>
<pre>OpenViBE_application_acquisition_server_branch=branches/wip-unstable-driver</pre>
</div>
</li>
</ul>
<ul>
<li>Build only few modules (will work only if all modules have been compiled at least once): Modify the <code>init_env_command </code>script by choosing the project to be added in the build order. For example if you want to rebuild the signal processing plugin on Windows:
<div>
<pre>echo %OpenViBE_plugin_signal_processing% &gt;&gt; %OpenViBE_build_order%</pre>
</div>
<p>If you want to avoid building the signal processing plugin on Windows, just remove the line or comment it like this:</p>
<div>
<pre>REM echo %OpenViBE_plugin_signal_processing% &gt;&gt; %OpenViBE_build_order%</pre>
</div>
<p>Similarly, if you want to rebuild the signal processing plugin on Linux:</p>
<div>
<pre>$OpenViBE_plugin_signal_processing</pre>
</div>
<p>If you want to avoid building the signal processing plugin on Linux, just remove the line or comment it like this:</p>
<div>
<pre>#$OpenViBE_plugin_signal_processing</pre>
</div>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/tuning-the-build-process-pre-0-16-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenViBE 0.15.0 available for immediate download</title>
		<link>http://openvibe.inria.fr/openvibe-0-15-0-available-for-immediate-download/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openvibe-0-15-0-available-for-immediate-download</link>
		<comments>http://openvibe.inria.fr/openvibe-0-15-0-available-for-immediate-download/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 15:13:36 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2485</guid>
		<description><![CDATA[The OpenViBE Team is proud to announce a new release of our software. The new version is 0.15.0 and can be downloaded on the Downloads page. Contributors Many thanks to our contributors for their continuos support. Mensia Technologies (BrainMaster Atlantis &#8230; <a href="http://openvibe.inria.fr/openvibe-0-15-0-available-for-immediate-download/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The OpenViBE Team is proud to announce a new release of our software. The new version is 0.15.0 and can be downloaded on the <a title="Downloads" href="http://openvibe.inria.fr/downloads/">Downloads page</a>.</p>
<h2>Contributors</h2>
<p>Many thanks to our contributors for their continuos support.</p>
<ul>
<li><span style="line-height: 12px;"><strong>Mensia Technologies</strong> (BrainMaster Atlantis and Discovery drivers, BrainProducts ActiCHamp driver)</span></li>
<li><strong>Anton Andreev</strong> (software tagging capabilities of the Acquisition Server)</li>
</ul>
<h2>OpenViBE is growing</h2>
<p>A new research project around OpenViBE has begun. With the ADT openvibeNT project, we have recruited more engineers to work on the software.</p>
<p>In addition, there is a new company called <a href="http://www.mensiatech.com/">Mensia Technologies</a> that has their core business centered on OpenViBE. The previous OpenViBE creator Yann Renard and the previous OpenViBE lead engineer Laurent Bonnet now work for the company<br />
while continuing OpenViBE-related development.</p>
<h2>Release Notes</h2>
<h3>OpenViBE gets support for more EEG devices</h3>
<div class="grid-split"><div class="grid-first">
</div><div class="grid_8">
<h4>BrainProducts ActiCHamp</h4>
<p>Mensia Technologies has developed a driver for the BrainProducts ActiCHamp device. For the documentation please visit the <a title="BrainProducts actiCHamp driver" href="http://openvibe.inria.fr/brainproducts-actichamp-driver/">BrainProducts ActiCHamp documentation page</a>.</p>
</div><div class="grid_8">
<h4>BrainMaster Atlantis and Discovery</h4>
<p>Mensia Technologies has also developed a driver for BrainMaster acquisition devices: Atlantis and Discovery. If you are interested in using this driver, please look at the <a title="Using Brainmaster Discovery &amp; Atlantis devices with OpenViBE" href="http://openvibe.inria.fr/using-brainmaster-discovery-atlantis-devices-with-openvibe/">BrainMaster Atlantis and Discovery documentation page</a>.</p>
</div></div><div class="clear"></div>
<h3>Send stimulations from your application to Acquisition Server</h3>
<p>With the External Stimulation feature it is now possible to send stimulations from any c++ application directly to the Acquisition Server which will embed them into the signal acquired from the EEG device. To learn more about this feature please visit the <a title="Send stimulations from your application to the Acquisition Server" href="http://openvibe.inria.fr/send-stimulations-from-your-application-to-the-acquisition-server/">External Stimulation documentation page</a>.</p>
<h3>Self-contained scenario configuration</h3>
<p>You can now reference files that reside inside the folder of the opened scenario. The <code>$__volatile_ScenarioDir</code> configuration token will always expand to the path of the folder of the current scenario.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/openvibe-0-15-0-available-for-immediate-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Send stimulations from your application to the Acquisition Server</title>
		<link>http://openvibe.inria.fr/send-stimulations-from-your-application-to-the-acquisition-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=send-stimulations-from-your-application-to-the-acquisition-server</link>
		<comments>http://openvibe.inria.fr/send-stimulations-from-your-application-to-the-acquisition-server/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 14:13:38 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Third-party applications]]></category>
		<category><![CDATA[Acquisition Server]]></category>
		<category><![CDATA[software tagging]]></category>
		<category><![CDATA[Stimulation]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2491</guid>
		<description><![CDATA[In the OpenViBE 0.15.0 we have introduced a new way for external applications to communicate with OpenViBE. This document describes how to send stimulations from your application directly to the Acquisition Server. Motivation Some BCI applications require very precise tagging &#8230; <a href="http://openvibe.inria.fr/send-stimulations-from-your-application-to-the-acquisition-server/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the OpenViBE 0.15.0 we have introduced a new way for external applications to communicate with OpenViBE. This document describes how to send stimulations from your application directly to the Acquisition Server.</p>
<h2>Motivation</h2>
<p>Some BCI applications require very precise tagging of events. As an example we could look at the P300 paradigm where it is necessary to know the precise moment when the stimulus was presented to the user, in order to find the brain response 300 milliseconds later.</p>
<p>The best way of marking such an event is to detect the stimulus by acquisition hardware and embed the tag inside the signal. However, it is not always possible to do this. Some popular EEG headsets do not have a way to send triggers along with the signal and the majority of current PCs do not possess a parallel port which is usually necessary to send precise hardware stimulations.</p>
<p>In order to address this problem, the Acquisition Server now has the ability to receive stimulations from an external application. These will then be embedded in the signal at the right time.</p>
<h2>Implementation</h2>
<p>The current implementation uses boost interprocess messages. The advantage of this solution is that it is fast and reliable, the disadvantage is that <strong>the external application must run at the same computer as the acquisition server</strong>.</p>
<p>Schematically a P300 application using the software tagging would work in the following way:</p>
<p><a href="/openvibe/wp-content/uploads/2013/02/Software-tagging-schema.png" rel="lightbox[post-2491]"><img class="alignnone size-full wp-image-2577" alt="Software tagging schema" src="/openvibe/wp-content/uploads/2013/02/Software-tagging-schema.png" width="730" height="800" /></a></p>
<p>The description of the bullets follows:</p>
<ol>
<li>The OpenViBE Acquisition Server acquires signal from the EEG device</li>
<li>At the same time the External Application sends triggers to the Acquisition Server</li>
<li>The Acquisition Server combines signal from the EEG and triggers from your External Application into one stream, triggers are represented as Stimulations</li>
<li>The Acquisition Client box will pass the signal to the signal processing chain</li>
<li>An optional controller box can give commands (such as target letter) to the External Application via VRPN</li>
<li>The processing chain will give commands to the External Application (detected letter)</li>
</ol>
<h2>Example code</h2>
<p>Please look at the <code>external_stimulation_connection_example</code> program included in OpenViBE distribution.</p>
<p>Two files are included.</p>
<ul>
<li><code>openvibeStimulationConnection.hpp</code>
<ul>
<li>This header contains the<code> OpenViBE::StimulationConnection</code> class, this class exists to abstract the boost interprocess messaging.</li>
</ul>
</li>
<li><code>ovesce_main.cpp</code>
<ul>
<li>This is an example application using the<code> StimulationConnection</code> class. It is a minimal example which, upon execution, sens a <code>OVTK_StimulationId_Beep</code> stimulation to the Acquisition Server.</li>
</ul>
</li>
</ul>
<p>The <code>StimulationConnection</code> class communicates with the Acquisition Server through a boos interprocess messaging queue. By default the queue&#8217;s name is &#8220;openvibeExternalStimulations&#8221;. Note that if you run several Acquisition Servers on the same machine then, by default, they will all consume the same queue!</p>
<p>The queue&#8217;s name the Acquisition Server uses can be changed by modifying the <code>AcquisitionServer_ExternalStimulationsQueueName</code> configuration token.</p>
<p>In order to send stimulations you will have to include the openvibeStimulationConnection.hpp in your source code:</p>
</p>
<pre class='brush: cpp; title: ;  notranslate' title=''>#include "openvibeStimulationConnection.hpp"</pre>
<p>
<p>The StimulationConnection class is initialized in the constructor:</p>
</p>
<pre class='brush: cpp; title: ;  notranslate' title=''>OpenViBE::StimulationConnection* osc = new OpenViBE::StimulationConnection("openvibeExternalStimulations");</pre>
<p>
<p>Note that you do not have to specify any parameter to the constructor if you wish to use the default queue name.</p>
<p>Now at any time you want to send a stimulation to the Acquisition Server you can simply call the <code>sendStimulation(uint64 stimulationCode)</code> function. The <code>stimulationCode</code> parameter specifies the stimulation you wish to send (using the standard OpenViBE coding).</p>
</p>
<pre class='brush: cpp; title: ;  notranslate' title=''>osc-&gt;sendStimulation(OVTK_StimulationId_Beep);</pre>
<p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/send-stimulations-from-your-application-to-the-acquisition-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Brainmaster Discovery &amp; Atlantis devices with OpenViBE</title>
		<link>http://openvibe.inria.fr/using-brainmaster-discovery-atlantis-devices-with-openvibe/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-brainmaster-discovery-atlantis-devices-with-openvibe</link>
		<comments>http://openvibe.inria.fr/using-brainmaster-discovery-atlantis-devices-with-openvibe/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 14:04:58 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Acquisition Server documentation]]></category>
		<category><![CDATA[Atlantis]]></category>
		<category><![CDATA[Brainmaster]]></category>
		<category><![CDATA[Discovery]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[Mensia Technologies]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2414</guid>
		<description><![CDATA[Documentation for the Brainmaster Discovery and Atlantis driver of the OpenViBE acquisition server which is dedicated to Brainmaster devices.   <a href="http://openvibe.inria.fr/using-brainmaster-discovery-atlantis-devices-with-openvibe/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div class='top-banner download link'><a href='http://openvibe.inria.fr/openvibe/wp-content/uploads/2013/01/OpenViBE-Brainmaster-Driver-Documentation.pdf'>Download this documentation as a PDF file. </a></div>
<p style="text-align: center;"><em>Copyright Notice: This document was written by Mensia Technologies (2013).</em></p>
<p>The Brainmaster Discovery and Atlantis driver of the OpenViBE acquisition server is dedicated to Brainmaster devices. These devices have been supported by OpenViBE since version 0.15.0. The driver supports the following models :</p>
<ul>
<li>Atlantis 2&#215;2</li>
<li>Atlantis 4&#215;4</li>
<li>Discovery 24</li>
</ul>
<h2>Driver properties</h2>
<p>Entering the configuration panel of the driver offers a number of options. These options include the common options that you find in all OpenViBE drivers (subject identifier, subject age and subject gender). They also include options related to the specific Brainmaster devices. These options are :</p>
<ul>
<li>The COM port to which the device is attached</li>
<li>The baud rate to use to communicate with the device</li>
<li>The bit depth of the amplifier</li>
<li>The notch filter</li>
</ul>
<p>Note that the sampling rate is fixed to 256Hz.</p>
<p>In order to speed-up the configuration, several “presets” have been included. Choosing a preset will select the best settings for the device you want to use. Available presets are as follows :</p>
<ul>
<li><strong>Atlantis 2&#215;2</strong> : turns the configuration to an Atlantis kind of device, 4 channels (2 EEG + 2 AUX), 256 Hz sampling rate, 115200 Bds, 24 bits depth and no notch filter</li>
<li><strong>Atlantis 4&#215;4</strong> : turns the configuration to an Atlantis kind of device, 8 channels (4 EEG + 4 AUX), 256 Hz sampling rate, 115200 Bds, 24 bits depth and no notch filter</li>
<li><strong>Discovery 24</strong> : turns the configuration to a Discovery kind of device, 24 channels (22 EEG + 2 AUX), 256 Hz sampling rate, 460.800 Bds, 24 bits depth and no notch filter</li>
</ul>
<p>Changing any of the device specific settings will turn the preset to “Custom” and let you chose all the settings manually.</p>
<p>Most of the time, choosing appropriate preset will be sufficient for your needs.</p>
<p>Configuration panel for Atlantis kind of devices</p>
<div class="grid-split ov-gallery"><div class="grid-first">
</div><div class="grid_8">
<div class='caption'><a href="/openvibe/wp-content/uploads/2013/01/configuration-atlantis-2x2.png" rel="lightbox[post-2414]"><img class="size-full wp-image-2418" alt="Atlantis 2x2" src="/openvibe/wp-content/uploads/2013/01/configuration-atlantis-2x2.png" width="189" height="241" /></a> Atlantis 2&#215;2</div>
</div><div class="grid_8">
<div class='caption'><a href="/openvibe/wp-content/uploads/2013/01/configuration-atlantis-4x4.png" rel="lightbox[post-2414]"><img class="size-full wp-image-2417" alt="Atlantis 4x4" src="/openvibe/wp-content/uploads/2013/01/configuration-atlantis-4x4.png" width="189" height="241" /></a> Atlantis 4&#215;4</div>
</div></div><div class="clear"></div>
<p>Configuration panel for Discovery kind of devices or manually configured devices</p>
<div class="grid-split ov-gallery"><div class="grid-first">
</div><div class="grid_8">
<div class='caption'><a href="/openvibe/wp-content/uploads/2013/01/configuration-discovery-24.png" rel="lightbox[post-2414]"><img class="size-full wp-image-2416" alt="Discovery 24" src="/openvibe/wp-content/uploads/2013/01/configuration-discovery-24.png" width="189" height="241" /></a> Discovery 24</div>
</div><div class="grid_8">
<div class='caption'><a href="/openvibe/wp-content/uploads/2013/01/configuration-discovery-manual.png" rel="lightbox[post-2414]"><img class="size-full wp-image-2415" alt="Manually configured device" src="/openvibe/wp-content/uploads/2013/01/configuration-discovery-manual.png" width="189" height="241" /></a> Manually configured device</div>
</div></div><div class="clear"></div>
<h2>Choosing the COM port</h2>
<p>The COM port can be autodected. In order to do that, the <em>Brainmaster Discovery and Atlantis</em> driver tries each COM port from COM 1 to COM 16 until it finds one that can be opened. It happens that some ports can be opened even if no Brainmaster device is plugged to them (for instance modem and bluetooth devices usually use COM ports as well). If the detection went wrong, feel free to set the COM port manually and according to the <em>Windows Device Manager</em>.</p>
<h2>Device Serial Nr and Device Passkey</h2>
<p>These fields must be set in order to use Brainmaster devices with OpenViBE.</p>
<p>The device serial number can be found on a sticker on the back of your device. Its format is as follows : XXXXX (where X are numbers)</p>
<p>The device passkey <strong>should be requested to Brainmaster support</strong>. It is a <strong>different</strong> key than the one you have for Brainmaster software. Its format is as follows : XXXX-XXXX-XXXX (where X are numbers or letters).</p>
<p>In order not to set-up the keys each time you start the acquisition server, you can set the following environment variables to your OpenViBE configuration file :</p>
<pre>AcquisitionServer_Driver_BrainmasterDeviceSerial
AcquisitionServer_Driver_BrainmasterDevicePasskey</pre>
<p>Here is an example of openvibe.conf that would include these tokens :</p>
<pre>AcquisitionServer_Driver_BrainmasterDeviceSerial = 12345
AcquisitionServer_Driver_BrainmasterDevicePasskey = 1234-abcd-wxyz</pre>
<h2>Troubleshooting and frequently asked questions</h2>
<h3>My device has 5 (resp. 10) EEG electrodes but the channel name changing panel shows only 4 (resp 8) channels.</h3>
<p>Atlantis devices use two electrodes per EEG channel. This means each EEG channel has a possibly independent reference. This is different of what is commonly used in BCI or more generally in higher number of electrodes setups. Atlantis 2&#215;2 uses the following 5 electrodes : A1, R1, G, A2, R2. This results in two channels, first one is the difference of potential from A1 to R1 (namely A1-R1), second one is the difference of potential from A2 to R2 (namely A2-R2). The other two channels are the 2 Auxiliary channels. Atlantis 4&#215;4 is designed in the same way : 10 electrodes A1, R1, G, A2, R2, A3, R3, G, A4, R4. This results in four channels : A1-R1, A2-R2, A3-R3, and A4-R4. The other four channels are the 4 Auxiliary channels. As regarding to the ground electrode, as for any OpenViBE driver, it is never considered in the Acquisition Server.</p>
<h3>I am not using Auxiliary channels but the driver won’t let me disable their acquisition</h3>
<p>Just use a <em>Channel Selector</em> box after the <em>Acquisition Client</em> box to keep the channels you are interested in and leave the others out.</p>
<h3>The COM port can is not detected correctly</h3>
<p>Go to the Windows Device Manager (Right click on <em>My Computer</em>, followed by <em>Manage</em>, followed by <em>Device Manager</em>)<br />
Find your Brainmaster device and click <em>Properties</em><br />
Find the COM port your device is connected to<br />
Use this COM port in the acquisition server configuration panel</p>
<h3>The acquisition server says “Could not log in device”</h3>
<p>Check that your serial number is set correctly<br />
Check that your passkey is set correctly<br />
Check that you use the passkey you received from Brainmaster for OpenViBE and that you are not using the passkey that should be used for Brainmaster<br />
Try with a lower Bds rate</p>
<h3>Atlantis and Discovery presets deactivate notch filter, is it normal ?</h3>
<p>Yes it is normal. OpenViBE users usually want the signals as “raw” as possible. The notch filter can be done in software using the “Temporal Filter” box if needed. Still hardware filter usually have better performances than software filters. So for that reason and as an option, you can change these settings manually and go ahead with a pre-filtered signal.</p>
<h3>I still have problems using my Brainmaster device with OpenViBE</h3>
<p>Edit your OpenViBE configuration file and set the log level to Trace</p>
<pre>Kernel_MainLogLevel = Trace</pre>
<p>Then run several tests with the acquisition server and save the openvibe-acquisition-server.log file in a safe place. Finally go to the OpenViBE forum (<a href="http://openvibe.inria.fr/forum">http://openvibe.inria.fr/forum</a>), precisely describe the problem you are facing and attach the log file accordingly.</p>
<h3>I know Brainmaster devices and want to be sure what is acquired from the device (raw datastream)</h3>
<p>The raw content of the data stream can be dumped in a text file. In order to activate this feature, edit your configuration file and point the appropriate variable to the file you want to dump the stream in.</p>
<pre>AcquisitionServer_Driver_BrainmasterFrameDumpFilename = c:/dump.txt</pre>
<p>Then run the acquisition server. Note that each use of the acquisition server will overwrite the previous dump.</p>
<h3>It happens that the acquired signal looks choppy</h3>
<p>OpenViBE implements a drift correction process to allow devices without hardware triggers to reliably tag signals during acquisition. The &#8220;reference&#8221; clock for this process is the computer&#8217;s clock. As their is no hardware sync between the device and the computer&#8217;s clock, it happens and it is normal that some devices drift (that is : instead of sending the promised 256 samples per second, they send 256.1 samples per second for instance). As the computer clock is the clock OpenViBE considers as a reference, it has to add and/or remove a fraction of the acquired samples accordingly. While acquiring and inspecting signals with a “Signal Display” box, one should see vertical dashed line for each correction due to drift. This can be checked doing the following actions :</p>
<ol>
<li>in the designer connect the &#8220;stimulations&#8221; output of the acquisition client to the &#8220;stimulations&#8221; input of the signal display</li>
<li>run the scenario</li>
<li>you should see a vertical dashed line for each correction due to drift</li>
</ol>
<p>This issue can be solved reducing the buffer size and latency of the COM port which the device is connected on. Indeed the default settings cause the OS to buffer the data in big blocks. During the buffering period, OpenViBE believes the device does not send enough samples and adjusts the drift accordingly. As soon as a -big- block of samples gets to OpenViBE, it realizes too many samples were acquired (as it adjusted the drift previously) so it -again- adjusts the drift in the opposite way, causing the signal to be significantly modified (this is the worst scenario happening for the drift correction process !).<br />
In order to reduce the buffer size and latency of the COM port, process as follows :</p>
<ol>
<li>Right click on the &#8220;My computer&#8221; icon</li>
<li>Go to &#8220;Manage&#8221;</li>
<li>Go to the &#8220;Device Manager&#8221;</li>
<li>Go to &#8220;COM and LPT ports&#8221;</li>
<li>Go to your Discovery COM port</li>
<li>Go to &#8220;Port parameters&#8221; tab</li>
<li>Change baud rate to 460800 (Discovery) or 115200 (Atlantis)</li>
<li>Go to &#8220;Advanced&#8221;</li>
<li>Set the reception / transmission buffer size to at most 64</li>
<li>Set the latency to at most 2ms</li>
<li>Set the delay for reading and writing to 0</li>
</ol>
<h3>The drift correction process does not matter to me, how can I disable it ?</h3>
<p>It is not recommended to disable the drift correction process. However, if you still want to disable it, process as follows :</p>
<ol>
<li>in the acquisition server, go to &#8220;Preferences&#8221;</li>
<li>in the &#8220;drift correction&#8221; combo box, select &#8220;disable&#8221;</li>
<li>start the acquisition server</li>
<li>at some point you&#8217;ll probably see the drift gauge moving out of its allowed boundaries &#8211; but this will keep all the acquired samples</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/using-brainmaster-discovery-atlantis-devices-with-openvibe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BrainProducts actiCHamp driver</title>
		<link>http://openvibe.inria.fr/brainproducts-actichamp-driver/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=brainproducts-actichamp-driver</link>
		<comments>http://openvibe.inria.fr/brainproducts-actichamp-driver/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 14:04:26 +0000</pubDate>
		<dc:creator>Jozef</dc:creator>
				<category><![CDATA[Acquisition Server documentation]]></category>
		<category><![CDATA[actiCHamp]]></category>
		<category><![CDATA[BrainProducts]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[Mensia Technologies]]></category>

		<guid isPermaLink="false">http://openvibe.inria.fr/?p=2450</guid>
		<description><![CDATA[Copyright Notice: This document was written by Mensia Technologies (2013). Introduction This document describes how to use the OpenViBE driver for a BrainProducts actiCHamp amplifier. The documentation will cover the device capabilities, the corresponding driver and server configuration, and answers &#8230; <a href="http://openvibe.inria.fr/brainproducts-actichamp-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: left;"><div class='top-banner download link'><a href='http://openvibe.inria.fr/openvibe/wp-content/uploads/2013/02/BrainProducts-actiCHamp-OpenViBE.pdf'>Download this documentation as a PDF file. </a></div></p>
<p style="text-align: center;"><em>Copyright Notice: This document was written by Mensia Technologies (2013).</em></p>
<h2 id="introduction">Introduction</h2>
<p>This document describes how to use the OpenViBE driver for a BrainProducts actiCHamp amplifier. The documentation will cover the device capabilities, the corresponding driver and server configuration, and answers to frequently asked questions. This driver is available in OpenViBE version 0.15.0 and newer.</p>
<h2 id="presentationofthedevice">Presentation of the device</h2>
<p>The actiCHamp amplifier has the following characteristics and possibilities:</p>
<ul>
<li>32 to 160 channels, using up to 5 expansion cards of 32 channels</li>
<li>To be used with actiCAP active electrode sets</li>
<li>8 auxiliary channels</li>
<li>8bit trigger output and input</li>
<li>10kHz, 50kHz or 100kHz physical sampling frequency</li>
<li>Impedance mode to check electrode contacts</li>
<li>BrainProducts Active Shield for noise reduction</li>
<li>Internal ADC data filter (Averaging x2)</li>
<li>Internal ADC data decimation (factor 2)</li>
<li>USB connection</li>
</ul>
<p><a href="/openvibe/wp-content/uploads/2013/02/actichamp-figure-1.png" rel="lightbox[post-2450]"><img class="size-full wp-image-2452 aligncenter" alt="Figure 1: BrainProducts actiCHamp" src="/openvibe/wp-content/uploads/2013/02/actichamp-figure-1.png" width="457" height="401" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;">Figure 1: BrainProducts actiCHamp</p>
<h2 id="driverconfiguration">Driver configuration</h2>
<p>The OpenViBE driver for the BrainProducts actiCHamp device can be configured to access most of the amplifier capabilities. Here is a snapshot of the driver configuration panel :</p>
<p><a href="/openvibe/wp-content/uploads/2013/02/actichamp-figure-2.png" rel="lightbox[post-2450]"><img class="wp-image-2453 aligncenter" alt="Figure 2: driver configuration" src="/openvibe/wp-content/uploads/2013/02/actichamp-figure-2.png" width="904" height="746" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;">Figure 2: driver configuration</p>
<h3 id="experimentinformation">Experiment information</h3>
<p>First is the experiment information, common to any OpenViBE driver, that we be send through the OpenViBE data stream for the records :</p>
<p><a href="/openvibe/wp-content/uploads/2013/02/actichamp-figure-3.png" rel="lightbox[post-2450]"><img class="wp-image-2454   alignnone" alt="Figure 3: Experiment information" src="/openvibe/wp-content/uploads/2013/02/actichamp-figure-3.png" width="452" height="137" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;">Figure 3: Experiment information</p>
<h3 id="acquisitionconfiguration">Acquisition configuration</h3>
<p>Second part is the actiChamp acquisition configuration:</p>
<p><a href="/openvibe/wp-content/uploads/2013/02/actichamp-figure-4.png" rel="lightbox[post-2450]"><img class="size-full wp-image-2455 aligncenter" alt="Figure 4: acquisition configuration" src="/openvibe/wp-content/uploads/2013/02/actichamp-figure-4.png" width="527" height="386" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;">Figure 4: acquisition configuration</p>
<p>User can select the <strong>device</strong>. The index depends on the USB index in which the amplifier is plugged.</p>
<p>The number of channels is disabled, as this number is deduced from the number of modules currently activated, set in the last part.</p>
<p>The sampling frequency of the data stream produced by the driver can be chosen from the following list : <strong>128Hz, 256Hz, 512Hz, 1024Hz, 2048Hz, 4096Hz</strong>. Note that these sampling frequencies dos not correspond to the physical sampling frequency of the EEG amplifier, and are the most common sampling frequencies used with OpenViBE.</p>
<p>The <strong>physical sampling rate</strong> of the amplifier is set to 10kHz and cannot be modified.</p>
<p>Whereas the device can handle 100, 50 or 10kHz (plus 25 and 5kHz using the built-in decimation), usual BCI applications and OpenViBE in particular are not handling such high sampling frequencies. Most of the EEG components studied are &lt; 100 Hz, thus a sampling frequency of 512Hz is common for practical research with OpenViBE. The scenarios given with OpenViBE suppose a 512Hz sampling frequency.</p>
<p>We apply a well-adjusted software decimation, with software low-pass FIR filter before downsampling. This process induces a 50ms fixed delay, which is compensated by the Acquisition Server automatically (acquired samples are time-stamped accurately).</p>
<p>The acquisition mode may be set to:</p>
<ul>
<li><strong>Normal</strong>, for basic acquisition</li>
<li><strong>Active Shield</strong>, for acquisition with this noise-filtering algorithm (recommended)</li>
<li><strong>Impedance</strong>, to check continuously the electrode impedances</li>
<li><strong>Test</strong>, to send a square signal continuously on every channel</li>
</ul>
<p>The ADC data filter can be set to either Native (no ADC data filter) or Averaging x2 samples.</p>
<p>User can also activate the data decimation (factor 2).</p>
<p>The <strong>Active Shield gain</strong> can be set manually (in percent). Default value (5) is recommended.</p>
<p>Finally, the impedance limits of the actiCap can be manually set. Below the <strong>Good impedance limit</strong>, electrodes LEDs will be green. Above the <strong>Bad impedance limit</strong>, the LEDs will be red. Between these two bounds the LEDs will be yellow.</p>
<h3 id="channelmanagement">Channel management</h3>
<p>The last part is the channel selection and naming.</p>
<p><a href="/openvibe/wp-content/uploads/2013/02/actichamp-figure-5.png" rel="lightbox[post-2450]"><img class="size-full wp-image-2456 aligncenter" alt="Figure 5: channel management" src="/openvibe/wp-content/uploads/2013/02/actichamp-figure-5.png" width="507" height="311" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;">Figure 5: channel management</p>
<p>The actiCHamp driver detects automatically the number of extension cards connected to the amplifier. For example on this screenshot 2 modules are detected.<br />
User can select the <strong>modules to activate</strong> by toggling the corresponding buttons.</p>
<p>The <strong>8 AUX channels</strong> can be activated by checking the corresponding box.</p>
<p>Finally, <strong>channel names</strong> can be set as with most of the OpenViBE drivers. If you are using the BrainProducts easycap 64 channels EEG cap, you can use the electrode placement list provided with the driver. This file can be found in (<em>share/openvibe-application/acquisition-server/easycap- 64ch-electrode-names–10–20.txt</em>).<br />
Alternatively, a Channel Rename box can be used within an OpenViBE scenario. A box configuration file is also provided (<em>ov-channel-rename-easycap–64ch.cfg</em> in the same folder).</p>
<h2 id="acquisitionserverconfiguration">Acquisition Server configuration</h2>
<p>As with every OpenViBE driver, the Acquisition Server automatically detects drift and jitter in the “real” sampling rate of the device compared to the theoretical rate.</p>
<p>When using the actiCHamp amplifier, user should consider adjusting the drift correction parameters to lower the number of unnecessary corrections (e.g. adding samples that will be removed shortly after) , as recommended in the configuration panel header:</p>
<p><a href="/openvibe/wp-content/uploads/2013/02/actichamp-figure-6.png" rel="lightbox[post-2450]"><img class="size-full wp-image-2457 aligncenter" alt="Figure 6: recommendations" src="/openvibe/wp-content/uploads/2013/02/actichamp-figure-6.png" width="506" height="165" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;">Figure 6: recommendations</p>
<p>With default acquisition settings, adjusting the <strong>jitter estimation count</strong> to <strong>500</strong> in the <strong>Acquisition<br />
Server preferences</strong> is recommended.</p>
<h2 id="triggersandmybutton">Triggers and My Button</h2>
<p>The actiCHamp driver for OpenViBE is managing the input triggers that the device may receive through parallel port, and the My Button in front of the amplifier that can be pressed at will to notify some events.</p>
<p>The device has <strong>8 input trigger bits</strong>, the input trigger line can thus be seen as a number between 0 and 256. The trigger states are translated into one OpenViBE stimulation code, in the range <code>OVTK_StimulationId_LabelStart</code> (33024 &#8211; all triggers to 0) to <code>OVTK_StimulationId_LabelEnd</code> (33279 &#8211; all trigger to 1).</p>
<p>For example, receiving the stimulation code 33068 means that the trigger line has the value 33068 &#8211; 33024 = 44.</p>
<p style="text-align: center;">44=2⁵+2³+2²</p>
<p>The code 33068 tells you that the input trigger at index 5, 3 and 2 are activated. Triggers at indexes 0, 1, 4, 6 and 7 are off.</p>
<p>The OpenViBE acquisition server will send <strong>a new stimulation every time the driver detects a change in the input trigger line</strong>. The MyButton state is also translated into OpenViBE stimulation codes:</p>
<ul>
<li>MyButton is pressed, server sends the stimulation<br />
<code>OVTK_StimulationId_Button1_Pressed (32786)</code></li>
<li>MyButton is pressed, server sends the stimulation<br />
<code>OVTK_StimulationId_Button1_Released (32787)</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://openvibe.inria.fr/brainproducts-actichamp-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
