Skip to content

neuromore Studio

Nodes

Nodes are the building blocks of a classifier. Each node does one job and passes its result on through its ports. You connect ports in the Classifier window to build a signal path, usually from sensors through signal processing to feedback. This page lists every node you can add in a standard production build, with its ports, attributes and default values.

Differences from the public release are marked. See What changed since 1.7.3.

The palette has one tab for each category, and each category has a section on this page: Sensors, Input, Output, Math, DSP, Bio and Utils.

Three nodes are hidden from the palette: Session Time and Body Feedback, which are deprecated, and Select Bins, which is flagged as unstable. To add one, right-click in the graph and use the Add Node menu.

State machines have their own objects: states, transitions, conditions and actions. See State machine reference.

These docs show what the neuromore system can do. Community builds on GitHub do not include every device driver. Developers can add those drivers in their own source build. Commercial clients can get the integration as part of their custom build. Each device is labelled, so check the label before you buy hardware.

A device node appears only if your build includes it and your account has access to it, so the palette can differ between builds, platforms and accounts. BrainFlow, Cyton and EEG Device are not limited by account, and neither are the nodes in the other categories. See Editions and licensing.

Ports of type Channels carry one or more channels of numeric samples. A set of channels on one port is called a multichannel. Ports of type Spectrum carry frequency spectra from an FFT node.

Some nodes need a fixed sample rate, or the same sample rate on all inputs. If an input doesn’t meet this, the node shows the error “Input must have a valid sample rate.” or “Input sample rates are incompatible.” and produces no output.

In 1.7.3: The node shows the same error but keeps running. The Operation node is the exception: it stops in both versions.

Session pause: no node has a pause attribute. During a pause the graph keeps updating, so sensor nodes keep delivering samples. Integral, Statistics, Auto Threshold, Points and Session Time freeze automatically, and the Paused output of Session Info is 1. See Running a session.

In 1.7.3: Integral, Statistics, Auto Threshold, Points and Session Time keep running during a pause. Only the Paused output of Session Info behaves the same.

This category contains the nodes that bring device data into a classifier. Each device type has its own node, with one output port per data stream. The EEG Device node works with any EEG device. Sensor nodes have no input ports. See Biosensors for setup steps and Devices for transports and detection.

What all device nodes share:

  • EEG devices: the EEG port bundles all electrodes into one multichannel output. If the device has more than one electrode, each electrode also gets its own port.
  • Device not connected: the node shows this error when it finds no matching device that is streaming. It then carries no data.
  • Battery low: the node can show this warning when a device reports less than 10% charge. It can also show for a device that reports no battery level, and then says nothing about a real battery.

Device nodes share the attributes below, except EEG Device, BrainFlow and Cyton, whose entries say so.

Attribute Values Default What it does
Upload On, off Off Does not upload this node’s streams. Studio’s session upload reads this setting only on Output nodes, so use Upload on an Output node instead. Whether physiological data is uploaded also depends on your account. See Editions and licensing.
Device Number 1 or higher 1 Picks which device of this type the node uses when several are connected.
Raw Output On, off Off Outputs the device’s unsynced streams and bypasses drift correction. The device’s clock then drives the channels.

Reads EEG from any connected EEG device, so one classifier can work across different headsets. It outputs EEG only, with no per-electrode ports and no accelerometer or other extra streams.

Port Direction Type Meaning
EEG Output Channels All electrodes of the device it found. When the node starts, the port takes the device’s name.
Attribute Values Default What it does
Allowed Devices List of device names or hexadecimal type IDs Empty, which matches every EEG device The node goes through the list in order and uses the first connected EEG device that matches. A name matches on any part of the hardware name, ignoring case, so muse matches InteraXon Muse.

This node has no Upload, Device Number or Raw Output attribute. It always outputs synced channels.

With an empty list, the node also accepts the Test Device. When two or more EEG devices are connected, Studio shows an Active BCI selector. This node doesn’t read that selector, so use Allowed Devices to choose between devices.

Test System Node Icon

Outputs simulated brainwaves from the Test Device, so you can build and run a classifier with no hardware. The signal mixes delta, theta, alpha and SMR sine waves with noise, at 128 Hz.

Port Direction Type Meaning
EEG Output Channels All 8 simulated electrodes.
Pz, Cz, F3, F4, AF3, AF4, O1, O2 Output Channels One simulated electrode per port.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: all platforms. Status: Beta.

Studio adds the Test Device when no other device exists, within about a second, and removes it when a real device connects. This needs Enable Test Devices (on by default) under NMStudio > Settings > Devices > Drivers, and your account must have access to the Test Device. So a classifier that uses this node loses its signal once a real device connects, and the node then shows Device not connected.

Muse Node Icon

Reads an InteraXon Muse headband through the OSC stream from the external muse-io program. EEG runs at a nominal 220 Hz.

Port Direction Type Meaning
EEG Output Channels All 4 electrodes.
TP9, Fp1, Fp2, TP10 Output Channels One electrode per port.
Concentration, Mellow Output Channels Experimental muse-io scores, 0 to 1, at 10 Hz.
DRL, Ref Output Channels Driven right leg and reference, in µV, at 10 Hz.
Acc (Forward), Acc (Up), Acc (Left) Output Channels Accelerometer axes in mm/s^2, at 50 Hz.
Eye Blink, Jaw Clench Output Channels Blink and jaw clench detection from muse-io, 0 or 1, at 10 Hz.
TP9 OK?, Fp1 OK?, Fp2 OK?, TP10 OK? Output Channels Contact quality per electrode: 1 good, 0.5 fair, 0 bad.
Put On? Output Channels Whether the headband touches the forehead, 0 or 1.
Attribute Values Default What it does
Upload, Raw Output See the shared table Off, Off Shared device attributes.
Device Number 1 or higher 1 Picks the device by its ID. The number in the OSC path /muse/<id>/ becomes the device ID, and Device Number is that ID plus 1.

Availability: all platforms, with muse-io from the Muse SDK. Status: Beta. There is no driver: the device appears when OSC messages arrive on the OSC input port, UDP 4545 by default. See Biosensors.

Versus Node Icon

Reads a SenseLabs Versus headset over a serial port, at 250 Hz.

Port Direction Type Meaning
EEG Output Channels All 5 electrodes.
Pz, C4, Fz, Cz, C3 Output Channels One electrode per port.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: all platforms. On macOS, the sandbox may block serial ports. See Devices. Status: Supported. Enable Senselabs Devices is off by default, and ticking it alone does not start the scan. See SenseLabs Versus.

Reads an 8-channel eemagine eego amplifier from ANT Neuro through the vendor SDK, at 512 Hz.

Port Direction Type Meaning
EEG Output Channels All 10 electrode sensors, including REF and GND.
F3, Fz, F4, Cz, P3, Pz, P4, M1, REF, GND Output Channels One electrode sensor per port.
Mode Output Channels 0 during streaming, 1 during an impedance test.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: Windows and Linux, x64 and x86 only, not macOS. Status: Beta. Enable eemagine Devices is on by default. The driver handles one amplifier at a time.

During streaming, electrode ports carry µV, and REF and GND carry 0. During an impedance test, electrode ports, REF and GND carry kOhm values, and Mode is 1. See Impedance and contact quality.

Reads a 32-channel eemagine eego amplifier from ANT Neuro through the vendor SDK, at 512 Hz.

Port Direction Type Meaning
EEG Output Channels All 34 electrode sensors, including REF and GND.
Fp1, Fpz, Fp2, F7, F3, Fz, F4, F8, FC5, FC1, FC2, FC6, A1, T7, C3, Cz, C4, T8, A2, CP5, CP1, CP2, CP6, P7, P3, Pz, P4, P8, POz, O1, Oz, O2, GND, REF Output Channels One electrode sensor per port.
Mode Output Channels 0 during streaming, 1 during an impedance test.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability and channel values are the same as for eego 8ch.

Reads a 64-channel eemagine eego amplifier from ANT Neuro through the vendor SDK, at 512 Hz.

Port Direction Type Meaning
EEG Output Channels All 66 electrode sensors, including REF and GND.
Fp1, Fpz, Fp2, F7, F3, Fz, F4, F8, FC5, FC1, FC2, FC6, A1, T7, C3, Cz, C4, T8, A2, CP5, CP1, CP2, CP6, P7, P3, Pz, P4, P8, POz, O1, O2, EOG, AF7, AF3, AF4, AF8, F5, F1, F2, F6, FC3, FCz, FC4, C5, C1, C2, C6, CP3, CP4, P5, P1, P2, P6, PO5, PO3, PO4, PO6, FT7, FT8, TP7, TP8, PO7, PO8, Oz, GND, REF Output Channels One electrode sensor per port.
Mode Output Channels 0 during streaming, 1 during an impedance test.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability and channel values are the same as for eego 8ch.

OpenBCI Node Icon

Reads an OpenBCI Cyton board over its USB dongle through Studio’s native driver, at 250 Hz. For the BrainFlow route to the same board, see Cyton.

Port Direction Type Meaning
EEG Output Channels All 8 channels.
1, 2, 3, 4, 5, 6, 7, 8 Output Channels One channel per port. The names are channel numbers, not electrode positions.
Acc (Forward), Acc (Up), Acc (Left) Output Channels Accelerometer axes in mm/s^2.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: all platforms. On macOS, the sandbox may block serial ports. See Devices. Status: Supported. Enable OpenBCI Devices is on by default. See Impedance and contact quality for its impedance estimate.

Reads an OpenBCI Cyton board with a Daisy module over its USB dongle through Studio’s native driver, at 125 Hz.

Port Direction Type Meaning
EEG Output Channels All 16 channels.
1 to 16 Output Channels One channel per port, named by number.
Acc (Forward), Acc (Up), Acc (Left) Output Channels Accelerometer axes in mm/s^2.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: all platforms. On macOS, the sandbox may block serial ports. See Devices. Status: Beta. Enable OpenBCI Devices is on by default.

In 1.7.3: The Daisy channels are named P3, P4, Oz, Fz, T5, T6, F3, F4, T3, T4, C3, C4, Cz, O1, O2, Pz. A classifier that selects Daisy channels by these names needs new names in 1.8.2.

Mitsar-EEG 201 Node Icon

Reads a Mitsar-EEG 201 amplifier through a connector program from the vendor SDK, at 500 Hz.

Port Direction Type Meaning
EEG Output Channels All 23 electrodes.
Fp1, Fpz, Fp2, F7, F3, Fz, F4, F8, T3, C3, Cz, C4, T4, T5, P3, Pz, P4, T6, O1, Oz, O2, A1, A2 Output Channels One electrode per port.
Poly1, Poly2, Poly3, Poly4 Output Channels Polygraphic channels.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: Windows only, with the connector from Mitsar. Status: Beta. Enable Mitsar Devices is off by default. See Biosensors.

Reads a BrainMaster Discovery 20 amplifier through the vendor library, at 256 Hz.

Port Direction Type Meaning
EEG Output Channels All 20 electrodes.
Fp1, F3, C3, P3, O1, F7, T3, T5, Fz, Fp2, F4, C4, P4, O2, F8, T4, T6, Cz, Pz, A2 Output Channels One electrode per port. A code comment describes A2 as A2-A1.
Fpz, Oz, AUX23, AUX24 Output Channels Additional inputs. They are not part of the EEG port.
Mode Output Channels 0 during streaming, 1 during an impedance test.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: Windows x86 builds only, with bmrcm.dll from BrainMaster. Status: Beta. Enable BrainMaster Devices is on by default. The driver connects only when Code Key, Serial Number and Pass Key are set under NMStudio > Settings > Devices, group BrainMaster. See Biosensors.

