<?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=Gschalk</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=Gschalk"/>
	<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php/Special:Contributions/Gschalk"/>
	<updated>2026-07-02T13:16:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:CortecADC&amp;diff=9850</id>
		<title>Contributions:CortecADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:CortecADC&amp;diff=9850"/>
		<updated>2022-08-02T09:15:03Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Known Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
[[File:CorTec_BrainInterchange.png|400px|thumb|right|CorTec Brain Interchange Implant]]&lt;br /&gt;
CortecADC is a source module that allows for inter-cranial recording and stimulating over 32 channels via a fully implantable device. It is intended for long-term measurement of neural activity and electrical stimulation of brain tissue. See the [https://www.cortec-neuro.com/solutions/complete-system/ CorTec site] for more information.&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
&lt;br /&gt;
===Authors===&lt;br /&gt;
* Alexander Belsten (belsten@neurotechcenter.org)&lt;br /&gt;
* Markus Adamek (adamek@neurotechcenter.org)&lt;br /&gt;
&lt;br /&gt;
===Version History===&lt;br /&gt;
* 11/29/2018 - R5829 - Initial untested version (Adamek)&lt;br /&gt;
* 04/19/2021 - R6271 - First working version (Belsten)&lt;br /&gt;
* 07/22/2021 - R6339 - Changed &#039;&#039;ImplantLostSample&#039;&#039; from a BCI2000 state to a stream, so it can record individual sample loss (instead of over the whole block). This change is untested. (Belsten)&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 6266&lt;br /&gt;
*Tested under: 6271&lt;br /&gt;
*Known to compile under: 6271&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
* Lost samples - The &amp;lt;code&amp;gt;ImplantLostSamples&amp;lt;/code&amp;gt; state records what samples are lost, and their locations. Lost samples are replaced with the previous valid sample for all channels. In offline analysis, be sure to remove these samples and replace them with interpolates.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of digitized and stored channels. In the current implementation, this parameter cannot be edited, and will default to how many channels are available from the implant. &lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 1000 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) will be updated 50 times per second.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sample rate of the system. This parameter cannot be edited, and will default to the sampling rate available from the implant. &lt;br /&gt;
In case you are experiencing problems by higher sampling rates (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display.&lt;br /&gt;
&lt;br /&gt;
===SourceChOffset===&lt;br /&gt;
Offset for each channel.&lt;br /&gt;
&lt;br /&gt;
===SourceChGain===&lt;br /&gt;
Gain for each channel. &lt;br /&gt;
&lt;br /&gt;
===ChannelNames===&lt;br /&gt;
Names of each channel.&lt;br /&gt;
&lt;br /&gt;
===ReferenceCh===&lt;br /&gt;
This list defines what channels will be used as reference. This list is uploaded to the device and set in hardware, effecting the raw bio-signal data that is recorded by BCI2000. If you do not want to effect the raw bio-signal data that is recorded, you can use the [https://www.bci2000.org/mediawiki/index.php/User_Reference:SpatialFilter spatial filter]. If this parameter is set to auto, no reference channels are used.&lt;br /&gt;
&lt;br /&gt;
==Stimulation Parameters==&lt;br /&gt;
These parameters can be found in the &amp;quot;Stimulation&amp;quot; tab of the BCI2000 config window. &lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:CortecADC_stimulation_parm.PNG&lt;br /&gt;
File:CortecADC_stimulationpulses_parm.PNG&lt;br /&gt;
File:CortecADC_stimulationtriggers_parm.PNG&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===EnableStimulation===&lt;br /&gt;
This parameter enables/disables stimulation. &lt;br /&gt;
&lt;br /&gt;
===StimulationPulses===&lt;br /&gt;
This parameter defines the shape of the charge balanced stimulation pulses, as described in Fig 1. The pulses are defined in one column of this parameter matrix, and it is possible to define an arbitrary number of pulses, each of which are associated with a user defined integer called a &#039;&#039;PulseID&#039;&#039;.  The rows are labeled and there are some limitations to the magnitudes and durations which are elaborated on in the subsequent section. &lt;br /&gt;
[[File:CortecADC_pulse_def.png|600px|thumb|center|upright=2.5|Figure 1. Pulse definition]]&lt;br /&gt;
====PulseID====&lt;br /&gt;
This must be an integer greater than or equal to zero. This ID will be used in the &#039;&#039;StimulationTriggers&#039;&#039; parameter. &lt;br /&gt;
&lt;br /&gt;
====Pulse Amplitude====&lt;br /&gt;
The pulse amplitude defines the amplitude of the main pulse in units of µA. The counter pulse will have a negative amplitude that is one-quarter of the magnitude of the main pulse. &lt;br /&gt;
&lt;br /&gt;
The valid values of this parameter are in the range 0 to 6120 µA. The granularity changes for smaller amplitudes as follows:&lt;br /&gt;
* amplitude &amp;lt;=  3060 µA: step size of 12&lt;br /&gt;
* amplitude &amp;gt;  3060 µA: step size of 24&lt;br /&gt;
This leads to a set of acceptable values that looks like: [0, 12, ..., 3048, 3060, 3084, ... 6096, 6120]&lt;br /&gt;
You can define this parameter not to be one of the acceptable values in this range, but it will be rounded to the nearest valid value, and other parameters will be varied to maintain charge balance. &lt;br /&gt;
&lt;br /&gt;
====Pulse Duration====&lt;br /&gt;
The pulse duration defines the duration of the main pulse in µs. The counter pulse will have a duration that is four times longer than the main pulse duration. Pulse duration values are set in steps of 10 µs. The acceptable range is between 10 and 2550 µs. Again, if the provided value is not a multiple of 10, it will be rounded to the nearest valid value, and other parameters will be modified to maintain charge balance. &lt;br /&gt;
&lt;br /&gt;
====Dead Zone 0====&lt;br /&gt;
Holds the duration of the pause between main and counter pulse in µs. Values can be set in steps of 10 µs. The acceptable range is between 10 and 2550 µs. The same duration dead zone will also occur after the counter pulse.&lt;br /&gt;
&lt;br /&gt;
====Dead Zone 1====&lt;br /&gt;
Holds the duration of the pause after the pulse was delivered. Values can be set in steps of 80 µs. The acceptable range goes from 10 to 20400 µs. Note that the steps are starting from 0 while the minimum value is 10 µs. This leads to a set of acceptable values that looks like: [10, 80, 160, 240, ... , 20400] µs.&lt;br /&gt;
&lt;br /&gt;
===StimulationTriggers===&lt;br /&gt;
This parameter defines when stimulation is applied, what pulse is used, how many pulses are applied, and the source and destination locations of the stimulation. These parameters are defined in the rows of this matrix with labels&lt;br /&gt;
====Trigger====&lt;br /&gt;
This must be a [https://www.bci2000.org/mediawiki/index.php/User_Reference:Expression_Syntax BCI2000 expression]. When this expression evaluates true during the run, the stimulation is applied. &lt;br /&gt;
====PulseID====&lt;br /&gt;
The second row should contain a valid PulseID that is to be used. &lt;br /&gt;
====Source Ch====&lt;br /&gt;
The third row is an embedded list that defines the source electrodes. &lt;br /&gt;
====Destination Ch====&lt;br /&gt;
The fourth row is also an embedded list that defines the destination electrodes. &lt;br /&gt;
====Repetitions====&lt;br /&gt;
The fifth row defines how many times that pulse is repeated. The max is 255.&lt;br /&gt;
&lt;br /&gt;
==Device Parameters==&lt;br /&gt;
&lt;br /&gt;
===DeviceInfo===&lt;br /&gt;
This parameter cannot be edited and is automatically populated with information returned from the device, such as device type, device ID, and the firmware version. &lt;br /&gt;
&lt;br /&gt;
===StateInfo===&lt;br /&gt;
This parameter cannot be edited and is automatically populated with information regarding state units and their multiplier. The device provides information such as humidity, temperature, control value, etc., which are recorded in BCI2000 states (see state information on this page for a complete enumeration of states). The device provides these values with floats, but BCI2000 states can only be integers. The multipliers defined in this parameter are used to increase the amount of precision in the state values. To approximately recover the original float values with the units defined in this parameter, divide each state by its corresponding multiplier.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
The states encode auxiliary information returned from the Cortec implant. The device provides this data in floating point numbers, however BCI2000 can only record integers to it&#039;s states. To maintain some precision, these floats are multiplied by constants, then recorded to the states as integers. To approximately recover the original data, divide the state by its corresponding constant. Constants are shown in the following table. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
! State&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Constant&lt;br /&gt;
|-&lt;br /&gt;
| ImplantVoltage&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1000&lt;br /&gt;
|-&lt;br /&gt;
| ImplantHumidity&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 100&lt;br /&gt;
|-&lt;br /&gt;
| ImplantControlValue&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 100&lt;br /&gt;
|-&lt;br /&gt;
| ImplantPrimaryCoilCurrent&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1000&lt;br /&gt;
|-&lt;br /&gt;
| ImplantTemperature&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 100&lt;br /&gt;
|}&lt;br /&gt;
===ImplantLostSample===&lt;br /&gt;
The communication protocol the device uses does not re-send lost data. This state annotates what samples were lost in the bio-signal data. Currently, lost samples are made up by duplicating the previous sample. &lt;br /&gt;
&lt;br /&gt;
===ImplantVoltage===&lt;br /&gt;
16 bit state that changes when new supply voltage value is received from the implant. After dividing the integer state value by the the voltage multiplier defined in the StateInfo parameter, the units are in volts.&lt;br /&gt;
&lt;br /&gt;
===ImplantHumidity===&lt;br /&gt;
16 bit state that changes when new humidity value is received from the implant. Units in %rh. &lt;br /&gt;
&lt;br /&gt;
===ImplantControlValue===&lt;br /&gt;
16 bit state that changes when new current control value is received from the external unit. The power of the implant is controlled by the external unit. The control value provides a measure of how good the coupling between the two coils is and how much more power can be provided if necessary.&lt;br /&gt;
The value is between 0.0 and 100.0 percent, where 0.0 translates to no power and 100.0 translates to maximum power applied.&lt;br /&gt;
&lt;br /&gt;
===ImplantPrimaryCoilCurrent===&lt;br /&gt;
16 bit state that change when new primary coil current value is received from the external unit. The primary coil refers to the coil inside the head piece of the external unit. Units are mA. &lt;br /&gt;
&lt;br /&gt;
===ImplantTemperature===&lt;br /&gt;
16 bit state that changes when new temperature value is received from the implant. Units are degrees Celsius. &lt;br /&gt;
&lt;br /&gt;
===ImplantStimulation===&lt;br /&gt;
Binary state that changes when the device reports that it is stimulating. &lt;br /&gt;
&lt;br /&gt;
===RequestedStimulation===&lt;br /&gt;
Binary state that records when a stimulation trigger expression evaluates true. State remains true for the duration triggered stimulation. This is useful for determining the latency between when stimulation is requested and when it is actually applied. This is done by computing the difference in time between the rising edges of &#039;&#039;ImplantStimulation&#039;&#039; and &#039;&#039;RequestedStimulation&#039;&#039; states.&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>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=BCI2000_Binaries&amp;diff=6170</id>
		<title>BCI2000 Binaries</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=BCI2000_Binaries&amp;diff=6170"/>
		<updated>2011-07-01T23:38:43Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Win64 Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Access==&lt;br /&gt;
Access to BCI2000 is provided to users who have agreed to the terms of the GNU General Public License (GPL). Thus, you need a [[Creating_a_User_Account|user account]] to download the binary version of BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Latest Version==&lt;br /&gt;
The latest binary version of BCI2000 is always available at&lt;br /&gt;
&lt;br /&gt;
http://bci2000.org/downloads/bin/BCI2000Setup.exe&lt;br /&gt;
&lt;br /&gt;
==Win64 Support==&lt;br /&gt;
Currently, the BCI2000 binary distribution is 32-bit only. It is possible to run these 32-bit executables on 64-bit Windows systems as well. In addition, BCI2000 may be compiled into native 64-bit executables from its source code as described [[Programming_Reference:Building_BCI2000_for_Win64|on this page]].&lt;br /&gt;
&lt;br /&gt;
==Dependencies==&lt;br /&gt;
The original version 3 release build required VisualC++ runtime libraries to run. An installer for the runtime libraries may be downloaded from here:&lt;br /&gt;
http://bci2000.org/downloads/bin/vcredist_x86.exe&lt;br /&gt;
&lt;br /&gt;
Newer builds of BCI2000 don&#039;t have this dependency any more.&lt;br /&gt;
&lt;br /&gt;
==Contributed Code==&lt;br /&gt;
BCI2000 modules from the [[Contributions:Contents|contribution section]] are not part of the BCI2000 core distribution.&lt;br /&gt;
Especially, this is the case for a number of [[Contributions:ADCs|source modules]].&lt;br /&gt;
For convenience, we provide an extended binary distribution that includes binary versions of BCI2000 contributions. This extended distribution is always built from the same source code version as the most recent core distribution, and is available at&lt;br /&gt;
&lt;br /&gt;
http://bci2000.org/downloads/bin/BCI2000Contrib.exe&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: &#039;&#039;&#039; While we do our best to maintain contributed code, we cannot promise that it is functional, nor provide extensive support. This is especially true in case of contributed source modules which we cannot test for functionality in the absence of the respective hardware. When you experience problems with contributed code, please contact the contributor indicated on the contribution&#039;s reference page (accessible through [[Contributions:Contents]]).&lt;br /&gt;
&lt;br /&gt;
==BCPy2000 Contribution==&lt;br /&gt;
The extended distribution does not contain the [[Contributions:BCPy2000|BCPy2000 contribution]]. Rather, all required executables may be downloaded [http://{{SERVERNAME}}/downloads/BCPy2000 here].&lt;br /&gt;
&lt;br /&gt;
==Version History==&lt;br /&gt;
===Version 3 Builds===&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_110627.exe June 2011 Version 3.0.2]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/3359 Latest changeset: 3359]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New features in this version:&#039;&#039;&#039;&lt;br /&gt;
*Added a Matlab wrapper to simplify using BCI2000 command line tools for offline analysis (tools/matlab/bci2000chain.m) (J. Hill)&lt;br /&gt;
*Added mex file binaries for 64-bit Intel Mac (J. Hill)&lt;br /&gt;
*Added TargetSequence parameter to FeedbackTask to allow deterministic sequences in feedback-based application modules (J. Hill)&lt;br /&gt;
*Added a &amp;quot;show numeric values&amp;quot; option to standard polyline operator visualizations (J. Hill)&lt;br /&gt;
*Re-introduced Shift-JIS compatibility into application modules. &lt;br /&gt;
*Normalizer optionally writes its updated Offsets and Gains parameters into a parameter file, so they don&#039;t get lost when quitting BCI2000 (J. Hill)&lt;br /&gt;
*Introduced new &amp;quot;P3Speller compatible&amp;quot; sequence type into StimulusPresentation module and P300Classifier tool (J. Mellinger)&lt;br /&gt;
*Removed detailed message statistics from the Operator&#039;s &amp;quot;connection info&amp;quot; overview (J. Mellinger)&lt;br /&gt;
*Updates to application windows are now handled much more efficiently, improving overall timing on slower systems, and systems with large displays (J. Mellinger)&lt;br /&gt;
*LinearClassifier now uses its weights to guess the range of its output signal, improving appearance of its output in visualizations (J. Mellinger)&lt;br /&gt;
*Removed use of GraphObject::CompareByZOrder as a comparator for the GraphDisplay object set. Now, GraphObjects are sorted on demand rather than in their container, allowing ZOrder to be a writable property of GraphObjects (J. Mellinger)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*OfflineAnalysis now runs even if current working dir is outside its directory (J. Hill)&lt;br /&gt;
*Some fixes related to signal sampling rates (J. Mellinger)&lt;br /&gt;
*No more &amp;quot;Unexpected Param message&amp;quot; error when a filter in a source module would set the Running state to 0 (J. Mellinger)&lt;br /&gt;
*Buildmex script now works again in OSX (J. Mellinger)&lt;br /&gt;
*Fixed initialization bug in SignalGeneratorADC: Signal amplitude would not be reset to user setting in Initialize() when previously modulated with the mouse (reported by ynakajima)&lt;br /&gt;
*Fixed a bug in gUSBamp source module that would cause irregular timing, and even bluescreens (J. Mellinger)&lt;br /&gt;
*gUSBampSource works with multiple amps again (J. Hill)&lt;br /&gt;
*P3Speller: Corrected next target computation in copy spelling mode; there was a problem when multiple characters were entered by a target (J. Mellinger)&lt;br /&gt;
*Fixed filter instantiation bug (filters could appear twice in the filter chain) introduced in r3226 (J. Mellinger)&lt;br /&gt;
*Adapted load_bcimat to the latest version of bci_stream2mat (J. Mellinger)&lt;br /&gt;
*Fixed Borland/RAD Studio project files and compilation issues (J. Mellinger)&lt;br /&gt;
*Fixed a bug that would crash the P3Speller module when the TextWindowEnabled parameter had been switched on, and then switched off again (J. Mellinger)&lt;br /&gt;
*Added SourceFilter (HP, LP and Notch filtering) back to gMOBIlab and gMOBIlabPlus source modules which had been missing from v3 (J. Mellinger) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*Fixed a failed assertion bug in MFCdemo application (J. Mellinger)&lt;br /&gt;
*vAmp source module was broken in v3, works again now (M. Schatt)&lt;br /&gt;
*Suppressed unnecessary warnings, added slightly-smoother support for legacy parameters in FilePlayback module (J. Hill)&lt;br /&gt;
*Support for logging Tobii Eyetracker and Wiimote state into BCI2000 data files (G. Milsap)&lt;br /&gt;
*New CoherenceFilter contribution computes magnitude squared coherence between spatially filtered input signals (J. Mellinger)&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_110506.exe May 2011 Version 3.0.1]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/3261 Latest changeset: 3261]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New features in this version:&#039;&#039;&#039;&lt;br /&gt;
*SignalGenerator, FilePlayback and PythonSource all now have the option of *not* checking realtime operation,  since they may be used to play artificial signals in non-real time.  (J. Hill)&lt;br /&gt;
*Visualization windows now have a status bar; keyboard shortcuts to toggle filters between on and off (h, l, and n); keyboard shortcuts cycle through available filter settings (H, L, N). &lt;br /&gt;
*Operator and tools now use application-local ini files rather than the registry to store settings. &lt;br /&gt;
*bci_stream2mat now outputs ChannelLabels, ElementLabels, ElementValues, and ElementUnit in Matlab format (J. Hill)&lt;br /&gt;
*bci_dat2stream now has a -p option: parameters are optionally read from a parameter file, overshadowing the ones previously read from the dat file   (J. Hill)&lt;br /&gt;
*bci_stream2mat now outputs a string containing all the parameters found at the *beginning* of the stream (J. Hill)&lt;br /&gt;
*Custom-development bootstrapping for new source, sigproc and application modules (J. Hill)&lt;br /&gt;
*Source modules now use a separate thread for writing data, avoiding data loss when the file is locked by another process (A. Wilson)&lt;br /&gt;
*A change in the filter registration mechanism: Rather than being restricted to signal processing modules, Filter() statements (as well as PipeDefinition.cpp files) may now appear in any type of module, and will override all RegisterFilter() statements present in the module. &lt;br /&gt;
*FFTFilter now displays frequency labels in its visualization windows. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Updated buildmex to repair missing linker symbols, and to work with Matlab 2010b. (A. Wilson)&lt;br /&gt;
*Fixed Preflight in gUSBampADC: Now SourceChList is checked properly when multiple amplifiers are connected. &lt;br /&gt;
*P300Classifier is now able to deal with files recorded with StimulusPresentation. &lt;br /&gt;
*ARFilter now allows a single frequency bin. (J. Hilll)&lt;br /&gt;
*Fixed a bug in bci_filtertool: parameter properties would be read from the input stream rather than from the filter present in the tool. &lt;br /&gt;
*Fixed compilation of mex files using Qt.&lt;br /&gt;
*Made filter registration mechanism more stable when compiling with gcc.&lt;br /&gt;
*Removed mex files from OfflineAnalysis directory; OfflineAnalysis now adds the BCI2000 mex file directory to its path. This is to avoid &amp;quot;function not found&amp;quot;-errors on non-win32 systems. &lt;br /&gt;
*Visualization displays now show labels in field2d visualizations. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*ModularEEG is now present in v3 (J. Hill)&lt;br /&gt;
*Changed executable name for NeuroscanAccessSDK source module from &amp;quot;Neuroscan.exe&amp;quot; to &amp;quot;NeuroscanAccess.exe&amp;quot; in order to avoid confusion with the Neuroscan Acquire client source module (which is called NeuroscanClient.exe). &lt;br /&gt;
*NIDAQ-MX source module now includes NIDAQ logging components written by J. Renga: [[Contributions:NIDAQLogger]] and [[Contributions:NIDAQFilter]]&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_110216.exe February 2011 Version 3 Release Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/3113 Latest changeset: 3113]&lt;br /&gt;
&lt;br /&gt;
===Version 2 Builds===&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_101124.exe November 2010 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2990 Latest changeset: 2990]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Removed upper/lower bounds of 0 and 1 for the RandomSeed parameter, allowing for any parameter value.&lt;br /&gt;
*Neuroscan Acquire client now translates event channel into states on a sample-by-sample basis rather than block-by-block.&lt;br /&gt;
*Fixed &amp;quot;TestMode&amp;quot; parameter naming conflict between gMOBILab source and P3Speller (A. Wilson)&lt;br /&gt;
*ARSignalProcessing module would use wrong bin when frequency was specified in Hz in the classifier, and first bin center was nonzero.&lt;br /&gt;
*LinearClassifier now properly rounds channel and element indices when not exactly meeting an index.&lt;br /&gt;
*save_bcidat now uses signal dimensions to infer the value of the SourceCh parameter rather than the SourceCh parameter in the parameter struct.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_100805.exe August 2010 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2932 Latest changeset: 2932]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes in this version:&#039;&#039;&#039;&lt;br /&gt;
*SoundStimulus and SpeechStimulus objects now finish playback even when deleted (fixes some muted sound conditions in P3Speller and StimulusPresentation application modules).&lt;br /&gt;
*Removed additional 1-block latency from state changes recorded via bcievents.&lt;br /&gt;
*Update to P300Classifier (C.M. Potes)&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_100623.exe June 2010 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2860 Latest changeset: 2860]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New features in this version:&#039;&#039;&#039;&lt;br /&gt;
*Added lowpass option to SourceFilter which is present in a number of source modules (e.g. gMOBIlab source module).&lt;br /&gt;
*P3TemporalFilter now uses the NumberOfSequences parameter when available to determine the number of epochs to average.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*bci_dat2stream now uses float32 format when providing calibrated output signal.&lt;br /&gt;
*Fixed a bug in TransmissionFilter and SpatialFilter which would lead to channel numbers being forwarded as channel labels. &lt;br /&gt;
*P300Classifier does not crash any more when it is unable to generate feature weights. (C.M. Potes)&lt;br /&gt;
*Operator modules&#039; &amp;quot;Load Matrix&amp;quot; button now works correctly with values containing escape characters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*vAmp source module: &lt;br /&gt;
**Impedance mode now works with vAmp8; better stability in impedance mode. (J Mellinger)&lt;br /&gt;
**Impedances are now shown on the amplifier&#039;s display rather than a window. (J Mellinger)&lt;br /&gt;
**Code concerning multi-amp use mostly removed (vAmp doesn´t support multi-Amp use) (M. Schatt)&lt;br /&gt;
**Parameters that make only sense when using several amps have been removed (&amp;quot;DeviceIds&amp;quot;, &amp;quot;SourceChDevices&amp;quot;) (M. Schatt)&lt;br /&gt;
**Improvements to Impedance view: Update the vAmp-Display less frequently.  (M. Schatt)&lt;br /&gt;
**Use return values of Impedance API functions to improve error handling and prevent crashes. (M. Schatt)&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_100401.exe April 2010 Version 2.1 Release Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2770 Latest changeset: 2770]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New features in this version:&#039;&#039;&#039;&lt;br /&gt;
*Operator module now allows for saving of matrices in parameter format, and allows to specify empty matrices in the GUI. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Fixed usability issues in BCI2000Viewer (arrow keys should now work as expected).&lt;br /&gt;
*Fixed a bug that could lead to enabled start button even when an initialization error occurred.&lt;br /&gt;
*INSERT STATE operator script command is now consistent with documentation: name, bit width, and initial value are sufficient to specify a state.&lt;br /&gt;
*Pre-run duration in StimulusPresentation and P3Speller applications was one block longer than defined by the user.&lt;br /&gt;
*Floating point exceptions are now masked in all modules. This should result in more stable behavior during recording.&lt;br /&gt;
*P3Speller no longer crashes when text-to-speech output is configured for matrix elements.&lt;br /&gt;
*buildmex Matlab script now works on Win64 systems.&lt;br /&gt;
*OfflineAnalysis now runs on Win64 systems.&lt;br /&gt;
*MEM mex file usage info now contains correct input signal dimensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*Fixed a potential problem with the DASSource when initializing an unknown board. &lt;br /&gt;
*Fixed a reinitialization bug in the Biosemi source module. Now, pressing SetConfig more than once works (G Schalk).&lt;br /&gt;
*Amp Server Pro now works with GM version 1 release (R Bell).&lt;br /&gt;
*Fixed anti-aliasing filter and high pass configuration in vAmp source module (A Wilson).&lt;br /&gt;
*Tucker-Davis source module now uses threading (A Wilson).&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_100217.exe February 2010 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2671 Latest changeset: 2671]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Operator scripts now correctly report failure when an invalid state line is given. &lt;br /&gt;
*Drag-and-drop batch files in the command line directory will now work more reliably.&lt;br /&gt;
*Image stimuli are now displayed correctly for an AspectRatioMode of AdjustBoth.&lt;br /&gt;
*Win32 mex files now have a mexw32 extension.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*RDAClient works more reliable for higher sampling rates and larger numbers of channels.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_091203.exe December 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2630 Latest changeset: 2630]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Fixed broken EEGLabImport contribution.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_091110.exe November 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2606 Latest changeset: 2606]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Mouse and joystick logging will now correctly record initial position at the beginning of a run.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*A number of bugfixes and improvements to the TMSi source module (J. Hill).&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_090827.exe August 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2514 Latest changeset: 2514]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Fixed treatment of state names beginning with &amp;quot;Signal&amp;quot; in ConnectorInput filter. &lt;br /&gt;
*Fixed computation of SelectedRow/SelectedColumn states in P3SpellerTask. &lt;br /&gt;
*Fixed BCI2000 Export tool which was broken in the previous bindist.&lt;br /&gt;
*Improved robustness against undocumented data packets in RDAClient.&lt;br /&gt;
*Fixed a number of issues in user tutorials.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New features in this version:&#039;&#039;&#039;&lt;br /&gt;
*New split_bcidat contribution allows splitting large dat files into smaller ones to work around 2GB file size limit when loading dat files.&lt;br /&gt;
*Matlab-independent P300 classifier tool replaces P300GUI contribution.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_090629.exe June 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2421 Latest changeset: 2421]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version&#039;&#039;&#039;&lt;br /&gt;
*P3Speller application log now correctly counts the number of intensifications.&lt;br /&gt;
*Inconsistent parameters no longer cause ARFilter::Preflight to hang.&lt;br /&gt;
*P3Speller sleep mode now works as documented (requires two &amp;quot;SLEEP&amp;quot; selections in a row to unsleep).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*Biosemi: Fixed bugged trigger masks and added functionality for &amp;quot;downsampling&amp;quot; the trigger signal  (for each bit, all samples over the decimation period are logical-ORred together) (J. Hill)&lt;br /&gt;
*Biosemi: Added the option to specify the TriggerChList? as a single &#039;0&#039;, which means &amp;quot;read all triggers as a 16-bit integer&amp;quot; (J. Hill)&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_090514.exe May 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2355 Latest changeset: 2355]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Added an offset of 32768 to mouse coordinates recorded by the KeyLogger component.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version&#039;&#039;&#039;&lt;br /&gt;
*Fixed AlignChannels parameter in gUSBamp.prm parameter fragment.&lt;br /&gt;
*A number of minor bug fixes related to ERP visualization in the P3TemporalFilter.&lt;br /&gt;
*P3TemporalFilter no longer crashes when an invalid channel is specified in TargetERPChannel parameter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*Renamed getparams tool to RDAgetparams&lt;br /&gt;
*Contrib distribution now contains neurogetparams tool. &lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_090422.exe April 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2342 Latest changeset: 2342]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Updated load_bcidat copies in tools directories to latest version.&lt;br /&gt;
*Various improvements to gUSBamp source module (JA Wilson).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*Renamed load_bcidat in EEGlabImport to avoid version conflicts.&lt;br /&gt;
*P300GUI is now more robust in case the system was suspended before a run was complete (J Temprano).&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_090203.exe February 2009 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2245 Latest changeset: 2245]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Improvements to gUSBamp source (A Wilson).&lt;br /&gt;
*Operator Module: Improved timing behavior when clicking window titles.&lt;br /&gt;
*CursorTask: TargetCode and ResultCode states are now 8 bits wide, allowing for a maximum of 255 targets.&lt;br /&gt;
*Asynchronous events recorded into &amp;lt;tt&amp;gt;bcievent&amp;lt;/tt&amp;gt; are now available for online processing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*RDAClient and Biosemi2 source modules now compile under cygwin gcc 3 in mingw mode (J Hill).&lt;br /&gt;
*DateGlove5DTUFilter now supports the 5DT Data Glove 14 Ultra as well (P Brunner).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*The Normalizer filter would ignore BufferCondition entries under certain circumstances.&lt;br /&gt;
*load_bcidat mex file would perform conversion of nested matrices into Matlab structs incorrectly.&lt;br /&gt;
*Recording of cursor position by CursorTask into state variables did not match specification.&lt;br /&gt;
*StimulusPresentationTask did not handle empty image and sound file entries correctly.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_081201.exe December 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2209 Latest changeset: 2209]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes in this version:&#039;&#039;&#039;&lt;br /&gt;
*Some issues in runtime/component deployment have been fixed in the Offline Analysis tool (J Fialkoff).&lt;br /&gt;
*Choosing Help-&amp;gt;BCI2000 Help should be more reliable now.&lt;br /&gt;
*FIRFilter has been rewritten to simplify configuration.&lt;br /&gt;
*RDAClient (BrainVision) source module now issues a notification rather than a runtime error when blocks are out-of-sequence.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_081117.exe November 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2200 Latest changeset: 2200]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements in this version:&#039;&#039;&#039;&lt;br /&gt;
*P300 and Mu rhythm examples and tutorials use new SpatialFilter options.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements to contributed code:&#039;&#039;&#039;&lt;br /&gt;
*Biosemi source module:&lt;br /&gt;
**Support for an auxiliary Analog Input Box (AIB),&lt;br /&gt;
**Simplified/more consistent parameterization,&lt;br /&gt;
**Subsampling now uses averaging (J Hill).&lt;br /&gt;
*P300 GUI has been updated to use a current version of load_bcidat (S Halder).&lt;br /&gt;
*A number of enhancements and bug fixes to BCPy2000 (J Hill). (Note: BCPy2000 is not part of the BCI2000 binary distribution.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bug fixes in this version:&#039;&#039;&#039;&lt;br /&gt;
*AmpServerPro source module: Data could be scrambled due to an endianness issue.&lt;br /&gt;
*Biosemi source module:&lt;br /&gt;
**Fixed bug with determination of battery status (J Hill),&lt;br /&gt;
**Fixed &amp;quot;mode changed from 4 to 0&amp;quot; error; fixed battery warning (ML Blefari).&lt;br /&gt;
*Source display now avoids artifacts induced by reduced numeric resolution for signals with large DC offsets.&lt;br /&gt;
*Application modules: Worked around a window positioning issue with recent versions of the Borland VCL (reported by A Wilson and G Sudre).&lt;br /&gt;
*Various issues with the OfflineAnalysis tool (J Fialkoff).&lt;br /&gt;
*Improvements to configuration consistency and stability of the FFTFilter.&lt;br /&gt;
*Fixed a potiential CursorTask crash on program exit.&lt;br /&gt;
*Microsoft compilers no longer link mex files against debug libraries (J Roland).&lt;br /&gt;
*Fixed a bug in a LinearClassifier::Preflight() range check; improved LinearClassifier configuration error messages.&lt;br /&gt;
*Application modules&#039; run statistics are now reset when starting a new run.&lt;br /&gt;
*When logging mouse position, initial mouse position at the beginning of a run will be recorded.&lt;br /&gt;
*Events recorded during the first data block are no longer reset at the beginning of the second block.&lt;br /&gt;
*Event recording no longer stops on SourceTime state wraparound (reported by G Milsap). &lt;br /&gt;
*gUSBamp source module uses modified buffering scheme to avoid losing data (A Wilson).&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_081006.exe October 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2152 Latest changeset: 2152]&lt;br /&gt;
&lt;br /&gt;
Enhancements in this version:&lt;br /&gt;
*Example files are now more consistent with state names in BCI2000 v2 (J Fialkoff).&lt;br /&gt;
*Binary mex files for 64-bit Windows XP (D Krusienski).&lt;br /&gt;
&lt;br /&gt;
Newly contributed code in this version:&lt;br /&gt;
*Source module for BrainProducts V-Amp (A Wilson).&lt;br /&gt;
*BCPy2000: write BCI2000 modules in the Python scripting language (J Hill, Th Schreiner, C Puzicha, J Farquhar).&lt;br /&gt;
&lt;br /&gt;
Bug fixes in this version:&lt;br /&gt;
*AmpServerPro source module now uses float32 data type for output (J Fialkoff).&lt;br /&gt;
*A parameter would be treated as changed when read from the StopRun function (reported by J Hill).&lt;br /&gt;
*The FilterDesign class would mistakenly report an error for valid corner frequencies in Butterworth and Chebyshev filters (reported by A Wilson).&lt;br /&gt;
*Activating the ConnectorInput filer with an empty input filter list would cause an exception (reported by aloplop).&lt;br /&gt;
*Ill-formed input would cause ConnectorInput to hang.&lt;br /&gt;
*P300GUI &amp;gt; r2142 would incorrectly treat the case of a single input file.&lt;br /&gt;
*Audio stimuli for matrix rows/columns would be incorrectly associated with row/column flashes in P300 speller (reported by ariel).&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_080819.exe August 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/2104 Latest changeset: 2104]&lt;br /&gt;
&lt;br /&gt;
New features in this version:&lt;br /&gt;
*Operator visualization windows now have a zoom function in their context menus (&amp;quot;More Samples&amp;quot;/&amp;quot;Fewer Samples&amp;quot;).&lt;br /&gt;
*A number of additional keyboard shortcuts in the Operator Module&#039;s visualization windows, and in BCI2000Viewer (contributed by Jeremy Hill).&lt;br /&gt;
*The CursorTask application module now allows to specify the number of trials rather than a run&#039;s duration (Adam Wilson).&lt;br /&gt;
*Updated SpatialFilter to include a CAR, sparse, and empty matrix options (Adam Wilson).&lt;br /&gt;
*Updated support of GDF file format to version 2.10 of the GDF specification. BCI2000 parameters are now documented inside GDF files.&lt;br /&gt;
*A. Wilson&#039;s EEGLabImport tool is now present in the binary distribution (formerly, it was part of the source distribution).&lt;br /&gt;
*Added a DebugLog option to direct bcidbg messages into log files.&lt;br /&gt;
&lt;br /&gt;
Bug fixes in this version:&lt;br /&gt;
*Fixed a number of issues in the save_bcidat mex file.&lt;br /&gt;
*Examples in BCI2000/data/samplefiles now follow Parameter and State naming conventions from BCI2000 Version 2.&lt;br /&gt;
*Fixed a one-off error in the source signal display (reported by Jeremy Hill).&lt;br /&gt;
*The ARFilter would hang for certain data triggering an infinite loop in &amp;lt;tt&amp;gt;extlib/math/Ratpoly::Evaluate()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Fixed an additional artifact/channel permutation problem in gMOBIlab and gMOBIlabPlus ADCs (thanks to Peter Brunner for testing).&lt;br /&gt;
*Some bug fixes to the P300Analysis tool (Peter Brunner).&lt;br /&gt;
*Some bug fixes to the OfflineAnalysis tool (Josh Fialkoff).&lt;br /&gt;
*Sometimes, BCI2000 could block when pressing Start after SetConfig (reported by Peter Brunner)&lt;br /&gt;
&lt;br /&gt;
New in the Contributions section:&lt;br /&gt;
*Created a FieldTripBuffer filter, connecting BCI2000 to FieldTrip Realtime Agents (Robert Oostenveld, Jürgen Mellinger)&lt;br /&gt;
*A source module acquiring data from EGI&#039;s AmpServerPro (Josh Fialkoff).&lt;br /&gt;
*Micromed Source module update: support for digital trigger packets, priority, note output to textfile; improved error handling (Erik Aarnoutse)&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_080529.exe May 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/1987 Latest changeset: 1987]&lt;br /&gt;
&lt;br /&gt;
New features in this version:&lt;br /&gt;
*State variables may now be set and read for individual samples rather than entire sample blocks.&lt;br /&gt;
*Threads within BCI2000 modules may now record asynchronous events into state variables at single-sample time resolution.&lt;br /&gt;
*Mouse, Keyboard, and Joystick events are now recorded at single-sample time resolution by the source module [[User Reference:Logging Input|when requested from the command line]].&lt;br /&gt;
*Added a &#039;&#039;NumericValue&#039;&#039; field to the Matlab parameter struct returned by load_bcidat.&lt;br /&gt;
&lt;br /&gt;
Bug fixes in this version:&lt;br /&gt;
*Fixed occasional channel swapping in gMOBIlab source modules (fix contributed by George Townsend).&lt;br /&gt;
*Fixed &amp;quot;TransmitChList out of range&amp;quot; message when specifying channels by labels in TransmitChList.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_080421.exe Apr 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/1921 Latest changeset: 1921]&lt;br /&gt;
&lt;br /&gt;
New features in this version:&lt;br /&gt;
*Support for the gMOBIlab+ amplifier.&lt;br /&gt;
*The MatlabFilter now allows choosing Matlab&#039;s working directory at startup, and has an option to leave the Matlab window open when quitting BCI2000.&lt;br /&gt;
*Added JoystickFilter to the CursorTask application module&#039;s default configuration.&lt;br /&gt;
*Introduced the ExpressionFilter into the ARSignalProcessing module&#039;s default configuration.&lt;br /&gt;
*Modified Expression class to handle 1-based offsets, physical units and labels in expressions.&lt;br /&gt;
*Added an option to invert the background in the operator module&#039;s signal display windows, and in BCI2000Viewer.&lt;br /&gt;
&lt;br /&gt;
Bug fixes in this version:&lt;br /&gt;
*Adding parameters and states from filter constructors will not overwrite existing parameter values any more (mostly affects command line tools).&lt;br /&gt;
*Fixed error in convert_bciprm that would change the type of list parameters to &amp;quot;matrix&amp;quot; when converting into parameter strings. &lt;br /&gt;
*A number of minor bug fixes and modifications to the OfflineAnalysis tool.&lt;br /&gt;
*EEGlabImport tool now makes sure that the imported signal is of &amp;quot;single&amp;quot; data type.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_080312.exe Mar 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/1828 Latest changeset: 1828]&lt;br /&gt;
&lt;br /&gt;
New features in this version:&lt;br /&gt;
*The operator module&#039;s [[User_Reference:Operator_Module#Parameter_Configuration_Window|parameter configuration window]] now has a help button. Clicking on the help button, and then on a parameter&#039;s name, will open the corresponding help file in a browser window.&lt;br /&gt;
*There is now an 8 channel CAR filter parameter fragment provided in &amp;lt;tt&amp;gt;parms/fragments/spatial_filters&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*The application log window has been re-introduced into the [[User Reference:P3SpellerTask|P3SpellerTask]].&lt;br /&gt;
&lt;br /&gt;
Bug fixes in this version:&lt;br /&gt;
*The &amp;lt;tt&amp;gt;load_bcimat&amp;lt;/tt&amp;gt; Matlab function would scramble 3-dimensional data.&lt;br /&gt;
*Under rare conditions, visualization windows would move across the screen by themselves.&lt;br /&gt;
*The [[User Reference:P3TemporalFilter|P3TemporalFilter&#039;s]] visualization display would always display zero data.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_080215.exe Feb 2008 Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/1790 Latest changeset: 1790]&lt;br /&gt;
&lt;br /&gt;
New features in this version:&lt;br /&gt;
*The [[User Reference:CursorTask|CursorTask]] application module now uses fast 2D drawing when &#039;&#039;RenderingQuality&#039;&#039; is set to &amp;quot;low&amp;quot;, and only uses OpenGL rendering when quality is set to &amp;quot;high&amp;quot;.&lt;br /&gt;
*It is now possible to display a downsized copy of the subject&#039;s application window in an operator visualization window.&lt;br /&gt;
*Command line tools have been updated to support propagation of signal units as introduced in Version 2.&lt;br /&gt;
&lt;br /&gt;
Bug fixes in this version:&lt;br /&gt;
*Parameters updated in the &amp;lt;tt&amp;gt;[[Programming Reference:GenericFilter Class#StopRun|GenericFilter::StopRun()]]&amp;lt;/tt&amp;gt; function would not be propagated to the operator module. Most notably, the [[User Reference:Normalizer|Normalizer&#039;s]] adapted offsets and gains would not be reflected in the operator module&#039;s parameter dialog. This has been fixed.&lt;br /&gt;
*A number of minor fixes in the [[User Reference:BCI2000 Offline Analysis|OfflineAnalysis]] tool.&lt;br /&gt;
&lt;br /&gt;
====[http://bci2000.org/downloads/bin/BCI2000Setup_080124.exe Jan 2008 Version 2 Release Build]====&lt;br /&gt;
[http://bci2000.org/tracproj/changeset/1746 Latest changeset: 1746]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Version 2 Preview Builds===&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000v2Preview_071123.exe Nov 2007 Build] ([http://bci2000.org/tracproj/changeset/1646 changeset 1646])&lt;br /&gt;
&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000v2Preview_071026.exe Oct 2007 Build] ([http://bci2000.org/tracproj/changeset/1577 changeset 1577])&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Version 1 Builds===&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000Setup_070706.exe Jul 2007 Build] ([http://bci2000.org/tracproj/changeset/1401 changeset 1401])&lt;br /&gt;
&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000Setup_070405.exe Apr 2007 Build] ([http://bci2000.org/tracproj/changeset/1299 changeset 1299])&lt;br /&gt;
&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000Setup_070130.exe Jan 2007 Build] ([http://bci2000.org/tracproj/changeset/1255 changeset 1255])&lt;br /&gt;
&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000Setup_061219.exe Dec 2006 Build] ([http://bci2000.org/tracproj/changeset/1183 changeset 1183])&lt;br /&gt;
&lt;br /&gt;
[http://bci2000.org/downloads/bin/archive/BCI2000Setup_060630.exe Jun 2006 Build] ([http://bci2000.org/tracproj/changeset/1135 changeset 1135])&lt;br /&gt;
&lt;br /&gt;
[[Category:Distribution]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Accounts&amp;diff=5659</id>
		<title>User Accounts</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Accounts&amp;diff=5659"/>
		<updated>2010-05-14T15:16:47Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Access to BCI2000 is provided to users whose institution has agreed to a Material Transfer Agreement.&lt;br /&gt;
Thus, if your lab is new to BCI2000, you will need to contact [[Gerwin Schalk]] for more information.&lt;br /&gt;
&lt;br /&gt;
Once there exists a user account for your lab, this may be used to create further accounts for users affiliated with your lab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; BCI2000 user accounts, as dicussed on this page, are independent of user accounts for the [http://{{SERVERNAME}}/phpbb BCI2000 Community Forum]. There, anyone interested in BCI2000 may create a user account, regardless of whether his or her institution has signed a Material Transfer Agreement. Also, you will need to create your own Community Forum account in order to post on the forum, even if you already have your own BCI2000 user account.&lt;br /&gt;
&lt;br /&gt;
==Do-it yourself Account Management==&lt;br /&gt;
To simplify account management and provide as many user accounts as necessary, we provide a web interface for account creation.&lt;br /&gt;
Everyone with a BCI2000 user account may create new accounts as he or she needs them, e.g., to supply new team members with individual accounts, provided that the new user is affiliated with the institution that originally agreed to the Material Transfer Agreement.&lt;br /&gt;
&lt;br /&gt;
===Creating a new account===&lt;br /&gt;
Please go to http://{{SERVERNAME}}/useradmin/adduser and log in with your user name and password. From there, follow the instructions to create as many user accounts as you need. As a rule of thumb, we suggest that you create an account for each member of your lab who might submit a BCI2000 bug report.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Upgrading&amp;quot; bciro===&lt;br /&gt;
As a special case, the adduser web interface may also be used to &amp;quot;upgrade&amp;quot; existing read-only accounts. Log in with the existing &#039;&#039;bciro&#039;&#039; account, and create an individual account for yourself.&lt;br /&gt;
&lt;br /&gt;
==Restrictions==&lt;br /&gt;
===Default user rights===&lt;br /&gt;
By default, a new user account will have these rights:&lt;br /&gt;
* Editing the documentation wiki,&lt;br /&gt;
* Submitting bug reports,&lt;br /&gt;
* Read access to the source code.&lt;br /&gt;
If you need additional user rights, e.g. if you would like to [[Contributions:Contents#How_to_contribute|submit a contribution]], please contact an [[administrator]].&lt;br /&gt;
&lt;br /&gt;
===Resetting/recovering a password===&lt;br /&gt;
There is no way to recover a lost password. If you lost your password, please contact an [[administrator]] for a new one.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]] [[Category:Administration]] [[Category:Prerequisites]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:Biosemi2ADC&amp;diff=5552</id>
		<title>Contributions:Biosemi2ADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:Biosemi2ADC&amp;diff=5552"/>
		<updated>2010-03-04T17:14:19Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
Working Version of the BIOSEMI acquisition module.&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
&lt;br /&gt;
When acquiring at SamplingRate less than the hardware sampling rate, crude averaging of the EEG and AIB signals is performed over each batch of samples:  this is better anti-aliasing than the original simple decimation strategy, but still not ideal. Ideally a properly-designed FIR filter would be used prior to decimation.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/Biosemi&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Samuel A. Inverso (samuel.inverso@gmail.com), Yang Zhen, Maria Laura Blefari,  Jeremy Hill, Gerwin Schalk&lt;br /&gt;
&lt;br /&gt;
===Version History===&lt;br /&gt;
Revision 2.2 2010/03/04 gschalk:&lt;br /&gt;
Fixed nasty reinitialization bug. Now, pressing SetConfig more than once works.  There is a remaining problem in the Biosemi2Client code that prevents proper function when initialize is called more than once. As a workaround, we now simply delete and recreate the whole object in the ADC&#039;s Initialize() function. &lt;br /&gt;
&lt;br /&gt;
Revision 2.1   2009/05/27 jhill: &lt;br /&gt;
Bugged trigger signal acquisition fixed and tested. Also added an option to acquire trigger signals simultaneously in one 16-bit channel.&lt;br /&gt;
&lt;br /&gt;
Revision 2.0   2008/11/07  jhill:&lt;br /&gt;
Updated design, including support for an auxiliary Analog Input Box (AIB)&lt;br /&gt;
EEG + AIB acquisition tested---triggers not.&lt;br /&gt;
&lt;br /&gt;
Revision 1.2   2008/10/25  Maria Laura Blefari: &lt;br /&gt;
Fixed the ERROR: Mode changed from 4 to 0&lt;br /&gt;
&lt;br /&gt;
Revision 1.1.1 2005/12/14 15:24:15  mellinger: Fixed state name typo in Process().&lt;br /&gt;
&lt;br /&gt;
Revision 1.1   2005/12/12 00:05:24  sinverso&lt;br /&gt;
Initial Revision: Working and tested offline. Not tested in real experiments.&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 960&lt;br /&gt;
*Tested under: 2372&lt;br /&gt;
*Known to compile under: 2372&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires from a Biosemi Act2.&lt;br /&gt;
Version 1.0 tested with a MK1. Versions 1.2 and up tested on a MK2.&lt;br /&gt;
&lt;br /&gt;
EEG channels, Analog Input Box (AIB) channels, and one-bit channels reflecting the digital trigger input states are acquired in sync. &lt;br /&gt;
&lt;br /&gt;
Warning: If TriggerChList is empty, the trigger values will not be saved in the data files and are not recoverable.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Copy the Labview_DLL.dll to the prog directory for the module to work.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
As of version 2.0 (svn revision 2189) the old parameters &#039;&#039;&#039;PostFixTriggers&#039;&#039;&#039; and &#039;&#039;&#039;TriggerScaleMultiplier&#039;&#039;&#039; have been removed. The functionality of the former is replaced by &#039;&#039;&#039;TriggerChList&#039;&#039;&#039; and the latter can be simulated by setting the corresponding elements of &#039;&#039;&#039;SourceChGain&#039;&#039;&#039; accordingly.&lt;br /&gt;
&lt;br /&gt;
===EEGChlist===&lt;br /&gt;
A list of (one-based) indices to the EEG channels to be acquired.  If there are n indices in this list, then the first n channels will be EEG channels.&lt;br /&gt;
&lt;br /&gt;
===AIBChList===&lt;br /&gt;
A list of indices (each in the range 1 through 32 inclusive) indicating which Analog Input Box channels are to be acquired. By default, none are acquired. AIB channels are postfixed immediately following the EEG channels.&lt;br /&gt;
&lt;br /&gt;
===TriggerChList===&lt;br /&gt;
The old &#039;&#039;&#039;PostfixTriggers&#039;&#039;&#039; parameter has been replaced by this, a list of indices (each in the range 1 through 16 inclusive) indicating which one-bit trigger channels to postfix after the EEG and AIB channels.  By default, all 16 are postfixed (for legacy compatibility).&lt;br /&gt;
&lt;br /&gt;
Instead of a list, you may alternatively supply a single 0: this means &amp;quot;acquire all triggers simultaneously in one 16-bit channel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
===BatteryLow===&lt;br /&gt;
Set to 1 when hardware reports low battery state.&lt;br /&gt;
===MODE===&lt;br /&gt;
The mode corresponding to the one on the front of the Biosemi box.&lt;br /&gt;
&lt;br /&gt;
===MK2===&lt;br /&gt;
Set to 1 when connected to an MK2.&lt;br /&gt;
&lt;br /&gt;
&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>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:Biosemi2ADC&amp;diff=5551</id>
		<title>Contributions:Biosemi2ADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:Biosemi2ADC&amp;diff=5551"/>
		<updated>2010-03-04T17:13:57Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Synopsis==&lt;br /&gt;
Working Version of the BIOSEMI acquisition module.&lt;br /&gt;
&lt;br /&gt;
===Known Issues===&lt;br /&gt;
&lt;br /&gt;
When acquiring at SamplingRate less than the hardware sampling rate, crude averaging of the EEG and AIB signals is performed over each batch of samples:  this is better anti-aliasing than the original simple decimation strategy, but still not ideal. Ideally a properly-designed FIR filter would be used prior to decimation.&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/Biosemi&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
===Authors===&lt;br /&gt;
Samuel A. Inverso (samuel.inverso@gmail.com), Yang Zhen, Maria Laura Blefari,  Jeremy Hill, Gerwin Schalk&lt;br /&gt;
&lt;br /&gt;
===Version History===&lt;br /&gt;
Revision 2.2 2010/03/24 gschalk:&lt;br /&gt;
Fixed nasty reinitialization bug. Now, pressing SetConfig more than once works.  There is a remaining problem in the Biosemi2Client code that prevents proper function when initialize is called more than once. As a workaround, we now simply delete and recreate the whole object in the ADC&#039;s Initialize() function. &lt;br /&gt;
&lt;br /&gt;
Revision 2.1   2009/05/27 jhill: &lt;br /&gt;
Bugged trigger signal acquisition fixed and tested. Also added an option to acquire trigger signals simultaneously in one 16-bit channel.&lt;br /&gt;
&lt;br /&gt;
Revision 2.0   2008/11/07  jhill:&lt;br /&gt;
Updated design, including support for an auxiliary Analog Input Box (AIB)&lt;br /&gt;
EEG + AIB acquisition tested---triggers not.&lt;br /&gt;
&lt;br /&gt;
Revision 1.2   2008/10/25  Maria Laura Blefari: &lt;br /&gt;
Fixed the ERROR: Mode changed from 4 to 0&lt;br /&gt;
&lt;br /&gt;
Revision 1.1.1 2005/12/14 15:24:15  mellinger: Fixed state name typo in Process().&lt;br /&gt;
&lt;br /&gt;
Revision 1.1   2005/12/12 00:05:24  sinverso&lt;br /&gt;
Initial Revision: Working and tested offline. Not tested in real experiments.&lt;br /&gt;
&lt;br /&gt;
===Source Code Revisions===&lt;br /&gt;
*Initial development: 960&lt;br /&gt;
*Tested under: 2372&lt;br /&gt;
*Known to compile under: 2372&lt;br /&gt;
*Broken since: --&lt;br /&gt;
&lt;br /&gt;
==Functional Description==&lt;br /&gt;
Acquires from a Biosemi Act2.&lt;br /&gt;
Version 1.0 tested with a MK1. Versions 1.2 and up tested on a MK2.&lt;br /&gt;
&lt;br /&gt;
EEG channels, Analog Input Box (AIB) channels, and one-bit channels reflecting the digital trigger input states are acquired in sync. &lt;br /&gt;
&lt;br /&gt;
Warning: If TriggerChList is empty, the trigger values will not be saved in the data files and are not recoverable.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Copy the Labview_DLL.dll to the prog directory for the module to work.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
As of version 2.0 (svn revision 2189) the old parameters &#039;&#039;&#039;PostFixTriggers&#039;&#039;&#039; and &#039;&#039;&#039;TriggerScaleMultiplier&#039;&#039;&#039; have been removed. The functionality of the former is replaced by &#039;&#039;&#039;TriggerChList&#039;&#039;&#039; and the latter can be simulated by setting the corresponding elements of &#039;&#039;&#039;SourceChGain&#039;&#039;&#039; accordingly.&lt;br /&gt;
&lt;br /&gt;
===EEGChlist===&lt;br /&gt;
A list of (one-based) indices to the EEG channels to be acquired.  If there are n indices in this list, then the first n channels will be EEG channels.&lt;br /&gt;
&lt;br /&gt;
===AIBChList===&lt;br /&gt;
A list of indices (each in the range 1 through 32 inclusive) indicating which Analog Input Box channels are to be acquired. By default, none are acquired. AIB channels are postfixed immediately following the EEG channels.&lt;br /&gt;
&lt;br /&gt;
===TriggerChList===&lt;br /&gt;
The old &#039;&#039;&#039;PostfixTriggers&#039;&#039;&#039; parameter has been replaced by this, a list of indices (each in the range 1 through 16 inclusive) indicating which one-bit trigger channels to postfix after the EEG and AIB channels.  By default, all 16 are postfixed (for legacy compatibility).&lt;br /&gt;
&lt;br /&gt;
Instead of a list, you may alternatively supply a single 0: this means &amp;quot;acquire all triggers simultaneously in one 16-bit channel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
===BatteryLow===&lt;br /&gt;
Set to 1 when hardware reports low battery state.&lt;br /&gt;
===MODE===&lt;br /&gt;
The mode corresponding to the one on the front of the Biosemi box.&lt;br /&gt;
&lt;br /&gt;
===MK2===&lt;br /&gt;
Set to 1 when connected to an MK2.&lt;br /&gt;
&lt;br /&gt;
&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>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=5453</id>
		<title>User Reference:gUSBampADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=5453"/>
		<updated>2009-10-15T15:10:13Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* FilterLowPass */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;gUSBampADC&#039;&#039; filter acquires data from any number (tested up to four) &#039;&#039;g.USBamp&#039;&#039; EEG amplifiers. &lt;br /&gt;
&#039;&#039;g.USBamp&#039;&#039; is an amplifier/digitizer combination from g.tec medical engineering GmbH/Guger Technologies OEG (http://www.gtec.at). &lt;br /&gt;
Support for this device in BCI2000 consists of two components: A BCI2000-compatible Source Module (&#039;&#039;gUSBamp.exe&#039;&#039;) and a &lt;br /&gt;
command-line tool (&#039;&#039;USBampgetinfo&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
===g.USBamp Hardware===&lt;br /&gt;
The USBamp consists of 16 independent 24-bit A/D converters that can sample at &lt;br /&gt;
up to 38.4kHz per channel. Because there is one A/D converter for each channel, &lt;br /&gt;
one particular sample is digitized at the exact same time for each channel. This &lt;br /&gt;
is unlike with traditional A/D converter boards that only have one A/D &lt;br /&gt;
converter. BCI2000 has a feature that can align samples in time (parameter &lt;br /&gt;
[[User Reference:AlignmentFilter#AlignChannels|AlignChannels]]).&lt;br /&gt;
Because this feature is not needed in conjunction with the USBamp, it needs to be turned off (i.e., &#039;&#039;AlignChannels&#039;&#039; needs to be 0).&lt;br /&gt;
&lt;br /&gt;
====Drivers====&lt;br /&gt;
With the release of the Version 3.0 g.USBamp, there is now a small problem with the gUSBamp.dll included in BCI2000.  The DLL included with BCI2000 was intended to be used with g.USBamp Version 2.0 hardware.  If Version 3.0 hardware is used with the current BCI2000 distribution, the gUSBampADC module will default to using the Version 2.0 DLL which will not function.&lt;br /&gt;
&lt;br /&gt;
Drivers come with the g.USBamp hardware - the correct drivers to match the version of the hardware.  If the installer is used to install the drivers for the g.USBamp, it will also place the g.USBamp DLL into your &amp;lt;tt&amp;gt;WINDOWS/system32&amp;lt;/tt&amp;gt; folder.  If the DLL in &amp;lt;tt&amp;gt;BCI2000/prog&amp;lt;/tt&amp;gt; is deleted, the DLL appropriate for use with your g.USBamp hardware should be used.&lt;br /&gt;
&lt;br /&gt;
In short, in order to make Version 3.0 amps work with the current BCI2000 distribution, simply delete the &amp;lt;tt&amp;gt;gUSBamp.dll&amp;lt;/tt&amp;gt; file from your &amp;lt;tt&amp;gt;BCI2000/prog&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
Here is a grid of what driver/amp/dll combinations work:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Version 2.0 amp&#039;&#039;&#039;&lt;br /&gt;
|2.0 DLL&lt;br /&gt;
|3.0 DLL&lt;br /&gt;
|-&lt;br /&gt;
|2.0 Driver&lt;br /&gt;
|Works&lt;br /&gt;
|Works&lt;br /&gt;
|-&lt;br /&gt;
|3.0 Driver&lt;br /&gt;
|Does Not Work&lt;br /&gt;
|Does Not Work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Version 3.0 amp&#039;&#039;&#039;&lt;br /&gt;
|2.0 DLL&lt;br /&gt;
|3.0 DLL&lt;br /&gt;
|-&lt;br /&gt;
|2.0 Driver&lt;br /&gt;
|Does Not Work&lt;br /&gt;
|Does Not Work&lt;br /&gt;
|-&lt;br /&gt;
|3.0 Driver&lt;br /&gt;
|Does Not Work&lt;br /&gt;
|Works&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;gUSBampADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===DeviceIDMaster===&lt;br /&gt;
Serial number (e.g., UA-2007.01.01) of the master device. &lt;br /&gt;
If you only have one device, this parameter has to equal &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
If you have more then one device, then this parameter represents the serial number of the device whose SYNC goes to the slaves, i.e., the only device that has a cable connected at SYNC OUT, but none connected to SYNC IN. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers (e.g., UA-2007.01.01) of all devices.&lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===FilterEnabled===&lt;br /&gt;
Choose 1 if you want a pass band filter, and 0 if you don&#039;t.&lt;br /&gt;
The gUSBamp is a DC amplifier and thus you most likely will want a pass band filter.&lt;br /&gt;
Please note that, because the g.USBamp internally has a 5kHz antialiasing filter and always samples with 38.4kHz, you DO NOT need to enable any filter if you do not want.&lt;br /&gt;
You will never experience aliasing.&lt;br /&gt;
&lt;br /&gt;
===FilterHighPass===&lt;br /&gt;
High pass frequency for pass band. &lt;br /&gt;
You need to query the amp for possible values. &lt;br /&gt;
See description of the [[#The USBampgetinfo Command Line Tool|USBampgetinfo]] tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterLowPass===&lt;br /&gt;
Low pass frequency for pass band.&lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterModelOrder===&lt;br /&gt;
Model order for passband filter. &lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterType===&lt;br /&gt;
Type of passband filter:&lt;br /&gt;
* 1=CHEBYSHEV, &lt;br /&gt;
* 2=BUTTERWORTH.&lt;br /&gt;
&lt;br /&gt;
===NotchEnabled===&lt;br /&gt;
Choose 1 if you want a notch filter, and 0 if you don&#039;t.&lt;br /&gt;
&lt;br /&gt;
===NotchHighPass===&lt;br /&gt;
Similar to FilterHighPass.&lt;br /&gt;
&lt;br /&gt;
===NotchLowPass===&lt;br /&gt;
Similar to FilterLowPass.&lt;br /&gt;
&lt;br /&gt;
===NotchModelOrder===&lt;br /&gt;
Similar to FilterModelOrder.&lt;br /&gt;
&lt;br /&gt;
===NotchType===&lt;br /&gt;
Similar to FilterType.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) would be update 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sampling rate of all connected USBamps. &lt;br /&gt;
If one wants to use a bandpass or a notch filter, there needs to be a filter configuration for that particular sampling rate (see the section on the &#039;&#039;[USBampgetinfo]&#039;&#039; tool). (Guger Technologies can provide you with a new driver configuration file if you need a different filter.)&lt;br /&gt;
&lt;br /&gt;
The USBamp supports the following sampling rates: 32, 64, 128, 256, 512, 600, 1200, 2400, 4800, 9600, 19200, and 38400 Hz.  All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. For example, at 38400 Hz, 4 amplifiers (64 channels), and a system update of 30 Hz, the computer would have to draw more than 73 million lines per second in the Source display!&lt;br /&gt;
&lt;br /&gt;
===SignalType===       &lt;br /&gt;
Defines the data type of the stored signal samples (int16 or float32).&lt;br /&gt;
If the data type is int16, signal samples (which are produced by the amplifier in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;) are converted back into virtual A/D units (see Data Storage section below). If the data type is float32, the signals are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
In this case, SourceChOffset should be 0, and SourceChGain should be&lt;br /&gt;
1 (since the conversion factor from &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1).&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===SourceChList===&lt;br /&gt;
The list of channels that should be acquired from each device.&lt;br /&gt;
The total number of channels listed should correspond to &#039;&#039;SourceCh&#039;&#039;. For more than one device, &#039;&#039;SourceChDevices&#039;&#039; determines how the &#039;&#039;SourceChList&#039;&#039; values are mapped to each device. For example if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8 8&#039; and &#039;&#039;SourceChList&#039;&#039; = &#039;1 2 3 4 13 14 15 16 5 6 7 8 9 10 11 12&#039;, then channels 1-4 and 13-16 will be acquired on the first device, and channels 5-12 will be acquired on the second device. These channels will be saved in the data file as 16 contiguous channels.&lt;br /&gt;
The order of channels does not matter; i.e., &#039;1 2 3 4&#039; is the same as &#039;2 3 1 4&#039;. The channels are always in ascending order on a single device.&lt;br /&gt;
Channels may not be listed twice on a single device; e.g., entering &#039;1 2 3 4 5 6 7 1&#039; if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8&#039; will result in an error.&lt;br /&gt;
If this parameter is left blank (the default), then all channels are acquired on all devices.&lt;br /&gt;
&lt;br /&gt;
===DigitalInput===&lt;br /&gt;
Turn on digital input. &lt;br /&gt;
If turned on, the last sampled channel on each amplifier will contain sampled values of digital input 0 on the DIGITAL I/O input block on the back of the device.&lt;br /&gt;
For example, if &#039;&#039;SourceCh&#039;&#039; is 8, then channels 1-7 will represent analog inputs, and channel 8 will represent the digital input. &lt;br /&gt;
Thus, if DigitalInput is turned on, &#039;&#039;SourceCh&#039;&#039; and &#039;&#039;SourceChDevices&#039;&#039; may be a maximum of 17.&lt;br /&gt;
&lt;br /&gt;
===DigitalOutput===&lt;br /&gt;
Turn on digital output.&lt;br /&gt;
If turned on, the digital output channel 0 is set low for the duration of data acquisition, and set high at the end. This is primarily used for the BCI2000 Certification process, but may also be employed for other purposes, such as synchronizing acquisition with an external device.&lt;br /&gt;
&lt;br /&gt;
===DigitalOutputEx===&lt;br /&gt;
&#039;&#039;&#039;New in Version 3.0&#039;&#039;&#039;&lt;br /&gt;
If an expression is put here, digital output 1 will be set high whenever this expression evaluates true (nonzero) and low when the expression evaluates false (zero).  Boolean expressions work well for this ( ex. &amp;lt;tt&amp;gt;( ( StimulusCode == 0 ) &amp;amp;&amp;amp; Running )&amp;lt;/tt&amp;gt; ).&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
If set to &#039;&#039;analog signal acquisition&#039;&#039;, the g.USBamp records analog signal voltages (default). If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a sine wave test signal generated by the g.USBamp (which can be used to verify correct system calibration). &lt;br /&gt;
If set to &#039;&#039;Impedance&#039;&#039;, regular analog signal acquisition is preceded by an impedance test. &lt;br /&gt;
This impedance test reports input impedances for each channel in kOhms. &lt;br /&gt;
In impedance mode, if the ground and reference is connected in the amp internally (using the &#039;&#039;CommonGround&#039;&#039; and &#039;&#039;CommonReference&#039;&#039; parameters), then you need to connect the ground and reference to block 4.&lt;br /&gt;
&lt;br /&gt;
===CommonGround===&lt;br /&gt;
This parameter determines whether the g.USBamp internally connects the GND inputs from all blocks together.&lt;br /&gt;
If enabled (default), then the signal ground only needs to be connected to one input block, e.g., block 1. &lt;br /&gt;
Otherwise, all GND inputs need to be externally connected.&lt;br /&gt;
&lt;br /&gt;
===CommonReference===&lt;br /&gt;
The same as &#039;&#039;CommonGround&#039;&#039;, except for the signal reference.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
Unlike other systems, the USBamp is a DC amplifier system that digitizes at 24 bit. &lt;br /&gt;
Bandpass and notch filtering is performed on the digitized samples, resulting in floating point signal samples in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
BCI2000 currently supports signed 16 bit integers and floating point numbers for its data storage.&lt;br /&gt;
If &#039;&#039;SignalType&#039;&#039; is set to int16, the floating point values have to be converted back into integers before they can be stored and transmitted to Signal Processing.&lt;br /&gt;
This is done by the following transformation: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{sample}_\mathrm{stored}\mathrm{(A/D\,units)}=\frac{\mathrm{sample}_\mathrm{acquired}(\mu V)}\mathrm{SourceChGain}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with &lt;br /&gt;
any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from &lt;br /&gt;
each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &lt;br /&gt;
&#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32,&lt;br /&gt;
data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be&lt;br /&gt;
a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is&lt;br /&gt;
1.0 for each channel).&lt;br /&gt;
&lt;br /&gt;
Still, when values other than 0 and 1 are specified, a consistent data file will be produced, i.e. values will be transformed before they are written to the file, such that applying SourceChOffset and SourceChGain will reproduce the original values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;USBampgetinfo&#039;&#039; Command Line Tool===&lt;br /&gt;
This command line tool displays all connected USBamps, including their serial &lt;br /&gt;
number and the USB port that they connect to. Further, this tool reads, for the &lt;br /&gt;
first of the connected amplifiers, all supported bandpass and notch filter &lt;br /&gt;
configurations. Thus, this tool can be used to determine which filters can be &lt;br /&gt;
used for a particular sampling frequency within BCI2000. The following is an &lt;br /&gt;
example screen output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*******************************************&lt;br /&gt;
BCI2000 Information Tool for g.USBamp&lt;br /&gt;
*******************************************&lt;br /&gt;
(C)2004 Gerwin Schalk&lt;br /&gt;
	 Wadsworth Center&lt;br /&gt;
	 New York State Department of Health&lt;br /&gt;
	 Albany, NY, USA&lt;br /&gt;
*******************************************&lt;br /&gt;
Amp found at USB address 1 (S/N: UA-200X.XX.XX)&lt;br /&gt;
Printing info for first amp (USB address 1)&lt;br /&gt;
&lt;br /&gt;
Available bandpass filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000|  0.10 |    0.0 |   32 |  8 | 1&lt;br /&gt;
001|  1.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
002|  2.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
003|  5.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
004|  0.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
005|  0.01 |   15.0 |   32 |  8 | 1&lt;br /&gt;
006|  0.10 |   15.0 |   32 |  8 | 1&lt;br /&gt;
007|  0.50 |   15.0 |   32 |  8 | 1&lt;br /&gt;
008|  2.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
009|  0.10 |    0.0 |   64 |  8 | 1&lt;br /&gt;
010|  1.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
011|  2.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
012|  5.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
013|  0.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
014|  0.01 |   30.0 |   64 |  8 | 1&lt;br /&gt;
015|  0.10 |   30.0 |   64 |  8 | 1&lt;br /&gt;
016|  0.50 |   30.0 |   64 |  8 | 1&lt;br /&gt;
017|  2.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
018|  0.10 |    0.0 |  128 |  8 | 1&lt;br /&gt;
019|  1.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
020|  2.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
021|  5.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
022|  0.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
023|  0.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
024|  0.01 |   30.0 |  128 |  8 | 1&lt;br /&gt;
025|  0.01 |   60.0 |  128 |  8 | 1&lt;br /&gt;
026|  0.10 |   30.0 |  128 |  8 | 1&lt;br /&gt;
027|  0.10 |   60.0 |  128 |  8 | 1&lt;br /&gt;
028|  0.50 |   30.0 |  128 |  8 | 1&lt;br /&gt;
029|  0.50 |   60.0 |  128 |  8 | 1&lt;br /&gt;
030|  2.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
031|  2.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
032|  0.10 |    0.0 |  256 |  8 | 1&lt;br /&gt;
033|  1.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
034|  2.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
035|  5.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
036|  0.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
037|  0.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
038|  0.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
039|  0.01 |   30.0 |  256 |  6 | 1&lt;br /&gt;
040|  0.01 |   60.0 |  256 |  8 | 1&lt;br /&gt;
041|  0.01 |  100.0 |  256 |  8 | 1&lt;br /&gt;
042|  0.10 |   30.0 |  256 |  8 | 1&lt;br /&gt;
043|  0.10 |   60.0 |  256 |  8 | 1&lt;br /&gt;
044|  0.10 |  100.0 |  256 |  8 | 1&lt;br /&gt;
045|  0.50 |   30.0 |  256 |  8 | 1&lt;br /&gt;
046|  0.50 |   60.0 |  256 |  8 | 1&lt;br /&gt;
047|  0.50 |  100.0 |  256 |  8 | 1&lt;br /&gt;
048|  2.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
049|  2.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
050|  2.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
051|  5.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
052|  5.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
053|  5.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
054|  0.10 |    0.0 |  512 |  8 | 1&lt;br /&gt;
055|  1.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
056|  2.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
057|  5.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
058|  0.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
059|  0.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
060|  0.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
061|  0.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
062|  0.01 |   30.0 |  512 |  6 | 1&lt;br /&gt;
063|  0.01 |   60.0 |  512 |  6 | 1&lt;br /&gt;
064|  0.01 |  100.0 |  512 |  6 | 1&lt;br /&gt;
065|  0.01 |  200.0 |  512 |  8 | 1&lt;br /&gt;
066|  0.10 |   30.0 |  512 |  8 | 1&lt;br /&gt;
067|  0.10 |   60.0 |  512 |  8 | 1&lt;br /&gt;
068|  0.10 |  100.0 |  512 |  8 | 1&lt;br /&gt;
069|  0.10 |  200.0 |  512 |  8 | 1&lt;br /&gt;
070|  0.50 |   30.0 |  512 |  8 | 1&lt;br /&gt;
071|  0.50 |   60.0 |  512 |  8 | 1&lt;br /&gt;
072|  0.50 |  100.0 |  512 |  8 | 1&lt;br /&gt;
073|  0.50 |  200.0 |  512 |  8 | 1&lt;br /&gt;
074|  2.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
075|  2.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
076|  2.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
077|  2.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
078|  5.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
079|  5.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
080|  5.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
081|  5.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
082|  0.10 |    0.0 |  600 |  8 | 1&lt;br /&gt;
083|  1.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
084|  2.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
085|  5.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
086|  0.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
087|  0.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
088|  0.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
089|  0.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
090|  0.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
091|  0.01 |   60.0 |  600 |  6 | 1&lt;br /&gt;
092|  0.01 |  100.0 |  600 |  6 | 1&lt;br /&gt;
093|  0.01 |  200.0 |  600 |  6 | 1&lt;br /&gt;
094|  0.01 |  250.0 |  600 |  8 | 1&lt;br /&gt;
095|  0.10 |   60.0 |  600 |  8 | 1&lt;br /&gt;
096|  0.10 |  100.0 |  600 |  8 | 1&lt;br /&gt;
097|  0.10 |  200.0 |  600 |  8 | 1&lt;br /&gt;
098|  0.10 |  250.0 |  600 |  8 | 1&lt;br /&gt;
099|  0.50 |   30.0 |  600 |  8 | 1&lt;br /&gt;
100|  0.50 |   60.0 |  600 |  8 | 1&lt;br /&gt;
101|  0.50 |  100.0 |  600 |  8 | 1&lt;br /&gt;
102|  0.50 |  200.0 |  600 |  8 | 1&lt;br /&gt;
103|  0.50 |  250.0 |  600 |  8 | 1&lt;br /&gt;
104|  2.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
105|  2.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
106|  2.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
107|  2.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
108|  2.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
109|  5.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
110|  5.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
111|  5.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
112|  5.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
113|  5.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
114|  0.10 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
115|  1.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
116|  2.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
117|  5.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
118|  0.00 |   30.0 | 1200 |  8 | 1&lt;br /&gt;
119|  0.00 |   60.0 | 1200 |  8 | 1&lt;br /&gt;
120|  0.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
121|  0.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
122|  0.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
123|  0.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
124|  0.01 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
125|  0.01 |  200.0 | 1200 |  6 | 1&lt;br /&gt;
126|  0.01 |  250.0 | 1200 |  6 | 1&lt;br /&gt;
127|  0.01 |  500.0 | 1200 |  6 | 1&lt;br /&gt;
128|  0.10 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
129|  0.10 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
130|  0.10 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
131|  0.10 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
132|  0.50 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
133|  0.50 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
134|  0.50 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
135|  0.50 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
136|  2.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
137|  2.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
138|  2.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
139|  2.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
140|  5.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
141|  5.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
142|  5.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
143|  5.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
144|  0.10 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
145|  1.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
146|  2.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
147|  5.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
148|  0.00 |   30.0 | 2400 |  8 | 1&lt;br /&gt;
149|  0.00 |   60.0 | 2400 |  8 | 1&lt;br /&gt;
150|  0.00 |  100.0 | 2400 |  8 | 1&lt;br /&gt;
151|  0.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
152|  0.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
153|  0.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
154|  0.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
155|  0.01 |  200.0 | 2400 |  4 | 1&lt;br /&gt;
156|  0.01 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
157|  0.01 |  500.0 | 2400 |  6 | 1&lt;br /&gt;
158|  0.01 | 1000.0 | 2400 |  6 | 1&lt;br /&gt;
159|  0.10 |  200.0 | 2400 |  6 | 1&lt;br /&gt;
160|  0.10 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
161|  0.10 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
162|  0.10 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
163|  0.50 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
164|  0.50 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
165|  0.50 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
166|  0.50 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
167|  2.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
168|  2.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
169|  2.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
170|  2.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
171|  5.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
172|  5.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
173|  5.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
174|  5.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
175|  0.10 |    0.0 | 4800 |  6 | 1&lt;br /&gt;
176|  1.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
177|  2.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
178|  5.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
179|  0.00 |   30.0 | 4800 |  8 | 1&lt;br /&gt;
180|  0.00 |   60.0 | 4800 |  8 | 1&lt;br /&gt;
181|  0.00 |  100.0 | 4800 |  8 | 1&lt;br /&gt;
182|  0.00 |  200.0 | 4800 |  8 | 1&lt;br /&gt;
183|  0.00 |  250.0 | 4800 |  8 | 1&lt;br /&gt;
184|  0.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
185|  0.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
186|  0.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
187|  0.01 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
188|  0.01 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
189|  0.01 | 2000.0 | 4800 |  6 | 1&lt;br /&gt;
190|  0.10 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
191|  0.10 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
192|  0.10 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
193|  0.50 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
194|  0.50 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
195|  0.50 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
196|  2.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
197|  2.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
198|  2.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
199|  5.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
200|  5.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
201|  5.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
&lt;br /&gt;
Available notch filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000| 48.00 |   52.0 |  128 |  4 | 1&lt;br /&gt;
001| 58.00 |   62.0 |  128 |  4 | 1&lt;br /&gt;
002| 48.00 |   52.0 |  256 |  4 | 1&lt;br /&gt;
003| 58.00 |   62.0 |  256 |  4 | 1&lt;br /&gt;
004| 48.00 |   52.0 |  512 |  4 | 1&lt;br /&gt;
005| 58.00 |   62.0 |  512 |  4 | 1&lt;br /&gt;
006| 48.00 |   52.0 |  600 |  4 | 1&lt;br /&gt;
007| 58.00 |   62.0 |  600 |  4 | 1&lt;br /&gt;
008| 48.00 |   52.0 | 1200 |  4 | 1&lt;br /&gt;
009| 58.00 |   62.0 | 1200 |  4 | 1&lt;br /&gt;
010| 48.00 |   52.0 | 2400 |  4 | 1&lt;br /&gt;
011| 58.00 |   62.0 | 2400 |  4 | 1&lt;br /&gt;
012| 48.00 |   52.0 | 4800 |  4 | 1&lt;br /&gt;
013| 58.00 |   62.0 | 4800 |  4 | 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:DataIOFilter]], [[Programming Reference:GenericADC Class]]&lt;br /&gt;
[[Category:Filters]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=4755</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=4755"/>
		<updated>2008-12-04T16:24:34Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
== Getting Started with BCI2000 ==&lt;br /&gt;
&lt;br /&gt;
* [[Creating a User Account|Create a User Account]],&lt;br /&gt;
* Download [[BCI2000 Binaries]],&lt;br /&gt;
* Take the introductory [[User Tutorial:BCI2000 Tour|BCI2000 Tour]]&amp;lt;br /&amp;gt;to learn about using BCI2000,&lt;br /&gt;
* Get access to the [[Programming Reference:BCI2000 Source Code|BCI2000 Source Code]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Tutorials==&lt;br /&gt;
Tutorial guides to your first successful experiments:&lt;br /&gt;
*[[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]],&lt;br /&gt;
*[[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]].&lt;br /&gt;
Introductions to data analysis and interpretation:&lt;br /&gt;
*[[User Tutorial:Data Analysis|Data Analysis Tutorials]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Reference Manual==&lt;br /&gt;
The [[User Reference:Contents|User Reference Manual]] describes all details&amp;lt;br /&amp;gt;of system configuration and usage:&lt;br /&gt;
*Online System Reference,&lt;br /&gt;
*Filters and Parameters,&lt;br /&gt;
*BCI2000 Tools Reference.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technical Reference==&lt;br /&gt;
The [[Technical Reference:Contents|Technical Reference Manual]] contains information on&lt;br /&gt;
*BCI2000 Online System Design,&lt;br /&gt;
*Transmission Protocol Definition,&lt;br /&gt;
*External Interfaces.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming Reference==&lt;br /&gt;
The [[Programming Reference:Contents|Programming Reference]] provides developer information:&lt;br /&gt;
*Accessing and Compiling the Source Code,&lt;br /&gt;
*Filter Programming Interface,&lt;br /&gt;
*Programming Tutorials.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributions==&lt;br /&gt;
[[Contributions:Contents|Contributions]] from the BCI2000 Community:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Data Acquisition, Signal Processing, Application Modules;&lt;br /&gt;
*Data Analysis Tools.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
* [http://{{SERVERNAME}}/phpbb BCI2000 Community Forum],&lt;br /&gt;
* [http://{{SERVERNAME}}/tracproj/newticket Submit a Bug Report]  (make sure you log in),&lt;br /&gt;
* [[BCI2000 Glossary]]&amp;lt;br /&amp;gt;Explanation of terms specific to BCI2000.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:white; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==BCI2000 Publications==&lt;br /&gt;
* [http://{{SERVERNAME}}/downloads/doc/paper.pdf G. Schalk, D.J. McFarland, T. Hinterberger, N. Birbaumer, and J.R. Wolpaw: &#039;&#039;BCI2000: A General-Purpose Brain-Computer Interface (BCI) System&#039;&#039;, IEEE Trans Biomed Eng, 51(6), June 2004.]&lt;br /&gt;
* J. Mellinger, G. Schalk: &#039;&#039;BCI2000: A General-Purpose Software Platform for BCI Research,&#039;&#039; In: G. Dornhege, J. del R. Millán, T. Hinterberger, D.J. McFarland, K.-R. Müller (eds.), &#039;&#039;Toward Brain-Computer Interfacing,&#039;&#039; MIT Press, 2007.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Programming_Tutorial:Working_with_the_FieldTrip_buffer&amp;diff=4754</id>
		<title>Programming Tutorial:Working with the FieldTrip buffer</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Programming_Tutorial:Working_with_the_FieldTrip_buffer&amp;diff=4754"/>
		<updated>2008-12-03T11:44:00Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Getting the data in Matlab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the user-contributed Signal Processing filters is the &amp;lt;em&amp;gt;FieldTripBuffer&amp;lt;/em&amp;gt;. The  FieldTripBuffer allows you to use BCI2000 in conjunction with MATLAB, just as with the &amp;lt;em&amp;gt;MatlabFilter&amp;lt;/em&amp;gt;. The difference between the two interfaces to MATLAB is that the MatlabFilter causes some MATLAB code to be executed in the BCI2000 pipeline, i.e. BCI2000 stays in control over the timing and the MATLAB session only sees a small fragment of the data. That also forces you to write your MATLAB code to use recursive/incremental updating schemes. The FieldTripBuffer interface to MATLAB allows you to control the timing from within MATLAB and read arbitrary sections of data from the ongoing data stream as if it were a continuously growing file, giving more flexibility in the MATLAB code that you can employ. &lt;br /&gt;
&lt;br /&gt;
The advantage of the FieldTripBuffer interface is that you have all control in MATLAB that you are used to. You can write your MATLAB code for offline-analysis (i.e. reading data from a file) and apply exactly the same code to online analysis (i.e. reading from BCI2000). Of course for the online analysis to make some sense, your analysis script has to be meaningful and has to work with relatively small data fragments (e.g. one second or less), otherwise the MATLAB code would not really run in real-time. Another interesting feature is that in MATLAB you can use the profiler (type &amp;quot;help profile&amp;quot;) to determine which parts of your code take a long time to execute and speed those parts up. &lt;br /&gt;
&lt;br /&gt;
The remainder of this page gives an example of how to get the data into MATLAB, plot the data using standard MATLAB code, and how to close the BCI loop by writing an event back to BCI2000. The example below does not do any useful processing, it is up to you to decide how you want to process the data in MATLAB. A number of realtime applications are included in the realtime module of the FieldTrip toolbox. Additional documentation for that can be found on  the FieldTrip website, under &amp;lt;em&amp;gt;development-&amp;gt;realtime&amp;lt;/em&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==Getting the data in Matlab==&lt;br /&gt;
&lt;br /&gt;
The FieldTrip buffer is a multi-threaded and network transparent buffer that allows data to be streamed to it by BCI2000, while at the same time allowing a seperate MATLAB session on the same or another computer to read data from the buffer for analysis. Besides writing the data, BCI2000 also writes the changed status variables as events.&lt;br /&gt;
&lt;br /&gt;
To use the FieldTrip buffer, you start BCI2000 with the FieldTripBuffer as the Signal Processing application. Subsequently you start MATLAB yourself, i.e. your MATLAB session is a normal standalone application. You should have a recent copy of the FieldTrip toolbox installed, or at least a copy of the FieldTrip fileio module. The FieldTrip toolbox and its components are available for download from http://www.ru.nl/neuroimaging/fieldtrip. Please make sure that the correct version of the fileio module is on your MATLAB search path.&lt;br /&gt;
&lt;br /&gt;
Subsequently you can do something like the following code below. You should be able to copy and paste the code into the MATLAB command window and get a real-time updating MATLAB figure with the data from BCI2000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filename = &#039;buffer://localhost:1972&#039;;&lt;br /&gt;
&lt;br /&gt;
% read the header for the first time to determine number of channels and sampling rate&lt;br /&gt;
hdr = read_header(filename, &#039;cache&#039;, true);&lt;br /&gt;
&lt;br /&gt;
count      = 0;&lt;br /&gt;
prevSample = 0&lt;br /&gt;
blocksize  = hdr.Fs;&lt;br /&gt;
chanindx   = 1:hdr.nChans;&lt;br /&gt;
&lt;br /&gt;
while true&lt;br /&gt;
  % determine number of samples available in buffer&lt;br /&gt;
  hdr = read_header(filename, &#039;cache&#039;, true);&lt;br /&gt;
&lt;br /&gt;
  % see whether new samples are available&lt;br /&gt;
  newsamples = (hdr.nSamples*hdr.nTrials-prevSample);&lt;br /&gt;
&lt;br /&gt;
  if newsamples&amp;gt;=blocksize&lt;br /&gt;
&lt;br /&gt;
    % determine the samples to process&lt;br /&gt;
    begsample  = prevSample+1;&lt;br /&gt;
    endsample  = prevSample+blocksize ;&lt;br /&gt;
&lt;br /&gt;
    % remember up to where the data was read&lt;br /&gt;
    prevSample  = endsample;&lt;br /&gt;
    count       = count + 1;&lt;br /&gt;
    fprintf(&#039;processing segment %d from sample %d to %d\n&#039;, count, begsample, endsample);&lt;br /&gt;
&lt;br /&gt;
    % read data segment from buffer&lt;br /&gt;
    dat = read_data(filename, &#039;header&#039;, hdr, &#039;begsample&#039;, begsample, &#039;endsample&#039;, endsample, &#039;chanindx&#039;, chanindx);&lt;br /&gt;
&lt;br /&gt;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
    % subsequently the data can be processed, here it is only plotted&lt;br /&gt;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
    % create a matching time-axis&lt;br /&gt;
    time = (begsample:endsample)/hdr.Fs;&lt;br /&gt;
&lt;br /&gt;
    % plot the data just like a standard FieldTrip raw data strucute&lt;br /&gt;
    plot(time, dat);&lt;br /&gt;
&lt;br /&gt;
    % ensure tight axes&lt;br /&gt;
    xlim([time(1) time(end)]);&lt;br /&gt;
&lt;br /&gt;
    % force Matlab to update the figure&lt;br /&gt;
    drawnow&lt;br /&gt;
&lt;br /&gt;
  end % if new samples available&lt;br /&gt;
end % while true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Closing the loop, writing a control signal from Matlab to BCI2000==&lt;br /&gt;
&lt;br /&gt;
To close the loop, you have to write the control signal back to BCI2000. Since the FieldTrip buffer can only hold raw data, the control signal cannot be written as data. Instead, the control signal is written as an event. This is easily demonstrated if you run the Feedback Demo Task.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_up.type  = &#039;Signal&#039;;&lt;br /&gt;
event_up.value = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_down.type  = &#039;Signal&#039;;&lt;br /&gt;
event_down.value = -1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_null.type  = &#039;Signal&#039;;&lt;br /&gt;
event_null.value = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can write the events to the buffer according to the following example code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filename = &#039;buffer://localhost:1972&#039;;&lt;br /&gt;
&lt;br /&gt;
write_event(filename, event_up);    % ... the cursor will move up ...&lt;br /&gt;
&lt;br /&gt;
write_event(filename, event_down);  % ... the cursor will move down ...&lt;br /&gt;
&lt;br /&gt;
write_event(filename, event_null);  % ... the cursor will stay at a constant value ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The control signal in BCI2000 remains at a constant value as long as you don&#039;t write another event with another control signal.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
[[Contributions:FieldTripBuffer]],&lt;br /&gt;
[[Programming Reference:MatlabFilter]], &lt;br /&gt;
[[User Reference:MatlabFilter]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Signal Processing]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Matlab]]&lt;br /&gt;
[[Category:External Interfaces]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Programming_Tutorial:Working_with_the_FieldTrip_buffer&amp;diff=4753</id>
		<title>Programming Tutorial:Working with the FieldTrip buffer</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Programming_Tutorial:Working_with_the_FieldTrip_buffer&amp;diff=4753"/>
		<updated>2008-12-03T11:43:40Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Closing the loop, writing a control signal from Matlab to BCI2000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the user-contributed Signal Processing filters is the &amp;lt;em&amp;gt;FieldTripBuffer&amp;lt;/em&amp;gt;. The  FieldTripBuffer allows you to use BCI2000 in conjunction with MATLAB, just as with the &amp;lt;em&amp;gt;MatlabFilter&amp;lt;/em&amp;gt;. The difference between the two interfaces to MATLAB is that the MatlabFilter causes some MATLAB code to be executed in the BCI2000 pipeline, i.e. BCI2000 stays in control over the timing and the MATLAB session only sees a small fragment of the data. That also forces you to write your MATLAB code to use recursive/incremental updating schemes. The FieldTripBuffer interface to MATLAB allows you to control the timing from within MATLAB and read arbitrary sections of data from the ongoing data stream as if it were a continuously growing file, giving more flexibility in the MATLAB code that you can employ. &lt;br /&gt;
&lt;br /&gt;
The advantage of the FieldTripBuffer interface is that you have all control in MATLAB that you are used to. You can write your MATLAB code for offline-analysis (i.e. reading data from a file) and apply exactly the same code to online analysis (i.e. reading from BCI2000). Of course for the online analysis to make some sense, your analysis script has to be meaningful and has to work with relatively small data fragments (e.g. one second or less), otherwise the MATLAB code would not really run in real-time. Another interesting feature is that in MATLAB you can use the profiler (type &amp;quot;help profile&amp;quot;) to determine which parts of your code take a long time to execute and speed those parts up. &lt;br /&gt;
&lt;br /&gt;
The remainder of this page gives an example of how to get the data into MATLAB, plot the data using standard MATLAB code, and how to close the BCI loop by writing an event back to BCI2000. The example below does not do any useful processing, it is up to you to decide how you want to process the data in MATLAB. A number of realtime applications are included in the realtime module of the FieldTrip toolbox. Additional documentation for that can be found on  the FieldTrip website, under &amp;lt;em&amp;gt;development-&amp;gt;realtime&amp;lt;/em&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==Getting the data in Matlab==&lt;br /&gt;
&lt;br /&gt;
The FieldTrip buffer is a multi-threaded and network transparent buffer that allows data to be streamed to it by BCI2000, while at the same time allowing a seperate MATLAB session on the same or another computer to read data from the buffer for analysis. Besides writing the data, BCI2000 also writes the changed status variables as events.&lt;br /&gt;
&lt;br /&gt;
To use the FieldTrip buffer, you start BCI2000 with the FieldTripBuffer as the Signal Processing application. Subsequently you start MATLAB yourself, i.e. your MATLAB session is a normal standalone application. You should have a recent copy of the FieldTrip toolbox installed, or at least a copy of the FieldTrip fileio module. The FieldTrip toolbox and its components are available for download from http://www.ru.nl/neuroimaging/fieldtrip. Please make sure that the correct version of the fileio module is on your MATLAB search path.&lt;br /&gt;
&lt;br /&gt;
Subsequently you can do something like the following code belos. You should be able to copy and paste the code into the MATLAB command window and get a real-time updating MATLAB figure with the data from BCI2000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filename = &#039;buffer://localhost:1972&#039;;&lt;br /&gt;
&lt;br /&gt;
% read the header for the first time to determine number of channels and sampling rate&lt;br /&gt;
hdr = read_header(filename, &#039;cache&#039;, true);&lt;br /&gt;
&lt;br /&gt;
count      = 0;&lt;br /&gt;
prevSample = 0&lt;br /&gt;
blocksize  = hdr.Fs;&lt;br /&gt;
chanindx   = 1:hdr.nChans;&lt;br /&gt;
&lt;br /&gt;
while true&lt;br /&gt;
  % determine number of samples available in buffer&lt;br /&gt;
  hdr = read_header(filename, &#039;cache&#039;, true);&lt;br /&gt;
&lt;br /&gt;
  % see whether new samples are available&lt;br /&gt;
  newsamples = (hdr.nSamples*hdr.nTrials-prevSample);&lt;br /&gt;
&lt;br /&gt;
  if newsamples&amp;gt;=blocksize&lt;br /&gt;
&lt;br /&gt;
    % determine the samples to process&lt;br /&gt;
    begsample  = prevSample+1;&lt;br /&gt;
    endsample  = prevSample+blocksize ;&lt;br /&gt;
&lt;br /&gt;
    % remember up to where the data was read&lt;br /&gt;
    prevSample  = endsample;&lt;br /&gt;
    count       = count + 1;&lt;br /&gt;
    fprintf(&#039;processing segment %d from sample %d to %d\n&#039;, count, begsample, endsample);&lt;br /&gt;
&lt;br /&gt;
    % read data segment from buffer&lt;br /&gt;
    dat = read_data(filename, &#039;header&#039;, hdr, &#039;begsample&#039;, begsample, &#039;endsample&#039;, endsample, &#039;chanindx&#039;, chanindx);&lt;br /&gt;
&lt;br /&gt;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
    % subsequently the data can be processed, here it is only plotted&lt;br /&gt;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
    % create a matching time-axis&lt;br /&gt;
    time = (begsample:endsample)/hdr.Fs;&lt;br /&gt;
&lt;br /&gt;
    % plot the data just like a standard FieldTrip raw data strucute&lt;br /&gt;
    plot(time, dat);&lt;br /&gt;
&lt;br /&gt;
    % ensure tight axes&lt;br /&gt;
    xlim([time(1) time(end)]);&lt;br /&gt;
&lt;br /&gt;
    % force Matlab to update the figure&lt;br /&gt;
    drawnow&lt;br /&gt;
&lt;br /&gt;
  end % if new samples available&lt;br /&gt;
end % while true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Closing the loop, writing a control signal from Matlab to BCI2000==&lt;br /&gt;
&lt;br /&gt;
To close the loop, you have to write the control signal back to BCI2000. Since the FieldTrip buffer can only hold raw data, the control signal cannot be written as data. Instead, the control signal is written as an event. This is easily demonstrated if you run the Feedback Demo Task.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_up.type  = &#039;Signal&#039;;&lt;br /&gt;
event_up.value = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_down.type  = &#039;Signal&#039;;&lt;br /&gt;
event_down.value = -1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
event_null.type  = &#039;Signal&#039;;&lt;br /&gt;
event_null.value = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can write the events to the buffer according to the following example code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filename = &#039;buffer://localhost:1972&#039;;&lt;br /&gt;
&lt;br /&gt;
write_event(filename, event_up);    % ... the cursor will move up ...&lt;br /&gt;
&lt;br /&gt;
write_event(filename, event_down);  % ... the cursor will move down ...&lt;br /&gt;
&lt;br /&gt;
write_event(filename, event_null);  % ... the cursor will stay at a constant value ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The control signal in BCI2000 remains at a constant value as long as you don&#039;t write another event with another control signal.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
[[Contributions:FieldTripBuffer]],&lt;br /&gt;
[[Programming Reference:MatlabFilter]], &lt;br /&gt;
[[User Reference:MatlabFilter]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Signal Processing]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Matlab]]&lt;br /&gt;
[[Category:External Interfaces]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=4669</id>
		<title>User Tutorial:BCI2000 Tour</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=4669"/>
		<updated>2008-10-28T18:46:04Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following description is intended to get you started and make you comfortable using BCI2000. It demonstrates the use of BCI2000 without the need for data acquisition hardware. In addition, it will introduce you to some of the most important software components and tools included in the BCI2000 distribution.&lt;br /&gt;
&lt;br /&gt;
==Starting up BCI2000==&lt;br /&gt;
BCI2000 consists of [[Technical Reference:System Design|four programs]] (modules) that need to be started up in a certain order. These modules handle acquisition of brain signals (i.e., Source module), processing of these brain signals (Signal Processing module), user feedback (i.e., User Application module), and the interface to the investigator (i.e., Operator module), respectively. These four modules  can be started using the script (batch) files in the &amp;lt;tt&amp;gt;batch&amp;lt;/tt&amp;gt; directory. Alternatively, there is a [[User Reference:BCI2000Launcher|BCI2000Launcher]] program that allows you to manage BCI2000 module startup using a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
We will begin this introductory tour by double-clicking the file &amp;lt;tt&amp;gt;batch/CursorTask_SignalGenerator.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This will launch the modules required for a simulation of a [[User Tutorial:Introduction to the Mu Rhythm|Mu rhythm BCI session]].&lt;br /&gt;
&lt;br /&gt;
==BCI2000 Help==&lt;br /&gt;
When the [[User Reference:Operator Module|main operator window]] appears, choose &#039;&#039;BCI2000 Help&#039;&#039; from the &#039;&#039;Help&#039;&#039; menu. The Operator module&#039;s help page will be opened in a web browser window. On the left side of the help page, a navigation menu provides access to available BCI2000 documentation.&lt;br /&gt;
&lt;br /&gt;
The BCI2000 help is a local copy of the BCI2000 online documentation wiki and provides a snapshot that corresponds to your version of the BCI2000 executables.&lt;br /&gt;
&lt;br /&gt;
==Loading a Parameter File==&lt;br /&gt;
The parameters for a particular experiment implemented in BCI2000 are stored in [[Technical Reference:Parameter File|parameter files]].&lt;br /&gt;
Before performing an experiment, you will typically load a parameter file that contains subject-specific as well as general configuration information.&lt;br /&gt;
&lt;br /&gt;
In the main window, click the &#039;&#039;Config&#039;&#039; button. A configuration window appears. There, click the &#039;&#039;Load Parameters&#039;&#039; button, which will open up a file chooser dialog. Open &amp;lt;tt&amp;gt;parms/mu_tutorial/MuFeedback.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Entering a Subject ID==&lt;br /&gt;
BCI2000 stores data files in directories with names that are constructed from subject ID and session number.&lt;br /&gt;
&lt;br /&gt;
In the configuration dialog, go to the &#039;&#039;Storage&#039;&#039; tab, and identify the &#039;&#039;DataDirectory&#039;&#039; parameter. This parameter determines the path to the top level data directory, i.e., the directory below which session directories will be created. By default, this parameter is set to &amp;lt;tt&amp;gt;../data&amp;lt;/tt&amp;gt;, a relative path that points to your BCI2000 installation&#039;s &amp;lt;tt&amp;gt;data&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Go to the &#039;&#039;SubjectName&#039;&#039; parameter, and enter an ID such as TEST, or your own initials.&lt;br /&gt;
&lt;br /&gt;
==Parameter Help==&lt;br /&gt;
There is a &amp;quot;Help&amp;quot; button on the right side of the configuration window.&lt;br /&gt;
Click that button, and observe that the mouse cursor turns into a question mark.&lt;br /&gt;
Move the mouse cursor over the &#039;&#039;SubjectName&#039;&#039; parameter label, and press the left mouse button.&lt;br /&gt;
&lt;br /&gt;
A web browser window will open up and show a help page that describes the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
&lt;br /&gt;
==Applying Configuration Parameters==&lt;br /&gt;
Close the configuration dialog by using its close button (the button labeled &amp;quot;X&amp;quot; located on the top right corner of the window). This will accept your parameter changes (there is no &amp;quot;Cancel&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
In the main window, click &#039;&#039;Set Config.&#039;&#039; This will apply the changes in configuration. Specifically, the Operator module sends configuration parameters to the remaining BCI2000 modules. These, in turn, will validate the parameter values to make sure they are appropriate. If all values are appropriate, a signal window will appear that displays simulated EEG. The first time, this window is rather small and is located in the upper left corner of the screen. Please resize and move it to your liking -- its size and position will be preserved across BCI2000 sessions.&lt;br /&gt;
&lt;br /&gt;
In a true BCI session, in which you will be recording signals from the brain, you will use this window to assess the quality of the recorded signals. In this simulation session, you will notice a change in the simulated brain signal when you move your mouse. We will alter use these signal changes to control a cursor on the screen.&lt;br /&gt;
&lt;br /&gt;
When you right-click on the signal window, this will bring up a context menu with particular display options such as increasing/decreasing the number of channels displayed, choosing display colors, applying filters to the signal, etc. (Details are described on the [[User Reference:Operator Module|Operator Module&#039;s reference page]].)&lt;br /&gt;
&lt;br /&gt;
==Performing a Session==&lt;br /&gt;
Once you clicked &#039;&#039;Set Config,&#039;&#039; the &#039;&#039;Start&#039;&#039; button will be active (assuming all parameters have been validated and accepted). Press &amp;quot;Start&amp;quot; to start a simulated feedback session. During the session, you will see a cursor that moves from the left to the right at a constant. You will also see one of two targets highlighted on the right side of the screen. Your task is to move the cursor up or down such that it hits the highlighted target. In simulation mode, you can move this cursor by moving the mouse cursor up and down. In BCI experiments, the subject&#039;s task is to use brain signals, rather than the mouse, to move the cursor.&lt;br /&gt;
&lt;br /&gt;
The period during which the cursor moves from left to right is called a &#039;&#039;trial.&#039;&#039; During operation, a number of trials will follow each other. Many trials make up one experimental &#039;&#039;run,&#039;&#039; where each run usually lasts about 3-5 minutes. When the run is finished, BCI2000 will stop operation on its own, and the &#039;&#039;Start&#039;&#039; button will change to &#039;&#039;Resume.&#039;&#039; At that time, the corresponding data file has been closed. Clicking &#039;&#039;Resume&#039;&#039; each time, you may add as many runs to the current &#039;&#039;Session&#039;&#039; as you like. All runs within a session will be stored as separate files in that session&#039;s data directory.&lt;br /&gt;
&lt;br /&gt;
BCI2000 contains a component that adapts itself to the brain signal&#039;s characteristics (i.e., its mean value and its amount of variation). This component needs to observe the signal for a few trials until it has appropriately adapted to those characteristics. This means that initially you will not feel a correspondence between your actions and the cursor; just stick with it for a few trials, and you will note how control gets more accurate over time. Also, it is important that you place the mouse cursor in a center position at the beginning of each trial, to give you enough space to move into the required direction. Likewise, when a real subject controls the cursor using brain signals, cursor control will only be possible after blindly following instructions for a few trials.&lt;br /&gt;
&lt;br /&gt;
When you have acquired one or more runs, you may quit BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Opening Data Files in [[User Reference:BCI2000Viewer|BCI2000Viewer]]==&lt;br /&gt;
Use Windows Explorer to display the contents of &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001&amp;lt;/tt&amp;gt;, which is the session directory corresponding to your recorded session (in place of &amp;lt;tt&amp;gt;&amp;lt;SubjectName&amp;gt;&amp;lt;/tt&amp;gt;, enter the ID that you used for the &#039;&#039;SubjectName&#039;&#039; parameter).&lt;br /&gt;
In the session directory, single runs correspond to &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files carrying the session&#039;s name, appended with a run number.&lt;br /&gt;
&lt;br /&gt;
To view the content of a data file, open it in the [[User Reference:BCI2000Viewer|BCI2000Viewer]] program provided in &amp;lt;tt&amp;gt;tools/BCI2000Viewer&amp;lt;/tt&amp;gt;. We recommend that you double-click the .dat file in question, and then use &amp;quot;Choose application&amp;quot; to permanently associate BCI2000Viewer with the .dat extension. Alternatively, drag a .dat file (or a link to a .dat file) onto the BCI2000Viewer icon or BCI2000Viewer&#039;s application window. This will display the file&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
==Viewing Event Marker Information==&lt;br /&gt;
Every BCI2000 contains event marker channels that are stored with every signal sample. To view some of these event markers (which are called [[BCI2000 Glossary#State|state variables]] in BCI2000), check the &amp;quot;TargetCode&amp;quot;, &amp;quot;ResultCode&amp;quot;, and &amp;quot;Feedback&amp;quot; checkboxes displayed in the top right corner of its application window once you opened a file in BCI2000Viewer.&lt;br /&gt;
&lt;br /&gt;
The values of these event markers will be displayed on top of the signal traces. Whenever &#039;&#039;TargetCode&#039;&#039; changes from 0, a target was displayed during the recording. Whenever &#039;&#039;ResultCode&#039;&#039; changes from 0, a target has been hit by the cursor. A &#039;&#039;Feedback&#039;&#039; value of 1 indicates that the feedback cursor was visible. In data analysis, this state information allows to determine trial structure and data labels. It is important to note here that the number, names, and nature of the BCI2000 state variables can be easily adapted to fit your needs. &lt;br /&gt;
&lt;br /&gt;
Help on state variables is available as well. Right-click the &amp;quot;TargetCode&amp;quot; entry in the top right corner of the BCI2000Viewer window and choose &#039;&#039;Help on the &amp;quot;TargetCode&amp;quot; state variable&#039;&#039; from the context menu. A browser window will open up and will show a help page that describes the &#039;&#039;TargetCode&#039;&#039; state variable.&lt;br /&gt;
&lt;br /&gt;
==Viewing Parameters using [[User Reference:BCI2000FileInfo|BCI2000FileInfo]]==&lt;br /&gt;
In addition to state information, each data file contains the full set of parameters and their values that defined recording of this particular run. You may view those parameters, and save them to a parameter file, in original or modified form, using the [[User Reference:BCI2000FileInfo|BCI2000FileInfo]] program that is located at &amp;lt;tt&amp;gt;tools/BCI2000FileInfo&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To open a .dat file in BCI2000FileInfo, drag-and-drop it onto the program symbol or into the program&#039;s main window. Then, click &amp;quot;Show Parameters.&amp;quot; This will open a parameter configuration dialog identical to the one you know from the Operator module.&lt;br /&gt;
&lt;br /&gt;
==Stimulus Presentation==&lt;br /&gt;
In addition to the cursor feedback paradigm, BCI2000 comes with a multi-purpose [[User Reference:StimulusPresentationTask|Stimulus Presentation]] module.&lt;br /&gt;
This module has many of the features of dedicated programs like [http://www.neurobs.com/presentation Presentation] or [http://www.pstnet.com/products/e-prime/ e-Prime]. In BCI research, the BCI2000 StimulusPresentation module is often used for  [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|an initial Mu rhythm session]]. Still, it has very good [[User Reference:Timing|timing precision]], and thus makes its use suitable for a wide range of psychophysiological experiments such as the ERP experiments described  [[User Tutorial:Introduction to the P300 Response|here]]. In addition, it can be used in conjunction with the P3SignalProcessing module (which can average and classify ERPs) to provide real-time feedback to evoked potentials.&lt;br /&gt;
&lt;br /&gt;
To try the stimulus presentation module, start BCI2000 using the &amp;lt;tt&amp;gt;batch/StimulusPresentation_SignalGenerator.bat&amp;lt;/tt&amp;gt; batch file.&lt;br /&gt;
Then, click &#039;&#039;Config&#039;&#039;, and load the configuration file at &amp;lt;tt&amp;gt;parms/examples/StimulusPresentation_SignalGenerator.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Go to the &#039;&#039;Storage&#039;&#039; tab, and enter a subject ID into the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
Run the experiment clicking &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039;.  (Note: The goal here is simply to introduce you to the stimulus presentation module.  We will not show how to modify the stimuli.) &lt;br /&gt;
&lt;br /&gt;
When you are done, locate the resulting data file at &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001/&amp;lt;SubjectName&amp;gt;S001R01.dat&amp;lt;/tt&amp;gt;, and open it using BCI2000FileViewer, similar to what you did for the simulated cursor movement session earlier in this tour. In BCI2000FileViewer&#039;s main window, check the &#039;&#039;StimulusCode&#039;&#039; checkbox to display the &#039;&#039;StimulusCode&#039;&#039; state variable. During presentation of a stimulus, the &#039;&#039;StimulusCode&#039;&#039; state is set to an ordinal number corresponding to the stimulus. In data analysis, this information may then be used to segment data into epochs, and to group epochs according to stimuli.&lt;br /&gt;
&lt;br /&gt;
==P300 Speller==&lt;br /&gt;
As part of its core distribution, BCI2000 comes with a [[User Reference:P3SpellerTask|P300 Speller]] module. The P300 Speller module implements a BCI that uses evoked responses to select items from a rectangular matrix, as it was originally described by Farwell and Donchin (1988).&lt;br /&gt;
&lt;br /&gt;
To calibrate the P300 Speller for an individual subject, it is operated in a &amp;quot;copy spelling&amp;quot; mode, which prompts the user to pay attention to pre-defined letters in sequence.&lt;br /&gt;
Start &amp;lt;tt&amp;gt;batch/P3Speller_SignalGenerator.bat&amp;lt;/tt&amp;gt;, click &#039;&#039;Config,&#039;&#039; and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_CopySpelling.prm&amp;lt;/tt&amp;gt;. Close the configuration window, then click &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039; to view copy spelling in action.&lt;br /&gt;
&lt;br /&gt;
In simulation mode, the simulated EEG will simulate evoked responses on the respective items, allowing to test signal classification and spelling functionality. Therefore, spelled letters will correspond to predefined letters.&lt;br /&gt;
&lt;br /&gt;
Once calibrated, the purpose of the P300 Speller is to choose arbitrary letters from the matrix, i.e., &amp;quot;free spelling,&amp;quot; without a pre-defined letter sequence.&lt;br /&gt;
The speller also supports multiple matrices (or &amp;quot;menus&amp;quot;), graphical icons, and wave files.&lt;br /&gt;
&lt;br /&gt;
To perform a &amp;quot;free spelling&amp;quot; demo with multiple menus, click &#039;&#039;Config&#039;&#039; and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_Menus.prm&amp;lt;/tt&amp;gt;. Then close the configuration window, click &#039;&#039;Set Config&#039;&#039;, and &#039;&#039;Start.&#039;&#039;&lt;br /&gt;
In simulation mode, selecting a matrix element is achieved by clicking it with the mouse. Actual P300 classification is done by averaging over a fixed number of epochs, so clicking an item will not immediately select it. Rather, mouse selection will override classification once the number of averaging epochs is reached, which takes a few seconds.&lt;br /&gt;
&lt;br /&gt;
==Where to go from here==&lt;br /&gt;
In this tour, we covered several basic aspects of BCI2000 operation and how to view information contained in data files. Additionally, you have seen the software elements available to build BCIs based on brain signal rhythms and evoked responses.&lt;br /&gt;
&lt;br /&gt;
When you are an &#039;&#039;&#039;experimenter,&#039;&#039;&#039; you might want to go through one of the tutorials that introduce you to actual EEG experiments:&lt;br /&gt;
*[[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&lt;br /&gt;
*[[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
In case you would like to adapt BCI2000 to your own amplifier, you may be interested in &lt;br /&gt;
* [[User_Reference:Filters#Data_Acquisition|Using devices that are supported by the BCI2000 core distribution]],&lt;br /&gt;
* [[Contributions:How_to_use_a_Contributed_Source_Module|Using devices that are supported by user contributions]], or&lt;br /&gt;
* a tutorial on [[Programming Tutorial:Implementing a Data Acquisition Module|Implementing a Data Acquisition Module]].&lt;br /&gt;
&lt;br /&gt;
If you want to apply your own signal processing to brain signals, see&lt;br /&gt;
*the tutorial on [[Programming Tutorial:Implementing a Signal Processing Filter|Implementing a Signal Processing Filter]],&lt;br /&gt;
*and the [[Programming Reference:MatlabFilter|MatlabFilter Documentation]] about piping the BCI2000 data flow through a set of Matlab scripts.&lt;br /&gt;
&lt;br /&gt;
For other BCI2000 resources that support you in &#039;&#039;&#039;rapid development&#039;&#039;&#039; of Data Acquisition, Signal Processing, or User Application modules, see [[Programming Reference:Rapid Development|Rapid Development]].&lt;br /&gt;
&lt;br /&gt;
All documentation is accessible through a hierarchy of content pages, starting at the [[Main Page]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Contents]], [[Technical Reference:Contents]], [[Programming Reference:Contents]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=4668</id>
		<title>User Tutorial:BCI2000 Tour</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=4668"/>
		<updated>2008-10-28T18:45:21Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following description is intended to get you started and make you comfortable using BCI2000. It demonstrates the use of BCI2000 without the need for data acquisition hardware. In addition, it will introduce you to some of the most important software components and tools included in the BCI2000 distribution.&lt;br /&gt;
&lt;br /&gt;
==Starting up BCI2000==&lt;br /&gt;
BCI2000 consists of [[Technical Reference:System Design|four programs]] (modules) that need to be started up in a certain order. These modules handle acquisition of brain signals (i.e., Source module), processing of these brain signals (Signal Processing module), user feedback (i.e., User Application module), and the interface to the investigator (i.e., Operator module), respectively. These four modules  can be started using the script (batch) files in the &amp;lt;tt&amp;gt;batch&amp;lt;/tt&amp;gt; directory. Alternatively, there is a [[User Reference:BCI2000Launcher|BCI2000Launcher]] program that allows you to manage BCI2000 module startup using a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
We will begin this introductory tour by double-clicking the file &amp;lt;tt&amp;gt;batch/CursorTask_SignalGenerator.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This will launch the modules required for a simulation of a [[User Tutorial:Introduction to the Mu Rhythm|Mu rhythm BCI session]].&lt;br /&gt;
&lt;br /&gt;
==BCI2000 Help==&lt;br /&gt;
When the [[User Reference:Operator Module|main operator window]] appears, choose &#039;&#039;BCI2000 Help&#039;&#039; from the &#039;&#039;Help&#039;&#039; menu. The Operator module&#039;s help page will be opened in a web browser window. On the left side of the help page, a navigation menu provides access to available BCI2000 documentation.&lt;br /&gt;
&lt;br /&gt;
The BCI2000 help is a local copy of the BCI2000 online documentation wiki and provides a snapshot that corresponds to your version of the BCI2000 executables.&lt;br /&gt;
&lt;br /&gt;
==Loading a Parameter File==&lt;br /&gt;
The parameters for a particular experiment implemented in BCI2000 are stored in [[Technical Reference:Parameter File|parameter files]].&lt;br /&gt;
Before performing an experiment, you will typically load a parameter file that contains subject-specific as well as general configuration information.&lt;br /&gt;
&lt;br /&gt;
In the main window, click the &#039;&#039;Config&#039;&#039; button. A configuration window appears. There, click the &#039;&#039;Load Parameters&#039;&#039; button, which will open up a file chooser dialog. Open &amp;lt;tt&amp;gt;parms/mu_tutorial/MuFeedback.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Entering a Subject ID==&lt;br /&gt;
BCI2000 stores data files in directories with names that are constructed from subject ID and session number.&lt;br /&gt;
&lt;br /&gt;
In the configuration dialog, go to the &#039;&#039;Storage&#039;&#039; tab, and identify the &#039;&#039;DataDirectory&#039;&#039; parameter. This parameter determines the path to the top level data directory, i.e., the directory below which session directories will be created. By default, this parameter is set to &amp;lt;tt&amp;gt;../data&amp;lt;/tt&amp;gt;, a relative path that points to your BCI2000 installation&#039;s &amp;lt;tt&amp;gt;data&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Go to the &#039;&#039;SubjectName&#039;&#039; parameter, and enter an ID such as TEST, or your own initials.&lt;br /&gt;
&lt;br /&gt;
==Parameter Help==&lt;br /&gt;
There is a &amp;quot;Help&amp;quot; button on the right side of the configuration window.&lt;br /&gt;
Click that button, and observe that the mouse cursor turns into a question mark.&lt;br /&gt;
Move the mouse cursor over the &#039;&#039;SubjectName&#039;&#039; parameter label, and press the left mouse button.&lt;br /&gt;
&lt;br /&gt;
A web browser window will open up and show a help page that describes the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
&lt;br /&gt;
==Applying Configuration Parameters==&lt;br /&gt;
Close the configuration dialog by using its close button (the button labeled &amp;quot;X&amp;quot; located on the top right corner of the window). This will accept your parameter changes (there is no &amp;quot;Cancel&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
In the main window, click &#039;&#039;Set Config.&#039;&#039; This will apply the changes in configuration. Specifically, the Operator module sends configuration parameters to the remaining BCI2000 modules. These, in turn, will validate the parameter values to make sure they are appropriate. If all values are appropriate, a signal window will appear that displays simulated EEG. The first time, this window is rather small and is located in the upper left corner of the screen. Please resize and move it to your liking -- its size and position will be preserved across BCI2000 sessions.&lt;br /&gt;
&lt;br /&gt;
In a true BCI session, in which you will be recording signals from the brain, you will use this window to assess the quality of the recorded signals. In this simulation session, you will notice a change in the simulated brain signal when you move your mouse. We will alter use these signal changes to control a cursor on the screen.&lt;br /&gt;
&lt;br /&gt;
When you right-click on the signal window, this will bring up a context menu with particular display options such as increasing/decreasing the number of channels displayed, choosing display colors, applying filters to the signal, etc. (Details are described on the [[User Reference:Operator Module|Operator Module&#039;s reference page]].)&lt;br /&gt;
&lt;br /&gt;
==Performing a Session==&lt;br /&gt;
Once you clicked &#039;&#039;Set Config,&#039;&#039; the &#039;&#039;Start&#039;&#039; button will be active (assuming all parameters have been validated and accepted). Press &amp;quot;Start&amp;quot; to start a simulated feedback session. During the session, you will see a cursor that moves from the left to the right at a constant. You will also see one of two targets highlighted on the right side of the screen. Your task is to move the cursor up or down such that it hits the highlighted target. In simulation mode, you can move this cursor by moving the mouse cursor up and down. In BCI experiments, the subject&#039;s task is to use brain signals, rather than the mouse, to move the cursor.&lt;br /&gt;
&lt;br /&gt;
The period during which the cursor moves from left to right is called a &#039;&#039;trial.&#039;&#039; During operation, a number of trials will follow each other. Many trials make up one experimental &#039;&#039;run,&#039;&#039; where each run usually lasts about 3-5 minutes. When the run is finished, BCI2000 will stop operation on its own, and the &#039;&#039;Start&#039;&#039; button will change to &#039;&#039;Resume.&#039;&#039; At that time, the corresponding data file has been closed. Clicking &#039;&#039;Resume&#039;&#039; each time, you may add as many runs to the current &#039;&#039;Session&#039;&#039; as you like. All runs within a session will be stored as separate files in that session&#039;s data directory.&lt;br /&gt;
&lt;br /&gt;
BCI2000 contains a component that adapts itself to the brain signal&#039;s characteristics (i.e., its mean value and its amount of variation). This component needs to observe the signal for a few trials until it has appropriately adapted to those characteristics. This means that initially you will not feel a correspondence between your actions and the cursor; just stick with it for a few trials, and you will note how control gets more accurate over time. Also, it is important that you place the mouse cursor in a center position at the beginning of each trial, to give you enough space to move into the required direction. Likewise, when a real subject controls the cursor using brain signals, cursor control will only be possible after blindly following instructions for a few trials.&lt;br /&gt;
&lt;br /&gt;
When you have acquired one or more runs, you may quit BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Opening Data Files in [[User Reference:BCI2000Viewer|BCI2000Viewer]]==&lt;br /&gt;
Use Windows Explorer to display the contents of &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001&amp;lt;/tt&amp;gt;, which is the session directory corresponding to your recorded session (in place of &amp;lt;tt&amp;gt;&amp;lt;SubjectName&amp;gt;&amp;lt;/tt&amp;gt;, enter the ID that you used for the &#039;&#039;SubjectName&#039;&#039; parameter).&lt;br /&gt;
In the session directory, single runs correspond to &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files carrying the session&#039;s name, appended with a run number.&lt;br /&gt;
&lt;br /&gt;
To view the content of a data file, open it in the [[User Reference:BCI2000Viewer|BCI2000Viewer]] program provided in &amp;lt;tt&amp;gt;tools/BCI2000Viewer&amp;lt;/tt&amp;gt;. We recommend that you double-click the .dat file in question, and then use &amp;quot;Choose application&amp;quot; to permanently associate BCI2000Viewer with the .dat extension. Alternatively, drag a .dat file (or a link to a .dat file) onto the BCI2000Viewer icon or BCI2000Viewer&#039;s application window. This will display the file&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
==Viewing Event Marker Information==&lt;br /&gt;
Every BCI2000 contains event marker channels that are stored with every signal sample. To view some of these event markers (which are called [[BCI2000 Glossary#State|state variables]] in BCI2000), check the &amp;quot;TargetCode&amp;quot;, &amp;quot;ResultCode&amp;quot;, and &amp;quot;Feedback&amp;quot; checkboxes displayed in the top right corner of its application window once you opened a file in BCI2000Viewer.&lt;br /&gt;
&lt;br /&gt;
The values of these event markers will be displayed on top of the signal traces. Whenever &#039;&#039;TargetCode&#039;&#039; changes from 0, a target was displayed during the recording. Whenever &#039;&#039;ResultCode&#039;&#039; changes from 0, a target has been hit by the cursor. A &#039;&#039;Feedback&#039;&#039; value of 1 indicates that the feedback cursor was visible. In data analysis, this state information allows to determine trial structure and data labels. It is important to note here that the number, names, and nature of the BCI2000 state variables can be easily adapted to fit your needs. &lt;br /&gt;
&lt;br /&gt;
Help on state variables is available as well. Right-click the &amp;quot;TargetCode&amp;quot; entry in the top right corner of the BCI2000Viewer window and choose &#039;&#039;Help on the &amp;quot;TargetCode&amp;quot; state variable&#039;&#039; from the context menu. A browser window will open up and will show a help page that describes the &#039;&#039;TargetCode&#039;&#039; state variable.&lt;br /&gt;
&lt;br /&gt;
==Viewing Parameters using [[User Reference:BCI2000FileInfo|BCI2000FileInfo]]==&lt;br /&gt;
In addition to state information, each data file contains the full set of parameters and their values that defined recording of this particular run. You may view those parameters, and save them to a parameter file, in original or modified form, using the [[User Reference:BCI2000FileInfo|BCI2000FileInfo]] program that is located at &amp;lt;tt&amp;gt;tools/BCI2000FileInfo&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To open a .dat file in BCI2000FileInfo, drag-and-drop it onto the program symbol or into the program&#039;s main window. Then, click &amp;quot;Show Parameters.&amp;quot; This will open a parameter configuration dialog identical to the one you know from the Operator module.&lt;br /&gt;
&lt;br /&gt;
==Stimulus Presentation==&lt;br /&gt;
In addition to the cursor feedback paradigm, BCI2000 comes with a multi-purpose [[User Reference:StimulusPresentationTask|Stimulus Presentation]] module.&lt;br /&gt;
This module has many of the features of dedicated programs like [http://www.neurobs.com/presentation Presentation] or [http://www.pstnet.com/products/e-prime/ e-Prime]. In BCI research, the BCI2000 StimulusPresentation module is often used for  [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|an initial Mu rhythm session]]. Still, it has very good [[User Reference:Timing|timing precision]], and thus makes its use suitable for a wide range of psychophysiological experiments such as the ERP experiments described  [[User Tutorial:Introduction to the P300 Response|here]]. In addition, it can be used in conjunction with the P3SignalProcessing module (which can average and classify ERPs) to provide real-time feedback to evoked potentials.&lt;br /&gt;
&lt;br /&gt;
To try the stimulus presentation module, start BCI2000 using the &amp;lt;tt&amp;gt;batch/StimulusPresentation_SignalGenerator.bat&amp;lt;/tt&amp;gt; batch file.&lt;br /&gt;
Then, click &#039;&#039;Config&#039;&#039;, and load the configuration file at &amp;lt;tt&amp;gt;parms/examples/StimulusPresentation_SignalGenerator.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Go to the &#039;&#039;Storage&#039;&#039; tab, and enter a subject ID into the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
Run the experiment clicking &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039;.  (Note: The goal here is simply to introduce you to the stimulus presentation module.  We will not show how to modify the stimuli.) &lt;br /&gt;
&lt;br /&gt;
When you are done, locate the resulting data file at &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001/&amp;lt;SubjectName&amp;gt;S001R01.dat&amp;lt;/tt&amp;gt;, and open it using BCI2000FileViewer, similar to what you did for the simulated cursor movement session earlier in this tour. In BCI2000FileViewer&#039;s main window, check the &#039;&#039;StimulusCode&#039;&#039; checkbox to display the &#039;&#039;StimulusCode&#039;&#039; state variable. During presentation of a stimulus, the &#039;&#039;StimulusCode&#039;&#039; state is set to an ordinal number corresponding to the stimulus. In data analysis, this information may then be used to segment data into epochs, and to group epochs according to stimuli.&lt;br /&gt;
&lt;br /&gt;
==P300 Speller==&lt;br /&gt;
As part of its core distribution, BCI2000 comes with a [[User Reference:P3SpellerTask|P300 Speller]] module. The P300 Speller module implements a BCI that uses evoked responses to select items from a rectangular matrix, as it was originally described by Farwell and Donchin (1988).&lt;br /&gt;
&lt;br /&gt;
To calibrate the P300 Speller for an individual subject, it is operated in a &amp;quot;copy spelling&amp;quot; mode, which prompts the user to pay attention to pre-defined letters in sequence.&lt;br /&gt;
Start &amp;lt;tt&amp;gt;batch/P3Speller_SignalGenerator.bat&amp;lt;/tt&amp;gt;, click &#039;&#039;Config,&#039;&#039; and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_CopySpelling.prm&amp;lt;/tt&amp;gt;. Close the configuration window, then click &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039; to view copy spelling in action.&lt;br /&gt;
&lt;br /&gt;
In simulation mode, the simulated EEG will simulate evoked responses on the respective items, allowing to test signal classification and spelling functionality. Therefore, spelled letters will correspond to predefined letters.&lt;br /&gt;
&lt;br /&gt;
Once calibrated, the purpose of the P300 Speller is to choose arbitrary letters from the matrix, i.e., &amp;quot;free spelling,&amp;quot; without a pre-defined letter sequence.&lt;br /&gt;
The speller also supports multiple matrices (or &amp;quot;menus&amp;quot;), graphical icons, and wave files.&lt;br /&gt;
&lt;br /&gt;
To perform a &amp;quot;free spelling&amp;quot; demo with multiple menus, click &#039;&#039;Config&#039;&#039; and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_Menus.prm&amp;lt;/tt&amp;gt;. Then close the configuration window, click &#039;&#039;Set Config&#039;&#039;, and &#039;&#039;Start.&#039;&#039;&lt;br /&gt;
In simulation mode, selecting a matrix element is achieved by clicking it with the mouse. Actual P300 classification is done by averaging over a fixed number of epochs, so clicking an item will not immediately select it. Rather, mouse selection will override classification once the number of averaging epochs is reached, which takes a few seconds.&lt;br /&gt;
&lt;br /&gt;
==Where to go from here==&lt;br /&gt;
In this tour, we covered several basic aspects of BCI2000 operation and how to view information contained in data files. Additionally, you have seen the software elements available to build BCIs based on brain signal rhythms and evoked responses.&lt;br /&gt;
&lt;br /&gt;
When you are an &#039;&#039;&#039;experimenter,&#039;&#039;&#039; you might want to go through one of the tutorials that introduce you to actual EEG experiments:&lt;br /&gt;
*[[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&lt;br /&gt;
*[[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
In case you would like to adapt BCI2000 to your own amplifier, you may be interested in &lt;br /&gt;
* [[User_Reference:Filters#Data_Acquisition:Using devices that are supported by the BCI2000 core distribution]],&lt;br /&gt;
* [[Contributions:How_to_use_a_Contributed_Source_Module|Using devices that are supported by user contributions]], or&lt;br /&gt;
* a tutorial on [[Programming Tutorial:Implementing a Data Acquisition Module|Implementing a Data Acquisition Module]].&lt;br /&gt;
&lt;br /&gt;
If you want to apply your own signal processing to brain signals, see&lt;br /&gt;
*the tutorial on [[Programming Tutorial:Implementing a Signal Processing Filter|Implementing a Signal Processing Filter]],&lt;br /&gt;
*and the [[Programming Reference:MatlabFilter|MatlabFilter Documentation]] about piping the BCI2000 data flow through a set of Matlab scripts.&lt;br /&gt;
&lt;br /&gt;
For other BCI2000 resources that support you in &#039;&#039;&#039;rapid development&#039;&#039;&#039; of Data Acquisition, Signal Processing, or User Application modules, see [[Programming Reference:Rapid Development|Rapid Development]].&lt;br /&gt;
&lt;br /&gt;
All documentation is accessible through a hierarchy of content pages, starting at the [[Main Page]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Contents]], [[Technical Reference:Contents]], [[Programming Reference:Contents]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=4602</id>
		<title>User Tutorial:BCI2000 Tour</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=4602"/>
		<updated>2008-10-22T19:13:24Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to get you started and make you comfortable using BCI2000. It shows you how to use BCI2000 in a simulation mode, i.e., without the need for data acquisition hardware. In addition, you will be introduced to some of the most important software components and tools included in BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Starting up BCI2000==&lt;br /&gt;
BCI2000 consists of [[Technical Reference:System Design|four executables]] (modules) that need to be started up in a certain order.&lt;br /&gt;
This can be done using the script (batch) files in the &amp;lt;tt&amp;gt;batch&amp;lt;/tt&amp;gt; directory. Alternatively, there is a [[User Reference:BCI2000Launcher|BCI2000Launcher]] program that allows you to manage BCI2000 module startup using a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
We will begin this introductory tour by double-clicking the file &amp;lt;tt&amp;gt;batch/CursorTask_SignalGenerator.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This will launch the modules required for a simulation of a [[User Tutorial:Introduction to the Mu Rhythm|Mu rhythm BCI session]].&lt;br /&gt;
&lt;br /&gt;
==BCI2000 Help==&lt;br /&gt;
When the [[User Reference:Operator Module|main operator window]] appears, choose &#039;&#039;BCI2000 Help&#039;&#039; from the &#039;&#039;Help&#039;&#039; menu. The operator module&#039;s help page will be opened in a web browser window. On the left side of the help page, a navigation menu provides access to available BCI2000 documentation.&lt;br /&gt;
&lt;br /&gt;
The BCI2000 help is a local copy of the BCI2000 online documentation wiki, providing a snapshot that corresponds to your version of the BCI2000 executables.&lt;br /&gt;
&lt;br /&gt;
==Loading a Parameter File==&lt;br /&gt;
BCI2000 configuration is stored in [[Technical Reference:Parameter File|parameter files]].&lt;br /&gt;
Before performing an experiment, you will typically load a parameter file that contains subject-specific as well as general configuration information.&lt;br /&gt;
&lt;br /&gt;
In the main operator window, click the &#039;&#039;Config&#039;&#039; button. A configuration window appears. There, click the &#039;&#039;Load Parameters&#039;&#039; button, which will open up a file chooser dialog. Open &amp;lt;tt&amp;gt;parms/mu_tutorial/MuFeedback.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Entering a Subject ID==&lt;br /&gt;
BCI2000 stores data files in directories with names that are constructed from subject ID and session number.&lt;br /&gt;
&lt;br /&gt;
In the configuration dialog, go to the &#039;&#039;Storage&#039;&#039; tab, and identify the &#039;&#039;DataDirectory&#039;&#039; parameter. This parameter determines the path to the top level data directory, i.e. the directory below which session directories will be created. By default, this parameter is set to &amp;lt;tt&amp;gt;../data&amp;lt;/tt&amp;gt;, a relative path that points to your BCI2000 installation&#039;s &amp;lt;tt&amp;gt;data&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Go to the &#039;&#039;SubjectName&#039;&#039; parameter, and enter an ID such as TEST, or your own initials.&lt;br /&gt;
&lt;br /&gt;
==Parameter Help==&lt;br /&gt;
There is a &amp;quot;Help&amp;quot; button on the right side of the configuration window.&lt;br /&gt;
Click that button, and observe that the mouse cursor turns into a question mark.&lt;br /&gt;
Move the mouse cursor over the &#039;&#039;SubjectName&#039;&#039; parameter label, and press the left mouse button.&lt;br /&gt;
&lt;br /&gt;
A web browser window will open up, and display a help page describing the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
&lt;br /&gt;
==Applying Configuration Parameters==&lt;br /&gt;
Close the configuration dialog by using its close button (the button labeled &amp;quot;X&amp;quot; located on the top right corner of the window). This will accept your parameter changes (there is no &amp;quot;Cancel&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
In the main operator window, click &#039;&#039;Set Config&#039;&#039;. This will prompt the operator module to send configuration parameters to the remaining BCI2000 modules, These, in turn, will perform some sanity checks on parameter values, adapt themselves to changes in parameter configuration, and report back to the operator module.&lt;br /&gt;
&lt;br /&gt;
Once you clicked the &#039;&#039;Set Config&#039;&#039; button, a signal source window will appear, displaying a simulated EEG. Initially, this window is rather small, displayed in the upper left corner of the screen. Resize and move it to your liking -- its size and position will be preserved across BCI2000 sessions.&lt;br /&gt;
&lt;br /&gt;
In an actual BCI session, you will use this window to assess signal quality. In this simulation session, when moving the mouse, you will notice a change in the simulated EEG signal. This is the signal that will later control the feedback cursor.&lt;br /&gt;
&lt;br /&gt;
Right-clicking the EEG window will bring up a context menu with display options such as increasing/decreasing the number of channels displayed, choosing display colors, applying filters to the signal. (Details are described on the [[User Reference:Operator Module|Operator Module&#039;s reference page]].)&lt;br /&gt;
&lt;br /&gt;
==Performing a Session==&lt;br /&gt;
Once &#039;&#039;Set Config&#039;&#039; has been clicked, the &#039;&#039;Start&#039;&#039; button will be active. Click it to start a simulated feedback session. During the session, you will see a cursor moving from the left to the right by itself, and one of two targets highlighted on the right. Your task will be to move the cursor up or down, such that it hits the highlighted target. In simulation mode, you can move the feedback cursor by moving the mouse cursor up and down.&lt;br /&gt;
&lt;br /&gt;
The period during which the cursor moves from left to right is called a &#039;&#039;Trial&#039;&#039;. During operation, a number of trials will follow each other, making up a &#039;&#039;Run&#039;&#039;. After a few minutes, BCI2000 will stop operation by itself, and the &#039;&#039;Start&#039;&#039; button will change to &#039;&#039;Resume&#039;&#039;. This means that a run has been finished, and the corresponding data file has been closed. Clicking &#039;&#039;Resume&#039;&#039; each time, you may add as many runs to the current &#039;&#039;Session&#039;&#039; as you like. All runs belonging to a session will be stored in that session&#039;s data directory.&lt;br /&gt;
&lt;br /&gt;
BCI2000 contains a component that adapts itself to the brain signal&#039;s mean value and its amount of variation. This component needs to observe the signal for a while before it can operate properly. This means that initially you will not feel a correspondence between your actions and the cursor; just stick with it for a few trials, and you will note how control gets more accurate over time. Also, it is important that you place the mouse cursor in a center position at the beginning of each trial, to give you enough space to move into the required direction. Likewise, when a real subject controls the cursor using brain signals, cursor control will only be possible after blindly following instructions for some trials.&lt;br /&gt;
&lt;br /&gt;
When you have acquired one or more runs, you may quit BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Opening Data Files in [[User Reference:BCI2000Viewer|BCI2000Viewer]]==&lt;br /&gt;
Use the Windows Explorer to display the contents of &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001&amp;lt;/tt&amp;gt;, which is the session directory corresponding to your recorded session (in place of &amp;lt;tt&amp;gt;&amp;lt;SubjectName&amp;gt;&amp;lt;/tt&amp;gt;, enter the ID that you used for the &#039;&#039;SubjectName&#039;&#039; parameter).&lt;br /&gt;
In the session directory, single runs correspond to &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files carrying the session&#039;s name, appended with a run number.&lt;br /&gt;
&lt;br /&gt;
To view the content of a data file, open it in the [[User Reference:BCI2000Viewer|BCI2000Viewer]] program provided in &amp;lt;tt&amp;gt;tools/BCI2000Viewer&amp;lt;/tt&amp;gt;. It is recommendable that you double-click the .dat file in question, and then use &amp;quot;Choose application&amp;quot; to permanently associate BCI2000Viewer with the .dat extension.&lt;br /&gt;
&lt;br /&gt;
Alternatively, drag a .dat file onto the BCI2000Viewer icon, a link thereto, or BCI2000Viewer&#039;s application window, to display the file&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
==Viewing State Information==&lt;br /&gt;
Once you opened a file in BCI2000Viewer, check the &amp;quot;TargetCode&amp;quot;, &amp;quot;ResultCode&amp;quot;, and &amp;quot;Feedback&amp;quot; checkboxes displayed in the top right corner of its application window.&lt;br /&gt;
&lt;br /&gt;
Above the signal, values of these so-called [[BCI2000 Glossary#State|state variables]] will be displayed. Whenever &#039;&#039;TargetCode&#039;&#039; changes from 0, a target has been displayed during the recording. Whenever &#039;&#039;ResultCode&#039;&#039; changes from 0, a target has been hit by the cursor. A &#039;&#039;Feedback&#039;&#039; value of 1 indicates that the feedback cursor was visible. In data analysis, this state information allows to determine trial structure and data labels.&lt;br /&gt;
&lt;br /&gt;
Help on state variables is available as well. Right-click the &amp;quot;TargetCode&amp;quot; entry in the top right corner of the BCI2000Viewer window, and choose &#039;&#039;Help on the &amp;quot;TargetCode&amp;quot; state variable&#039;&#039; from the context menu. A browser window will open up, and display a help page describing the &#039;&#039;TargetCode&#039;&#039; state variable.&lt;br /&gt;
&lt;br /&gt;
==Viewing Parameters using [[User Reference:BCI2000FileInfo|BCI2000FileInfo]]==&lt;br /&gt;
Each data file contains the full set of parameters and their values at the &#039;&#039;beginning&#039;&#039; of the recording. You may view those parameters, and save them to a parameter file, in original or modified form, using the [[User Reference:BCI2000FileInfo|BCI2000FileInfo]] program located at &amp;lt;tt&amp;gt;tools/BCI2000FileInfo&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To open a .dat file in BCI2000FileInfo, drag-and-drop it onto the program symbol, or into the program&#039;s main window. Then, click &amp;quot;Show Parameters&amp;quot;; this will open a parameter configuration dialog identical to the one you know from the operator module.&lt;br /&gt;
&lt;br /&gt;
==Stimulus Presentation==&lt;br /&gt;
In addition to the cursor feedback paradigm, BCI2000 comes with a multi-purpose [[User Reference:StimulusPresentationTask|Stimulus Presentation]] module.&lt;br /&gt;
This module has many of the features of dedicated programs like [http://www.neurobs.com/presentation Presentation] or [http://www.pstnet.com/products/e-prime/ e-Prime]. In BCI research, the BCI2000 StimulusPresentation module is often used for  [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|an initial Mu rhythm session]]. Still, its [[User Reference:Timing|timing precision]] allows for [[User Tutorial:Introduction to the P300 Response|ERP experiments]] as well. In addition, it can be used in conjunction with the P3SignalProcessing module (which can average and classify ERPs) to provide real-time feedback to evoked potentials.&lt;br /&gt;
&lt;br /&gt;
To try the stimulus presentation module, start BCI2000 using the &amp;lt;tt&amp;gt;batch/StimulusPresentation_SignalGenerator.bat&amp;lt;/tt&amp;gt; batch file.&lt;br /&gt;
Then, click &#039;&#039;Config&#039;&#039;, and load the configuration file at &amp;lt;tt&amp;gt;parms/examples/StimulusPresentation_SignalGenerator.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Go to the &#039;&#039;Storage&#039;&#039; tab, and enter a subject ID into the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
Run the experiment clicking &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039;.  (Note: The goal here is simply to introduce you to the stimulus presentation module.  You will not be able to affect the visual stimulus presentation.) &lt;br /&gt;
&lt;br /&gt;
Locate the resulting data file at &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001/&amp;lt;SubjectName&amp;gt;S001R01.dat&amp;lt;/tt&amp;gt;, and open it using BCI2000FileViewer, as you did for the simulated mu rhythm data earlier this tour. In BCI2000FileViewer&#039;s main window, check the &#039;&#039;StimulusCode&#039;&#039; checkbox to display the &#039;&#039;StimulusCode&#039;&#039; state variable. During presentation of a stimulus, the &#039;&#039;StimulusCode&#039;&#039; state is set to an ordinal number corresponding to the stimulus; in data analysis, this information may then be used to segment data into epochs, and to group epochs according to stimuli.&lt;br /&gt;
&lt;br /&gt;
==P300 Speller==&lt;br /&gt;
As part of its core distribution, BCI2000 comes with a [[User Reference:P3SpellerTask|P300 Speller]] module. The P300 Speller module implements a BCI that uses evoked responses to select items from a rectangular matrix, as it was originally described by Farwell and Donchin (1988).&lt;br /&gt;
&lt;br /&gt;
To calibrate the P300 Speller for an individual subject, it is operated in a &amp;quot;copy spelling&amp;quot; mode, prompting the user to concentrate on pre-defined letters in sequence.&lt;br /&gt;
Start &amp;lt;tt&amp;gt;batch/P3Speller_SignalGenerator.bat&amp;lt;/tt&amp;gt;, click &#039;&#039;Config&#039;&#039;, and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_CopySpelling.prm&amp;lt;/tt&amp;gt;. Close the configuration window, then click &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039; to view copy spelling in action.&lt;br /&gt;
&lt;br /&gt;
In simulation mode, the simulated EEG will simulate evoked responses on the respective items, allowing to test signal classification and spelling functionality. Therefore, spelled letters will correspond to predefined letters when using the simulated EEG source module.&lt;br /&gt;
&lt;br /&gt;
Once calibrated, the purpose of the P300 Speller is to choose arbitrary letters from the matrix, i.e. &amp;quot;free spelling&amp;quot; without a pre-defined letter sequence.&lt;br /&gt;
Also, the speller is able to switch between multiple matrices (or &amp;quot;menus&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
To do a &amp;quot;free spelling&amp;quot; demo with multiple menus, click &#039;&#039;Config&#039;&#039;, and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_Menus.prm&amp;lt;/tt&amp;gt;. Then close the configuration window, click &#039;&#039;Set Config&#039;&#039;, and &#039;&#039;Start&#039;&#039;.&lt;br /&gt;
In simulation mode, selecting a matrix element is achieved by clicking it with the mouse. Actual P300 classification is done averaging over a fixed number of epochs, so clicking an item will not immediately select it. Rather, mouse selection will override classification once the number of averaging epochs is reached, which takes a few seconds.&lt;br /&gt;
&lt;br /&gt;
==Where to go from here==&lt;br /&gt;
In this tour, you have acquired some experience how to operate BCI2000 and how to view information contained in data files. Additionally, you have seen the software elements available to build sensorimotor rhythm and evoked response BCIs.&lt;br /&gt;
&lt;br /&gt;
When you are an &#039;&#039;&#039;experimenter,&#039;&#039;&#039; you might want to do one of the tutorials that introduce you to actual EEG experiments:&lt;br /&gt;
*[[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&lt;br /&gt;
*[[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
When you would like &#039;&#039;&#039;to adapt BCI2000&#039;&#039;&#039; to your own amplifier, you might be interested in &lt;br /&gt;
a tutorial on [[Programming Tutorial:Implementing a Data Acquisition Module|Implementing a Data Acquisition Module]].&lt;br /&gt;
&lt;br /&gt;
If you want to apply your own signal processing to brain signals, see&lt;br /&gt;
*the tutorial on [[Programming Tutorial:Implementing a Signal Processing Filter|Implementing a Signal Processing Filter]],&lt;br /&gt;
*and the [[Programming Reference:MatlabFilter|MatlabFilter Documentation]] about piping the BCI2000 data flow through a set of Matlab scripts.&lt;br /&gt;
&lt;br /&gt;
For other BCI2000 resources that support you in &#039;&#039;&#039;rapid development&#039;&#039;&#039; of data acquisition, signal processing, or user application modules, see [[Programming Reference:Rapid Development|Rapid Development]].&lt;br /&gt;
&lt;br /&gt;
All documentation is accessible through a hierarchy of content pages, starting at the [[Main Page]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Contents]], [[Technical Reference:Contents]], [[Programming Reference:Contents]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4601</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4601"/>
		<updated>2008-10-22T18:47:35Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions to the experimenter and subject are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. A cursor appears on the left edge of the screen, and begins to move horizontally towards the right edge of the screen. Its vertical position is controlled by the EEG features that were defined in the previous step. The subject&#039;s task is to move the cursor vertically so that it hits the target when the cursor hits the right edge of the screen. The time needed for the cursor to move from the left to the right edge of the screen should last approximately three seconds.&lt;br /&gt;
#Result. If the subject successfully hits the target, the target changes its color. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. The screen will then turn black for one second.  This signified the end of the trial. After this one-second period, the next trial starts.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. For example, when the largest r-squared value was associated with left hand movement imagination in the offline analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once the subject has become more proficient with the task, motor imagery typically becomes less important. In this situation, it is not uncommon that subjects report that they just &amp;quot;imagine to move the cursor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory. The experimenter should minimize noise in the room and not disturb the subject.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, the experimenter may feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. However, the experimenter has several important &lt;br /&gt;
tasks during the experiment:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed (e.g., subject did not seem to understand the instructions in the first run, instructions to the subject for a particular run, etc.).&lt;br /&gt;
*Monitoring the EEG waves to verify the quality of the recording (e.g., no electrode contact failure, muscular, ocular, or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: notify the subject if he/she is producing artifacts, keep the subject alert if getting drowsy, give the subject feedback about his/her performance so that interest, alertness, and attention is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or a comprehensive reminder if somebody does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you are likely to miss information&lt;br /&gt;
if you did not record all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Important Remarks==&lt;br /&gt;
One critical element of such experiments is that they need to be consistent and rigorous. For example, a typical session will consist of a number (e.g., 4-8) of 3-min experimental runs. Unless there is an obvious technical problem (e.g., the cursor always immediately jumps to the bottom of the screen, which would point to a misconfiguration of BCI2000), do not change any of the parameters (such as locations, frequencies, etc.) across these runs. When doing offline analyses, always strive to collect at least four runs with the exact same configuration. Because there is so much variability in the subject&#039;s performance and in the EEG, it is likely that you will otherwise not be able to derive meaningful results or conclusions. You may find that, for example, for three consecutive sessions the subject&#039;s best frequency is 12 Hz and not 10 Hz as initially configured. In this case, you could make this small adaptation to the parameters, and have a reasonable chance that it will actually improve the subject&#039;s performance.&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4600</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4600"/>
		<updated>2008-10-22T18:47:15Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Monitoring the Recording */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions to the experimenter and subject are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. A cursor appears on the left edge of the screen, and begins to move horizontally towards the right edge of the screen. Its vertical position is controlled by the EEG features that were defined in the previous step. The subject&#039;s task is to move the cursor vertically so that it hits the target when the cursor hits the right edge of the screen. The time needed for the cursor to move from the left to the right edge of the screen should last approximately three seconds.&lt;br /&gt;
#Result. If the subject successfully hits the target, the target changes its color. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. The screen will then turn black for one second.  This signified the end of the trial. After this one-second period, the next trial starts.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. For example, when the largest r-squared value was associated with left hand movement imagination in the offline analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once the subject has become more proficient with the task, motor imagery typically becomes less important. In this situation, it is not uncommon that subjects report that they just &amp;quot;imagine to move the cursor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory. The experimenter should minimize noise in the room and not disturb the subject.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, the experimenter may feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. However, the experimenter has several important &lt;br /&gt;
tasks during the experiment:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed (e.g., subject did not seem to understand the instructions in the first run, instructions to the subject for a particular run, etc.).&lt;br /&gt;
*Monitoring the EEG waves to verify the quality of the recording (e.g., no electrode contact failure, muscular, ocular, or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: notify the subject if he/she is producing artifacts, keep the subject alert if getting drowsy, give the subject feedback about his/her performance so that interest, alertness, and attention is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or a comprehensive reminder if somebody does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you are likely to miss information&lt;br /&gt;
if you did not record all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Important Comments==&lt;br /&gt;
One critical element of such experiments is that they need to be consistent and rigorous. For example, a typical session will consist of a number (e.g., 4-8) of 3-min experimental runs. Unless there is an obvious technical problem (e.g., the cursor always immediately jumps to the bottom of the screen, which would point to a misconfiguration of BCI2000), do not change any of the parameters (such as locations, frequencies, etc.) across these runs. When doing offline analyses, always strive to collect at least four runs with the exact same configuration. Because there is so much variability in the subject&#039;s performance and in the EEG, it is likely that you will otherwise not be able to derive meaningful results or conclusions. You may find that, for example, for three consecutive sessions the subject&#039;s best frequency is 12 Hz and not 10 Hz as initially configured. In this case, you could make this small adaptation to the parameters, and have a reasonable chance that it will actually improve the subject&#039;s performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4599</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4599"/>
		<updated>2008-10-22T18:35:44Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions to the experimenter and subject are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. A cursor appears on the left edge of the screen, and begins to move horizontally towards the right edge of the screen. Its vertical position is controlled by the EEG features that were defined in the previous step. The subject&#039;s task is to move the cursor vertically so that it hits the target when the cursor hits the right edge of the screen. The time needed for the cursor to move from the left to the right edge of the screen should last approximately three seconds.&lt;br /&gt;
#Result. If the subject successfully hits the target, the target changes its color. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. The screen will then turn black for one second.  This signified the end of the trial. After this one-second period, the next trial starts.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. For example, when the largest r-squared value was associated with left hand movement imagination in the offline analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once the subject has become more proficient with the task, motor imagery typically becomes less important. In this situation, it is not uncommon that subjects report that they just &amp;quot;imagine to move the cursor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory. The experimenter should minimize noise in the room and not disturb the subject.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, one might feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. On the contrary, the experimenter has several tasks:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed.&lt;br /&gt;
*Monitoring the EEG waves, checking that the quality of recording does not decrease (electrode contact failure, muscular, EOG or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: warn him/her if he/she is producing artifacts, keep him/her alert if getting drowsy, give him/her feedback about his/her performance so that interest is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or possibly the historical memory of whoever does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you will probably have a&lt;br /&gt;
problem if you did not note down all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Important Comments==&lt;br /&gt;
One critical element of such experiments is that they need to be consistent and rigorous. For example, a typical session will consist of a number (e.g., 4-8) of 3-min experimental runs. Unless there is an obvious technical problem (e.g., the cursor always immediately jumps to the bottom of the screen, which would point to a misconfiguration of BCI2000), do not change any of the parameters (such as locations, frequencies, etc.) across these runs. When doing offline analyses, always strive to collect at least four runs with the exact same configuration. Because there is so much variability in the subject&#039;s performance and in the EEG, it is likely that you will otherwise not be able to derive meaningful results or conclusions. You may find that, for example, for three consecutive sessions the subject&#039;s best frequency is 12 Hz and not 10 Hz as initially configured. In this case, you could make this small adaptation to the parameters, and have a reasonable chance that it will actually improve the subject&#039;s performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4598</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4598"/>
		<updated>2008-10-22T18:35:08Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Instructions to the Subject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions to the experimenter and subject are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. A cursor appears on the left edge of the screen, and begins to move horizontally towards the right edge of the screen. Its vertical position is controlled by the EEG features that were defined in the previous step. The subject&#039;s task is to move the cursor vertically so that it hits the target when the cursor hits the right edge of the screen. The time needed for the cursor to move from the left to the right edge of the screen should last approximately three seconds.&lt;br /&gt;
#Result. If the subject successfully hits the target, the target changes its color. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. The screen will then turn black for one second.  This signified the end of the trial. After this one-second period, the next trial starts.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. For example, when the largest r-squared value was associated with left hand movement imagination in the offline analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once the subject has become more proficient with the task, motor imagery typically becomes less important. In this situation, it is not uncommon that subjects report that they just &amp;quot;imagine to move the cursor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory. The experimenter should minimize noise in the room and not disturb the subject.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, one might feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. On the contrary, the experimenter has several tasks:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed.&lt;br /&gt;
*Monitoring the EEG waves, checking that the quality of recording does not decrease (electrode contact failure, muscular, EOG or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: warn him/her if he/she is producing artifacts, keep him/her alert if getting drowsy, give him/her feedback about his/her performance so that interest is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or possibly the historical memory of whoever does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you will probably have a&lt;br /&gt;
problem if you did not note down all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4597</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4597"/>
		<updated>2008-10-22T18:28:01Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Instructions to the Subject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions to the experimenter and subject are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. A cursor appears on the left edge of the screen, and begins to move horizontally towards the right edge of the screen. Its vertical position is controlled by the EEG features that were defined in the previous step. The subject&#039;s task is to move the cursor vertically so that it hits the target when the cursor hits the right edge of the screen. The time needed for the cursor to move from the left to the right edge of the screen should last approximately three seconds.&lt;br /&gt;
#Result. If the subject successfully hits the target, the target changes its color. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. The screen will then turn black for one second.  This signified the end of the trial. After this one-second period, the next trial starts.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. For example, when the largest r-squared value was associated with left hand movement imagination in the offline analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once the subject has become more proficient with the task, motor imagery typically becomes less important. In this situation, it is not uncommon that subjects report that they just &amp;quot;imagine to move the cursor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory. The experimenter should minimize noise in the room and not disturb the subject.&lt;br /&gt;
&lt;br /&gt;
One critical element of such experiments is that they need to be consistent and rigorous. For example, a typical session will consist of a number (e.g., 4-8) of 3-min experimental runs. Unless there is an obvious technical problem (e.g., the cursor always immediately jumps to the bottom of the screen, which would point to a misconfiguration of BCI2000), do not change any of the parameters (such as locations, frequencies, etc.) across these runs. When doing offline analyses, always strive to collect at least four runs with the exact same configuration. Because there is so much variability in the subject&#039;s performance and in the EEG, it is likely that you will otherwise not be able to derive meaningful results or conclusions. You may find that, for example, for three consecutive sessions the subject&#039;s best frequency is 12 Hz and not 10 Hz as initially configured. In this case, you could make this small adaptation to the parameters, and have a reasonable chance that it will actually improve the subject&#039;s performance.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, one might feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. On the contrary, the experimenter has several tasks:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed.&lt;br /&gt;
*Monitoring the EEG waves, checking that the quality of recording does not decrease (electrode contact failure, muscular, EOG or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: warn him/her if he/she is producing artifacts, keep him/her alert if getting drowsy, give him/her feedback about his/her performance so that interest is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or possibly the historical memory of whoever does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you will probably have a&lt;br /&gt;
problem if you did not note down all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4596</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4596"/>
		<updated>2008-10-22T18:02:37Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Instructions to the Subject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions to the experimenter and subject are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. The subject receives feedback about his/her Mu amplitude by the trajectory of the cursor on the screen. The time needed for the cursor to move from the left to the right edge of the screen should be approximately three seconds.&lt;br /&gt;
#Result. If the cursor hits the target, the latter changes its color; otherwise, the screen will blank. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. Screen will turn/remain black for one second, after which the cycle starts over.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. E.g., when the largest r-squared value was associated with left hand movement imagination in the data analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once cursor control is established, motor imagery&lt;br /&gt;
typically becomes less important. From then on, it is not the subject&#039;s task to perform a particular mental imagery, but it is the&lt;br /&gt;
subject&#039;s task to control the cursor.&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, one might feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. On the contrary, the experimenter has several tasks:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed.&lt;br /&gt;
*Monitoring the EEG waves, checking that the quality of recording does not decrease (electrode contact failure, muscular, EOG or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: warn him/her if he/she is producing artifacts, keep him/her alert if getting drowsy, give him/her feedback about his/her performance so that interest is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or possibly the historical memory of whoever does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you will probably have a&lt;br /&gt;
problem if you did not note down all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4595</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4595"/>
		<updated>2008-10-22T18:01:49Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Instructions to the Subject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
When the subject is ready for EEG acquisition, you should instruct the subjects about the experimental task. Suggested instructions are listed below.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. The subject receives feedback about his/her Mu amplitude by the trajectory of the cursor on the screen. The time needed for the cursor to move from the left to the right edge of the screen should be approximately three seconds.&lt;br /&gt;
#Result. If the cursor hits the target, the latter changes its color; otherwise, the screen will blank. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. Screen will turn/remain black for one second, after which the cycle starts over.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. E.g., when the largest r-squared value was associated with left hand movement imagination in the data analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once cursor control is established, motor imagery&lt;br /&gt;
typically becomes less important. From then on, it is not the subject&#039;s task to perform a particular mental imagery, but it is the&lt;br /&gt;
subject&#039;s task to control the cursor.&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, one might feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. On the contrary, the experimenter has several tasks:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed.&lt;br /&gt;
*Monitoring the EEG waves, checking that the quality of recording does not decrease (electrode contact failure, muscular, EOG or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: warn him/her if he/she is producing artifacts, keep him/her alert if getting drowsy, give him/her feedback about his/her performance so that interest is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or possibly the historical memory of whoever does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you will probably have a&lt;br /&gt;
problem if you did not note down all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4594</id>
		<title>User Tutorial:Performing a Mu Rhythm Feedback Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_a_Mu_Rhythm_Feedback_Session&amp;diff=4594"/>
		<updated>2008-10-22T17:59:08Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This step assumes that you [[User Tutorial:Configuring Online Feedback|created a subject-specific configuration file]] for the on-line system as described in the previous step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
If you quit BCI2000 after the [[User Tutorial:Configuring Online Feedback|previous step,]] start it using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;, or the link to that file which you created on the desktop.&lt;br /&gt;
&lt;br /&gt;
Then, load the configuration file that you saved in the previous step.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;Set Config&#039;&#039; to view the EEG signal, and [[User_Tutorial:EEG_Measurement_Setup|prepare the subject for EEG recording]] as you did for the [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]].&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
After the subject is ready for EEG acquisition, he/she is given instructions&lt;br /&gt;
about the experimental task.&lt;br /&gt;
&lt;br /&gt;
A screen with a T in the center is initially presented. As soon as the subject is&lt;br /&gt;
ready and the EEG traces are stabilized, the investigator will start the&lt;br /&gt;
acquisition, and the T will disappear. For each trial, four phases will occur:&lt;br /&gt;
#Target presentation. A target appears on the right edge of the screen for about one second.&lt;br /&gt;
#Cursor movement. The subject receives feedback about his/her Mu amplitude by the trajectory of the cursor on the screen. The time needed for the cursor to move from the left to the right edge of the screen should be approximately three seconds.&lt;br /&gt;
#Result. If the cursor hits the target, the latter changes its color; otherwise, the screen will blank. In either case, this period lasts one second.&lt;br /&gt;
#Intertrial Interval. Screen will turn/remain black for one second, after which the cycle starts over.&lt;br /&gt;
&lt;br /&gt;
When a target is presented, the subject should imagine the type of movement associated with the channel-frequency features [[User Tutorial:Analyzing the Initial Mu Rhythm Session|chosen for feedback]]. E.g., when the largest r-squared value was associated with left hand movement imagination in the data analysis, ask the subject to use this imagination to control the direction of cursor movement. Imagined movement will move the cursor upward on the screen, and relaxing will move it downward.&lt;br /&gt;
&lt;br /&gt;
Explicitly specifying a type of imagination to control cursor movement will help the subject achieve initial cursor control. Once cursor control is established, motor imagery&lt;br /&gt;
typically becomes less important. From then on, it is not the subject&#039;s task to perform a particular mental imagery, but it is the&lt;br /&gt;
subject&#039;s task to control the cursor.&lt;br /&gt;
&lt;br /&gt;
The second set of instructions to the subject regards the minimization of&lt;br /&gt;
[[User Tutorial:EEG_Measurement_Setup#EEG Artifacts|artifacts]] from&lt;br /&gt;
*Contraction of the muscles of the face/head, swallowing;&lt;br /&gt;
*Eye blinks and eye movements;&lt;br /&gt;
*Motion.&lt;br /&gt;
&lt;br /&gt;
Provided that subjects are asked to minimize artifacts, he/she should be further&lt;br /&gt;
assisted in these efforts by providing a comfortable chair and a dimly lit room.&lt;br /&gt;
We will return to the role of reinforcement, but it is already clear that the&lt;br /&gt;
experimenter must carefully monitor the EEG and alert the subject in the case&lt;br /&gt;
he/she has forgotten some of the instructions.&lt;br /&gt;
When the experimenter is sure that his/her instructions have been well&lt;br /&gt;
understood, the recording session may start.&lt;br /&gt;
&lt;br /&gt;
Click the &#039;&#039;Start&#039;&#039; button to start the feedback experiment.&lt;br /&gt;
During the experiment, the subject&#039;s performance is written into a log window on the experimenter&#039;s screen, and recorded into a log file that is saved to disk in the session directory.&lt;br /&gt;
&lt;br /&gt;
==Monitoring the Recording==&lt;br /&gt;
After recording has started, one might feel the temptation to leave&lt;br /&gt;
the subject alone during the run since most of the experimental activities are&lt;br /&gt;
automated in BCI2000. On the contrary, the experimenter has several tasks:&lt;br /&gt;
*Filling in a run-sheet to report information that is not automatically recorded by BCI2000 and that will later help when data are analyzed.&lt;br /&gt;
*Monitoring the EEG waves, checking that the quality of recording does not decrease (electrode contact failure, muscular, EOG or motion artifacts, etc.)&lt;br /&gt;
*Reinforce the subject: warn him/her if he/she is producing artifacts, keep him/her alert if getting drowsy, give him/her feedback about his/her performance so that interest is kept high.&lt;br /&gt;
The run sheet is the most important means of communication between the&lt;br /&gt;
technician who performs the recordings and the person who analyzes the data&lt;br /&gt;
(or possibly the historical memory of whoever does both). It is important that&lt;br /&gt;
it is compiled carefully and that it is rich in what may seem to be obvious detail: only&lt;br /&gt;
time will say what is standard and what changes from session to session, and if&lt;br /&gt;
you will need to analyze data acquired years before, you will probably have a&lt;br /&gt;
problem if you did not note down all information.&lt;br /&gt;
&lt;br /&gt;
==Multiple Sessions==&lt;br /&gt;
Once a run has ended, BCI2000 goes into suspended state.&lt;br /&gt;
Further runs will be added to the session when you click &#039;&#039;Resume&#039;&#039;.&lt;br /&gt;
After the session has finished, you may want to save auto-adjusted parameters for the next session.&lt;br /&gt;
Use &#039;&#039;Save Parameters&#039;&#039; from the configuration window to do this.&lt;br /&gt;
&lt;br /&gt;
Alternatively, the &#039;&#039;Load Parameters&#039;&#039; dialog allows you to choose a data file rather than a parameter file, and thus use the configuration contained in a previous session&#039;s data file for the next session. However, parameters contained in a data file reflect the state at the &#039;&#039;beginning&#039;&#039; of the recording, so changes during a session&#039;s last run cannot be recovered that way.&lt;br /&gt;
&lt;br /&gt;
When starting the next session, don&#039;t forget to increment the &#039;&#039;SessionNumber&#039;&#039; parameter on the &#039;&#039;Storage&#039;&#039; tab. Otherwise, new runs will be added to the previous session&#039;s directory. As a safety net, BCI2000 will never overwrite existing data files, and it documents date and time in the &#039;&#039;StorageTime&#039;&#039; parameter. This allows to later separate data files into runs even if the &#039;&#039;SessionNumber&#039;&#039; parameter has not been increased.&lt;br /&gt;
&lt;br /&gt;
After each session, it is recommended that you analyze the recorded data in the same way as you did for the  [[User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session|initial session]]. This allows you to track and adapt to signal changes in the subject&#039;s parameters that may occur in the course of learning.&lt;br /&gt;
&lt;br /&gt;
==Finished==&lt;br /&gt;
Here, the Mu rhythm tutorial is finished. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now able to perform [[User Tutorial:Mu Rhythm BCI Tutorial|mu rhythm feedback experiments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Configuring_Online_Feedback&amp;diff=4593</id>
		<title>User Tutorial:Configuring Online Feedback</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Configuring_Online_Feedback&amp;diff=4593"/>
		<updated>2008-10-22T17:57:43Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Subject-Specific Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial step assumes that you have performed and [[User Tutorial:Analyzing the Initial Mu Rhythm Session|analyzed an initial session]].&lt;br /&gt;
Now you are going to create a subject-specific parameter configuration for on-line feedback.&lt;br /&gt;
&lt;br /&gt;
==Starting up BCI2000==&lt;br /&gt;
Start BCI2000 using the appropriate batch file at &amp;lt;tt&amp;gt;batch/CursorTask_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;. You might consider creating a link to this file on the desktop.&lt;br /&gt;
&lt;br /&gt;
==Subject-Specific Parameters==&lt;br /&gt;
In the next step, we will construct a full parameter file that is specific to that subject:&lt;br /&gt;
*In the configuration window, click &#039;&#039;Load Parameters&#039;&#039; to load &amp;lt;tt&amp;gt;parms/mu_tutorial/MuFeedback.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Additionally, load your amplifier configuration from &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Go to the &#039;&#039;Storage&#039;&#039; tab, and enter the subject&#039;s name or ID into the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
*Into the &#039;&#039;SubjectSession&#039;&#039; parameter, enter &#039;&#039;002&#039;&#039;.&lt;br /&gt;
===Configuring the Classifier===&lt;br /&gt;
Subject-specific electrode location and mu rhythm frequency are part of the classifier&#039;s configuration.&lt;br /&gt;
They are entered into the &#039;&#039;Classifier&#039;&#039; parameter on the &#039;&#039;Filtering&#039;&#039; tab; there, click the &#039;&#039;Edit Matrix&#039;&#039; button associated with the &#039;&#039;Classifier&#039;&#039; parameter.&lt;br /&gt;
#Set &#039;&#039;Number of columns&#039;&#039; to 4, and &#039;&#039;Number of rows&#039;&#039; to 1 (or the number of features that you wish to use); then, click &#039;&#039;Set new matrix size&#039;&#039; to apply your changes.&lt;br /&gt;
#In the first column (of the first row), labeled &#039;&#039;input channel&#039;&#039;, enter the location of the desired location, e.g. &amp;lt;tt&amp;gt;CP3&amp;lt;/tt&amp;gt;. If you did not specify electrode locations when configuring the spatial filter, enter the channel number associated with the feedback electrode.&lt;br /&gt;
#In the second column, labeled &#039;&#039;input element (bin)&#039;&#039;, enter feedback frequency in Hz, immediately followed with &#039;&#039;Hz&#039;&#039;, as in &amp;lt;tt&amp;gt;12Hz&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#In the third column, enter the value 2 corresponding to the control channel for vertical control of the cursor.&lt;br /&gt;
#In the fourth column, enter 1 as the weight.&lt;br /&gt;
#Repeat steps 2-5 for each additional feature moving down a row each time (i.e., enter the 2nd feature on the 2nd row, etc...).&lt;br /&gt;
#Finally, save your configuration to &amp;lt;tt&amp;gt;parms/subjects/mu_feedback/&amp;lt;Subject&amp;gt;002.prm&amp;lt;/tt&amp;gt;, or whereever you find appropriate.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
In the next step, you will learn how to actually [[User Tutorial:Performing a Mu Rhythm Feedback Session|perform a Mu rhythm feedback session]] using the configuration created in the present step.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]], [[User Reference:SpatialFilter]], [[User Reference:LinearClassifier]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4592</id>
		<title>User Tutorial:Analyzing the Initial Mu Rhythm Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4592"/>
		<updated>2008-10-22T17:54:34Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Analyzing Remaining Conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial step assumes that you have [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|performed an initial mu rhythm session]]. In order to identify the parameters (i.e., frequency and location) of a subject&#039;s mu rhythm, we will determine how different the EEG signal amplitude is for different types of imaginations that the subject performed during the recording. You will use the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool for this purpose.&lt;br /&gt;
&lt;br /&gt;
==Generating a Feature Plot==&lt;br /&gt;
The first step in these analyses is to separate data into amplitudes at individual &#039;&#039;&#039;frequencies&#039;&#039;&#039; and &#039;&#039;&#039;locations.&#039;&#039;&#039; These amplitudes are called &#039;&#039;features,&#039;&#039; and their correspondence with the subject&#039;s imagination will be plotted as a so-called &#039;&#039;feature map.&#039;&#039; From a feature map, it is possible to determine those frequencies and locations whose amplitude is maximally correlated with the subject&#039;s task, i.e., those features that are most different between two conditions. These features will subsequently be used to provide feedback in a BCI experiment.&lt;br /&gt;
&lt;br /&gt;
To generate a feature plot from the initial session&#039;s data, perform the following steps:&lt;br /&gt;
*Start the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool:&lt;br /&gt;
**If you have a version of Matlab installed, run &amp;lt;tt&amp;gt;tools/OfflineAnalysis/OfflineAnalysis.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**Otherwise, follow the instructions provided [[User_Reference:BCI2000_Offline_Analysis#Systems_that_do_not_have_MATLAB_installed_or_with_versions_that_predate_MATLAB_v7.0|here]].&lt;br /&gt;
*In the &#039;&#039;&#039;Analysis Domain&#039;&#039;&#039; field, choose &#039;&#039;Frequency&#039;&#039;.&lt;br /&gt;
*In the &#039;&#039;&#039;Acquisition Type&#039;&#039;&#039; field, choose &amp;quot;EEG&amp;quot;.&lt;br /&gt;
*As a &#039;&#039;&#039;Spatial Filter&#039;&#039;&#039;, choose &amp;quot;Common Average Reference (CAR)&amp;quot;.&lt;br /&gt;
*Enter &amp;lt;tt&amp;gt;states.StimulusBegin == 1&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Trial Change Condition&#039;&#039;&#039; field.&lt;br /&gt;
*Into the field labeled &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039;, enter &amp;lt;tt&amp;gt;states.StimulusCode == 0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Enter the word &amp;quot;Rest&amp;quot; into the field labeled &#039;&#039;&#039;Target Condition Label 1&#039;&#039;&#039;.&lt;br /&gt;
*Similarly, enter &amp;lt;tt&amp;gt;states.StimulusCode == 2&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039; field, and &amp;quot;Right Hand&amp;quot; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Click the &amp;quot;Add&amp;quot; button located besides the &#039;&#039;&#039;Data Files&#039;&#039;&#039; field. A file chooser dialog will appear; navigate to &amp;lt;tt&amp;gt;data/&amp;lt;Subject&amp;gt;001&amp;lt;/tt&amp;gt;, and select all &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files available there (use your keyboard&#039;s &#039;&#039;ctrl&#039;&#039; button to click-select multiple files), then click the dialog&#039;s &amp;quot;Open&amp;quot; button.&lt;br /&gt;
*Click &amp;quot;Generate Plots&amp;quot;, and wait for the feature plot to appear.&lt;br /&gt;
&lt;br /&gt;
Once the computation is complete, you will see a feature plot similar to the one below. In that plot, the horizontal axis corresponds to frequencies, and the vertical axis corresponds to individual channels. Color codes represent [[Glossary#r-squared|r-squared]] values, which are numbers between 0 and 1. R-squared values provide a measure for the amount to which a particular EEG feature (i.e., amplitude at a particular frequency and location) is influenced by the subject&#039;s task (e.g., hand vs. foot imagery).&lt;br /&gt;
&lt;br /&gt;
[[Image:eeg1FeaturePlt.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Typically, there will be clusters of large r-squared values in the feature plot. The initial step to configure the online system is to determine which brain signal feature differed the most between two particular tasks.  This is accomplished by picking the largest r-squared value from the map and by noting its corresponding frequency and location.  However, it is important to verify whether the feature in question is consistent with the [[User_Tutorial:Introduction_to_the_Mu_Rhythm#Physical_Properties|mu rhythm&#039;s known properties]]. This verification is necessary to avoid misconfiguration due to [[User_Tutorial:EEG_Measurement_Setup#EEG_Artifacts|EEG artifacts]], other noise, or random effects.&lt;br /&gt;
&lt;br /&gt;
==Generating Spectra and Topography Plots==&lt;br /&gt;
*Pick the four largest r-squared values from the feature map between 9 and 36Hz, and read off their frequencies and channels. The plot&#039;s &amp;quot;Data Cursor&amp;quot; tool (&#039;&#039;Data Cursor&#039;&#039; from the &#039;&#039;Tools&#039;&#039; menu) may be helpful for this.&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Spectra Channels&#039;&#039;&#039; field, enter the channel numbers you read off the feature map.&lt;br /&gt;
*In the &#039;&#039;&#039;Topo Frequencies&#039;&#039;&#039; field, enter the frequencies you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Plots&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[Image:MuRhythmModulation.PNG|600px]]&lt;br /&gt;
&lt;br /&gt;
The generated &#039;&#039;&#039;topography plots&#039;&#039;&#039; display the spatial distribution of r-squared values. In this comparison of EEG activity for right-hand movements and rest, there should be a clear maximum of r-squared values over the &#039;&#039;left&#039;&#039; motor cortex as shown in subfigure (A) and (B) above. &lt;br /&gt;
The generated &#039;&#039;&#039;spectra plots&#039;&#039;&#039; display amplitude distributions, and r-squared measure, over frequencies. Ideally, they should appear similar to the  (C) and (D) subfigures above.&lt;br /&gt;
&lt;br /&gt;
==Analyzing Remaining Conditions==&lt;br /&gt;
Up to now, you performed an analysis of how brain activity is related to imagined movements of the &#039;&#039;&#039;Right Hand.&#039;&#039;&#039; In order to choose the most useful channel and frequency for online feedback, perform similar analyses for the remaining conditions:&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Target Condition 2&#039;&#039;&#039; field, enter &amp;lt;tt&amp;gt;states.StimulusCode == 1&amp;lt;/tt&amp;gt;, and &#039;&#039;Left Hand&#039;&#039; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Make sure the &#039;&#039;&#039;Overwrite existing plots&#039;&#039;&#039; check box is unchecked.&lt;br /&gt;
*Click &#039;&#039;Generate Plots&#039;&#039; to create a feature plot for imagined movement of the left hand.&lt;br /&gt;
*As previously, pick the four largest r-squared values, and compute spectra and topographies for their channels and frequencies.&lt;br /&gt;
*Results should somewhat resemble that derived for the right hand, except that the colored activity changes should appear over the right and not the left motor cortex.&lt;br /&gt;
*Repeat the analysis for conditions &amp;lt;tt&amp;gt;states.StimulusCode == 3&amp;lt;/tt&amp;gt;: &#039;&#039;Both Hands&#039;&#039;, and &amp;lt;tt&amp;gt;states.StimulusCode == 4&amp;lt;/tt&amp;gt;: &#039;&#039;Both Feet&#039;&#039;.&lt;br /&gt;
**For the &#039;&#039;both hands&#039;&#039; condition, the result should resemble a combination of &#039;&#039;left hand&#039;&#039; and &#039;&#039;right hand&#039;&#039; results.&lt;br /&gt;
**For &#039;&#039;both feet,&#039;&#039; modulated activity should be centered around electrode Cz.&lt;br /&gt;
&lt;br /&gt;
==Picking Optimal Features==&lt;br /&gt;
By now, you should have identified a number of maximum r-squared values for each condition, and you should have some impression how plausible corresponding channels and frequencies are.&lt;br /&gt;
*Remove all implausible maxima from your list.&lt;br /&gt;
*From the remaining entries, pick the one with the largest r-squared value. Note this entry&#039;s frequency and electrode name, and the subject instruction (condition) that is associated with it. These are the parameters that you will use to configure the online system.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Configuring Online Feedback|Configuring Online Feedback]] shows you how to configure the BCI system using the parameters obtained in the analysis.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4591</id>
		<title>User Tutorial:Analyzing the Initial Mu Rhythm Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4591"/>
		<updated>2008-10-22T17:50:36Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Generating Spectra and Topography Plots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial step assumes that you have [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|performed an initial mu rhythm session]]. In order to identify the parameters (i.e., frequency and location) of a subject&#039;s mu rhythm, we will determine how different the EEG signal amplitude is for different types of imaginations that the subject performed during the recording. You will use the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool for this purpose.&lt;br /&gt;
&lt;br /&gt;
==Generating a Feature Plot==&lt;br /&gt;
The first step in these analyses is to separate data into amplitudes at individual &#039;&#039;&#039;frequencies&#039;&#039;&#039; and &#039;&#039;&#039;locations.&#039;&#039;&#039; These amplitudes are called &#039;&#039;features,&#039;&#039; and their correspondence with the subject&#039;s imagination will be plotted as a so-called &#039;&#039;feature map.&#039;&#039; From a feature map, it is possible to determine those frequencies and locations whose amplitude is maximally correlated with the subject&#039;s task, i.e., those features that are most different between two conditions. These features will subsequently be used to provide feedback in a BCI experiment.&lt;br /&gt;
&lt;br /&gt;
To generate a feature plot from the initial session&#039;s data, perform the following steps:&lt;br /&gt;
*Start the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool:&lt;br /&gt;
**If you have a version of Matlab installed, run &amp;lt;tt&amp;gt;tools/OfflineAnalysis/OfflineAnalysis.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**Otherwise, follow the instructions provided [[User_Reference:BCI2000_Offline_Analysis#Systems_that_do_not_have_MATLAB_installed_or_with_versions_that_predate_MATLAB_v7.0|here]].&lt;br /&gt;
*In the &#039;&#039;&#039;Analysis Domain&#039;&#039;&#039; field, choose &#039;&#039;Frequency&#039;&#039;.&lt;br /&gt;
*In the &#039;&#039;&#039;Acquisition Type&#039;&#039;&#039; field, choose &amp;quot;EEG&amp;quot;.&lt;br /&gt;
*As a &#039;&#039;&#039;Spatial Filter&#039;&#039;&#039;, choose &amp;quot;Common Average Reference (CAR)&amp;quot;.&lt;br /&gt;
*Enter &amp;lt;tt&amp;gt;states.StimulusBegin == 1&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Trial Change Condition&#039;&#039;&#039; field.&lt;br /&gt;
*Into the field labeled &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039;, enter &amp;lt;tt&amp;gt;states.StimulusCode == 0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Enter the word &amp;quot;Rest&amp;quot; into the field labeled &#039;&#039;&#039;Target Condition Label 1&#039;&#039;&#039;.&lt;br /&gt;
*Similarly, enter &amp;lt;tt&amp;gt;states.StimulusCode == 2&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039; field, and &amp;quot;Right Hand&amp;quot; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Click the &amp;quot;Add&amp;quot; button located besides the &#039;&#039;&#039;Data Files&#039;&#039;&#039; field. A file chooser dialog will appear; navigate to &amp;lt;tt&amp;gt;data/&amp;lt;Subject&amp;gt;001&amp;lt;/tt&amp;gt;, and select all &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files available there (use your keyboard&#039;s &#039;&#039;ctrl&#039;&#039; button to click-select multiple files), then click the dialog&#039;s &amp;quot;Open&amp;quot; button.&lt;br /&gt;
*Click &amp;quot;Generate Plots&amp;quot;, and wait for the feature plot to appear.&lt;br /&gt;
&lt;br /&gt;
Once the computation is complete, you will see a feature plot similar to the one below. In that plot, the horizontal axis corresponds to frequencies, and the vertical axis corresponds to individual channels. Color codes represent [[Glossary#r-squared|r-squared]] values, which are numbers between 0 and 1. R-squared values provide a measure for the amount to which a particular EEG feature (i.e., amplitude at a particular frequency and location) is influenced by the subject&#039;s task (e.g., hand vs. foot imagery).&lt;br /&gt;
&lt;br /&gt;
[[Image:eeg1FeaturePlt.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Typically, there will be clusters of large r-squared values in the feature plot. The initial step to configure the online system is to determine which brain signal feature differed the most between two particular tasks.  This is accomplished by picking the largest r-squared value from the map and by noting its corresponding frequency and location.  However, it is important to verify whether the feature in question is consistent with the [[User_Tutorial:Introduction_to_the_Mu_Rhythm#Physical_Properties|mu rhythm&#039;s known properties]]. This verification is necessary to avoid misconfiguration due to [[User_Tutorial:EEG_Measurement_Setup#EEG_Artifacts|EEG artifacts]], other noise, or random effects.&lt;br /&gt;
&lt;br /&gt;
==Generating Spectra and Topography Plots==&lt;br /&gt;
*Pick the four largest r-squared values from the feature map between 9 and 36Hz, and read off their frequencies and channels. The plot&#039;s &amp;quot;Data Cursor&amp;quot; tool (&#039;&#039;Data Cursor&#039;&#039; from the &#039;&#039;Tools&#039;&#039; menu) may be helpful for this.&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Spectra Channels&#039;&#039;&#039; field, enter the channel numbers you read off the feature map.&lt;br /&gt;
*In the &#039;&#039;&#039;Topo Frequencies&#039;&#039;&#039; field, enter the frequencies you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Plots&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[Image:MuRhythmModulation.PNG|600px]]&lt;br /&gt;
&lt;br /&gt;
The generated &#039;&#039;&#039;topography plots&#039;&#039;&#039; display the spatial distribution of r-squared values. In this comparison of EEG activity for right-hand movements and rest, there should be a clear maximum of r-squared values over the &#039;&#039;left&#039;&#039; motor cortex as shown in subfigure (A) and (B) above. &lt;br /&gt;
The generated &#039;&#039;&#039;spectra plots&#039;&#039;&#039; display amplitude distributions, and r-squared measure, over frequencies. Ideally, they should appear similar to the  (C) and (D) subfigures above.&lt;br /&gt;
&lt;br /&gt;
==Analyzing Remaining Conditions==&lt;br /&gt;
Up to now, you performed an analysis of how imagined movement of the &#039;&#039;&#039;Right Hand&#039;&#039;&#039; is correlated with brain activity. In order to choose the most useful channel and frequency for online feedback, perform similar analyses for the remaining conditions:&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Target Condition 2&#039;&#039;&#039; field, enter &amp;lt;tt&amp;gt;states.StimulusCode == 1&amp;lt;/tt&amp;gt;, and &#039;&#039;Left Hand&#039;&#039; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Make sure the &#039;&#039;&#039;Overwrite existing plots&#039;&#039;&#039; check box is unchecked.&lt;br /&gt;
*Click &#039;&#039;Generate Plots&#039;&#039; to create a feature plot for imagined movement of the left hand.&lt;br /&gt;
*As previously, pick the four largest r-squared values, and compute spectra and topographies for their channels and frequencies.&lt;br /&gt;
*Results should be similar to right hand results, except that modulated activity should originate from the right rather than the left motor cortex.&lt;br /&gt;
*Repeat the analysis for conditions &amp;lt;tt&amp;gt;states.StimulusCode == 3&amp;lt;/tt&amp;gt;: &#039;&#039;Both Hands&#039;&#039;, and &amp;lt;tt&amp;gt;states.StimulusCode == 4&amp;lt;/tt&amp;gt;: &#039;&#039;Both Feet&#039;&#039;.&lt;br /&gt;
**For the &#039;&#039;both hands&#039;&#039; condition, the result should resemble a combination of &#039;&#039;left hand&#039;&#039; and &#039;&#039;right hand&#039;&#039; results.&lt;br /&gt;
**For &#039;&#039;both feet&#039;&#039;, modulated activity should be centered around electrode Cz.&lt;br /&gt;
&lt;br /&gt;
==Picking Optimal Features==&lt;br /&gt;
By now, you should have identified a number of maximum r-squared values for each condition, and you should have some impression how plausible corresponding channels and frequencies are.&lt;br /&gt;
*Remove all implausible maxima from your list.&lt;br /&gt;
*From the remaining entries, pick the one with the largest r-squared value. Note this entry&#039;s frequency and electrode name, and the subject instruction (condition) that is associated with it. These are the parameters that you will use to configure the online system.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Configuring Online Feedback|Configuring Online Feedback]] shows you how to configure the BCI system using the parameters obtained in the analysis.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4590</id>
		<title>User Tutorial:Analyzing the Initial Mu Rhythm Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4590"/>
		<updated>2008-10-22T17:48:50Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Generating Spectra and Topography Plots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial step assumes that you have [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|performed an initial mu rhythm session]]. In order to identify the parameters (i.e., frequency and location) of a subject&#039;s mu rhythm, we will determine how different the EEG signal amplitude is for different types of imaginations that the subject performed during the recording. You will use the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool for this purpose.&lt;br /&gt;
&lt;br /&gt;
==Generating a Feature Plot==&lt;br /&gt;
The first step in these analyses is to separate data into amplitudes at individual &#039;&#039;&#039;frequencies&#039;&#039;&#039; and &#039;&#039;&#039;locations.&#039;&#039;&#039; These amplitudes are called &#039;&#039;features,&#039;&#039; and their correspondence with the subject&#039;s imagination will be plotted as a so-called &#039;&#039;feature map.&#039;&#039; From a feature map, it is possible to determine those frequencies and locations whose amplitude is maximally correlated with the subject&#039;s task, i.e., those features that are most different between two conditions. These features will subsequently be used to provide feedback in a BCI experiment.&lt;br /&gt;
&lt;br /&gt;
To generate a feature plot from the initial session&#039;s data, perform the following steps:&lt;br /&gt;
*Start the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool:&lt;br /&gt;
**If you have a version of Matlab installed, run &amp;lt;tt&amp;gt;tools/OfflineAnalysis/OfflineAnalysis.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**Otherwise, follow the instructions provided [[User_Reference:BCI2000_Offline_Analysis#Systems_that_do_not_have_MATLAB_installed_or_with_versions_that_predate_MATLAB_v7.0|here]].&lt;br /&gt;
*In the &#039;&#039;&#039;Analysis Domain&#039;&#039;&#039; field, choose &#039;&#039;Frequency&#039;&#039;.&lt;br /&gt;
*In the &#039;&#039;&#039;Acquisition Type&#039;&#039;&#039; field, choose &amp;quot;EEG&amp;quot;.&lt;br /&gt;
*As a &#039;&#039;&#039;Spatial Filter&#039;&#039;&#039;, choose &amp;quot;Common Average Reference (CAR)&amp;quot;.&lt;br /&gt;
*Enter &amp;lt;tt&amp;gt;states.StimulusBegin == 1&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Trial Change Condition&#039;&#039;&#039; field.&lt;br /&gt;
*Into the field labeled &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039;, enter &amp;lt;tt&amp;gt;states.StimulusCode == 0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Enter the word &amp;quot;Rest&amp;quot; into the field labeled &#039;&#039;&#039;Target Condition Label 1&#039;&#039;&#039;.&lt;br /&gt;
*Similarly, enter &amp;lt;tt&amp;gt;states.StimulusCode == 2&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039; field, and &amp;quot;Right Hand&amp;quot; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Click the &amp;quot;Add&amp;quot; button located besides the &#039;&#039;&#039;Data Files&#039;&#039;&#039; field. A file chooser dialog will appear; navigate to &amp;lt;tt&amp;gt;data/&amp;lt;Subject&amp;gt;001&amp;lt;/tt&amp;gt;, and select all &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files available there (use your keyboard&#039;s &#039;&#039;ctrl&#039;&#039; button to click-select multiple files), then click the dialog&#039;s &amp;quot;Open&amp;quot; button.&lt;br /&gt;
*Click &amp;quot;Generate Plots&amp;quot;, and wait for the feature plot to appear.&lt;br /&gt;
&lt;br /&gt;
Once the computation is complete, you will see a feature plot similar to the one below. In that plot, the horizontal axis corresponds to frequencies, and the vertical axis corresponds to individual channels. Color codes represent [[Glossary#r-squared|r-squared]] values, which are numbers between 0 and 1. R-squared values provide a measure for the amount to which a particular EEG feature (i.e., amplitude at a particular frequency and location) is influenced by the subject&#039;s task (e.g., hand vs. foot imagery).&lt;br /&gt;
&lt;br /&gt;
[[Image:eeg1FeaturePlt.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Typically, there will be clusters of large r-squared values in the feature plot. The initial step to configure the online system is to determine which brain signal feature differed the most between two particular tasks.  This is accomplished by picking the largest r-squared value from the map and by noting its corresponding frequency and location.  However, it is important to verify whether the feature in question is consistent with the [[User_Tutorial:Introduction_to_the_Mu_Rhythm#Physical_Properties|mu rhythm&#039;s known properties]]. This verification is necessary to avoid misconfiguration due to [[User_Tutorial:EEG_Measurement_Setup#EEG_Artifacts|EEG artifacts]], other noise, or random effects.&lt;br /&gt;
&lt;br /&gt;
==Generating Spectra and Topography Plots==&lt;br /&gt;
*Pick the four largest r-squared values from the feature map between 9 and 36Hz, and read off their frequencies and channels. The plot&#039;s &amp;quot;Data Cursor&amp;quot; tool (&#039;&#039;Data Cursor&#039;&#039; from the &#039;&#039;Tools&#039;&#039; menu) may be helpful for this.&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Spectra Channels&#039;&#039;&#039; field, enter the channel numbers you read off the feature map.&lt;br /&gt;
*In the &#039;&#039;&#039;Topo Frequencies&#039;&#039;&#039; field, enter the frequencies you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Plots&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[Image:MuRhythmModulation.PNG|600px]]&lt;br /&gt;
&lt;br /&gt;
The generated &#039;&#039;&#039;topography plots&#039;&#039;&#039; display the spatial distribution of r-squared values. For right-hand movement imagination, there should be a clear maximum of r-squared values over the &#039;&#039;left&#039;&#039; motor cortex, as displayed in subfigure (A) and (B) above. &lt;br /&gt;
The generated &#039;&#039;&#039;spectra plots&#039;&#039;&#039; display amplitude distributions, and r-squared measure, over frequencies. Ideally, they should appear similar to the  (C) and (D) subfigures above.&lt;br /&gt;
&lt;br /&gt;
==Analyzing Remaining Conditions==&lt;br /&gt;
Up to now, you performed an analysis of how imagined movement of the &#039;&#039;&#039;Right Hand&#039;&#039;&#039; is correlated with brain activity. In order to choose the most useful channel and frequency for online feedback, perform similar analyses for the remaining conditions:&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Target Condition 2&#039;&#039;&#039; field, enter &amp;lt;tt&amp;gt;states.StimulusCode == 1&amp;lt;/tt&amp;gt;, and &#039;&#039;Left Hand&#039;&#039; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Make sure the &#039;&#039;&#039;Overwrite existing plots&#039;&#039;&#039; check box is unchecked.&lt;br /&gt;
*Click &#039;&#039;Generate Plots&#039;&#039; to create a feature plot for imagined movement of the left hand.&lt;br /&gt;
*As previously, pick the four largest r-squared values, and compute spectra and topographies for their channels and frequencies.&lt;br /&gt;
*Results should be similar to right hand results, except that modulated activity should originate from the right rather than the left motor cortex.&lt;br /&gt;
*Repeat the analysis for conditions &amp;lt;tt&amp;gt;states.StimulusCode == 3&amp;lt;/tt&amp;gt;: &#039;&#039;Both Hands&#039;&#039;, and &amp;lt;tt&amp;gt;states.StimulusCode == 4&amp;lt;/tt&amp;gt;: &#039;&#039;Both Feet&#039;&#039;.&lt;br /&gt;
**For the &#039;&#039;both hands&#039;&#039; condition, the result should resemble a combination of &#039;&#039;left hand&#039;&#039; and &#039;&#039;right hand&#039;&#039; results.&lt;br /&gt;
**For &#039;&#039;both feet&#039;&#039;, modulated activity should be centered around electrode Cz.&lt;br /&gt;
&lt;br /&gt;
==Picking Optimal Features==&lt;br /&gt;
By now, you should have identified a number of maximum r-squared values for each condition, and you should have some impression how plausible corresponding channels and frequencies are.&lt;br /&gt;
*Remove all implausible maxima from your list.&lt;br /&gt;
*From the remaining entries, pick the one with the largest r-squared value. Note this entry&#039;s frequency and electrode name, and the subject instruction (condition) that is associated with it. These are the parameters that you will use to configure the online system.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Configuring Online Feedback|Configuring Online Feedback]] shows you how to configure the BCI system using the parameters obtained in the analysis.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4589</id>
		<title>User Tutorial:Analyzing the Initial Mu Rhythm Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4589"/>
		<updated>2008-10-22T17:40:46Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Generating a Feature Plot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial step assumes that you have [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|performed an initial mu rhythm session]]. In order to identify the parameters (i.e., frequency and location) of a subject&#039;s mu rhythm, we will determine how different the EEG signal amplitude is for different types of imaginations that the subject performed during the recording. You will use the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool for this purpose.&lt;br /&gt;
&lt;br /&gt;
==Generating a Feature Plot==&lt;br /&gt;
The first step in these analyses is to separate data into amplitudes at individual &#039;&#039;&#039;frequencies&#039;&#039;&#039; and &#039;&#039;&#039;locations.&#039;&#039;&#039; These amplitudes are called &#039;&#039;features,&#039;&#039; and their correspondence with the subject&#039;s imagination will be plotted as a so-called &#039;&#039;feature map.&#039;&#039; From a feature map, it is possible to determine those frequencies and locations whose amplitude is maximally correlated with the subject&#039;s task, i.e., those features that are most different between two conditions. These features will subsequently be used to provide feedback in a BCI experiment.&lt;br /&gt;
&lt;br /&gt;
To generate a feature plot from the initial session&#039;s data, perform the following steps:&lt;br /&gt;
*Start the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool:&lt;br /&gt;
**If you have a version of Matlab installed, run &amp;lt;tt&amp;gt;tools/OfflineAnalysis/OfflineAnalysis.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**Otherwise, follow the instructions provided [[User_Reference:BCI2000_Offline_Analysis#Systems_that_do_not_have_MATLAB_installed_or_with_versions_that_predate_MATLAB_v7.0|here]].&lt;br /&gt;
*In the &#039;&#039;&#039;Analysis Domain&#039;&#039;&#039; field, choose &#039;&#039;Frequency&#039;&#039;.&lt;br /&gt;
*In the &#039;&#039;&#039;Acquisition Type&#039;&#039;&#039; field, choose &amp;quot;EEG&amp;quot;.&lt;br /&gt;
*As a &#039;&#039;&#039;Spatial Filter&#039;&#039;&#039;, choose &amp;quot;Common Average Reference (CAR)&amp;quot;.&lt;br /&gt;
*Enter &amp;lt;tt&amp;gt;states.StimulusBegin == 1&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Trial Change Condition&#039;&#039;&#039; field.&lt;br /&gt;
*Into the field labeled &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039;, enter &amp;lt;tt&amp;gt;states.StimulusCode == 0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Enter the word &amp;quot;Rest&amp;quot; into the field labeled &#039;&#039;&#039;Target Condition Label 1&#039;&#039;&#039;.&lt;br /&gt;
*Similarly, enter &amp;lt;tt&amp;gt;states.StimulusCode == 2&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039; field, and &amp;quot;Right Hand&amp;quot; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Click the &amp;quot;Add&amp;quot; button located besides the &#039;&#039;&#039;Data Files&#039;&#039;&#039; field. A file chooser dialog will appear; navigate to &amp;lt;tt&amp;gt;data/&amp;lt;Subject&amp;gt;001&amp;lt;/tt&amp;gt;, and select all &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files available there (use your keyboard&#039;s &#039;&#039;ctrl&#039;&#039; button to click-select multiple files), then click the dialog&#039;s &amp;quot;Open&amp;quot; button.&lt;br /&gt;
*Click &amp;quot;Generate Plots&amp;quot;, and wait for the feature plot to appear.&lt;br /&gt;
&lt;br /&gt;
Once the computation is complete, you will see a feature plot similar to the one below. In that plot, the horizontal axis corresponds to frequencies, and the vertical axis corresponds to individual channels. Color codes represent [[Glossary#r-squared|r-squared]] values, which are numbers between 0 and 1. R-squared values provide a measure for the amount to which a particular EEG feature (i.e., amplitude at a particular frequency and location) is influenced by the subject&#039;s task (e.g., hand vs. foot imagery).&lt;br /&gt;
&lt;br /&gt;
[[Image:eeg1FeaturePlt.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Typically, there will be clusters of large r-squared values in the feature plot. The initial step to configure the online system is to determine which brain signal feature differed the most between two particular tasks.  This is accomplished by picking the largest r-squared value from the map and by noting its corresponding frequency and location.  However, it is important to verify whether the feature in question is consistent with the [[User_Tutorial:Introduction_to_the_Mu_Rhythm#Physical_Properties|mu rhythm&#039;s known properties]]. This verification is necessary to avoid misconfiguration due to [[User_Tutorial:EEG_Measurement_Setup#EEG_Artifacts|EEG artifacts]], other noise, or random effects.&lt;br /&gt;
&lt;br /&gt;
==Generating Spectra and Topography Plots==&lt;br /&gt;
*Pick the four largest r-squared values from the feature map between 9 and 36Hz, and read off their frequencies and channels. The plot&#039;s &amp;quot;Data Cursor&amp;quot; tool (&#039;&#039;Data Cursor&#039;&#039; from the &#039;&#039;Tools&#039;&#039; menu) may be helpful for this.&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Spectra Channels&#039;&#039;&#039; field, enter the channel numbers you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Spectra&#039;&#039;&#039; button. &#039;&#039;(Available in future versions of the Offline Analysis tool.)&#039;&#039;&lt;br /&gt;
*In the &#039;&#039;&#039;Topo Frequencies&#039;&#039;&#039; field, enter the frequencies you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Topos&#039;&#039;&#039; button. &#039;&#039;(Available in future versions of the Offline Analysis tool. In the current version, click &amp;quot;Generate Plots&amp;quot;.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:MuRhythmModulation.PNG|600px]]&lt;br /&gt;
&lt;br /&gt;
The generated &#039;&#039;&#039;topography plots&#039;&#039;&#039; display the spatial distribution of r-squared values. For right-hand movement imagination, there should be a clear maximum of r-squared values over the &#039;&#039;left&#039;&#039; motor cortex, as displayed in subfigure (A) and (B) above. &lt;br /&gt;
The generated &#039;&#039;&#039;spectra plots&#039;&#039;&#039; display amplitude distributions, and r-squared measure, over frequencies. Ideally, they should appear similar to the  (C) and (D) subfigures above.&lt;br /&gt;
&lt;br /&gt;
==Analyzing Remaining Conditions==&lt;br /&gt;
Up to now, you performed an analysis of how imagined movement of the &#039;&#039;&#039;Right Hand&#039;&#039;&#039; is correlated with brain activity. In order to choose the most useful channel and frequency for online feedback, perform similar analyses for the remaining conditions:&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Target Condition 2&#039;&#039;&#039; field, enter &amp;lt;tt&amp;gt;states.StimulusCode == 1&amp;lt;/tt&amp;gt;, and &#039;&#039;Left Hand&#039;&#039; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Make sure the &#039;&#039;&#039;Overwrite existing plots&#039;&#039;&#039; check box is unchecked.&lt;br /&gt;
*Click &#039;&#039;Generate Plots&#039;&#039; to create a feature plot for imagined movement of the left hand.&lt;br /&gt;
*As previously, pick the four largest r-squared values, and compute spectra and topographies for their channels and frequencies.&lt;br /&gt;
*Results should be similar to right hand results, except that modulated activity should originate from the right rather than the left motor cortex.&lt;br /&gt;
*Repeat the analysis for conditions &amp;lt;tt&amp;gt;states.StimulusCode == 3&amp;lt;/tt&amp;gt;: &#039;&#039;Both Hands&#039;&#039;, and &amp;lt;tt&amp;gt;states.StimulusCode == 4&amp;lt;/tt&amp;gt;: &#039;&#039;Both Feet&#039;&#039;.&lt;br /&gt;
**For the &#039;&#039;both hands&#039;&#039; condition, the result should resemble a combination of &#039;&#039;left hand&#039;&#039; and &#039;&#039;right hand&#039;&#039; results.&lt;br /&gt;
**For &#039;&#039;both feet&#039;&#039;, modulated activity should be centered around electrode Cz.&lt;br /&gt;
&lt;br /&gt;
==Picking Optimal Features==&lt;br /&gt;
By now, you should have identified a number of maximum r-squared values for each condition, and you should have some impression how plausible corresponding channels and frequencies are.&lt;br /&gt;
*Remove all implausible maxima from your list.&lt;br /&gt;
*From the remaining entries, pick the one with the largest r-squared value. Note this entry&#039;s frequency and electrode name, and the subject instruction (condition) that is associated with it. These are the parameters that you will use to configure the online system.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Configuring Online Feedback|Configuring Online Feedback]] shows you how to configure the BCI system using the parameters obtained in the analysis.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4543</id>
		<title>User Tutorial:Analyzing the Initial Mu Rhythm Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Analyzing_the_Initial_Mu_Rhythm_Session&amp;diff=4543"/>
		<updated>2008-10-21T20:41:00Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial step assumes that you have [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|performed an initial mu rhythm session]]. In order to identify the parameters (i.e., frequency and location) of a subject&#039;s mu rhythm, we will determine how different the EEG signal amplitude is for different types of imaginations that the subject performed during the recording. You will use the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool for this purpose.&lt;br /&gt;
&lt;br /&gt;
==Generating a Feature Plot==&lt;br /&gt;
The first step in these analyses is to separate data into amplitudes at individual &#039;&#039;&#039;frequencies&#039;&#039;&#039; and &#039;&#039;&#039;locations.&#039;&#039;&#039; These amplitudes are called &#039;&#039;features,&#039;&#039; and their correspondence with the subject&#039;s imagination will be plotted as a so-called &#039;&#039;feature map.&#039;&#039; From a feature map, it is possible to determine those frequencies and locations whose amplitude is maximally correlated with the subject&#039;s task, i.e., those features that are most different between two conditions. These features will subsequently be used to provide feedback in a BCI experiment.&lt;br /&gt;
&lt;br /&gt;
To generate a feature plot from the initial session&#039;s data, perform the following steps:&lt;br /&gt;
*Start the [[User Reference:BCI2000 Offline Analysis|BCI2000 Offline Analysis]] tool:&lt;br /&gt;
**If you have a version of Matlab installed, run &amp;lt;tt&amp;gt;tools/OfflineAnalysis/OfflineAnalysis.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**Otherwise, follow the instructions provided [[User_Reference:BCI2000_Offline_Analysis#Systems_that_do_not_have_MATLAB_installed_or_with_versions_that_predate_MATLAB_v7.0|here]].&lt;br /&gt;
*In the &#039;&#039;&#039;Analysis Domain&#039;&#039;&#039; field, choose &#039;&#039;Frequency&#039;&#039;.&lt;br /&gt;
*In the &#039;&#039;&#039;Acquisition Type&#039;&#039;&#039; field, choose &amp;quot;EEG&amp;quot;.&lt;br /&gt;
*As a &#039;&#039;&#039;Spatial Filter&#039;&#039;&#039;, choose &amp;quot;Common Average Reference (CAR)&amp;quot;.&lt;br /&gt;
*Enter &amp;lt;tt&amp;gt;states.StimulusBegin == 1&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Trial Change Condition&#039;&#039;&#039; field.&lt;br /&gt;
*Into the field labeled &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039;, enter &amp;lt;tt&amp;gt;states.StimulusCode == 0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Enter the word &amp;quot;Rest&amp;quot; into the field labeled &#039;&#039;&#039;Target Condition Label 1&#039;&#039;&#039;.&lt;br /&gt;
*Similarly, enter &amp;lt;tt&amp;gt;states.StimulusCode == 2&amp;lt;/tt&amp;gt; into the &#039;&#039;&#039;Target Condition 1&#039;&#039;&#039; field, and &amp;quot;Right Hand&amp;quot; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Click the &amp;quot;Add&amp;quot; button located besides the &#039;&#039;&#039;Data Files&#039;&#039;&#039; field. A file chooser dialog will appear; navigate to &amp;lt;tt&amp;gt;data/&amp;lt;Subject&amp;gt;001&amp;lt;/tt&amp;gt;, and select all &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files available there (use your keyboard&#039;s &#039;&#039;ctrl&#039;&#039; button to click-select multiple files), then click the dialog&#039;s &amp;quot;Open&amp;quot; button.&lt;br /&gt;
*Click &amp;quot;Generate Plots&amp;quot;, and wait for the feature plot to appear.&lt;br /&gt;
&lt;br /&gt;
Once the computation is complete, you will see a feature plot similar to the one below. In that plot, the horizontal axis corresponds to frequencies, and the vertical axis corresponds to individual channels. Color codes represent [[Glossary#r-squared|r-squared]] values; these are numbers between 0 and 1, providing a measure for the amount to which signal amplitude is determined by the subject&#039;s imagination.&lt;br /&gt;
&lt;br /&gt;
[[Image:eeg1FeaturePlt.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Typically, there will be clusters of large r-squared values in the feature plot. In principle, picking the largest r-squared value from the map, and using its frequency and channel to configure the online system, would be sufficient. Still, it is important to check whether the signal in question is consistent with the [[User_Tutorial:Introduction_to_the_Mu_Rhythm#Physical_Properties|mu rhythm&#039;s known properties]]. This way, it is possible to avoid misconfiguration due to [[User_Tutorial:EEG_Measurement_Setup#EEG_Artifacts|EEG artifacts]], other noise, or random effects.&lt;br /&gt;
&lt;br /&gt;
==Generating Spectra and Topography Plots==&lt;br /&gt;
*Pick the four largest r-squared values from the feature map between 9 and 36Hz, and read off their frequencies and channels. The plot&#039;s &amp;quot;Data Cursor&amp;quot; tool (&#039;&#039;Data Cursor&#039;&#039; from the &#039;&#039;Tools&#039;&#039; menu) may be helpful for this.&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Spectra Channels&#039;&#039;&#039; field, enter the channel numbers you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Spectra&#039;&#039;&#039; button. &#039;&#039;(Available in future versions of the Offline Analysis tool.)&#039;&#039;&lt;br /&gt;
*In the &#039;&#039;&#039;Topo Frequencies&#039;&#039;&#039; field, enter the frequencies you read off the feature map.&lt;br /&gt;
*Click the &#039;&#039;&#039;Generate Topos&#039;&#039;&#039; button. &#039;&#039;(Available in future versions of the Offline Analysis tool. In the current version, click &amp;quot;Generate Plots&amp;quot;.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:MuRhythmModulation.PNG|600px]]&lt;br /&gt;
&lt;br /&gt;
The generated &#039;&#039;&#039;topography plots&#039;&#039;&#039; display the spatial distribution of r-squared values. For right-hand movement imagination, there should be a clear maximum of r-squared values over the &#039;&#039;left&#039;&#039; motor cortex, as displayed in subfigure (A) and (B) above. &lt;br /&gt;
The generated &#039;&#039;&#039;spectra plots&#039;&#039;&#039; display amplitude distributions, and r-squared measure, over frequencies. Ideally, they should appear similar to the  (C) and (D) subfigures above.&lt;br /&gt;
&lt;br /&gt;
==Analyzing Remaining Conditions==&lt;br /&gt;
Up to now, you performed an analysis of how imagined movement of the &#039;&#039;&#039;Right Hand&#039;&#039;&#039; is correlated with brain activity. In order to choose the most useful channel and frequency for online feedback, perform similar analyses for the remaining conditions:&lt;br /&gt;
*In the analysis program&#039;s &#039;&#039;&#039;Target Condition 2&#039;&#039;&#039; field, enter &amp;lt;tt&amp;gt;states.StimulusCode == 1&amp;lt;/tt&amp;gt;, and &#039;&#039;Left Hand&#039;&#039; into &#039;&#039;&#039;Target Condition Label 2&#039;&#039;&#039;.&lt;br /&gt;
*Make sure the &#039;&#039;&#039;Overwrite existing plots&#039;&#039;&#039; check box is unchecked.&lt;br /&gt;
*Click &#039;&#039;Generate Plots&#039;&#039; to create a feature plot for imagined movement of the left hand.&lt;br /&gt;
*As previously, pick the four largest r-squared values, and compute spectra and topographies for their channels and frequencies.&lt;br /&gt;
*Results should be similar to right hand results, except that modulated activity should originate from the right rather than the left motor cortex.&lt;br /&gt;
*Repeat the analysis for conditions &amp;lt;tt&amp;gt;states.StimulusCode == 3&amp;lt;/tt&amp;gt;: &#039;&#039;Both Hands&#039;&#039;, and &amp;lt;tt&amp;gt;states.StimulusCode == 4&amp;lt;/tt&amp;gt;: &#039;&#039;Both Feet&#039;&#039;.&lt;br /&gt;
**For the &#039;&#039;both hands&#039;&#039; condition, the result should resemble a combination of &#039;&#039;left hand&#039;&#039; and &#039;&#039;right hand&#039;&#039; results.&lt;br /&gt;
**For &#039;&#039;both feet&#039;&#039;, modulated activity should be centered around electrode Cz.&lt;br /&gt;
&lt;br /&gt;
==Picking Optimal Features==&lt;br /&gt;
By now, you should have identified a number of maximum r-squared values for each condition, and you should have some impression how plausible corresponding channels and frequencies are.&lt;br /&gt;
*Remove all implausible maxima from your list.&lt;br /&gt;
*From the remaining entries, pick the one with the largest r-squared value. Note this entry&#039;s frequency and electrode name, and the subject instruction (condition) that is associated with it. These are the parameters that you will use to configure the online system.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Configuring Online Feedback|Configuring Online Feedback]] shows you how to configure the BCI system using the parameters obtained in the analysis.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session&amp;diff=4542</id>
		<title>User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session&amp;diff=4542"/>
		<updated>2008-10-21T20:33:20Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Subject instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although the [[User Tutorial:Introduction to the Mu Rhythm|basic properties of the Mu rhythm]] are identical for all humans, spatial patterns and exact frequencies are different across people. Thus, it is necessary to obtain these individual parameters prior to any feedback experiments, i.e., to calibrate the BCI system using data acquired from an initial session.&lt;br /&gt;
&lt;br /&gt;
==Experimental Design==&lt;br /&gt;
In this initial session, the subject is instructed to imagine hand and/or foot movements in response to visual cues.&lt;br /&gt;
To identify a subject&#039;s Mu Rhythm, offline analyses then determine the frequency and location whose activity changes the most across conditions (e.g., hand imagery and rest).  These analyses result in spectra calculated at different locations or in topographical plots at particular frequencies. &lt;br /&gt;
&lt;br /&gt;
==Performing the Initial Session==&lt;br /&gt;
*Start BCI2000 by double-clicking &amp;lt;tt&amp;gt;batch/StimulusPresentation_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;. If you are unable to find a batch file for your amplifier, please see [[Contributions:Contents|the section on contributed BCI2000 modules]]. For repeated use, placing a link to this file on the desktop might be a good idea.&lt;br /&gt;
*In the operator module, click &amp;quot;Config&amp;quot;.&lt;br /&gt;
*Click &amp;quot;Load Parameters&amp;quot; to load the parameter file at &amp;lt;tt&amp;gt;parms/mu_tutorial/InitialMuSession.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Load additional parameters for your amplifier by clicking &amp;quot;Load Parameters&amp;quot; again and choosing the parameter file from &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt; that corresponds to your amplifier. If you&#039;re unable to find a parameter file that corresponds to your amplifier and your amplifier is listed in the [[Contributions:ADCs|contributions section]], load the &amp;lt;tt&amp;gt;SignalGenerator.prm&amp;lt;/tt&amp;gt; parameter file (also located in &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt;) and modify parameters as necessary.  Please see [[User Reference:Parameters]] for a listing of currently supported parameters along with their descriptions.&lt;br /&gt;
*When you have a separate monitor for experimenter and subject, load the parameter file at &amp;lt;tt&amp;gt;parms/fragments/stdlib/DualMonitor.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**In your system&#039;s display properties configuration, make sure that the subject&#039;s monitor is configured to be located to the right of the main monitor.&lt;br /&gt;
**Make sure the &#039;&#039;WindowLeft&#039;&#039; parameter matches the main monitor&#039;s actual pixel width.&lt;br /&gt;
**You may need to adapt &#039;&#039;WindowTop&#039;&#039;, &#039;&#039;WindowWidth&#039;&#039;, and &#039;&#039;WindowHeight&#039;&#039; parameters as well; click &amp;quot;Set Config&amp;quot; to try the effect of your changes.&lt;br /&gt;
*Under the &amp;quot;Storage&amp;quot; tab, enter the subject&#039;s initials into the &amp;quot;SubjectName&amp;quot; parameter.&lt;br /&gt;
*Switch to the &amp;quot;Source&amp;quot; tab; for the &amp;quot;ChannelNames&amp;quot; parameter enter [[User Tutorial:EEG Measurement Setup#The 10-20 International System|electrode locations]] corresponding to amplifier channels as a white-space separated list (e.g., &amp;lt;tt&amp;gt;Fz CPz Cz CP3 ...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
*Click &amp;quot;Set Config&amp;quot;.&lt;br /&gt;
*Instruct the subject as described in the section below.&lt;br /&gt;
*After reading the section on subject instructions below, click &amp;quot;Start.&amp;quot;&lt;br /&gt;
*The recording will finish automatically. If you want to acquire more data, just click &amp;quot;Resume&amp;quot; as often as you like.&lt;br /&gt;
*Finally, click &amp;quot;Quit&amp;quot; to leave BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Instructions to the Subject==&lt;br /&gt;
During the initial session, the subject&#039;s screen will either be blank, or displaying an arrow pointing up, down, left or right.&lt;br /&gt;
*When a left or right arrow is displayed, imagine movement of the respective hand. The imagined movement should be continuous opening and closing of the hand (e.g., squeezing a tennis ball) at a rate of about one opening/closing per second.&lt;br /&gt;
*When an up arrow is displayed, imagine simultaneous movement of both hands. This should be the same kind of movement as described for a single hand.&lt;br /&gt;
*When a down arrow is displayed, imagine movements of both feet. The movement should be similar to the one described for hands, i.e., imagine opening and closing your feet as if you could use them to grip an object.&lt;br /&gt;
*When you see a blank screen, please relax and stop any movement imagery.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Analyzing the Initial Mu Rhythm Session|Analyzing the Initial Mu Rhythm Session]] shows you how to analyze data from the initial session in order to determine parameters for online feedback.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session&amp;diff=4541</id>
		<title>User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session&amp;diff=4541"/>
		<updated>2008-10-21T20:29:27Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Performing the Initial Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although the [[User Tutorial:Introduction to the Mu Rhythm|basic properties of the Mu rhythm]] are identical for all humans, spatial patterns and exact frequencies are different across people. Thus, it is necessary to obtain these individual parameters prior to any feedback experiments, i.e., to calibrate the BCI system using data acquired from an initial session.&lt;br /&gt;
&lt;br /&gt;
==Experimental Design==&lt;br /&gt;
In this initial session, the subject is instructed to imagine hand and/or foot movements in response to visual cues.&lt;br /&gt;
To identify a subject&#039;s Mu Rhythm, offline analyses then determine the frequency and location whose activity changes the most across conditions (e.g., hand imagery and rest).  These analyses result in spectra calculated at different locations or in topographical plots at particular frequencies. &lt;br /&gt;
&lt;br /&gt;
==Performing the Initial Session==&lt;br /&gt;
*Start BCI2000 by double-clicking &amp;lt;tt&amp;gt;batch/StimulusPresentation_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;. If you are unable to find a batch file for your amplifier, please see [[Contributions:Contents|the section on contributed BCI2000 modules]]. For repeated use, placing a link to this file on the desktop might be a good idea.&lt;br /&gt;
*In the operator module, click &amp;quot;Config&amp;quot;.&lt;br /&gt;
*Click &amp;quot;Load Parameters&amp;quot; to load the parameter file at &amp;lt;tt&amp;gt;parms/mu_tutorial/InitialMuSession.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Load additional parameters for your amplifier by clicking &amp;quot;Load Parameters&amp;quot; again and choosing the parameter file from &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt; that corresponds to your amplifier. If you&#039;re unable to find a parameter file that corresponds to your amplifier and your amplifier is listed in the [[Contributions:ADCs|contributions section]], load the &amp;lt;tt&amp;gt;SignalGenerator.prm&amp;lt;/tt&amp;gt; parameter file (also located in &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt;) and modify parameters as necessary.  Please see [[User Reference:Parameters]] for a listing of currently supported parameters along with their descriptions.&lt;br /&gt;
*When you have a separate monitor for experimenter and subject, load the parameter file at &amp;lt;tt&amp;gt;parms/fragments/stdlib/DualMonitor.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**In your system&#039;s display properties configuration, make sure that the subject&#039;s monitor is configured to be located to the right of the main monitor.&lt;br /&gt;
**Make sure the &#039;&#039;WindowLeft&#039;&#039; parameter matches the main monitor&#039;s actual pixel width.&lt;br /&gt;
**You may need to adapt &#039;&#039;WindowTop&#039;&#039;, &#039;&#039;WindowWidth&#039;&#039;, and &#039;&#039;WindowHeight&#039;&#039; parameters as well; click &amp;quot;Set Config&amp;quot; to try the effect of your changes.&lt;br /&gt;
*Under the &amp;quot;Storage&amp;quot; tab, enter the subject&#039;s initials into the &amp;quot;SubjectName&amp;quot; parameter.&lt;br /&gt;
*Switch to the &amp;quot;Source&amp;quot; tab; for the &amp;quot;ChannelNames&amp;quot; parameter enter [[User Tutorial:EEG Measurement Setup#The 10-20 International System|electrode locations]] corresponding to amplifier channels as a white-space separated list (e.g., &amp;lt;tt&amp;gt;Fz CPz Cz CP3 ...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
*Click &amp;quot;Set Config&amp;quot;.&lt;br /&gt;
*Instruct the subject as described in the section below.&lt;br /&gt;
*After reading the section on subject instructions below, click &amp;quot;Start.&amp;quot;&lt;br /&gt;
*The recording will finish automatically. If you want to acquire more data, just click &amp;quot;Resume&amp;quot; as often as you like.&lt;br /&gt;
*Finally, click &amp;quot;Quit&amp;quot; to leave BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Subject instruction==&lt;br /&gt;
During the initial session, the subject&#039;s screen will either be blank, or displaying an arrow pointing up, down, left or right.&lt;br /&gt;
*When a left or right arrow is displayed, imagine movement of the respective hand. The imagined movement should be continuous opening and closing of the hand, similar to rotating a tennis ball in one&#039;s hand.&lt;br /&gt;
*When an up arrow is displayed, imagine simultaneous movement of both hands. This should be the same kind of movement as described for a single hand.&lt;br /&gt;
*When a down arrow is displayed, imagine movement of both feet. The movement should be similar to the one described for hands, i.e. imagine opening and closing your feet as if you could use them to grip an object.&lt;br /&gt;
*When you see a blank screen, please relax and stop any movement imagery.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Analyzing the Initial Mu Rhythm Session|Analyzing the Initial Mu Rhythm Session]] shows you how to analyze data from the initial session in order to determine parameters for online feedback.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session&amp;diff=4540</id>
		<title>User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Obtaining_Mu_Rhythm_Parameters_in_an_Initial_Session&amp;diff=4540"/>
		<updated>2008-10-21T20:19:11Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although the [[User Tutorial:Introduction to the Mu Rhythm|basic properties of the Mu rhythm]] are identical for all humans, spatial patterns and exact frequencies are different across people. Thus, it is necessary to obtain these individual parameters prior to any feedback experiments, i.e., to calibrate the BCI system using data acquired from an initial session.&lt;br /&gt;
&lt;br /&gt;
==Experimental Design==&lt;br /&gt;
In this initial session, the subject is instructed to imagine hand and/or foot movements in response to visual cues.&lt;br /&gt;
To identify a subject&#039;s Mu Rhythm, offline analyses then determine the frequency and location whose activity changes the most across conditions (e.g., hand imagery and rest).  These analyses result in spectra calculated at different locations or in topographical plots at particular frequencies. &lt;br /&gt;
&lt;br /&gt;
==Performing the Initial Session==&lt;br /&gt;
*Start BCI2000 by double-clicking &amp;lt;tt&amp;gt;batch/StimulusPresentation_&amp;lt;YourAmplifier&amp;gt;.bat&amp;lt;/tt&amp;gt;. If you are unable to find a batch file for your amplifier, please see [[Contributions:Contents|the section on contributed BCI2000 modules]]. For repeated use, placing a link to this file on the desktop might be a good idea.&lt;br /&gt;
*In the operator module, click &amp;quot;Config&amp;quot;.&lt;br /&gt;
*Click &amp;quot;Load Parameters&amp;quot; to load the parameter file at &amp;lt;tt&amp;gt;parms/mu_tutorial/InitialMuSession.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Load additional parameters for your amplifier by clicking &amp;quot;Load Parameters&amp;quot; again and choosing the parameter file from &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt; that corresponds to your amplifier. If you&#039;re unable to find a parameter file that corresponds to your amplifier and your amplifier is listed in the [[Contributions:ADCs|contributions section]], load the &amp;lt;tt&amp;gt;SignalGenerator.prm&amp;lt;/tt&amp;gt; parameter file (also located in &amp;lt;tt&amp;gt;parms/fragments/amplifiers&amp;lt;/tt&amp;gt;) and modify parameters as necessary.  Please see [[User Reference:Parameters]] for a listing of currently supported parameters along with their descriptions.&lt;br /&gt;
*When you have a separate monitor for experimenter and subject, load the parameter file at &amp;lt;tt&amp;gt;parms/fragments/stdlib/DualMonitor.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**In your system&#039;s display properties configuration, make sure that the subject&#039;s monitor is configured to be located to the right of the main monitor.&lt;br /&gt;
**Make sure the &#039;&#039;WindowLeft&#039;&#039; parameter matches the main monitor&#039;s actual pixel width.&lt;br /&gt;
**You may need to adapt &#039;&#039;WindowTop&#039;&#039;, &#039;&#039;WindowWidth&#039;&#039;, and &#039;&#039;WindowHeight&#039;&#039; parameters as well; click &amp;quot;Set Config&amp;quot; to try the effect of your changes.&lt;br /&gt;
*Under the &amp;quot;Storage&amp;quot; tab, enter the subject&#039;s initials into the &amp;quot;SubjectName&amp;quot; parameter.&lt;br /&gt;
*Switch to the &amp;quot;Source&amp;quot; tab; for the &amp;quot;ChannelNames&amp;quot; parameter enter [[User Tutorial:EEG Measurement Setup#The 10-20 International System|electrode locations]] corresponding to amplifier channels as a white-space separated list (e.g., &amp;lt;tt&amp;gt;Fz CPz Cz CP3 ...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
*Click &amp;quot;Set Config&amp;quot;.&lt;br /&gt;
*Instruct the subject as described in the section below.&lt;br /&gt;
*Click &amp;quot;Start&amp;quot;.&lt;br /&gt;
*The recording will finish automatically. If you want to acquire more data, just click &amp;quot;Resume&amp;quot; as often as you like.&lt;br /&gt;
*Finally, click &amp;quot;Quit&amp;quot; to leave BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Subject instruction==&lt;br /&gt;
During the initial session, the subject&#039;s screen will either be blank, or displaying an arrow pointing up, down, left or right.&lt;br /&gt;
*When a left or right arrow is displayed, imagine movement of the respective hand. The imagined movement should be continuous opening and closing of the hand, similar to rotating a tennis ball in one&#039;s hand.&lt;br /&gt;
*When an up arrow is displayed, imagine simultaneous movement of both hands. This should be the same kind of movement as described for a single hand.&lt;br /&gt;
*When a down arrow is displayed, imagine movement of both feet. The movement should be similar to the one described for hands, i.e. imagine opening and closing your feet as if you could use them to grip an object.&lt;br /&gt;
*When you see a blank screen, please relax and stop any movement imagery.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
[[User Tutorial:Analyzing the Initial Mu Rhythm Session|Analyzing the Initial Mu Rhythm Session]] shows you how to analyze data from the initial session in order to determine parameters for online feedback.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Introduction_to_the_Mu_Rhythm&amp;diff=4539</id>
		<title>User Tutorial:Introduction to the Mu Rhythm</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Introduction_to_the_Mu_Rhythm&amp;diff=4539"/>
		<updated>2008-10-21T20:06:26Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In human EEG, primary sensory or motor cortical areas typically exhibit rhythmic &lt;br /&gt;
activity at a frequency of approximately 8-12 Hz when they are not processing sensory information&lt;br /&gt;
or producing motor output. This activity is called mu rhythm in is thought to&lt;br /&gt;
be produced by interactions between the thalamus and the cortex. Computer-based &lt;br /&gt;
analyses have demonstrated that mu rhythm activity consists of a variety of different &lt;br /&gt;
8-12 Hz rhythms that are distinguished&lt;br /&gt;
from each other by precise location, precise frequency, and/or typical relationship&lt;br /&gt;
to concurrent sensory input or motor output.&lt;br /&gt;
&lt;br /&gt;
==Behavioral Properties==&lt;br /&gt;
Several factors suggest that mu rhythm activity could be a good carrier&lt;br /&gt;
for BCI-based communication. These rhythms are associated with those cortical areas&lt;br /&gt;
that are most directly connected to the brain&#039;s normal motor output channels.&lt;br /&gt;
Movement or preparation for movement is typically accompanied by a decrease in&lt;br /&gt;
mu activity over sensorimotor cortex, particularly contralateral to the movement.&lt;br /&gt;
This decrease has been labeled &amp;quot;event-related desynchronization&amp;quot; or ERD by&lt;br /&gt;
Pfurtscheller (Pfurtscheller, G.: EEG event-related desynchronization (ERD) and event-related synchronization&lt;br /&gt;
(ERS). In: E. Niedermeyer, F.H. Lopes da Silva (eds.) Electroencephalography:&lt;br /&gt;
basic principles, clinical applications and related fields, 4th edition, pp. 958–967. Williams&lt;br /&gt;
and Wilkins, Baltimore, MD (1999)). Its opposite, rhythm increase, or &amp;quot;event-related synchronization&amp;quot;&lt;br /&gt;
(ERS) occurs in the post-movement period and with relaxation.&lt;br /&gt;
Furthermore, and most relevant for BCI applications, ERD and ERS occur also with&lt;br /&gt;
motor imagery (i.e., imagined movement); they do not require actual movement.&lt;br /&gt;
Thus, they can occur independent of activity in the brain&#039;s normal output channels of peripheral nerves and muscles, and could serve as the basis for a BCI.&lt;br /&gt;
&lt;br /&gt;
[[Image:MuRhythmModulation.PNG|471px]]&lt;br /&gt;
&lt;br /&gt;
The figure displays examples of modulated mu rhythm signals (modified from [http://{{SERVERNAME}}/downloads/doc/paper.pdf]).&lt;br /&gt;
*A,B: Topographical distribution on the scalp of the difference (measured as &amp;lt;math&amp;gt;r^2&amp;lt;/math&amp;gt; (the proportion of the single-trial variance that is due to the task)), calculated for actual (A) and imagined (B) right-hand movements vs. rest for a 3 Hz band centered at 12 Hz.&lt;br /&gt;
*C: Example voltage spectra for a different subject and a location over left sensorimotor cortex (i.e., C3) for comparing rest (dashed line) and imagery (solid line).&lt;br /&gt;
*D: Corresponding &amp;lt;math&amp;gt;r^2&amp;lt;/math&amp;gt; spectrum for imagery vs. rest. Signal modulation is focused over sensorimotor cortex and in the alpha- and beta frequency bands associated with mu rhythm activity.&lt;br /&gt;
&lt;br /&gt;
==Physical Properties==&lt;br /&gt;
===Geometry===&lt;br /&gt;
====Location====&lt;br /&gt;
[[Image:SensorimotorAreas.PNG|376px]]&lt;br /&gt;
&lt;br /&gt;
In its center, the figure displays a human brain viewed from above, with the frontal direction pointing downward. At the top of the figure, a vertical cross-section of the brain is depicted, taken along motor resp. sensory cortex. On the left side, the &#039;&#039;motor&#039;&#039; cortex is displayed in red, associated with a &amp;quot;motor homunculus&amp;quot; illustrating which regions are allocated for controlling the respective limb and facial muscles. Similarly, on the right, &#039;&#039;sensory&#039;&#039; areas are illustrated by a &amp;quot;sensory homunculus&amp;quot; indicating which regions are allocated for processing sensory information from the respective parts of the body.&lt;br /&gt;
The &#039;&#039;separation&#039;&#039; between motor and sensory cortices is a [[User_Tutorial:EEG_Measurement_Setup#Identifying_Brain_Areas|major landmark of brain anatomy]], and is called the &#039;&#039;&#039;central sulcus&#039;&#039;&#039; or &#039;&#039;&#039;rolandic fissure&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The mu rhythm originates from the hand area of the motor cortex. Also, there is a similar rhythm originating from the motor cortex&#039; foot area, which is located between hemispheres.&lt;br /&gt;
&lt;br /&gt;
====Orientation====&lt;br /&gt;
[[Image:GyrusSulcus.PNG|400px]]&lt;br /&gt;
&lt;br /&gt;
The mu rhythm&#039;s geometric source character is that of a dipole, with the dipole moment pointing perpendicular to the folded cortical surface. Thus, the orientation of the dipole moment is determined by the dipole&#039;s location: With regard to the scalp, a location in a &#039;&#039;gyrus&#039;&#039; will have a radial orientiation (1), while a location in a &#039;&#039;sulcus&#039;&#039; will result in a dipole orientation that is tangential to the scalp (2). In the latter case, the dipole moment will be perpendicular to the &#039;&#039;&#039;central sulcus&#039;&#039;&#039; as well as tangential to the scalp.&lt;br /&gt;
&lt;br /&gt;
====Scalp Potential====&lt;br /&gt;
[[Image:MuScalpPotentials.PNG|347px]]&lt;br /&gt;
&lt;br /&gt;
The figure displays typical mu rhythm scalp potential distributions (adapted from B Blankertz, R Tomioka, S Lemm, M Kawanabe, and KR M&amp;amp;uuml;ller: Optimizing spatial filters for robust EEG single-trial analysis. IEEE Signal Proc. Magazine, 25(1):41-56, January 2008, reproduced with permission of the authors).&lt;br /&gt;
&lt;br /&gt;
The distribution on the left illustrates the topography associated with a radially oriented source dipole (1) located on the right hemispheric motor &#039;&#039;&#039;gyrus&#039;&#039;&#039;.&lt;br /&gt;
The distribution to the right is due to a tangentially oriented source dipole located in the  central &#039;&#039;&#039;sulcus&#039;&#039;&#039; (2).&lt;br /&gt;
&lt;br /&gt;
For source locations intermediate between (1) and (2), dipole orientation will be a linear combination of radial and tangential orientations. On the scalp, this results in a linear combination of associated scalp potential distributions (1) and (2).&lt;br /&gt;
&lt;br /&gt;
===Temporal Properties===&lt;br /&gt;
&lt;br /&gt;
[[Image:MuWaveform.PNG|796px]]&lt;br /&gt;
&lt;br /&gt;
The mu rhythm has an arc-shaped, periodic wave form (top left).&lt;br /&gt;
In the frequency domain, such a waveform corresponds to a line spectrum with a strong first harmonic (bottom left). This means that there will be a second peak in the beta band, located at exactly twice the frequency of the first peak.&lt;br /&gt;
Most often, relative modulation (i.e., change in amplitude relative to mean amplitude) is identical for both peaks (spectrum of actually measured signals to the right).&lt;br /&gt;
&lt;br /&gt;
==BCI Construction==&lt;br /&gt;
As discussed above, a human subject can wilfully influence the amplitude of her/his mu rhythm by imagination of hand or feet movement. Continuous feedback of mu rhythm amplitude can help improve this natural ability by selective reinforcement of successful strategies.&lt;br /&gt;
&lt;br /&gt;
Much like a historic AM radio receiver, a mu rhythm BCI treats the mu rhythm as a carrier signal with information impressed on it by amplitude modulation.&lt;br /&gt;
Consequently, its signal processing chain is analogous to that of an AM receiver.&lt;br /&gt;
===Spatial Selection===&lt;br /&gt;
Using a linear combination of simultaneous input samples, the [[User Reference:SpatialFilter|spatial filtering]] step favors signals originating from hand/feet areas over signals that originate from other areas. In the AM receiver analogy, this step corresponds to a directional antenna that favors radio signals originating from the spatial direction corresponding to a desired broadcasting station&#039;s position over signals from undesired broadcasting stations, or spatially inhomogeneous noise.&lt;br /&gt;
&lt;br /&gt;
===Frequency Selection===&lt;br /&gt;
All mu rhythm BCIs employ some type of frequency selection, favoring signals in a narrow band around a single peak, or multiple peaks, of the mu rhythm&#039;s spectrum. There is a number of possibilities to implement frequency selection; most common are &lt;br /&gt;
*IIR bandpass filtering, &lt;br /&gt;
*windowed spectral estimation methods such as &lt;br /&gt;
**[[User Reference:ARFilter|autoregressive spectral estimation]],&lt;br /&gt;
**or the [[User Reference:FFTFilter|short-term fourier transform]]. &lt;br /&gt;
While IIR bandpass filtering is the direct computational analog of an AM receiver&#039;s tuning circuit, spectral estimation methods provide amplitudes for all frequency bands simultaneously, and require actual frequency selection in a separate [[User Reference:LinearClassifier|classification step]].&lt;br /&gt;
&lt;br /&gt;
===Carrier Demodulation===&lt;br /&gt;
After extracting the carrier signal by spatial and temporal filtering, its amplitude time series (envelope) must be computed to obtain the original signal impressed onto the carrier. In a simple AM receiver, this is done using a rectifier diode in conjunction with a low pass circuit. If a BCI employs bandpass filtering for frequency selection, calculating the mean amplitude over a short interval usually performs the equivalent function.&lt;br /&gt;
&lt;br /&gt;
For BCIs using spectral estimation methods, demodulation is often implemented inside the spectral estimation step, with its output being a distribution of absolute amplitude values.&lt;br /&gt;
&lt;br /&gt;
==Next Step==&lt;br /&gt;
As a next step, learn how to [[User_Tutorial:EEG_Measurement_Setup|set up an EEG measurement]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Mu Rhythm BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:vAmpADC&amp;diff=4438</id>
		<title>Contributions:vAmpADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:vAmpADC&amp;diff=4438"/>
		<updated>2008-10-15T14:22:59Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* V-Amp Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;vAmpADC&#039;&#039; filter acquires data from up to four &#039;&#039;V-Amp&#039;&#039; or &#039;&#039;FirstAmp&#039;&#039; EEG amplifiers. &lt;br /&gt;
The &#039;&#039;V-Amp&#039;&#039; is an amplifier/digitizer combination from Brain Products.&lt;br /&gt;
Support for this device in BCI2000 consists of a BCI2000-compatible Source Module (&#039;&#039;vAmpSource.exe&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===V-Amp Hardware===&lt;br /&gt;
The V-Amp consists of 16 independent 24-bit A/D converters that can sample at &lt;br /&gt;
up to 2 kHz per channel (16 channels, plus 2 auxiliary) or 20kHz per channel (4 channels).&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;vAmpADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sample rate of the system. All data is either acquired at 2000 Hz or 20 kHz, and then decimated to the desired rate. Therefore, only rates that are integer divisors of the base rates are accepted. In 2000 Hz mode, the valid rates are:&lt;br /&gt;
&lt;br /&gt;
*2000&lt;br /&gt;
*1000&lt;br /&gt;
*666.6&lt;br /&gt;
*500&lt;br /&gt;
*400&lt;br /&gt;
*333.3&lt;br /&gt;
*285.7&lt;br /&gt;
*250&lt;br /&gt;
*222.22&lt;br /&gt;
*200&lt;br /&gt;
&lt;br /&gt;
In 20 kHz mode, the 10 times the above rates are valid.&lt;br /&gt;
Prior to decimation, a 2nd-order anti-aliasing Butterworth filter with a corner frequency of 0.45 times the sample rate is applied to the signal.&lt;br /&gt;
All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. &lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers (e.g., 70) of all devices.&lt;br /&gt;
Serial numbers of found devices will be listed in the BCI2000 log window. &lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
&lt;br /&gt;
===HPFilterCorner===&lt;br /&gt;
A high-pass digital filter for removing dc-offsets. This occurs after data has been read into BCI2000.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) will be updated 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
In high-speed mode, this number may not be higher than 5 per device (4 channels + digital).&lt;br /&gt;
&lt;br /&gt;
===SourceChList===&lt;br /&gt;
The list of channels that should be acquired from each device.&lt;br /&gt;
The total number of channels listed should correspond to &#039;&#039;SourceCh&#039;&#039;. For more than one device, &#039;&#039;SourceChDevices&#039;&#039; determines how the &#039;&#039;SourceChList&#039;&#039; values are mapped to each device. For example if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8 8&#039; and &#039;&#039;SourceChList&#039;&#039; = &#039;1 2 3 4 13 14 15 16 5 6 7 8 9 10 11 12&#039;, then channels 1-4 and 13-16 will be acquired on the first device, and channels 5-12 will be acquired on the second device. These channels will be saved in the data file as 16 contiguous channels.&lt;br /&gt;
The order of channels does not matter; i.e., &#039;1 2 3 4&#039; is the same as &#039;2 3 1 4&#039;. The channels are always in ascending order on a single device.&lt;br /&gt;
Channels may not be listed twice on a single device; e.g., entering &#039;1 2 3 4 5 6 7 1&#039; if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8&#039; will result in an error.&lt;br /&gt;
If this parameter is left blank (the default), then all channels are acquired on all devices.&lt;br /&gt;
For the V-Amp 16, channels 1-16 are EEG channels, 17-18 are Auxiliary channels, and 19 are the 8 digital channels stored in bits.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
*If set to &#039;&#039;analog signal acquisition&#039;&#039;, the V-Amp records analog signal voltages (default). &lt;br /&gt;
*If set to &#039;&#039;high-speed acquisition&#039;&#039;, the V-Amp records analog signals at 20 kHz instead of 2000 Hz.&lt;br /&gt;
*If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a square wave test signal generated by the V-amp (which can be used to verify correct system calibration). &lt;br /&gt;
*If set to &#039;&#039;Impedance&#039;&#039;, impedance data is recorded instead of the signal. &lt;br /&gt;
This impedance test reports input impedances for each channel in a separate window. Values are color-coded according to the magnitude:&lt;br /&gt;
&lt;br /&gt;
* Green: 0-5 kOhm&lt;br /&gt;
* Orange: 5-30 kOhm&lt;br /&gt;
* Red: 30-1000 kOhm&lt;br /&gt;
* Purple: &amp;gt; 1 MOhm&lt;br /&gt;
&lt;br /&gt;
Values are updated real-time. Channels are shown in columns, and devices in rows.&lt;br /&gt;
[[Image:VAmpImpedanceChecker.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
*If set to &#039;&#039;high-speed calibration&#039;&#039;, a square wave is generated at 20 kHz.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
*The signal is originally recorded from the V-Amp as 32-bit integers, and converted into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. &lt;br /&gt;
*The auxiliary input units are in volts.&lt;br /&gt;
*(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32, data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1.0 for each channel). Still, when values other than 0 and 1 are specified, a consistent data file will be produced, i.e. values will be transformed before they are written to the file, such that applying SourceChOffset and SourceChGain will reproduce the original values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:vAmpADC&amp;diff=4437</id>
		<title>Contributions:vAmpADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:vAmpADC&amp;diff=4437"/>
		<updated>2008-10-15T12:35:42Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* SampleBlockSize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;vAmpADC&#039;&#039; filter acquires data from up to four &#039;&#039;V-Amp&#039;&#039; or &#039;&#039;FirstAmp&#039;&#039; EEG amplifiers. &lt;br /&gt;
The &#039;&#039;V-Amp&#039;&#039; is an amplifier/digitizer combination from Brain Products.&lt;br /&gt;
Support for this device in BCI2000 consists of a BCI2000-compatible Source Module (&#039;&#039;vAmpSource.exe&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===V-Amp Hardware===&lt;br /&gt;
The V-Amp consists of 16 independent 16-bit A/D converters that can sample at &lt;br /&gt;
up to 2 kHz per channel (16 channels, plus 2 auxiliary) or 20kHz per channel (4 channels).&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;vAmpADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sample rate of the system. All data is either acquired at 2000 Hz or 20 kHz, and then decimated to the desired rate. Therefore, only rates that are integer divisors of the base rates are accepted. In 2000 Hz mode, the valid rates are:&lt;br /&gt;
&lt;br /&gt;
*2000&lt;br /&gt;
*1000&lt;br /&gt;
*666.6&lt;br /&gt;
*500&lt;br /&gt;
*400&lt;br /&gt;
*333.3&lt;br /&gt;
*285.7&lt;br /&gt;
*250&lt;br /&gt;
*222.22&lt;br /&gt;
*200&lt;br /&gt;
&lt;br /&gt;
In 20 kHz mode, the 10 times the above rates are valid.&lt;br /&gt;
Prior to decimation, a 2nd-order anti-aliasing Butterworth filter with a corner frequency of 0.45 times the sample rate is applied to the signal.&lt;br /&gt;
All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. &lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers (e.g., 70) of all devices.&lt;br /&gt;
Serial numbers of found devices will be listed in the BCI2000 log window. &lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
&lt;br /&gt;
===HPFilterCorner===&lt;br /&gt;
A high-pass digital filter for removing dc-offsets. This occurs after data has been read into BCI2000.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) will be updated 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
In high-speed mode, this number may not be higher than 5 per device (4 channels + digital).&lt;br /&gt;
&lt;br /&gt;
===SourceChList===&lt;br /&gt;
The list of channels that should be acquired from each device.&lt;br /&gt;
The total number of channels listed should correspond to &#039;&#039;SourceCh&#039;&#039;. For more than one device, &#039;&#039;SourceChDevices&#039;&#039; determines how the &#039;&#039;SourceChList&#039;&#039; values are mapped to each device. For example if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8 8&#039; and &#039;&#039;SourceChList&#039;&#039; = &#039;1 2 3 4 13 14 15 16 5 6 7 8 9 10 11 12&#039;, then channels 1-4 and 13-16 will be acquired on the first device, and channels 5-12 will be acquired on the second device. These channels will be saved in the data file as 16 contiguous channels.&lt;br /&gt;
The order of channels does not matter; i.e., &#039;1 2 3 4&#039; is the same as &#039;2 3 1 4&#039;. The channels are always in ascending order on a single device.&lt;br /&gt;
Channels may not be listed twice on a single device; e.g., entering &#039;1 2 3 4 5 6 7 1&#039; if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8&#039; will result in an error.&lt;br /&gt;
If this parameter is left blank (the default), then all channels are acquired on all devices.&lt;br /&gt;
For the V-Amp 16, channels 1-16 are EEG channels, 17-18 are Auxiliary channels, and 19 are the 8 digital channels stored in bits.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
*If set to &#039;&#039;analog signal acquisition&#039;&#039;, the V-Amp records analog signal voltages (default). &lt;br /&gt;
*If set to &#039;&#039;high-speed acquisition&#039;&#039;, the V-Amp records analog signals at 20 kHz instead of 2000 Hz.&lt;br /&gt;
*If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a square wave test signal generated by the V-amp (which can be used to verify correct system calibration). &lt;br /&gt;
*If set to &#039;&#039;Impedance&#039;&#039;, impedance data is recorded instead of the signal. &lt;br /&gt;
This impedance test reports input impedances for each channel in a separate window. Values are color-coded according to the magnitude:&lt;br /&gt;
&lt;br /&gt;
* Green: 0-5 kOhm&lt;br /&gt;
* Orange: 5-30 kOhm&lt;br /&gt;
* Red: 30-1000 kOhm&lt;br /&gt;
* Purple: &amp;gt; 1 MOhm&lt;br /&gt;
&lt;br /&gt;
Values are updated real-time. Channels are shown in columns, and devices in rows.&lt;br /&gt;
[[Image:VAmpImpedanceChecker.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
*If set to &#039;&#039;high-speed calibration&#039;&#039;, a square wave is generated at 20 kHz.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
*The signal is originally recorded from the V-Amp as 32-bit integers, and converted into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. &lt;br /&gt;
*The auxiliary input units are in volts.&lt;br /&gt;
*(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32, data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1.0 for each channel). Still, when values other than 0 and 1 are specified, a consistent data file will be produced, i.e. values will be transformed before they are written to the file, such that applying SourceChOffset and SourceChGain will reproduce the original values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Contributions:vAmpADC&amp;diff=4436</id>
		<title>Contributions:vAmpADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Contributions:vAmpADC&amp;diff=4436"/>
		<updated>2008-10-15T12:35:17Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* V-Amp Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;vAmpADC&#039;&#039; filter acquires data from up to four &#039;&#039;V-Amp&#039;&#039; or &#039;&#039;FirstAmp&#039;&#039; EEG amplifiers. &lt;br /&gt;
The &#039;&#039;V-Amp&#039;&#039; is an amplifier/digitizer combination from Brain Products.&lt;br /&gt;
Support for this device in BCI2000 consists of a BCI2000-compatible Source Module (&#039;&#039;vAmpSource.exe&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===V-Amp Hardware===&lt;br /&gt;
The V-Amp consists of 16 independent 16-bit A/D converters that can sample at &lt;br /&gt;
up to 2 kHz per channel (16 channels, plus 2 auxiliary) or 20kHz per channel (4 channels).&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;vAmpADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sample rate of the system. All data is either acquired at 2000 Hz or 20 kHz, and then decimated to the desired rate. Therefore, only rates that are integer divisors of the base rates are accepted. In 2000 Hz mode, the valid rates are:&lt;br /&gt;
&lt;br /&gt;
*2000&lt;br /&gt;
*1000&lt;br /&gt;
*666.6&lt;br /&gt;
*500&lt;br /&gt;
*400&lt;br /&gt;
*333.3&lt;br /&gt;
*285.7&lt;br /&gt;
*250&lt;br /&gt;
*222.22&lt;br /&gt;
*200&lt;br /&gt;
&lt;br /&gt;
In 20 kHz mode, the 10 times the above rates are valid.&lt;br /&gt;
Prior to decimation, a 2nd-order anti-aliasing Butterworth filter with a corner frequency of 0.45 times the sample rate is applied to the signal.&lt;br /&gt;
All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. &lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers (e.g., 70) of all devices.&lt;br /&gt;
Serial numbers of found devices will be listed in the BCI2000 log window. &lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
&lt;br /&gt;
===HPFilterCorner===&lt;br /&gt;
A high-pass digital filter for removing dc-offsets. This occurs after data has been read into BCI2000.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) would be update 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
In high-speed mode, this number may not be higher than 5 per device (4 channels + digital).&lt;br /&gt;
&lt;br /&gt;
===SourceChList===&lt;br /&gt;
The list of channels that should be acquired from each device.&lt;br /&gt;
The total number of channels listed should correspond to &#039;&#039;SourceCh&#039;&#039;. For more than one device, &#039;&#039;SourceChDevices&#039;&#039; determines how the &#039;&#039;SourceChList&#039;&#039; values are mapped to each device. For example if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8 8&#039; and &#039;&#039;SourceChList&#039;&#039; = &#039;1 2 3 4 13 14 15 16 5 6 7 8 9 10 11 12&#039;, then channels 1-4 and 13-16 will be acquired on the first device, and channels 5-12 will be acquired on the second device. These channels will be saved in the data file as 16 contiguous channels.&lt;br /&gt;
The order of channels does not matter; i.e., &#039;1 2 3 4&#039; is the same as &#039;2 3 1 4&#039;. The channels are always in ascending order on a single device.&lt;br /&gt;
Channels may not be listed twice on a single device; e.g., entering &#039;1 2 3 4 5 6 7 1&#039; if &#039;&#039;SourceChDevices&#039;&#039; = &#039;8&#039; will result in an error.&lt;br /&gt;
If this parameter is left blank (the default), then all channels are acquired on all devices.&lt;br /&gt;
For the V-Amp 16, channels 1-16 are EEG channels, 17-18 are Auxiliary channels, and 19 are the 8 digital channels stored in bits.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
*If set to &#039;&#039;analog signal acquisition&#039;&#039;, the V-Amp records analog signal voltages (default). &lt;br /&gt;
*If set to &#039;&#039;high-speed acquisition&#039;&#039;, the V-Amp records analog signals at 20 kHz instead of 2000 Hz.&lt;br /&gt;
*If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a square wave test signal generated by the V-amp (which can be used to verify correct system calibration). &lt;br /&gt;
*If set to &#039;&#039;Impedance&#039;&#039;, impedance data is recorded instead of the signal. &lt;br /&gt;
This impedance test reports input impedances for each channel in a separate window. Values are color-coded according to the magnitude:&lt;br /&gt;
&lt;br /&gt;
* Green: 0-5 kOhm&lt;br /&gt;
* Orange: 5-30 kOhm&lt;br /&gt;
* Red: 30-1000 kOhm&lt;br /&gt;
* Purple: &amp;gt; 1 MOhm&lt;br /&gt;
&lt;br /&gt;
Values are updated real-time. Channels are shown in columns, and devices in rows.&lt;br /&gt;
[[Image:VAmpImpedanceChecker.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
*If set to &#039;&#039;high-speed calibration&#039;&#039;, a square wave is generated at 20 kHz.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
*The signal is originally recorded from the V-Amp as 32-bit integers, and converted into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. &lt;br /&gt;
*The auxiliary input units are in volts.&lt;br /&gt;
*(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32, data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1.0 for each channel). Still, when values other than 0 and 1 are specified, a consistent data file will be produced, i.e. values will be transformed before they are written to the file, such that applying SourceChOffset and SourceChGain will reproduce the original values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Programming_Reference:Rapid_Development&amp;diff=4253</id>
		<title>Programming Reference:Rapid Development</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Programming_Reference:Rapid_Development&amp;diff=4253"/>
		<updated>2008-09-09T23:20:15Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Matlab Integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes elements of BCI2000 intended to simplify a programmer&#039;s task when implementing a new BCI2000 filter, or application.&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
*The [[Programming Reference:FeedbackDemo Application]] may serve as a starting point for a trial-based application.&lt;br /&gt;
*The [[Programming Reference:IIRFilterBase Class]] filter stub allows you to easily implement IIR filters.&lt;br /&gt;
&lt;br /&gt;
==Helper Classes==&lt;br /&gt;
*[[Programming Reference:WavePlayer Class]] plays back audio files.&lt;br /&gt;
*[[Programming Reference:TextToSpeech Class]] provides synthetic speech.&lt;br /&gt;
*[[Programming Reference:MidiPlayer Class]] plays back MIDI data.&lt;br /&gt;
*[[Programming Reference:TrialStatistics Class]] computes accuracies and bit rates.&lt;br /&gt;
*[[Programming Reference:LogFile Class]] transparently maintains a log file in the current data directory.&lt;br /&gt;
&lt;br /&gt;
==Matlab Integration==&lt;br /&gt;
*The [[Programming Reference:MatlabFilter]] lets Matlab code act upon BCI2000 data.&lt;br /&gt;
*There is also a [[Programming Tutorial:Implementing a Matlab-based Filter|tutorial on implementing a Matlab-based filter]] for temporal filtering, and [[Programming Tutorial:Implementing another Matlab-based Filter| another tutorial]] on implementing an adaptive spatial filter using beamforming.&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User:Roostenveld&amp;diff=4083</id>
		<title>User:Roostenveld</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User:Roostenveld&amp;diff=4083"/>
		<updated>2008-08-19T00:30:14Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robert Oostenveld is the main developer of the [http://www.ru.nl/fcdonders/fieldtrip FieldTrip] software, an open source Matlab toolbox for (mainly offline) EEG and MEG analysis. He has contributed the [[Contributions:FieldTripBuffer|FieldTripBuffer]] to the BCI2000 project and contributes to the documentation of using BCI2000 together with Matlab for offline and online scenarios.&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=4069</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=4069"/>
		<updated>2008-08-18T15:55:30Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT COLOR=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;NEW:&amp;lt;br&amp;gt;Two post-doc positions are available immediately in Brain-Computer Interface research. &amp;lt;br&amp;gt;Please click [http://bci2000.org/BCI2000/Jobs.html here] for more information.&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
== Getting Started with BCI2000 ==&lt;br /&gt;
&lt;br /&gt;
* [[Creating a User Account|Create a User Account]],&lt;br /&gt;
* Download [[BCI2000 Binaries]],&lt;br /&gt;
* Take the introductory [[User Tutorial:BCI2000 Tour|BCI2000 Tour]]&amp;lt;br /&amp;gt;to learn about using BCI2000,&lt;br /&gt;
* Get access to the [[Programming Reference:BCI2000 Source Code|BCI2000 Source Code]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Tutorials==&lt;br /&gt;
The user tutorials guide you to your first successful experiments:&lt;br /&gt;
*The [[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to Mu rhythm experiments,&lt;br /&gt;
*The [[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to P300 experiments.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Reference Manual==&lt;br /&gt;
The [[User Reference:Contents|User Reference Manual]] describes all details&amp;lt;br /&amp;gt;of system configuration and usage:&lt;br /&gt;
*Online System Reference,&lt;br /&gt;
*Filters and Parameters,&lt;br /&gt;
*BCI2000 Tools Reference.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technical Reference==&lt;br /&gt;
The [[Technical Reference:Contents|Technical Reference Manual]] contains information on&lt;br /&gt;
*BCI2000 Online System Design,&lt;br /&gt;
*Transmission Protocol Definition,&lt;br /&gt;
*External Interfaces.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming Reference==&lt;br /&gt;
The [[Programming Reference:Contents|Programming Reference]] provides developer information:&lt;br /&gt;
*Accessing and Compiling the Source Code,&lt;br /&gt;
*Filter Programming Interface,&lt;br /&gt;
*Programming Tutorials.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributions==&lt;br /&gt;
[[Contributions:Contents|Contributions]] from the BCI2000 Community:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Data Acquisition, Signal Processing, Application Modules;&lt;br /&gt;
*Data Analysis Tools.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
* [http://{{SERVERNAME}}/phpbb BCI2000 Community Forum],&lt;br /&gt;
* [http://{{SERVERNAME}}/tracproj/newticket Submit a Bug Report]  (make sure you log in),&lt;br /&gt;
* [[BCI2000 Glossary]]&amp;lt;br /&amp;gt;Explanation of terms specific to BCI2000.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:white; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==BCI2000 Publications==&lt;br /&gt;
* [http://{{SERVERNAME}}/downloads/doc/paper.pdf G. Schalk, D.J. McFarland, T. Hinterberger, N. Birbaumer, and J.R. Wolpaw: &#039;&#039;BCI2000: A General-Purpose Brain-Computer Interface (BCI) System&#039;&#039;, IEEE Trans Biomed Eng, 51(6), June 2004.]&lt;br /&gt;
* J. Mellinger, G. Schalk: &#039;&#039;BCI2000: A General-Purpose Software Platform for BCI Research,&#039;&#039; In: G. Dornhege, J. del R. Millán, T. Hinterberger, D.J. McFarland, K.-R. Müller (eds.), &#039;&#039;Toward Brain-Computer Interfacing,&#039;&#039; MIT Press, 2007.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=4068</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=4068"/>
		<updated>2008-08-18T15:51:59Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NEW: Two post-doc positions are available immediately in Brain-Computer Interface research. Please click [http://bci2000.org/BCI2000/Jobs.html here] for more information.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
== Getting Started with BCI2000 ==&lt;br /&gt;
&lt;br /&gt;
* [[Creating a User Account|Create a User Account]],&lt;br /&gt;
* Download [[BCI2000 Binaries]],&lt;br /&gt;
* Take the introductory [[User Tutorial:BCI2000 Tour|BCI2000 Tour]]&amp;lt;br /&amp;gt;to learn about using BCI2000,&lt;br /&gt;
* Get access to the [[Programming Reference:BCI2000 Source Code|BCI2000 Source Code]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Tutorials==&lt;br /&gt;
The user tutorials guide you to your first successful experiments:&lt;br /&gt;
*The [[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to Mu rhythm experiments,&lt;br /&gt;
*The [[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to P300 experiments.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Reference Manual==&lt;br /&gt;
The [[User Reference:Contents|User Reference Manual]] describes all details&amp;lt;br /&amp;gt;of system configuration and usage:&lt;br /&gt;
*Online System Reference,&lt;br /&gt;
*Filters and Parameters,&lt;br /&gt;
*BCI2000 Tools Reference.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technical Reference==&lt;br /&gt;
The [[Technical Reference:Contents|Technical Reference Manual]] contains information on&lt;br /&gt;
*BCI2000 Online System Design,&lt;br /&gt;
*Transmission Protocol Definition,&lt;br /&gt;
*External Interfaces.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming Reference==&lt;br /&gt;
The [[Programming Reference:Contents|Programming Reference]] provides developer information:&lt;br /&gt;
*Accessing and Compiling the Source Code,&lt;br /&gt;
*Filter Programming Interface,&lt;br /&gt;
*Programming Tutorials.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributions==&lt;br /&gt;
[[Contributions:Contents|Contributions]] from the BCI2000 Community:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Data Acquisition, Signal Processing, Application Modules;&lt;br /&gt;
*Data Analysis Tools.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
* [http://{{SERVERNAME}}/phpbb BCI2000 Community Forum],&lt;br /&gt;
* [http://{{SERVERNAME}}/tracproj/newticket Submit a Bug Report]  (make sure you log in),&lt;br /&gt;
* [[BCI2000 Glossary]]&amp;lt;br /&amp;gt;Explanation of terms specific to BCI2000.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:white; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==BCI2000 Publications==&lt;br /&gt;
* [http://{{SERVERNAME}}/downloads/doc/paper.pdf G. Schalk, D.J. McFarland, T. Hinterberger, N. Birbaumer, and J.R. Wolpaw: &#039;&#039;BCI2000: A General-Purpose Brain-Computer Interface (BCI) System&#039;&#039;, IEEE Trans Biomed Eng, 51(6), June 2004.]&lt;br /&gt;
* J. Mellinger, G. Schalk: &#039;&#039;BCI2000: A General-Purpose Software Platform for BCI Research,&#039;&#039; In: G. Dornhege, J. del R. Millán, T. Hinterberger, D.J. McFarland, K.-R. Müller (eds.), &#039;&#039;Toward Brain-Computer Interfacing,&#039;&#039; MIT Press, 2007.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:SpatialFilter&amp;diff=4006</id>
		<title>User Reference:SpatialFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:SpatialFilter&amp;diff=4006"/>
		<updated>2008-07-23T00:19:51Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The SpatialFilter computes an instantaneous linear transformation of its input. Typically, the SpatialFilter&#039;s input is the unfiltered brain signal from the source module. The linear transformation that is applied by the spatial filter is described by a transformation matrix, and applied for each sample separately, not linking data across different points in time. This linear transformation can be parameterized in three different ways as described below.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SpatialFilterType===&lt;br /&gt;
This parameter defines the method that will be used to design the spatial filter. The choices are:&lt;br /&gt;
&lt;br /&gt;
# none&lt;br /&gt;
# full matrix&lt;br /&gt;
# sparse matrix&lt;br /&gt;
# common average reference (CAR)&lt;br /&gt;
&lt;br /&gt;
These choices are described below.&lt;br /&gt;
&lt;br /&gt;
; None : In this case, no spatial filtering is performed; the input signal is copied to the output signal, and the spatial filter matrix is ignored.&lt;br /&gt;
&lt;br /&gt;
; Full Matrix : This is the standard spatial filter present in previous versions BCI2000. The SpatialFilter matrix parameter defines the linear transformation applied to the input signal.&lt;br /&gt;
&lt;br /&gt;
; Sparse Matrix : The sparse matrix filter uses the SpatialFilter to define an input channel, output channel, and weight for that channel.&lt;br /&gt;
&lt;br /&gt;
; Common Average Reference (CAR) : The common average reference spatial filter calculates the mean of every channel, and subtracts this value from selected output channels. The output channels from this filter are defined with the SpatialFilterCAROutput parameter (see below for more information on this parameter). &lt;br /&gt;
&lt;br /&gt;
===SpatialFilter===&lt;br /&gt;
====Full Matrix Filter Type====&lt;br /&gt;
[[Image:SpatialFilter.png|right|256px]]&lt;br /&gt;
The full matrix filter uses the SpatialFilter parameter to define the linear transformation applied to the filter&#039;s input signal. In this matrix, columns represent input channels, and rows represent output channels. Each matrix element defines a weight with which the respective input channel (column) enters into the respective output channel (row).&lt;br /&gt;
&lt;br /&gt;
If the spatial filter is an identity filter -- not modifying its input --, then the SpatialFilter matrix is a unit matrix (square matrix with ones on the main diagonal, and all other elements zero).&lt;br /&gt;
&lt;br /&gt;
In a typical EEG experiment with fixed montage, you might want column labels to reflect the respective electrode location, simplifying the task of further modifications to the spatial filter.&lt;br /&gt;
&lt;br /&gt;
====Sparse Matrix Filter Type====&lt;br /&gt;
The sparse matrix filter uses the SpatialFilter parameter to define the relationship between input channels and output channels with a given weight. In this case, the SpatialFilter matrix must have 3 columns, and a row for each input/output relationship. The first column contains the input channel, the third column defines the weight that the input channel is multiplied by before being assigned to the output channel, which is defined in the second column. &lt;br /&gt;
&lt;br /&gt;
See the example below for more information on how to use the sparse matrix.&lt;br /&gt;
&lt;br /&gt;
===SpatialFilterCAROutput===&lt;br /&gt;
This parameter is a list of channels that define which channels should be output from the common average reference spatial filter, and the order in which they should appear. That is, the location of the channel in this list determines the output channel position. For example, if input channels 6, 7, 10, and 12 should be passed to the output of the spatial filter as channels 3, 4, 1, and 2, then this parameter should be set to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;10 12 6 7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to note that ALL channels passed to the spatial filter (typically defined in the TransmitChList) are used in the CAR calculation, but only a subset of these channels are actually output and passed to the next step in the signal processing chain.&lt;br /&gt;
&lt;br /&gt;
If this parameter is left blank, then all input channels are passed to the output, and the number of input channels equals the number of output channels.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
===Linked Mastoids (Full Matrix)===&lt;br /&gt;
Physical reference is to the left mastoid (A1). The right mastoid (A2) is recorded vs A1 on channel 1. All other electrodes are recorded vs A1 as well, and use the remaining channels.&lt;br /&gt;
In your spatial filter, you will want to re-reference all channels against &amp;quot;linked mastoids&amp;quot;, i.e. against the mean of A1 and A2.&lt;br /&gt;
&lt;br /&gt;
In the spatial filter matrix, you want to subtract half of the A2 channel from each of the remaining channels:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ Linked Mastoids&lt;br /&gt;
! &amp;amp;nbsp; !! A2  !! Fz !! Cz !! Pz !! ...&lt;br /&gt;
|-&lt;br /&gt;
! Fz&#039;&lt;br /&gt;
| -1/2 ||  1 ||  0 ||  0 || rowspan=&amp;quot;3&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
! Cz&#039;&lt;br /&gt;
| -1/2 ||  0 ||  1 ||  0&lt;br /&gt;
|-&lt;br /&gt;
! Pz&#039;&lt;br /&gt;
| -1/2 ||  0 ||  0 ||  1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || colspan=&amp;quot;5&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Common Average Reference (Full Matrix)===&lt;br /&gt;
Signals are to be re-referenced against the average of all channels.&lt;br /&gt;
To achieve this, begin with an identity matrix, and subtract a matrix of all ones, divided by the number &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; of input channels:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ Common Average Reference&lt;br /&gt;
! &amp;amp;nbsp; !! Fz !! Cz !! Pz !! Oz !! ...&lt;br /&gt;
|-&lt;br /&gt;
! Fz&#039;&lt;br /&gt;
| 1-1/N || 1/N || 1/N || 1/N || rowspan=&amp;quot;4&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
! Cz&#039;&lt;br /&gt;
| 1/N ||  1-1/N || 1/N || 1/N &lt;br /&gt;
|-&lt;br /&gt;
! Pz&#039;&lt;br /&gt;
| 1/N || 1/N || 1-1/N || 1/N &lt;br /&gt;
|-&lt;br /&gt;
! Oz&#039;&lt;br /&gt;
| 1/N || 1/N || 1/N || 1-1/N&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || colspan=&amp;quot;5&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sparse Matrix===&lt;br /&gt;
In this example, the mean of channels 1-4 are passed to output channel 1, and the negative mean of channels 10-14 are passed to output channel 2. The SpatialFilter matrix definition is given below.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ Sparse Matrix&lt;br /&gt;
! &amp;amp;nbsp; !! In !! Out !! Wt&lt;br /&gt;
|-&lt;br /&gt;
! 1 &lt;br /&gt;
| 1 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 2 &lt;br /&gt;
| 2 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 3 &lt;br /&gt;
| 3 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 4 &lt;br /&gt;
| 4 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 5 &lt;br /&gt;
| 10 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 6 &lt;br /&gt;
| 11 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 7 &lt;br /&gt;
| 12 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 8 &lt;br /&gt;
| 13 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 9 &lt;br /&gt;
| 14 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This results in:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;OutCh(1) = 0.25*InCh(1) + 0.25*InCh(2) + 0.25*InCh(3) + 0.25*InCh(4)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;OutCh(2) = (-0.25)*InCh(10) + (-0.25)*InCh(11) + (-0.25)*InCh(12) + (-0.25)*InCh(13)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Notes==&lt;br /&gt;
Each spatial filter uses a different algorithm to compute the linear transformation, and can therefore have implications on CPU load and performance. &lt;br /&gt;
&lt;br /&gt;
===None===&lt;br /&gt;
In general, use the &amp;quot;none&amp;quot; option has the best performance, since no computations are actually done. &lt;br /&gt;
&lt;br /&gt;
===CAR===&lt;br /&gt;
The common-average reference has the next best performance in most circumstances. It is possible to create a CAR using either the full-matrix or sparse matrix options; however, the CAR method only calculates the mean value once per sample, and subtracts it only from the selected output channels. In order to implement a CAR in a full-matrix, the mean must be recalculated for EVERY output channel, which is not as efficient, particularly for high channel count systems.&lt;br /&gt;
&lt;br /&gt;
===Sparse Matrix===&lt;br /&gt;
The sparse matrix method performance is determined completely by the number of elements (rows) in the SpatialFilter matrix. In the simplest case, a single channel is multiplied by the weight and assigned to the specified output channel; this would take far less CPU time than the CAR method, and possibly the &amp;quot;none&amp;quot; option as well. In the most complicated case, N*N rows would be created, where N is the number of input channels, and performance would be close to that of an NxN spatial filter matrix. (Actually, theoretically, more than N*N rows can be used, but this is unnecessary because some input/output combinations would overlap, which could be combined into a single weight).&lt;br /&gt;
&lt;br /&gt;
===Full Matrix===&lt;br /&gt;
In general, the full matrix is going to have the highest CPU load of any spatial filtering method, although there are certainly circumstances in which performance could be better. That being said, this method has been used in BCI2000 since its inception, and is the simplest method of calculating complicated transformations, such as a Laplacian spatial filter. However, if the other methods of spatial filtering can be used, they should be in most cases. For example, if the identity matrix is specified (an NxN matrix with 1s along the diagonal), then for every output channel, every input channel is multiplied by 0 or 1, utilizing CPU time unnecessarily.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:LinearClassifier]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]][[Category:Signal Processing]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:SpatialFilter&amp;diff=4005</id>
		<title>User Reference:SpatialFilter</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:SpatialFilter&amp;diff=4005"/>
		<updated>2008-07-23T00:16:54Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The SpatialFilter computes an instantaneous linear transformation of its input. Typically, the SpatialFilter&#039;s input is the unfiltered brain signal from the source module. See [User_Reference:Filters] for the filter chain in a default BCI2000 system. The linear transformation that is applied by the spatial filter is described by a transformation matrix, and applied for each sample separately, not linking data across different points in time. This linear transformation can be parameterized in three different ways as described below.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
===SpatialFilterType===&lt;br /&gt;
This parameter defines the method that will be used to design the spatial filter. The choices are:&lt;br /&gt;
&lt;br /&gt;
# none&lt;br /&gt;
# full matrix&lt;br /&gt;
# sparse matrix&lt;br /&gt;
# common average reference (CAR)&lt;br /&gt;
&lt;br /&gt;
These choices are described below.&lt;br /&gt;
&lt;br /&gt;
; None : In this case, no spatial filtering is performed; the input signal is copied to the output signal, and the spatial filter matrix is ignored.&lt;br /&gt;
&lt;br /&gt;
; Full Matrix : This is the standard spatial filter present in previous versions BCI2000. The SpatialFilter matrix parameter defines the linear transformation applied to the input signal.&lt;br /&gt;
&lt;br /&gt;
; Sparse Matrix : The sparse matrix filter uses the SpatialFilter to define an input channel, output channel, and weight for that channel.&lt;br /&gt;
&lt;br /&gt;
; Common Average Reference (CAR) : The common average reference spatial filter calculates the mean of every channel, and subtracts this value from selected output channels. The output channels from this filter are defined with the SpatialFilterCAROutput parameter (see below for more information on this parameter). &lt;br /&gt;
&lt;br /&gt;
===SpatialFilter===&lt;br /&gt;
====Full Matrix Filter Type====&lt;br /&gt;
[[Image:SpatialFilter.png|right|256px]]&lt;br /&gt;
The full matrix filter uses the SpatialFilter parameter to define the linear transformation applied to the filter&#039;s input signal. In this matrix, columns represent input channels, and rows represent output channels. Each matrix element defines a weight with which the respective input channel (column) enters into the respective output channel (row).&lt;br /&gt;
&lt;br /&gt;
If the spatial filter is an identity filter -- not modifying its input --, then the SpatialFilter matrix is a unit matrix (square matrix with ones on the main diagonal, and all other elements zero).&lt;br /&gt;
&lt;br /&gt;
In a typical EEG experiment with fixed montage, you might want column labels to reflect the respective electrode location, simplifying the task of further modifications to the spatial filter.&lt;br /&gt;
&lt;br /&gt;
====Sparse Matrix Filter Type====&lt;br /&gt;
The sparse matrix filter uses the SpatialFilter parameter to define the relationship between input channels and output channels with a given weight. In this case, the SpatialFilter matrix must have 3 columns, and a row for each input/output relationship. The first column contains the input channel, the third column defines the weight that the input channel is multiplied by before being assigned to the output channel, which is defined in the second column. &lt;br /&gt;
&lt;br /&gt;
See the example below for more information on how to use the sparse matrix.&lt;br /&gt;
&lt;br /&gt;
===SpatialFilterCAROutput===&lt;br /&gt;
This parameter is a list of channels that define which channels should be output from the common average reference spatial filter, and the order in which they should appear. That is, the location of the channel in this list determines the output channel position. For example, if input channels 6, 7, 10, and 12 should be passed to the output of the spatial filter as channels 3, 4, 1, and 2, then this parameter should be set to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;10 12 6 7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to note that ALL channels passed to the spatial filter (typically defined in the TransmitChList) are used in the CAR calculation, but only a subset of these channels are actually output and passed to the next step in the signal processing chain.&lt;br /&gt;
&lt;br /&gt;
If this parameter is left blank, then all input channels are passed to the output, and the number of input channels equals the number of output channels.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
===Linked Mastoids (Full Matrix)===&lt;br /&gt;
Physical reference is to the left mastoid (A1). The right mastoid (A2) is recorded vs A1 on channel 1. All other electrodes are recorded vs A1 as well, and use the remaining channels.&lt;br /&gt;
In your spatial filter, you will want to re-reference all channels against &amp;quot;linked mastoids&amp;quot;, i.e. against the mean of A1 and A2.&lt;br /&gt;
&lt;br /&gt;
In the spatial filter matrix, you want to subtract half of the A2 channel from each of the remaining channels:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ Linked Mastoids&lt;br /&gt;
! &amp;amp;nbsp; !! A2  !! Fz !! Cz !! Pz !! ...&lt;br /&gt;
|-&lt;br /&gt;
! Fz&#039;&lt;br /&gt;
| -1/2 ||  1 ||  0 ||  0 || rowspan=&amp;quot;3&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
! Cz&#039;&lt;br /&gt;
| -1/2 ||  0 ||  1 ||  0&lt;br /&gt;
|-&lt;br /&gt;
! Pz&#039;&lt;br /&gt;
| -1/2 ||  0 ||  0 ||  1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || colspan=&amp;quot;5&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Common Average Reference (Full Matrix)===&lt;br /&gt;
Signals are to be re-referenced against the average of all channels.&lt;br /&gt;
To achieve this, begin with an identity matrix, and subtract a matrix of all ones, divided by the number &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; of input channels:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ Common Average Reference&lt;br /&gt;
! &amp;amp;nbsp; !! Fz !! Cz !! Pz !! Oz !! ...&lt;br /&gt;
|-&lt;br /&gt;
! Fz&#039;&lt;br /&gt;
| 1-1/N || 1/N || 1/N || 1/N || rowspan=&amp;quot;4&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
! Cz&#039;&lt;br /&gt;
| 1/N ||  1-1/N || 1/N || 1/N &lt;br /&gt;
|-&lt;br /&gt;
! Pz&#039;&lt;br /&gt;
| 1/N || 1/N || 1-1/N || 1/N &lt;br /&gt;
|-&lt;br /&gt;
! Oz&#039;&lt;br /&gt;
| 1/N || 1/N || 1/N || 1-1/N&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || colspan=&amp;quot;5&amp;quot; | ...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sparse Matrix===&lt;br /&gt;
In this example, the mean of channels 1-4 are passed to output channel 1, and the negative mean of channels 10-14 are passed to output channel 2. The SpatialFilter matrix definition is given below.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ Sparse Matrix&lt;br /&gt;
! &amp;amp;nbsp; !! In !! Out !! Wt&lt;br /&gt;
|-&lt;br /&gt;
! 1 &lt;br /&gt;
| 1 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 2 &lt;br /&gt;
| 2 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 3 &lt;br /&gt;
| 3 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 4 &lt;br /&gt;
| 4 || 1 || .25&lt;br /&gt;
|-&lt;br /&gt;
! 5 &lt;br /&gt;
| 10 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 6 &lt;br /&gt;
| 11 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 7 &lt;br /&gt;
| 12 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 8 &lt;br /&gt;
| 13 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
! 9 &lt;br /&gt;
| 14 || 2 || -.2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This results in:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;OutCh(1) = 0.25*InCh(1) + 0.25*InCh(2) + 0.25*InCh(3) + 0.25*InCh(4)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;OutCh(2) = (-0.25)*InCh(10) + (-0.25)*InCh(11) + (-0.25)*InCh(12) + (-0.25)*InCh(13)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Notes==&lt;br /&gt;
Each spatial filter uses a different algorithm to compute the linear transformation, and can therefore have implications on CPU load and performance. &lt;br /&gt;
&lt;br /&gt;
===None===&lt;br /&gt;
In general, use the &amp;quot;none&amp;quot; option has the best performance, since no computations are actually done. &lt;br /&gt;
&lt;br /&gt;
===CAR===&lt;br /&gt;
The common-average reference has the next best performance in most circumstances. It is possible to create a CAR using either the full-matrix or sparse matrix options; however, the CAR method only calculates the mean value once per sample, and subtracts it only from the selected output channels. In order to implement a CAR in a full-matrix, the mean must be recalculated for EVERY output channel, which is not as efficient, particularly for high channel count systems.&lt;br /&gt;
&lt;br /&gt;
===Sparse Matrix===&lt;br /&gt;
The sparse matrix method performance is determined completely by the number of elements (rows) in the SpatialFilter matrix. In the simplest case, a single channel is multiplied by the weight and assigned to the specified output channel; this would take far less CPU time than the CAR method, and possibly the &amp;quot;none&amp;quot; option as well. In the most complicated case, N*N rows would be created, where N is the number of input channels, and performance would be close to that of an NxN spatial filter matrix. (Actually, theoretically, more than N*N rows can be used, but this is unnecessary because some input/output combinations would overlap, which could be combined into a single weight).&lt;br /&gt;
&lt;br /&gt;
===Full Matrix===&lt;br /&gt;
In general, the full matrix is going to have the highest CPU load of any spatial filtering method, although there are certainly circumstances in which performance could be better. That being said, this method has been used in BCI2000 since its inception, and is the simplest method of calculating complicated transformations, such as a Laplacian spatial filter. However, if the other methods of spatial filtering can be used, they should be in most cases. For example, if the identity matrix is specified (an NxN matrix with 1s along the diagonal), then for every output channel, every input channel is multiplied by 0 or 1, utilizing CPU time unnecessarily.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:LinearClassifier]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]][[Category:Signal Processing]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=3923</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=3923"/>
		<updated>2008-07-11T12:35:43Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
== Getting Started with BCI2000 ==&lt;br /&gt;
&lt;br /&gt;
* [[Creating a User Account|Create a User Account]],&lt;br /&gt;
* Download [[BCI2000 Binaries]],&lt;br /&gt;
* Take the introductory [[User Tutorial:BCI2000 Tour|BCI2000 Tour]]&amp;lt;br /&amp;gt;to learn about using BCI2000,&lt;br /&gt;
* Get access to the [[Programming Reference:BCI2000 Source Code|BCI2000 Source Code]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Tutorials==&lt;br /&gt;
The user tutorials guide you to your first successful experiments:&lt;br /&gt;
*The [[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to Mu rhythm experiments,&lt;br /&gt;
*The [[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to P300 experiments.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Reference Manual==&lt;br /&gt;
The [[User Reference:Contents|User Reference Manual]] describes all details&amp;lt;br /&amp;gt;of system configuration and usage:&lt;br /&gt;
*Online System Reference,&lt;br /&gt;
*Filters and Parameters,&lt;br /&gt;
*BCI2000 Tools Reference.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technical Reference==&lt;br /&gt;
The [[Technical Reference:Contents|Technical Reference Manual]] contains information on&lt;br /&gt;
*BCI2000 Online System Design,&lt;br /&gt;
*Transmission Protocol Definition,&lt;br /&gt;
*External Interfaces.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming Reference==&lt;br /&gt;
The [[Programming Reference:Contents|Programming Reference]] provides developer information:&lt;br /&gt;
*Accessing and Compiling the Source Code,&lt;br /&gt;
*Filter Programming Interface,&lt;br /&gt;
*Programming Tutorials.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributions==&lt;br /&gt;
[[Contributions:Contents|Contributions]] from the BCI2000 Community:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Data Acquisition, Signal Processing, Application Modules;&lt;br /&gt;
*Data Analysis Tools.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
* [http://{{SERVERNAME}}/phpbb BCI2000 Community Forum],&lt;br /&gt;
* [http://{{SERVERNAME}}/tracproj/newticket Submit a Bug Report]  (make sure you log in),&lt;br /&gt;
* [[BCI2000 Glossary]]&amp;lt;br /&amp;gt;Explanation of terms specific to BCI2000.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:white; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==BCI2000 Publications==&lt;br /&gt;
* [http://{{SERVERNAME}}/downloads/doc/paper.pdf G. Schalk, D.J. McFarland, T. Hinterberger, N. Birbaumer, and J.R. Wolpaw: &#039;&#039;BCI2000: A General-Purpose Brain-Computer Interface (BCI) System&#039;&#039;, IEEE Trans Biomed Eng, 51(6), June 2004.]&lt;br /&gt;
* J. Mellinger, G. Schalk: &#039;&#039;BCI2000: A General-Purpose Software Platform for BCI Research,&#039;&#039; In: G. Dornhege, J. del R. Millán, T. Hinterberger, D.J. McFarland, K.-R. Müller (eds.), &#039;&#039;Toward Brain-Computer Interfacing,&#039;&#039; MIT Press, 2007.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Operator_Module_Scripting&amp;diff=3921</id>
		<title>User Reference:Operator Module Scripting</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Operator_Module_Scripting&amp;diff=3921"/>
		<updated>2008-07-02T09:40:27Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Operator scripts automate actions that the otherwise would be performed by the user, e.g. starting or suspending system operation.&lt;br /&gt;
Scripts may be contained in script files, or given immediately in the operator module&#039;s preferences dialog.&lt;br /&gt;
There is also an option to specify scripts from the [[User Reference:Module Command Line Options#Operator Module|command line]] when starting the operator module.&lt;br /&gt;
&lt;br /&gt;
===Events===&lt;br /&gt;
Script execution is bound to a number of events that occur during various [[Technical Reference:States of Operation|stages of BCI2000 system operation]]:&lt;br /&gt;
====OnConnect====&lt;br /&gt;
This event is triggered at startup, as soon as all modules are connected to the operator module.&lt;br /&gt;
====OnSetConfig====&lt;br /&gt;
This event is triggered each time a set of parameters is applied to the system. This happens when the user clicks the &#039;&#039;SetConfig&#039;&#039; button. Execution of the &#039;&#039;SETCONFIG&#039;&#039; command also triggers this event.&lt;br /&gt;
====OnStart, OnResume====&lt;br /&gt;
These events correspond to the &#039;&#039;Start&#039;&#039;/&#039;&#039;Resume&#039;&#039; button. One of these events is also triggered when the &#039;&#039;Running&#039;&#039; state variable is set to 1 from a script. Whether &#039;&#039;OnStart&#039;&#039; or &#039;&#039;OnResume&#039;&#039; is triggered depends on whether the system has been running before with the current set of parameters.&lt;br /&gt;
====OnSuspend====&lt;br /&gt;
Triggered when the system goes from running into suspended mode. This happens whenever the &#039;&#039;Running&#039;&#039; state variable changes from 1 to 0. This may happen when the user clicks &#039;&#039;Suspend&#039;&#039;, when the application module switches the system into suspended mode, or when a script sets the &#039;&#039;Running&#039;&#039; state variable to 0.&lt;br /&gt;
====OnExit====&lt;br /&gt;
Triggered when the operator module quits. Execution of the &#039;&#039;QUIT&#039;&#039; command also triggers this event.&lt;br /&gt;
&lt;br /&gt;
===Commands===&lt;br /&gt;
====LOAD PARAMETERFILE &amp;lt;file&amp;gt;====&lt;br /&gt;
Loads a parameter file specified by its path and name. Relative paths are interpreted relative to the operator module&#039;s working directory at startup. Usually, this matches the executable&#039;s location in the &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
As the parameter file name must not contain white space, please use HTML-type encoding for white space characters, such as &amp;lt;tt&amp;gt;Documents%20and%20Settings&amp;lt;/tt&amp;gt; when referring to a user&#039;s &amp;quot;Documents and Settings&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
====SETCONFIG====&lt;br /&gt;
Applies current parameters to the system. Corresponds to the &#039;&#039;SetConfig&#039;&#039; button.&lt;br /&gt;
====INSERT STATE &amp;lt;name&amp;gt; &amp;lt;bit width&amp;gt; &amp;lt;initial value&amp;gt;====&lt;br /&gt;
Adds a state variable to the system. State variables are defined by name, bit width, and initial value (see [[Technical Reference:State Definition]]). This command may not be used after system initialization has completed, i.e. its use is restricted to the &#039;&#039;OnConnect&#039;&#039; event.&lt;br /&gt;
====SET STATE &amp;lt;name&amp;gt; &amp;lt;value&amp;gt;====&lt;br /&gt;
Sets the named state variable to the specified integer value. Setting the &#039;&#039;Running&#039;&#039; state to 1 will start system operation, setting it to 0 will suspend the system.&lt;br /&gt;
====QUIT====&lt;br /&gt;
Quits the operator module after terminating all BCI2000 modules.&lt;br /&gt;
====SYSTEM &amp;lt;command line&amp;gt;====&lt;br /&gt;
Executes a single-line shell command.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
Scripts consist of sequences of the above commands, terminated with either a DOS line ending sequence, or a semicolon (;).&lt;br /&gt;
When the semicolon is used to terminated commands, a line may contain multiple commands.&lt;br /&gt;
Scripts are case-sensitive, and commands must be spelled uppercase as given above.&lt;br /&gt;
&lt;br /&gt;
===Specifying Scripts===&lt;br /&gt;
In the operator module&#039;s preferences dialog, scripts may be entered for each of the events listed above.&lt;br /&gt;
Scripts may be specified as paths to script files, or as immediate one-line scripts.&lt;br /&gt;
Entries that start with a minus sign (-) are treated as one-line scripts, which may contain multiple commands separated with semicolons.&lt;br /&gt;
&lt;br /&gt;
Scripts may also be specified from the command line used to start up the operator module. There, event names are followed with the content of the respective preference entry, enclosed in double quotes (&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
====1====&lt;br /&gt;
To add a state variable called &amp;quot;Artifact&amp;quot;, and to set it using the operator&#039;s function buttons, do this:&lt;br /&gt;
*Enter the following line under &amp;quot;After All Modules Connected&amp;quot; in the operator&#039;s preferences dialog (note the minus sign):&lt;br /&gt;
 -INSERT STATE Artifact 1 0&lt;br /&gt;
*Under &amp;quot;Function Buttons&amp;quot;, enter &amp;quot;Set Artifact&amp;quot; as the name of button 1, and as its command, enter (note there is no minus sign):&lt;br /&gt;
 SET STATE Artifact 1&lt;br /&gt;
*Enter &amp;quot;Clear Artifact&amp;quot; as the name of button 2, and as its command, enter&lt;br /&gt;
 SET STATE Artifact 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====2====&lt;br /&gt;
The following example shows how to specify script commands from the command line.&lt;br /&gt;
It fully automates BCI2000 operation by loading a parameter file, applying parameters, starting the system once the parameters are applied, and quitting the system once the run is over.&lt;br /&gt;
&lt;br /&gt;
 --OnConnect &amp;quot;-LOAD PARAMETERFILE ..\parms\examples\CursorTask_SignalGenerator.prm; SETCONFIG&amp;quot; &lt;br /&gt;
 --OnSetConfig &amp;quot;-SET STATE Running 1&amp;quot;  &lt;br /&gt;
 --OnSuspend &amp;quot;-QUIT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Module Command Line Options]], [[User Reference:Operator Module]], [[Technical Reference:States of Operation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Timing&amp;diff=3905</id>
		<title>User Reference:Timing</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Timing&amp;diff=3905"/>
		<updated>2008-06-21T02:36:42Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Real-Time Operation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-Time Operation==&lt;br /&gt;
Timing is a critical issue in a system that processes data in real time.&lt;br /&gt;
Such a system must process data faster than they are acquired; this is the &#039;&#039;real-time constraint&#039;&#039;.&lt;br /&gt;
In BCI2000, data is acquired and processed in [[BCI2000 Glossary#Sample Block|sample blocks]]. Ideally, these sample blocks are acquired in regular intervals. To work in real-time, the system needs to finish processing, user display, and data storage within a &#039;&#039;block duration&#039;&#039;, i.e., the duration corresponding to a single sample block.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Roundtrip time&#039;&#039; is the time needed for a sample block to traverse the [[Technical Reference:Core Modules|core modules]].&lt;br /&gt;
Starting with the acquisition of a sample block, a block&#039;s roundtrip includes the time spent on signal processing and stimulus display. The roundtrip finishes when the block enters the data acquisition module again.&lt;br /&gt;
&lt;br /&gt;
To fulfill the real-time constraint, roundtrip time may not exceed the physical duration of a sample block.&lt;br /&gt;
For stable system operation, a weaker condition is sufficient: only the roundtrip&#039;s average value needs to stay below a sample block duration.&lt;br /&gt;
&lt;br /&gt;
==Measuring Block Duration==&lt;br /&gt;
Immediately after data block has been acquired from hardware, the [[User Reference:DataIOFilter|DataIOFilter]] writes a 16-bit millisecond-resolution time stamp into the &#039;&#039;SourceTime&#039;&#039; state.&lt;br /&gt;
Block duration is measured as the difference between two consecutive time stamps.&lt;br /&gt;
&lt;br /&gt;
==Measuring Roundtrip Time==&lt;br /&gt;
Roundtrip is measured by subtracting a data block&#039;s time stamp from the current time when it enters the data acquisition module coming from the application module.&lt;br /&gt;
&lt;br /&gt;
==Measuring Source-to-Stimulus Delay==&lt;br /&gt;
In the &#039;&#039;StimulusTime&#039;&#039; state, the application module stores a time stamp when the module&#039;s Process() function has finished. By this time, video memory should have been updated, given that the module enforces a display update at the end of its Process() function; generally, this is done by calling the &amp;lt;tt&amp;gt;[[Programming Reference:GUI:GraphDisplay Class#Update|GUI::GraphDisplay::Update()]]&amp;lt;/tt&amp;gt; function for the module&#039;s display window.&lt;br /&gt;
&lt;br /&gt;
The [[User Reference:DataIOFilter|DataIOFilter]] then subtracts the source time stamp from the stimulus time stamp to compute the source-to-stimulus delay. Unlike roundtrip time, measurement of the source-to-stimulus delay requires that data acquisition and application modules share a common time base; when distributed over multiple machines in a network, source-to-stimulus delay cannot be measured.&lt;br /&gt;
&lt;br /&gt;
==Timing Display==&lt;br /&gt;
[[Image:TimingDisplay.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
When switched on via the [[User Reference:DataIOFilter#VisualizeTiming|&#039;&#039;VisualizeTiming&#039;&#039;]] parameter, timing data are displayed in a visualization window.&lt;br /&gt;
In this window, theoretical sample block length is indicated with a tickmark on the y axis, with scaling such that a range of 0..2 physical sample block lengths is displayed.&lt;br /&gt;
&lt;br /&gt;
Timing values are displayed separately for actual block duration, roundtrip time, and source-to-stimulus delay.&lt;br /&gt;
Using this graph, the experimentator can keep track of&lt;br /&gt;
*regularity of data acquisition -- the block duration curve should be a straight line;&lt;br /&gt;
*real-time operation -- roundtrip time should stay below theoretical sample block length;&lt;br /&gt;
*module communication overhead -- this is represented by the difference between &#039;&#039;roundtrip&#039;&#039; and &#039;&#039;stimulus&#039;&#039; curves.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[Technical Reference:Core Modules]], [[User Reference:DataIOFilter]]&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_an_Offline_Analysis_of_MEG_Data&amp;diff=3656</id>
		<title>User Tutorial:Performing an Offline Analysis of MEG Data</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:Performing_an_Offline_Analysis_of_MEG_Data&amp;diff=3656"/>
		<updated>2008-03-20T14:08:23Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Experimental Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this section of the tutorial, we will take you through the steps for performing a frequency-domain analysis of data recorded using an MEG.  Regardless of the selected recording technique, we expect the basic properties of the Mu rhythm to be identical for all humans, while the rhythm&#039;s spatial pattern and exact frequency range will differ.  As in [[User Tutorial:Performing an Offline Analysis of EEG Data]], we will use &#039;&#039;BCI2000 Offline Analysis&#039;&#039; to help determine the frequencies and locations that best facilitate response classification for online control.&lt;br /&gt;
&lt;br /&gt;
== Experimental Design ==&lt;br /&gt;
This tutorial will make use of the &amp;lt;tt&amp;gt;meg1_1.dat&amp;lt;/tt&amp;gt; session that is included as part of the supplementary sample files downloadable [http://www.bci2000.org/downloads/bin/sampleFiles.zip here].  Please download this file and extract the contents to &amp;lt;tt&amp;gt;data/samplefiles/&amp;lt;/tt&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;tt&amp;gt;meg1_1.dat&amp;lt;/tt&amp;gt; session, the subject was asked to perform the right justified box (RJB) task - a 1-D task available through BCI2000.  For this task, the subject must move a cursor up or down in order to hit a target on the right side of the screen.  The cursor begins on the left side of the screen and travels toward the target at a constant speed determined by the operator.  In this particular experiment, the subject was asked to open and close his/her left hand to move the cursor up and right hand in order to move the cursor down.  The task was controlled using &#039;&#039;BCI2000&#039;&#039; and the data was recorded and labeled using the TargetCode state variable.  For trials where the subject was attempting to move the cursor up (i.e., left-hand movement) TargetCode is equal to 1.  For trials where the subject is attempting to move the cursor down (i.e., right-hand movement) TargetCode is equal to 2.  For intervals between trials (i.e., when the subject is at rest), TargetCode is equal to 0.  If you are relatively new to &#039;&#039;BCI2000&#039;&#039;, you may find it helpful to inspect the datafiles we&#039;ll be using with the &#039;&#039;BCI2000 Viewer&#039;&#039;.  Using this tool, you will be able to see how state variables change with respect to the data over time.  For instruction on how to inspect data using the &#039;&#039;BCI2000 Viewer&#039;&#039;, please see [[User Reference:BCI2000Viewer]].&lt;br /&gt;
&lt;br /&gt;
==The Results==&lt;br /&gt;
In [[User Tutorial:Performing an Offline Analysis of EEG Data]] we manually entered all the analysis parameters.  In this tutorial we will make use of the &#039;&#039;BCI2000 Offline Analysis&#039;&#039; &amp;quot;Load Settings&amp;quot; feature that allows us to load previously saved settings.  In order to load the settings for this tutorial, please do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open BCI2000 Offline Analysis. If this is your first time using BCI2000 Offline Analysis, you may want to review the instructions on how to install and run this application: [[User Reference:BCI2000 Offline Analysis]].&lt;br /&gt;
# Click the &amp;quot;Add&amp;quot; button next to &amp;quot;Data Files&amp;quot; and navigate to &amp;lt;tt&amp;gt;data/samplefiles/&amp;lt;/tt&amp;gt;. From there, select the file &amp;lt;tt&amp;gt;meg1_1.dat&amp;lt;/tt&amp;gt; and click &amp;quot;Open&amp;quot;. If this file isn&#039;t present, please download the [http://www.bci2000.org/downloads/bin/sampleFiles.zip supplementary sample files] and extract them to &amp;lt;tt&amp;gt;data/samplefiles/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Click File&amp;gt;Load Settings&lt;br /&gt;
# Navigate to &amp;lt;tt&amp;gt;data/samplefiles/&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Double-click or otherwise open &amp;lt;tt&amp;gt;meg1Analysis.bws&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, click &amp;quot;Generate Plots&amp;quot;.  At this point you will be presented with a message dialog warning you that the number of trials found using the selected datafile is less than 10.  In order to sufficiently generalize the response, it is recommended that your data (i.e., all selected datafiles together) comprise at least 10 trials.  In some cases, you will not be able to meet the suggested minimum.  In that case, you can mark the checkbox labeled &amp;quot;Ignore Warnings&amp;quot; to proceed.  Even with this box checked, however, &#039;&#039;BCI2000 Offline Analysis&#039;&#039; will halt any analysis where the data comprises less than 3 trials.  So, in order to proceed with this single data file, please check the box labeled &amp;quot;Ignore Warnings&amp;quot;.  Now the &#039;&#039;BCI2000 Offline Analysis&#039;&#039; window should look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:offlineAnalysisMeg1.png]]&lt;br /&gt;
&lt;br /&gt;
Click &amp;quot;Generate Plots&amp;quot; once again.  Once your analysis is complete, you should see feature, spectra and topography plots similar to those below:&lt;br /&gt;
&lt;br /&gt;
[[Image:meg1Feature.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:meg1Spectrum.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:meg1Topo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
In designing this analysis, we followed a similar procedure to the procedure outlined in [[User Tutorial:Performing an Offline Analysis of EEG Data]].  We begin by looking for clusters of high [[Glossary|r-squared]] values.  Again, these clusters are typically the first indication that the frequency/channel pairs that comprise the cluster may be good features for on-line analysis.  In the generated feature plot, one such cluster is centered around (13 Hz, Channel 4).  So, we continue by creating a topography at 13 Hz and a spectra for channel 4.  As in previous tutorials, we use these plots to evaluate the physiological plausibility of this response.  First note that there are significant changes in the spectra between movement and rest.  Also, the most significant of these changes occurs around the mu and beta frequency ranges.  From the topography, we see that the response is largely present over the motor cortex of the left hemisphere.  Such a response should be expected since the movement occurred on the right side of the body.  Therefore, we conclude that (13 Hz, Channel 4) will likely be an effective feature for online control tasks.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=3337</id>
		<title>User Reference:gUSBampADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=3337"/>
		<updated>2008-02-13T13:45:00Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* DeviceIDMaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;gUSBampADC&#039;&#039; filter acquires data from any number (tested up to four) &#039;&#039;g.USBamp&#039;&#039; EEG amplifiers. &lt;br /&gt;
&#039;&#039;g.USBamp&#039;&#039; is an amplifier/digitizer combination from g.tec medical engineering GmbH/Guger Technologies OEG (http://www.gtec.at). &lt;br /&gt;
Support for this device in BCI2000 consists of two components: A BCI2000-compatible Source Module (&#039;&#039;gUSBamp.exe&#039;&#039;) and a &lt;br /&gt;
command-line tool (&#039;&#039;USBampgetinfo&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
===g.USBamp Hardware===&lt;br /&gt;
The USBamp consists of 16 independent 24-bit A/D converters that can sample at &lt;br /&gt;
up to 38.4kHz per channel. Because there is one A/D converter for each channel, &lt;br /&gt;
one particular sample is digitized at the exact same time for each channel. This &lt;br /&gt;
is unlike with traditional A/D converter boards that only have one A/D &lt;br /&gt;
converter. BCI2000 has a feature that can align samples in time (parameter &lt;br /&gt;
[[User Reference:AlignmentFilter#AlignChannels|AlignChannels]]).&lt;br /&gt;
Because this feature is not needed in conjunction with the USBamp, it needs to be turned off (i.e., &#039;&#039;AlignChannels&#039;&#039; needs to be 0).&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;gUSBampADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===DeviceIDMaster===&lt;br /&gt;
Serial number (e.g., UA-2007.01.01) of the master device. &lt;br /&gt;
If you only have one device, this parameter has to equal &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
If you have more then one device, then this parameter represents the serial number of the device whose SYNC goes to the slaves, i.e., the only device that has a cable connected at SYNC OUT, but none connected to SYNC IN. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers (e.g., UA-2007.01.01) of all devices.&lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===FilterEnabled===&lt;br /&gt;
Choose 1 if you want a pass band filter, and 0 if you don&#039;t.&lt;br /&gt;
The gUSBamp is a DC amplifier and thus you most likely will want a pass band filter.&lt;br /&gt;
Please note that, because the g.USBamp internally has a 5kHz antialiasing filter and always samples with 38.4kHz, you DO NOT need to enable any filter if you do not want.&lt;br /&gt;
You will never experience aliasing.&lt;br /&gt;
&lt;br /&gt;
===FilterHighPass===&lt;br /&gt;
High pass frequency for pass band. &lt;br /&gt;
You need to query the amp for possible values. &lt;br /&gt;
See description of the [USBampgetinfo] tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterLowPass===&lt;br /&gt;
High pass frequency for pass band.&lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterModelOrder===&lt;br /&gt;
Model order for passband filter. &lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterType===&lt;br /&gt;
Type of passband filter:&lt;br /&gt;
* 1=CHEBYSHEV, &lt;br /&gt;
* 2=BUTTERWORTH.&lt;br /&gt;
&lt;br /&gt;
===NotchEnabled===&lt;br /&gt;
Choose 1 if you want a notch filter, and 0 if you don&#039;t.&lt;br /&gt;
&lt;br /&gt;
===NotchHighPass===&lt;br /&gt;
Similar to FilterHighPass.&lt;br /&gt;
&lt;br /&gt;
===NotchLowPass===&lt;br /&gt;
Similar to FilterLowPass.&lt;br /&gt;
&lt;br /&gt;
===NotchModelOrder===&lt;br /&gt;
Similar to FilterModelOrder.&lt;br /&gt;
&lt;br /&gt;
===NotchType===&lt;br /&gt;
Similar to FilterType.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) would be update 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sampling rate of all connected USBamps. &lt;br /&gt;
If one wants to use a bandpass or a notch filter, there needs to be a filter configuration for that particular sampling rate (see the section on the &#039;&#039;[USBampgetinfo]&#039;&#039; tool). (Guger Technologies can provide you with a new driver configuration file if you need a different filter.)&lt;br /&gt;
&lt;br /&gt;
The USBamp supports the following sampling rates: 32, 64, 128, 256, 512, 600, 1200, 2400, 4800, 9600, 19200, and 38400 Hz.  All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. For example, at 38400 Hz, 4 amplifiers (64 channels), and a system update of 30 Hz, the computer would have to draw more than 73 million lines per second in the Source display!&lt;br /&gt;
&lt;br /&gt;
===SignalType===       &lt;br /&gt;
Defines the data type of the stored signal samples (int16 or float32).&lt;br /&gt;
If the data type is int16, signal samples (which are produced by the amplifier in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;) are converted back into virtual A/D units (see Data Storage section below). If the data type is float32, the signals are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
In this case, SourceChOffset should be 0, and SourceChGain should be&lt;br /&gt;
1 (since the conversion factor from &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1). &lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DigitalInput===&lt;br /&gt;
Turn on digital input. &lt;br /&gt;
If turned on, the last sampled channel on each amplifier will contain sampled values of digital input 0 on the DIGITAL I/O input block on the back of the device.&lt;br /&gt;
For example, if &#039;&#039;SourceCh&#039;&#039; is 8, then channels 1-7 will represent analog inputs, and channel 8 will represent the digital input. &lt;br /&gt;
Thus, if DigitalInput is turned on, &#039;&#039;SourceCh&#039;&#039; and &#039;&#039;SourceChDevices&#039;&#039; may be a maximum of 17.&lt;br /&gt;
&lt;br /&gt;
===DigitalOutput===&lt;br /&gt;
Turn on digital output.&lt;br /&gt;
If turned on, the digital output channel 0 is set low for the duration of data acquisition, and set high at the end. This is primarily used for the BCI2000 Certification process, but may also be employed for other purposes, such as synchronizing acquisition with an external device.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
If set to &#039;&#039;analog signal acquisition&#039;&#039;, the g.USBamp records analog signal voltages (default). If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a sine wave test signal generated by the g.USBamp (which can be used to verify correct system calibration). &lt;br /&gt;
If set to &#039;&#039;Impedance&#039;&#039;, regular analog signal acquisition is preceded by an impedance test. &lt;br /&gt;
This impedance test reports input impedances for each channel in kOhms. &lt;br /&gt;
In impedance mode, if the ground and reference is connected in the amp internally (using the &#039;&#039;CommonGround&#039;&#039; and &#039;&#039;CommonReference&#039;&#039; parameters), then you need to connect the ground and reference to block 4.&lt;br /&gt;
&lt;br /&gt;
===CommonGround===&lt;br /&gt;
This parameter determines whether the g.USBamp internally connects the GND inputs from all blocks together.&lt;br /&gt;
If enabled (default), then the signal ground only needs to be connected to one input block, e.g., block 1. &lt;br /&gt;
Otherwise, all GND inputs need to be externally connected.&lt;br /&gt;
&lt;br /&gt;
===CommonReference===&lt;br /&gt;
The same as &#039;&#039;CommonGround&#039;&#039;, except for the signal reference.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
Unlike other systems, the USBamp is a DC amplifier system that digitizes at 24 bit. &lt;br /&gt;
Bandpass and notch filtering is performed on the digitized samples, resulting in floating point signal samples in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
BCI2000 currently supports signed 16 bit integers and floating point numbers for its data storage.&lt;br /&gt;
If &#039;&#039;SignalType&#039;&#039; is set to int16, the floating point values have to be converted back into integers before they can be stored and transmitted to Signal Processing.&lt;br /&gt;
This is done by the following transformation: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{sample}_\mathrm{stored}\mathrm{(A/D\,units)}=\frac{\mathrm{sample}_\mathrm{acquired}(\mu V)}\mathrm{SourceChGain}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with &lt;br /&gt;
any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from &lt;br /&gt;
each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &lt;br /&gt;
&#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32,&lt;br /&gt;
data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be&lt;br /&gt;
a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is&lt;br /&gt;
1.0 for each channel).&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;USBampgetinfo&#039;&#039; Command Line Tool===&lt;br /&gt;
This command line tool displays all connected USBamps, including their serial &lt;br /&gt;
number and the USB port that they connect to. Further, this tool reads, for the &lt;br /&gt;
first of the connected amplifiers, all supported bandpass and notch filter &lt;br /&gt;
configurations. Thus, this tool can be used to determine which filters can be &lt;br /&gt;
used for a particular sampling frequency within BCI2000. The following is an &lt;br /&gt;
example screen output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*******************************************&lt;br /&gt;
BCI2000 Information Tool for g.USBamp&lt;br /&gt;
*******************************************&lt;br /&gt;
(C)2004 Gerwin Schalk&lt;br /&gt;
	 Wadsworth Center&lt;br /&gt;
	 New York State Department of Health&lt;br /&gt;
	 Albany, NY, USA&lt;br /&gt;
*******************************************&lt;br /&gt;
Amp found at USB address 1 (S/N: UA-200X.XX.XX)&lt;br /&gt;
Printing info for first amp (USB address 1)&lt;br /&gt;
&lt;br /&gt;
Available bandpass filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000|  0.10 |    0.0 |   32 |  8 | 1&lt;br /&gt;
001|  1.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
002|  2.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
003|  5.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
004|  0.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
005|  0.01 |   15.0 |   32 |  8 | 1&lt;br /&gt;
006|  0.10 |   15.0 |   32 |  8 | 1&lt;br /&gt;
007|  0.50 |   15.0 |   32 |  8 | 1&lt;br /&gt;
008|  2.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
009|  0.10 |    0.0 |   64 |  8 | 1&lt;br /&gt;
010|  1.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
011|  2.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
012|  5.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
013|  0.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
014|  0.01 |   30.0 |   64 |  8 | 1&lt;br /&gt;
015|  0.10 |   30.0 |   64 |  8 | 1&lt;br /&gt;
016|  0.50 |   30.0 |   64 |  8 | 1&lt;br /&gt;
017|  2.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
018|  0.10 |    0.0 |  128 |  8 | 1&lt;br /&gt;
019|  1.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
020|  2.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
021|  5.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
022|  0.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
023|  0.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
024|  0.01 |   30.0 |  128 |  8 | 1&lt;br /&gt;
025|  0.01 |   60.0 |  128 |  8 | 1&lt;br /&gt;
026|  0.10 |   30.0 |  128 |  8 | 1&lt;br /&gt;
027|  0.10 |   60.0 |  128 |  8 | 1&lt;br /&gt;
028|  0.50 |   30.0 |  128 |  8 | 1&lt;br /&gt;
029|  0.50 |   60.0 |  128 |  8 | 1&lt;br /&gt;
030|  2.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
031|  2.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
032|  0.10 |    0.0 |  256 |  8 | 1&lt;br /&gt;
033|  1.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
034|  2.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
035|  5.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
036|  0.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
037|  0.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
038|  0.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
039|  0.01 |   30.0 |  256 |  6 | 1&lt;br /&gt;
040|  0.01 |   60.0 |  256 |  8 | 1&lt;br /&gt;
041|  0.01 |  100.0 |  256 |  8 | 1&lt;br /&gt;
042|  0.10 |   30.0 |  256 |  8 | 1&lt;br /&gt;
043|  0.10 |   60.0 |  256 |  8 | 1&lt;br /&gt;
044|  0.10 |  100.0 |  256 |  8 | 1&lt;br /&gt;
045|  0.50 |   30.0 |  256 |  8 | 1&lt;br /&gt;
046|  0.50 |   60.0 |  256 |  8 | 1&lt;br /&gt;
047|  0.50 |  100.0 |  256 |  8 | 1&lt;br /&gt;
048|  2.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
049|  2.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
050|  2.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
051|  5.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
052|  5.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
053|  5.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
054|  0.10 |    0.0 |  512 |  8 | 1&lt;br /&gt;
055|  1.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
056|  2.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
057|  5.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
058|  0.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
059|  0.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
060|  0.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
061|  0.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
062|  0.01 |   30.0 |  512 |  6 | 1&lt;br /&gt;
063|  0.01 |   60.0 |  512 |  6 | 1&lt;br /&gt;
064|  0.01 |  100.0 |  512 |  6 | 1&lt;br /&gt;
065|  0.01 |  200.0 |  512 |  8 | 1&lt;br /&gt;
066|  0.10 |   30.0 |  512 |  8 | 1&lt;br /&gt;
067|  0.10 |   60.0 |  512 |  8 | 1&lt;br /&gt;
068|  0.10 |  100.0 |  512 |  8 | 1&lt;br /&gt;
069|  0.10 |  200.0 |  512 |  8 | 1&lt;br /&gt;
070|  0.50 |   30.0 |  512 |  8 | 1&lt;br /&gt;
071|  0.50 |   60.0 |  512 |  8 | 1&lt;br /&gt;
072|  0.50 |  100.0 |  512 |  8 | 1&lt;br /&gt;
073|  0.50 |  200.0 |  512 |  8 | 1&lt;br /&gt;
074|  2.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
075|  2.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
076|  2.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
077|  2.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
078|  5.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
079|  5.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
080|  5.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
081|  5.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
082|  0.10 |    0.0 |  600 |  8 | 1&lt;br /&gt;
083|  1.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
084|  2.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
085|  5.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
086|  0.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
087|  0.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
088|  0.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
089|  0.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
090|  0.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
091|  0.01 |   60.0 |  600 |  6 | 1&lt;br /&gt;
092|  0.01 |  100.0 |  600 |  6 | 1&lt;br /&gt;
093|  0.01 |  200.0 |  600 |  6 | 1&lt;br /&gt;
094|  0.01 |  250.0 |  600 |  8 | 1&lt;br /&gt;
095|  0.10 |   60.0 |  600 |  8 | 1&lt;br /&gt;
096|  0.10 |  100.0 |  600 |  8 | 1&lt;br /&gt;
097|  0.10 |  200.0 |  600 |  8 | 1&lt;br /&gt;
098|  0.10 |  250.0 |  600 |  8 | 1&lt;br /&gt;
099|  0.50 |   30.0 |  600 |  8 | 1&lt;br /&gt;
100|  0.50 |   60.0 |  600 |  8 | 1&lt;br /&gt;
101|  0.50 |  100.0 |  600 |  8 | 1&lt;br /&gt;
102|  0.50 |  200.0 |  600 |  8 | 1&lt;br /&gt;
103|  0.50 |  250.0 |  600 |  8 | 1&lt;br /&gt;
104|  2.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
105|  2.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
106|  2.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
107|  2.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
108|  2.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
109|  5.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
110|  5.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
111|  5.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
112|  5.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
113|  5.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
114|  0.10 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
115|  1.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
116|  2.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
117|  5.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
118|  0.00 |   30.0 | 1200 |  8 | 1&lt;br /&gt;
119|  0.00 |   60.0 | 1200 |  8 | 1&lt;br /&gt;
120|  0.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
121|  0.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
122|  0.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
123|  0.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
124|  0.01 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
125|  0.01 |  200.0 | 1200 |  6 | 1&lt;br /&gt;
126|  0.01 |  250.0 | 1200 |  6 | 1&lt;br /&gt;
127|  0.01 |  500.0 | 1200 |  6 | 1&lt;br /&gt;
128|  0.10 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
129|  0.10 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
130|  0.10 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
131|  0.10 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
132|  0.50 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
133|  0.50 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
134|  0.50 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
135|  0.50 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
136|  2.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
137|  2.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
138|  2.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
139|  2.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
140|  5.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
141|  5.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
142|  5.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
143|  5.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
144|  0.10 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
145|  1.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
146|  2.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
147|  5.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
148|  0.00 |   30.0 | 2400 |  8 | 1&lt;br /&gt;
149|  0.00 |   60.0 | 2400 |  8 | 1&lt;br /&gt;
150|  0.00 |  100.0 | 2400 |  8 | 1&lt;br /&gt;
151|  0.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
152|  0.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
153|  0.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
154|  0.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
155|  0.01 |  200.0 | 2400 |  4 | 1&lt;br /&gt;
156|  0.01 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
157|  0.01 |  500.0 | 2400 |  6 | 1&lt;br /&gt;
158|  0.01 | 1000.0 | 2400 |  6 | 1&lt;br /&gt;
159|  0.10 |  200.0 | 2400 |  6 | 1&lt;br /&gt;
160|  0.10 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
161|  0.10 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
162|  0.10 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
163|  0.50 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
164|  0.50 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
165|  0.50 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
166|  0.50 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
167|  2.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
168|  2.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
169|  2.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
170|  2.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
171|  5.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
172|  5.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
173|  5.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
174|  5.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
175|  0.10 |    0.0 | 4800 |  6 | 1&lt;br /&gt;
176|  1.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
177|  2.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
178|  5.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
179|  0.00 |   30.0 | 4800 |  8 | 1&lt;br /&gt;
180|  0.00 |   60.0 | 4800 |  8 | 1&lt;br /&gt;
181|  0.00 |  100.0 | 4800 |  8 | 1&lt;br /&gt;
182|  0.00 |  200.0 | 4800 |  8 | 1&lt;br /&gt;
183|  0.00 |  250.0 | 4800 |  8 | 1&lt;br /&gt;
184|  0.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
185|  0.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
186|  0.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
187|  0.01 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
188|  0.01 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
189|  0.01 | 2000.0 | 4800 |  6 | 1&lt;br /&gt;
190|  0.10 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
191|  0.10 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
192|  0.10 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
193|  0.50 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
194|  0.50 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
195|  0.50 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
196|  2.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
197|  2.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
198|  2.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
199|  5.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
200|  5.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
201|  5.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
&lt;br /&gt;
Available notch filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000| 48.00 |   52.0 |  128 |  4 | 1&lt;br /&gt;
001| 58.00 |   62.0 |  128 |  4 | 1&lt;br /&gt;
002| 48.00 |   52.0 |  256 |  4 | 1&lt;br /&gt;
003| 58.00 |   62.0 |  256 |  4 | 1&lt;br /&gt;
004| 48.00 |   52.0 |  512 |  4 | 1&lt;br /&gt;
005| 58.00 |   62.0 |  512 |  4 | 1&lt;br /&gt;
006| 48.00 |   52.0 |  600 |  4 | 1&lt;br /&gt;
007| 58.00 |   62.0 |  600 |  4 | 1&lt;br /&gt;
008| 48.00 |   52.0 | 1200 |  4 | 1&lt;br /&gt;
009| 58.00 |   62.0 | 1200 |  4 | 1&lt;br /&gt;
010| 48.00 |   52.0 | 2400 |  4 | 1&lt;br /&gt;
011| 58.00 |   62.0 | 2400 |  4 | 1&lt;br /&gt;
012| 48.00 |   52.0 | 4800 |  4 | 1&lt;br /&gt;
013| 58.00 |   62.0 | 4800 |  4 | 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:DataIOFilter]], [[Programming Reference:GenericADC]]&lt;br /&gt;
[[Category:Filters]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=3336</id>
		<title>User Reference:gUSBampADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=3336"/>
		<updated>2008-02-13T13:44:40Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* DeviceIDs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;gUSBampADC&#039;&#039; filter acquires data from any number (tested up to four) &#039;&#039;g.USBamp&#039;&#039; EEG amplifiers. &lt;br /&gt;
&#039;&#039;g.USBamp&#039;&#039; is an amplifier/digitizer combination from g.tec medical engineering GmbH/Guger Technologies OEG (http://www.gtec.at). &lt;br /&gt;
Support for this device in BCI2000 consists of two components: A BCI2000-compatible Source Module (&#039;&#039;gUSBamp.exe&#039;&#039;) and a &lt;br /&gt;
command-line tool (&#039;&#039;USBampgetinfo&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
===g.USBamp Hardware===&lt;br /&gt;
The USBamp consists of 16 independent 24-bit A/D converters that can sample at &lt;br /&gt;
up to 38.4kHz per channel. Because there is one A/D converter for each channel, &lt;br /&gt;
one particular sample is digitized at the exact same time for each channel. This &lt;br /&gt;
is unlike with traditional A/D converter boards that only have one A/D &lt;br /&gt;
converter. BCI2000 has a feature that can align samples in time (parameter &lt;br /&gt;
[[User Reference:AlignmentFilter#AlignChannels|AlignChannels]]).&lt;br /&gt;
Because this feature is not needed in conjunction with the USBamp, it needs to be turned off (i.e., &#039;&#039;AlignChannels&#039;&#039; needs to be 0).&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;gUSBampADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===DeviceIDMaster===&lt;br /&gt;
Serial number of the master device (e.g., UA-2007.01.01). &lt;br /&gt;
If you only have one device, this parameter has to equal &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
If you have more then one device, then this parameter represents the serial number of the device whose SYNC goes to the slaves, i.e., the only device that has a cable connected at SYNC OUT, but none connected to SYNC IN. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers (e.g., UA-2007.01.01) of all devices.&lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===FilterEnabled===&lt;br /&gt;
Choose 1 if you want a pass band filter, and 0 if you don&#039;t.&lt;br /&gt;
The gUSBamp is a DC amplifier and thus you most likely will want a pass band filter.&lt;br /&gt;
Please note that, because the g.USBamp internally has a 5kHz antialiasing filter and always samples with 38.4kHz, you DO NOT need to enable any filter if you do not want.&lt;br /&gt;
You will never experience aliasing.&lt;br /&gt;
&lt;br /&gt;
===FilterHighPass===&lt;br /&gt;
High pass frequency for pass band. &lt;br /&gt;
You need to query the amp for possible values. &lt;br /&gt;
See description of the [USBampgetinfo] tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterLowPass===&lt;br /&gt;
High pass frequency for pass band.&lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterModelOrder===&lt;br /&gt;
Model order for passband filter. &lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterType===&lt;br /&gt;
Type of passband filter:&lt;br /&gt;
* 1=CHEBYSHEV, &lt;br /&gt;
* 2=BUTTERWORTH.&lt;br /&gt;
&lt;br /&gt;
===NotchEnabled===&lt;br /&gt;
Choose 1 if you want a notch filter, and 0 if you don&#039;t.&lt;br /&gt;
&lt;br /&gt;
===NotchHighPass===&lt;br /&gt;
Similar to FilterHighPass.&lt;br /&gt;
&lt;br /&gt;
===NotchLowPass===&lt;br /&gt;
Similar to FilterLowPass.&lt;br /&gt;
&lt;br /&gt;
===NotchModelOrder===&lt;br /&gt;
Similar to FilterModelOrder.&lt;br /&gt;
&lt;br /&gt;
===NotchType===&lt;br /&gt;
Similar to FilterType.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) would be update 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sampling rate of all connected USBamps. &lt;br /&gt;
If one wants to use a bandpass or a notch filter, there needs to be a filter configuration for that particular sampling rate (see the section on the &#039;&#039;[USBampgetinfo]&#039;&#039; tool). (Guger Technologies can provide you with a new driver configuration file if you need a different filter.)&lt;br /&gt;
&lt;br /&gt;
The USBamp supports the following sampling rates: 32, 64, 128, 256, 512, 600, 1200, 2400, 4800, 9600, 19200, and 38400 Hz.  All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. For example, at 38400 Hz, 4 amplifiers (64 channels), and a system update of 30 Hz, the computer would have to draw more than 73 million lines per second in the Source display!&lt;br /&gt;
&lt;br /&gt;
===SignalType===       &lt;br /&gt;
Defines the data type of the stored signal samples (int16 or float32).&lt;br /&gt;
If the data type is int16, signal samples (which are produced by the amplifier in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;) are converted back into virtual A/D units (see Data Storage section below). If the data type is float32, the signals are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
In this case, SourceChOffset should be 0, and SourceChGain should be&lt;br /&gt;
1 (since the conversion factor from &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1). &lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DigitalInput===&lt;br /&gt;
Turn on digital input. &lt;br /&gt;
If turned on, the last sampled channel on each amplifier will contain sampled values of digital input 0 on the DIGITAL I/O input block on the back of the device.&lt;br /&gt;
For example, if &#039;&#039;SourceCh&#039;&#039; is 8, then channels 1-7 will represent analog inputs, and channel 8 will represent the digital input. &lt;br /&gt;
Thus, if DigitalInput is turned on, &#039;&#039;SourceCh&#039;&#039; and &#039;&#039;SourceChDevices&#039;&#039; may be a maximum of 17.&lt;br /&gt;
&lt;br /&gt;
===DigitalOutput===&lt;br /&gt;
Turn on digital output.&lt;br /&gt;
If turned on, the digital output channel 0 is set low for the duration of data acquisition, and set high at the end. This is primarily used for the BCI2000 Certification process, but may also be employed for other purposes, such as synchronizing acquisition with an external device.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
If set to &#039;&#039;analog signal acquisition&#039;&#039;, the g.USBamp records analog signal voltages (default). If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a sine wave test signal generated by the g.USBamp (which can be used to verify correct system calibration). &lt;br /&gt;
If set to &#039;&#039;Impedance&#039;&#039;, regular analog signal acquisition is preceded by an impedance test. &lt;br /&gt;
This impedance test reports input impedances for each channel in kOhms. &lt;br /&gt;
In impedance mode, if the ground and reference is connected in the amp internally (using the &#039;&#039;CommonGround&#039;&#039; and &#039;&#039;CommonReference&#039;&#039; parameters), then you need to connect the ground and reference to block 4.&lt;br /&gt;
&lt;br /&gt;
===CommonGround===&lt;br /&gt;
This parameter determines whether the g.USBamp internally connects the GND inputs from all blocks together.&lt;br /&gt;
If enabled (default), then the signal ground only needs to be connected to one input block, e.g., block 1. &lt;br /&gt;
Otherwise, all GND inputs need to be externally connected.&lt;br /&gt;
&lt;br /&gt;
===CommonReference===&lt;br /&gt;
The same as &#039;&#039;CommonGround&#039;&#039;, except for the signal reference.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
Unlike other systems, the USBamp is a DC amplifier system that digitizes at 24 bit. &lt;br /&gt;
Bandpass and notch filtering is performed on the digitized samples, resulting in floating point signal samples in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
BCI2000 currently supports signed 16 bit integers and floating point numbers for its data storage.&lt;br /&gt;
If &#039;&#039;SignalType&#039;&#039; is set to int16, the floating point values have to be converted back into integers before they can be stored and transmitted to Signal Processing.&lt;br /&gt;
This is done by the following transformation: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{sample}_\mathrm{stored}\mathrm{(A/D\,units)}=\frac{\mathrm{sample}_\mathrm{acquired}(\mu V)}\mathrm{SourceChGain}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with &lt;br /&gt;
any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from &lt;br /&gt;
each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &lt;br /&gt;
&#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32,&lt;br /&gt;
data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be&lt;br /&gt;
a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is&lt;br /&gt;
1.0 for each channel).&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;USBampgetinfo&#039;&#039; Command Line Tool===&lt;br /&gt;
This command line tool displays all connected USBamps, including their serial &lt;br /&gt;
number and the USB port that they connect to. Further, this tool reads, for the &lt;br /&gt;
first of the connected amplifiers, all supported bandpass and notch filter &lt;br /&gt;
configurations. Thus, this tool can be used to determine which filters can be &lt;br /&gt;
used for a particular sampling frequency within BCI2000. The following is an &lt;br /&gt;
example screen output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*******************************************&lt;br /&gt;
BCI2000 Information Tool for g.USBamp&lt;br /&gt;
*******************************************&lt;br /&gt;
(C)2004 Gerwin Schalk&lt;br /&gt;
	 Wadsworth Center&lt;br /&gt;
	 New York State Department of Health&lt;br /&gt;
	 Albany, NY, USA&lt;br /&gt;
*******************************************&lt;br /&gt;
Amp found at USB address 1 (S/N: UA-200X.XX.XX)&lt;br /&gt;
Printing info for first amp (USB address 1)&lt;br /&gt;
&lt;br /&gt;
Available bandpass filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000|  0.10 |    0.0 |   32 |  8 | 1&lt;br /&gt;
001|  1.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
002|  2.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
003|  5.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
004|  0.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
005|  0.01 |   15.0 |   32 |  8 | 1&lt;br /&gt;
006|  0.10 |   15.0 |   32 |  8 | 1&lt;br /&gt;
007|  0.50 |   15.0 |   32 |  8 | 1&lt;br /&gt;
008|  2.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
009|  0.10 |    0.0 |   64 |  8 | 1&lt;br /&gt;
010|  1.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
011|  2.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
012|  5.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
013|  0.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
014|  0.01 |   30.0 |   64 |  8 | 1&lt;br /&gt;
015|  0.10 |   30.0 |   64 |  8 | 1&lt;br /&gt;
016|  0.50 |   30.0 |   64 |  8 | 1&lt;br /&gt;
017|  2.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
018|  0.10 |    0.0 |  128 |  8 | 1&lt;br /&gt;
019|  1.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
020|  2.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
021|  5.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
022|  0.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
023|  0.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
024|  0.01 |   30.0 |  128 |  8 | 1&lt;br /&gt;
025|  0.01 |   60.0 |  128 |  8 | 1&lt;br /&gt;
026|  0.10 |   30.0 |  128 |  8 | 1&lt;br /&gt;
027|  0.10 |   60.0 |  128 |  8 | 1&lt;br /&gt;
028|  0.50 |   30.0 |  128 |  8 | 1&lt;br /&gt;
029|  0.50 |   60.0 |  128 |  8 | 1&lt;br /&gt;
030|  2.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
031|  2.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
032|  0.10 |    0.0 |  256 |  8 | 1&lt;br /&gt;
033|  1.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
034|  2.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
035|  5.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
036|  0.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
037|  0.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
038|  0.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
039|  0.01 |   30.0 |  256 |  6 | 1&lt;br /&gt;
040|  0.01 |   60.0 |  256 |  8 | 1&lt;br /&gt;
041|  0.01 |  100.0 |  256 |  8 | 1&lt;br /&gt;
042|  0.10 |   30.0 |  256 |  8 | 1&lt;br /&gt;
043|  0.10 |   60.0 |  256 |  8 | 1&lt;br /&gt;
044|  0.10 |  100.0 |  256 |  8 | 1&lt;br /&gt;
045|  0.50 |   30.0 |  256 |  8 | 1&lt;br /&gt;
046|  0.50 |   60.0 |  256 |  8 | 1&lt;br /&gt;
047|  0.50 |  100.0 |  256 |  8 | 1&lt;br /&gt;
048|  2.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
049|  2.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
050|  2.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
051|  5.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
052|  5.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
053|  5.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
054|  0.10 |    0.0 |  512 |  8 | 1&lt;br /&gt;
055|  1.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
056|  2.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
057|  5.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
058|  0.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
059|  0.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
060|  0.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
061|  0.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
062|  0.01 |   30.0 |  512 |  6 | 1&lt;br /&gt;
063|  0.01 |   60.0 |  512 |  6 | 1&lt;br /&gt;
064|  0.01 |  100.0 |  512 |  6 | 1&lt;br /&gt;
065|  0.01 |  200.0 |  512 |  8 | 1&lt;br /&gt;
066|  0.10 |   30.0 |  512 |  8 | 1&lt;br /&gt;
067|  0.10 |   60.0 |  512 |  8 | 1&lt;br /&gt;
068|  0.10 |  100.0 |  512 |  8 | 1&lt;br /&gt;
069|  0.10 |  200.0 |  512 |  8 | 1&lt;br /&gt;
070|  0.50 |   30.0 |  512 |  8 | 1&lt;br /&gt;
071|  0.50 |   60.0 |  512 |  8 | 1&lt;br /&gt;
072|  0.50 |  100.0 |  512 |  8 | 1&lt;br /&gt;
073|  0.50 |  200.0 |  512 |  8 | 1&lt;br /&gt;
074|  2.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
075|  2.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
076|  2.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
077|  2.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
078|  5.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
079|  5.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
080|  5.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
081|  5.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
082|  0.10 |    0.0 |  600 |  8 | 1&lt;br /&gt;
083|  1.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
084|  2.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
085|  5.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
086|  0.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
087|  0.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
088|  0.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
089|  0.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
090|  0.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
091|  0.01 |   60.0 |  600 |  6 | 1&lt;br /&gt;
092|  0.01 |  100.0 |  600 |  6 | 1&lt;br /&gt;
093|  0.01 |  200.0 |  600 |  6 | 1&lt;br /&gt;
094|  0.01 |  250.0 |  600 |  8 | 1&lt;br /&gt;
095|  0.10 |   60.0 |  600 |  8 | 1&lt;br /&gt;
096|  0.10 |  100.0 |  600 |  8 | 1&lt;br /&gt;
097|  0.10 |  200.0 |  600 |  8 | 1&lt;br /&gt;
098|  0.10 |  250.0 |  600 |  8 | 1&lt;br /&gt;
099|  0.50 |   30.0 |  600 |  8 | 1&lt;br /&gt;
100|  0.50 |   60.0 |  600 |  8 | 1&lt;br /&gt;
101|  0.50 |  100.0 |  600 |  8 | 1&lt;br /&gt;
102|  0.50 |  200.0 |  600 |  8 | 1&lt;br /&gt;
103|  0.50 |  250.0 |  600 |  8 | 1&lt;br /&gt;
104|  2.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
105|  2.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
106|  2.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
107|  2.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
108|  2.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
109|  5.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
110|  5.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
111|  5.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
112|  5.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
113|  5.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
114|  0.10 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
115|  1.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
116|  2.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
117|  5.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
118|  0.00 |   30.0 | 1200 |  8 | 1&lt;br /&gt;
119|  0.00 |   60.0 | 1200 |  8 | 1&lt;br /&gt;
120|  0.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
121|  0.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
122|  0.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
123|  0.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
124|  0.01 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
125|  0.01 |  200.0 | 1200 |  6 | 1&lt;br /&gt;
126|  0.01 |  250.0 | 1200 |  6 | 1&lt;br /&gt;
127|  0.01 |  500.0 | 1200 |  6 | 1&lt;br /&gt;
128|  0.10 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
129|  0.10 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
130|  0.10 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
131|  0.10 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
132|  0.50 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
133|  0.50 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
134|  0.50 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
135|  0.50 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
136|  2.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
137|  2.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
138|  2.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
139|  2.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
140|  5.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
141|  5.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
142|  5.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
143|  5.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
144|  0.10 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
145|  1.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
146|  2.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
147|  5.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
148|  0.00 |   30.0 | 2400 |  8 | 1&lt;br /&gt;
149|  0.00 |   60.0 | 2400 |  8 | 1&lt;br /&gt;
150|  0.00 |  100.0 | 2400 |  8 | 1&lt;br /&gt;
151|  0.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
152|  0.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
153|  0.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
154|  0.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
155|  0.01 |  200.0 | 2400 |  4 | 1&lt;br /&gt;
156|  0.01 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
157|  0.01 |  500.0 | 2400 |  6 | 1&lt;br /&gt;
158|  0.01 | 1000.0 | 2400 |  6 | 1&lt;br /&gt;
159|  0.10 |  200.0 | 2400 |  6 | 1&lt;br /&gt;
160|  0.10 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
161|  0.10 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
162|  0.10 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
163|  0.50 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
164|  0.50 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
165|  0.50 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
166|  0.50 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
167|  2.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
168|  2.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
169|  2.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
170|  2.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
171|  5.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
172|  5.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
173|  5.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
174|  5.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
175|  0.10 |    0.0 | 4800 |  6 | 1&lt;br /&gt;
176|  1.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
177|  2.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
178|  5.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
179|  0.00 |   30.0 | 4800 |  8 | 1&lt;br /&gt;
180|  0.00 |   60.0 | 4800 |  8 | 1&lt;br /&gt;
181|  0.00 |  100.0 | 4800 |  8 | 1&lt;br /&gt;
182|  0.00 |  200.0 | 4800 |  8 | 1&lt;br /&gt;
183|  0.00 |  250.0 | 4800 |  8 | 1&lt;br /&gt;
184|  0.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
185|  0.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
186|  0.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
187|  0.01 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
188|  0.01 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
189|  0.01 | 2000.0 | 4800 |  6 | 1&lt;br /&gt;
190|  0.10 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
191|  0.10 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
192|  0.10 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
193|  0.50 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
194|  0.50 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
195|  0.50 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
196|  2.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
197|  2.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
198|  2.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
199|  5.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
200|  5.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
201|  5.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
&lt;br /&gt;
Available notch filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000| 48.00 |   52.0 |  128 |  4 | 1&lt;br /&gt;
001| 58.00 |   62.0 |  128 |  4 | 1&lt;br /&gt;
002| 48.00 |   52.0 |  256 |  4 | 1&lt;br /&gt;
003| 58.00 |   62.0 |  256 |  4 | 1&lt;br /&gt;
004| 48.00 |   52.0 |  512 |  4 | 1&lt;br /&gt;
005| 58.00 |   62.0 |  512 |  4 | 1&lt;br /&gt;
006| 48.00 |   52.0 |  600 |  4 | 1&lt;br /&gt;
007| 58.00 |   62.0 |  600 |  4 | 1&lt;br /&gt;
008| 48.00 |   52.0 | 1200 |  4 | 1&lt;br /&gt;
009| 58.00 |   62.0 | 1200 |  4 | 1&lt;br /&gt;
010| 48.00 |   52.0 | 2400 |  4 | 1&lt;br /&gt;
011| 58.00 |   62.0 | 2400 |  4 | 1&lt;br /&gt;
012| 48.00 |   52.0 | 4800 |  4 | 1&lt;br /&gt;
013| 58.00 |   62.0 | 4800 |  4 | 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:DataIOFilter]], [[Programming Reference:GenericADC]]&lt;br /&gt;
[[Category:Filters]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=3335</id>
		<title>User Reference:gUSBampADC</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:gUSBampADC&amp;diff=3335"/>
		<updated>2008-02-13T13:44:25Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* DeviceIDMaster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
The &#039;&#039;gUSBampADC&#039;&#039; filter acquires data from any number (tested up to four) &#039;&#039;g.USBamp&#039;&#039; EEG amplifiers. &lt;br /&gt;
&#039;&#039;g.USBamp&#039;&#039; is an amplifier/digitizer combination from g.tec medical engineering GmbH/Guger Technologies OEG (http://www.gtec.at). &lt;br /&gt;
Support for this device in BCI2000 consists of two components: A BCI2000-compatible Source Module (&#039;&#039;gUSBamp.exe&#039;&#039;) and a &lt;br /&gt;
command-line tool (&#039;&#039;USBampgetinfo&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
===g.USBamp Hardware===&lt;br /&gt;
The USBamp consists of 16 independent 24-bit A/D converters that can sample at &lt;br /&gt;
up to 38.4kHz per channel. Because there is one A/D converter for each channel, &lt;br /&gt;
one particular sample is digitized at the exact same time for each channel. This &lt;br /&gt;
is unlike with traditional A/D converter boards that only have one A/D &lt;br /&gt;
converter. BCI2000 has a feature that can align samples in time (parameter &lt;br /&gt;
[[User Reference:AlignmentFilter#AlignChannels|AlignChannels]]).&lt;br /&gt;
Because this feature is not needed in conjunction with the USBamp, it needs to be turned off (i.e., &#039;&#039;AlignChannels&#039;&#039; needs to be 0).&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Parameters common to all source modules are described under [[User Reference:DataIOFilter]].&lt;br /&gt;
In addition, the &#039;&#039;gUSBampADC&#039;&#039; provides the following parameters:&lt;br /&gt;
&lt;br /&gt;
===DeviceIDMaster===&lt;br /&gt;
Serial number of the master device (e.g., UA-2007.01.01). &lt;br /&gt;
If you only have one device, this parameter has to equal &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
If you have more then one device, then this parameter represents the serial number of the device whose SYNC goes to the slaves, i.e., the only device that has a cable connected at SYNC OUT, but none connected to SYNC IN. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DeviceIDs===&lt;br /&gt;
List of serial numbers of all devices.&lt;br /&gt;
If you have more than one device, this list determines the order of the channels in the data file. &lt;br /&gt;
If only one device is connected, this parameter may be set to &#039;&#039;auto&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===FilterEnabled===&lt;br /&gt;
Choose 1 if you want a pass band filter, and 0 if you don&#039;t.&lt;br /&gt;
The gUSBamp is a DC amplifier and thus you most likely will want a pass band filter.&lt;br /&gt;
Please note that, because the g.USBamp internally has a 5kHz antialiasing filter and always samples with 38.4kHz, you DO NOT need to enable any filter if you do not want.&lt;br /&gt;
You will never experience aliasing.&lt;br /&gt;
&lt;br /&gt;
===FilterHighPass===&lt;br /&gt;
High pass frequency for pass band. &lt;br /&gt;
You need to query the amp for possible values. &lt;br /&gt;
See description of the [USBampgetinfo] tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterLowPass===&lt;br /&gt;
High pass frequency for pass band.&lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterModelOrder===&lt;br /&gt;
Model order for passband filter. &lt;br /&gt;
See description of the USBampgetinfo tool for more info.&lt;br /&gt;
&lt;br /&gt;
===FilterType===&lt;br /&gt;
Type of passband filter:&lt;br /&gt;
* 1=CHEBYSHEV, &lt;br /&gt;
* 2=BUTTERWORTH.&lt;br /&gt;
&lt;br /&gt;
===NotchEnabled===&lt;br /&gt;
Choose 1 if you want a notch filter, and 0 if you don&#039;t.&lt;br /&gt;
&lt;br /&gt;
===NotchHighPass===&lt;br /&gt;
Similar to FilterHighPass.&lt;br /&gt;
&lt;br /&gt;
===NotchLowPass===&lt;br /&gt;
Similar to FilterLowPass.&lt;br /&gt;
&lt;br /&gt;
===NotchModelOrder===&lt;br /&gt;
Similar to FilterModelOrder.&lt;br /&gt;
&lt;br /&gt;
===NotchType===&lt;br /&gt;
Similar to FilterType.&lt;br /&gt;
&lt;br /&gt;
===SampleBlockSize===&lt;br /&gt;
Samples per channel per digitized block. &lt;br /&gt;
Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 600 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) would be update 30 times per second.&lt;br /&gt;
&lt;br /&gt;
===SamplingRate===&lt;br /&gt;
The sampling rate of all connected USBamps. &lt;br /&gt;
If one wants to use a bandpass or a notch filter, there needs to be a filter configuration for that particular sampling rate (see the section on the &#039;&#039;[USBampgetinfo]&#039;&#039; tool). (Guger Technologies can provide you with a new driver configuration file if you need a different filter.)&lt;br /&gt;
&lt;br /&gt;
The USBamp supports the following sampling rates: 32, 64, 128, 256, 512, 600, 1200, 2400, 4800, 9600, 19200, and 38400 Hz.  All sampling rates are supported for one or more amplifiers. If you are sampling at high rates and from multiple amplifiers, the CPU may be overloaded depending on the speed of your computer and the BCI2000 configuration. In case you are experiencing problems (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize-&amp;gt;VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display. For example, at 38400 Hz, 4 amplifiers (64 channels), and a system update of 30 Hz, the computer would have to draw more than 73 million lines per second in the Source display!&lt;br /&gt;
&lt;br /&gt;
===SignalType===       &lt;br /&gt;
Defines the data type of the stored signal samples (int16 or float32).&lt;br /&gt;
If the data type is int16, signal samples (which are produced by the amplifier in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;) are converted back into virtual A/D units (see Data Storage section below). If the data type is float32, the signals are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
In this case, SourceChOffset should be 0, and SourceChGain should be&lt;br /&gt;
1 (since the conversion factor from &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is 1). &lt;br /&gt;
&lt;br /&gt;
===SourceCh===&lt;br /&gt;
The total number of channels across all USBamp devices.&lt;br /&gt;
&lt;br /&gt;
===SourceChDevices===&lt;br /&gt;
The number of channels acquired from each device. &lt;br /&gt;
If there is only one device, this parameter has to equal &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
For example, &#039;16 8&#039; will acquire channels from the first device listed under &#039;&#039;DeviceIDs&#039;&#039;, and 8 channels from the second device listed under &#039;&#039;DeviceIDs&#039;&#039;.&lt;br /&gt;
Data acquisition always starts at channel 1.&lt;br /&gt;
The sum of all channels (e.g., 24 in this example) has to &lt;br /&gt;
equal the value of &#039;&#039;SourceCh&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===DigitalInput===&lt;br /&gt;
Turn on digital input. &lt;br /&gt;
If turned on, the last sampled channel on each amplifier will contain sampled values of digital input 0 on the DIGITAL I/O input block on the back of the device.&lt;br /&gt;
For example, if &#039;&#039;SourceCh&#039;&#039; is 8, then channels 1-7 will represent analog inputs, and channel 8 will represent the digital input. &lt;br /&gt;
Thus, if DigitalInput is turned on, &#039;&#039;SourceCh&#039;&#039; and &#039;&#039;SourceChDevices&#039;&#039; may be a maximum of 17.&lt;br /&gt;
&lt;br /&gt;
===DigitalOutput===&lt;br /&gt;
Turn on digital output.&lt;br /&gt;
If turned on, the digital output channel 0 is set low for the duration of data acquisition, and set high at the end. This is primarily used for the BCI2000 Certification process, but may also be employed for other purposes, such as synchronizing acquisition with an external device.&lt;br /&gt;
&lt;br /&gt;
===AcquisitionMode===&lt;br /&gt;
If set to &#039;&#039;analog signal acquisition&#039;&#039;, the g.USBamp records analog signal voltages (default). If set to &#039;&#039;Calibration&#039;&#039;, the signal output is a sine wave test signal generated by the g.USBamp (which can be used to verify correct system calibration). &lt;br /&gt;
If set to &#039;&#039;Impedance&#039;&#039;, regular analog signal acquisition is preceded by an impedance test. &lt;br /&gt;
This impedance test reports input impedances for each channel in kOhms. &lt;br /&gt;
In impedance mode, if the ground and reference is connected in the amp internally (using the &#039;&#039;CommonGround&#039;&#039; and &#039;&#039;CommonReference&#039;&#039; parameters), then you need to connect the ground and reference to block 4.&lt;br /&gt;
&lt;br /&gt;
===CommonGround===&lt;br /&gt;
This parameter determines whether the g.USBamp internally connects the GND inputs from all blocks together.&lt;br /&gt;
If enabled (default), then the signal ground only needs to be connected to one input block, e.g., block 1. &lt;br /&gt;
Otherwise, all GND inputs need to be externally connected.&lt;br /&gt;
&lt;br /&gt;
===CommonReference===&lt;br /&gt;
The same as &#039;&#039;CommonGround&#039;&#039;, except for the signal reference.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
&lt;br /&gt;
===Data Storage===&lt;br /&gt;
Unlike other systems, the USBamp is a DC amplifier system that digitizes at 24 bit. &lt;br /&gt;
Bandpass and notch filtering is performed on the digitized samples, resulting in floating point signal samples in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;.&lt;br /&gt;
BCI2000 currently supports signed 16 bit integers and floating point numbers for its data storage.&lt;br /&gt;
If &#039;&#039;SignalType&#039;&#039; is set to int16, the floating point values have to be converted back into integers before they can be stored and transmitted to Signal Processing.&lt;br /&gt;
This is done by the following transformation: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{sample}_\mathrm{stored}\mathrm{(A/D\,units)}=\frac{\mathrm{sample}_\mathrm{acquired}(\mu V)}\mathrm{SourceChGain}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;SourceChOffset&#039;&#039; is assumed (and required) to be zero for all channels.) &lt;br /&gt;
BCI2000 Signal Processing or any offline analysis routine can derive, as with &lt;br /&gt;
any other BCI2000 source module, sample values in &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; by subtracting, from &lt;br /&gt;
each stored sample, &#039;&#039;SourceChOffset&#039;&#039; (i.e., zero), and multiplying it with &lt;br /&gt;
&#039;&#039;SourceChGain&#039;&#039; for each channel. If &#039;&#039;SignalType&#039;&#039; is set to float32,&lt;br /&gt;
data samples are stored in units of &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt;. In this case, &#039;&#039;SourceChGain&#039;&#039; should be&lt;br /&gt;
a list of 1&#039;s (because the conversion factor between data samples into &amp;lt;math&amp;gt;\mu V&amp;lt;/math&amp;gt; is&lt;br /&gt;
1.0 for each channel).&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;USBampgetinfo&#039;&#039; Command Line Tool===&lt;br /&gt;
This command line tool displays all connected USBamps, including their serial &lt;br /&gt;
number and the USB port that they connect to. Further, this tool reads, for the &lt;br /&gt;
first of the connected amplifiers, all supported bandpass and notch filter &lt;br /&gt;
configurations. Thus, this tool can be used to determine which filters can be &lt;br /&gt;
used for a particular sampling frequency within BCI2000. The following is an &lt;br /&gt;
example screen output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*******************************************&lt;br /&gt;
BCI2000 Information Tool for g.USBamp&lt;br /&gt;
*******************************************&lt;br /&gt;
(C)2004 Gerwin Schalk&lt;br /&gt;
	 Wadsworth Center&lt;br /&gt;
	 New York State Department of Health&lt;br /&gt;
	 Albany, NY, USA&lt;br /&gt;
*******************************************&lt;br /&gt;
Amp found at USB address 1 (S/N: UA-200X.XX.XX)&lt;br /&gt;
Printing info for first amp (USB address 1)&lt;br /&gt;
&lt;br /&gt;
Available bandpass filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000|  0.10 |    0.0 |   32 |  8 | 1&lt;br /&gt;
001|  1.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
002|  2.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
003|  5.00 |    0.0 |   32 |  8 | 1&lt;br /&gt;
004|  0.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
005|  0.01 |   15.0 |   32 |  8 | 1&lt;br /&gt;
006|  0.10 |   15.0 |   32 |  8 | 1&lt;br /&gt;
007|  0.50 |   15.0 |   32 |  8 | 1&lt;br /&gt;
008|  2.00 |   15.0 |   32 |  8 | 1&lt;br /&gt;
009|  0.10 |    0.0 |   64 |  8 | 1&lt;br /&gt;
010|  1.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
011|  2.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
012|  5.00 |    0.0 |   64 |  8 | 1&lt;br /&gt;
013|  0.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
014|  0.01 |   30.0 |   64 |  8 | 1&lt;br /&gt;
015|  0.10 |   30.0 |   64 |  8 | 1&lt;br /&gt;
016|  0.50 |   30.0 |   64 |  8 | 1&lt;br /&gt;
017|  2.00 |   30.0 |   64 |  8 | 1&lt;br /&gt;
018|  0.10 |    0.0 |  128 |  8 | 1&lt;br /&gt;
019|  1.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
020|  2.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
021|  5.00 |    0.0 |  128 |  8 | 1&lt;br /&gt;
022|  0.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
023|  0.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
024|  0.01 |   30.0 |  128 |  8 | 1&lt;br /&gt;
025|  0.01 |   60.0 |  128 |  8 | 1&lt;br /&gt;
026|  0.10 |   30.0 |  128 |  8 | 1&lt;br /&gt;
027|  0.10 |   60.0 |  128 |  8 | 1&lt;br /&gt;
028|  0.50 |   30.0 |  128 |  8 | 1&lt;br /&gt;
029|  0.50 |   60.0 |  128 |  8 | 1&lt;br /&gt;
030|  2.00 |   30.0 |  128 |  8 | 1&lt;br /&gt;
031|  2.00 |   60.0 |  128 |  8 | 1&lt;br /&gt;
032|  0.10 |    0.0 |  256 |  8 | 1&lt;br /&gt;
033|  1.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
034|  2.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
035|  5.00 |    0.0 |  256 |  8 | 1&lt;br /&gt;
036|  0.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
037|  0.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
038|  0.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
039|  0.01 |   30.0 |  256 |  6 | 1&lt;br /&gt;
040|  0.01 |   60.0 |  256 |  8 | 1&lt;br /&gt;
041|  0.01 |  100.0 |  256 |  8 | 1&lt;br /&gt;
042|  0.10 |   30.0 |  256 |  8 | 1&lt;br /&gt;
043|  0.10 |   60.0 |  256 |  8 | 1&lt;br /&gt;
044|  0.10 |  100.0 |  256 |  8 | 1&lt;br /&gt;
045|  0.50 |   30.0 |  256 |  8 | 1&lt;br /&gt;
046|  0.50 |   60.0 |  256 |  8 | 1&lt;br /&gt;
047|  0.50 |  100.0 |  256 |  8 | 1&lt;br /&gt;
048|  2.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
049|  2.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
050|  2.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
051|  5.00 |   30.0 |  256 |  8 | 1&lt;br /&gt;
052|  5.00 |   60.0 |  256 |  8 | 1&lt;br /&gt;
053|  5.00 |  100.0 |  256 |  8 | 1&lt;br /&gt;
054|  0.10 |    0.0 |  512 |  8 | 1&lt;br /&gt;
055|  1.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
056|  2.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
057|  5.00 |    0.0 |  512 |  8 | 1&lt;br /&gt;
058|  0.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
059|  0.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
060|  0.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
061|  0.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
062|  0.01 |   30.0 |  512 |  6 | 1&lt;br /&gt;
063|  0.01 |   60.0 |  512 |  6 | 1&lt;br /&gt;
064|  0.01 |  100.0 |  512 |  6 | 1&lt;br /&gt;
065|  0.01 |  200.0 |  512 |  8 | 1&lt;br /&gt;
066|  0.10 |   30.0 |  512 |  8 | 1&lt;br /&gt;
067|  0.10 |   60.0 |  512 |  8 | 1&lt;br /&gt;
068|  0.10 |  100.0 |  512 |  8 | 1&lt;br /&gt;
069|  0.10 |  200.0 |  512 |  8 | 1&lt;br /&gt;
070|  0.50 |   30.0 |  512 |  8 | 1&lt;br /&gt;
071|  0.50 |   60.0 |  512 |  8 | 1&lt;br /&gt;
072|  0.50 |  100.0 |  512 |  8 | 1&lt;br /&gt;
073|  0.50 |  200.0 |  512 |  8 | 1&lt;br /&gt;
074|  2.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
075|  2.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
076|  2.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
077|  2.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
078|  5.00 |   30.0 |  512 |  8 | 1&lt;br /&gt;
079|  5.00 |   60.0 |  512 |  8 | 1&lt;br /&gt;
080|  5.00 |  100.0 |  512 |  8 | 1&lt;br /&gt;
081|  5.00 |  200.0 |  512 |  8 | 1&lt;br /&gt;
082|  0.10 |    0.0 |  600 |  8 | 1&lt;br /&gt;
083|  1.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
084|  2.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
085|  5.00 |    0.0 |  600 |  8 | 1&lt;br /&gt;
086|  0.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
087|  0.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
088|  0.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
089|  0.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
090|  0.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
091|  0.01 |   60.0 |  600 |  6 | 1&lt;br /&gt;
092|  0.01 |  100.0 |  600 |  6 | 1&lt;br /&gt;
093|  0.01 |  200.0 |  600 |  6 | 1&lt;br /&gt;
094|  0.01 |  250.0 |  600 |  8 | 1&lt;br /&gt;
095|  0.10 |   60.0 |  600 |  8 | 1&lt;br /&gt;
096|  0.10 |  100.0 |  600 |  8 | 1&lt;br /&gt;
097|  0.10 |  200.0 |  600 |  8 | 1&lt;br /&gt;
098|  0.10 |  250.0 |  600 |  8 | 1&lt;br /&gt;
099|  0.50 |   30.0 |  600 |  8 | 1&lt;br /&gt;
100|  0.50 |   60.0 |  600 |  8 | 1&lt;br /&gt;
101|  0.50 |  100.0 |  600 |  8 | 1&lt;br /&gt;
102|  0.50 |  200.0 |  600 |  8 | 1&lt;br /&gt;
103|  0.50 |  250.0 |  600 |  8 | 1&lt;br /&gt;
104|  2.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
105|  2.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
106|  2.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
107|  2.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
108|  2.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
109|  5.00 |   30.0 |  600 |  8 | 1&lt;br /&gt;
110|  5.00 |   60.0 |  600 |  8 | 1&lt;br /&gt;
111|  5.00 |  100.0 |  600 |  8 | 1&lt;br /&gt;
112|  5.00 |  200.0 |  600 |  8 | 1&lt;br /&gt;
113|  5.00 |  250.0 |  600 |  8 | 1&lt;br /&gt;
114|  0.10 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
115|  1.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
116|  2.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
117|  5.00 |    0.0 | 1200 |  8 | 1&lt;br /&gt;
118|  0.00 |   30.0 | 1200 |  8 | 1&lt;br /&gt;
119|  0.00 |   60.0 | 1200 |  8 | 1&lt;br /&gt;
120|  0.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
121|  0.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
122|  0.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
123|  0.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
124|  0.01 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
125|  0.01 |  200.0 | 1200 |  6 | 1&lt;br /&gt;
126|  0.01 |  250.0 | 1200 |  6 | 1&lt;br /&gt;
127|  0.01 |  500.0 | 1200 |  6 | 1&lt;br /&gt;
128|  0.10 |  100.0 | 1200 |  6 | 1&lt;br /&gt;
129|  0.10 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
130|  0.10 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
131|  0.10 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
132|  0.50 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
133|  0.50 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
134|  0.50 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
135|  0.50 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
136|  2.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
137|  2.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
138|  2.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
139|  2.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
140|  5.00 |  100.0 | 1200 |  8 | 1&lt;br /&gt;
141|  5.00 |  200.0 | 1200 |  8 | 1&lt;br /&gt;
142|  5.00 |  250.0 | 1200 |  8 | 1&lt;br /&gt;
143|  5.00 |  500.0 | 1200 |  8 | 1&lt;br /&gt;
144|  0.10 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
145|  1.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
146|  2.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
147|  5.00 |    0.0 | 2400 |  8 | 1&lt;br /&gt;
148|  0.00 |   30.0 | 2400 |  8 | 1&lt;br /&gt;
149|  0.00 |   60.0 | 2400 |  8 | 1&lt;br /&gt;
150|  0.00 |  100.0 | 2400 |  8 | 1&lt;br /&gt;
151|  0.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
152|  0.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
153|  0.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
154|  0.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
155|  0.01 |  200.0 | 2400 |  4 | 1&lt;br /&gt;
156|  0.01 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
157|  0.01 |  500.0 | 2400 |  6 | 1&lt;br /&gt;
158|  0.01 | 1000.0 | 2400 |  6 | 1&lt;br /&gt;
159|  0.10 |  200.0 | 2400 |  6 | 1&lt;br /&gt;
160|  0.10 |  250.0 | 2400 |  6 | 1&lt;br /&gt;
161|  0.10 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
162|  0.10 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
163|  0.50 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
164|  0.50 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
165|  0.50 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
166|  0.50 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
167|  2.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
168|  2.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
169|  2.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
170|  2.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
171|  5.00 |  200.0 | 2400 |  8 | 1&lt;br /&gt;
172|  5.00 |  250.0 | 2400 |  8 | 1&lt;br /&gt;
173|  5.00 |  500.0 | 2400 |  8 | 1&lt;br /&gt;
174|  5.00 | 1000.0 | 2400 |  8 | 1&lt;br /&gt;
175|  0.10 |    0.0 | 4800 |  6 | 1&lt;br /&gt;
176|  1.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
177|  2.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
178|  5.00 |    0.0 | 4800 |  8 | 1&lt;br /&gt;
179|  0.00 |   30.0 | 4800 |  8 | 1&lt;br /&gt;
180|  0.00 |   60.0 | 4800 |  8 | 1&lt;br /&gt;
181|  0.00 |  100.0 | 4800 |  8 | 1&lt;br /&gt;
182|  0.00 |  200.0 | 4800 |  8 | 1&lt;br /&gt;
183|  0.00 |  250.0 | 4800 |  8 | 1&lt;br /&gt;
184|  0.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
185|  0.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
186|  0.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
187|  0.01 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
188|  0.01 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
189|  0.01 | 2000.0 | 4800 |  6 | 1&lt;br /&gt;
190|  0.10 |  500.0 | 4800 |  6 | 1&lt;br /&gt;
191|  0.10 | 1000.0 | 4800 |  6 | 1&lt;br /&gt;
192|  0.10 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
193|  0.50 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
194|  0.50 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
195|  0.50 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
196|  2.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
197|  2.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
198|  2.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
199|  5.00 |  500.0 | 4800 |  8 | 1&lt;br /&gt;
200|  5.00 | 1000.0 | 4800 |  8 | 1&lt;br /&gt;
201|  5.00 | 2000.0 | 4800 |  8 | 1&lt;br /&gt;
&lt;br /&gt;
Available notch filters&lt;br /&gt;
===================================&lt;br /&gt;
num| hpfr  | lpfreq |  sfr | or | type&lt;br /&gt;
===================================&lt;br /&gt;
000| 48.00 |   52.0 |  128 |  4 | 1&lt;br /&gt;
001| 58.00 |   62.0 |  128 |  4 | 1&lt;br /&gt;
002| 48.00 |   52.0 |  256 |  4 | 1&lt;br /&gt;
003| 58.00 |   62.0 |  256 |  4 | 1&lt;br /&gt;
004| 48.00 |   52.0 |  512 |  4 | 1&lt;br /&gt;
005| 58.00 |   62.0 |  512 |  4 | 1&lt;br /&gt;
006| 48.00 |   52.0 |  600 |  4 | 1&lt;br /&gt;
007| 58.00 |   62.0 |  600 |  4 | 1&lt;br /&gt;
008| 48.00 |   52.0 | 1200 |  4 | 1&lt;br /&gt;
009| 58.00 |   62.0 | 1200 |  4 | 1&lt;br /&gt;
010| 48.00 |   52.0 | 2400 |  4 | 1&lt;br /&gt;
011| 58.00 |   62.0 | 2400 |  4 | 1&lt;br /&gt;
012| 48.00 |   52.0 | 4800 |  4 | 1&lt;br /&gt;
013| 58.00 |   62.0 | 4800 |  4 | 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:DataIOFilter]], [[Programming Reference:GenericADC]]&lt;br /&gt;
[[Category:Filters]][[Category:Data Acquisition]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=3328</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=Main_Page&amp;diff=3328"/>
		<updated>2008-02-02T01:17:06Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:snow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==News: Version 2 Released==&lt;br /&gt;
On Jan 24, 2008, we released [http://{{SERVERNAME}}/tracproj/milestone/BCI2000%20Version%202.0 BCI2000 Version 2].&lt;br /&gt;
*[[BCI2000 Binaries|Binary distributions]] are now built from version 2.&lt;br /&gt;
*The [[User_Reference:Parameter_Changes_for_Version_2|list of parameter changes]] is intended to help migrate experiments from version 1 to version 2.&lt;br /&gt;
*In the SVN repository, directories have been moved:&lt;br /&gt;
**The previous &amp;lt;tt&amp;gt;/branches/BCI2000.v2.0/&amp;lt;/tt&amp;gt; directory is now the repository trunk.&lt;br /&gt;
**The previous trunk, i.e. version 1.4, has been moved to &amp;lt;tt&amp;gt;/tags/BCI2000.v1.4/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**If you already have a local copy of the version 2 repository, do a &#039;&#039;SVN relocate&#039;&#039; from &amp;lt;tt&amp;gt;/branches/BCI2000.v2.0/&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;/trunk/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
**For your version 1 repository, do a &#039;&#039;SVN relocate&#039;&#039; from &amp;lt;tt&amp;gt;/trunk/&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;/tags/BCI2000.v1.4/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
If you have any questions or problems, please [http://{{SERVERNAME}}/phpbb post to our BBS].&lt;br /&gt;
We hope that you will enjoy BCI2000 version 2!&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
== Getting Started with BCI2000 ==&lt;br /&gt;
&lt;br /&gt;
* [[Creating a User Account|Create a User Account]],&lt;br /&gt;
* Download [[BCI2000 Binaries]],&lt;br /&gt;
* Take the introductory [[User Tutorial:BCI2000 Tour|BCI2000 Tour]]&amp;lt;br /&amp;gt;to learn about using BCI2000,&lt;br /&gt;
* Get access to the [[Programming Reference:BCI2000 Source Code|BCI2000 Source Code]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Tutorials==&lt;br /&gt;
The user tutorials guide you to your first successful experiments:&lt;br /&gt;
*The [[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to Mu rhythm experiments,&lt;br /&gt;
*The [[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&amp;lt;br /&amp;gt;is a guide to P300 experiments.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==User Reference Manual==&lt;br /&gt;
The [[User Reference:Contents|User Reference Manual]] describes all details&amp;lt;br /&amp;gt;of system configuration and usage:&lt;br /&gt;
*Online System Reference,&lt;br /&gt;
*Filters and Parameters,&lt;br /&gt;
*BCI2000 Tools Reference.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technical Reference==&lt;br /&gt;
The [[Technical Reference:Contents|Technical Reference Manual]] contains information on&lt;br /&gt;
*BCI2000 Online System Design,&lt;br /&gt;
*Transmission Protocol Definition,&lt;br /&gt;
*External Interfaces.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming Reference==&lt;br /&gt;
The [[Programming Reference:Contents|Programming Reference]] provides developer information:&lt;br /&gt;
*Accessing and Compiling the Source Code,&lt;br /&gt;
*Filter Programming Interface,&lt;br /&gt;
*Programming Tutorials.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ECF9FF; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributions==&lt;br /&gt;
[[Contributions:Contents|Contributions]] from the BCI2000 Community:&amp;lt;br /&amp;gt;&lt;br /&gt;
*Data Acquisition, Signal Processing, Application Modules;&lt;br /&gt;
*Data Analysis Tools.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:lightyellow; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Information==&lt;br /&gt;
* [http://{{SERVERNAME}}/phpbb BCI2000 Community Forum],&lt;br /&gt;
* [http://{{SERVERNAME}}/tracproj/newticket Submit a Bug Report]  (make sure you log in),&lt;br /&gt;
* [[BCI2000 Glossary]]&amp;lt;br /&amp;gt;Explanation of terms specific to BCI2000.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;10&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:white; align:right;vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
==BCI2000 Publications==&lt;br /&gt;
* [http://{{SERVERNAME}}/downloads/doc/paper.pdf G. Schalk, D.J. McFarland, T. Hinterberger, N. Birbaumer, and J.R. Wolpaw: &#039;&#039;BCI2000: A General-Purpose Brain-Computer Interface (BCI) System&#039;&#039;, IEEE Trans Biomed Eng, 51(6), June 2004.]&lt;br /&gt;
* J. Mellinger, G. Schalk: &#039;&#039;BCI2000: A General-Purpose Software Platform for BCI Research,&#039;&#039; In: G. Dornhege, J. del R. Millán, T. Hinterberger, D.J. McFarland, K.-R. Müller (eds.), &#039;&#039;Toward Brain-Computer Interfacing,&#039;&#039; MIT Press, 2007.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=3285</id>
		<title>User Tutorial:BCI2000 Tour</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Tutorial:BCI2000_Tour&amp;diff=3285"/>
		<updated>2008-01-30T01:31:37Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to get you started, and make you comfortable using BCI2000.&lt;br /&gt;
It shows you how to use BCI2000 in a simulation mode, without the need of brain signal data acquisition hardware.  Additionally, you will be introduced to some of the most important modules and tools available for use.&lt;br /&gt;
&lt;br /&gt;
==Starting up BCI2000==&lt;br /&gt;
BCI2000 consists of [[Technical Reference:System Design|four executables]] (modules) which need to be started up in a certain order.&lt;br /&gt;
This can be done using the script (batch) files in the &amp;lt;tt&amp;gt;batch&amp;lt;/tt&amp;gt; directory. Alternatively, there is a [[User Reference:BCI2000Launcher|BCI2000Launcher]] program that allows you to manage BCI2000 module startup from a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
We will begin the BCI2000 tour by double-clicking the file &amp;lt;tt&amp;gt;batch/CursorTask_SignalGenerator.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
This will launch the modules required for a simulation of a [[User Tutorial:Introduction to the Mu Rhythm|Mu rhythm BCI session]].&lt;br /&gt;
&lt;br /&gt;
==BCI2000 Help==&lt;br /&gt;
When the [[User Reference:Operator Module|main operator window]] appears, choose &#039;&#039;BCI2000 Help&#039;&#039; from the &#039;&#039;Help&#039;&#039; menu. The operator module&#039;s help page will be opened in a web browser window. On the left side of the help page, a navigation menu provides access to the entire BCI2000 documentation.&lt;br /&gt;
&lt;br /&gt;
The BCI2000 help is a local copy of the BCI2000 online documentation wiki, providing a snapshot that corresponds to your version of the BCI2000 executables.&lt;br /&gt;
&lt;br /&gt;
==Loading a Parameter File==&lt;br /&gt;
BCI2000 configuration is stored in [[Technical Reference:Parameter File|parameter files]].&lt;br /&gt;
Before performing an experiment, you will typically load a parameter file that contains subject-specific as well as general configuration information.&lt;br /&gt;
&lt;br /&gt;
In the main operator window, click the &#039;&#039;Config&#039;&#039; button. A configuration window appears. There, click the &#039;&#039;Load Parameters&#039;&#039; button, which will open up a file chooser dialog. Open &amp;lt;tt&amp;gt;parms/mu_tutorial/MuFeedback.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Entering a Subject ID==&lt;br /&gt;
BCI2000 stores data files in directories with names that are constructed from subject ID and session number.&lt;br /&gt;
&lt;br /&gt;
In the configuration dialog, go to the &#039;&#039;Storage&#039;&#039; tab, and identify the &#039;&#039;DataDirectory&#039;&#039; parameter. This parameter determines the path to the top level data directory, i.e. the directory below which session directories will be created. By default, this parameter is set to &amp;lt;tt&amp;gt;../data&amp;lt;/tt&amp;gt;, a relative path that points to your BCI2000 installation&#039;s &amp;lt;tt&amp;gt;data&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Go to the &#039;&#039;SubjectName&#039;&#039; parameter, and enter an ID such as TEST, or your own initials.&lt;br /&gt;
&lt;br /&gt;
==Applying Configuration Parameters==&lt;br /&gt;
Close the configuration dialog by using its close button (the button labeled &amp;quot;X&amp;quot; located on the top right corner of the window). This will accept your parameter changes (there is no &amp;quot;Cancel&amp;quot; option).&lt;br /&gt;
In the main operator window, click &#039;&#039;Set Config&#039;&#039;. This will prompt the operator module to send configuration parameters to the remaining BCI2000 modules, which will perform some sanity checks on them, configure themselves accordingly, and report back to the operator module.&lt;br /&gt;
&lt;br /&gt;
Once you clicked the &#039;&#039;Set Config&#039;&#039; button, a signal source window will appear, displaying a simulated EEG. In a real BCI session, you will use this window to assess signal quality. When moving the mouse, you should notice a change in the simulated EEG signal. This is the signal that will later control the feedback cursor.&lt;br /&gt;
&lt;br /&gt;
Right-clicking the EEG window will bring up a context menu with display options such as increasing/decreasing the number of channels displayed, choosing display colors, applying filters to the signal. (Details are described on the [[User Reference:Operator Module|Operator Module&#039;s reference page]].)&lt;br /&gt;
&lt;br /&gt;
==Performing a Session==&lt;br /&gt;
Once &#039;&#039;Set Config&#039;&#039; has been clicked, the &#039;&#039;Start&#039;&#039; button will be active. Click it to start a simulated feedback session. During the session, you will see a cursor moving from the left to the right by itself, and one of two targets highlighted on the right. Your task will be to move the cursor up or down, such that it hits the highlighted target. In simulation mode, you can move the feedback cursor by moving the mouse cursor up and down.&lt;br /&gt;
&lt;br /&gt;
The period during which the cursor moves from left to right is called a &#039;&#039;Trial&#039;&#039;. During operation, a number of trials will follow each other, making up a &#039;&#039;Run&#039;&#039;. After a few minutes, BCI2000 will stop operation by itself, and the &#039;&#039;Start&#039;&#039; button will change to &#039;&#039;Resume&#039;&#039;. This means that a run has been finished, and the corresponding data file has been closed. Clicking &#039;&#039;Resume&#039;&#039; each time, you may add as many runs to the current &#039;&#039;Session&#039;&#039; as you like. All runs belonging to a session will be stored in that session&#039;s data directory.&lt;br /&gt;
&lt;br /&gt;
BCI2000 contains a component that adapts itself to the brain signal&#039;s mean value and its amount of variation. This component needs to observe the signal for a while before it can operate properly. This means that initially you will not feel a correspondence between your actions and the cursor; just stick with it for a few trials, and you will note how control gets more accurate over time. Also, it is important that you place the mouse cursor in a center position at the beginning of each trial, to give you enough space to move into the required direction. Likewise, when a real subject controls the cursor using brain signals, cursor control will only be possible after blindly following instructions for some trials.&lt;br /&gt;
&lt;br /&gt;
When you have acquired one or more runs, you may quit BCI2000.&lt;br /&gt;
&lt;br /&gt;
==Opening Data Files in [[User Reference:BCI2000Viewer|BCI2000Viewer]]==&lt;br /&gt;
Use the Windows Explorer to display the contents of &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001&amp;lt;/tt&amp;gt;, which is the session directory corresponding to your recorded session (in place of &amp;lt;tt&amp;gt;&amp;lt;SubjectName&amp;gt;&amp;lt;/tt&amp;gt;, enter the ID that you used for the &#039;&#039;SubjectName&#039;&#039; parameter).&lt;br /&gt;
In the session directory, single runs correspond to &amp;lt;tt&amp;gt;.dat&amp;lt;/tt&amp;gt; files carrying the session&#039;s name, appended with a run number.&lt;br /&gt;
&lt;br /&gt;
To view the content of a data file, open it in the [[User Reference:BCI2000Viewer|BCI2000Viewer]] program provided in &amp;lt;tt&amp;gt;tools/BCI2000Viewer&amp;lt;/tt&amp;gt;. It is recommendable that you double-click the .dat file in question, and then use &amp;quot;Choose application&amp;quot; to permanently associate BCI2000Viewer with the .dat extension.&lt;br /&gt;
&lt;br /&gt;
Alternatively, drag a .dat file onto the BCI2000Viewer icon, a link thereto, or BCI2000Viewer&#039;s application window to display the file&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
==Viewing State Information==&lt;br /&gt;
Once you opened a file in BCI2000Viewer, check the &amp;quot;TargetCode&amp;quot;, &amp;quot;ResultCode&amp;quot;, and &amp;quot;Feedback&amp;quot; checkboxes displayed in the top right corner of its application window.&lt;br /&gt;
&lt;br /&gt;
Above the signal, values of these so-called [[BCI2000 Glossary#State|state variables]] will be displayed. Whenever &#039;&#039;TargetCode&#039;&#039; changes from 0, a target has been displayed during the recording. Whenever &#039;&#039;ResultCode&#039;&#039; changes from 0, a target has been hit by the cursor. A &#039;&#039;Feedback&#039;&#039; value of 1 indicates that the feedback cursor was visible. In data analysis, this state information allows to determine trial structure and data labels.&lt;br /&gt;
&lt;br /&gt;
==Viewing Parameters using [[User Reference:BCI2000FileInfo|BCI2000FileInfo]]==&lt;br /&gt;
Each data file contains the full set of parameters and their values at the &#039;&#039;beginning&#039;&#039; of the recording. You may view those parameters, and save them to a parameter file, in original or modified form, using the [[User Reference:BCI2000FileInfo|BCI2000FileInfo]] program located at &amp;lt;tt&amp;gt;tools/BCI2000FileInfo&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To open a .dat file in BCI2000FileInfo, drag-and-drop it onto the program symbol, or into the program&#039;s main window. Then, click &amp;quot;Show Parameters&amp;quot;; this will open a parameter configuration dialog as you know from the operator module.&lt;br /&gt;
&lt;br /&gt;
==Stimulus Presentation==&lt;br /&gt;
In addition to the cursor feedback paradigm, BCI2000 comes with a multi-purpose [[User Reference:StimulusPresentationTask|Stimulus Presentation]] module.&lt;br /&gt;
This module has many of the features of dedicated programs like [http://www.neurobs.com/presentation Presentation] or [http://www.pstnet.com/products/e-prime/ e-Prime]. In the context of BCI research, the BCI2000 StimulusPresentation module is often used for  [[User Tutorial:Obtaining Mu Rhythm Parameters in an Initial Session|an initial Mu rhythm session]], and its [[User Reference:Timing|timing precision]] allows [[User Tutorial:Introduction to the P300 Response|ERP experiments]] as well. In addition, it can be used in conjunction with the P3SignalProcessing module (which can average and classify ERPs) to provide real-time feedback to evoked potentials.&lt;br /&gt;
&lt;br /&gt;
To try the stimulus presentation module, start BCI2000 using the &amp;lt;tt&amp;gt;batch/StimulusPresentation_SignalGenerator.bat&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Then, click &#039;&#039;Config&#039;&#039;, and load the configuration file at &amp;lt;tt&amp;gt;parms/examples/StimulusPresentation_SignalGenerator.prm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Go to the &#039;&#039;Storage&#039;&#039; tab, and enter a subject ID into the &#039;&#039;SubjectName&#039;&#039; parameter.&lt;br /&gt;
Run the experiment clicking &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Start&#039;&#039;.  (Note: The goal here is simply to introduce you to the stimulus presentation module.  You will not be able to affect the visual stimulus presentation.) &lt;br /&gt;
&lt;br /&gt;
Locate the resulting data file at &amp;lt;tt&amp;gt;data/&amp;lt;SubjectName&amp;gt;001/&amp;lt;SubjectName&amp;gt;S001R01.dat&amp;lt;/tt&amp;gt;, and open it using BCI2000FileViewer, as you did earlier in this tour. In BCI2000FileViewer&#039;s main window, check the &#039;&#039;StimulusCode&#039;&#039; checkbox to display the &#039;&#039;StimulusCode&#039;&#039; state variable. During presentation of a stimulus, the &#039;&#039;StimulusCode&#039;&#039; state is set to a ordinal number corresponding to the stimulus; in data analysis, this information may then be used to segment data into epochs, and to group epochs according to stimuli.&lt;br /&gt;
&lt;br /&gt;
==P300 Speller==&lt;br /&gt;
As part of its core distribution, BCI2000 comes with a [[User Reference:P3SpellerTask|P300 Speller]] module. The P300 Speller module implements a BCI that uses evoked responses to select items from a rectangular matrix, as it was originally described by Farwell and Donchin (1988).&lt;br /&gt;
&lt;br /&gt;
To calibrate the P300 Speller for an individual subject, it is operated in a &amp;quot;copy spelling&amp;quot; mode, prompting the user to concentrate on pre-defined letters in sequence.&lt;br /&gt;
Start &amp;lt;tt&amp;gt;batch/P3Speller_SignalGenerator.bat&amp;lt;/tt&amp;gt;, click &#039;&#039;Config&#039;&#039;, and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_CopySpelling.prm&amp;lt;/tt&amp;gt;. Close the configuration window, then click &#039;&#039;Set Config&#039;&#039; and &#039;&#039;Run&#039;&#039; to view copy spelling in action.&lt;br /&gt;
&lt;br /&gt;
In simulation mode, the simulated EEG will simulate evoked responses on the respective items, allowing to test signal classification and spelling functionality. Therefore, spelled letters will correspond to predefined letters when using the simulated EEG source module.&lt;br /&gt;
&lt;br /&gt;
Once calibrated, the purpose of the P300 Speller is to choose arbitrary letters from the matrix, i.e. &amp;quot;free spelling&amp;quot; without a pre-defined letter sequence.&lt;br /&gt;
Also, the speller is able to switch between multiple matrices.&lt;br /&gt;
&lt;br /&gt;
To do a &amp;quot;free spelling&amp;quot; demo with multiple menus, click &#039;&#039;Config&#039;&#039;, and load &amp;lt;tt&amp;gt;parms/examples/P3Speller_Menus.prm&amp;lt;/tt&amp;gt;. Then close the configuration window, click &#039;&#039;Set Config&#039;&#039;, and &#039;&#039;Run&#039;&#039;.&lt;br /&gt;
In simulation mode, selecting a matrix element is achieved by clicking it with the mouse. Actual P300 classification is done averaging over a fixed number of epochs, so clicking an item will not immediately select it. Rather, mouse selection will override classification after the number of epochs is reached, which takes a few seconds.&lt;br /&gt;
&lt;br /&gt;
==Where to go from here==&lt;br /&gt;
In this tour, you have acquired some experience how to operate BCI2000 and how to view information contained in data files. Additionally, you have seen the software elements available to build sensorimotor rhythm and evoked response BCIs.&lt;br /&gt;
&lt;br /&gt;
When you are an &#039;&#039;&#039;experimenter,&#039;&#039;&#039; you might want to do one of the tutorials that introduce you to actual EEG experiments:&lt;br /&gt;
*[[User Tutorial:Mu Rhythm BCI Tutorial|Mu Rhythm BCI Tutorial]]&lt;br /&gt;
*[[User Tutorial:P300 BCI Tutorial|P300 BCI Tutorial]]&lt;br /&gt;
&lt;br /&gt;
When you would like &#039;&#039;&#039;to adapt BCI2000&#039;&#039;&#039; to your own amplifier, you might be interested in &lt;br /&gt;
a tutorial on [[Programming Tutorial:Implementing a Data Acquisition Module|Implementing a Data Acquisition Module]].&lt;br /&gt;
&lt;br /&gt;
If you want to apply your own signal processing to brain signals, see&lt;br /&gt;
*the tutorial on [[Programming Tutorial:Implementing a Signal Processing Filter|Implementing a Signal Processing Filter]],&lt;br /&gt;
*and the [[Programming Reference:MatlabFilter|MatlabFilter Documentation]] about piping the BCI2000 data flow through a set of Matlab scripts.&lt;br /&gt;
&lt;br /&gt;
For other BCI2000 resources that support you in &#039;&#039;&#039;rapid development&#039;&#039;&#039; of data acquisition, signal processing, or user application modules, see [[Programming Reference:Rapid Development|Rapid Development]].&lt;br /&gt;
&lt;br /&gt;
All documentation is accessible through a hierarchy of content pages, starting at the Main Page.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Contents]], [[Technical Reference:Contents]], [[Programming Reference:Contents]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Normalizer&amp;diff=3252</id>
		<title>User Reference:Normalizer</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Normalizer&amp;diff=3252"/>
		<updated>2008-01-20T16:43:58Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Trial-based 1D Feedback Task with 3 Targets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
===Normalizing Transform===&lt;br /&gt;
The Normalizer applies a linear transformation to its input signal.&lt;br /&gt;
For each channel (index denoted with &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;), an offset value is subtracted, and the result multiplied with a gain value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\textrm{output}_i=(\textrm{input}_i-\textrm{NormalizerOffset}_i)\times \textrm{NormalizerGain}_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Adaptation===&lt;br /&gt;
From the past statistics of its input, the Normalizer estimates offset and gain values adaptively to make its output signal&lt;br /&gt;
*zero mean, and&lt;br /&gt;
*unit variance.&lt;br /&gt;
The Normalizer uses &#039;&#039;data buffers&#039;&#039; to accumulate its past input according to user-defined rules.&lt;br /&gt;
These rules are called &#039;&#039;buffer conditions&#039;&#039; because they are given in terms of boolean expressions.&lt;br /&gt;
Each data buffer is associated with such a boolean expression. Whenever an expression evaluates to &#039;&#039;true&#039;&#039;, the current input will be appended to the associated buffer.&lt;br /&gt;
Whenever it comes to updating offset and gain values, the Normalizer will use the content of its buffers to estimate data mean and variance. The offset will then be set to the data mean, and the gain to the inverse square root of the data variance, i.e., the inverse of the data standard deviation.&lt;br /&gt;
&lt;br /&gt;
===Adaptation Rationale===&lt;br /&gt;
It may appear crude to use the total data variance for the adaptation -- why not use linear regression on data labels (target codes) to separate into user controlled (task determined) and noise variance? User controlled variance would then correspond to target separation on the feedback screen, which is what we want to normalize in the first place.&lt;br /&gt;
&lt;br /&gt;
However, a closer look reveals that the &#039;&#039;relative size&#039;&#039; of user controlled variance, and noise variance is crucial. When that &amp;quot;signal&amp;quot; variance is small compared to noise variance, we would be ill advised to use it in normalization -- this would only lead to enlarged noise, and an erratically moving cursor on the feedback screen.&lt;br /&gt;
In this case, we rather want to normalize by noise variance, to keep the cursor well-behaved. At the same time, total variance approaches noise variance in this limit because signal variance is small.&lt;br /&gt;
&lt;br /&gt;
On the other end of the spectrum, we have a signal variance that is large compared to noise variance. Here, we clearly want normalization by signal variance. However, the total variance will be dominated by signal variance. Thus, in the limit of high signal-to-noise ratio, total variance again is the entity by which we want to normalize.&lt;br /&gt;
&lt;br /&gt;
Thus, no matter whether signal-to-noise ratio is high or low, total data variance is a good choice for normalization.&lt;br /&gt;
&lt;br /&gt;
===Typical Use===&lt;br /&gt;
Typically, the Normalizer&#039;s input is the output of a classifier, which it transforms into a zero mean/unit variance control signal which is then transmitted to an application module.&lt;br /&gt;
Using the zero mean/unit variance property, an application module can then relate entities such as window size, screen update rate, cursor speed, and trial duration.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
For each channel of the Normalizer&#039;s input signal, adaptation is treated independently.&lt;br /&gt;
Offsets, Gains, and Adaptation kind are represented as list parameters, with each entry in the list corresponding to a signal channel.&lt;br /&gt;
Buffer configuration is done in matrix form, with columns corresponding to signal channels, and rows corresponding to multiple buffers.&lt;br /&gt;
&lt;br /&gt;
===NormalizerOffsets, NormalizerGains=== &lt;br /&gt;
Lists of offset and gain values, with entries corresponding to signal channels. These values will be updated depending on the channel&#039;s adaptation configuration in the Adaptation parameter.&lt;br /&gt;
===Adaptation===&lt;br /&gt;
A list of values that determines adaptation strategy individually for each channel. Possible values are&lt;br /&gt;
*0 for no adaptation,&lt;br /&gt;
*1 for adjusting offsets to zero mean,&lt;br /&gt;
*2 for additionally adjusting gains to unit variance.&lt;br /&gt;
===BufferConditions===&lt;br /&gt;
A matrix consisting of [[User Reference:Expression Syntax|boolean expressions]].&lt;br /&gt;
Expressions may involve [[BCI2000 Glossary#State|state variables]] and the components of the Normalizer&#039;s input signal.&lt;br /&gt;
*Each matrix entry represents a data buffer which is a ring buffer of length &#039;&#039;BufferLength.&#039;&#039; Whenever a buffer&#039;s expression evaluates to &#039;&#039;true,&#039;&#039; the current value of the input signal will be put into the buffer (overwriting its oldest data once the buffer is filled).&lt;br /&gt;
*Columns correspond to control signal channels. Buffers in a certain column will buffer data from the corresponding signal channel, and will be used in adaptation of that channel only.&lt;br /&gt;
*Within columns, the order of buffers does not affect computation.&lt;br /&gt;
*Empty expressions do not have any effect on the computation. Thus, it is possible to have a different number of buffers for different channels.&lt;br /&gt;
*A buffer to store data for the first target, and during feedback only, should have an expression such as &amp;lt;code&amp;gt;(Feedback)&amp;amp;&amp;amp;(TargetCode==1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===BufferLength===&lt;br /&gt;
The maximum length of each data buffer.&lt;br /&gt;
*The length is specified in data blocks if given as a raw number, and in seconds if given as a number followed by the character &amp;quot;s&amp;quot;.&lt;br /&gt;
*All data buffers have the same capacity.&lt;br /&gt;
*Once a data buffer is filled, its older entries will be replaced with new data (ring buffer).&lt;br /&gt;
*In previous versions of BCI2000, buffer lengths were specified in terms of &amp;quot;past trials&amp;quot;. However, this would enforce the notion of a &amp;quot;trial&amp;quot;, and not generalize to continuous adaptation.&lt;br /&gt;
===UpdateTrigger===&lt;br /&gt;
A [[User Reference:Expression Syntax|boolean expression]] that triggers adaptation when changing to &#039;&#039;true&#039;&#039; from &#039;&#039;false&#039;&#039;.&lt;br /&gt;
Generally, continuous adaptation within trials is not desired. Rather, one wants adaptation to occur at the end of a trial. This is achieved with &#039;&#039;UpdateTrigger&#039;&#039; expressions such as &amp;lt;code&amp;gt;Feedback==0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;TargetCode!=0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
Buffer condition expressions, and the UpdateTrigger expression may involve any [[BCI2000 Glossary#State|state]] present in the system. Expressions are checked for syntactical correctness and whether referred-to states are present during the [[Technical Reference:States of Operation|Preflight Phase]].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
===Trial-based 1D Feedback Task with 3 Targets===&lt;br /&gt;
*Only data from the feedback phase should enter into the adaptation.&lt;br /&gt;
*To make sure that targets contribute equally to the adaptation, we use a single buffer for each target. We use a 3-rows-by-1-column BufferConditions (see below).  Depending on which control signal should be adapted on, these conditions need to be entered in the first, second, or third column of the matrix.&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==1)&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==2)&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==3)&lt;br /&gt;
*We want to use data from three previous trials of each target. &lt;br /&gt;
*Feedback duration is 2 seconds. We set the buffer length to the equivalent of three feedback durations:&lt;br /&gt;
  BufferLength= 6s&lt;br /&gt;
*Adaptation should happen at the end of each trial, when feedback is finished. &amp;lt;p /&amp;gt;We set UpdateTrigger to an expression that changes to &#039;&#039;true&#039;&#039; when feedback ends:&lt;br /&gt;
  UpdateTrigger= (Feedback==0)&lt;br /&gt;
&lt;br /&gt;
===Trial-based 2D Feedback Task with 4 Targets===&lt;br /&gt;
*Leaving everything else as in the previous example, we now have two dimensions corresponding to left-right (channel 1) and up-down (channel 2).&lt;br /&gt;
:Target positions are as indicated below:&lt;br /&gt;
  ---------------------------&lt;br /&gt;
  |          ##1##          |&lt;br /&gt;
  |#                       #|&lt;br /&gt;
  |2                       3|&lt;br /&gt;
  |#                       #|&lt;br /&gt;
  |          ##4##          |&lt;br /&gt;
  ---------------------------&lt;br /&gt;
:We use data from targets 1 and 4 to adjust channel 2, and targets 2 and 3 to adjust channel 1. Accordingly, the BufferConditions matrix is&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==2) (Feedback)&amp;amp;&amp;amp;(TargetCode==1)&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==3) (Feedback)&amp;amp;&amp;amp;(TargetCode==4)&lt;br /&gt;
&lt;br /&gt;
===Continuous 1D Control without pre-defined Targets===&lt;br /&gt;
*For this example, we know that, over a period of 10 minutes, all output values will occur with approximately equal frequency, or at least have a symmetric distribution around zero. This matches the combination of BCI2000 and Dasher or other &amp;quot;devices&amp;quot; expecting statistically balanced input.&lt;br /&gt;
:The BufferConditions matrix will have a single entry containing a constant expression:&lt;br /&gt;
 1&lt;br /&gt;
:This way, data will always be buffered.&lt;br /&gt;
*There are no trials. We want a continuous adaptation to the values of the last 10 minutes.&lt;br /&gt;
:We set the BufferLength parameter to &amp;lt;code&amp;gt;600s&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;(10*60)s&amp;lt;/code&amp;gt;.&lt;br /&gt;
:For continuous adaptation, we enter an &#039;&#039;empty string&#039;&#039; (not a constant 0 expression) for UpdateTrigger.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Expression Syntax]], [[BCI2000 Glossary#Control Signal]], [[User Reference:LinearClassifier]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]][[Category:Signal Processing]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
	<entry>
		<id>https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Normalizer&amp;diff=3251</id>
		<title>User Reference:Normalizer</title>
		<link rel="alternate" type="text/html" href="https://www.bci2000.org/mediawiki/index.php?title=User_Reference:Normalizer&amp;diff=3251"/>
		<updated>2008-01-20T16:43:23Z</updated>

		<summary type="html">&lt;p&gt;Gschalk: /* Trial-based 1D Feedback Task with 3 Targets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Function==&lt;br /&gt;
===Normalizing Transform===&lt;br /&gt;
The Normalizer applies a linear transformation to its input signal.&lt;br /&gt;
For each channel (index denoted with &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;), an offset value is subtracted, and the result multiplied with a gain value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\textrm{output}_i=(\textrm{input}_i-\textrm{NormalizerOffset}_i)\times \textrm{NormalizerGain}_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Adaptation===&lt;br /&gt;
From the past statistics of its input, the Normalizer estimates offset and gain values adaptively to make its output signal&lt;br /&gt;
*zero mean, and&lt;br /&gt;
*unit variance.&lt;br /&gt;
The Normalizer uses &#039;&#039;data buffers&#039;&#039; to accumulate its past input according to user-defined rules.&lt;br /&gt;
These rules are called &#039;&#039;buffer conditions&#039;&#039; because they are given in terms of boolean expressions.&lt;br /&gt;
Each data buffer is associated with such a boolean expression. Whenever an expression evaluates to &#039;&#039;true&#039;&#039;, the current input will be appended to the associated buffer.&lt;br /&gt;
Whenever it comes to updating offset and gain values, the Normalizer will use the content of its buffers to estimate data mean and variance. The offset will then be set to the data mean, and the gain to the inverse square root of the data variance, i.e., the inverse of the data standard deviation.&lt;br /&gt;
&lt;br /&gt;
===Adaptation Rationale===&lt;br /&gt;
It may appear crude to use the total data variance for the adaptation -- why not use linear regression on data labels (target codes) to separate into user controlled (task determined) and noise variance? User controlled variance would then correspond to target separation on the feedback screen, which is what we want to normalize in the first place.&lt;br /&gt;
&lt;br /&gt;
However, a closer look reveals that the &#039;&#039;relative size&#039;&#039; of user controlled variance, and noise variance is crucial. When that &amp;quot;signal&amp;quot; variance is small compared to noise variance, we would be ill advised to use it in normalization -- this would only lead to enlarged noise, and an erratically moving cursor on the feedback screen.&lt;br /&gt;
In this case, we rather want to normalize by noise variance, to keep the cursor well-behaved. At the same time, total variance approaches noise variance in this limit because signal variance is small.&lt;br /&gt;
&lt;br /&gt;
On the other end of the spectrum, we have a signal variance that is large compared to noise variance. Here, we clearly want normalization by signal variance. However, the total variance will be dominated by signal variance. Thus, in the limit of high signal-to-noise ratio, total variance again is the entity by which we want to normalize.&lt;br /&gt;
&lt;br /&gt;
Thus, no matter whether signal-to-noise ratio is high or low, total data variance is a good choice for normalization.&lt;br /&gt;
&lt;br /&gt;
===Typical Use===&lt;br /&gt;
Typically, the Normalizer&#039;s input is the output of a classifier, which it transforms into a zero mean/unit variance control signal which is then transmitted to an application module.&lt;br /&gt;
Using the zero mean/unit variance property, an application module can then relate entities such as window size, screen update rate, cursor speed, and trial duration.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
For each channel of the Normalizer&#039;s input signal, adaptation is treated independently.&lt;br /&gt;
Offsets, Gains, and Adaptation kind are represented as list parameters, with each entry in the list corresponding to a signal channel.&lt;br /&gt;
Buffer configuration is done in matrix form, with columns corresponding to signal channels, and rows corresponding to multiple buffers.&lt;br /&gt;
&lt;br /&gt;
===NormalizerOffsets, NormalizerGains=== &lt;br /&gt;
Lists of offset and gain values, with entries corresponding to signal channels. These values will be updated depending on the channel&#039;s adaptation configuration in the Adaptation parameter.&lt;br /&gt;
===Adaptation===&lt;br /&gt;
A list of values that determines adaptation strategy individually for each channel. Possible values are&lt;br /&gt;
*0 for no adaptation,&lt;br /&gt;
*1 for adjusting offsets to zero mean,&lt;br /&gt;
*2 for additionally adjusting gains to unit variance.&lt;br /&gt;
===BufferConditions===&lt;br /&gt;
A matrix consisting of [[User Reference:Expression Syntax|boolean expressions]].&lt;br /&gt;
Expressions may involve [[BCI2000 Glossary#State|state variables]] and the components of the Normalizer&#039;s input signal.&lt;br /&gt;
*Each matrix entry represents a data buffer which is a ring buffer of length &#039;&#039;BufferLength.&#039;&#039; Whenever a buffer&#039;s expression evaluates to &#039;&#039;true,&#039;&#039; the current value of the input signal will be put into the buffer (overwriting its oldest data once the buffer is filled).&lt;br /&gt;
*Columns correspond to control signal channels. Buffers in a certain column will buffer data from the corresponding signal channel, and will be used in adaptation of that channel only.&lt;br /&gt;
*Within columns, the order of buffers does not affect computation.&lt;br /&gt;
*Empty expressions do not have any effect on the computation. Thus, it is possible to have a different number of buffers for different channels.&lt;br /&gt;
*A buffer to store data for the first target, and during feedback only, should have an expression such as &amp;lt;code&amp;gt;(Feedback)&amp;amp;&amp;amp;(TargetCode==1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===BufferLength===&lt;br /&gt;
The maximum length of each data buffer.&lt;br /&gt;
*The length is specified in data blocks if given as a raw number, and in seconds if given as a number followed by the character &amp;quot;s&amp;quot;.&lt;br /&gt;
*All data buffers have the same capacity.&lt;br /&gt;
*Once a data buffer is filled, its older entries will be replaced with new data (ring buffer).&lt;br /&gt;
*In previous versions of BCI2000, buffer lengths were specified in terms of &amp;quot;past trials&amp;quot;. However, this would enforce the notion of a &amp;quot;trial&amp;quot;, and not generalize to continuous adaptation.&lt;br /&gt;
===UpdateTrigger===&lt;br /&gt;
A [[User Reference:Expression Syntax|boolean expression]] that triggers adaptation when changing to &#039;&#039;true&#039;&#039; from &#039;&#039;false&#039;&#039;.&lt;br /&gt;
Generally, continuous adaptation within trials is not desired. Rather, one wants adaptation to occur at the end of a trial. This is achieved with &#039;&#039;UpdateTrigger&#039;&#039; expressions such as &amp;lt;code&amp;gt;Feedback==0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;TargetCode!=0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==States==&lt;br /&gt;
Buffer condition expressions, and the UpdateTrigger expression may involve any [[BCI2000 Glossary#State|state]] present in the system. Expressions are checked for syntactical correctness and whether referred-to states are present during the [[Technical Reference:States of Operation|Preflight Phase]].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
===Trial-based 1D Feedback Task with 3 Targets===&lt;br /&gt;
*Only data from the feedback phase should enter into the adaptation.&lt;br /&gt;
*To make sure that targets contribute equally to the adaptation, we use a single buffer for each target. We use a 3-rows-by-1-column BufferConditions.&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==1)&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==2)&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==3)&lt;br /&gt;
 Depending on which control signal should be adapted on, these conditions need to be entered in the first, second, or third column of the matrix.&lt;br /&gt;
*We want to use data from three previous trials of each target. &lt;br /&gt;
*Feedback duration is 2 seconds. We set the buffer length to the equivalent of three feedback durations:&lt;br /&gt;
  BufferLength= 6s&lt;br /&gt;
*Adaptation should happen at the end of each trial, when feedback is finished. &amp;lt;p /&amp;gt;We set UpdateTrigger to an expression that changes to &#039;&#039;true&#039;&#039; when feedback ends:&lt;br /&gt;
  UpdateTrigger= (Feedback==0)&lt;br /&gt;
&lt;br /&gt;
===Trial-based 2D Feedback Task with 4 Targets===&lt;br /&gt;
*Leaving everything else as in the previous example, we now have two dimensions corresponding to left-right (channel 1) and up-down (channel 2).&lt;br /&gt;
:Target positions are as indicated below:&lt;br /&gt;
  ---------------------------&lt;br /&gt;
  |          ##1##          |&lt;br /&gt;
  |#                       #|&lt;br /&gt;
  |2                       3|&lt;br /&gt;
  |#                       #|&lt;br /&gt;
  |          ##4##          |&lt;br /&gt;
  ---------------------------&lt;br /&gt;
:We use data from targets 1 and 4 to adjust channel 2, and targets 2 and 3 to adjust channel 1. Accordingly, the BufferConditions matrix is&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==2) (Feedback)&amp;amp;&amp;amp;(TargetCode==1)&lt;br /&gt;
 (Feedback)&amp;amp;&amp;amp;(TargetCode==3) (Feedback)&amp;amp;&amp;amp;(TargetCode==4)&lt;br /&gt;
&lt;br /&gt;
===Continuous 1D Control without pre-defined Targets===&lt;br /&gt;
*For this example, we know that, over a period of 10 minutes, all output values will occur with approximately equal frequency, or at least have a symmetric distribution around zero. This matches the combination of BCI2000 and Dasher or other &amp;quot;devices&amp;quot; expecting statistically balanced input.&lt;br /&gt;
:The BufferConditions matrix will have a single entry containing a constant expression:&lt;br /&gt;
 1&lt;br /&gt;
:This way, data will always be buffered.&lt;br /&gt;
*There are no trials. We want a continuous adaptation to the values of the last 10 minutes.&lt;br /&gt;
:We set the BufferLength parameter to &amp;lt;code&amp;gt;600s&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;(10*60)s&amp;lt;/code&amp;gt;.&lt;br /&gt;
:For continuous adaptation, we enter an &#039;&#039;empty string&#039;&#039; (not a constant 0 expression) for UpdateTrigger.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[User Reference:Expression Syntax]], [[BCI2000 Glossary#Control Signal]], [[User Reference:LinearClassifier]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]][[Category:Signal Processing]]&lt;/div&gt;</summary>
		<author><name>Gschalk</name></author>
	</entry>
</feed>