hydrogen 1.2.3
JackMidiDriver Class Reference

#include <JackMidiDriver.h>

Inheritance diagram for JackMidiDriver:
Object< JackMidiDriver > MidiInput MidiOutput Base Object< MidiInput > Object< MidiOutput > Base Base

Public Member Functions

 JackMidiDriver ()
 
virtual ~JackMidiDriver ()
 
virtual void close () override
 
virtual std::vector< QString > getInputPortList () override
 
virtual std::vector< QString > getOutputPortList () override
 
void getPortInfo (const QString &sPortName, int &nClient, int &nPort)
 
virtual void handleOutgoingControlChange (int param, int value, int channel) override
 
virtual void handleQueueAllNoteOff () override
 
virtual void handleQueueNote (Note *pNote) override
 
virtual void handleQueueNoteOff (int channel, int key, int velocity) override
 
void JackMidiRead (jack_nframes_t nframes)
 
void JackMidiWrite (jack_nframes_t nframes)
 
virtual void open () override
 
- Public Member Functions inherited from Object< JackMidiDriver >
 Object ()
 
 Object (const Object< JackMidiDriver > &other)
 
- Public Member Functions inherited from Base
 Base ()
 
 Base (const Base &other)
 
virtual const char * class_name () const
 
void Print (bool bShort=true) const
 Prints content of toQString() via DEBUGLOG.
 
virtual QString toQString (const QString &sPrefix="", bool bShort=true) const
 Formatted string version for debugging purposes.
 
- Public Member Functions inherited from MidiInput
 MidiInput ()
 
virtual ~MidiInput ()
 
void handleControlChangeMessage (const MidiMessage &msg)
 
void handleMidiMessage (const MidiMessage &msg)
 
void handlePolyphonicKeyPressureMessage (const MidiMessage &msg)
 
void handleProgramChangeMessage (const MidiMessage &msg)
 
void handleSysexMessage (const MidiMessage &msg)
 
void setActive (bool isActive)
 
- Public Member Functions inherited from Object< MidiInput >
 Object ()
 
 Object (const Object< MidiInput > &other)
 
- Public Member Functions inherited from MidiOutput
 MidiOutput ()
 
virtual ~MidiOutput ()
 
- Public Member Functions inherited from Object< MidiOutput >
 Object ()
 
 Object (const Object< MidiOutput > &other)
 

Private Member Functions

void JackMidiOutEvent (uint8_t *buf, uint8_t len)
 
void lock ()
 
void unlock ()
 

Private Attributes

jack_port_t * input_port
 
uint8_t jack_buffer [JACK_MIDI_BUFFER_MAX *4]
 
jack_client_t * jack_client
 
pthread_mutex_t mtx
 
jack_port_t * output_port
 
int running
 
uint32_t rx_in_pos
 
uint32_t rx_out_pos
 

Additional Inherited Members

- Static Public Member Functions inherited from Base
static const char * _class_name ()
 return the class name
 
static QString base_clock (const QString &sMsg)
 Measures the current time and stores it in __last_clock.
 
static QString base_clock_in (const QString &sMsg)
 
static int bootstrap (Logger *logger, bool count=false)
 must be called before any Object instantiation !
 
static bool count_active ()
 
static int getAliveObjectCount ()
 
static object_map_t getObjectMap ()
 
static Loggerlogger ()
 return the logger instance
 
static int objects_count ()
 
static void printObjectMapDiff (object_map_t map)
 Creates the difference between a snapshot of the object map and its current state and prints it to std::cout.
 
static void set_count (bool flag)
 enable/disable class instances counting
 
static void write_objects_map_to (std::ostream &out, object_map_t *map=nullptr)
 output the full objects map to a given ostream
 
static void write_objects_map_to_cerr ()
 output objects map to stderr
 
- Static Public Attributes inherited from Base
static QString sPrintIndention = " "
 String used to format the debugging string output of some core classes.
 
- Protected Member Functions inherited from Object< JackMidiDriver >
 ~Object ()
 
- Protected Member Functions inherited from Base
 ~Base ()
 
- Protected Member Functions inherited from MidiInput
void handleNoteOffMessage (const MidiMessage &msg, bool CymbalChoke)
 