Provides skin response from a Mindfield eSense device.

Port Direction Type Meaning
GSR Output Channels Skin response in µS, nominally 10 Hz.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Status: Beta, Engine library only. Studio has no driver or OSC address for this device, so in Studio the node shows Device not connected and carries no data. Only a host application using the Engine library can feed it.

Reads a Neurosity Notion 1 or Notion 2 headset through its OSC stream, at 250 Hz.

Port Direction Type Meaning
EEG Output Channels All 8 electrodes.
CP5, F5, C3, CP3, CP6, F6, C4, CP4 Output Channels One electrode per port.
Attribute Values Default What it does
Upload, Raw Output See the shared table Off, Off Shared device attributes.
Device Number 1 or higher 1 Picks the device by its ID, which comes from the device string. Set it to the device ID shown in the Devices window plus 1. The default of 1 does not match a Neurosity device.

Availability: all platforms. Status: Supported. There is no driver: the device appears when Studio receives the device’s OSC info message on the OSC input port. Other messages alone do not make it appear, and the info message decides between Notion and Crown. See Biosensors. Notion is also reachable through the BrainFlow node.

Reads a Neurosity Crown headset through its OSC stream, at 256 Hz.

Port Direction Type Meaning
EEG Output Channels All 8 electrodes.
CP3, C3, F5, PO3, PO4, F6, C4, CP4 Output Channels One electrode per port.
Attribute Values Default What it does
Upload, Raw Output See the shared table Off, Off Shared device attributes.
Device Number 1 or higher 1 Picks the device by its ID, which comes from the device string. Set it to the device ID shown in the Devices window plus 1. The default of 1 does not match a Neurosity device.

Availability: all platforms. Status: Beta. There is no driver: the device appears when Studio receives the device’s OSC info message on the OSC input port. Other messages alone do not make it appear, and the info message decides between Notion and Crown. Studio logs an error if the device’s info message reports another model, channel list or sample rate than it expects. See Biosensors.

Connects to a board through the bundled BrainFlow library. The node creates the device itself, with no scan. Studio reads only EEG channels from BrainFlow.

Port Direction Type Meaning
EEG Output Channels All EEG channels of the board. This port exists before anything connects, so seeing it does not mean the board is connected.
One port per channel Output Channels Added after a board with more than one channel connects. Boards with no electrode names in BrainFlow get blank port labels, so identify them by order.
Attribute Values Default What it does
Board ID PlayBack, Streaming, Synthetic, Cyton, Ganglion, CytonDaisy, Galea, GanglionWifi, CytonWifi, CytonDaisyWifi, BrainBit, Unicorn, CallibriEEG, CallibriEMG, CallibriECG, Fascia, NotionOSC1, NotionOSC2, IronBCI, GforcePro, FreeEEG32 Synthetic The board to open.
Serial port Text Empty Passed to BrainFlow.
MAC address Text Empty Passed to BrainFlow.
IP address Text 192.168.4.1 Passed to BrainFlow.
IP port 1 to 65535 50000 Passed to BrainFlow.
IP protocol None, UDP, TCP None Passed to BrainFlow.
Other info Text Empty Passed to BrainFlow.
Timeout 0 or higher 0 Passed to BrainFlow.
Serial number Text Empty Passed to BrainFlow.
File Text Empty Passed to BrainFlow.
Apply Button Reads the fields and opens the board. Editing a field does nothing until you press it.

Availability: compiled into every platform, not limited by account. Status: varies by board, see BrainFlow boards. Which boards work depends on the platform and vendor libraries. A name in the dropdown does not mean the board delivers data in Studio.

This node has no visible Upload, Device Number or Raw Output attribute. A saved classifier does not reconnect by itself, so press Apply again after you open one.

A fixed-board shortcut for the OpenBCI Cyton through BrainFlow. It is separate from the native OpenBCI node.

Port Direction Type Meaning
EEG Output Channels All 8 EEG channels.
Fp1, Fp2, C3, C4, P7, P8, O1, O2 Output Channels One channel per port, added after the board connects.
Attribute Values Default What it does
Serial port Text COM3 on Windows, /dev/ttyUSB0 on Linux, /dev/cu.usbserial-DM0258D9 on macOS The port to open. The macOS default is one specific dongle’s name, so most Mac users must change it.

Availability: compiled into every platform, not limited by account. On macOS, the sandbox may block serial ports. Status: Supported. All other attributes are hidden, and there is no Apply button.

The node opens the port as soon as you add it, and again when you change the port. To keep the native OpenBCI scan off the same port, turn off NMStudio > Settings > Devices > Automatic Device Search. See The Cyton node for what happens on loading and removal.

Heartrate Node Icon

Reads a Bluetooth LE heart rate sensor.

Port Direction Type Meaning
BPM Output Channels Heart rate in beats per minute, at a variable rate.
RR-Interval Output Channels Time between beats, at a variable rate. It is labelled ms and carries the raw sensor value, which standard Bluetooth LE heart rate sensors report in units of 1/1024 second.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Availability: all platforms. Status: Supported. The only source is Studio’s Bluetooth driver, which is off by default. Tick Enable Bluetooth Devices under NMStudio > Settings > Devices > Drivers. A comment in the code warns that this driver stops working once the Versus driver is active. Leave Enable Senselabs Devices off when you use a heart rate sensor. See Bluetooth LE heart-rate sensors.

Accelerometer Node Icon

Provides three axes from a generic accelerometer.

Port Direction Type Meaning
X, Y, Z Output Channels Acceleration per axis in m/s^2, nominally 50 Hz.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Status: Beta, Engine library only. Studio has no driver or OSC address for this device, so in Studio the node shows Device not connected and carries no data. Only a host application using the Engine library can feed it.

Gyroscope Node Icon

Provides three axes from a generic gyroscope.

Port Direction Type Meaning
X, Y, Z Output Channels Rotation per axis, nominally 10 Hz. The code gives the unit as rad/s^2.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Status: Beta, Engine library only. Studio has no driver or OSC address for this device, so in Studio the node shows Device not connected and carries no data. Only a host application using the Engine library can feed it.

Defines the inputs of a game controller.

Port Direction Type Meaning
Left X, Left Y, Right X, Right Y Output Channels Joystick axes.
A, B, X, Y, L1, L2, L3, R1, R2, R3, Select, Start, Guide Output Channels Buttons.
Up, Down, Left, Right, Center Output Channels Directional buttons.
Attribute Values Default What it does
Upload, Device Number, Raw Output See the shared table Off, 1, Off Shared device attributes.

Status: Beta, no data source found. Nothing in the code feeds gamepad state into this device, so the node shows Device not connected and carries no data.

These nodes exist in the source but are not compiled into community builds, so they are not in the palette of a downloaded build. Vendor SDK licensing is not yet confirmed. See Devices.

  • EPOC and Insight (Emotiv): Not in public build. Available through a source build (community) or a custom build (commercial clients). The vendor SDK is not in the repository.
  • NeuroSky (NeuroSky MindWave): Not in public build. Available through a source build (community) or a custom build (commercial clients). The vendor SDK is not in the repository.
  • EyeX (Tobii): Not in public build. Available through a source build (community) or a custom build (commercial clients). The vendor SDK is not in the repository.
  • B-Alert X10 and B-Alert X24 (Advanced Brain Monitoring): Not in public build. Available through a source build (community) or a custom build (commercial clients). Windows 32-bit; vendor headers not in the repository.
  • PET 4.0 (Brainquiry): Not in public build. Available through a source build (community) or a custom build (commercial clients). Windows 32-bit; vendor headers not in the repository.
  • ActiChamp (Brain Products actiCHamp): Not in public build. Available through a source build (community) or a custom build (commercial clients). The source has only a driver skeleton with no data path, so a build must complete it.

Audio Input, Microphone and Audio Output nodes also exist in the source, with their flag turned off. They are not offered as device integrations.

This category contains the nodes that generate their own data or get it from somewhere else, such as the file system, the network or the neuromore cloud. Device nodes are in the Sensors category.

A node in this category runs only while at least one of its outputs is connected.

Parameter Node Icon

Outputs a value that you set. Use it for a fixed constant, or add a control to the Parameters window so the value can be changed during a session. A state machine can also find it by the name in its Node Name field and set it with the Parameter action. See State machine reference.

Parameter Node

Port Direction Type Meaning
Show Input Channels Shown only with Show Controls and Show Inputs on. The control is shown while the last sample is 1 or more, and hidden below that. Unconnected or empty means shown.
Enable Input Channels Shown only with Show Controls and Show Inputs on. The control is enabled while the last sample is 1 or more, and disabled below that. Unconnected or empty means enabled.
Out Output Channels The value, on every output channel. Channels take the node’s name. The port label shows the current value.
Attribute Values Default What it does
Description Text Empty Tooltip for the control in the Parameters window.
Value Any number 0 The value to output. With Checkboxes, Dropdown Menu or Selection Buttons, it also picks the option selected at the start. Hidden for Separator (Dummy).
Sample Rate 0 or higher 0 Rate of the output in Hz. 0 means automatic: the rate of the active BCI when the node starts, or 128 if there is none. Values below 0.01 count as 0. Hidden for Separator (Dummy).
Number of Channels 1 or higher 1 Number of output channels. Hidden for Separator (Dummy).
Show Controls On, off Off Adds a control for this node to the Parameters window.
Show Inputs On, off Off Adds the Show and Enable input ports. Shown only with Show Controls on.
Control Type Separator (Dummy), Value Slider, Checkboxes, Dropdown Menu, Selection Buttons, Event Buttons Value Slider The kind of control. Shown only with Show Controls on.
Range Min Any number 0 Lower end of the slider. Shown only for Value Slider.
Range Max Any number 1 Upper end of the slider. Shown only for Value Slider.
Options Comma-separated list OFF,ON One entry per checkbox, menu item or button. Shown only for Checkboxes, Dropdown Menu, Selection Buttons and Event Buttons.

What each control outputs:

Control Type Output
Separator (Dummy) No value to set. Shows the node’s name in bold above a line, to group the other controls.
Value Slider The slider value, on all channels.
Dropdown Menu The index of the selected option, on all channels. The first option is 0.
Checkboxes, Selection Buttons If Number of Channels equals the number of options, each channel is 1 or 0 for its own option. Otherwise only one option can be selected, and all channels output its index. The first option is 0.
Event Buttons The value lasts for one sample, then returns to 0. If Number of Channels equals the number of options, a click sends 1 on that button’s channel. Otherwise all channels output the button’s position, starting at 1 for the first button.

Range Min and Range Max limit the slider only. The node does not clamp a value set in another way, such as by the Parameter action.

Studio applies the state of each control when a session starts. When the classifier resets, the node returns to its Value attribute.

Signal Generator Node Icon

Generates periodic waveforms, noise or simulated brainwaves. Use it to build and check a classifier without a device.

Signal Generator Node

