Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Signals | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
CAMidiDevice Class Referenceabstract

Canorus<->Midi bridge. More...

#include <mididevice.h>

Inheritance diagram for CAMidiDevice:
Inheritance graph
[legend]

Public Types

enum  CAMidiDeviceType { RtMidiDevice, MidiExportDevice }
 
enum  midiCommands {
  Meta_Text = 0x01, Meta_Copyright = 0x02, Meta_SeqTrkName = 0x03, Meta_InstrName = 0x04,
  Meta_Lyric = 0x05, Meta_Marker = 0x06, Meta_CuePoint = 0x07, Meta_Tempo = 0x51,
  Meta_SMPTEOffs = 0x54, Meta_Timesig = 0x58, Meta_Keysig = 0x59, Meta_Track_End = 0x2f,
  Midi_Ctl_Reverb = 0x5b, Midi_Ctl_Chorus = 0x5d, Midi_Ctl_Pan = 0x0a, Midi_Ctl_Volume = 0x07,
  Midi_Ctl_Sustain = 0x40, Midi_Ctl_Event = 0xff, Midi_Note_Off = 0x80, Midi_Note_On = 0x90,
  Midi_Prog_Change = 0xc0, Midi_Control_Chg = 0xb0
}
 

Signals

void midiInEvent (QVector< unsigned char > message)
 

Public Member Functions

 CAMidiDevice ()
 
virtual ~CAMidiDevice ()
 
CAMidiDeviceType midiDeviceType ()
 
bool isRealTime ()
 
virtual QMap< int, QString > getOutputPorts ()=0
 
virtual QMap< int, QString > getInputPorts ()=0
 
virtual bool openOutputPort (int port)=0
 
virtual bool openInputPort (int port)=0
 
virtual void closeOutputPort ()=0
 
virtual void closeInputPort ()=0
 
virtual void send (QVector< unsigned char > message, int mSeconds=0)=0
 

Static Public Member Functions

static unsigned char freeMidiChannel (CASheet *)
 
static int diatonicPitchToMidiPitch (CADiatonicPitch)
 
static CADiatonicPitch midiPitchToDiatonicPitch (int)
 
static CADiatonicPitch midiPitchToDiatonicPitch (int, CADiatonicKey k)
 

Public Attributes

QStringList GM_INSTRUMENTS
 

Protected Member Functions

void setRealTime (bool r)
 
void setMidiDeviceType (CAMidiDeviceType t)
 

Protected Attributes

CAMidiDeviceType _midiDeviceType
 
bool _realTime
 

Friends

void rtMidiInCallback (double deltatime, std::vector< unsigned char > *message, void *userData)
 

Detailed Description

Canorus<->Midi bridge.

This class represents generic Midiinterface to Canorus. Any Midi wrapper class should extend this class.

Currently CARtMidi is one of the Midi libraries implemented. This class is an example of the so called real-time Midi classes. This means that the midi event will be heard at the moment it is sent.

Another example is CAMidiExport. This is a Midi file writer. The class is an example of the non-real-time Midi classes. It needs the offset in miliseconds to write the midi event to a file.

Warning
MIDI INPUT is not available for Swig and therefore scripting languages yet.

Member Enumeration Documentation

Enumerator
RtMidiDevice 
MidiExportDevice 
Enumerator
Meta_Text 
Meta_Copyright 
Meta_SeqTrkName 
Meta_InstrName 
Meta_Lyric 
Meta_Marker 
Meta_CuePoint 
Meta_Tempo 
Meta_SMPTEOffs 
Meta_Timesig 
Meta_Keysig 
Meta_Track_End 
Midi_Ctl_Reverb 
Midi_Ctl_Chorus 
Midi_Ctl_Pan 
Midi_Ctl_Volume 
Midi_Ctl_Sustain 
Midi_Ctl_Event 
Midi_Note_Off 
Midi_Note_On 
Midi_Prog_Change 
Midi_Control_Chg 

Constructor & Destructor Documentation

CAMidiDevice::CAMidiDevice ( )

Copyright (c) 2007, Matevž Jekovec, Canorus development team All Rights Reserved. See AUTHORS for a complete list of authors.

Licensed under the GNU GENERAL PUBLIC LICENSE. See COPYING for details.

References GM_INSTRUMENTS.

virtual CAMidiDevice::~CAMidiDevice ( )
inlinevirtual

Member Function Documentation

virtual void CAMidiDevice::closeInputPort ( )
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CASettings::setMidiInPort().

Here is the caller graph for this function:

