Öffentliche Methoden | Private Attribute
OutMidiPort Klassenreferenz

#include <DevMidi.h>

Klassendiagramm für OutMidiPort:
Inheritance graph
[Legende]
Zusammengehörigkeiten von OutMidiPort:
Collaboration graph
[Legende]

Aufstellung aller Elemente

Öffentliche Methoden

 OutMidiPort ()
 OutMidiPort (wxString name, int devId, int bendingRange=2)
 ~OutMidiPort ()
virtual void Save (tree_storage &config)
 Save current device settings in a tree storage.
virtual void Save (tree_storage &config, const Route *route)
 Save route settings (filter settings) for a given route.
virtual void Load (tree_storage &config)
 Load current device settings from a tree storage.
virtual void Load (tree_storage &config, Route *route)
 Loade route settings (filter settings) for a given route.
virtual bool Open ()
virtual void Close ()
virtual void NoteOn (int Box, int taste, int velo, Route *r, int channel, ChannelData *cd)
virtual void NoteOff (int Box, int taste, int velo, Route *r, int channel)
virtual void NotesCorrect (int box)
virtual void Sustain (char on, int channel)
virtual int GetChannel (int taste)
virtual void Gis (GisToken *token, char turn)
virtual void AddTime (frac time)
virtual void MidiOut (DWORD data, char n)
virtual void MidiOut (BYTE *p, char n)
virtual void Quite (Route *r)
virtual void Panic ()
virtual bool NeedsRealTime ()
virtual void SetDevId (int id)
void SetBendingRange (int r)
int GetBendingRange ()
virtual DevType GetType () const
virtual mutString GetTypeName () const
virtual void ReadData (wxConfigBase *config)
virtual void WriteData (wxConfigBase *config)
virtual int GetMaxChannel () const
virtual int GetMinChannel () const

Private Attribute

int bending_range
HMIDIOUT hMidiOut
ChannelData Cd [16]
char KeyDir [16]
TonAufKanal ton_auf_kanal [16]
int nKeyOn

Ausführliche Beschreibung

Definiert in Zeile 59 der Datei DevMidi.h.


Beschreibung der Konstruktoren und Destruktoren

OutMidiPort::OutMidiPort ( ) [inline]

Definiert in Zeile 63 der Datei DevMidi.h.

:OutDevice(), bending_range (2), hMidiOut(NULL), nKeyOn(0) { }
OutMidiPort::OutMidiPort ( wxString  name,
int  devId,
int  bendingRange = 2 
) [inline]

Definiert in Zeile 65 der Datei DevMidi.h.

Benutzt DEBUGLOG.

        : OutDevice(devId, name), bending_range (bendingRange), hMidiOut(NULL), nKeyOn(0)
        {
                DEBUGLOG(other,_T(""));
        }
OutMidiPort::~OutMidiPort ( ) [inline]

Definiert in Zeile 71 der Datei DevMidi.h.

                {};

Dokumentation der Elementfunktionen

virtual void OutMidiPort::AddTime ( frac  time) [inline, virtual]

Implementiert OutDevice.

Definiert in Zeile 113 der Datei DevMidi.h.

        {};
void OutMidiPort::Close ( ) [virtual]

Implementiert OutDevice.

Definiert in Zeile 253 der Datei DevMidi.cpp.

Benutzt DEBUGLOG, hMidiOut, KeyDir, MIDI_OUT3 und ton_auf_kanal.

{
        DEBUGLOG (other, _T(""));
        // alle liegenden Tˆne ausschalten

        for (int i = 0; i < 16; i++)
                if ( KeyDir[i] >= 16 )  // benutzt
                        MIDI_OUT3(0x80+i, ton_auf_kanal[i].key, 64);

        /*  for (int i = 0; i < 16; i++)
                 MidiOut3(176+i, 122, 1);  // local on */
        // Device schlieflen
#ifdef RTMIDI
        hMidiOut->closePort();

        delete hMidiOut;

#else
        midiOutClose(hMidiOut);

#endif
}
int OutMidiPort::GetBendingRange ( ) [inline]

Definiert in Zeile 136 der Datei DevMidi.h.

Benutzt bending_range.

Wird benutzt von compat30::SaveRoutes().

                              {
                return bending_range;
        }
int OutMidiPort::GetChannel ( int  taste) [virtual]

Implementiert OutDevice.

Definiert in Zeile 502 der Datei DevMidi.cpp.

Benutzt DEBUGLOG und ton_auf_kanal.