Port Direction Type Meaning
Out Output Channels The generated signal, one channel named after the node. The port label shows the signal type.
Attribute Values Default What it does
Signal Type Sine, Square, Noise, Ramp, Sawtooth, Triangle, Brainwaves Sine The signal to generate. See the next table.
Sample Rate Above 0 128 Rate of the output in Hz.
Frequency Above 0 1 Frequency of the waveform in Hz. For Ramp, see the next table. Hidden for Noise and Brainwaves.
Amplitude 0 or higher 1 Size of the signal. See the next table.
DC-Offset Any number 0 Added to the signal. Brainwaves does not use it.
Duty cycle 0 or higher 0.5 Fraction of each period that the signal is high. 1 or more keeps it high. Shown only for Square.
Signal Type Output
Sine Swings from DC-Offset − Amplitude to DC-Offset + Amplitude.
Square Starts each period high at DC-Offset + Amplitude, then drops to DC-Offset.
Noise Random values from DC-Offset − Amplitude to DC-Offset + Amplitude.
Ramp DC-Offset + Amplitude × time in seconds ÷ Frequency. It keeps rising and does not repeat.
Sawtooth Rises from DC-Offset to DC-Offset + Amplitude each period, then jumps back.
Triangle Rises from DC-Offset to DC-Offset + Amplitude and back down each period.
Brainwaves A synthetic test signal, scaled by Amplitude: sine components around 0 to 3.5 Hz, 8 to 12 Hz and 13 to 16 Hz, with slowly varying strength, plus noise. It is not recorded EEG.

Amplitude is half of peak-to-peak only for Sine and Noise. For Square, Sawtooth and Triangle it is the full peak-to-peak size.

OSC Input Node Icon

Receives float values over OSC from other programs on the network or on the same computer. Studio listens on UDP port 4545 by default. To change it, go to NMStudio > Settings > Network > OSC Server > Input UDP port. See OSC.

OSC Input Node

Port Direction Type Meaning
Out Output Channels One channel with the received values. The port label shows the OSC address.
Attribute Values Default What it does
OSC address Text /in/0, or the next free number The address to listen to. A message must match it exactly.
Sample rate Above 0 128 The rate at which your source sends, in Hz. It describes the incoming data. Studio does not measure it.

Every float argument in a matching message becomes one sample, and a message can carry several. The node does not hold the last value or add samples between messages, and it does not resample. Send at a steady rate and set Sample rate to that actual rate. Otherwise, nodes further along the classifier work on a wrong time base.

Send float arguments only. An argument of another type may arrive as 0.

If two OSC Input nodes in a classifier share an address, the node shows the error “OSC address is not unique” and does not run.

Outputs the state of the running session: elapsed time, whether it is paused, and the points so far. Use this node for session timing in new classifiers.

Port Direction Type Meaning
Elapsed Time Output Channels Session time in the selected Time Unit, without paused time. 0 when no session is running.
Paused Output Channels 1 while the session is paused, otherwise 0.
Points Output Channels Total from all Points nodes in the classifier. 0 when no session is running.
Attribute Values Default What it does
Time Unit Milliseconds, Seconds, Minutes, Hours Seconds Unit of the Elapsed Time output.
Sample Rate 1 or higher 128 Rate of all three outputs in Hz.

All samples created in one Engine update carry the same values, so the outputs move in small steps.

In 1.7.3: Points nodes keep accumulating during a pause, so the Points output can still rise while the session is paused.

Session Time Node Icon

Deprecated. Use Session Info in new classifiers. It is hidden from the palette. To add it, right-click in the graph and use the Add Node menu.

Outputs the time since the last reset of the classifier. It does not wait for the session to begin, so it can differ from Elapsed Time on Session Info.

Session Time Node

Port Direction Type Meaning
Out Output Channels The time in the selected Time Unit. The port label shows the unit.
Attribute Values Default What it does
Time Unit Milliseconds, Seconds, Minutes, Hours Seconds Unit of the output.
Sample Rate 1 or higher 128 Rate of the output in Hz.

During a session pause, samples keep flowing at the same rate and repeat the time at which the pause started. After Continue, the time counts on without the paused time.

In 1.7.3: The time keeps counting through a pause.

Cloud Input Node Icon

Reads values stored in the neuromore cloud. The Cloud Output node stores them when a session ends. Use the pair to carry a value from one session to the next.

Cloud Input Node

The two nodes link through the node name. To read what a Cloud Output node stored, give the Cloud Input node exactly the same name and the same Type. With a different name, you get the Default Value. Set the name in the Node Name field of the node’s attributes. You can’t change it while a session is running.

Port Direction Type Meaning
Out Output Channels The values read from the cloud, one channel named after the node.
Attribute Values Default What it does
Default Value Any number 0 Output until a stored value arrives, and if none exists. Used only when Sample Rate is above 0.
Sample Rate 0 or higher 128 Rate of the output in Hz. See the behaviour below for 0.
Type User Parameter, Classifier Parameter User Parameter User Parameter belongs to the user, so any classifier can read it. Classifier Parameter is requested with this classifier’s ID, so it is tied to this classifier.
Request Mode Current Value (no history), Previous Values, All Values, Time Range Current Value (no history) What to ask the server for. See the next table.
Number of Values 0 or higher 10 Intended as the number of values to request. The current code does not pass this value to the server: the request carries a limit of 0, and the result depends on the server. Shown only for Previous Values.
Time Range Custom Range, One Hour, One Day, One Week, One Month, One Year One Day How far back to request values. One Month is 30 days and One Year is 365 days. Shown only for Time Range.
Time Range (Seconds) 0 or higher 1800 Length of the custom range. Shown only for Time Range with Custom Range selected.
Request Mode Requests
Current Value (no history) One value.
Previous Values Stored values, with a limit of 0 in the request, whatever Number of Values says. The result depends on the server.
All Values All stored values.
Time Range All stored values from the selected time range.

Previous Values, All Values and Time Range ask for values saved with a timestamp. Cloud Output adds one only with Save Mode set to Save History.

Studio requests the values when you begin a session. If the request fails, the session does not start and Studio shows an error dialog.

What the node outputs depends on Sample Rate:

  • Above 0: It outputs the Default Value until a reply arrives. After that it cycles through the returned values in a loop, one per sample. With a single returned value, such as from Current Value (no history), the output stays at that value for the session.
  • 0: It outputs each returned value once and does not repeat it. It outputs nothing before a reply arrives.

Messages on the node:

  • The warning “Not Updated.” means the node has no stored value yet.
  • The error “Name is not unique.” means another Cloud Input node in the classifier has the same name.

File Reader Node Icon

Reads a multichannel data file from the local file system and plays it back in a loop. It loads the whole file when the node starts.

File Reader Node

Port Direction Type Meaning
Out Output Channels One channel per column or signal in the file. The port label shows the file path.
Attribute Values Default What it does
File Text Empty Path of the data file on the local computer. Use a full path.
Format CSV (*.csv), CSV with timestamps (*.csv), EDF(+) / BDF(+) (*.edf) CSV (*.csv) The format of the file.
Sample Rate 0 or higher 0 Overrides the rate of all channels, in Hz. Fractions are dropped. 0 uses the rate from the file.

CSV files are comma-separated:

Fp1,Fp2
256Hz,256Hz
10.5,-3.2
11.0,-2.9
  • The first line holds the channel names.
  • The second line is optional and holds the sample rates. Studio treats it as a rate line if it contains “Hz”, “hz”, “Samplerate” or “samplerate”.
  • Every other line holds one value per channel, so avoid blank lines. A line can be up to 4,095 characters long.
  • In CSV with timestamps, Studio ignores the first column. It does not use the timestamps for timing.

For EDF and BDF files:

  • Annotations are not read.
  • A label that contains “EEG”, such as “EEG Fp1”, becomes the second word, “Fp1”.
  • Studio uses the signal’s samples per data record as the rate. This equals Hz only when a data record lasts 1 second. For other files, set Sample Rate.

When the node produces nothing or stops with a message:

  • No rate: If the file gives no sample rate and Sample Rate is 0, the node outputs no samples and shows no error.
  • Mixed rates: If channels have different rates and Sample Rate is 0, the node does not run and shows no error. Set Sample Rate to run it. All channels then play at that rate.
  • “No file specified.” The File attribute is empty.
  • “Cannot open file.” The path is wrong or the file cannot be read.
  • “Can’t parse the file. Wrong format?” The content does not match Format, or a line has the wrong number of values or a value that is not a number.
  • “File is empty.” The file contains no samples. This is a warning.

If channels differ in length, playback loops at the length of the shortest channel.

This category holds the nodes that take data out of the classifier: to visualizations, the network, the neuromore cloud, files, Studio’s windows and audio. None of them has an output port.

Custom Feedback, Body Feedback, OSC Output, Points, the Volume, Brightness, Speed, Sun, Clouds, Fog, Rain and Vignette Control nodes share the attributes below. They use only the first channel of a multi-channel input.

Attribute Values Default What it does
Resolution Original (the input’s sample rate), High (30 Hz), Mid (10 Hz), Low (4 Hz) High Sets the sample rate of the node’s output channel. This changes the size of uploaded data, the packet rate of OSC Output and the curve in the Feedback window. The feedback bundle and WebSocket frames always use the latest input value, so their rate doesn’t change.
Upload On, off Off Adds the node’s output to the data Studio uploads after the session stops. Whether data is uploaded also depends on your account. See the Privacy Policy.
Output Name Use Node Name, Use Channel Name, Use Custom Name Use Node Name Sets the name of the output channel.
Custom Name Text Empty The name to use. Shown only with Use Custom Name. If it is empty, the node’s name is used.

On the Volume, Brightness, Speed, Sun, Clouds, Fog, Rain and Vignette Control nodes, the Custom Name field does not appear, so Use Custom Name gives the node’s name.

In 1.7.3: Output Name has only Use Node Name and Use Channel Name, and there is no Custom Name.

Send OSC Msgs puts a node’s value in the feedback bundle on port 45554, not on 4546. Each message has four arguments: value (float), is ranged (bool), range min (float), range max (float). OSC Output nodes use port 4546.

Custom Feedback Node Icon

The default node for a classifier’s main results, such as a calculated metric or the feedback path. Its value appears in the Feedback window and goes out in WebSocket frames while a session runs. It reaches visualizations only with Send OSC Msgs on, and the neuromore cloud only with Upload on. Both are off by default.

Custom Feedback Node

Port Direction Type Meaning
In Input Channels The feedback value.
Attribute Values Default What it does
Resolution, Upload, Output Name, Custom Name See the shared table High, Off, Use Node Name, Empty Shared output attributes.
Send OSC Msgs On, off Off Sends the value in the feedback bundle on port 45554.
OSC Address Text /feedback/0, then the next free number The address of the message. Shown only with Send OSC Msgs on.
User ID 0 or higher 0 Stored with the node. Studio does not use this value.
Is Ranged On, off On Checks the value against Range Min and Range Max. Also sent as the second OSC argument.
Range Min Any number 0 Lowest expected value. Shown only with Is Ranged on. Sets the lower limit of the output channel.
Range Max Any number 1 Highest expected value. Shown only with Is Ranged on. Sets the upper limit of the output channel.

Range Min and Range Max don’t clamp the value. With Is Ranged on, a value outside the range puts the error “Value not in range” on the node, and the raw value is still sent. To keep a value in range, put a Remap node with Clamp Output on in front of this node.

Two nodes that send to the same address give the error “OSC address is not unique”. A Custom Feedback node named Volume or MasterVolume gets a deprecation warning and has no effect on volume. Use Volume Control instead.

Body Feedback Node Icon

Sends heart rate, HRV and breathing rate to visualizations. Deprecated. For new classifiers, use Custom Feedback nodes. It is hidden from the palette, and existing classifiers can still use it. To add it, right-click in the graph and use the Add Node menu.