void handleNoteOnMessage (const MidiMessage &msg)
 
- Protected Member Functions inherited from Object< MidiInput >
 ~Object ()
 
- Protected Member Functions inherited from Object< MidiOutput >
 ~Object ()
 
- Static Protected Member Functions inherited from Base
static void registerClass (const char *name, const atomic_obj_cpt_t *counters)
 
- Protected Attributes inherited from MidiInput
bool m_bActive
 
- Static Protected Attributes inherited from Base
static bool __count = false
 should we count class instances
 
static timeval __last_clock = { 0, 0 }
 
static Logger__logger = nullptr
 

Detailed Description

Definition at line 50 of file JackMidiDriver.h.

Constructor & Destructor Documentation

◆ JackMidiDriver()

Definition at line 264 of file JackMidiDriver.cpp.

◆ ~JackMidiDriver()

~JackMidiDriver ( )
virtual

Definition at line 312 of file JackMidiDriver.cpp.

Member Function Documentation

◆ close()

void close ( )
overridevirtual

Implements MidiInput.

Definition at line 345 of file JackMidiDriver.cpp.

◆ getInputPortList()

std::vector< QString > getInputPortList ( )
overridevirtual

Implements MidiOutput.

Definition at line 351 of file JackMidiDriver.cpp.

◆ getOutputPortList()

std::vector< QString > getOutputPortList ( )
overridevirtual

Implements MidiInput.

Definition at line 361 of file JackMidiDriver.cpp.

◆ getPortInfo()

void getPortInfo ( const QString & sPortName,
int & nClient,
int & nPort )

Definition at line 371 of file JackMidiDriver.cpp.

◆ handleOutgoingControlChange()

void handleOutgoingControlChange ( int param,
int value,
int channel )
overridevirtual

Implements MidiOutput.

Definition at line 130 of file JackMidiDriver.cpp.

◆ handleQueueAllNoteOff()

void handleQueueAllNoteOff ( )
overridevirtual

Implements MidiOutput.

Definition at line 446 of file JackMidiDriver.cpp.

◆ handleQueueNote()

void handleQueueNote ( Note * pNote)
overridevirtual

Implements MidiOutput.

Definition at line 383 of file JackMidiDriver.cpp.

◆ handleQueueNoteOff()

void handleQueueNoteOff ( int channel,
int key,
int velocity )
overridevirtual

Implements MidiOutput.

Definition at line 422 of file JackMidiDriver.cpp.

◆ JackMidiOutEvent()

void JackMidiOutEvent ( uint8_t * buf,
uint8_t len )
private

Definition at line 211 of file JackMidiDriver.cpp.

◆ JackMidiRead()

void JackMidiRead ( jack_nframes_t nframes)

Definition at line 155 of file JackMidiDriver.cpp.

◆ JackMidiWrite()

void JackMidiWrite ( jack_nframes_t nframes)

Definition at line 59 of file JackMidiDriver.cpp.

◆ lock()

void lock ( void )
private

Definition at line 47 of file JackMidiDriver.cpp.

◆ open()

void open ( )
overridevirtual

Implements MidiInput.

Definition at line 339 of file JackMidiDriver.cpp.

◆ unlock()

void unlock ( void )
private

Definition at line 53 of file JackMidiDriver.cpp.

Field Documentation

◆ input_port

jack_port_t* input_port
private

Definition at line 78 of file JackMidiDriver.h.

◆ jack_buffer

uint8_t jack_buffer[JACK_MIDI_BUFFER_MAX *4]
private

Definition at line 82 of file JackMidiDriver.h.

◆ jack_client

jack_client_t* jack_client
private

Definition at line 79 of file JackMidiDriver.h.

◆ mtx

pthread_mutex_t mtx
private

Definition at line 80 of file JackMidiDriver.h.

◆ output_port

jack_port_t* output_port
private

Definition at line 77 of file JackMidiDriver.h.

◆ running

int running
private

Definition at line 81 of file JackMidiDriver.h.

◆ rx_in_pos

uint32_t rx_in_pos
private

Definition at line 83 of file JackMidiDriver.h.

◆ rx_out_pos

uint32_t rx_out_pos
private

Definition at line 84 of file JackMidiDriver.h.