{
        DEBUGLOG (other, _T(""));

        for (int i = 0; i < 16; i++)
                if ( ton_auf_kanal[i].id && (ton_auf_kanal[i].taste == taste) )
                        return i;

        return -1;
}
virtual int OutMidiPort::GetMaxChannel ( ) const [inline, virtual]

Definiert in Zeile 173 der Datei DevMidi.h.

Wird benutzt von MutOutputMidiDeviceShape::GetOutputFilterPanel() und Load().

{ return 15; }
virtual int OutMidiPort::GetMinChannel ( ) const [inline, virtual]

Definiert in Zeile 174 der Datei DevMidi.h.

Wird benutzt von MutOutputMidiDeviceShape::GetOutputFilterPanel() und Load().

{ return 0; }
virtual DevType OutMidiPort::GetType ( ) const [inline, virtual]

Erneute Implementation von OutDevice.

Definiert in Zeile 141 der Datei DevMidi.h.

Benutzt DTMidiPort.

        {
                return DTMidiPort;
        }
virtual mutString OutMidiPort::GetTypeName ( ) const [inline, virtual]

Erneute Implementation von OutDevice.

Definiert in Zeile 146 der Datei DevMidi.h.

Benutzt _().

                                               {
                return _("Midi output device");
        }
virtual void OutMidiPort::Gis ( GisToken token,
char  turn 
) [inline, virtual]

Implementiert OutDevice.

Definiert in Zeile 110 der Datei DevMidi.h.

        {};
void OutMidiPort::Load ( tree_storage config,
Route route 
) [virtual]

Loade route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route *) Route whos data shall be loaded.

Implementiert Device.

Definiert in Zeile 184 der Datei DevMidi.cpp.

Benutzt _(), GetMaxChannel(), GetMinChannel(), Device::GetName(), Route::OFrom, Route::ONoDrum, Route::OTo und tree_storage::Read().

{
        wxASSERT(route);
        route->ONoDrum = config.Read(_T("Avoid Drum Channel"), true);
        int oldfrom, oldto;
        oldfrom = route->OFrom = config.Read(_T("Channel Range From"), GetMinChannel());
        oldto = route->OTo = config.Read(_T("Channel Range To"), GetMaxChannel());
        bool correct = true;
        if (route->OFrom < GetMinChannel()) {
                correct = false;
                route->OFrom = GetMinChannel();
        }
        if (route->OTo > GetMaxChannel()) {
                correct = false;
                route->OTo = GetMaxChannel();
        }
        if (!correct)
                wxMessageBox(wxString::Format(_("The Channel range %d--%d of the MIDI output device %s must be inside %d--%d. The current route had to be corrected."),
                                              oldfrom,oldto,GetName().c_str(),GetMinChannel(),GetMaxChannel()),
                             _("Warning loading route"),wxICON_EXCLAMATION);
}
void OutMidiPort::Load ( tree_storage config) [virtual]

Load current device settings from a tree storage.

config (tree_storage) storage class, where the data will be loaded from.

Implementiert Device.

Definiert in Zeile 170 der Datei DevMidi.cpp.

Benutzt _(), bending_range, Device::DevId, RtMidiOut::getPortCount(), RtMidiOut::getPortName(), muT, Device::Name und tree_storage::Read().

{
        DevId = config.Read(_T("Device Id"),0);
        Name = config.Read(_T("Device Name"), rtmidiout->getPortCount()?
                            muT(rtmidiout->getPortName(0).c_str()):wxString(_("Unknown")));
        bending_range = config.Read(_T("Bending Range"),2);
}
void OutMidiPort::MidiOut ( DWORD  data,
char  n 
) [virtual]

Implementiert OutDevice.

Definiert in Zeile 530 der Datei DevMidi.cpp.

Benutzt DEBUGLOG und hMidiOut.

{
        DEBUGLOG (other, _T("without RtMidi"));
        midiOutShortMsg(hMidiOut, data);
}
virtual void OutMidiPort::MidiOut ( BYTE *  p,
char  n 
) [inline, virtual]

Implementiert OutDevice.

Definiert in Zeile 117 der Datei DevMidi.h.

        {};
virtual bool OutMidiPort::NeedsRealTime ( ) [inline, virtual]

Erneute Implementation von OutDevice.

Definiert in Zeile 122 der Datei DevMidi.h.

        {
                return true;
        }
void OutMidiPort::NoteOff ( int  Box,
int  taste,
int  velo,
Route r,
int  channel 
) [virtual]