Body Feedback Node

Port Direction Type Meaning
Heart Rate Input Channels Heart rate in BPM. Sent to /heartrate.
HRV Input Channels Heart rate variability in ms. Sent to /hrv.
Breathing Rate Input Channels Breathing rate in BPM. Sent to /breathingrate.
Attribute Values Default What it does
Resolution, Upload, Output Name, Custom Name See the shared table High, Off, Use Node Name, Empty Shared output attributes.
Send OSC Msgs On, off Off Sends the three values in the feedback bundle on port 45554. Unlike other feedback nodes, each message has one float argument, and it comes from the output channel, so Resolution applies.
User ID 0 or higher 0 Stored with the node. Studio does not use this value.

The node doesn’t appear in the Feedback window and isn’t sent over WebSocket.

OSC Output Node Icon

Sends a value to another program as a plain OSC message with one float argument. The default target is 127.0.0.1, UDP port 4546. Change it in NMStudio > Settings > Network > OSC Server > Target Host/IP and Target UDP port. See OSC.

OSC Output Node

Port Direction Type Meaning
The node’s OSC address Input Channels The value to send. The port takes its name from OSC Address.
Attribute Values Default What it does
Resolution, Output Name, Custom Name See the shared table High, Use Node Name, Empty Shared output attributes. Resolution sets the rate: one packet per output sample, so 30 packets per second at High.
OSC Address Text /out/0, then the next free number The address of the message.

Upload is hidden on this node. Two OSC Output nodes with the same address give the error “OSC address is not unique”, and the node stops.

Points Node Icon

Gives the session a score. Points appear in the Session Control window during a session and in the Points output of the Session Info node. They are also sent in the feedback bundle as /session/points. With several Points nodes, the session score is their sum.

Points Node

Port Direction Type Meaning
In Input Channels The value to score.
Attribute Values Default What it does
Output Name, Custom Name See the shared table Use Node Name, Empty Shared output attributes.
Points Multiplier 0 to 10000, whole numbers 0 Chooses how points are calculated. See below.

Points Multiplier sets the mode:

  • 0, the default: the score is the latest input value. Nothing is added up over time, and the value isn’t clamped.
  • Above 0: the score adds up over time. Each sample is clamped to 0..1 and adds value × multiplier × sample duration. An input of 1 earns the multiplier’s value in points per second. Nothing is added while the session is paused.

Resolution and Upload are hidden on this node.

In 1.7.3: With a multiplier above 0, points keep adding up during a pause.

Cloud Output Node Icon

Stores a single value in the neuromore cloud. The Cloud Input node can read it back. The parameter name is the node’s name.

Port Direction Type Meaning
In Input Channels The value to store. Must be a single channel.
Attribute Values Default What it does
Type User Parameter, Classifier Parameter User Parameter Classifier Parameter ties the value to this classifier.
Save Mode Overwrite Value, Save History Overwrite Value Save History stores the value with the session’s stop time.

Studio writes the last input value when the session stops, including when it stops a session automatically, for example after losing a device. If the node has no value, nothing is written.

Errors: “Name is not unique.” when two Cloud Output nodes share a name, and “Input has too many channels. Node requires a single channel.” for a multi-channel input.

Sets a volume from a value between 0 and 1. The range is fixed. A value outside it puts the error “Value not in range” on the node and isn’t clamped. To keep a value in range, put a Remap node with Clamp Output on in front of this node.

Volume Control works in Studio’s Experience window and over WebSocket to the Chrome extension. In Visualization mode, it sends /audio/volume to visualizations in the feedback bundle on port 45554.

Note: Not every build sends /audio/volume yet. 1.7.3 and the current 1.8.2 source don’t. In those builds, use a Custom Feedback node with the OSC address /audio/volume and Send OSC Msgs on.

Port Direction Type Meaning
In Input Channels The volume, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.
Mode Studio Volume, Overall System Volume, Single Media File, Tone, Visualization Studio Volume What the value controls. See below.
File Text Empty The media file to control. Shown in Single Media File mode.
Node Text Empty The name of the Tone Generator node to control. Shown in Tone mode.
Mode What it controls
Studio Volume All media in the Experience window. Only the first node in this mode acts.
Overall System Volume The computer’s master volume. Windows builds only. It is skipped if a Single Media File node comes first.
Single Media File The media file named in File.
Tone The Tone Generator named in Node.
Visualization Turns on the node’s OSC message to visualizations. It has no effect in the Experience window.

Mode doesn’t affect the WebSocket path. The value goes to the Chrome extension in every mode. The extension matches the name exactly, so keep the name Volume Control. See Chrome extension.

Sets brightness from a value between 0 and 1. In the Experience window, a black overlay covers the content with an opacity of 1 minus the value, so 1 is full brightness and 0 is black. The range is fixed. A value outside it puts the error “Value not in range” on the node.

Brightness Control works in Studio’s Experience window and over WebSocket to the Chrome extension. It sends no OSC, deliberately, and games have no brightness address.

Port Direction Type Meaning
In Input Channels The brightness, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The Chrome extension matches the name exactly, so keep the name Brightness Control.

Controls movement speed in a visualization. Sends a value between 0 and 1 to the fixed address /movement-speed in the feedback bundle on port 45554. Send OSC Msgs is always on and there is no address to set. Read by Cartoon Town, Forest Walk and Infinite Tunnel. See Visualizations.

Port Direction Type Meaning
In Input Channels The value, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The range is fixed. A value outside it puts the error “Value not in range” on the node and is still sent.

Controls sunlight in a visualization. Sends a value between 0 and 1 to the fixed address /weather-sun in the feedback bundle on port 45554. Send OSC Msgs is always on and there is no address to set. Read by Cartoon Town, Forest Walk and Tropical Island. See Visualizations.

Port Direction Type Meaning
In Input Channels The value, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The range is fixed. A value outside it puts the error “Value not in range” on the node and is still sent.

Controls clouds in a visualization. Sends a value between 0 and 1 to the fixed address /weather-clouds in the feedback bundle on port 45554. Send OSC Msgs is always on and there is no address to set. Read by Forest Walk. See Visualizations.

Port Direction Type Meaning
In Input Channels The value, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The range is fixed. A value outside it puts the error “Value not in range” on the node and is still sent.

Controls fog in a visualization. Sends a value between 0 and 1 to the fixed address /weather-fog in the feedback bundle on port 45554. Send OSC Msgs is always on and there is no address to set. Read by Forest Walk. See Visualizations.

Port Direction Type Meaning
In Input Channels The value, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The range is fixed. A value outside it puts the error “Value not in range” on the node and is still sent.

Controls rain in a visualization. Sends a value between 0 and 1 to the fixed address /weather-rain in the feedback bundle on port 45554. Send OSC Msgs is always on and there is no address to set. Read by Cartoon Town, Forest Walk and Tropical Island. See Visualizations.

Port Direction Type Meaning
In Input Channels The value, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The range is fixed. A value outside it puts the error “Value not in range” on the node and is still sent.

Controls the camera vignette in a visualization. Sends a value between 0 and 1 to the fixed address /camera/vignetting in the feedback bundle on port 45554. Send OSC Msgs is always on and there is no address to set. Read by all four visualizations. See Visualizations.

Port Direction Type Meaning
In Input Channels The value, from 0 to 1.
Attribute Values Default What it does
Resolution, Upload, Output Name See the shared table High, Off, Use Node Name Shared output attributes.

The range is fixed. A value outside it puts the error “Value not in range” on the node and is still sent.

File Writer Node Icon

Writes its input channels to a local file while a session runs. Data goes to the file about 10 times per second. The File Reader node can read these files back.

File Writer Node

Port Direction Type Meaning
In Input Channels The channels to write. All must have matching sample rates.
Attribute Values Default What it does
File Text Empty The path of the output file. $starttime in the path is replaced by the session’s start time. On Windows, a leading ~ means your user folder.
Format CSV, CSV with timestamps, EDF+ CSV The file format.
Write Mode Never Overwrite, Overwrite Overwrite What happens if the file already exists.
EDF+ Min. -10000 to -1 -100 Physical minimum in the EDF+ header, in µV.
EDF+ Max. 1 to 10000 100 Physical maximum in the EDF+ header, in µV.

Caution: Write Mode defaults to Overwrite, so a session replaces an existing file with the same name. To keep earlier recordings, use Never Overwrite or put $starttime in the path.

With Never Overwrite and an existing file, the node shows the error “File already exists.” and writes nothing. Appending isn’t available.

CSV files start with a line of channel names and a line of sample rates. CSV with timestamps adds a first column with each sample’s time in seconds.

EDF+ takes at most 64 channels and 512 Hz, and all channels need the same sample rate. The header labels the unit as µV.

Other errors: “Cannot open file for writing.” for an empty or unusable path, “Cannot write to file.” when writing fails, “Cannot configure the file.” when the EDF+ header can’t be set up, and “Input sample rates are incompatible.” when sample rates differ.

View Node Icon

Shows signals in the Signal View window and spectra in the Spectrum View window. It affects only the display.

Port Direction Type Meaning
In Input Channels Signals for the Signal View window.
In (Spectrum) Input Spectrum Spectra for the Spectrum View window.
Enable Input Channels If connected, the node shows data only while the value is 1 or more. If not connected, the node is always on.
Length in mins Input Channels The fixed time range in minutes. Must be above 0. Shown only with Fixed Length in mins on.
Attribute Values Default What it does
Scaling Auto (Peak), Auto (StdDev), Custom Range Auto (Peak) How the In signals are scaled. Auto (Peak) uses the lowest and highest value in the displayed time. Auto (StdDev) uses the mean plus or minus half a standard deviation.
Range Min Any number 0 Lower limit. Shown only with Custom Range.
Range Max Any number 1 Upper limit. Shown only with Custom Range.
Custom Color On, off Off Uses Color for the signal.
Color Color neuromore blue The signal color. Shown only with Custom Color on.
Combined View On, off Off Shows all input channels in one chart.
Fixed Length in mins On, off Off Shows the Length in mins port. Its unit is minutes.

With a value on Length in mins, the view shows that fixed time range. Without one, the time range comes from the Signal View window. The input channels must be synchronized to the engine. Otherwise the node shows the error “Input channel is not synchronized to engine.”

In 1.7.3: There is no Length in mins port and no Fixed Length in mins attribute.

Plays a sound from values alone, with no audio file. Studio plays it on the default audio output device while the Experience window is open. To change its volume, use a Volume Control node in Tone mode, with the Tone Generator’s name in Node.

Port Direction Type Meaning
Instrument Input Channels 0 sine wave, 1 clarinet, 2 flute, 3 guitar, 4 sitar. Not connected means sine wave.
Frequency Input Channels The tone’s frequency in Hz. Required: no sound without it.
Amplitude Input Channels How strongly a note is played. Not connected means 1. Clarinet and flute cap it at 1. It has no effect on the sine wave.
Delay Input Channels Seconds between new notes, or between frequency updates for the sine wave. Not connected means 1.
Enabled Input Channels Plays while the value is 1 or more. Not connected means always on.

This node has no attributes. The input channels must be synchronized to the engine. Otherwise the node shows the error “Input channel is not synchronized to engine.”

This category contains mathematical functions and methods: Function, Operation, Compare, Logic, Remap, Channel Math, Statistics and Integral. Threshold and Auto Threshold are in the Bio category.

A node with no connected input does not run.

