signals.hpp File Reference

This module implements the signal flow in funken. More...

#include <ableton/build_system/Warnings.hpp>
#include <boost/signals2/signal.hpp>
#include <memory>
#include <vector>
#include <functional>

Go to the source code of this file.

Namespaces

 atria
 C++ amazing templates and reusable implementations awesomeness.
 
 atria::funken
 Provides a experimental library for writing epocal and functional data-models.
 

Detailed Description

This module implements the signal flow in funken.

Signals can be connected forming two superinposed directed acyclical graphs, where signals flow down or up. Signals are derived from eachother using transducers.

The APIs for flowing up and down are asymmetric because of the way the graph is constructed and the semantics of information flow.

  • An up-down-signal can be constructed from a up-down-signal.
  • A down-signal can be constructed from a up-down-signa or a down-signal.
  • A signal can be appended children, but can not be appended parents.
  • Information propagates upwardes immediately, but propagates upwards in two fases.

In general, sucessors know a lot about their predecessors, but sucessors need to know very little or nothing from their sucessors.

Todo:
We could eventually flatten signals when the sucessors knows the transducer of its predecessor, this could be done heuristically.

Definition in file signals.hpp.

Fork me on GitHub