Implementiert OutDevice.

Definiert in Zeile 393 der Datei DevMidi.cpp.

Benutzt DEBUGLOG, DRUMCHANNEL, KeyDir, MAKE_ID, MAX_BOX, MIDI_OUT3, nKeyOn, Route::OFrom, Route::ONoDrum, TAK::taste und ton_auf_kanal.

Wird benutzt von Quite().

{
        DEBUGLOG (midiio, _T("box %d, key %d, velo %d, channel %d"),
                 box, taste, velo, channel);

        if ( box == -2 )
                box = MAX_BOX+1;

        DWORD id = MAKE_ID(r, box, taste, channel);

        if ( !velo ) //3 ?? notwendig?
                velo = 64;

        for (int i = r->OFrom; i <= r->OTo; i++)
                if ( i != DRUMCHANNEL || !r->ONoDrum )
                        if ( KeyDir[i] >= 16 && ton_auf_kanal[i].id == id ) {
                                ton_auf_kanal[i].taste=0;
// ???     ton_auf_kanal[i].id=0;
                                MIDI_OUT3(0x80+i, ton_auf_kanal[i].key, velo);
                                // KeyDir umsortieren
                                int oldKeyDir = KeyDir[i];

                                for (int k = 0; k < 16; k++)
                                        if ( KeyDir[k] > oldKeyDir || KeyDir[k] < 16) KeyDir[k]--;

                                nKeyOn--;

                                KeyDir[i] = 15;
                        }
}
void OutMidiPort::NoteOn ( int  Box,
int  taste,
int  velo,
Route r,
int  channel,
ChannelData cd 
) [virtual]

Implementiert OutDevice.

Definiert in Zeile 277 der Datei DevMidi.cpp.

Benutzt ChannelData::BankSelectLSB, ChannelData::BankSelectMSB, Cd, char, DEBUGLOG, DRUMCHANNEL, GET_FREQ, TAK::id, TAK::key, KeyDir, MAKE_ID, MIDI_OUT3, MIDI_PITCH, MIDI_SOUND, mut_box, nKeyOn, Route::OFrom, Route::ONoDrum, Route::OTo, ChannelData::Pitch, ChannelData::Sound, ChannelData::Sustain, Sustain(), TAK::taste und ton_auf_kanal.

{
        DEBUGLOG (other, _T("box %d, key %d, velo %d, channel %d"),
                 box, taste, velo, channel);
        int free = 16, freeSus = r->OTo, freeV = 64, freeSusV = 64, s;
        DWORD p;
        long freq;

        if ( box == -2 ) {
                freq = ((long)taste) << 24;
                box = 255;
        } else
                freq = GET_FREQ (taste, mut_box[box].tonesystem);

        // testen, ob nicht belegte Taste
        if ( !freq )
                return;

        for ( int j = r->OFrom; j <= r->OTo; j++ ) 
                if ( j != DRUMCHANNEL || !r->ONoDrum ) {
                        if ( Cd[j].Sustain ) {
                                if ( KeyDir[j] < freeSusV ) {
                                        freeSus = j;
                                        freeSusV = KeyDir[j];
                                }
                        } else {
                                if ( KeyDir[j] < freeV ) {
                                        free = j;
                                        freeV = KeyDir[j];
                                }
                        }
                }
        if ( freeV >= 16 ) {
                free = freeSus;
                freeV = freeSusV;
        }

        if ( freeV >= 16 )  // keinen freien gefunden
        {
                // "mittelste Taste weglassen"
                int AM = 0; // arithmetisches Mittel der Tasten
                int j;

                for (j = r->OFrom; j <= r->OTo; j++)
                        if ( j != DRUMCHANNEL || !r->ONoDrum )
                                AM += ton_auf_kanal[j].taste;

                AM /= r->OTo + 1 - r->OFrom;

                for ( j = r->OFrom; j <= r->OTo; j++ )
                        if ( j != DRUMCHANNEL || !r->ONoDrum )
                                if ( abs(AM - ton_auf_kanal[j].taste) < abs(AM - ton_auf_kanal[free].taste) )
                                        free = j;

                // Ton auf Kanal free ausschalten
                MIDI_OUT3(0x80+free, ton_auf_kanal[free].key, 64);

                // evtl. Sustain ausschalten
                if ( Cd[free].Sustain )
                        MIDI_OUT3(0xB0+free, 64, 0);

                // KeyDir umsortieren
                BYTE oldKeyDir = KeyDir[free];

                for (int k = 0; k < 16; k++)
                        if ( KeyDir[k] > oldKeyDir ) KeyDir[k]--;

                KeyDir[free] = (char)(15+nKeyOn);
        } else {
                nKeyOn++;
                KeyDir[free] = (char)(15 + nKeyOn);
        }

        // freier Kanal = free

        // evtl. Sustain ausschalten
        if ( Cd[free].Sustain ) {
                MIDI_OUT3(0xB0+free, 64, 0);
                Cd[free].Sustain = 0;
        }

        // Sound testen
        if ( (s = cd->Sound) != Cd[free].Sound ) {
                MIDI_SOUND(free, s);
                Cd[free].Sound = s;
        }

        // Bank testen
        if ( (s = cd->BankSelectMSB) != Cd[free].BankSelectMSB && s != -1 ) {
                MIDI_OUT3(0xB0+free, 0, (BYTE) s);
                Cd[free].BankSelectMSB = s;
        }

        if ( (s = cd->BankSelectLSB) != Cd[free].BankSelectLSB && s != -1 ) {
                MIDI_OUT3(0xB0+free, 32, (BYTE) s);
                Cd[free].BankSelectLSB = s;
        }

        // Pitch testen
        if ( (long)(p = (freq & 0xFFFFFF)) != Cd[free].Pitch ) {
                MIDI_PITCH(free, freq);
                Cd[free].Pitch = p;
        }

        ton_auf_kanal[free].key = (freq >> 24) & 0x7f;

        ton_auf_kanal[free].taste = taste;
        ton_auf_kanal[free].id = MAKE_ID(r, box, taste, channel);
        MIDI_OUT3(0x90+free, ton_auf_kanal[free].key, velo);

        if ( cd->Sustain ) {
                MIDI_OUT3(0xB0+free, 64, cd->Sustain);
                Cd[free].Sustain = cd->Sustain;
        }
};
void OutMidiPort::NotesCorrect ( int  box) [virtual]