Function, Operation, Compare, Logic, Remap, Statistics and Integral process each channel separately, so they output one channel for each input channel. On nodes with several inputs, a port with one channel is paired with every channel of the other port. Two ports with several channels must have the same number of channels. Otherwise the node reports “Sizes of input multichannels are incompatible.” Mixing channels from synchronized and independent sources gives the error “Input channels are incompatible. Must be either synced or independent.”

Function Node Icon

Applies a mathematical function to every sample of its input, for example sine() or abs().

Function Node

Port Direction Type Meaning
x Input Channels The input value.
Output (named after the function, Sine by default) Output Channels The result, at the same sample rate as the input.
Attribute Values Default What it does
Math Function See the table below Sine The function applied to x.
Math Function Output
Sine, Cosine, Tan The trigonometric function, with x in radians.
Square x × x
Square Root √x. Outputs 0 if x is 0.000001 or less.
Absolute The value of x without its sign.
Floor, Ceil x rounded down, or rounded up, to a whole number.
One Over X 1 / x. Outputs 0 if x is 0.000001 or less, so negative inputs also give 0.
Inverse Square Root 1 / √x. Outputs 0 if x is 0.000001 or less.
Natural Log, Log Base 10 The logarithm of x. Outputs 0 if x is 0.000001 or less.
Exponent e to the power of x.
Fraction The part of x after the decimal point. It keeps the sign of x.
Sign -1 if x is negative, 1 if x is positive, 0 if x is 0.
Is Positive 1 if x is 0 or greater, otherwise 0.
Is Negative 1 if x is below 0, otherwise 0.
Is Near Zero 1 if x is between -0.000001 and 0.000001, otherwise 0.
Random Float A new random number between 0 and x for each sample.
Radians to Degrees, Degrees to Radians x converted between the two units.
Smooth Step Cosine [0..1] x limited to 0 to 1, then (1 - cos(π × x)) / 2.
Smooth Step Poly [0..1] x limited to 0 to 1, then x² × (3 - 2 × x).
Arc Cosine, Arc Sine, Arc Tan The inverse trigonometric function, in radians.

Any result that is not a valid number outputs 0. This includes Arc Cosine and Arc Sine of a value outside -1 to 1.

In 1.7.3: Invalid results are passed on as they are, not replaced by 0. For inputs above 1, Smooth Step Poly returns 3 - 2 × input, not 1.

Operation Node Icon

Combines two values, for example by adding or multiplying them.

Operation Node

Port Direction Type Meaning
x Input Channels First value.
y Input Channels Second value.
Output (named after the function, x + y by default) Output Channels The result.

Connect at least one of x and y. Second Value stands in for the other.

Attribute Values Default What it does
Math Function Add, Subtract, Multiply, Divide, Average, Random Float, Mod, Minimum, Maximum, Power Add The operation to apply.
Second Value Any number 1 Used for x or y when that port has no connection.
Math Function Output port name Output
Add x + y The sum.
Subtract x - y The difference.
Multiply x * y The product.
Divide x / y The quotient. Outputs 0 if y is within 0.000001 of 0.
Average Average (x + y) / 2
Random Float Random[x..y] A new random number between x and y for each sample.
Mod x MOD y The remainder of x / y, with the sign of x. Outputs 0 if y is within 0.000001 of 0.
Minimum Min(x, y) The smaller value.
Maximum Max(x, y) The larger value.
Power Pow(x, y) x to the power of y. Outputs 0 if x is within 0.000001 of 0 and y is negative, or if x is negative and y is not a whole number.

If both ports are connected, they need the same sample rate, or exactly one of them must be non-uniform (sample rate 0). Otherwise the node reports “Input sample rates are incompatible.” Two non-uniform channels also give this error. A non-uniform channel works as a held value: the node uses its last received sample, or Second Value until a first sample arrives. The output runs at the rate of the other channel.

In 1.7.3: A negative x with a non-integer y is not caught, so Power outputs an invalid number, not 0.

Compare Node Icon

Compares two values and outputs a value based on the result. You can compare two channels, or one channel against a fixed value.

Compare Node

Port Direction Type Meaning
x Input Channels First value.
y Input Channels Second value.
Output (named after the function, x == y by default) Output Channels The result, chosen by the return modes.
Attribute Values Default What it does
Function Equal to (x == y), Greater than (x > y), Less than (x < y), Grt. or Equal (x >= y), Less or Equal (x <= y), Inequal to (x != y) Equal to (x == y) The comparison to make.
Second Value Any number 0 Used for x or y when that port has no connection.
True Return Mode Return True Value, Return X, Return Y Return True Value What to output when the comparison is true.
Result when True Any number 1 The output when the comparison is true. Shown only with Return True Value.
False Return Mode Return False Value, Return X, Return Y Return False Value What to output when the comparison is false.
Result when False Any number 0 The output when the comparison is false. Shown only with Return False Value.

Equal to and Inequal to treat two values as equal when they are within 0.000001 of each other. If both ports are connected, they need the same sample rate. Otherwise the node reports “Input sample rates are incompatible.”

Logic Node Icon

Provides boolean operations. An input of exactly 0 counts as false, and every other value counts as true.

Logic Node

Port Direction Type Meaning
x Input Channels First value.
y Input Channels Second value.
Output (named after the function, x AND y by default) Output Channels Float Result when True or Float Result when False.
Attribute Values Default What it does
Logic Function AND, OR, XOR AND The logic function to use.
Second Value False, True False Intended for x or y when that port has no connection. See the note below.
Float Result when True Any number 1 The output when the expression is true.
Float Result when False Any number 0 The output when the expression is false.

The code does not apply the Second Value setting. An unconnected port always counts as false, even with True selected. So with only one port connected, AND always gives the false result, and the result of OR and XOR depends only on the connected input. To get a true second value, connect a Parameter node to the port, with Value set to 1 and Sample Rate set to the rate of the other input.

If both ports are connected, they need the same sample rate. Otherwise the node reports “Input sample rates are incompatible.”

Remap Node Icon

Maps a value from one range to another with a linear transform.

Port Direction Type Meaning
x Input Channels The value to remap. Required. Studio can show the input range as this port’s name, for example [0, 1].
In Max Input Channels Replaces Input Max when connected.
In Min Input Channels Replaces Input Min when connected.
Out Max Input Channels Replaces Output Max when connected.
Out Min Input Channels Replaces Output Min when connected.
Out Output Channels The remapped value. Studio can show the output range as this port’s name.
Attribute Values Default What it does
Input Min Any number 0 This input value maps to Output Min.
Input Max Any number 1 This input value maps to Output Max.
Output Min Any number 0 The output for an input of Input Min.
Output Max Any number 1 The output for an input of Input Max.
Clamp Output On, off Off Limits the output to the range between Output Min and Output Max.

With Clamp Output off, values outside the input range are not clipped. They continue along the same line, so the output can go beyond Output Min and Output Max. For example, with an input range of 0 to 1 and an output range of 0 to 100, an input of 2 gives 200. With Clamp Output on, the same input gives 100.

If Input Min and Input Max are within 0.000001 of each other, the output is Output Min. All connected ports need the same sample rate. Otherwise the node reports “Input sample rates are incompatible.”

Channel Math Node Icon

Applies a mathematical operation across several channels, for example to calculate the average of a list of signals. The result is one output channel.

Channel Math Node

Port Direction Type Meaning
In Input Channels Input channels. Every channel on every connected port counts. Ports are added as you connect signals, and one free port stays available. Unneeded free ports at the end are removed.
Output (named after the function, Sum by default) Output Channels One channel with the result, at the input sample rate.
Attribute Values Default What it does
Math Function Sum, Product, Average, Minimum, Maximum, Harmonic Mean, Geometric Mean, Root Mean Square, Sum of Squares Sum The function applied to the channels, one set of samples at a time.

Harmonic Mean outputs 0 if any value is within 0.000001 of 0, or if the reciprocals of the values add up to about 0. Geometric Mean outputs 0 if any value is 0 or negative.

All input channels need the same sample rate. Otherwise the node reports “Input sample rates are incompatible.”

In 1.7.3: Geometric Mean checks only the product of the values, so an even number of negative values gives a result other than 0. Harmonic Mean outputs 0 only when a value is exactly 0 or the reciprocals add up to exactly 0.

Statistics Node Icon

Calculates a statistic of each channel over an interval in the time domain.

Statistics Node

Port Direction Type Meaning
In Input Channels The values to analyse.
Output (named after the statistic, Mean by default) Output Channels The statistic over the interval.
Attribute Values Default What it does
Interval Type Duration, Sample Count Duration Whether you set the interval in seconds or in samples.
Length (Seconds) 0 or higher 1 The interval length. Shown only with Duration.
Length (Samples) 0 or higher 100 The interval length. Shown only with Sample Count.
Statistic See the table below Mean The statistic to calculate.
Percentile 0 to 100 95 Which percentile to calculate. Shown only with the Percentile statistic. Any fractional part is dropped.
Epoching On, off Off Off gives one result per input sample, over a sliding interval, at the input sample rate. Disable epoching if you want fast feedback. On gives one result per complete interval, with no overlap, at the input sample rate divided by the number of samples in the interval.
Zero Padding On, off Off Controls what the node outputs before a full interval has arrived. With Epoching Off: Off outputs 0. On outputs results straight away. Early results can be calculated with zeros in place of samples not yet read, so they are approximate. With Epoching On, the first result arrives after one full interval but doesn’t yet cover one: it is 0 with Zero Padding Off, and calculated mostly from zeros with Zero Padding On. Later results each cover a full interval, ending about one interval before the newest sample.
Statistic Output port name Result
Minimum Min The smallest value.
Maximum Max The largest value.
Range Range Largest minus smallest value.
Mean Mean The average.
Median Median The middle value. With an even number of samples, the average of the two middle values.
Variance Variance The sample variance, dividing by the number of samples minus 1. Outputs 0 for a single sample.
Standard Deviation Std.Dev. The square root of Variance.
RMS Unknown The root mean square. The port name reads Unknown for this statistic.
Percentile P The chosen percentile, interpolated linearly between the two nearest values.
Sum of Elements Sum The sum.
Product of Elements Product The product.
Harmonic Mean Harm. The number of samples divided by the sum of the reciprocals. Outputs 0 if any value is exactly 0.
Geometric Mean Geom. The nth root of the product, for n samples. Outputs 0 if the product is 0 or negative.

With Duration, the interval has as many samples as the sample rate times Length (Seconds), rounded up. The input must have a fixed sample rate, otherwise the node reports “Input must have a valid sample rate.” Sample Count has no such check.

A length of 0 gives an empty interval, and the node does not start, so it has no output.

While a session is paused, the node keeps reading samples but outputs the last value calculated before the pause. See Running a session.

In 1.7.3: Statistics keeps calculating during a pause. Variance and Standard Deviation divide by the number of samples, not by the number of samples minus 1. Median and Percentile pick one sorted value and do not interpolate. Product of Elements and Geometric Mean always output 0. Protocols tuned on 1.7.3 can behave differently. See What changed since 1.7.3.

Adds up its input over time, as a running total. It sums each sample divided by the sample rate, so a constant input of 1 grows by 1 per second. The node is useful for scores that build up over a session.

Port Direction Type Meaning
In Input Channels The value to integrate. It must have a fixed sample rate, otherwise the node reports “Input must have a valid sample rate.”.
Out Output Channels The running total, one output sample per input sample.

The node has no attributes. The total starts at 0 and returns to 0 when the node reinitialises.

