LFPs are a collection of chainable processing objects, such objects can be connected like lego bricks and – in a similar way to unix pipes std in/out – they will pass their output data into the next object’s input in the chain. LFP data-rate is typically lower than audio signal-rate, hence the “LF” part of their name which stands for Low Frequency.
One can distinguish three different types of LFP objects: source objects, operator objects and sink objects depending on their role and position in the chain.
As their name suggests, source objects can only be at the beginning of an LFP chain as they provide the source. They handle input from different sources / interfaces and act as a decoding or encoding object that will output an LFP compatible data-stream.
Different input signals could be collected as sources from different devices:
- Audio stream (Microphone, player…)
- Video stream (Camera, player)
- Motion stream (Leap motion / kinect)
- Touch stream (Touchpad, trackpad, sensors…)
- Network streams (Any of the above data coming over the network)
Operator objects can be placed interchangeably anywhere in an LFP chain. They all share the same API, take LFP data in and send LFP data out. This type of objects will process the signal in several ways and pass along the resulting data stream. You will find here the usual suspects for signal analysis and feature extraction such as:
- Amplitude followers
- Tempo estimators
- Onset detectors …
The Sink objects don’t have the means to connect to other objects at their output. They can only be placed at the end of the chain. Sink operators embrace somehow the idea of a terminator in the chain.
Some examples of sink operators are:
- Plotting the data
- Recording an analysed result
- Send it over the wire to other machines