Implementiert OutDevice.

Definiert in Zeile 429 der Datei DevMidi.cpp.

Benutzt bending_range, Cd, DEBUGLOG, GET_FREQ, TAK::id, TAK::key, KeyDir, LongAbs(), MIDI_OUT3, mut_box, ChannelData::Pitch, ChannelData::Sustain, Sustain() und ton_auf_kanal.

{
        DEBUGLOG (midiio, _T(""));

        for (int i = 0; i < 16; i++)
                if ( (KeyDir[i] >= 16 && ton_auf_kanal[i].id) || Cd[i].Sustain ) {
                        int Box = (ton_auf_kanal[i].id >> 8) & 0xFF;

                        if ( Box != box )
                                break;

                        DEBUGLOG(midiio,_T("old(hex/dec): channel = %01x/%d, Taste = %02x/%d, key = %02x/%d, pitch = %06x/%d"), 
                                 i,i,ton_auf_kanal[i].taste,ton_auf_kanal[i].taste, 
                                 ton_auf_kanal[i].key,ton_auf_kanal[i].key,Cd[i].Pitch,Cd[i].Pitch);

                        long freq = GET_FREQ(ton_auf_kanal[i].taste, mut_box[Box].tonesystem);

                        // hier kann ein evtl. grˆflerer bending_range genutzt werden, um
                        // Ton aus und einschalten zu vermeiden
                        if ( ton_auf_kanal[i].key == ((freq >> 24) & 0x7f) &&
                                        Cd[i].Pitch == ((long)freq & 0xFFFFFF) )
                                continue;


                        long Delta = freq - ((long)ton_auf_kanal[i].key << 24);

                        bool SwitchTone = (LongAbs(Delta) >= ((long)bending_range << 24));

                        // evtl. Ton ausschalten
                        if ( SwitchTone ) {
                                if ( Cd[i].Sustain ) {
                                        MIDI_OUT3(0xB0+i, 64, 0);
                                        Cd[i].Sustain = 0;

                                        if ( KeyDir[i] < 16 )
                                                continue;
                                }

                                MIDI_OUT3(0x80+i, ton_auf_kanal[i].key, 0x7F);
                                ton_auf_kanal[i].key = (freq >> 24) & 0x7F;
                                Delta = freq - ((long)ton_auf_kanal[i].key << 24);
                        } else if ( Delta == Cd[i].Pitch )
                                continue;

                        // Spezialbending (grofler Range)
                        Cd[i].Pitch = Delta;

                        Delta /= bending_range;
                        Delta = Delta >> 11;
                        Delta +=  0x40 << 7; // we have to add here as Delta can be negative
                        DEBUGLOG(midiio,_T("new freq = %08x/%d, Pitch= %06x/%d, Delta = %06x/%d, i=%d"), 
                                 freq, freq, Cd[i].Pitch, Cd[i].Pitch, Delta, Delta, i);
                        //      MIDI_OUT3(0xE0+i, ((BYTE*)&Delta)[1] >> 1, (((BYTE*)&Delta)[2]));
                        MIDI_OUT3(0xE0+i, Delta & 0x7f, (Delta >> 7) & 0x7f );

                        // evtl. Ton einschalten
                        if ( SwitchTone )
                                MIDI_OUT3(0x90+i, ton_auf_kanal[i].key, 64);  //3 velo speichern ??
                }
}
bool OutMidiPort::Open ( ) [virtual]

Implementiert OutDevice.

Definiert in Zeile 207 der Datei DevMidi.cpp.

Benutzt _(), Cd, DEBUGLOG, Device::DevId, Device::GetName(), hMidiOut, TAK::id, KeyDir, LAUFZEIT_ERROR0, LAUFZEIT_ERROR2, MIDI_OUT3, nKeyOn, ChannelData::Reset(), TAK::taste und ton_auf_kanal.

{
        DEBUGLOG (other, _T(""));
        int i;

        for (i = 0; i < 16; i++) {
                Cd[i].Reset();
                ton_auf_kanal[i].taste = 0;
                ton_auf_kanal[i].id = 0;
        }

        nKeyOn = 0;

        for (i = 0; i < 16; i++)
                KeyDir[i] = (char)i; // alle nicht benutzt

#ifdef RTMIDI
        // RtMidiIn constructor
        try {
                hMidiOut = new RtMidiOut();
        } catch (RtError &error) {
                LAUFZEIT_ERROR0(_("Can not open ouput Midi devices."));
                return false;
        }

        try {
                hMidiOut->openPort(DevId);
        } catch (RtError &error) {
                LAUFZEIT_ERROR2(_("Can not open output Midi device nr. %d (%s)"), DevId, (GetName().c_str()));
                return false;
        }

#else
        midiOutOpen(&hMidiOut, DevId, NULL, NULL, NULL);

#endif
        for (i = 0; i < 16; i++) {
                MIDI_OUT3(0xE0+i, 0x00, 0x40); // pitch auf 0
                MIDI_OUT3(0xB0+i, 122, 0);  // local off
                MIDI_OUT3(0xB0+i, 125, 0);  // omni on
                MIDI_OUT3(0xB0+i, 127, 0);  // poly on
        }

        return true;
}
void OutMidiPort::Panic ( ) [virtual]

Erneute Implementation von OutDevice.

Definiert in Zeile 547 der Datei DevMidi.cpp.

Benutzt Cd, DEBUGLOG, TAK::id, KeyDir, MIDI_OUT2, MIDI_OUT3, nKeyOn, ChannelData::Sound, ChannelData::Sustain, TAK::taste und ton_auf_kanal.

{
        DEBUGLOG (other, _T(""));

        for (int i = 0; i < 16; i++) {
                MIDI_OUT3(176+i, 123, 0);  // All notes off */
                MIDI_OUT3(0xB0+i, 7, 127);  // main volume
                // sound piano
                MIDI_OUT2(0xC0+i, 0);
                // Merker aufr‰umen
                ton_auf_kanal[i].taste=0;
                ton_auf_kanal[i].id=0;
                Cd[i].Sound = 0;
                Cd[i].Sustain = 0;
                KeyDir[i] = i; // alle nicht benutzt
        }

        nKeyOn = 0;
}
void OutMidiPort::Quite ( Route r) [virtual]

Implementiert OutDevice.

Definiert in Zeile 538 der Datei DevMidi.cpp.

Benutzt Route::Box, DEBUGLOG, Route::GetId(), TAK::id, NoteOff() und ton_auf_kanal.

{
        DEBUGLOG (other, _T(""));

        for (int i = 0; i < 16; i++)
                if ( (char)((ton_auf_kanal[i].id >> 16) & 0x0FF) == r->GetId() )
                        NoteOff(r->Box, ton_auf_kanal[i].id % 256, 64, r,  ton_auf_kanal[i].id >> 24);
}
void OutMidiPort::ReadData ( wxConfigBase *  config) [virtual]