While a session is paused, the node keeps reading samples but does not add them, and it keeps outputting the same total. See Running a session.

In 1.7.3: The total keeps growing during a pause.

This category contains the digital signal processing nodes: spectrum analysis, filters and signal generators. All of them are in the DSP tab of the palette except Select Bins, which you add from the right-click menu.

Nodes that process a signal run once per input channel, so a multichannel input gives a multichannel output.

FFT Node Icon

Calculates a one-sided magnitude spectrum from each epoch of the input signal. Use it in front of Frequency Band, Dominant Frequency or Select Bins. The output is a magnitude spectrum, not a power spectral density.

FFT Node

Port Direction Type Meaning
In Input Channels Signal to analyse. It needs a constant sample rate.
Out (Spectrum) Output Spectrum One spectrum per Window Shift samples.
Attribute Values Default What it does
FFT Order 2 to 20 9 Sets the epoch length to 2^order samples. The default is 512 samples, which gives 257 bins.
Window Function Rectangular, Triangular, Welch, Hann, Hamming, Blackman, Nuttall, Blackman-Nuttall, Blackman-Harris, Flat top, Cosine, Gaussian, Bartlett-Hann, Hann-Poisson, Lanczos Hann Window applied to every epoch before the FFT. Bin values are compensated for the window’s gain.
Window Shift 1 to 1024 1 Samples the window advances between epochs. The output rate is the input rate divided by this value.
Zero Padding On, off Off Off: an incomplete epoch contains only zeros, and the node reports a delay of one full epoch. On: missing samples count as zero, so the input is used from the first sample and the node reports no delay.

Bin spacing is the sample rate divided by 2^order. At 256 Hz and order 9, the epoch lasts 2 seconds and the bins are 0.5 Hz apart.

The node removes the mean of each epoch before it applies the window. This is built in, with no node or attribute to change it.

If the input has no constant sample rate, the node shows the error “Input must have a valid sample rate.”

In 1.7.3: FFT Order defaults to 7. The Window Function setting is stored, but no code path applies it. The epoch mean is not removed. Bins are scaled differently. Thresholds tuned on 1.7.3 spectra may behave differently in 1.8.2. See What changed since 1.7.3.

IIR/FIR Filter Node Icon

Generates a lowpass, highpass, bandpass or bandstop filter from the settings you choose. Only the Butterworth method is implemented.

IIR/FIR Filter Node

Port Direction Type Meaning
In Input Channels Signal to filter. It needs a constant sample rate.
Out Output Channels Filtered signal, at the input sample rate.
Attribute Values Default What it does
Filter Type Lowpass, Highpass, Bandpass, Bandstop Lowpass Shape of the filter. It also decides which frequency sliders appear.
Filter Method Bessel, Butterworth, Chebyshev I, Chebyshev II, Elliptic, Hann, Hamming, Blackman, Sinc Butterworth Filter design. Keep it on Butterworth.
Filter Order 1 to 10 3 Order of the filter.
Low Cut Frequency 0 to 100 Hz 7 Corner of a lowpass, or the lower edge of a bandpass or bandstop. Shown for Lowpass, Bandpass and Bandstop.
High Cut Frequency 0 to 100 Hz 12 Corner of a highpass, or the upper edge of a bandpass or bandstop. Shown for Highpass, Bandpass and Bandstop.

Any Filter Method other than Butterworth produces no output. The node sets the warning “<method> filter is not implemented”, for example “Elliptic filter is not implemented”. 1.7.3 has the same limit.

For Bandpass and Bandstop, the Low Cut Frequency is kept below the High Cut Frequency. The code does not limit the cut-offs to half the input sample rate, so keep them below that value yourself.

If an output value is invalid or larger than 10,000,000, the node shows the error “Filter is unstable.” The error clears when the output is back in range. Invalid or very large results are output as 0.

In 1.7.3: The filter’s internal history has no guard against invalid results. With Filter Type set to Highpass, the cutoff is Low Cut Frequency, which the node hides for this type. High Cut Frequency has no effect. To see the value in use, switch Filter Type to Lowpass, then switch back. See What changed since 1.7.3.

Frequency Band Node Icon

Averages the spectrum bins within a frequency range into one value per spectrum. Attach it behind an FFT node to calculate things like Alpha magnitude.

Frequency Band Node

Port Direction Type Meaning
In (Spectrum) Input Spectrum Spectrum to read.
Max Frequency Input Channels Upper bound in Hz. Shown only with Band set to Custom (Dynamic Input).
Min Frequency Input Channels Lower bound in Hz. Shown only with Band set to Custom (Dynamic Input).
Out Output Channels One value per input spectrum.
Attribute Values Default What it does
Value Average Amplitude, Average Power, Average Phase Average Amplitude What is averaged across the bins in range. Average Power averages the squared magnitudes.
Band Delta, Theta, Alpha, SMR, Beta, Gamma, Custom (Fixed), Custom (Dynamic Input) Delta Preset range or custom range. Editing a frequency while a preset is selected switches Band to Custom (Fixed).
Upper Frequency 0 to 200 Hz 3.9 Upper bound of the range.
Lower Frequency 0 to 200 Hz 0.5 Lower bound of the range. If it is above Upper Frequency, it is set to Upper Frequency.
Wizard Selectable On, off Off Offers this node by name in the band list of the Experience Wizard, for Select Channels nodes that have this node on their inputs.
Band Range
Delta 0.5 to 3.9 Hz
Theta 4 to 7.9 Hz
Alpha 8 to 12 Hz
SMR 13 to 16 Hz
Beta 16 to 30 Hz
Gamma 32 to 100 Hz

Both bounds are inclusive. If no bin falls within the range, the output is 0. This can happen when the range is narrower than the FFT’s bin spacing.

With Custom (Dynamic Input), each port uses the last sample of its first channel. A port with no connection or no sample leaves that bound at its attribute value.

Gamma: In the code, selecting Gamma does not load its range, and the frequencies stay as they were. Set Upper Frequency to 100 first, then Lower Frequency to 32. If you set Lower first, it is clamped to the current Upper Frequency. Band switches to Custom (Fixed) with the first edit, so the next note applies.

Custom (Fixed): While Band is already Custom (Fixed), slider edits may not reach the running node until the classifier next reinitialises, for example at the start of a session.

Average Phase: Do not rely on this value. In 1.8.2 the FFT node outputs magnitudes only, so there is no phase in its spectrum to average.

In 1.7.3: The FFT node keeps complex bin values, so Average Phase has phase data to read. Amplitude and Power values use the older FFT scaling, so they differ from 1.8.2.

Dominant Frequency Node Icon

Outputs the frequency of the strongest spectrum bin within a range, in Hz.

Dominant Frequency Node

Port Direction Type Meaning
In (Spectrum) Input Spectrum Spectrum to read.
Out Output Channels Frequency in Hz, one value per input spectrum.
Attribute Values Default What it does
Preset Delta, Theta, Alpha, SMR, Beta, Gamma, Custom Delta Loads a preset range. The ranges are listed under Frequency Band. Editing a frequency switches Preset to Custom.
Lower Frequency 0 to 200 Hz 0.5 Lower bound of the range. If it is above Upper Frequency, it is set to Upper Frequency.
Upper Frequency 0 to 200 Hz 3.9 Upper bound of the range.

The 0 Hz bin is never chosen. The output is 0 if no bin in the range has a magnitude above 0.

In 1.7.3: Lower and Upper Frequency are cut to whole Hz when the node applies them.

Biquad Filter Node Icon

A filter you define directly with biquad coefficients.

Biquad Filter Node

Port Direction Type Meaning
In Input Channels Signal to filter.
Out Output Channels Filtered signal, at the input sample rate.
Attribute Values Default What it does
B0, B1, B2 Number, typed as text 0.0 Feed-forward coefficients.
A1, A2 Number, typed as text 0.0 Feedback coefficients.
Gain Number, typed as text 1.0 The input is divided by this value. 0 is treated as 1.

The node calculates:

y[n] = B0*x[n] + B1*x[n-1] + B2*x[n-2] - A1*y[n-1] - A2*y[n-2], where x is the input divided by Gain.

With the defaults, all B coefficients are 0, so the output is 0 until you set them.

The node shows the error “Filter coefficients produce unstable poles” when |A2| >= 1 or |A1| >= 1 + A2. It shows “Filter output has diverged” when the output is invalid or above 1E12. Invalid or very large results are output as 0.

In 1.7.3: There is no coefficient check. The only error is “Filter is unstable”, shown when the output is above 10,000,000. A Gain of 0 is not treated as 1.

Select Bins Node Icon

Gives access to individual spectrum bins as ordinary signal channels, for example to process all bins with a Channel Math node.

Note: The code flags this node as unstable, so production builds hide it from the palette. To add it, right-click in the graph and use the Add Node menu. The same applies in 1.7.3.

The image shows the node with Use Multichannel off, with one port per bin.

Select Bins Node

Port Direction Type Meaning
Spectrum Input Spectrum Spectrum to read.
Bins, or Bins Ch0, Bins Ch1 and so on Output Channels Use Multichannel on: one port per input channel, each holding one channel per bin. Each channel is named after its bin frequency.
One port per bin, named by frequency, such as 8.0Hz Output Channels Use Multichannel off: each port holds that bin from every input channel.
Attribute Values Default What it does
Use Multichannel On, off On Bundles the selected bins into one multichannel output instead of one port per bin.
Lower Frequency 0 to 200 Hz 0 Lower end of the selection. If it is above Upper Frequency, it is set to Upper Frequency.
Upper Frequency 0 to 200 Hz 128 Upper end of the selection. A value above the spectrum’s top frequency selects the last bin.
Lock Ports On, off Off Keeps the existing output ports when the node starts, instead of rebuilding them from the spectrum layout.

Each bound selects the nearest bin. The node waits for the first spectrum to learn the layout, and it builds its output ports from that.

If input channels have different spectrum layouts, only the first channel is used, and the node shows no error.

In 1.7.3: Lower and Upper Frequency are cut to whole Hz when the node applies them, and each bound then selects the bin at or below it, not the nearest one.

Generates a sine, square, triangle or sawtooth signal at a fixed sample rate.

Port Direction Type Meaning
Amplitude Input Channels Optional. Overrides the Amplitude attribute.
Frequency Input Channels Optional. Overrides the Frequency attribute, in Hz.
Phase Input Channels Optional. Overrides the Phase attribute.
Out Output Channels Generated signal, at Sample Rate.
Attribute Values Default What it does
Sample Rate Above 0 Hz 128 Output sample rate. Changing it resets the node.
Waveform Sine, Square, Triangle, Sawtooth Sine Shape of the signal.
Amplitude Any number 1 Peak-to-peak height. The output swings between -Amplitude/2 and +Amplitude/2.
Frequency Above 0 Hz 440 Signal frequency.
Phase -180 to 180 0 Offset added to the waveform’s phase.

Set Frequency or Sample Rate before use. The default 440 Hz is above half of the default 128 Hz sample rate, so the output aliases and is not a true 440 Hz signal.

Connect at least one input. In the code, the number of output channels follows the largest connected input, so with nothing connected the node creates no output channel. Unconnected inputs use their attribute values.

Connected inputs are read once per update, and the last sample is used. Until an input has a sample, the attribute value applies.

Phase is added to the waveform without any conversion, in radians, although the attribute range looks like degrees.

Plays a waveform that you define as text, with value and duration pairs.

