P300 Speller Visualization

Summary

Doc_BoxAlgorithm_P300SpellerVisualization.png
  • Plugin name : P300 Speller Visualization
  • Version : 1.0
  • Author : Yann Renard
  • Company : INRIA
  • Short description : Visualizes the alphabet for P300 spellers
  • Documentation template generation date : Dec 3 2018

Description

This box can be used with the P300 Speller Stimulator box in order to implement a P300 speller application. The visualization consists in a matrix of 6 lines and columns containing 26 characters and 10 numbers. The lines and columns can be flashed sequentially to cause 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 gtk builder 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).

Doc_BoxAlgorithm_P300SpellerVisualization_Snapshot.png
The P300 Speller Visualization in action

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.

1. Sequence stimulations

This input is used for sequencing the flashes. It uses specific stimulations to know which line/column should be flashed (see

  1. Row stimulation base
and
  1. Column stimulation base
). The flash is switched off thanks to the OVTK_StimulationId_VisualStimulationStop stimulation (this is automatically triggered by the P300 Speller Stimulator box).

  • Type identifier : Stimulations (0x6f752dd0, 0x082a321e)

2. Target stimulations

This input is used in order to define the target row/column the user should focus on. See

  1. Row stimulation base
and
  1. Column stimulation base
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.

  • Type identifier : Stimulations (0x6f752dd0, 0x082a321e)

3. Row selection stimulations

This input is used in order to define the selected row. See

  1. Row stimulation base
and
  1. Column stimulation base
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.

  • Type identifier : Stimulations (0x6f752dd0, 0x082a321e)

4. Column selection stimulations

This input is used in order to define the selected column. See Doc_BoxAlgorithm_P300SpellerVisualization_Setting2 and Doc_BoxAlgorithm_P300SpellerVisualization_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.

  • Type identifier : Stimulations (0x6f752dd0, 0x082a321e)

Outputs

1. Target / Non target flagging (deprecated)

DEPRECATED. This output should not be used anymore. See Miscellaneous Description below.

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.

  • Type identifier : Stimulations (0x6f752dd0, 0x082a321e)

Settings

1. Interface filename

This is the gtk builder 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.

  • Type identifier : Filename (0x330306dd, 0x74a95f98)
  • Default value : [ ${Path_Data}/plugins/simple-visualization/p300-speller.ui ]

2. Row stimulation base

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.

  • Type identifier : Stimulation (0x2c132d6e, 0x44ab0d97)
  • Default value : [ OVTK_StimulationId_Label_01 ]

3. Column stimulation base

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.

  • Type identifier : Stimulation (0x2c132d6e, 0x44ab0d97)
  • Default value : [ OVTK_StimulationId_Label_07 ]

4. Flash background color

This color defines the flash background. It is not common in P300 spellers to have a changing background but this probably enhances the response.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 10,10,10 ]

5. Flash foreground color

This color defines the flash foreground (the colors of the letters).

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 100,100,100 ]

6. Flash font size

This setting defines the size of the letter when the flash occurs. Consider this value as a scale factor with no specific unit.

  • Type identifier : Integer (0x007deef9, 0x2f3e95c6)
  • Default value : [ 100 ]

7. No flash background color

This color defines the background when there is no flash.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 0,0,0 ]

8. No flash foreground color

This color defines the foreground when there is no flash.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 50,50,50 ]

9. No flash font size

This setting defines the size of the letter when there is no flash. Consider this value as a scale factor with no specific unit.

  • Type identifier : Integer (0x007deef9, 0x2f3e95c6)
  • Default value : [ 75 ]

10. Target background color

This color defines the background of the target letter.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 10,40,10 ]

11. Target foreground color

This color defines the foreground of the target letter.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 60,100,60 ]

12. Target font size

This setting defines the size of the target letter. Consider this value as a scale factor with no specific unit.

  • Type identifier : Integer (0x007deef9, 0x2f3e95c6)
  • Default value : [ 100 ]

13. Selected background color

This color defines the background of the selected letter.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 70,20,20 ]

14. Selected foreground color

This color defines the foreground of the selected letter.

  • Type identifier : (0x7f45a2a9, 0x7db12219)
  • Default value : [ 30,10,10 ]

15. Selected font size

This setting defines the size of the selected letter. Consider this value as a scale factor with no specific unit.

  • Type identifier : Integer (0x007deef9, 0x2f3e95c6)
  • Default value : [ 100 ]

Examples

This box is used in the P300 speller BCI. Please see this scenario in the sample openvibe-scenarios.

Miscellaneous

The box relies on the TCP Tagging plugin of the OpenViBE Acquisition Server. A stimulation stream including target/nontarget stimulations will be sent to the Acquisition Server directly after rendering. This 'software tagging' approach tries to align the stimulations as well as possible with relation to the underlying EEG stream. It should be more time-accurate than using the stimulations from the output socket of the box (deprecated). An even better option would be 'hardware tagging', i.e. to send the stimulations to the amplifier. Hardware tagging is currently not supported due to a lack of a standard for such.