|
|
External MIDI port output class . This class is used to send midi events to external midi devices.
MidiOut is inherited by other MIDI devices classes (like SynthOut or FMOut) to support a common API.
In general, you don't want to use MidiOut directly, but within a DeviceManager object, which is the preferred way to generate music.
If you want to add support for other devices (I don't think there are any) you just have to create a class that inherits from MidiOut and create one object of your new class in DeviceManager::initManager().
int seqfd |
This is the /dev/sequencer file handler. Remember _not_to_close_ it on MidiOut, but just on DeviceManager
int ndevs |
Total number of devices.
int nmidiports |
Total number of midi ports
double convertrate |
A "constant" used to convert from milliseconds to the computer rate
MidiOut (int d=0) |
Constructor. After constructing a MidiOut device, you must open it (using openDev() ). Additionally you may want to initialize it (with initDev() ),
~MidiOut () |
Destructor. It doesn't matter if you close the device (closeDev() ) before you destruct the object because in other case, it will be closed here.
void openDev (int sqfd) |
Opens the device. This is generally called from DeviceManager , so you shouldn't call this yourself (except if you created the MidiOut object yourself.
Parameters:
sqfd | a file descriptor of /dev/sequencer |
void closeDev () |
Closes the device. It basically tells the device (the file descriptor) is going to be closed.
See also: openDev
void initDev () |
Initializes the device sending generic standard midi events and controllers, such as changing the patches of each channel to an Acoustic Piano (000), setting the volume to a normal value, etc.
int deviceType () |
which are defined in midispec.h
Returns: the device type of the object. This is to identify the inherited class that a given object is polymorphed to. The returned value is one of these :
See also: deviceName
const char * deviceName (void) |
Returns the name and type of this MIDI device.
See also: deviceType
int rate (void) |
void setMidiMapper ( MidiMapper *map ) |
Sets a MidiMapper object to be used to modify the midi events before sending them.
Parameters:
map | the MidiMapper to use. |
See also: MidiMapper, midiMapFilename
void noteOn ( uchar chn, uchar note, uchar vel ) |
See DeviceManager::noteOn()
void noteOff ( uchar chn, uchar note, uchar vel ) |
See DeviceManager::noteOff()
void keyPressure ( uchar chn, uchar note, uchar vel ) |
See DeviceManager::keyPressure()
void chnPatchChange ( uchar chn, uchar patch ) |
See DeviceManager::chnPatchChange()
void chnPressure ( uchar chn, uchar vel ) |
See DeviceManager::chnPressure()
void chnPitchBender ( uchar chn, uchar lsb, uchar msb ) |
See DeviceManager::chnPitchBender()
void chnController ( uchar chn, uchar ctl , uchar v ) |
See DeviceManager::chnController()
void sysex ( uchar *data,ulong size) |
See DeviceManager::sysex()
void channelSilence ( uchar chn ) |
Mutes all notes being played on a given channel.
void channelMute ( uchar chn, int a ) |
Mute or "unmute" a given channel .
Parameters:
chn | channel to work on |
b | if true, the device will ignore subsequent notes played on the chn channel, and mute all notes being played on it. If b is false, the channel is back to work. |
void setVolumePercentage ( int volper ) |
Change all channel volume events multiplying it by this percentage correction Instead of forcing a channel to a fixed volume, this method allows to music to fade out even when it was being played softly.
Parameters:
volper | is an integer value, where 0 is quiet, 100 is used to send an unmodified value, 200 play music twice louder than it should, etc. |
int ok (void) |
Returns true if everything's ok and false if there has been any problem
void sync (int i=0) |
If i==1 syncronizes by cleaning the buffer instead of sending it (in fact, this is what syncronizing really means :-) )
char * midiMapFilename () |
Returns the path to the file where the current used MidiMapper object reads the configuration from, or an empty string if there's no MidiMapper.