drumstick 2.10.0
C++ MIDI libraries using Qt objects, idioms, and style.

Port management. More...

#include <alsaport.h>

Inheritance diagram for MidiPort:

Signals

void subscribed (drumstick::ALSA::MidiPort *port, drumstick::ALSA::Subscription *subs)
 Signal emitted when an internal subscription is done.
 
void midiClientChanged (drumstick::ALSA::MidiPort *port, drumstick::ALSA::MidiClient *seq)
 Signal emitted when the MidiClient has changed.
 
void attached (drumstick::ALSA::MidiPort *port)
 Signal emitted when the port is attached to a MidiClient.
 
void detached (drumstick::ALSA::MidiPort *port)
 Signal emitted when the port is detached from a MidiClient.
 

Public Member Functions

 MidiPort (QObject *parent=nullptr)
 Constructor.
 
virtual ~MidiPort ()
 Destructor.
 
void attach (MidiClient *seq)
 Attach the port to a MidiClient instance.
 
void detach ()
 Detach the port from any MidiClient instance previously attached.
 
void subscribe (Subscription *subs)
 Subscribe a Subscription object.
 
void unsubscribe (Subscription *subs)
 Unsubscribe a Subscription object.
 
void unsubscribeAll ()
 Unsubscribe all subscriptions.
 
void unsubscribeTo (QString const &name)
 Unsubscribe a destination port.
 
void unsubscribeTo (PortInfo *port)
 Unsubscribe a destination port.
 
void unsubscribeTo (const snd_seq_addr_t *addr)
 Unsubscribe a destination port.
 
void unsubscribeFrom (QString const &name)
 Unsubscribe a source port.
 
void unsubscribeFrom (PortInfo *port)
 Unsubscribe a source port.
 
void unsubscribeFrom (const snd_seq_addr_t *addr)
 Unsubscribe a source port.
 
void subscribeTo (PortInfo *port)
 Subscribe to another port destination.
 
void subscribeTo (int client, int port)
 Susbcribe to another port destination.
 
void subscribeTo (QString const &name)
 Subscribe to another port destination.
 
void subscribeFrom (PortInfo *port)
 Subscribe a source port.
 
void subscribeFrom (int client, int port)
 Subscribe a source port.
 
void subscribeFrom (QString const &name)
 Subscribe a source port.
 
void subscribeFromAnnounce ()
 Subscribe from the System:announce port.
 
void updateSubscribers ()
 Update the subscribers list in the PortInfo member.
 
SubscriptionsList getSubscriptions () const
 Gets the list of susbcriptions.
 
PortInfoList getReadSubscribers ()
 Gets the list of read subscribers.
 
PortInfoList getWriteSubscribers ()
 Gets the list of write subscribers.
 
void updateConnectionsTo (const PortInfoList &desired)
 Update the write subscriptions.
 
void updateConnectionsFrom (const PortInfoList &desired)
 Update the read susbcriptions.
 
void applyPortInfo ()
 Applies all the the delayed PortInfo changes to the MIDI port object.
 
QString getPortName ()
 Gets the port name.
 
void setPortName (QString const &newName)
 Sets the port name.
 
int getPortId ()
 Gets the port number.
 
unsigned int getCapability ()
 Gets the port capabilities.
 
void setCapability (unsigned int newValue)
 Sets the port capabilities.
 
unsigned int getPortType ()
 Gets the port type.
 
void setPortType (unsigned int newValue)
 Sets the port type bitmap.
 
int getMidiChannels ()
 Gets the MIDI channels.
 
void setMidiChannels (int newValue)
 Sets the MIDI channels.
 
int getMidiVoices ()
 Gets the MIDI voices.
 
void setMidiVoices (int newValue)
 Sets the MIDI voices.
 
int getSynthVoices ()
 Gets the synth voices.
 
void setSynthVoices (int newValue)
 Sets the synth voices.
 
bool getTimestamping ()
 Gets the timestamping mode.
 
bool getTimestampReal ()
 Gets the timestamp real mode.
 
int getTimestampQueue ()
 Gets the timestamp queue number.
 
void setTimestamping (bool value)
 Sets the timestamping mode.
 
void setTimestampReal (bool value)
 Sets the timestamp real mode.
 
