<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.bci2000.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pbrunner</id>
	<title>BCI2000 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.bci2000.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pbrunner"/>
	<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php/Special:Contributions/Pbrunner"/>
	<updated>2026-06-29T22:27:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10514</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10514"/>
		<updated>2023-07-02T19:24:32Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Video Demonstrations of Using CorTec Brain Interchange with BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synchronize the acquisition of neural signals from the CorTec Brain Interchange with behavioral data from inertial measurement units==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/-SOUX5J1vJE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10513</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10513"/>
		<updated>2023-07-02T19:22:59Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Video Demonstrations of Using CorTec Brain Interchange with BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synchronize the acquisition of neural signals from the CorTec Brain Interchange with behavioral data from inertial measurement units==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/-SOUX5J1vJE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10512</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10512"/>
		<updated>2023-07-02T19:21:22Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10511</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10511"/>
		<updated>2023-07-02T19:21:13Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10510</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10510"/>
		<updated>2023-07-02T19:21:05Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10509</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10509"/>
		<updated>2023-07-02T19:20:46Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Video Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot; dimensions=&amp;quot;900&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10508</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10508"/>
		<updated>2023-07-02T19:03:16Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring the Time and Location of Stimulation of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10507</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10507"/>
		<updated>2023-07-02T18:46:07Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Configuring and Connecting to the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/FpypZmUOWfE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10506</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10506"/>
		<updated>2023-07-02T18:41:47Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Intensity of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/jHATIN0ewRw&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10505</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10505"/>
		<updated>2023-07-02T18:38:09Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
=Video Demonstrations of Using CorTec Brain Interchange with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Controlling the Stimulation Frequency of the CorTec Brain Interchange with BCI2000==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/09Be5N9DIOE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10504</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10504"/>
		<updated>2023-07-02T18:29:44Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Data Sharing=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10503</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10503"/>
		<updated>2023-07-02T18:29:02Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Canine Data=&lt;br /&gt;
This data recorded is freely available on DANDI and OpenNeuro.&lt;br /&gt;
&lt;br /&gt;
Download the [https://dandiarchive.org/dandiset/000571?pos=1 canine data from DANDI].&lt;br /&gt;
&lt;br /&gt;
Download the [https://openneuro.org/datasets/ds004624/versions/1.0.1 canine data from OpenNeuro].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10502</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10502"/>
		<updated>2023-07-02T17:24:02Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Getting Started with Cortec BIC in BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:XsensMTwLogger]]&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10501</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10501"/>
		<updated>2023-07-02T17:23:28Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Getting Started with Cortec BIC in BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Contributions|XsensMTwLogger]]&lt;br /&gt;
&lt;br /&gt;
:This article shows how to combine any BCI2000 source module the XsensMTw device to capture motion simultaneously with electrophysiological signals.&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10500</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10500"/>
		<updated>2023-07-02T17:21:21Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Getting Started with Cortec BIC in BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:This article shows how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10499</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10499"/>
		<updated>2023-07-02T17:20:29Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
*[[CortecADC]]&lt;br /&gt;
:shows you how to configure and use the Cortec BIC in BCI2000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10498</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10498"/>
		<updated>2023-07-02T17:17:43Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting Started with BCI2000=&lt;br /&gt;
&lt;br /&gt;
==Howto steps==&lt;br /&gt;
*[[Programming Howto:Install Prerequisites|Install Prerequisites]]&lt;br /&gt;
:shows you how to install TortoiseSVN, CMake, VisualStudio, and Qt.&lt;br /&gt;
*[[Programming Howto:Register with BCI2000 Project|Register with the BCI2000 Project]]&lt;br /&gt;
:explains how to obtain a BCI2000 user account.&lt;br /&gt;
*[[Programming Howto:Download the BCI2000 Sourcecode|Download the BCI2000 Sourcecode]]&lt;br /&gt;
:details the steps how to use TortoiseSVN to download the BCI2000 sourcecode.&lt;br /&gt;
*[[Programming Howto:Configure BCI2000 for Compilation|Configure BCI2000 for Compilation]]&lt;br /&gt;
:demonstrates how to use CMake to create a BCI2000 solution file.&lt;br /&gt;
*[[Programming Howto:Compile BCI2000|Compile BCI2000]]&lt;br /&gt;
:illustrates how to compile BCI2000 using VisualStudio.&lt;br /&gt;
*[[Programming Howto:Create a custom Signal Processing Module|Create a custom Signal Processing Module]]&lt;br /&gt;
:shows how to create a new BCI2000 module from a template.&lt;br /&gt;
*[[Programming Howto:Attach the Debugger to a BCI2000 Module|Attach the Debugger to a BCI2000 Module]]&lt;br /&gt;
:explains how to attach the VisualStudio debugger to a running module.&lt;br /&gt;
*[[Programming Howto:Programmatically wait for the Debugger in a BCI2000 Module|Programmatically wait for the Debugger in a BCI2000 Module]]&lt;br /&gt;
:explains how to halt execution of a BCI2000 module, and wait for the user to attach a debugger.&lt;br /&gt;
*[[Programming Howto:Deploy a Release version of a BCI2000 Module|Deploy a Release version of a BCI2000 Module]]&lt;br /&gt;
:demonstrates how to build a self-contained version of your new module.&lt;br /&gt;
&lt;br /&gt;
==Video Overview==&lt;br /&gt;
&amp;lt;youtube alignment=&amp;quot;center&amp;quot;&amp;gt;https://youtu.be/3Jz527f2n5o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started with Cortec BIC in BCI2000=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10497</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10497"/>
		<updated>2023-07-02T17:11:50Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Schalk G, Worrell S, Mivalt F, Belsten A, Kim I, Morris JM, Hermes D, Klassen BT, Staff NP, Messina S, Kaufmann T, Rickert J, Brunner P, Worrell GA, Miller KJ. Toward a fully implantable ecosystem for adaptive neuromodulation in humans: Preliminary experience with the CorTec BrainInterchange device in a canine model. Front Neurosci. 2022 Dec 19;16:932782. doi: 10.3389/fnins.2022.932782. PMID: 36601593; PMCID: PMC9806357.&lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10496</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10496"/>
		<updated>2023-07-02T17:10:58Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Preliminary experience with the CorTec BrainInterchange device in a canine modele=&lt;br /&gt;
This article describes initial work toward an ecosystem for adaptive neuromodulation in humans by documenting the experience of implanting CorTec&#039;s BrainInterchange (BIC) device in a beagle canine and using the BCI2000 environment to interact with the BIC device. It begins with laying out the substantial opportunity presented by a useful, easy-to-use, and widely available hardware/software ecosystem in the current landscape of the field of adaptive neuromodulation, and then describes experience with implantation, software integration, and post-surgical validation of recording of brain signals and implant parameters. Initial experience suggests that the hardware capabilities of the BIC device are fully supported by BCI2000, and that the BIC/BCI2000 device can record and process brain signals during free behavior. With further development and validation, the BIC/BCI2000 ecosystem could become an important tool for research into new adaptive neuromodulation protocols in humans. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Preliminary_experience_with_the_CorTec_BrainInterchange_device_in_a_canine_model.pdf article here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10495</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10495"/>
		<updated>2023-07-02T17:08:17Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Canine Surgical Procedure=&lt;br /&gt;
This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecSurgicalProtocols&amp;diff=10494</id>
		<title>CortecSurgicalProtocols</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecSurgicalProtocols&amp;diff=10494"/>
		<updated>2023-07-02T17:07:47Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: Pbrunner moved page CortecSurgicalProtocols to CortecExperience&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CortecExperience]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10493</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10493"/>
		<updated>2023-07-02T17:07:47Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: Pbrunner moved page CortecSurgicalProtocols to CortecExperience&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10492</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10492"/>
		<updated>2023-07-02T17:00:49Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;br /&gt;
Download the [https://bci2000.org/downloads/doc/Canine_Cortec_Surgical_Protocol.pdf surgical protocol here].&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10491</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10491"/>
		<updated>2023-07-02T16:54:08Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presents a brief introduction to surgical protocols for the implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10490</id>
		<title>CortecExperience</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=CortecExperience&amp;diff=10490"/>
		<updated>2023-07-02T16:52:49Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: Created page with &amp;quot;This article presents a brief introduction to surgical protocols for implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presents a brief introduction to surgical protocols for implantation of the CorTec Brain Interchange. The main objective is to introduce the essential surgical considerations for implanting this device in different animal models. &lt;br /&gt;
&lt;br /&gt;
=Canine Surgical Procedure=&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8492</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8492"/>
		<updated>2020-05-13T18:28:59Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
[[File:actiCHamp_Plus.png|right|300px]]&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp Plus can be used  with passive and active electrodes and is capable of reading from 32 up to 160 channels at 100kHz. To accommodate additional channels (ie. 64-160), additional modules are installed on the top of amp. The amplifier also has 8 auxiliary channels for gathering data from additional physiological sensors at up to 100kHz. The amplifier is powered by a lithium-ion battery pack to ensure long recording times. The amplifier is connected the computer running BCI2000 via USB. Note, the amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
This module is included in the contributions section of BCI2000. It can be included by enabling the &amp;lt;code&amp;gt;BUILD_CONTRIB&amp;lt;/code&amp;gt; in CMAKE before compiling BCI2000. After compiling, in the &amp;lt;code&amp;gt;BCI2000/prog&amp;lt;/code&amp;gt; directory, there will be an executable called &amp;lt;code&amp;gt;actiCHampPlus.exe&amp;lt;/code&amp;gt;. To then run BCI2000 with the executable, add &amp;lt;code&amp;gt;Start executable actiCHampPlus&amp;lt;/code&amp;gt; to your batch file. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
After the initial compile of the source module, there is sometimes an error that reads &#039;&#039;&amp;quot;No actiCHampPlus devices found. Try unplugging actiChampPlus and restarting BCI2000&amp;quot;&#039;&#039;. To fix this error, go to &amp;lt;code&amp;gt;BCI2000\src\contrib\SignalSource\actiCHampPlus\lib\dylib\&amp;lt;x64/x86&amp;gt;\&amp;lt;/code&amp;gt;, copy the file &amp;lt;code&amp;gt;ActiChamp_&amp;lt;x64/x86&amp;gt;.dll&amp;lt;/code&amp;gt; and paste it in the &amp;lt;code&amp;gt;BCI2000\prog&amp;lt;/code&amp;gt; directory. The file will already exist in that folder so when prompted, replace it. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6037&lt;br /&gt;
*Tested under: 6039&lt;br /&gt;
*Known to compile under: 6064&lt;br /&gt;
*Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
[[File:ActiCHampPlus_BCI2000_config_high-res.PNG|right|600px]]&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel. If set to auto, the default is &amp;quot;Ch&amp;lt;#&amp;gt;&amp;quot; and &amp;quot;Aux&amp;lt;#&amp;gt;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples that are transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies: 10kHz, 50kHz and 100kHz.&lt;br /&gt;
&lt;br /&gt;
===SubSampleDivisor===&lt;br /&gt;
Factor that decimates the hardware sampling rate. The hardware sampling rate is divided by this value to yield the actual sampling rate. This parameter has seven values: 1, 2, 5, 10, 20, 50, and 100. &lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by the hardware sampling rate and sub sample divisor. This parameter should always be set to &#039;auto&#039;.&lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. This data will be presented in a pop-up window for all of the EEG channels and the ground. Data will then be passed from the amplifier to BCI2000 normally. If active electrodes are being used, each electrode will illuminate an LED corresponding to the amount of impedance. If the impedance is low the electrode LED will be green. If the impedance is high the LED will be red, else it will be yellow.&lt;br /&gt;
&lt;br /&gt;
===ImpedancePauseTime===&lt;br /&gt;
Amount of time to illuminate LEDs on active electrodes during impedance check. Helpful when trying to correct high impedance channels. &lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8491</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8491"/>
		<updated>2020-03-06T16:51:22Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
[[File:actiCHamp_Plus.png|right|300px]]&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp Plus can be used  with passive and active electrodes and is capable of reading from 32 up to 160 channels at 100kHz. To accommodate additional channels (ie. 64-160), additional modules are installed on the top of amp. The amplifier also has 8 auxiliary channels for gathering data from additional physiological sensors at up to 100kHz. The amplifier is powered by a lithium-ion battery pack to ensure long recording times. The amplifier is connected the computer running BCI2000 via USB. Note, the amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
This module is included in the contributions section of BCI2000. It can be included by enabling the &amp;lt;code&amp;gt;BUILD_CONTRIB&amp;lt;/code&amp;gt; in CMAKE before compiling BCI2000. After compiling, in the &amp;lt;code&amp;gt;BCI2000/prog&amp;lt;/code&amp;gt; directory, there will be an executable called &amp;lt;code&amp;gt;actiCHampPlus.exe&amp;lt;/code&amp;gt;. To then run BCI2000 with the executable, add &amp;lt;code&amp;gt;Start executable actiCHampPlus&amp;lt;/code&amp;gt; to your batch file. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
After the initial compile of the source module, there is sometimes an error that reads &#039;&#039;&amp;quot;No actiCHampPlus devices found. Try unplugging actiChampPlus and restarting BCI2000&amp;quot;&#039;&#039;. To fix this error, go to &amp;lt;code&amp;gt;BCI2000\src\contrib\SignalSource\actiCHampPlus\lib\dylib\&amp;lt;x64/x86&amp;gt;\&amp;lt;/code&amp;gt;, copy the file &amp;lt;code&amp;gt;ActiChamp_&amp;lt;x64/x86&amp;gt;.dll&amp;lt;/code&amp;gt; and paste it in the &amp;lt;code&amp;gt;BCI2000\prog&amp;lt;/code&amp;gt; directory. The file will already exist in that folder so when prompted, replace it. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6037&lt;br /&gt;
*Tested under: 6039&lt;br /&gt;
*Known to compile under: 6064&lt;br /&gt;
*Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
[[File:ActiCHampPlus_BCI2000_config_high-res.PNG|right|600px]]&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel. If set to auto, the default is &amp;quot;Ch&amp;lt;#&amp;gt;&amp;quot; and &amp;quot;Aux&amp;lt;#&amp;gt;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples that are transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies: 10kHz, 50kHz and 100kHz.&lt;br /&gt;
&lt;br /&gt;
===SubSampleDivisor===&lt;br /&gt;
Factor that decimates the hardware sampling rate. The hardware sampling rate is divided by this value to yield the actual sampling rate. This parameter has seven values: 1, 2, 5, 10, 20, 50, and 100. &lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by the hardware sampling rate and sub sample divisor. This parameter should always be set to &#039;auto&#039;.&lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. This data will be presented in a pop-up window for all of the EEG channels and the ground. Data will then be passed from the amplifier to BCI2000 normally. If active electrodes are being used, each electrode will illuminate an LED corresponding to the amount of impedance. If the impedance is low the electrode LED will be green. If the impedance is high the LED will be red, else it will be yellow.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=File:ActiCHampPlus_BCI2000_config_high-res.PNG&amp;diff=8490</id>
		<title>File:ActiCHampPlus BCI2000 config high-res.PNG</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=File:ActiCHampPlus_BCI2000_config_high-res.PNG&amp;diff=8490"/>
		<updated>2020-03-06T16:50:11Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: High res version of actiChamp Plus high res config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;High res version of actiChamp Plus high res config&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=File:ActiCHampPlus_BCI200_config.JPG&amp;diff=8489</id>
		<title>File:ActiCHampPlus BCI200 config.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=File:ActiCHampPlus_BCI200_config.JPG&amp;diff=8489"/>
		<updated>2020-03-06T16:32:07Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: Screenshot of actichamp plus parameters in config pop-up in BCI2000&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of actichamp plus parameters in config pop-up in BCI2000&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8488</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8488"/>
		<updated>2020-03-06T16:24:31Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
[[File:actiCHamp_Plus.png|right|300px|caption]]&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp Plus can be used  with passive and active electrodes and is capable of reading from 32 up to 160 channels. To accomidate additional channels (ie. 64-160), additional modules are installed on the top of amp. The amplifier also has 8 auxiliary channels for gathering data from additional physiological sensors at up to 100kHz. The amplifier is powered by a lithium-ion battery pack to ensure long recording times. The amplifier is connected the computer running BCI2000 via USB. Note, the amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
This module is included in the contributions section of BCI2000. It can be included by enabling the &amp;lt;code&amp;gt;BUILD_CONTRIB&amp;lt;/code&amp;gt; in CMAKE before compiling BCI2000. After compiling, in the &amp;lt;code&amp;gt;BCI2000/prog&amp;lt;/code&amp;gt; directory, there will be an executable called &amp;lt;code&amp;gt;actiCHampPlus.exe&amp;lt;/code&amp;gt;. To then run BCI2000 with the executable, add &amp;lt;code&amp;gt;Start executable actiCHampPlus&amp;lt;/code&amp;gt; to your batch file. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
After the initial compile of the source module, there is sometimes an error that reads &#039;&#039;&amp;quot;No actiCHampPlus devices found. Try unplugging actiChampPlus and restarting BCI2000&amp;quot;&#039;&#039;. To fix this error, go to &amp;lt;code&amp;gt;BCI2000\src\contrib\SignalSource\actiCHampPlus\lib\dylib\&amp;lt;x64/x86&amp;gt;\&amp;lt;/code&amp;gt;, copy the file &amp;lt;code&amp;gt;ActiChamp_&amp;lt;x64/x86&amp;gt;.dll&amp;lt;/code&amp;gt; and paste it in the &amp;lt;code&amp;gt;BCI2000\prog&amp;lt;/code&amp;gt; directory. The file will already exist in that folder so when prompted, replace it. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6037&lt;br /&gt;
*Tested under: 6039&lt;br /&gt;
*Known to compile under: 6064&lt;br /&gt;
*Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel. If set to auto, the default is &amp;quot;Ch&amp;lt;#&amp;gt;&amp;quot; and &amp;quot;Aux&amp;lt;#&amp;gt;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples that are transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies: 10kHz, 50kHz and 100kHz.&lt;br /&gt;
&lt;br /&gt;
===SubSampleDivisor===&lt;br /&gt;
Factor that decimates the hardware sampling rate. The hardware sampling rate is divided by this value to yield the actual sampling rate. This parameter has seven values: 1, 2, 5, 10, 20, 50, and 100. &lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by the hardware sampling rate and sub sample divisor. This parameter should always be set to &#039;auto&#039;.&lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. This data will be presented in a pop-up window for all of the EEG channels and the ground. Data will then be passed from the amplifier to BCI2000 normally. If active electrodes are being used, each electrode will illuminate an LED corresponding to the amount of impedance. If the impedance is low the electrode LED will be green, else it will be yellow. If the impedance is high the LED will be red. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=File:ActiCHamp_Plus.png&amp;diff=8487</id>
		<title>File:ActiCHamp Plus.png</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=File:ActiCHamp_Plus.png&amp;diff=8487"/>
		<updated>2020-03-06T15:44:00Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8475</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8475"/>
		<updated>2020-01-28T14:49:17Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp Plus can be used  with passive and active electrodes and is capable of reading from up to 160 channels. The amplifier also has 8 auxiliary channels for gathering data from additional sensors. The amplifier is powered by a lithium-ion battery pack. The amplifier is connected the computer running BCI2000 via USB. The amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
After the initial compile of the source module, there is sometimes an error that reads &#039;&#039;&amp;quot;No actiCHampPlus devices found. Try unplugging actiChampPlus and restarting BCI2000&amp;quot;&#039;&#039;. To fix this error, go to &amp;lt;code&amp;gt;BCI2000\src\contrib\SignalSource\actiCHampPlus\lib\dylib\&amp;lt;x64/x86&amp;gt;\&amp;lt;/code&amp;gt;, copy the file &amp;lt;code&amp;gt;ActiChamp_&amp;lt;x64/x86&amp;gt;.dll&amp;lt;/code&amp;gt; and paste it in the &amp;lt;code&amp;gt;BCI2000\prog&amp;lt;/code&amp;gt; directory. The file will already exist in that folder so when prompted, replace it. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6037&lt;br /&gt;
*Tested under: 6039&lt;br /&gt;
*Known to compile under: 6039&lt;br /&gt;
*Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies. The hardware sampling rate also defines the hardware block size as shown below. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Predefined Hardware Values&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Sample Rate&lt;br /&gt;
! Hardware Block Size&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 10kHz&lt;br /&gt;
| 32&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 50kHz&lt;br /&gt;
| 152&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 100kHz&lt;br /&gt;
| 300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DecimationFactor===&lt;br /&gt;
The decimation factor. The factor by which to decimate/downsize the signal. The default value is 1. The actual SamplingRate is the hardware sampling rate divided by the DecimationFactor. Note: The hardware block size must be divisible by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by hardware sample rate and decimation factor. Setting it to &#039;&#039;auto&#039;&#039; will make it equal to the hardware sampling rate divided by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. Data will then be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8474</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8474"/>
		<updated>2020-01-28T14:46:52Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp Plus can be used  with passive and active electrodes and is capable of reading from up to 160 channels. The amplifier also has 8 auxiliary channels for gathering data from additional sensors. The amplifier is powered by a lithium-ion battery pack. The amplifier is connected the computer running BCI2000 via USB. The amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
After the initial compile of the source module, there is sometimes an error that reads &amp;quot;No actiCHampPlus devices found. Try unplugging actiChampPlus and restarting BCI2000&amp;quot;. To fix this error, go to &amp;quot;BCI2000\src\contrib\SignalSource\actiCHampPlus\lib\dylib\&amp;lt;x64/x86&amp;gt;\&amp;quot;, copy the file &amp;quot;ActiChamp_&amp;lt;x64/x86&amp;gt;.dll&amp;quot;&lt;br /&gt;
and paste it in the &amp;quot;BCI2000\prog&amp;quot; directory. The file will already exist in that folder so when prompted, replace it. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6037&lt;br /&gt;
*Tested under: 6039&lt;br /&gt;
*Known to compile under: 6039&lt;br /&gt;
*Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies. The hardware sampling rate also defines the hardware block size as shown below. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Predefined Hardware Values&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Sample Rate&lt;br /&gt;
! Hardware Block Size&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 10kHz&lt;br /&gt;
| 32&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 50kHz&lt;br /&gt;
| 152&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 100kHz&lt;br /&gt;
| 300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DecimationFactor===&lt;br /&gt;
The decimation factor. The factor by which to decimate/downsize the signal. The default value is 1. The actual SamplingRate is the hardware sampling rate divided by the DecimationFactor. Note: The hardware block size must be divisible by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by hardware sample rate and decimation factor. Setting it to &#039;&#039;auto&#039;&#039; will make it equal to the hardware sampling rate divided by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. Data will then be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8473</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8473"/>
		<updated>2020-01-23T13:18:48Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Source Code Revisions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp plus can be used  with passive and active electrodes and is capable of reading from up to 160 channels. The amplifier also has 8 auxiliary channels for gathering data from additional sensors. The amplifier is powered by a lithium-ion battery pack. The amplifier is connected the computer running BCI2000 via USB. The amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6037&lt;br /&gt;
*Tested under: 6039&lt;br /&gt;
*Known to compile under: 6039&lt;br /&gt;
*Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies. The hardware sampling rate also defines the hardware block size as shown below. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Predefined Hardware Values&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Sample Rate&lt;br /&gt;
! Hardware Block Size&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 10kHz&lt;br /&gt;
| 32&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 50kHz&lt;br /&gt;
| 152&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 100kHz&lt;br /&gt;
| 300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DecimationFactor===&lt;br /&gt;
The decimation factor. The factor by which to decimate/downsize the signal. The default value is 1. The actual SamplingRate is the hardware sampling rate divided by the DecimationFactor. Note: The hardware block size must be divisible by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by hardware sample rate and decimation factor. Setting it to &#039;&#039;auto&#039;&#039; will make it equal to the hardware sampling rate divided by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. Data will then be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
&lt;br /&gt;
===actiChampTrig===&lt;br /&gt;
8 bit value from the &#039;&#039;Trigger In&#039;&#039; port on the actiChamp device. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8472</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8472"/>
		<updated>2020-01-23T13:18:08Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp plus can be used  with passive and active electrodes and is capable of reading from up to 160 channels. The amplifier also has 8 auxiliary channels for gathering data from additional sensors. The amplifier is powered by a lithium-ion battery pack. The amplifier is connected the computer running BCI2000 via USB. The amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Author===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
Initial development: 6037&lt;br /&gt;
Tested under: 6039&lt;br /&gt;
Known to compile under: 6039&lt;br /&gt;
Broken since: N/A&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies. The hardware sampling rate also defines the hardware block size as shown below. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Predefined Hardware Values&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Sample Rate&lt;br /&gt;
! Hardware Block Size&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 10kHz&lt;br /&gt;
| 32&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 50kHz&lt;br /&gt;
| 152&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 100kHz&lt;br /&gt;
| 300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DecimationFactor===&lt;br /&gt;
The decimation factor. The factor by which to decimate/downsize the signal. The default value is 1. The actual SamplingRate is the hardware sampling rate divided by the DecimationFactor. Note: The hardware block size must be divisible by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by hardware sample rate and decimation factor. Setting it to &#039;&#039;auto&#039;&#039; will make it equal to the hardware sampling rate divided by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. Data will then be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
&lt;br /&gt;
===actiChampTrig===&lt;br /&gt;
8 bit value from the &#039;&#039;Trigger In&#039;&#039; port on the actiChamp device. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8471</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8471"/>
		<updated>2020-01-23T13:11:17Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp plus can be used  with passive and active electrodes and is capable of reading from up to 160 channels. The amplifier also has 8 auxiliary channels for gathering data from additional sensors. The amplifier is powered by a lithium-ion battery pack. The amplifier is connected the computer running BCI2000 via USB. The amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
Note: This source module is only available on Windows Machines. &lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
About every 0.5 seconds, the amplifier returns multiple blocks of data. In BCI2000 this causes some data loss. &lt;br /&gt;
&lt;br /&gt;
===Authors===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies. The hardware sampling rate also defines the hardware block size as shown below. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Predefined Hardware Values&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Sample Rate&lt;br /&gt;
! Hardware Block Size&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 10kHz&lt;br /&gt;
| 32&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 50kHz&lt;br /&gt;
| 152&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 100kHz&lt;br /&gt;
| 300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DecimationFactor===&lt;br /&gt;
The decimation factor. The factor by which to decimate/downsize the signal. The default value is 1. The actual SamplingRate is the hardware sampling rate divided by the DecimationFactor. Note: The hardware block size must be divisible by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by hardware sample rate and decimation factor. Setting it to &#039;&#039;auto&#039;&#039; will make it equal to the hardware sampling rate divided by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of samples transmitted at a time. &lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp Plus device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. Data will then be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
&lt;br /&gt;
===actiChampTrig===&lt;br /&gt;
8 bit value from the &#039;&#039;Trigger In&#039;&#039; port on the actiChamp device. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8470</id>
		<title>Contributions:actiCHampPlus</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:actiCHampPlus&amp;diff=8470"/>
		<updated>2020-01-15T18:39:22Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: Created page with &amp;quot;==Synopsis== This module allows BCI2000 to collect data from Brain Vision&amp;#039;s actiCHamp Plus amplifier. The actiCHamp plus can be used  with passive and active electrodes and is...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
This module allows BCI2000 to collect data from Brain Vision&#039;s actiCHamp Plus amplifier. The actiCHamp plus can be used  with passive and active electrodes and is capable of reading from up to 160 channels. The amplifier also has 8 auxiliary channels for gathering data from additional sensors. The amplifier is powered by a lithium-ion battery pack. The amplifier is connected the computer running BCI2000 via USB. The amplifier module must be plugged into the battery pack to function correctly.&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
About every 0.5 seconds, the amplifier returns multiple blocks of data. In BCI2000 this causes some data loss. &lt;br /&gt;
&lt;br /&gt;
===Authors===&lt;br /&gt;
Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The number of channels that will be recorded from (EEG and auxiliary). Set this parameter to auto to automatically make the parameter equal to the &#039;&#039;TotalEEGChannels&#039;&#039; plus the number of elements in the &#039;&#039;AUXChList&#039;&#039; parameters.&lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===AUXChList===&lt;br /&gt;
List of auxiliary channels to use. This parameter also defines the order in which BCI2000 stores and presents data.&lt;br /&gt;
&lt;br /&gt;
===TotalEEGChannels===&lt;br /&gt;
Total number of EEG channels to record from. &lt;br /&gt;
&lt;br /&gt;
===HardwareSamplingRate===&lt;br /&gt;
Sampling at which the actiChamp is run. The actiChamp Plus can be run at three different frequencies. The hardware sampling rate also defines the hardware block size as shown below. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Predefined Hardware Values&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Sample Rate&lt;br /&gt;
! Hardware Block Size&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 10kHz&lt;br /&gt;
| 32&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 50kHz&lt;br /&gt;
| 152&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 100kHz&lt;br /&gt;
| 300&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DecimationFactor===&lt;br /&gt;
The decimation factor. The factor by which to decimate/downsize the signal. The default value is 1. The SamplingRate is updated by dividing it by the DecimationFactor. Note: The hardware block size must be divisible by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
This parameter is defined by hardware sample rate and decimation factor. Setting it to &#039;&#039;auto&#039;&#039; will make it equal to the hardware sampling rate divided by the decimation factor.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Number of Samples transmitted at a time. This value must be a multiple of the hardware block size divided by the decimation factor. &lt;br /&gt;
&lt;br /&gt;
===actiCHampAmplifierID===&lt;br /&gt;
Index of the actiChamp Plus. For systems with one actiChamp device, this parameter should be 0.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
1. Normal signal acquisition: Once connection to amplifier is established, data will be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
2. Impedance measurement: Once connection to amplifier is established, BCI2000 will present the impedance for all channels. Data will then be passed from the amplifier to BCI2000 normally.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
&lt;br /&gt;
===actiChampTrig===&lt;br /&gt;
8 bit value from the &#039;&#039;Trigger In&#039;&#039; port on the actiChamp device. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:ADCs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:ADCs&amp;diff=8469</id>
		<title>Contributions:ADCs</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:ADCs&amp;diff=8469"/>
		<updated>2020-01-13T12:53:16Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following data acquisition filters are available in the [[Contributions:Contents|Contributions]] section of BCI2000:&lt;br /&gt;
&lt;br /&gt;
*[[Contributions:AmpServerProADC]]: Interface to the EGI AmpServerPro.&lt;br /&gt;
*[[Contributions:BioRadioADC]]: Interface to the BioRadio amplifer.&lt;br /&gt;
*[[Contributions:Biosemi2ADC]]: Interface to the Biosemi amplifier.&lt;br /&gt;
*[[Contributions:Blackrock]]: Interface Blackrock devices through CereLink.&lt;br /&gt;
*[[Contributions:B-Alert]]: Interface to B-Alert brain monitoring systems.&lt;br /&gt;
*[[Contributions:DAS_ADC]]: Interface to MeasurementComputing AD cards.&lt;br /&gt;
*[[Contributions:DTADC]]: Interface to Data Translation boards.&lt;br /&gt;
*[[Contributions:Emotiv]]: Interface to the Emotiv EPOC.&lt;br /&gt;
*[[Contributions:FieldTripBufferSource]]: Interface to the FieldTrip buffer.&lt;br /&gt;
*[[Contributions:FilePlayback]]: A source module that replays sessions from recorded data files.&lt;br /&gt;
*[[Contributions:gHIamp]]: Interface to the gHIamp.&lt;br /&gt;
*[[Contributions:gNautilus]]: Interface to the gNautilus bypassing the server&lt;br /&gt;
*[[Contributions:gNautilusNEEDAccess]]: Interface to the gNautilus via g.NEEDAccess.&lt;br /&gt;
*[[Contributions:MicromedADC]]: Interface to the Micromed EEG system.&lt;br /&gt;
*[[Contributions:ModularEEG]]: Interface to the ModularEEG system.&lt;br /&gt;
*[[Contributions:Neuralynx]]: Interface to Neuralynx systems&lt;br /&gt;
*[[Contributions:NIADC]]: Interface to National Instruments boards.&lt;br /&gt;
*[[Contributions:NIDAQ-MX]]: Interface to National Instruments boards using the MX driver.&lt;br /&gt;
*[[Contributions:NIDAQLogger]]: Interface to multiple National Instruments DAQ boards using MX driver (INPUT ONLY).&lt;br /&gt;
*[[Contributions:NIDAQFilter]]: Interface to multiple National Instruments DAQ boards using MX driver (OUTPUT ONLY).&lt;br /&gt;
*[[Contributions:NeuroscanADC]]: Neuroscan Acquire socket protocol client.&lt;br /&gt;
*[[Contributions:NeuroscanAccessSDK]]: Interface to Neuroscan Direct Access SDK.&lt;br /&gt;
*[[Contributions:NeuroSky]]: Interface to Neurosky MindSet.&lt;br /&gt;
*[[Contributions:NicoletOne]]: Interface to NicoletOne nEEG series amplifiers.&lt;br /&gt;
*[[Contributions:ctfneurod]]: CTF RealTime to Neuroscan Acquire relay.&lt;br /&gt;
*[[Contributions:RDAClientADC]]: Brain Vision RDA socket protocol client.&lt;br /&gt;
*[[Contributions:TDTADC]]: Interface to Tucker-Davis Pentusa systems.&lt;br /&gt;
*[[Contributions:TMSiADC]]: Interface to TMSi Refa and Porti systems.&lt;br /&gt;
*[[Contributions:vAmpADC]]: Interface to Brain Products V-amp systems.&lt;br /&gt;
*[[Contributions:EnobioADC]]: Interface to Enobio sensor.&lt;br /&gt;
*[[Contributions:DSISerial]]: Interface to Dry Sensor Interface (DSI) EEG systems by Wearable Sensing.&lt;br /&gt;
*[[Contributions:MicRecorderFilter]]: Interface to the system soundcard, logging audio input.&lt;br /&gt;
*[[Contributions:actiCHampADC]]: Interface to the Brain Products actiCHamp system.&lt;br /&gt;
*[[Contributions:actiCHampPlus]]: Interface to the Brain Products actiCHamp Plus system.&lt;br /&gt;
*[[Contributions:LiveAmpADC]]: Interface to the Brain Products LiveAmp system.&lt;br /&gt;
*[[Contributions:LSLSource]]: Interface to the Brain Products Hardware system.&lt;br /&gt;
*[[Contributions:OpenBCISource]]: Interface to the OpenBCI system.&lt;br /&gt;
*[[Contributions:OpenBCI_Module]]: Interface to the OpenBCI system.&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Filters]], [[Contributions:How to use a Contributed Source Module]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8092</id>
		<title>Contributions:AudioExtension</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8092"/>
		<updated>2018-12-18T21:49:15Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Building with ASIO support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An environment extension which manages multichannel, low latency audio I/O.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/AudioExtension&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Griffin Milsap (griffin.milsap@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
* 2012/06/11: Initial public release;&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 4095&lt;br /&gt;
*Tested under: 5813&lt;br /&gt;
*Known to compile under: 5813&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
* Fix Known Issues&lt;br /&gt;
* Add per-sample resolution to envelopes&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
* Leaving the module in halted state exhibits some sort of bug regarding state logging.  When running state is resumed, envelope states may fail to update for 15-30 seconds. The bug seems to be unrelated to how long system was halted -- Not sure if this is an issue with the extension itself, or an issue with the [[Programming_Reference:Events|bcievent]] interface.  This bug will never happen on the first run after BCI2000 is started up.  If you do see the behavior, either wait for it to go away or restart BCI2000 and perform a new recording.&lt;br /&gt;
* Bandpass filtering in filterbanks doesn&#039;t appear to function correctly.&lt;br /&gt;
* AudioExtension processes audio in a separate thread and the internal audio callback is called from yet-another context (Sometimes a system interrupt).  In order to prevent deadlock, the Audio callback must not lock or wait for external threads.  As such, it will simply copy the last good audio buffer to the output stream if the audio thread has not posted new data to use yet.  This can result in slowed &amp;quot;timestretching&amp;quot; effects on audio input files if the audio thread cannot keep up with the audio callbacks.  To prevent this behavior, ensure your audio block size is large enough (at least 1024 frames).  If you are using a lower latency audio API (such as ASIO) you are probably okay to use audio block sizes around 512 frames. Compiling in debug can also result in a loss of data.  Either way, be mindful that audio playback may not necessarily operate in real-time and you will receive NO WARNING WHATSOEVER when it fails to.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Experiments which require audio input or real-time audio synthesis based on system state are now possible with the AudioExtension.  This extension is capable of recording multiple channels of audio input, synthesizing tones or noise, and reading encoded audio files.  These channels are input to a mixing matrix which mixes those inputs to multiple channels of audio output.  Both input and output are run through a simple filterbank, then they have their envelope extracted and logged into states via the bcievent interface.  Audio input and output channels can be recorded into audio files losslessly and can be resynchronized offline.  The mixing matrix is a matrix of expressions which can be used to dynamically change audio mixing based on the system state.&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_AUDIOEXTENSION&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--EnableAudioExtension=1&amp;lt;/code&amp;gt; command line argument (NB, as explained below, the numeric value here matters, and denotes the audio API to be used:  =1 means DirectSound).&lt;br /&gt;
&lt;br /&gt;
===Building with ASIO support===&lt;br /&gt;
ASIO is a driver that allows for recording from devices with up to four input channels. It also can provide lower latency than other audio drivers. To compile with ASIO support, visit https://www.steinberg.net/en/company/developers.html and download the ASIO SDK. Extract the downloaded SDK zip file to &amp;lt;code&amp;gt;src/extlib/portaudio&amp;lt;/code&amp;gt; and rename it &amp;lt;code&amp;gt;asio&amp;lt;/code&amp;gt;. Enable the AudioExtension in CMake and click &amp;quot;Configure&amp;quot;. Make sure the &amp;quot;Advanced&amp;quot; option is checked in the CMake GUI and enable &amp;lt;code&amp;gt;PORTAUDIO_ENABLE_ASIO&amp;lt;/code&amp;gt;. Click &amp;quot;Generate&amp;quot; and recompile BCI2000. ASIO will now appear as an option under the &amp;lt;code&amp;gt;EnableAudioExtension&amp;lt;/code&amp;gt; parameter when BCI2000 is run with the AudioExtension enabled.&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[Image:AudioExtensionBlockDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The AudioExtension is configured in the Source tab within the AudioExtension section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
===EnableAudioExtension===&lt;br /&gt;
Enables/Disables the AudioExtension.  This parameter performs double-duty as an audio host API selector.  The following values of this parameter are valid.  NOTE: Not all audio APIs are available on all platforms.&lt;br /&gt;
**[0] - Disabled&lt;br /&gt;
**[1] - DirectSound&lt;br /&gt;
**[2] - MME&lt;br /&gt;
**[3] - ASIO&lt;br /&gt;
**[4] - SoundManager&lt;br /&gt;
**[5] - CoreAudio&lt;br /&gt;
**[6] - Disabled&lt;br /&gt;
**[7] - OSS&lt;br /&gt;
**[8] - ALSA&lt;br /&gt;
**[9] - AL&lt;br /&gt;
**[10] - BeOs&lt;br /&gt;
**[11] - WDMKS&lt;br /&gt;
**[12] - JACK&lt;br /&gt;
**[13] - WASAPI&lt;br /&gt;
**[14] - AudioScienceHPI&lt;br /&gt;
&lt;br /&gt;
===AudioMixer===&lt;br /&gt;
This matrix of expressions mixes input (rows) to output(columns).  It must be dimensioned with exactly &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; columns where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of outputs.  Row labels define the input source.  Change row labels by double clicking on the row.  The following inputs are valid row labels.&lt;br /&gt;
*&amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; - This is automatically interpreted as INPUT[X]&lt;br /&gt;
*&amp;lt;code&amp;gt;INPUT[X]&amp;lt;/code&amp;gt; - This input will come from channel X on the sound card input.&lt;br /&gt;
*&amp;lt;code&amp;gt;FILE[X]&amp;lt;/code&amp;gt; - This input will come from channel X in the AudioInputFile.&lt;br /&gt;
*&amp;lt;code&amp;gt;TONE[X]&amp;lt;/code&amp;gt; - This input will be a synthesized sine wave with the frequency of X Hz.&lt;br /&gt;
*&amp;lt;code&amp;gt;NOISE[X]&amp;lt;/code&amp;gt; - This input will be generated white noise at X Hz.  NOTE: NOISE[] is white noise at the audio sampling rate (which defaults to 44100)&lt;br /&gt;
===AudioInputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default input device on this host API.&lt;br /&gt;
===AudioOutputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default output device on this host API.&lt;br /&gt;
===AudioInputFile===&lt;br /&gt;
Audio file to use as audio input to AudioMixer.  The selected file can have any non-zero number of channels and be encoded in almost any format (except MP3), but MUST be encoded at 44100 Hz.&lt;br /&gt;
===AudioRecordInput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordOutput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordingFormat===&lt;br /&gt;
Changes the file format and encoding options of the recorded output files.  This parameter has the following three options:&lt;br /&gt;
*Raw - Records to 16 bit Microsoft formatted WAV files with no compression.  These files open directly in MATLAB if that&#039;s interesting to you.&lt;br /&gt;
*Lossless - Records to FLAC formatted files.  These files are slightly smaller than RAW files, but have no quality loss.&lt;br /&gt;
*Lossy - Records to Ogg Vorbis files.  These files are similar to MP3 but do not have the associated licensing issues.  They are compressed using a lossy algorithm, so the resulting files are very small but sound slightly worse than lossless encoding.  This format is good for long recordings where perfect quality is not necessary.&lt;br /&gt;
===AudioInputFilterbank, AudioOutputFilterbank=== &lt;br /&gt;
A filterbank which filters audio input and output before rectification/smoothing for envelope extraction.  These butterworth filters will not be applied to the audible signal.  The format of the filter bank is as follows:&lt;br /&gt;
*Type - The characteristic of the filter.  The following values are valid.&lt;br /&gt;
**Lowpass - Creates a low pass filter&lt;br /&gt;
**Highpass - Creates a high pass filter&lt;br /&gt;
**Bandpass - Creates a band pass filter [[Contributions:AudioExtension#Known_Issues|*See Known Issues*]]&lt;br /&gt;
**Bandstop - Creates a band stop, or notch filter&lt;br /&gt;
*Order - The order of the filter model.  Higher order filters are more accurate but more expensive computationally.&lt;br /&gt;
*Cutoff1 - The cutoff frequency for Lowpass and Highpass filters, and the cut-on frequency for Bandpass and Bandstop filters.&lt;br /&gt;
*Cutoff2 - The cut-off frequency for Bandpass and Bandstop filters.&lt;br /&gt;
The matrix can have as many rows as necessary to filter the signal.  Filters can be applied in any order and their transfer functions are multiplied before filtering occurs.&lt;br /&gt;
===AudioEnvelopeSmoothing===&lt;br /&gt;
The cutoff frequency for the low pass filter which is applied to the filtered and full-wave rectified audio data.  This should be set to the highest frequency you want to see in the resulting audio envelope.&lt;br /&gt;
&lt;br /&gt;
==State Variables==&lt;br /&gt;
The AudioExtension outputs the following state variables:&lt;br /&gt;
&lt;br /&gt;
===Audio[In/Out]Envelope[0-3]===&lt;br /&gt;
These are the envelope values of each channel (up to channel 4) of the audio inputs and outputs (in the AudioMixer matrix).  These 16 bit unsigned values correspond to the resulting envelope after the audio envelope extraction.  For architectural reasons, it is not possible to publish states after system startup, so you are limited to four channels of input and output.  The AudioExtension can be easily modified to change the number of channels by editing the &amp;lt;code&amp;gt;#define NUM_INPUT_ENVELOPES 4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#define NUM_OUTPUT_ENVELOPES&amp;lt;/code&amp;gt; lines in AudioExtension.cpp, and recompiling your source module.&lt;br /&gt;
&lt;br /&gt;
===AudioFrame===&lt;br /&gt;
This 32 bit unsigned number corresponds to the current frame of audio data in the recorded output files.  This can be used to resynchronize the lossless audio to the resulting .dat file offline.  Audio is sampled internally at 44100 Hz, so this number will roll over once every 27 hours or so.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8091</id>
		<title>Contributions:AudioExtension</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8091"/>
		<updated>2018-12-18T21:46:32Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Building with ASIO support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An environment extension which manages multichannel, low latency audio I/O.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/AudioExtension&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Griffin Milsap (griffin.milsap@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
* 2012/06/11: Initial public release;&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 4095&lt;br /&gt;
*Tested under: 5813&lt;br /&gt;
*Known to compile under: 5813&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
* Fix Known Issues&lt;br /&gt;
* Add per-sample resolution to envelopes&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
* Leaving the module in halted state exhibits some sort of bug regarding state logging.  When running state is resumed, envelope states may fail to update for 15-30 seconds. The bug seems to be unrelated to how long system was halted -- Not sure if this is an issue with the extension itself, or an issue with the [[Programming_Reference:Events|bcievent]] interface.  This bug will never happen on the first run after BCI2000 is started up.  If you do see the behavior, either wait for it to go away or restart BCI2000 and perform a new recording.&lt;br /&gt;
* Bandpass filtering in filterbanks doesn&#039;t appear to function correctly.&lt;br /&gt;
* AudioExtension processes audio in a separate thread and the internal audio callback is called from yet-another context (Sometimes a system interrupt).  In order to prevent deadlock, the Audio callback must not lock or wait for external threads.  As such, it will simply copy the last good audio buffer to the output stream if the audio thread has not posted new data to use yet.  This can result in slowed &amp;quot;timestretching&amp;quot; effects on audio input files if the audio thread cannot keep up with the audio callbacks.  To prevent this behavior, ensure your audio block size is large enough (at least 1024 frames).  If you are using a lower latency audio API (such as ASIO) you are probably okay to use audio block sizes around 512 frames. Compiling in debug can also result in a loss of data.  Either way, be mindful that audio playback may not necessarily operate in real-time and you will receive NO WARNING WHATSOEVER when it fails to.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Experiments which require audio input or real-time audio synthesis based on system state are now possible with the AudioExtension.  This extension is capable of recording multiple channels of audio input, synthesizing tones or noise, and reading encoded audio files.  These channels are input to a mixing matrix which mixes those inputs to multiple channels of audio output.  Both input and output are run through a simple filterbank, then they have their envelope extracted and logged into states via the bcievent interface.  Audio input and output channels can be recorded into audio files losslessly and can be resynchronized offline.  The mixing matrix is a matrix of expressions which can be used to dynamically change audio mixing based on the system state.&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_AUDIOEXTENSION&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--EnableAudioExtension=1&amp;lt;/code&amp;gt; command line argument (NB, as explained below, the numeric value here matters, and denotes the audio API to be used:  =1 means DirectSound).&lt;br /&gt;
&lt;br /&gt;
===Building with ASIO support===&lt;br /&gt;
ASIO is a driver that allows for recording from devices with up to four input channels. It also can provide lower latency than other audio drivers. To compile with ASIO support, visit https://www.steinberg.net/en/company/developers.html and download the ASIO SDK. Move the downloaded SDK to &amp;lt;code&amp;gt;src/extlib/portaudio&amp;lt;/code&amp;gt; and rename it &amp;lt;code&amp;gt;asio&amp;lt;/code&amp;gt;. Enable the AudioExtension in CMake and click &amp;quot;Configure&amp;quot;. Make sure the &amp;quot;Advanced&amp;quot; option is checked in the CMake GUI and enable &amp;lt;code&amp;gt;PORTAUDIO_ENABLE_ASIO&amp;lt;/code&amp;gt;. Click &amp;quot;Generate&amp;quot; and recompile BCI2000. ASIO will now appear as an option under the &amp;lt;code&amp;gt;EnableAudioExtension&amp;lt;/code&amp;gt; parameter when BCI2000 is run with the AudioExtension enabled.&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[Image:AudioExtensionBlockDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The AudioExtension is configured in the Source tab within the AudioExtension section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
===EnableAudioExtension===&lt;br /&gt;
Enables/Disables the AudioExtension.  This parameter performs double-duty as an audio host API selector.  The following values of this parameter are valid.  NOTE: Not all audio APIs are available on all platforms.&lt;br /&gt;
**[0] - Disabled&lt;br /&gt;
**[1] - DirectSound&lt;br /&gt;
**[2] - MME&lt;br /&gt;
**[3] - ASIO&lt;br /&gt;
**[4] - SoundManager&lt;br /&gt;
**[5] - CoreAudio&lt;br /&gt;
**[6] - Disabled&lt;br /&gt;
**[7] - OSS&lt;br /&gt;
**[8] - ALSA&lt;br /&gt;
**[9] - AL&lt;br /&gt;
**[10] - BeOs&lt;br /&gt;
**[11] - WDMKS&lt;br /&gt;
**[12] - JACK&lt;br /&gt;
**[13] - WASAPI&lt;br /&gt;
**[14] - AudioScienceHPI&lt;br /&gt;
&lt;br /&gt;
===AudioMixer===&lt;br /&gt;
This matrix of expressions mixes input (rows) to output(columns).  It must be dimensioned with exactly &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; columns where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of outputs.  Row labels define the input source.  Change row labels by double clicking on the row.  The following inputs are valid row labels.&lt;br /&gt;
*&amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; - This is automatically interpreted as INPUT[X]&lt;br /&gt;
*&amp;lt;code&amp;gt;INPUT[X]&amp;lt;/code&amp;gt; - This input will come from channel X on the sound card input.&lt;br /&gt;
*&amp;lt;code&amp;gt;FILE[X]&amp;lt;/code&amp;gt; - This input will come from channel X in the AudioInputFile.&lt;br /&gt;
*&amp;lt;code&amp;gt;TONE[X]&amp;lt;/code&amp;gt; - This input will be a synthesized sine wave with the frequency of X Hz.&lt;br /&gt;
*&amp;lt;code&amp;gt;NOISE[X]&amp;lt;/code&amp;gt; - This input will be generated white noise at X Hz.  NOTE: NOISE[] is white noise at the audio sampling rate (which defaults to 44100)&lt;br /&gt;
===AudioInputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default input device on this host API.&lt;br /&gt;
===AudioOutputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default output device on this host API.&lt;br /&gt;
===AudioInputFile===&lt;br /&gt;
Audio file to use as audio input to AudioMixer.  The selected file can have any non-zero number of channels and be encoded in almost any format (except MP3), but MUST be encoded at 44100 Hz.&lt;br /&gt;
===AudioRecordInput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordOutput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordingFormat===&lt;br /&gt;
Changes the file format and encoding options of the recorded output files.  This parameter has the following three options:&lt;br /&gt;
*Raw - Records to 16 bit Microsoft formatted WAV files with no compression.  These files open directly in MATLAB if that&#039;s interesting to you.&lt;br /&gt;
*Lossless - Records to FLAC formatted files.  These files are slightly smaller than RAW files, but have no quality loss.&lt;br /&gt;
*Lossy - Records to Ogg Vorbis files.  These files are similar to MP3 but do not have the associated licensing issues.  They are compressed using a lossy algorithm, so the resulting files are very small but sound slightly worse than lossless encoding.  This format is good for long recordings where perfect quality is not necessary.&lt;br /&gt;
===AudioInputFilterbank, AudioOutputFilterbank=== &lt;br /&gt;
A filterbank which filters audio input and output before rectification/smoothing for envelope extraction.  These butterworth filters will not be applied to the audible signal.  The format of the filter bank is as follows:&lt;br /&gt;
*Type - The characteristic of the filter.  The following values are valid.&lt;br /&gt;
**Lowpass - Creates a low pass filter&lt;br /&gt;
**Highpass - Creates a high pass filter&lt;br /&gt;
**Bandpass - Creates a band pass filter [[Contributions:AudioExtension#Known_Issues|*See Known Issues*]]&lt;br /&gt;
**Bandstop - Creates a band stop, or notch filter&lt;br /&gt;
*Order - The order of the filter model.  Higher order filters are more accurate but more expensive computationally.&lt;br /&gt;
*Cutoff1 - The cutoff frequency for Lowpass and Highpass filters, and the cut-on frequency for Bandpass and Bandstop filters.&lt;br /&gt;
*Cutoff2 - The cut-off frequency for Bandpass and Bandstop filters.&lt;br /&gt;
The matrix can have as many rows as necessary to filter the signal.  Filters can be applied in any order and their transfer functions are multiplied before filtering occurs.&lt;br /&gt;
===AudioEnvelopeSmoothing===&lt;br /&gt;
The cutoff frequency for the low pass filter which is applied to the filtered and full-wave rectified audio data.  This should be set to the highest frequency you want to see in the resulting audio envelope.&lt;br /&gt;
&lt;br /&gt;
==State Variables==&lt;br /&gt;
The AudioExtension outputs the following state variables:&lt;br /&gt;
&lt;br /&gt;
===Audio[In/Out]Envelope[0-3]===&lt;br /&gt;
These are the envelope values of each channel (up to channel 4) of the audio inputs and outputs (in the AudioMixer matrix).  These 16 bit unsigned values correspond to the resulting envelope after the audio envelope extraction.  For architectural reasons, it is not possible to publish states after system startup, so you are limited to four channels of input and output.  The AudioExtension can be easily modified to change the number of channels by editing the &amp;lt;code&amp;gt;#define NUM_INPUT_ENVELOPES 4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#define NUM_OUTPUT_ENVELOPES&amp;lt;/code&amp;gt; lines in AudioExtension.cpp, and recompiling your source module.&lt;br /&gt;
&lt;br /&gt;
===AudioFrame===&lt;br /&gt;
This 32 bit unsigned number corresponds to the current frame of audio data in the recorded output files.  This can be used to resynchronize the lossless audio to the resulting .dat file offline.  Audio is sampled internally at 44100 Hz, so this number will roll over once every 27 hours or so.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8090</id>
		<title>Contributions:AudioExtension</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8090"/>
		<updated>2018-12-18T21:45:33Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Building with ASIO support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An environment extension which manages multichannel, low latency audio I/O.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/AudioExtension&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Griffin Milsap (griffin.milsap@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
* 2012/06/11: Initial public release;&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 4095&lt;br /&gt;
*Tested under: 5813&lt;br /&gt;
*Known to compile under: 5813&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
* Fix Known Issues&lt;br /&gt;
* Add per-sample resolution to envelopes&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
* Leaving the module in halted state exhibits some sort of bug regarding state logging.  When running state is resumed, envelope states may fail to update for 15-30 seconds. The bug seems to be unrelated to how long system was halted -- Not sure if this is an issue with the extension itself, or an issue with the [[Programming_Reference:Events|bcievent]] interface.  This bug will never happen on the first run after BCI2000 is started up.  If you do see the behavior, either wait for it to go away or restart BCI2000 and perform a new recording.&lt;br /&gt;
* Bandpass filtering in filterbanks doesn&#039;t appear to function correctly.&lt;br /&gt;
* AudioExtension processes audio in a separate thread and the internal audio callback is called from yet-another context (Sometimes a system interrupt).  In order to prevent deadlock, the Audio callback must not lock or wait for external threads.  As such, it will simply copy the last good audio buffer to the output stream if the audio thread has not posted new data to use yet.  This can result in slowed &amp;quot;timestretching&amp;quot; effects on audio input files if the audio thread cannot keep up with the audio callbacks.  To prevent this behavior, ensure your audio block size is large enough (at least 1024 frames).  If you are using a lower latency audio API (such as ASIO) you are probably okay to use audio block sizes around 512 frames. Compiling in debug can also result in a loss of data.  Either way, be mindful that audio playback may not necessarily operate in real-time and you will receive NO WARNING WHATSOEVER when it fails to.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Experiments which require audio input or real-time audio synthesis based on system state are now possible with the AudioExtension.  This extension is capable of recording multiple channels of audio input, synthesizing tones or noise, and reading encoded audio files.  These channels are input to a mixing matrix which mixes those inputs to multiple channels of audio output.  Both input and output are run through a simple filterbank, then they have their envelope extracted and logged into states via the bcievent interface.  Audio input and output channels can be recorded into audio files losslessly and can be resynchronized offline.  The mixing matrix is a matrix of expressions which can be used to dynamically change audio mixing based on the system state.&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_AUDIOEXTENSION&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--EnableAudioExtension=1&amp;lt;/code&amp;gt; command line argument (NB, as explained below, the numeric value here matters, and denotes the audio API to be used:  =1 means DirectSound).&lt;br /&gt;
&lt;br /&gt;
===Building with ASIO support===&lt;br /&gt;
ASIO is a driver that allows for recording from devices with up to four input channels. It also can provide lower latency than other audio drivers. To compile with ASIO support, visit https://www.steinberg.net/en/company/developers.html and download the ASIO SDK. Move the downloaded SDK to &amp;lt;code&amp;gt;src/extlib/portaudio&amp;lt;/code&amp;gt; and rename it &amp;lt;code&amp;gt;asio&amp;lt;/code&amp;gt;. Enable the AudioExtension in CMake and click &amp;quot;Configure&amp;quot;. Make sure the &amp;quot;Advanced&amp;quot; option is checked in the CMake GUI and enable &amp;lt;code&amp;gt;PORTAUDIO_ENABLE_ASIO&amp;lt;/code&amp;gt;. Click &amp;quot;Generate&amp;quot; and recompile BCI2000. ASIO will now appear as an option under the &amp;lt;code&amp;gt;EnableAudioExtension&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[Image:AudioExtensionBlockDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The AudioExtension is configured in the Source tab within the AudioExtension section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
===EnableAudioExtension===&lt;br /&gt;
Enables/Disables the AudioExtension.  This parameter performs double-duty as an audio host API selector.  The following values of this parameter are valid.  NOTE: Not all audio APIs are available on all platforms.&lt;br /&gt;
**[0] - Disabled&lt;br /&gt;
**[1] - DirectSound&lt;br /&gt;
**[2] - MME&lt;br /&gt;
**[3] - ASIO&lt;br /&gt;
**[4] - SoundManager&lt;br /&gt;
**[5] - CoreAudio&lt;br /&gt;
**[6] - Disabled&lt;br /&gt;
**[7] - OSS&lt;br /&gt;
**[8] - ALSA&lt;br /&gt;
**[9] - AL&lt;br /&gt;
**[10] - BeOs&lt;br /&gt;
**[11] - WDMKS&lt;br /&gt;
**[12] - JACK&lt;br /&gt;
**[13] - WASAPI&lt;br /&gt;
**[14] - AudioScienceHPI&lt;br /&gt;
&lt;br /&gt;
===AudioMixer===&lt;br /&gt;
This matrix of expressions mixes input (rows) to output(columns).  It must be dimensioned with exactly &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; columns where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of outputs.  Row labels define the input source.  Change row labels by double clicking on the row.  The following inputs are valid row labels.&lt;br /&gt;
*&amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; - This is automatically interpreted as INPUT[X]&lt;br /&gt;
*&amp;lt;code&amp;gt;INPUT[X]&amp;lt;/code&amp;gt; - This input will come from channel X on the sound card input.&lt;br /&gt;
*&amp;lt;code&amp;gt;FILE[X]&amp;lt;/code&amp;gt; - This input will come from channel X in the AudioInputFile.&lt;br /&gt;
*&amp;lt;code&amp;gt;TONE[X]&amp;lt;/code&amp;gt; - This input will be a synthesized sine wave with the frequency of X Hz.&lt;br /&gt;
*&amp;lt;code&amp;gt;NOISE[X]&amp;lt;/code&amp;gt; - This input will be generated white noise at X Hz.  NOTE: NOISE[] is white noise at the audio sampling rate (which defaults to 44100)&lt;br /&gt;
===AudioInputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default input device on this host API.&lt;br /&gt;
===AudioOutputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default output device on this host API.&lt;br /&gt;
===AudioInputFile===&lt;br /&gt;
Audio file to use as audio input to AudioMixer.  The selected file can have any non-zero number of channels and be encoded in almost any format (except MP3), but MUST be encoded at 44100 Hz.&lt;br /&gt;
===AudioRecordInput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordOutput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordingFormat===&lt;br /&gt;
Changes the file format and encoding options of the recorded output files.  This parameter has the following three options:&lt;br /&gt;
*Raw - Records to 16 bit Microsoft formatted WAV files with no compression.  These files open directly in MATLAB if that&#039;s interesting to you.&lt;br /&gt;
*Lossless - Records to FLAC formatted files.  These files are slightly smaller than RAW files, but have no quality loss.&lt;br /&gt;
*Lossy - Records to Ogg Vorbis files.  These files are similar to MP3 but do not have the associated licensing issues.  They are compressed using a lossy algorithm, so the resulting files are very small but sound slightly worse than lossless encoding.  This format is good for long recordings where perfect quality is not necessary.&lt;br /&gt;
===AudioInputFilterbank, AudioOutputFilterbank=== &lt;br /&gt;
A filterbank which filters audio input and output before rectification/smoothing for envelope extraction.  These butterworth filters will not be applied to the audible signal.  The format of the filter bank is as follows:&lt;br /&gt;
*Type - The characteristic of the filter.  The following values are valid.&lt;br /&gt;
**Lowpass - Creates a low pass filter&lt;br /&gt;
**Highpass - Creates a high pass filter&lt;br /&gt;
**Bandpass - Creates a band pass filter [[Contributions:AudioExtension#Known_Issues|*See Known Issues*]]&lt;br /&gt;
**Bandstop - Creates a band stop, or notch filter&lt;br /&gt;
*Order - The order of the filter model.  Higher order filters are more accurate but more expensive computationally.&lt;br /&gt;
*Cutoff1 - The cutoff frequency for Lowpass and Highpass filters, and the cut-on frequency for Bandpass and Bandstop filters.&lt;br /&gt;
*Cutoff2 - The cut-off frequency for Bandpass and Bandstop filters.&lt;br /&gt;
The matrix can have as many rows as necessary to filter the signal.  Filters can be applied in any order and their transfer functions are multiplied before filtering occurs.&lt;br /&gt;
===AudioEnvelopeSmoothing===&lt;br /&gt;
The cutoff frequency for the low pass filter which is applied to the filtered and full-wave rectified audio data.  This should be set to the highest frequency you want to see in the resulting audio envelope.&lt;br /&gt;
&lt;br /&gt;
==State Variables==&lt;br /&gt;
The AudioExtension outputs the following state variables:&lt;br /&gt;
&lt;br /&gt;
===Audio[In/Out]Envelope[0-3]===&lt;br /&gt;
These are the envelope values of each channel (up to channel 4) of the audio inputs and outputs (in the AudioMixer matrix).  These 16 bit unsigned values correspond to the resulting envelope after the audio envelope extraction.  For architectural reasons, it is not possible to publish states after system startup, so you are limited to four channels of input and output.  The AudioExtension can be easily modified to change the number of channels by editing the &amp;lt;code&amp;gt;#define NUM_INPUT_ENVELOPES 4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#define NUM_OUTPUT_ENVELOPES&amp;lt;/code&amp;gt; lines in AudioExtension.cpp, and recompiling your source module.&lt;br /&gt;
&lt;br /&gt;
===AudioFrame===&lt;br /&gt;
This 32 bit unsigned number corresponds to the current frame of audio data in the recorded output files.  This can be used to resynchronize the lossless audio to the resulting .dat file offline.  Audio is sampled internally at 44100 Hz, so this number will roll over once every 27 hours or so.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8089</id>
		<title>Contributions:AudioExtension</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:AudioExtension&amp;diff=8089"/>
		<updated>2018-12-18T21:44:58Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Integration into BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An environment extension which manages multichannel, low latency audio I/O.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/AudioExtension&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Griffin Milsap (griffin.milsap@gmail.com)&lt;br /&gt;
===Version History===&lt;br /&gt;
* 2012/06/11: Initial public release;&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 4095&lt;br /&gt;
*Tested under: 5813&lt;br /&gt;
*Known to compile under: 5813&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
* Fix Known Issues&lt;br /&gt;
* Add per-sample resolution to envelopes&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
* Leaving the module in halted state exhibits some sort of bug regarding state logging.  When running state is resumed, envelope states may fail to update for 15-30 seconds. The bug seems to be unrelated to how long system was halted -- Not sure if this is an issue with the extension itself, or an issue with the [[Programming_Reference:Events|bcievent]] interface.  This bug will never happen on the first run after BCI2000 is started up.  If you do see the behavior, either wait for it to go away or restart BCI2000 and perform a new recording.&lt;br /&gt;
* Bandpass filtering in filterbanks doesn&#039;t appear to function correctly.&lt;br /&gt;
* AudioExtension processes audio in a separate thread and the internal audio callback is called from yet-another context (Sometimes a system interrupt).  In order to prevent deadlock, the Audio callback must not lock or wait for external threads.  As such, it will simply copy the last good audio buffer to the output stream if the audio thread has not posted new data to use yet.  This can result in slowed &amp;quot;timestretching&amp;quot; effects on audio input files if the audio thread cannot keep up with the audio callbacks.  To prevent this behavior, ensure your audio block size is large enough (at least 1024 frames).  If you are using a lower latency audio API (such as ASIO) you are probably okay to use audio block sizes around 512 frames. Compiling in debug can also result in a loss of data.  Either way, be mindful that audio playback may not necessarily operate in real-time and you will receive NO WARNING WHATSOEVER when it fails to.&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Experiments which require audio input or real-time audio synthesis based on system state are now possible with the AudioExtension.  This extension is capable of recording multiple channels of audio input, synthesizing tones or noise, and reading encoded audio files.  These channels are input to a mixing matrix which mixes those inputs to multiple channels of audio output.  Both input and output are run through a simple filterbank, then they have their envelope extracted and logged into states via the bcievent interface.  Audio input and output channels can be recorded into audio files losslessly and can be resynchronized offline.  The mixing matrix is a matrix of expressions which can be used to dynamically change audio mixing based on the system state.&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_AUDIOEXTENSION&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--EnableAudioExtension=1&amp;lt;/code&amp;gt; command line argument (NB, as explained below, the numeric value here matters, and denotes the audio API to be used:  =1 means DirectSound).&lt;br /&gt;
&lt;br /&gt;
===Building with ASIO support===&lt;br /&gt;
ASIO is a driver that allows for recording from devices with up to four input channels. It also can provide lower latency than other audio drivers. To compile with ASIO support, visit https://www.steinberg.net/en/company/developers.html and download the ASIO SDK. Move the downloaded SDK to &amp;lt;code&amp;gt;src/extlib/portaudio&amp;lt;/code&amp;gt; and rename it &amp;lt;code&amp;gt;asio&amp;lt;/code&amp;gt;. Enable the AudioExtension in CMake and click &amp;quot;Configure&amp;quot;. Make sure the &amp;quot;Advanced&amp;quot; option is checked and enable &amp;lt;code&amp;gt;PORTAUDIO_ENABLE_ASIO&amp;lt;/code&amp;gt;. Click &amp;quot;Generate&amp;quot; and recompile BCI2000. ASIO will now appear as an option under the &amp;lt;code&amp;gt;EnableAudioExtension&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
==Block Diagram==&lt;br /&gt;
&lt;br /&gt;
[[Image:AudioExtensionBlockDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The AudioExtension is configured in the Source tab within the AudioExtension section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
===EnableAudioExtension===&lt;br /&gt;
Enables/Disables the AudioExtension.  This parameter performs double-duty as an audio host API selector.  The following values of this parameter are valid.  NOTE: Not all audio APIs are available on all platforms.&lt;br /&gt;
**[0] - Disabled&lt;br /&gt;
**[1] - DirectSound&lt;br /&gt;
**[2] - MME&lt;br /&gt;
**[3] - ASIO&lt;br /&gt;
**[4] - SoundManager&lt;br /&gt;
**[5] - CoreAudio&lt;br /&gt;
**[6] - Disabled&lt;br /&gt;
**[7] - OSS&lt;br /&gt;
**[8] - ALSA&lt;br /&gt;
**[9] - AL&lt;br /&gt;
**[10] - BeOs&lt;br /&gt;
**[11] - WDMKS&lt;br /&gt;
**[12] - JACK&lt;br /&gt;
**[13] - WASAPI&lt;br /&gt;
**[14] - AudioScienceHPI&lt;br /&gt;
&lt;br /&gt;
===AudioMixer===&lt;br /&gt;
This matrix of expressions mixes input (rows) to output(columns).  It must be dimensioned with exactly &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; columns where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of outputs.  Row labels define the input source.  Change row labels by double clicking on the row.  The following inputs are valid row labels.&lt;br /&gt;
*&amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; - This is automatically interpreted as INPUT[X]&lt;br /&gt;
*&amp;lt;code&amp;gt;INPUT[X]&amp;lt;/code&amp;gt; - This input will come from channel X on the sound card input.&lt;br /&gt;
*&amp;lt;code&amp;gt;FILE[X]&amp;lt;/code&amp;gt; - This input will come from channel X in the AudioInputFile.&lt;br /&gt;
*&amp;lt;code&amp;gt;TONE[X]&amp;lt;/code&amp;gt; - This input will be a synthesized sine wave with the frequency of X Hz.&lt;br /&gt;
*&amp;lt;code&amp;gt;NOISE[X]&amp;lt;/code&amp;gt; - This input will be generated white noise at X Hz.  NOTE: NOISE[] is white noise at the audio sampling rate (which defaults to 44100)&lt;br /&gt;
===AudioInputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default input device on this host API.&lt;br /&gt;
===AudioOutputDevice===&lt;br /&gt;
The index for the device to use as the audio input device on the current Host API.  See the operator log after &amp;quot;Set Config&amp;quot; for valid device indices on the selected host API.  A value of -1 for this parameter selects the default output device on this host API.&lt;br /&gt;
===AudioInputFile===&lt;br /&gt;
Audio file to use as audio input to AudioMixer.  The selected file can have any non-zero number of channels and be encoded in almost any format (except MP3), but MUST be encoded at 44100 Hz.&lt;br /&gt;
===AudioRecordInput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordOutput===&lt;br /&gt;
Enables/Disables recording of audio data to a file in the DataDirectory.&lt;br /&gt;
===AudioRecordingFormat===&lt;br /&gt;
Changes the file format and encoding options of the recorded output files.  This parameter has the following three options:&lt;br /&gt;
*Raw - Records to 16 bit Microsoft formatted WAV files with no compression.  These files open directly in MATLAB if that&#039;s interesting to you.&lt;br /&gt;
*Lossless - Records to FLAC formatted files.  These files are slightly smaller than RAW files, but have no quality loss.&lt;br /&gt;
*Lossy - Records to Ogg Vorbis files.  These files are similar to MP3 but do not have the associated licensing issues.  They are compressed using a lossy algorithm, so the resulting files are very small but sound slightly worse than lossless encoding.  This format is good for long recordings where perfect quality is not necessary.&lt;br /&gt;
===AudioInputFilterbank, AudioOutputFilterbank=== &lt;br /&gt;
A filterbank which filters audio input and output before rectification/smoothing for envelope extraction.  These butterworth filters will not be applied to the audible signal.  The format of the filter bank is as follows:&lt;br /&gt;
*Type - The characteristic of the filter.  The following values are valid.&lt;br /&gt;
**Lowpass - Creates a low pass filter&lt;br /&gt;
**Highpass - Creates a high pass filter&lt;br /&gt;
**Bandpass - Creates a band pass filter [[Contributions:AudioExtension#Known_Issues|*See Known Issues*]]&lt;br /&gt;
**Bandstop - Creates a band stop, or notch filter&lt;br /&gt;
*Order - The order of the filter model.  Higher order filters are more accurate but more expensive computationally.&lt;br /&gt;
*Cutoff1 - The cutoff frequency for Lowpass and Highpass filters, and the cut-on frequency for Bandpass and Bandstop filters.&lt;br /&gt;
*Cutoff2 - The cut-off frequency for Bandpass and Bandstop filters.&lt;br /&gt;
The matrix can have as many rows as necessary to filter the signal.  Filters can be applied in any order and their transfer functions are multiplied before filtering occurs.&lt;br /&gt;
===AudioEnvelopeSmoothing===&lt;br /&gt;
The cutoff frequency for the low pass filter which is applied to the filtered and full-wave rectified audio data.  This should be set to the highest frequency you want to see in the resulting audio envelope.&lt;br /&gt;
&lt;br /&gt;
==State Variables==&lt;br /&gt;
The AudioExtension outputs the following state variables:&lt;br /&gt;
&lt;br /&gt;
===Audio[In/Out]Envelope[0-3]===&lt;br /&gt;
These are the envelope values of each channel (up to channel 4) of the audio inputs and outputs (in the AudioMixer matrix).  These 16 bit unsigned values correspond to the resulting envelope after the audio envelope extraction.  For architectural reasons, it is not possible to publish states after system startup, so you are limited to four channels of input and output.  The AudioExtension can be easily modified to change the number of channels by editing the &amp;lt;code&amp;gt;#define NUM_INPUT_ENVELOPES 4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#define NUM_OUTPUT_ENVELOPES&amp;lt;/code&amp;gt; lines in AudioExtension.cpp, and recompiling your source module.&lt;br /&gt;
&lt;br /&gt;
===AudioFrame===&lt;br /&gt;
This 32 bit unsigned number corresponds to the current frame of audio data in the recorded output files.  This can be used to resynchronize the lossless audio to the resulting .dat file offline.  Audio is sampled internally at 44100 Hz, so this number will roll over once every 27 hours or so.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8088</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8088"/>
		<updated>2018-11-29T19:28:39Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving. Video is recorded in the resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Drop down menu to select what codec to use. &lt;br /&gt;
*&amp;lt;code&amp;gt;CodecFOURCC&amp;lt;/code&amp;gt;  - Four character string that corresponds to a codec. Input is checked for length exclusively. If the provided string is does not correspond to a video codec that is installed on the system, video will not be recorded.  Input of length less than four will have spaces added to the end of the string. See https://www.fourcc.org/ for more information.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8087</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8087"/>
		<updated>2018-11-29T19:28:17Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Drop down menu to select what codec to use. &lt;br /&gt;
*&amp;lt;code&amp;gt;CodecFOURCC&amp;lt;/code&amp;gt;  - Four character string that corresponds to a codec. Input is checked for length exclusively. If the provided string is does not correspond to a video codec that is installed on the system, video will not be recorded.  Input of length less than four will have spaces added to the end of the string. See https://www.fourcc.org/ for more information.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8086</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8086"/>
		<updated>2018-11-29T19:27:55Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Drop down menu to select what codec to use. &lt;br /&gt;
*&amp;lt;code&amp;gt;CodecFOURCC&amp;lt;/code&amp;gt;  - Four character string that corresponds to a codec. Input is checked for length exclusively. If the provided string is does not correspond to a video codec that is installed on the system, video will not be recorded.  Input of length less than four will have spaces added to the end of the string. See https://www.fourcc.org/ for more information. &lt;br /&gt;
&lt;br /&gt;
Video is recorded in the resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8085</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8085"/>
		<updated>2018-11-29T19:27:17Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Drop down menu to select what codec to use. &lt;br /&gt;
*&amp;lt;code&amp;gt;CodecFOURCC&amp;lt;/code&amp;gt;  - Four character string that corresponds to a codec. Input is checked for length exclusively. If the provided string is does not correspond to a video codec that is installed on the system, video will not be recorded.  Input of length less than four will have spaces added to the end of the string. See https://www.fourcc.org/ for more information. &lt;br /&gt;
&lt;br /&gt;
Recorded video is in the resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8084</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8084"/>
		<updated>2018-11-29T19:26:24Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Drop down menu to select what codec to use. &lt;br /&gt;
*&amp;lt;code&amp;gt;CodecFOURCC&amp;lt;/code&amp;gt;  - Four character string that corresponds to a codec. Input is checked for length exclusively. If the provided string is does not correspond to a video codec that is installed on the system, video will not be recorded.  Input of length less than four will have spaces added to the end of the string. See https://www.fourcc.org/ for more information. &lt;br /&gt;
&lt;br /&gt;
Video is saved with a resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8083</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8083"/>
		<updated>2018-11-29T19:25:48Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Drop down menu to select what codec to use. &lt;br /&gt;
*&amp;lt;code&amp;gt;CodecFOURCC&amp;lt;/code&amp;gt;  - Four character string that is to be used as the codec. Input is checked for length exclusively. If the provided string is does not correspond to a video codec that is installed on the system, video will not be recorded.  Input of length less than four will have spaces added to the end of the string. See https://www.fourcc.org/ for more information. &lt;br /&gt;
&lt;br /&gt;
Video is saved with a resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8082</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8082"/>
		<updated>2018-11-28T18:32:34Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Synopsis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
An extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Use OpenCV&#039;s GUI for selecting codecs available on system. Each connected camera will prompt for a codec to be selected. The default codec is DIVX.&lt;br /&gt;
&lt;br /&gt;
Video is saved with a resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8081</id>
		<title>Contributions:WebcamLogger</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:WebcamLogger&amp;diff=8081"/>
		<updated>2018-11-28T18:31:53Z</updated>

		<summary type="html">&lt;p&gt;Pbrunner: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
A Extension that records video from one or more webcams to an avi file, and stores frame numbers as state variables.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/Extensions/WebcamLogger&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Adam Wilson (adam.wilson@uc.edu) &amp;amp; Alex Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
===Version History===&lt;br /&gt;
07/06/2011 - Full commit with support for MSVC and MinGW.&lt;br /&gt;
&lt;br /&gt;
07/13/2011 - Bugfixes&lt;br /&gt;
&lt;br /&gt;
11/28/2018 - Updated openCV to v2.4.3 for x32/x64 Windows and added functionality for recording from multiple cameras&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: --&lt;br /&gt;
*Tested under: 5828&lt;br /&gt;
*Known to compile under: 5828&lt;br /&gt;
*Broken since: 5828 for MinGW&lt;br /&gt;
&lt;br /&gt;
===TODO===&lt;br /&gt;
Update MinGW openCV library&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
For many experiments, visual information about how a subject is behaving during an experiment is desired. This extension acquires video from most webcams, and writes to an AVI video file. It also records the current frame number as a state variable, so that the video can be synchronized with brain data with a resolution of the block size. Other options include the ability to overlay the date and time directly on the video (useful for long-term monitoring), and time decimation (i.e., save every Nth frame).&lt;br /&gt;
&lt;br /&gt;
PROTIP: This module can also be used to perform screen capture with the proper virtual screencast webcam driver.  Dubious website, but this product works well: http://www.pcwinsoft.com/screencamera/&lt;br /&gt;
&lt;br /&gt;
==Integration into BCI2000==&lt;br /&gt;
Compile the extension into your source module by enabling contributed extensions in your CMake configuration.  You can do this by going into your root build folder and deleting &amp;lt;code&amp;gt;CMakeCache.txt&amp;lt;/code&amp;gt; and re-running the project batch file, or by running &amp;lt;code&amp;gt;cmake -i&amp;lt;/code&amp;gt; and enabling &#039;&#039;&#039;BUILD_WEBCAMLOGGER&#039;&#039;&#039;.  Once the extension is built into the source module, enable it by starting the source module with the &amp;lt;code&amp;gt;--LogWebcam=1&amp;lt;/code&amp;gt; command line argument.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Webcams should be installed and configured per the device instructions. The Webcam logger uses the OpenCV (version 2.4.3) library for display and saving.&lt;br /&gt;
&lt;br /&gt;
Camera options are found in the &#039;&#039;Source&#039;&#039; tab of the Configuration window.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
The Webcam logger is configured in the &#039;&#039;Source&#039;&#039; tab within the WebcamLogger section.  The configurable parameters are:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;LogWebcam&amp;lt;/code&amp;gt;   - Enables/Disables logging of Webcam states.&lt;br /&gt;
*&amp;lt;code&amp;gt;CameraNumber&amp;lt;/code&amp;gt; - Used to select one camera to record from on systems with multiple cameras. Use value 0 for the default camera.&lt;br /&gt;
*&amp;lt;code&amp;gt;RecordAll&amp;lt;/code&amp;gt;  - Enables the recording of cameras from &amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;StartIndex&amp;lt;/code&amp;gt;  - Index to start searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;EndIndex&amp;lt;/code&amp;gt;  - Index to stop searching for cameras at.&lt;br /&gt;
*&amp;lt;code&amp;gt;Decimation&amp;lt;/code&amp;gt;  - The decimation factor for saving and viewing video; the logger saves/displays every Nth frame.&lt;br /&gt;
*&amp;lt;code&amp;gt;DateTimeLocation&amp;lt;/code&amp;gt; - The location of the date/time overlay in saved video (0: none, 1: UpperRight, 2: UpperLeft, 3: LowerRight, 4: LowerLeft).&lt;br /&gt;
*&amp;lt;code&amp;gt;DisplayStream&amp;lt;/code&amp;gt;  - Display the each connected cameras stream. Display stream is identical to what is being recorded in the .avi file.&lt;br /&gt;
*&amp;lt;code&amp;gt;SelectCodec&amp;lt;/code&amp;gt;  - Use OpenCV&#039;s GUI for selecting codecs available on system. Each connected camera will prompt for a codec to be selected. The default codec is DIVX.&lt;br /&gt;
&lt;br /&gt;
Video is saved with a resolution of the camera being used.&lt;br /&gt;
&lt;br /&gt;
==Event Variables==&lt;br /&gt;
&lt;br /&gt;
===WebcamFrame&amp;lt;0-n&amp;gt;===&lt;br /&gt;
The frame number of the video recorded on camera with index i. i must be less than or equal to n due to the nature of event declarations. The default value of n is 3, allowing for the recording of up to 4 cameras. To record from more cameras, change the &amp;lt;code&amp;gt;NUM_OF_WEBCAM_EVENTS&amp;lt;/code&amp;gt; macro in WebcamLogger.cpp to to number of cameras you want to record from and recompile. Event values can be used to synchronize the video with the recorded neural data. It is a 24-bit value, allowing 16,777,216 frames before overflowing. If the webcam can capture at 30 frame/sec, and is decimated at a factor of 5 (i.e., 6 frames/sec), this allows more than a month of video before it will go back to frame 0. In other words, this should not be an issue for most users.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Logging Input]], [[Contributions:Extensions]], [[Programming Reference:Events]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributions]][[Category:Extension]]&lt;/div&gt;</summary>
		<author><name>Pbrunner</name></author>
	</entry>
</feed>