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();
}