void setTimestampQueue (int queueId)
 Sets the timestamp queue number.
 

Static Public Member Functions

static bool containsAddress (const snd_seq_addr_t *addr, const PortInfoList &lst)
 Checks if the provided address is included in the port list.
 

Protected Member Functions

PortInfogetPortInfo ()
 Gets the PortInfo object pointer.
 
void freeSubscriptions ()
 Releases the lists of subscriptions.
 
void setMidiClient (MidiClient *seq)
 Sets the MidiClient.
 

Detailed Description

Port management.

This class represents an ALSA sequencer port.

Examples
drumgrid.cpp, dumpmid.cpp, metronome.cpp, and playsmf.cpp.

Definition at line 124 of file alsaport.h.

Constructor & Destructor Documentation

◆ MidiPort()

MidiPort ( QObject * parent = nullptr)
explicit

Constructor.

Parameters
parentAn optional parent object

Definition at line 574 of file alsaport.cpp.

◆ ~MidiPort()

~MidiPort ( )
virtual

Destructor.

All subscriptions are released.

Definition at line 585 of file alsaport.cpp.

References detach(), freeSubscriptions(), and unsubscribeAll().

Member Function Documentation

◆ attach()

void attach ( MidiClient * seq)

Attach the port to a MidiClient instance.

Parameters
seqA MidiClient object pointer

Definition at line 1126 of file alsaport.cpp.

References attached(), and MidiClient::portAttach().

Referenced by MidiClient::createPort().

◆ attached

void attached ( drumstick::ALSA::MidiPort * port)
signal

Signal emitted when the port is attached to a MidiClient.

Parameters
portMIDI port object pointer

Referenced by attach().

◆ containsAddress()

bool containsAddress ( const snd_seq_addr_t * addr,
const PortInfoList & lst )
static

Checks if the provided address is included in the port list.

Parameters
addrALSA address record pointer
lstList of port information containers
Returns
True if the address is found

Definition at line 1215 of file alsaport.cpp.

References PortInfo::getAddr().

Referenced by updateConnectionsFrom(), and updateConnectionsTo().

◆ detached

void detached ( drumstick::ALSA::MidiPort * port)
signal

Signal emitted when the port is detached from a MidiClient.

Parameters
portMIDI port object pointer

References freeSubscriptions(), getPortInfo(), and setMidiClient().

Referenced by detach().

◆ getCapability()

unsigned int getCapability ( )

Gets the port capabilities.

Returns
The capabilities bitmap
See also
PortInfo::getCapability()

Definition at line 955 of file alsaport.cpp.

◆ getMidiChannels()

int getMidiChannels ( )

Gets the MIDI channels.

Returns
The MIDI channels

Definition at line 1000 of file alsaport.cpp.

◆ getMidiVoices()

int getMidiVoices ( )

Gets the MIDI voices.

Returns
The MIDI voices

Definition at line 1021 of file alsaport.cpp.

◆ getPortId()

int getPortId ( )

Gets the port number.

Returns
The port number

Definition at line 944 of file alsaport.cpp.

◆ getPortInfo()

PortInfo * getPortInfo ( )
protected

Gets the PortInfo object pointer.

Returns
the PortInfo object pointer

Definition at line 597 of file alsaport.cpp.

Referenced by MidiClient::detachAllPorts(), detached(), and MidiClient::portDetach().

◆ getPortName()

QString getPortName ( )

Gets the port name.

Returns
The port name

Definition at line 923 of file alsaport.cpp.

◆ getPortType()

unsigned int getPortType ( )

Gets the port type.

Returns
The port type bitmap
See also
PortInfo::getType()

Definition at line 978 of file alsaport.cpp.

◆ getReadSubscribers()

PortInfoList getReadSubscribers ( )

Gets the list of read subscribers.

Returns
The list of read subscribers

Definition at line 1163 of file alsaport.cpp.

References Subscriber::getAddr(), PortInfo::getCapability(), and PortInfo::setClientName().

Referenced by updateConnectionsTo().

◆ getSubscriptions()

SubscriptionsList getSubscriptions ( ) const

Gets the list of susbcriptions.

Returns
The list of susbcriptions

Definition at line 607 of file alsaport.cpp.

◆ getSynthVoices()

int getSynthVoices ( )

