open-ephys / plugin-GUI

Software for processing, recording, and visualizing multichannel electrophysiology data
https://open-ephys.org/gui
GNU General Public License v3.0
193 stars 684 forks source link

Signal Chain Revamp roadmap #266

Closed aacuevas closed 3 years ago

aacuevas commented 6 years ago

This issue is here for all to know some big changes we are working on, to avoid duplicate efforts.

The way the signal chain and processors interact was originally designed for single source chains and synchronous signals. Newer technologies and complex setups created the need for the software to support multiple asynchronous sources. However, its current implementation it causes some issues when mixing channels from different sources. In addition, newer hardware generates multiple asynchronous data streams from a single connection, which complicates even further how the chain behaves.

To address these issues, we're revamping how the signal chain can be constructed. The first step is a big revamp on chain functionality, which we are currently working on: -Each branch in the signal chain, now called streams, will only be able to hold channels from the same source, sharing a common timestamp. As such, mergers will disallow combining streams from different sources. -Mergers and splitters will allow for an arbitrary input and output streams. -Any processor can produce multiple streams, similar to what multisource data threads do now. Any processor which does so will behave as if it had an integrated splitter. Each of those output stream will behave as if it were from a different source. -In code, any reference to "subprocessor" is being translated to "stream".

Once those changes are implemented and tested, the next step is to implement a built-in "zip" operator which will allow merging streams from different sources as long as they have the same sample rate. Mixing streams with different sample rates is not planned for now, until we decide on a good resampling method that works for any ratio.

Finally, we intend to move both audio monitoring and recording to a "probe" system in which, instead of the channel selectors as we have now, they will be controlled by inserting special probe processors in the chain which will allow fine tuning of which elements to monitor or record from those who get through them.

medengineer commented 3 years ago

A modified version of this general approach has been implemented since GUI version 0.5.0