virtual void CAMidiDevice::closeOutputPort ( )
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CAMainWin::playbackFinished().

Here is the caller graph for this function:

int CAMidiDevice::diatonicPitchToMidiPitch ( CADiatonicPitch  pitch)
static

Converts the given internal Canorus pitch with accidentals acc to standard unsigned 7-bit MIDI pitch.

See Also
_pitch, midiPitchToPitch()

References CADiatonicPitch::accs(), and CADiatonicPitch::noteName().

Referenced by midiPitchToDiatonicPitch(), CAPlayback::playSelectionImpl(), and CAPlayback::run().

Here is the call graph for this function:

Here is the caller graph for this function:

unsigned char CAMidiDevice::freeMidiChannel ( CASheet s)
static

Returns the first midi channel that isn't occupied by voices in the given sheet s yet. Returns 0, if all the channels are occupied.

Warning
This function never returns midi channel 10 as it's reserved for percussion instruments only.

References CASheet::voiceList().

Referenced by CAVoice::CAVoice().

Here is the call graph for this function:

Here is the caller graph for this function:

virtual QMap<int, QString> CAMidiDevice::getInputPorts ( )
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CASettingsDialog::setupPages().

Here is the caller graph for this function:

virtual QMap<int, QString> CAMidiDevice::getOutputPorts ( )
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CASettingsDialog::setupPages().

Here is the caller graph for this function:

bool CAMidiDevice::isRealTime ( )
inline

References _realTime.

CAMidiDeviceType CAMidiDevice::midiDeviceType ( )
inline

References _midiDeviceType.

void CAMidiDevice::midiInEvent ( QVector< unsigned char >  message)
signal

Referenced by rtMidiInCallback().

Here is the caller graph for this function:

CADiatonicPitch CAMidiDevice::midiPitchToDiatonicPitch ( int  midiPitch)
static

Converts the given standard unsigned 7-bit MIDI pitch to internal Canorus pitch.

Todo:
This method currently doesn't do anything. Problem is determination of sharp/flat from MIDI. -Matevz
See Also
_pitch, pitchToMidiPitch()

Referenced by CAKeybdInput::midiInEventToScore(), CAKeybdInput::onMidiInEvent(), and CAMidiImport::writeMidiChannelEventsToVoice().

Here is the caller graph for this function:

CADiatonicPitch CAMidiDevice::midiPitchToDiatonicPitch ( int  midiPitch,
CADiatonicKey  k 
)
static

Converts the given standard unsigned 7-bit MIDI pitch to internal Canorus pitch dependent on the diatonic key k.

Todo:
This method currently only assumes the diatonic key c.
See Also
_pitch, pitchToMidiPitch()

References CADiatonicPitch::accs(), diatonicPitchToMidiPitch(), CADiatonicPitch::noteName(), CADiatonicPitch::setAccs(), and CADiatonicPitch::setNoteName().

Here is the call graph for this function:

virtual bool CAMidiDevice::openInputPort ( int  port)
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CASettings::setMidiInPort().

Here is the caller graph for this function:

virtual bool CAMidiDevice::openOutputPort ( int  port)
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CAMainWin::on_uiPlayFromSelection_toggled(), and CAPlayback::playImmediately().

Here is the caller graph for this function:

virtual void CAMidiDevice::send ( QVector< unsigned char >  message,
int  mSeconds = 0 
)
pure virtual

Implemented in CAMidiExport, and CARtMidiDevice.

Referenced by CAPlayback::initStreams(), CAPlayback::playSelectionImpl(), and CAPlayback::run().

Here is the caller graph for this function:

void CAMidiDevice::setMidiDeviceType ( CAMidiDeviceType  t)
inlineprotected

References _midiDeviceType.

void CAMidiDevice::setRealTime ( bool  r)
inlineprotected

References _realTime.

Referenced by CAMidiExport::CAMidiExport(), and CARtMidiDevice::CARtMidiDevice().

Here is the caller graph for this function:

Friends And Related Function Documentation

void rtMidiInCallback ( double  deltatime,
std::vector< unsigned char > *  message,
void *  userData 
)
friend

Callback function which gets called by RtMidi automatically when an information on MidiIn device has come.

Referenced by CARtMidiDevice::openInputPort().

Member Data Documentation

CAMidiDeviceType CAMidiDevice::_midiDeviceType
protected
bool CAMidiDevice::_realTime
protected

Referenced by isRealTime(), and setRealTime().

CAMidiDevice::GM_INSTRUMENTS

Human names for General Midi Instruments.

Referenced by CAMidiDevice(), and CADrawableMark::draw().


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