Gets the synth voices.

Returns
The synth voices

Definition at line 1042 of file alsaport.cpp.

◆ getTimestamping()

bool getTimestamping ( )

Gets the timestamping mode.

Returns
The timestamping mode

Definition at line 1063 of file alsaport.cpp.

◆ getTimestampQueue()

int getTimestampQueue ( )

Gets the timestamp queue number.

Returns
The timestamp queue number

Definition at line 1083 of file alsaport.cpp.

◆ getTimestampReal()

bool getTimestampReal ( )

Gets the timestamp real mode.

Returns
The timestamp real mode

Definition at line 1073 of file alsaport.cpp.

◆ getWriteSubscribers()

PortInfoList getWriteSubscribers ( )

Gets the list of write subscribers.

Returns
The list of write subscribers

Definition at line 1188 of file alsaport.cpp.

References Subscriber::getAddr(), PortInfo::getCapability(), and PortInfo::setClientName().

Referenced by updateConnectionsFrom().

◆ midiClientChanged

void midiClientChanged ( drumstick::ALSA::MidiPort * port,
drumstick::ALSA::MidiClient * seq )
signal

Signal emitted when the MidiClient has changed.

Parameters
portMIDI port object pinter
seqMidiClient object pointer

Referenced by setMidiClient().

◆ setCapability()

void setCapability ( unsigned int newValue)

Sets the port capabilities.

Parameters
newValueThe capabilities bitmap
See also
PortInfo::setCapability()

Definition at line 966 of file alsaport.cpp.

References applyPortInfo().

◆ setMidiChannels()

void setMidiChannels ( int newValue)

Sets the MIDI channels.

Parameters
newValueThe MIDI channels

Definition at line 1010 of file alsaport.cpp.

References applyPortInfo().

◆ setMidiClient()

void setMidiClient ( MidiClient * seq)
protected

Sets the MidiClient.

Parameters
seqA MidiClient object pointer

Definition at line 626 of file alsaport.cpp.

References applyPortInfo(), and midiClientChanged().

Referenced by MidiClient::detachAllPorts(), detached(), and MidiClient::portDetach().

◆ setMidiVoices()

void setMidiVoices ( int newValue)

Sets the MIDI voices.

Parameters
newValueThe MIDI voices

Definition at line 1031 of file alsaport.cpp.

References applyPortInfo().

◆ setPortName()

void setPortName ( QString const & newName)

Sets the port name.

Parameters
newNameThe new port name

Definition at line 933 of file alsaport.cpp.

References applyPortInfo().

◆ setPortType()

void setPortType ( unsigned int newValue)

Sets the port type bitmap.

Parameters
newValueThe port type flags bitmap
See also
PortInfo::setType()

Definition at line 989 of file alsaport.cpp.

References applyPortInfo().

◆ setSynthVoices()

void setSynthVoices ( int newValue)

Sets the synth voices.

Parameters
newValueThe synth voices

Definition at line 1052 of file alsaport.cpp.

References applyPortInfo().

◆ setTimestamping()

void setTimestamping ( bool value)

Sets the timestamping mode.

Parameters
valueThe timestamping mode

Definition at line 1093 of file alsaport.cpp.

References applyPortInfo().

◆ setTimestampQueue()

void setTimestampQueue ( int queueId)

Sets the timestamp queue number.

Parameters
queueIdThe queue number

Definition at line 1115 of file alsaport.cpp.

References applyPortInfo().

◆ setTimestampReal()

void setTimestampReal ( bool value)

Sets the timestamp real mode.

Parameters
valueThe timestamp real mode

Definition at line 1104 of file alsaport.cpp.

References applyPortInfo().

◆ subscribe()

void subscribe ( Subscription * subs)

Subscribe a Subscription object.

Parameters
subsA Subscription object pointer

Definition at line 641 of file alsaport.cpp.

References Subscription::clone(), Subscription::subscribe(), and subscribed().

Referenced by subscribeFrom(), subscribeFrom(), subscribeFrom(), subscribeTo(), subscribeTo(), and subscribeTo().

◆ subscribed

void subscribed ( drumstick::ALSA::MidiPort * port,
drumstick::ALSA::Subscription * subs )
signal

Signal emitted when an internal subscription is done.

