diff --git a/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierProcessor.dox-part b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierProcessor.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..05e4fb2d11f71f7b67c27e93fd3c88ebe2bf94d9
--- /dev/null
+++ b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierProcessor.dox-part
@@ -0,0 +1,101 @@
+/**
+ * \page BoxAlgorithm_ClassifierProcessor Classifier processor
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Description|
+The <em>Classifier Processor</em> box is a generic box for classification purpose. It works
+in cunjunction with the \ref Doc_BoxAlgorithm_ClassifierTrainer box.
+This box' role is to expose a generic interface to the rest of the BCI pipelines. The tasks
+specific to a given classifier are forwarded to one of the registered \c OVTK_TypeId_ClassifierAlgorithm
+algorithms. The behavior is simple, at initialization phase, the classification algorithm is initialized
+and its configuration is loaded from the configuration file. Then each time this box receives a new
+feature vector, it is forwarded to the classification algorithm that classifies it. The box gets the algorithm
+status and the actual class value and translates this information to its output. The class is sent in the form of
+a stimulation and the algorithm status is sent in the form a streamed matrix. The stimulation can be generically
+interpreted by the rest of the pipeline but it is important to understand that each classification algorithm is
+free to report whatever it wants in its "status matrix". Consequently, the use of this output stream will be
+depedendent on the choosen classification algorithm. For example, the LDA classifier sends the hyperplane distance
+value as its status.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Inputs|
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Input1|
+This input should be connected to the feature vectors to classify. Each time a new feature vector arrives,
+a classification process will be triggered. Consequently, a classification stimulation will be sent on the
+first output of this box.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Input1|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Outputs|
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Output1|
+This output will contain the classification stimulations. Each time a new feature vector arrives to this box,
+a new classification process is triggered, resuling int the generation of the corresponding class stimulation.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Output1|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Output2|
+This output reflects the classification algorithm status in the form of a matrix of value. The content of this
+matrix is dependent of the choosen classification algorithm. For example, the LDA classifier sends the hyperplane
+distance as its status. Given that this value is dependent of the choosen algorithm, you should be very carefull
+with the use of this output stream. Unexepected behavior may (will) occur when changing the classifier.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Output2|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting1|
+The first setting of this box is the classifier to use. You have to choose the same classifier as the one you used
+during the training phase with the \ref Doc_BoxAlgorithm_ClassifierTrainer box.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting2|
+This setting points to the configuration file of the algorithm. This configuration file is generally generated from the
+\ref Doc_BoxAlgorithm_ClassifierTrainer box. Its syntax depends on the selected algorithm.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting3|
+For classification algorithms that support rejection, you can choose a stimulation that reflects the feature vectore
+could not be classified.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting3|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting4|
+This is the stimulation to send when the classifier algorithm detects a class-1 feature vector
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting4|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting5|
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting5|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Examples|
+This box is used in BCI pipelines in order to classify cerebral activity states. For a detailed scenario using this
+box and its associated \ref Doc_BoxAlgorithm_ClassifierTrainer, please see the <b>motor imagary</b>
+BCI scenario in the sample scenarios.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Miscellaneous|
+ */
diff --git a/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierTrainer.dox-part b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierTrainer.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..92cb8377f7307c18006e2598a080b66bdcb68b49
--- /dev/null
+++ b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierTrainer.dox-part
@@ -0,0 +1,145 @@
+/**
+ * \page BoxAlgorithm_ClassifierTrainer Classifier trainer
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Description|
+The <em>Classifier Trainer</em> box is a generic box for classification training purpose. It works
+in cunjunction with the \ref Doc_BoxAlgorithm_ClassifierProcessor box.
+This box' role is to expose a generic interface to the rest of the BCI pipelines. The tasks
+specific to a given classifier are forwarded to one of the registered \c OVTK_TypeId_ClassifierAlgorithm
+algorithms. The behavior is simple, the box collects a number of feature vectors. Those feature vectors
+are labelled depending on the input they arrive on. When a specific stimulation arrives, a training
+process is triggered. This process can take some time so this box should be used offline. Depending on the
+settings you enter, you will be able to perform a k-fold test in order to train a better classifier. When
+this training stimulation is received, the box requests the selected classification algorithm to generate
+a configuration file that will be useable online by the \ref Doc_BoxAlgorithm_ClassifierProcessor box.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Inputs|
+This box can have a variable number of inputs. If you need more than two classes, feel free to add more
+inputs and to use a classifier algorithm able to classify more than two classes.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Input1|
+The first input receives a stimulation stream. Only one stimulation of this stream is important, the one
+that triggers the training process. When this stimulation is received, all the feature vectors are labelled
+and sent to the classification algorithm. The training is triggered and executed. Then the classification
+algorithm generates a configuration file that will be used online by the \ref Doc_BoxAlgorithm_ClassifierProcessor box.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Input1|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Input2|
+This input receives the feature vector for the first class.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Input2|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Input3|
+This input receives the feature vector for the second class.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Input3|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Settings|
+The number of settings of this box can vary depending on the classification algorithm you choose. Such algorithm
+could have specific input OpenViBE::Kernel::IParameter objects (see \ref OpenViBE::Kernel::IAlgorithmProxy for details). If
+the type of those parameters is simple enough to be handled in the GUI, then additional settings will be added to this box.
+For this to be applied, you will have to close & reopen the settings configuration dialog after the actual classification
+algorithm is choosen. Supported parameter types are : Integers, Floats, Enumeations, Booleans. The documentation for those
+parameters can not be done in this page because it is impossible to know at this time what classifier thus what hyper
+parameters you will have available. This will depend on the classification algorihtms that are be implemented in OpenViBE.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting1|
+The first setting of this box is the classifier to use. You can choose any registered \c OVTK_TypeId_ClassifierAlgorithm
+algorithm you want.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting2|
+This setting points to the configuration file where to save the result of the training for later online use. This
+configuration file is used by the \ref Doc_BoxAlgorithm_ClassifierProcesor box. Its syntax
+depends on the selected algorithm.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting3|
+This is the stimualation to consider to trigger the training process.	
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting3|
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting4|
+If you want to perform a k-fold test, you should enter something else than 0 or 1 here. A k-fold test generally allows
+better classification rates. The idea is to divide the set of feature vectors in a number of partitions. The classification
+algorithm is trained on some of the partitions and its accuracy is tested on the others. The classifier with the best results
+is selected as the trained classifier. See the miscellaneous section for details on how the k-fold test is done in this box.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting4|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Examples|
+This box is used in BCI pipelines in order to classify cerebral activity states. For a detailed scenario using this
+box and its associated \ref Doc_BoxAlgorithm_ClassifierProcessor, please see the <b>motor imagary</b>
+BCI scenario in the sample scenarios.
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Miscellaneous|
+In this section, we will detail how the k-fold test is implemented in this box. For the k-fold test to be performed, you
+have to choose more than 1 partition in the related settings. Suppose you chose \c n partitions. Then when trigger stimulation
+is received, the feature vector set is splitted in \c n consecutive segments. The classification algorithm is trained on
+\c n-1 of those segments and tested on the last one. This is performed for each segment. Then the classifier with the
+best accuracy is choosen.
+
+For example, suppose you have 5 parititions of feature vectors (\c FVs)
+\verbatim
++------+ +------+ +------+ +------+ +------+
+| FVs1 | | FVs2 | | FVs3 | | FVs4 | | FVs5 |
++------+ +------+ +------+ +------+ +------+
+\endverbatim
+For the first training, a feature vector set is built form the \c FVs2, \c FVs3, \c FVs4, \c FVs5. The classifier algorithm
+is trained on this feature vector set. Then the classifier is tested on the \c FVs1 :
+\verbatim
++------+ +---------------------------------+
+| FVs1 | |  Training Feature Vector Set 1  |
++------+ +---------------------------------+
+\endverbatim
+Then, a feature vector set is built form the \c FVs1, \c FVs3, \c FVs4, \c FVs5. The classifier algorithm
+is trained on this feature vector set. Then the classifier is tested on the \c FVs2 :
+\verbatim
++------+ +------+ +------------------------+
+|Traini| | FVs2 | |ng Feature Vector Set 2 |
++------+ +------+ +------------------------+
+\endverbatim
+The same process if performed on all the partitions :
+\verbatim
++---------------+ +------+ +---------------+
+|Training Featur| | FVs3 | |e Vector Set 3 |
++---------------+ +------+ +---------------+
++------------------------+ +------+ +------+
+|Training Feature Vector | | FVs4 | |Set 4 |
++------------------------+ +------+ +------+
++---------------------------------+ +------+
+|  Training Feature Vector Set 5  | | FVs5 |
++---------------------------------+ +------+
+\endverbatim
+
+Important things to consider :
+- The more partitions you have, the more feature vector you have in your training sets... and the less examples you'll have to
+test on. This means that the result of the test will probably be less reliable. But you will be able to choose the best classifier
+among a more consequent list.
+- The less partitions you have, the less feature vector you have in your training sets... and the more examples you'll have to
+test on. This means that the online use of the trained classifier is more likely to be consistent with the trained classifier accuracy.
+
+In conclusion, be carefull when choosing this k-fold test setting. Typical value range from 4 partitions (train on 75% of the feature vectors and
+test on 25% - 4 times) to 10 partitions (train on 90% of the feature vectors and test on 10% - 10 times).
+ * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Miscellaneous|
+ */
diff --git a/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_VotingClassifier.dox-part b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_VotingClassifier.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..01e6bc8389a87533450a34b12f5f9aa062904bc8
--- /dev/null
+++ b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_VotingClassifier.dox-part
@@ -0,0 +1,111 @@
+/**
+ * \page BoxAlgorithm_VotingClassifier Voting Classifier
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Description|
+The purpose of this simple classifier is to choose between multiple two class classifiers which
+one mostly fits a condition. For example imagine \c n states. Each of those states can be either active
+or inactive. Additionnaly, imagine you want only one active state at a time. Then you can have \c n
+two-class classifiers telling for each state if it is active or not, and a following voting classifier
+that chooses which of those states is the <em>most active</em>.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Inputs|
+You can add as many inputs as you need depending on the number of preceeding states.
+
+The inputs of this classifier can be changed to either streamed matrix of stimulations.
+
+In the case you choose stimulations, each active stimulation gives a point
+to the preceeding state. An inactive stimulation gives no point. After a number of repetitions, the
+state whith the best score is chossen.
+
+In the case you choose streamed matrix, the matrix must have only one
+element. This element is used as a score coefficient (in place of the simple 1-0 of the previous
+case).  After a number of repetitions, the state whith the best score is chossen.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Input1|
+Input streaam for the first state.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Input1|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Input2|
+Input streaam for the second state.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Input2|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Outputs|
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Output1|
+This output sends a new stimulation as soon as the classifier received the correct number of votes
+from the preceeding states. The output stimulation is based on the 5th setting of the box. First
+state being selected would send exactly this stimulation. Second state would send this
+stimulation + 1 etc.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Output1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting1|
+This setting tells the box how many votes it needs before choosing. If the box uses stimulations,
+it must receive either the target or non target stimulation to consider a state has been voted.
+Additionaly, the box waits each state to be voted the correct number of times to take a decision.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting2|
+If the box uses stimulations, this settings tells what stimulation reflects that the state is active.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting3|
+If the box uses stimulations, this settings tells what stimulation reflects that the state is inactive.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting3|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting4|
+In case no choice can be made (for example, there are more than one state with the highest score), the
+voting classifier can choose to reject the vote and send a specific stimulation for this. This is more
+likely to happen when the box works on stimulation better than streamed matrix. You can force this box
+to choose using the 6th setting.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting4|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting5|
+This stimulation is used as a basis for the stimulations to send when a state is selected. First
+state being selected would send exactly this stimulation. Second state would send this
+stimulation + 1 etc.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting5|
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting6|
+This setting can force the box to choose a state even if more than one state have the highest score.
+In such case, there won't be any rejection. The way the box decides between the ex-aequo candidates
+is undefined.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting6|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Examples|
+This box is used in the <em>P300 speller</em> and the <em>P300 magic card</em> BCIs. Please see those
+scenarios in the sample <em>openvibe-scenarios</em>.
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Miscellaneous|
+ */
diff --git a/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_CSVFileWriter.dox-part b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_CSVFileWriter.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..3e7d704846b5495951a25c1d1c0b3cbbdc6065a8
--- /dev/null
+++ b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_CSVFileWriter.dox-part
@@ -0,0 +1,106 @@
+/**
+ * \page BoxAlgorithm_CSVFileWriter CSV File Writer
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Description|
+This box allows to output some of the OpenViBE streams in a text file that is
+easy to read by the machine and easy to read by the human. CSV files are text files
+with different values separated by a special character such as a colon, a semicolon
+or a tabulation. This basic syntax makes them very easy to read for both machine and
+human. The purpose of this box is to quicly export some data to other softwares.
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Inputs|
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Input1|
+This is input is used to know what data to dump in the considered file. The type of
+this input can be modified by the user and the format of the output will be adapted
+depending on this type. Supported inputs are : Signal, Spectrum and Stimulations.
+Format specific to each of these stream types is detailed in section
+\ref Doc_BoxAlgorithm_CSVFileWriter_Miscellaneous.
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Input1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Setting1|
+This setting contains the file where to store the data.
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Setting2|
+This setting contains the special character to use as a separation for the different
+fields. Typical examples are colon, semi colon and tabulations.
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Setting3|
+Due to the fact that text files can grow very quickly, it is possible to compress the
+file using gzip format. If you want to use compression, just tick this setting.
+<b>Note: this is not implemented at the moment</b>.
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Setting3|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Examples|
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Miscellaneous|
+In this section, we detail the typical outputs that you will find in the output
+file depending on the type of the input connector.
+
+For the Signal stream, you will have something like this :
+\verbatim
+Time (s), Channel 1, Channel 2, ..., Channel n
+Time of mesure 1, Mesure 1 of channel 1, Mesure 1 of channel 2, ..., Mesure 1 of channel n
+Time of mesure 2, Mesure 2 of channel 1, Mesure 2 of channel 2, ..., Mesure 2 of channel n
+...
+Time of mesure t, Mesure t of channel 1, Mesure t of channel 2, ..., Mesure t of channel n
+\endverbatim
+
+For the Spectrum stream, you will have something like this :
+\verbatim
+Time (s), Channel 1, Channel 2, ..., Channel n
+Time of mesure 1, Freq band 1 of mes 1 of chan 1, Freq band 1 of mes 1 of chan 2, ..., Freq band 1 of mes 1 of chan n
+Time of mesure 1, Freq band 2 of mes 1 of chan 1, Freq band 2 of mes 1 of chan 2, ..., Freq band 2 of mes 1 of chan n
+...
+Time of mesure 1, Freq band f of mes 1 of chan 1, Freq band f of mes 1 of chan 2, ..., Freq band f of mes 1 of chan n
+Time of mesure 2, Freq band 1 of mes 2 of chan 1, Freq band 1 of mes 2 of chan 2, ..., Freq band 1 of mes 2 of chan n
+Time of mesure 2, Freq band 2 of mes 2 of chan 1, Freq band 2 of mes 2 of chan 2, ..., Freq band 2 of mes 2 of chan n
+...
+Time of mesure 2, Freq band f of mes 2 of chan 1, Freq band f of mes 2 of chan 2, ..., Freq band f of mes 2 of chan n
+...
+...
+...
+Time of mesure t, Freq band 1 of mes t of chan 1, Freq band 1 of mes t of chan 2, ..., Freq band 1 of mes t of chan n
+Time of mesure t, Freq band 2 of mes t of chan 1, Freq band 2 of mes t of chan 2, ..., Freq band 2 of mes t of chan n
+...
+Time of mesure t, Freq band f of mes t of chan 1, Freq band f of mes t of chan 2, ..., Freq band f of mes t of chan n
+\endverbatim
+
+For the Stimulation stream, you will have something like this :
+\verbatim
+Time (s), Identifier, Duration
+Time of stim 1, Idenfitifer of stim 1, Duration of stim 1
+Time of stim 2, Idenfitifer of stim 2, Duration of stim 2
+...
+Time of stim n, Idenfitifer of stim n, Duration of stim n
+\endverbatim
+ * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Miscellaneous|
+ */
diff --git a/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamReader.dox-part b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamReader.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..a4eab9b74031adb4799f88ccc47eda921d79cf93
--- /dev/null
+++ b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamReader.dox-part
@@ -0,0 +1,56 @@
+/**
+ * \page BoxAlgorithm_GenericStreamReader Generic stream reader
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Description|
+This box is able to read any file saved with the \ref Doc_BoxAlgorithm_GenericStreamWriter box.
+It is interesting to notice that such file can contain a variable number of streams. Therefore,
+the user is able to add and modify any output he wants on the box. The box does not supposes
+anything on the streams contained in the file during authoring in the designer. The streams of
+the file are mapped to created output at runtime in an "intelligent way" depending on there types.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Description|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Outputs|
+This box can have as many output you want depending on the content of the file.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Output1|
+This is the default output.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Output1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Setting1|
+This setting points to the file to read. This file may contain a variable number of multiplexed
+streams. Those streams will be mapped to corresponding outputs at runtime. The mapping is done in
+an "intelligent way" because it reorders the streams contained in the file to match the types of
+the outputs. If a stream from the file does not find a matching output, a warning is launched.
+If an output does not find a matching stream from the file, a warning is also launched.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Setting1|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Examples|
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Miscellaneous|
+ */
diff --git a/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamWriter.dox-part b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamWriter.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..80cc97a6467bb1ad6d780ae7839ef5d604249f78
--- /dev/null
+++ b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamWriter.dox-part
@@ -0,0 +1,60 @@
+/**
+ * \page BoxAlgorithm_GenericStreamWriter Generic stream writer
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Description|
+This box is able to dump any OpenViBE stream into a binary file. In the cacse where this box
+would have multiple inputs, the streams would be multiplexed in the file. Such file can
+be read back with the \ref Doc_BoxAlgorithm_GenericStreamReader
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Inputs|
+You can add any input you want to this box depending on the number of streams you want to dump.
+In the cacse where this box would have multiple inputs, the streams would be multiplexed in the file.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Input1|
+The default input.
+
+<b>Note: it important to correctly configure the type of the inputs</b>. That information will be
+used by the \ref Doc_BoxAlgorithm_GenericStreamReader to map the contained streams to its outputs.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Input1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Setting1|
+This setting points to the file to write the streams to.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Setting2|
+Thanks to this setting, you can use compression on each input stream. This means that the basic
+structure of the file remains uncompressed but that each stream inside this structure is compressed.
+<b>Note: this is not implemented at the moment</b>.
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Setting2|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Examples|
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Miscellaneous|
+ */
diff --git a/openvibe-plugins/signal-processing/trunc/src/doc/Doc_BoxAlgorithm_SignalDecimation.dox-part b/openvibe-plugins/signal-processing/trunc/src/doc/Doc_BoxAlgorithm_SignalDecimation.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..e9f2e4f1a7c95af1c085dd8159387072b94cf094
--- /dev/null
+++ b/openvibe-plugins/signal-processing/trunc/src/doc/Doc_BoxAlgorithm_SignalDecimation.dox-part
@@ -0,0 +1,78 @@
+/**
+ * \page BoxAlgorithm_SignalDecimation Signal Decimation
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Description|
+This box reduces the sampling frequency of an input signal <em>the easy way</em>.
+It is different of the existing \ref Doc_BoxAlgorithm_DownsamplingGPL box in the sense
+that there is no pre-filtering and that you can not choose an arbitrary sampling
+frequency. Thus you will have to pre-filter the input signal with the
+\ref Doc_BoxAlgorithm_TemporalFilterGPL box for example. The new sampling frequency
+will be an exact divider of the source signal sampling frequency. For example, if your
+input sampling frequency is 1000Hz, you are allowed to divide that frequency by 2 or 4
+but you can't divide it by 3. Additionally, the number of samples per chunk must
+also be a multiple of the divider coefficient, resulting in the possible need of
+an appropriate \ref Doc_BoxAlgorithm_TimeBasedEpoching before decimation. See section
+\ref Doc_BoxAlgorithm_SignalDecimation_Examples for a detailed example of what can
+be done.
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Inputs|
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Input1|
+The input signal.
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Input1|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Outputs|
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Output1|
+The decimated signal.
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Output1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Setting1|
+The sampling rate divider. At each chunk reception, 1 sample among n of the input signal will be
+sent to the output signal.
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Setting1|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Examples|
+Suppose you have a signal with a sampling rate of 1000Hz streamed with 32 samples per buffer
+that you want to downsample to 100Hz. Downsampling this signal to 100Hz will require that you
+low-pass filter the signal to at most 50Hz to avoid bad results. Additionnaly,
+This box won't be able to take one sample on ten with a stream containing 32 samples per buffer.
+So after the low-pass filtering, you will have to change the epoch sizes using a the
+\ref Doc_BoxAlgorithm_TimeBasedEpoching box and configuring it e.g. for epochs of 0.1s every
+0.1s for example. Thus you will have 100 samples per buffer and this box will be able to select
+ten samples over a hundred at each chunk reception.
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Miscellaneous|
+ */
diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation.dox-part b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..2a42bc7c7de11b27753c04904f855391396fd529
--- /dev/null
+++ b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation.dox-part
@@ -0,0 +1,149 @@
+/**
+ * \page BoxAlgorithm_P300MagicCardVisualisation P300 Magic Card Visualisation
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Description|
+This box can be used with a P300 based paradigm to have a simple game. A collection of cards are presented to
+the user. He chooses one card among all and focuses on this card. The application shows each card sequentially.
+After a number of repetitions, the card that the user was focusing on is automatically found.
+
+\image html Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png "The P300 Magic Card Visualisation showing all the cards"
+\image html Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png "The P300 Magic Card Visualisation flashing one of the cards"
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Inputs|
+This box has three inputs. The most important one is the first one, sequencing the which card to show to the user.
+The two other inputs are optional and used for defining the target and the selected card.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Input1|
+This input is used for sequencing the card display. It uses specific stimulations to know which
+card should be shown (see \ref Doc_BoxAlgorithm_P300MagicCardVisualisation_Setting_5)
+The card display is switched off thanks to the \c OVTK_StimulationId_VisualStimulationStop stimultion
+(this is automatically triggered by the \ref Doc_BoxAlgorithm_P300SpellerStimulator box).
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Input1|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Input2|
+This input is used in order to define the target card the user should focus on. See
+\ref Doc_BoxAlgorithm_P300MagicCardVisualisation_Setting_5 to know what stimulation should be used.
+The target card will be highlighted with a specific color so the user quickly notices it.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Input2|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Input3|
+This input is used in order to define the selected card the user should focus on. See
+\ref Doc_BoxAlgorithm_P300MagicCardVisualisation_Setting_5 to know what stimulation should be used.
+The selected card will be highlighted with a specific color so the user quickly notices it.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Input3|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Outputs|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Output1|
+This output is used to translate incoming stimulations depending if they are target or not.
+The actual target is determined with the second input. As soon as the target is known, each flash
+can be considered as a target flash or not. This can be later use for selecting evoked response
+potentials against other responses.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Output1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting1|
+This is the glade interface to use for the GUI.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting2|
+This color defines the default background.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting3|
+This color defines the background color for target card.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting3|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting4|
+This color defines the background color for selected card.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting4|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting5|
+This stimulation is used as a basis for the flashes. For example, flashing the first card consists in sending this
+exact stimulation code to the first input. Flashing the second card needs this stimulation code + 1 and so on.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting5|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting6|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting6|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting7|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting7|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting8|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting8|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting9|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting9|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting10|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting10|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting11|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting11|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting12|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting12|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting13|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting13|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting14|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting14|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting15|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting15|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting16|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting16|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting17|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting17|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting18|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting18|
+__________________________________________________________________
+
+Online visualisation settings
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_OnlineVisualizationSettings|
+There are no online visualisation settings for this box.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_OnlineVisualizationSettings|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Examples|
+This box is used in the <em>P300 magic card</em> BCI. Please see this
+scenario in the sample <em>openvibe-scenarios</em>.
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Miscellaneous|
+ */
diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9f275d62db89050ff75d9845d257bffac4df4f0
Binary files /dev/null and b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png differ
diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec97ba30dfa4bf3fba61849a0356150d3a5071e0
Binary files /dev/null and b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png differ
diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation.dox-part b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..1a99b0c8a785e3060abb657add6ba5e94bba86aa
--- /dev/null
+++ b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation.dox-part
@@ -0,0 +1,174 @@
+/**
+ * \page BoxAlgorithm_P300SpellerVisualisation P300 Speller Visualisation
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Description|
+This box can be used with the \ref Doc_BoxAlgorithm_P300SpellerStimulator box in order to
+establish a P300 speller application. The visualisation consists in a matrix of 6 lines and
+columns containing 26 characters and 10 numbers. The lines and columns can be flashed sequencially
+resulting in an evoked potential in the user's brain activity. This evoked potential can be
+detected and used to find which line and which column the user was focused on, thus resulting
+in the ability to write text.
+
+This box relies on a glade interface that contains the actual letters & numbers. This glade
+interface can be freely adpated if you need for example more than 6 lines or 6 columns, or
+if you need something else than letters & words (e.g. words).
+
+\image html Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png "The P300 Speller Visualisation in action"
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Inputs|
+This box has four inputs. The most important one is the first one, sequencing the flashes.
+The three other inputs are optional and used for defining the target and the selected line/columns.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input1|
+This input is used for sequencing the flashes. It uses specific stimulations to know which
+line/column should be flashed (see \ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_2
+and \ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_3). The flash is switched off thanks
+to the \c OVTK_StimulationId_VisualStimulationStop stimultion (this is automatically triggered
+by the \ref Doc_BoxAlgorithm_P300SpellerStimulator box).
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input1|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input2|
+This input is used in order to define the target row/column the user should focus on. See
+\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_2 and
+\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_3 to know what stimulation should be used.
+The target row/column will be highlighted with a specific color/size so the user quickly notices
+the letter to focus on.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input2|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input3|
+This input is used in order to define the selected row. See
+\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_2 and
+\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_3 to know what stimulation should be used.
+The target row/column will be highlighted with a specific color/size so the user quickly notices
+the letter that has been selected.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input3|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input4|
+This input is used in order to define the selected column. See
+\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting2 and
+\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting3 to know what stimulation should be used.
+The target row/column will be highlighted with a specific color/size so the user quickly notices
+the letter that has been selected.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input4|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Outputs|
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Output1|
+This output is used to translate incoming flash stimulations depending if they are target or not.
+The actual target is determined with the second input. As soon as the target is known, each flash
+can be considered as a target flash or not. This can be later use for selecting evoked response
+potentials against other responses.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Output1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting1|
+This is the glade interface to use for the GUI. This file can be adapted depending on your needs, for example
+if you want to replace the letters / numbers by e.g. words or symbols, or if you want to add more lines / columns.
+However, the structure of the GUI is important (wee need some specific hierarchies to allow flash/selection coloring
+to work). So please, respect this structure.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting2|
+This stimulation is used as a basis for the row flashes. For example, flashing the first row consists in sending this
+exact stimulation code to the first input. Flashing the second row needs this stimulation code + 1 and so on.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting3|
+This stimulation is used as a basis for the column flashes. For example, flashing the first column consists in sending this
+exact stimulation code to the first input. Flashing the second column needs this stimulation code + 1 and so on.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting3|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting4|
+This color defines the flash background. It is not common in P300 spellers to have a changing background but this
+probabaly enhances the response.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting4|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting5|
+This color defines the flash foreground (the colors of the letters).
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting5|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting6|
+This setting defines the size of the letter when the flash occurs. Consider this value as a scale factor with no specific unit.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting6|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting7|
+This color defines the background when there is no flash.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting7|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting8|
+This color defines the foreground when there is no flash.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting8|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting9|
+This setting defines the size of the letter when there is no flash. Consider this value as a scale factor with no specific unit.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting9|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting10|
+This color defines the background of the target letter.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting10|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting11|
+This color defines the foreground of the target letter.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting11|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting12|
+This setting defines the size of the target letter. Consider this value as a scale factor with no specific unit.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting12|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting13|
+This color defines the background of the selected letter.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting13|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting14|
+This color defines the foreground of the selected letter.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting14|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting15|
+This setting defines the size of the selected letter. Consider this value as a scale factor with no specific unit.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting15|
+__________________________________________________________________
+
+Online visualisation settings
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_OnlineVisualizationSettings|
+There are no online visualisation settings for this box.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_OnlineVisualizationSettings|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Examples|
+This box is used in the <em>P300 speller</em> BCI. Please see this
+scenario in the sample <em>openvibe-scenarios</em>.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Miscellaneous|
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Miscellaneous|
+ */
diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8f0d443f94255835666e6ebe6ebb5096208f582
Binary files /dev/null and b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png differ
diff --git a/openvibe-plugins/stimulation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerStimulator.dox-part b/openvibe-plugins/stimulation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerStimulator.dox-part
new file mode 100644
index 0000000000000000000000000000000000000000..8b06a464d5096bd8f5f47bb38fd3af89d5feb41f
--- /dev/null
+++ b/openvibe-plugins/stimulation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerStimulator.dox-part
@@ -0,0 +1,180 @@
+/**
+ * \page BoxAlgorithm_P300SpellerStimulator P300 Speller Stimulator
+__________________________________________________________________
+
+Detailed description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Description|
+This box is used to generate a 2D P300 stimulation timeline. Depending on its parameters,
+it generates all the necessary flagging stimulations for an P300 experiment, such as when
+a flash starts, when it stops, when the repetitions are finished etc.
+
+Imagine a P300 speller application. Such application is based on a matrix of letters / numbers.
+The lines and columns of this matrix are flashed consecutively a number of time. Then a decision
+can be made and the user can relax. Then same process restarts and so one. Such experiment can
+be driven by this box.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Description|
+__________________________________________________________________
+
+Inputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Inputs|
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Inputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Input1|
+This input is used to start the generation of the pipeline. As soon as the start stimulation
+arrives here, the generation process starts. (see setting 1)
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Input1|
+__________________________________________________________________
+
+Outputs description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Outputs|
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Outputs|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Output1|
+This output contains the stimulations used for P300 based experiments.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Output1|
+__________________________________________________________________
+
+Settings description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Settings|
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Settings|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting1|
+This first setting tells which stimulation to use to start the generation process. This stimulation
+can be received from a keyboard for example (see \ref Doc_BoxAlgorithm_KeyboardStimulator).
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting1|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting2|
+This setting tells what stimulation base to use when flashing rows of the matrix. When row one should
+be flashed, this exact stimulation will be sent. When row two should be flashed, this stimulation + 1
+will be sent, and so on.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting2|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting3|
+This setting tells what stimulation base to use when flashing columns of the matrix. When column one should
+be flashed, this exact stimulation will be sent. When column two should be flashed, this stimulation + 1
+will be sent, and so on.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting3|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting4|
+This setting tells how many row the matrix has.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting4|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting5|
+This setting tells how many columns the matrix has.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting5|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting6|
+This setting tells how many times each row / column should be flashed in a trial.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting6|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting7|
+This setting tells how many trials should be generated.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting7|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting8|
+This setting tells how long a flash longs.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting8|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting9|
+This setting tells how long this stimulator should wait after a flash is finished before sending a new flash.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting9|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting10|
+This setting tells how much rest is left to the user between the repetitions.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting10|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting11|
+This setting tells how much rest is left to the user between the trials.
+Please note that the end of a trial is also the end of a repetition. So the rest duration includes both times.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting11|
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting12|
+This setting is not used for now.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting12|
+__________________________________________________________________
+
+Examples description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Examples|
+This box is used in the <em>P300 speller</em> and the <em>P300 magic card</em> BCIs. Please see those
+scenarios in the sample <em>openvibe-scenarios</em>.
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Examples|
+__________________________________________________________________
+
+Miscellaneous description
+__________________________________________________________________
+
+ * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Miscellaneous|
+<b>Note:</b> Even if this box has been created for flashing matrices, it could be used for flashing 1D things. However, in order
+to have more efficient results on matrices, this box flashes one line, then one column, then one line etc. It never
+flashes a line and then another line. Thus in the 1D case, you have to know that the same behavior will occur, resulting
+on the flashing of the low-part of your 1D set, then high part, then low part etc...
+
+The sequence generated by this box is typically something like this :
+\verbatim
+OVTK_StimulationId_ExperimentStart
+
+	OVTK_StimulationId_RestStart
+	OVTK_StimulationId_RestStop
+
+	OVTK_StimulationId_TrialStart
+		OVTK_StimulationId_SegmentStart
+
+			OVTK_StimulationId_Label_0B
+			OVTK_StimulationId_VisualStimulationStart
+			OVTK_StimulationId_VisualStimulationStop
+
+			OVTK_StimulationId_Label_03
+			OVTK_StimulationId_VisualStimulationStart
+			OVTK_StimulationId_VisualStimulationStop
+
+			...
+			...
+			...
+
+			OVTK_StimulationId_Label_04
+			OVTK_StimulationId_VisualStimulationStart
+			OVTK_StimulationId_VisualStimulationStop
+
+		OVTK_StimulationId_SegmentStop
+		OVTK_StimulationId_SegmentStart
+
+			...
+			...
+			...
+
+		OVTK_StimulationId_SegmentStop
+
+		...
+		...
+		...
+
+	OVTK_StimulationId_TrialStop
+
+	OVTK_StimulationId_RestStart
+	OVTK_StimulationId_RestStop
+
+	OVTK_StimulationId_TrialStart
+
+		...
+		...
+		...
+
+	OVTK_StimulationId_TrialStop
+
+	...
+	...
+	...
+
+OVTK_StimulationId_ExperimentStop\endverbatim
+ * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Miscellaneous|
+ */