Source Code (Use browser search to find items of interest.)
Class Index
kmid'MidiStatus (./kdemultimedia/kmid/player/midistat.h:37)
class MidiStatus
{
private:
ulong tempo;
unsigned char chn_patch [N_CHANNELS];
int chn_bender [N_CHANNELS];
unsigned char chn_pressure [N_CHANNELS];
unsigned char chn_controller [N_CHANNELS][N_CTL];
int chn_lastisvolumeev [N_CHANNELS];
public:
MidiStatus();
~MidiStatus();
// void noteOn ( uchar chn, uchar note, uchar vel );
// void noteOff ( uchar chn, uchar note, uchar vel );
void keyPressure ( uchar chn, uchar note, uchar vel );
void chnPatchChange ( uchar chn, uchar patch );
uchar chnPatch ( uchar chn ) { return chn_patch[chn]; };
void chnPressure ( uchar chn, uchar vel );
uchar chnPressure ( uchar chn ) {return chn_pressure[chn];};
void chnPitchBender ( uchar chn, uchar lsb, uchar msb );
int chnPitchBender ( uchar chn) {return chn_bender[chn];};
void chnController ( uchar chn, uchar ctl , uchar v );
uchar chnController ( uchar chn, uchar ctl ) {return chn_controller[chn][ctl];};
void sysex ( uchar *data,ulong size);
void tmrSetTempo(int v);
void sendData(DeviceManager *midi,int gm=1);
};
kmid'MidiStatus::MidiStatus() (./kdemultimedia/kmid/player/midistat.cc:31)
MidiStatus::MidiStatus()
{
int i;
tempo=1000000;
for (int chn=0;chn<N_CHANNELS;chn++)
{
chn_patch[chn]=0;
chn_bender[chn]=0x4000;
chn_pressure[chn]=127;
for (i=0;i<N_CTL;i++)
chn_controller[chn][i]=0;
chn_controller[chn][CTL_MAIN_VOLUME]=127;
chn_controller[chn][11]=127;
chn_controller[chn][0x4a]=127;
chn_lastisvolumeev[chn]=1;
}
}
kmid'MidiStatus::~MidiStatus() (./kdemultimedia/kmid/player/midistat.cc:51)
MidiStatus::~MidiStatus()
{
}
// void noteOn ( uchar chn, uchar note, uchar vel );
// void noteOff ( uchar chn, uchar note, uchar vel );
kmid'MidiStatus::chnPatchChange() (./kdemultimedia/kmid/player/midistat.cc:58)
void MidiStatus::chnPatchChange ( uchar chn, uchar patch )
{
chn_patch[chn]=patch;
}
kmid'MidiStatus::chnPressure() (./kdemultimedia/kmid/player/midistat.cc:63)
void MidiStatus::chnPressure ( uchar chn, uchar vel )
{
chn_pressure[chn]=vel;
}
kmid'MidiStatus::chnPitchBender() (./kdemultimedia/kmid/player/midistat.cc:68)
void MidiStatus::chnPitchBender ( uchar chn, uchar lsb, uchar msb )
{
chn_bender[chn]=((int)msb<<8|lsb);
}
kmid'MidiStatus::chnController() (./kdemultimedia/kmid/player/midistat.cc:73)
void MidiStatus::chnController ( uchar chn, uchar ctl , uchar v )
{
if (ctl==7) chn_lastisvolumeev[chn]=1;
else if (ctl==11) chn_lastisvolumeev[chn]=0;
chn_controller[chn][ctl]=v;
}
kmid'MidiStatus::tmrSetTempo() (./kdemultimedia/kmid/player/midistat.cc:81)
void MidiStatus::tmrSetTempo(int v)
{
tempo=v;
}
kmid'MidiStatus::sendData() (./kdemultimedia/kmid/player/midistat.cc:86)
void MidiStatus::sendData(DeviceManager *midi,int gm)
{
for (int chn=0;chn<N_CHANNELS;chn++)
{
#ifdef MIDISTATDEBUG
printf("Restoring channel %d\n",chn);
#endif
midi->chnPatchChange(chn,
(gm==1)?(chn_patch[chn]):(MT32toGM[chn_patch[chn]]));
midi->chnPitchBender(chn,chn_bender[chn]&0xFF,chn_bender[chn]>>8);
midi->chnPressure(chn,chn_pressure[chn]);
if (chn_lastisvolumeev[chn])
{
midi->chnController(chn,11,chn_controller[chn][11]);
midi->chnController(chn,CTL_MAIN_VOLUME,chn_controller[chn][CTL_MAIN_VOLUME]);
} else {
midi->chnController(chn,CTL_MAIN_VOLUME,chn_controller[chn][CTL_MAIN_VOLUME]);
midi->chnController(chn,11,chn_controller[chn][11]);
}
/*
for (int i=0;i<N_CTL;i++)
midi->chnController(chn,i,chn_controller[chn][i]);
*/
}
midi->tmrSetTempo(tempo);
midi->sync();
}