Port Direction Type Meaning
Activate Input Channels Starts or gates playback, depending on Play Mode.
Out Output Channels Generated signal.
Attribute Values Default What it does
Sample Rate Above 0 Hz 128 Output sample rate.
Waveform Text, value1:duration1;value2:duration2;... Empty The waveform. Durations are in seconds. A missing duration counts as 0.
Waveform Type Steps, Linear Steps Steps holds each value. Linear interpolates between values.
Play Mode Play Always and Forever; Play Once if sample received; Play Once if Input > 0.0; Play While Input > 0.0 Play Always and Forever When the waveform plays. See below.
Continuous Output On, off On On: a constant sample rate stream, with 0.0 while nothing plays. Off: bursts of samples with no constant sample rate.
Play Mode Behaviour
Play Always and Forever Loops continuously. The value on Activate is ignored.
Play Once if sample received Plays once when any sample arrives on Activate. Another sample after it ends starts it again.
Play Once if Input > 0.0 Plays once when the last Activate sample is above 0. It can play again after the input has dropped to 0 or below.
Play While Input > 0.0 Loops while the last Activate sample is above 0.

If Waveform is empty, or its durations add up to 0, the node does not start and produces no output.

Connect Activate in every Play Mode. In the code, the number of output channels follows the connected input, so with nothing connected the node creates no output channel.

Note: In the code, playback reads a timing table that is never filled, so this node may output only 0, whatever Waveform contains. 1.7.3 has the same code. Check the output in a View node before you rely on it.

This category contains the nodes for biofeedback and bio signal analysis.

HRV Node Icon

Calculates a heart rate variability metric from RR intervals. It recalculates over a sliding window each time a new RR interval arrives.

Port Direction Type Meaning
RR Input Channels RR intervals, one value per heartbeat. See the note on units below.
Output, named after the selected Method (RMSSD by default) Output Channels The metric. One value per input value, with no fixed sample rate.
Attribute Values Default What it does
Method RMSSD, SDSD, EBC, RR50, pRR50, pRR20 RMSSD The metric to calculate. See the table below.
Number of RR Intervals 2 or higher 10 How many RR intervals the sliding window holds. A window of N intervals has N-1 successive differences.
Method Output
RMSSD Root mean square of the successive differences.
SDSD Standard deviation of the successive differences.
EBC Estimated breath cycle: the largest minus the smallest RR interval in the window.
RR50 Number of successive differences larger than 50 ms, in either direction.
pRR50 RR50 divided by the number of differences. This is a fraction from 0 to 1, not a percentage.
pRR20 Like pRR50, with a limit of 20 ms.

In 1.7.3: RR50, pRR50 and pRR20 count a difference only when an interval is longer than the next one. 1.8.2 counts both directions, so these values can differ between versions.

Notes:

  • Units: RR50, pRR50 and pRR20 compare differences with 0.05 and 0.02, so they expect RR intervals in seconds. The RR-Interval output of the Heartrate node is labelled ms and carries the raw sensor value, which standard Bluetooth LE heart rate sensors report in units of 1/1024 second. Scale it to seconds first, for example with a Remap node set to Input Min 0, Input Max 10240, Output Min 0, Output Max 10. RMSSD, SDSD and EBC use the unit of their input.
  • Start of a session: until the window is full, RMSSD, SDSD, RR50, pRR50 and pRR20 count the missing values as 0, and EBC uses only the intervals received so far, so the first outputs are not meaningful.
  • Chaining: the output has no fixed sample rate, so it can’t connect directly to a node that requires one, such as Threshold.
  • Availability: the node has no platform limit. Heart rate input depends on the sensor and the driver, which is off by default. See Bluetooth Smart Heart Rate Sensors.

Threshold Node Icon

Compares its input with a threshold or a range. It reports how much of a recent interval passed the comparison, and whether the newest sample passes. Use it to turn a signal into a reward or inhibit value.

Port Direction Type Meaning
In Input Channels The signal to compare. Required.
Thresh Input Channels Overrides the Threshold attribute. Named Low when Use Range is on, where it overrides Low Threshold.
High Input Channels Overrides High Threshold. Shown only when Use Range is on.
% Passed Output Channels Samples that passed, divided by all samples in the interval. This is a fraction from 0 to 1. The interval slides by one sample, so there is one value per input sample.
Augment Output Channels Based on the newest sample only. With a single threshold: 1 if it passes, otherwise 0. With a range: if it passes, its position in the range, mapped from Low to High onto 0 to 1; otherwise 0.
Inhibit Output Channels 1 minus Augment.
Attribute Values Default What it does
Interval Length 0 to 30 seconds 1 The length of the interval behind % Passed. Do not use 0. See the notes.
Use Range On, off Off Compares with a range instead of a single threshold.
Threshold (Low Threshold when Use Range is on) Any number 0.5 The threshold, or the lower end of the range. Used while the matching port has no connection.
High Threshold Any number 0.8 The upper end of the range. Used while the High port has no connection. Shown only when Use Range is on.
Compare Function (single threshold) Equal to, Greater than, Less than, Grt. or Equal, Less or Equal, Inequal to Greater than How a sample x is compared with the threshold T. Shown only when Use Range is off.
Compare Function (range) Within Range (exclusive), Within Range (inclusive), Outside Range (exclusive), Outside Range (inclusive) Within Range (inclusive) How a sample x is compared with the range from L to H. Shown only when Use Range is on.

The range functions work as follows:

Function A sample passes when
Within Range (exclusive) L < x < H
Within Range (inclusive) L <= x <= H
Outside Range (exclusive) x < L or x > H
Outside Range (inclusive) x <= L or x >= H

In 1.7.3: Choosing a range function doesn’t reliably apply it, because the code reads the single-threshold Compare Function instead. With the default Compare Function (Greater than), Outside Range acts as Within Range (inclusive). If that function is Less than or Grt. or Equal, Outside Range never passes for a valid range. With a single threshold, the attribute keeps the label Low Threshold.

Notes:

  • Interval Length 0: Studio’s tooltip says 0 gives an infinite interval. The code doesn’t do that: with 0, the node produces no output.
  • Start of a session: during the first Interval Length, the node compares zeros instead of the signal. With a function such as Less than, the outputs can show a pass before real data is evaluated.
  • Outside Range and Augment: the mapping onto 0 to 1 is not clamped. A sample that passes outside the range gives an Augment value below 0 or above 1, and Inhibit moves with it.
  • Turning Use Range off: this removes any connection to the High port.
  • Multiple channels: each input channel gets its own comparison. A threshold port must have one channel, or the same number of channels as In.

Errors:

Message Cause
Input must have a valid sample rate. An input has no fixed sample rate, for example the output of an HRV node.
Input channel is not synchronized to engine. An input is not synchronized to the Engine.
Sizes of input multichannels are incompatible. The channel counts of the ports don’t match.

Adapts a threshold to the recent signal, so that feedback stays at a target level as the signal changes. You set one threshold and a target. The node learns the signal’s distribution over a sliding window and calculates the other threshold.

Port Direction Type Meaning
Signal Input Channels The signal to learn from. Required.
Target Input Channels The target as a value from 0 to 1. Required. See the Target attribute.
High Input Channels The fixed high threshold. Connecting it makes the node calculate the low threshold.
Low Input Channels The fixed low threshold. Connecting it makes the node calculate the high threshold.
High Output Channels The high threshold, fixed or calculated.
Low Output Channels The low threshold, fixed or calculated.

Connect exactly one of the High and Low inputs. The outputs run at the sample rate of the Target port, not of the Signal port. You can feed Target and the fixed threshold from Parameter nodes, and connect the outputs to the Low and High ports of a Threshold node.

Attribute Values Default What it does
Number of Bins 100 or higher 10000 The resolution of the histogram that holds the signal’s distribution. More bins give finer threshold steps.
Sample Count 2 or higher 128 The window size, in samples of the Signal port. The window in seconds is Sample Count divided by the signal’s sample rate, so the default is 1 second at 128 Hz.
Target Average Score, Trigger Ratio Average Score How the Target port is interpreted. See below.
Invert Target On, off Off Uses 1 minus the Target input.
Threshold Input Absolute, Relative Relative How the fixed threshold input is interpreted. See below.

Studio shows no tooltips for these attributes.

Target modes. The node moves the calculated threshold away from the fixed one, and stops at the first position that reaches the target.

Mode The target is reached when
Average Score The average distance of the samples from the calculated threshold, as a fraction of the gap between the two thresholds, reaches Target. Samples outside the two thresholds count as 0.
Trigger Ratio The share of samples in the window that lie between the two thresholds reaches Target.

If the target can’t be reached, the calculated threshold stops at the edge of the histogram.

Threshold Input modes.

Mode Fixed threshold
Absolute The input value itself.
Relative E + E x input, where E is the highest sample value in the window for the High input, or the lowest for the Low input. An input of 0 uses E itself. An input of 0.1 moves the threshold by 10% of E, so the direction depends on the sign of E.

Notes:

  • Start of a session: the calculated threshold is 0 until Sample Count samples have arrived. In Relative mode, the fixed threshold is 0 as well.
  • Changing an attribute: this restarts the node, and the learned distribution is lost.
  • Session pause: while a session is paused, the histogram is held, so the thresholds stop adapting. The node keeps producing output. After the pause, it rebuilds the histogram from one full window.
  • Multiple channels: each Signal channel gets its own histogram and outputs. Target and the threshold input must have one channel, or the same number of channels as Signal. Otherwise the node doesn’t run.

In 1.7.3: The thresholds keep adapting during a session pause. The histogram is also rebuilt from the newest window on nearly every update, rather than updated sample by sample.

Errors:

Message Cause
Sizes of input multichannels are incompatible. Two connected ports both have more than one channel, and the counts differ.
Missing threshold input Neither High nor Low is connected, or Signal has one channel and the connected threshold port has several.
More than one threshold defined Both High and Low are connected.
Samplerates of control ports don’t match The sample rate of Target differs from that of the connected threshold port.

The node also doesn’t run without valid Signal and Target inputs, and shows no specific message for that.

This category contains utility nodes and nodes for channel management. The View node sits in the Output category.

Unless a section says otherwise, a node handles each channel of its input separately.

Smoothing Node Icon

Removes noise and steps from a signal by moving its output gradually towards each new input value. Don’t use it as a lowpass filter. Use the IIR/FIR Filter node for that.

Smoothing Node

Port Direction Type Meaning
In Input Channels Signal to smooth.
Out Output Channels Smoothed signal, same sample rate.
Attribute Values Default What it does
Interpolation Speed 0 to 1 0.75 How quickly the output follows the input. 0 holds the output at its current value. 1 passes the input through unchanged.
Start Value Any number 0 Output value that interpolation starts from.

The speed is divided by the sample rate for each sample. At 128 Hz and 0.75, each output sample moves about 0.6% of the way to the input, so the output takes roughly 1 / speed seconds to catch up. The speed therefore behaves as a rate per second, and values just below 1 smooth far more than 1 does.

The input needs a fixed sample rate. With a variable rate input, the node logs “Invalid sample rate” and produces no output.

In 1.7.3: The node has no check for a variable rate input.

Delay Node Icon

Delays a signal by a time or a number of samples. The node outputs 0 until the delay is reached.

Delay Node

Port Direction Type Meaning
In Input Channels Signal to delay.
Out Output Channels Delayed signal. The port label shows the delay, for example 23.00s or 100 smpl.
Attribute Values Default What it does
Set by Time On, off On On: the delay is set in seconds, so it stays the same if the sample rate changes. Off: the delay is set in samples.
Delay (Seconds) 0 or higher 0 Delay time. Shown only when Set by Time is on.
Delay (Samples) 0 or higher 0 Number of samples. Shown only when Set by Time is off.

