Signal display


  • Plugin name : Signal display
  • Version : 0.3
  • Author : Bruno Renier, Yann Renard, Alison Cellard, Jussi T. Lindgren
  • Company : INRIA/IRISA
  • Short description : Displays the incoming stream
  • Documentation template generation date : Dec 3 2018


This box can be used to visualize signal and matrix streams

This plugin displays incoming signals. It plots values on the vertical axis while the horizontal axis represents time.

To display your signal correctly and as smoothly as possible, you may need to configure this box. Please see below for examples.


1. Data

Data to display. Signal and Streamed Matrix types are supported.

  • Type identifier : Signal (0x5ba36127, 0x195feae1)

2. Stimulations


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

3. Channel Units

Measurement units of the data.

  • Type identifier : Channel units (0x6ab26b81, 0x0f8c02f3)


1. Display Mode

Type of display, can be either Scan mode or Scroll mode. In Scan mode, the new data arrives from left to right and the displayed data does not move. In Scroll mode, the new data always arrives on the right and all displayed data moves right to left.

  • Type identifier : Signal display mode (0x5de046a6, 0x086340aa)
  • Default value : [ Scan ]

2. Auto vertical scale

Automatic vertical (y) scaling mode: Per channel, Global, or None.

  • Type identifier : Signal display y scaling (0x33a30739, 0x00d5299b)
  • Default value : [ Per channel ]

3. Scale refresh interval (secs)

How often the vertical scale is refreshed. Only used when automatic vertical scaling mode is not None.

  • Type identifier : Float (0x512a166f, 0x5c3ef83f)
  • Default value : [ 5 ]

4. Vertical Scale

Vertical (y) scale for each channel when automatic vertical scaling mode is None.

  • Type identifier : Float (0x512a166f, 0x5c3ef83f)
  • Default value : [ 100 ]

5. Vertical Offset

Vertical (y) offset for each channel when automatic vertical scaling mode is None.

  • Type identifier : Float (0x512a166f, 0x5c3ef83f)
  • Default value : [ 0 ]

6. Time Scale

Size of time window to display, in seconds.

  • Type identifier : Float (0x512a166f, 0x5c3ef83f)
  • Default value : [ 10 ]

7. Bottom ruler

Enable bottom (x) ruler?

  • Type identifier : Boolean (0x2cdb2f0b, 0x12f231ea)
  • Default value : [ true ]

8. Left ruler

Enable left (y, vertical) ruler?

  • Type identifier : Boolean (0x2cdb2f0b, 0x12f231ea)
  • Default value : [ false ]

9. Multiview

Enable multiview? This mode displays several signals on top of each other. It is sometimes called a 'butterfly plot'.

  • Type identifier : Boolean (0x2cdb2f0b, 0x12f231ea)
  • Default value : [ false ]


To get some signals displayed right, changing the automatic y scaling may be useful. The provided scaling settings are

    - Per channel (default) : Every channel will get centered and scaled separately. This should allow viewing arbitrary signals. This is suitable for unfiltered data which may have huge differences in scale and DC between channels.
    - Global : All channels are put to the same scale which is the maximum of all the channels. This mode is suitable for filtered EEG and data which may have long-term trends but where all channels generally stay in the same range. 
    - None: User must specify global center and scale. Display is never automatically rescaled. This is suitable for filtered EEG data where the meaningful range is within known parameters and DC doesn't vary. 

Note that the automatic scalers may include discontinuities in the plot when the scale changes (see below for 'Best practices').

Practical example :

OpenViBE has a tutorial scenario bundled : box-tutorials/signal-display.xml

An easy way to test this box consists of generating signals with the Sinus Oscillator plugin (found under 'Data generation' in Designer), and then connecting its signal output to the signal input of the Signal Display plugin.

Visualizing 2 channels using the Signal Display plugin.


Best practices

All vertical scaling modes except 'None' will change the scaling dynamically when the scale of the data appears to have changed. To avoid slow redraws, the box simply changes the scale and leaves the old part of the signal as it was, meaning that you may see a discontinuity in the signal, as for the moment there are two or more different scales visible. The scale change is marked by small red ticks at the top and bottom of the display.

For most situations, and to avoid the discontinuities of the automatic scaling, the following is recommended:

    - First filter the signals meaningfully to remove DC and slow trends by using the Temporal Filter box. For EEG, you can use a bandpass configuration with a range a such as [1,40] hz.
    - Next, set the vertical scaling to 'None' and provide the display box a meaningful fixed scale corresponding to your signal. You can find out a suitable scale by activating 'Left Ruler' when the auto scale is active. Note that when the scale is given in the box parameters, the scale can be saved with the scenario.

Known issues and workarounds

The box supports only two data stream types: Matrix and Signal. Many OpenViBE stream types derive from the Streamed Matrix type. In this case, you can configure the box to have a Streamed Matrix input socket, and then connect the derived stream type to that. Note that the data of the stream not contained in the matrix will be ignored. In any case, you may be able to visualize something meaningful. In the case of Feature Vector stream, you can try to use the Matrix Transpose box on the feature stream first to turn the features into channels.

Multiview: Multiview presents all the signals in the same space. The different channels are not centered, so if they have large DC differences, the view may not show anything meaningful. In this case, filter the signal first.

Scroll mode is known to be slow, notably on Windows. For faster scrolling display, use Linux.