It is recommended to use Qt::UniqueConnection with this signal.

Parameters
portMIDI port object pointer
subsSubscription object pointer. Receiver gets the ownership of the Subscription pointer.

Referenced by subscribe().

◆ subscribeFrom() [1/3]

void subscribeFrom ( int client,
int port )

Subscribe a source port.

Parameters
clientALSA client number
portALSA port number

Definition at line 798 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and subscribe().

◆ subscribeFrom() [2/3]

void subscribeFrom ( PortInfo * port)

Subscribe a source port.

Parameters
portA PortInfo object pointer

Definition at line 784 of file alsaport.cpp.

References PortInfo::getAddr(), Subscription::setDest(), Subscription::setSender(), and subscribe().

Referenced by subscribeFromAnnounce(), and updateConnectionsFrom().

◆ subscribeFrom() [3/3]

void subscribeFrom ( QString const & name)

Subscribe a source port.

Parameters
nameA string representing a client:port pair

Definition at line 814 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and subscribe().

◆ subscribeTo() [1/3]

void subscribeTo ( int client,
int port )

Susbcribe to another port destination.

Parameters
clientALSA client number
portALSA port number

Definition at line 698 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and subscribe().

◆ subscribeTo() [2/3]

void subscribeTo ( PortInfo * info)

Subscribe to another port destination.

Parameters
infoA PortInfo object pointer

Definition at line 684 of file alsaport.cpp.

References PortInfo::getAddr(), Subscription::setDest(), Subscription::setSender(), and subscribe().

Referenced by updateConnectionsTo().

◆ subscribeTo() [3/3]

void subscribeTo ( QString const & name)

Subscribe to another port destination.

Parameters
nameA string representing a client:port pair

Definition at line 714 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and subscribe().

◆ unsubscribe()

void unsubscribe ( Subscription * subs)

◆ unsubscribeFrom() [1/3]

void unsubscribeFrom ( const snd_seq_addr_t * addr)

Unsubscribe a source port.

Parameters
addrAn ALSA address record pointer

Definition at line 868 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and unsubscribe().

◆ unsubscribeFrom() [2/3]

void unsubscribeFrom ( PortInfo * port)

Unsubscribe a source port.

Parameters
portA PortInfo object pointer

Definition at line 852 of file alsaport.cpp.

References PortInfo::getAddr(), Subscription::setDest(), Subscription::setSender(), and unsubscribe().

◆ unsubscribeFrom() [3/3]

void unsubscribeFrom ( QString const & name)

Unsubscribe a source port.

Parameters
nameA string representing a client:port pair

Definition at line 833 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and unsubscribe().

Referenced by updateConnectionsFrom().

◆ unsubscribeTo() [1/3]

void unsubscribeTo ( const snd_seq_addr_t * addr)

Unsubscribe a destination port.

Parameters
addrAn ALSA address record pointer

Definition at line 768 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and unsubscribe().

◆ unsubscribeTo() [2/3]

void unsubscribeTo ( PortInfo * port)

Unsubscribe a destination port.

Parameters
portA PortInfo object pointer

Definition at line 752 of file alsaport.cpp.

References PortInfo::getAddr(), Subscription::setDest(), Subscription::setSender(), and unsubscribe().

◆ unsubscribeTo() [3/3]

void unsubscribeTo ( QString const & name)

Unsubscribe a destination port.

Parameters
nameA string representing a client:port pair

Definition at line 733 of file alsaport.cpp.

References Subscription::setDest(), Subscription::setSender(), and unsubscribe().

Referenced by updateConnectionsTo().

◆ updateConnectionsFrom()

void updateConnectionsFrom ( const PortInfoList & ports)

Update the read susbcriptions.

Parameters
portsList of readable ports to be subscribed

Definition at line 1256 of file alsaport.cpp.

References containsAddress(), PortInfo::getAddr(), getWriteSubscribers(), subscribeFrom(), and unsubscribeFrom().

◆ updateConnectionsTo()

void updateConnectionsTo ( const PortInfoList & ports)

Update the write subscriptions.

Parameters
portsList of writable ports to be subscribed

Definition at line 1233 of file alsaport.cpp.

References containsAddress(), PortInfo::getAddr(), getReadSubscribers(), subscribeTo(), and unsubscribeTo().


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