Erneute Implementation von Device.

Definiert in Zeile 567 der Datei DevMidi.cpp.

Benutzt _() und bending_range.

{
        bending_range = config->Read(_("Bending_Range"),
                                         (long)bending_range);
}
void OutMidiPort::Save ( tree_storage config,
const Route route 
) [virtual]

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route *) Route whos data shall be saved.

Implementiert Device.

Definiert in Zeile 158 der Datei DevMidi.cpp.

Benutzt Route::OFrom, Route::ONoDrum, Route::OTo und tree_storage::Write().

{
        wxASSERT(route);
        config.Write(_T("Avoid Drum Channel"), route->ONoDrum);
        config.Write(_T("Channel Range From"), route->OFrom);
        config.Write(_T("Channel Range To"), route->OTo);
}
void OutMidiPort::Save ( tree_storage config) [virtual]

Save current device settings in a tree storage.

config (tree_storage) storage class, where the data will be saved.

Implementiert Device.

Definiert in Zeile 145 der Datei DevMidi.cpp.

Benutzt bending_range, Device::DevId, Device::Name und tree_storage::Write().

{
        config.Write(_T("Device Id"),DevId);
        config.Write(_T("Device Name"),Name);
        config.Write(_T("Bending Range"),bending_range);
}
void OutMidiPort::SetBendingRange ( int  r) [inline]

Definiert in Zeile 132 der Datei DevMidi.h.

Benutzt bending_range.

Wird benutzt von MutOutputMidiDeviceShape::readDialog().

                                     {
                bending_range = r;
        }
virtual void OutMidiPort::SetDevId ( int  id) [inline, virtual]

Erneute Implementation von Device.

Definiert in Zeile 127 der Datei DevMidi.h.

Benutzt Device::DevId, RtMidiOut::getPortName(), muT und Device::Name.

Wird benutzt von MutOutputMidiDeviceShape::readDialog().

                                       {
                DevId = id;            
                Name = muT (rtmidiout->getPortName (DevId).c_str());
        }
void OutMidiPort::Sustain ( char  on,
int  channel 
) [virtual]

Implementiert OutDevice.

Definiert in Zeile 490 der Datei DevMidi.cpp.

Benutzt Cd, DEBUGLOG, MIDI_OUT3, ChannelData::Sustain und ton_auf_kanal.

Wird benutzt von NoteOn() und NotesCorrect().

{
        DEBUGLOG (other, _T(""));
        DWORD chan = channel; // Midi has unsigned channels

        for (int i = 0; i < 16; i++)
                if ( ton_auf_kanal[i].id && (ton_auf_kanal[i].id >> 24) == chan ) {
                        MIDI_OUT3(0xB0+i, 64, on);
                        Cd[i].Sustain = on;
                }
}
void OutMidiPort::WriteData ( wxConfigBase *  config) [virtual]

Erneute Implementation von Device.

Definiert in Zeile 573 der Datei DevMidi.cpp.

Benutzt _() und bending_range.

{
        config->Write(_("Bending_Range"), (long)bending_range);
}

Dokumentation der Datenelemente

Definiert in Zeile 61 der Datei DevMidi.h.

Wird benutzt von GetBendingRange(), Load(), NotesCorrect(), ReadData(), Save(), SetBendingRange() und WriteData().

Definiert in Zeile 183 der Datei DevMidi.h.

Wird benutzt von NoteOn(), NotesCorrect(), Open(), Panic() und Sustain().

HMIDIOUT OutMidiPort::hMidiOut [private]

Definiert in Zeile 181 der Datei DevMidi.h.

Wird benutzt von Close(), MidiOut() und Open().

char OutMidiPort::KeyDir[16] [private]

Definiert in Zeile 184 der Datei DevMidi.h.

Wird benutzt von Close(), NoteOff(), NoteOn(), NotesCorrect(), Open() und Panic().

int OutMidiPort::nKeyOn [private]

Definiert in Zeile 186 der Datei DevMidi.h.

Wird benutzt von NoteOff(), NoteOn(), Open() und Panic().

Definiert in Zeile 185 der Datei DevMidi.h.

Wird benutzt von Close(), GetChannel(), NoteOff(), NoteOn(), NotesCorrect(), Open(), Panic(), Quite() und Sustain().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:

Erzeugt am Sun Aug 21 2011 10:52:08 für Mutabor von doxygen 1.7.4