With Set by Time on, the input needs a fixed sample rate, or the node shows the error “Input must have a valid sample rate.” The delay is rounded to the nearest whole sample, and Delay (Seconds) is updated to the rounded value.

Resample Node Icon

Changes the sample rate of a signal.

Resample Node

Port Direction Type Meaning
In Input Channels Signal to resample.
Out Output Channels Signal at the target sample rate.
Attribute Values Default What it does
Sample Rate Above 0 Hz 128 Target sample rate.
Mode Realtime Realtime Read only. The field cannot be changed, so the node always uses Realtime.

What the node does depends on the input:

  • Input already at the target rate: samples are forwarded unchanged.
  • Input with a fixed rate: each output sample takes the most recent input sample at that time. No lowpass filtering is applied, so filter the signal first if you downsample.
  • Input with a variable rate: the node repeats the latest input value at the target rate.

Freeze Node Icon

Holds a signal at one value after a set time or number of samples.

Freeze Node

Port Direction Type Meaning
In Input Channels Signal to freeze.
Out Output Channels Input before the freeze, then the frozen value. The port label shows the delay, for example 15.00s or 100 smpl.
Attribute Values Default What it does
Delay Type Duration, Sample Count Duration How the delay is set.
Delay (Seconds) 0 or higher 1 Freeze after this much data. Shown only for Duration.
Delay (Samples) 0 or higher 100 Freeze after this many samples. Shown only for Sample Count.
Pass Through On, off On On: forward the input until the freeze. Off: output 0 until the freeze. With a variable rate input, output nothing until the freeze.

The frozen value is the input sample at the moment the delay is reached. After that, the node outputs the frozen value for every input sample until the node is reset.

With Delay Type set to Duration, the input needs a fixed sample rate, or the node shows the error “Input must have a valid sample rate.” The delay is rounded to the nearest whole sample.

Merge Channels Node Icon

Combines several single channels or multichannels into one multichannel.

Merge Channels Node

Port Direction Type Meaning
In (one or more) Input Channels Signals to merge. The node always keeps one free In port and adds another when you connect the last one.
Out Output Channels All input channels in one multichannel, with their names, ranges and colors kept.

This node has no attributes you can set.

All inputs must have the same sample rate, or the node shows the error “Input sample rates are incompatible.”

Select Channels Node Icon

Picks channels out of a multichannel, by name or by position, and gives you access to them separately or as a smaller multichannel.

Select Channels Node

Port Direction Type Meaning
In Input Channels Multichannel to select from.
One port per selected channel Output Channels The selected channel. Each port is labelled with its channel name. Ports are labelled - until the node has started.
Out Output Channels With Single Output on, replaces the ports above and carries all selected channels.
Attribute Values Default What it does
Channels Comma-separated list * Channels to use, see below. An empty list selects nothing.
Single Output On, off Off Puts all selected channels into one multichannel on one port.
Quick Config On, off Off Lets users choose the channels outside the graph, see below.

Each entry in Channels can be one of these:

  • * as the first entry: all input channels.
  • A channel name, such as Fp1: the first channel with exactly that name.
  • A number, such as 2: the channel at that position, counting from 1.
  • *text*: every channel whose name contains text.

If a name or number matches nothing, the node shows the error “Channel ‘name’ not found” and that output carries 0. Wildcard entries that match nothing cause no error.

With Quick Config on, the node can be configured in the Experience Wizard. To open the wizard, click Select User, select a user in the list, then click Create Protocol. These controls are not available on every account. The Session Control window also shows up to four Channels dropdowns that list the input channels. Your choice is applied to the first Select Channels node in the classifier with Quick Config on. The 2D Spectrogram window ticks the channels this node selects.

In 1.7.3: The 2D Spectrogram window doesn’t follow this selection. Also, if no channel is selected when the node starts, it removes its output ports and their connections.

Swaps the two dimensions of a set of multichannels. For example, connect one multichannel per frequency band, each with channels Fp1 and Fp2. The output is one multichannel per electrode, each holding all bands.

Port Direction Type Meaning
In (one or more) Input Channels Multichannels to transpose. The node always keeps one free In port and adds another when you connect the last one.
One port per input channel position Output Channels The channel at that position from every connected input. Each port is labelled with the channel name from the first input.

This node has no attributes you can set.

Each output channel is named after its source node and channel, for example Alpha Fp1.

All connected inputs must have the same number of channels, or the node shows the error “All inputs must have equal number of channels.” They must also have the same sample rate, or it shows “Input sample rates are incompatible.”

Rename Node Icon

Renames channels, or adds text before or after their names.

Rename Node

Port Direction Type Meaning
In Input Channels Signal to rename.
Out Output Channels Same samples, with new channel names.
Attribute Values Default What it does
Channel Names Text, comma-separated for a list Empty New names, or the text to add. Empty keeps the input names.
Mode Rename, Prefix, Postfix Rename Rename replaces the name. Prefix adds the text before it. Postfix adds the text after it.

One entry applies to every channel, so in Rename mode all channels get the same name. A list applies by position, and channels beyond the end of the list keep their input names. In Rename mode, an empty list entry keeps that channel’s input name, and spaces around names are removed. In Prefix and Postfix modes, spaces are kept, so you can add them on purpose. An entry made only of spaces applies only to the first channel, so include visible text if every channel needs it, or give one entry per channel.

Sets the display color of each channel.

Port Direction Type Meaning
In Input Channels Signal to recolor.
Out Output Channels Same samples, with new channel colors.
Attribute Values Default What it does
Channel Colors Comma separated list of #RRGGBB values Empty Colors applied by position. An invalid entry keeps that channel’s input color.
Add Color Color neuromore blue (#009FE3) Picking a new color adds it to Channel Colors. Channels beyond the end of the list use this color.

With the defaults, every channel is shown in neuromore blue.

Outputs a property of the input channel instead of its values, with one output sample for each input sample.

Port Direction Type Meaning
In Input Channels Channel to inspect.
Output, labelled with the Info Type Output Channels The selected property, at the input’s sample rate.
Attribute Values Default What it does
Info Type See below Sample Rate Property to output.
Info Type Output
Sample Time Time of this sample, in seconds.
Sample Index Index of this sample.
Sample Rate Sample rate in Hz.
Available Samples Number of samples the channel holds.
New Samples Number of new samples on the channel.
Buffer Size Maximum number of samples the channel holds.
Elapsed Time Elapsed time of the channel, in seconds.
Last Sample Time Time of the last sample, in seconds.
Start Time Start time of the channel, in seconds.
Is Independent? 1 if the channel is independent, otherwise 0.

Outputs a value about a channel, the classifier or the Engine at its own sample rate. Use it to monitor a running classifier.

Port Direction Type Meaning
In Input Channels Channel to inspect. Optional. Only needed for the channel and multichannel info types. Channel info types read the first channel.
Output, labelled with a short form of the Info Type Output Channels The selected value.
Attribute Values Default What it does
Info Type See below Channel: Sample Rate Value to output.
Sample Rate 0 Hz or higher 128 Sample rate of the output. At 0, the node outputs a sample only when the value changes.
Info Type Output
Number of Channels in Multichannel Channels on the input.
Channel: Sample Rate Sample rate in Hz.
Channel: Sample Counter Number of samples so far.
Channel: Number of Samples Number of samples the channel holds.
Channel: Number of added samples Number of new samples on the channel.
Channel: Buffer Size (bytes) Maximum number of samples the channel holds. The value is a sample count, despite the label.
Channel: Elapsed Time (seconds) Elapsed time of the channel.
Channel: Last Sample Time (seconds) Time of the last sample.
Channel: Start Time (seconds) Start time of the channel.
Channel: Is Independent? 1 if the channel is independent, otherwise 0.
Channel: Latency (seconds) Latency of the channel.
Classifier Buffer Usage (bytes) Memory used by the classifier’s channel buffers.
Classifier Maximum Output Latency (seconds) Highest latency across the classifier’s output nodes.
Engine Update Loop Performance (ms) Worst-case time of the Engine update loop.
Engine Classifier Performance (ms) Worst-case time of the active classifier.

With no input connected, channel info types output 0.

Lets samples through or discards them, based on a control signal. Discarded samples are lost, not delayed.

Port Direction Type Meaning
In Input Channels Signal to gate. Must be connected.
Control Input Channels Gate control. The gate is open when the value is 1 or more, and closed otherwise. Use one channel for all input channels, or one per input channel.
Out Output Channels The samples that passed the gate, at a variable sample rate.
Attribute Values Default What it does
Default State Closed, Open Closed Gate state when Control is not connected, or when a single Control channel at a different rate has no new data.

If Control and In have the same fixed sample rate, each input sample is gated by its matching control sample. Otherwise, the node reads the newest control value at each Engine update. If no new control sample arrived in that update, it uses Default State. The exception is two or more Control channels, one per input channel, at a different or variable rate. There, the gate counts as closed when no new control sample arrives, whatever Default State says, and an open gate passes at most one sample per channel per Engine update.

The wrong number of control channels gives the error “Control port has wrong number of channels.”

The output has a variable sample rate, so nodes that need a fixed rate after it show the error “Input must have a valid sample rate.” Add a Resample node between them if you need a fixed rate.

A text box for comments in the graph. It has no ports and does not affect the signal.

Attribute Values Default What it does
Text Text Put some;meaningful;text here. The text to show. A semicolon starts a new line.
Horizontal Alignment Left, Center, Right Center Horizontal position of the text.
Vertical Alignment Top, Center, Bottom Center Vertical position of the text.
Node Width 10 to 32767 150 Width in pixels at 96 dpi.
Node Height 10 to 32767 100 Height in pixels at 96 dpi.
Node Color Color Grey Color of the note.

Converts hue, saturation and value signals to red, green and blue signals. The node itself takes on the output color of its first channel.

Port Direction Type Meaning
Hue Input Channels Hue from 0 to 1, around the color wheel. Must be connected, or the node does not run.
Saturation Input Channels Saturation from 0 to 1. If not connected, the node uses 1.
Value Input Channels Brightness from 0 to 1. If not connected, the node uses 1.
R Output Channels Red, 0 to 1.
G Output Channels Green, 0 to 1.
B Output Channels Blue, 0 to 1.

This node has no attributes.

Input values outside the range are clamped. All inputs must have the same sample rate, or the node shows the error “Input sample rates are incompatible.”

Forwards one of several inputs to its output, chosen sample by sample by a control signal.

Port Direction Type Meaning
Control Input Channels Selects the input. Use one channel for all signal channels, or one per signal channel.
0 .. 1, 1 .. 2, and so on Input Channels Signals to choose from. The label is the control range that selects the port.
Out Output Channels The selected signal.
Attribute Values Default What it does
Inputs 2 or higher 2 Number of signal input ports.

The control value is cut down to a whole number, so 1.7 selects the port labelled 1 .. 2. Values at or above the number of inputs select the last port. Keep the control at 0 or above, because negative values are not handled explicitly.

All ports must be connected before the node runs. Errors:

  • “Input sample rates are incompatible.” All inputs, including Control, must have the same sample rate.
  • “Control channel is incompatible.” Control must have one channel, or as many channels as each signal input.
  • “Input channels are not compatible.” All signal inputs must have the same number of channels.