Control Surface  1.2.0
MIDI Control Surface library for Arduino
Public Member Functions | Protected Attributes | Private Member Functions | List of all members
MIDI_Sink Class Referenceabstract

Class that can receive MIDI messages from a MIDI pipe. More...

#include <MIDI_Interfaces/MIDI_Pipes.hpp>

+ Inheritance diagram for MIDI_Sink:
+ Collaboration diagram for MIDI_Sink:

Public Member Functions

 MIDI_Sink ()=default
 Default constructor. More...
 
 MIDI_Sink (const MIDI_Sink &)=delete
 Copy constructor (copying not allowed). More...
 
MIDI_Sinkoperator= (const MIDI_Sink &)=delete
 Copy assignment (copying not allowed). More...
 
 MIDI_Sink (MIDI_Sink &&other)
 Move constructor. More...
 
MIDI_Sinkoperator= (MIDI_Sink &&other)
 Move assignment. More...
 
virtual ~MIDI_Sink ()
 Destructor. More...
 

Protected Attributes

MIDI_PipesourcePipe = nullptr
 

Private Member Functions

virtual void lockDownstream (cn_t cn, bool lock)
 Base case for recursive lock function. More...
 
virtual MIDI_SinkgetFinalSink ()
 Base case for recursive function. More...
 
void disconnectSourcePipesShallow ()
 Disconnect only the first pipe connected to this sink. More...
 

Sending data over a MIDI Pipe

virtual void sinkMIDIfromPipe (ChannelMessage)=0
 Accept an incoming MIDI Channel message. More...
 
virtual void sinkMIDIfromPipe (SysExMessage)=0
 Accept an incoming MIDI System Exclusive message. More...
 
virtual void sinkMIDIfromPipe (RealTimeMessage)=0
 Accept an incoming MIDI Real-Time message. More...
 

Connecting and disconnecting MIDI Pipes

void connectSourcePipe (MIDI_Pipe *source)
 Fully connect a source pipe to this sink. More...
 
void disconnectSourcePipes ()
 Disconnect all source pipes that sink to this sink (recursively). More...
 
bool disconnect (TrueMIDI_Source &source)
 Disconnect the given source from this sink. More...
 
bool hasSourcePipe () const
 Check if this sink is connected to a source pipe. More...
 

Detailed Description

Class that can receive MIDI messages from a MIDI pipe.

Definition at line 51 of file MIDI_Pipes.hpp.

Constructor & Destructor Documentation

◆ MIDI_Sink() [1/3]

MIDI_Sink ( )
default

Default constructor.

◆ MIDI_Sink() [2/3]

MIDI_Sink ( const MIDI_Sink )
delete

Copy constructor (copying not allowed).

◆ MIDI_Sink() [3/3]

MIDI_Sink ( MIDI_Sink &&  other)

Move constructor.

Definition at line 47 of file MIDI_Pipes.cpp.

◆ ~MIDI_Sink()

~MIDI_Sink ( )
virtual

Destructor.

Definition at line 45 of file MIDI_Pipes.cpp.

Member Function Documentation

◆ operator=() [1/2]

MIDI_Sink& operator= ( const MIDI_Sink )
delete

Copy assignment (copying not allowed).

◆ operator=() [2/2]

MIDI_Sink & operator= ( MIDI_Sink &&  other)

Move assignment.

Definition at line 55 of file MIDI_Pipes.cpp.

◆ sinkMIDIfromPipe() [1/3]

virtual void sinkMIDIfromPipe ( ChannelMessage  )
pure virtual

Accept an incoming MIDI Channel message.

Implemented in MIDI_Interface, MIDI_Pipe, and Control_Surface_.

◆ sinkMIDIfromPipe() [2/3]

virtual void sinkMIDIfromPipe ( SysExMessage  )
pure virtual

Accept an incoming MIDI System Exclusive message.

Implemented in MIDI_Interface, MIDI_Pipe, and Control_Surface_.

◆ sinkMIDIfromPipe() [3/3]

virtual void sinkMIDIfromPipe ( RealTimeMessage  )
pure virtual

Accept an incoming MIDI Real-Time message.

Implemented in MIDI_Interface, MIDI_Pipe, and Control_Surface_.

◆ connectSourcePipe()

void connectSourcePipe ( MIDI_Pipe source)

Fully connect a source pipe to this sink.

Definition at line 15 of file MIDI_Pipes.cpp.

◆ disconnectSourcePipes()

void disconnectSourcePipes ( )

Disconnect all source pipes that sink to this sink (recursively).

Definition at line 24 of file MIDI_Pipes.cpp.

◆ disconnect()

bool disconnect ( TrueMIDI_Source source)

Disconnect the given source from this sink.

Leaves other sources connected. Returns true if the source was found and disconnected, false if the given source was not a direct or indirect source to this sink.

Definition at line 39 of file MIDI_Pipes.cpp.

◆ hasSourcePipe()

bool hasSourcePipe ( ) const
inline

Check if this sink is connected to a source pipe.

Definition at line 94 of file MIDI_Pipes.hpp.

◆ lockDownstream()

virtual void lockDownstream ( cn_t  cn,
bool  lock 
)
inlineprivatevirtual

Base case for recursive lock function.

See also
MIDI_Pipe::lockDownstream

Reimplemented in MIDI_Pipe.

Definition at line 105 of file MIDI_Pipes.hpp.

◆ getFinalSink()

virtual MIDI_Sink* getFinalSink ( )
inlineprivatevirtual

Base case for recursive function.

See also
MIDI_Pipe::getFinalSink

Reimplemented in MIDI_Pipe.

Definition at line 108 of file MIDI_Pipes.hpp.

◆ disconnectSourcePipesShallow()

void disconnectSourcePipesShallow ( )
private

Disconnect only the first pipe connected to this sink.

Leaves the other pipes connected to the original pipe, which doesn't have a sink anymore when this function finishes. Used to disconnect a MIDI_Pipe while preserving the connections of its "through" inputs.

Definition at line 32 of file MIDI_Pipes.cpp.

Member Data Documentation

◆ sourcePipe

MIDI_Pipe* sourcePipe = nullptr
protected

Definition at line 117 of file MIDI_Pipes.hpp.


The documentation for this class was generated from the following files: