void MIDISequencerGUIEventNotifierText::Notify(
   const MIDISequencer *seq,
   MIDISequencerGUIEvent e
   )
 {
   if( en )
   {
     fprintf( f, "GUI EVENT: G=%d, SG=%d, ITEM=%d\n",
              e.GetEventGroup(),
              e.GetEventSubGroup(),
              e.GetEventItem()
       );
     
     if( e.GetEventGroup() == MIDISequencerGUIEvent::GROUP_TRANSPORT )
     {
       if(
         e.GetEventItem() == MIDISequencerGUIEvent::GROUP_TRANSPORT_BEAT
         )
       {
         fprintf( f, "MEAS %3d BEAT %3d\n",
                  seq->GetCurrentMeasure()+1,
                  seq->GetCurrentBeat()+1
           );
       }
     }
     else
       if( e.GetEventGroup() == MIDISequencerGUIEvent::GROUP_CONDUCTOR )
       {
         
         if(
           e.GetEventItem() == MIDISequencerGUIEvent::GROUP_CONDUCTOR_TIMESIG
           )
         {
           fprintf( f, "TIMESIG: %d/%d\n",
                    seq->GetTrackState(0)->timesig_numerator,
                    seq->GetTrackState(0)->timesig_denominator
             );
         }
         if(
           e.GetEventItem() == MIDISequencerGUIEvent::GROUP_CONDUCTOR_TEMPO
           )
         {
           fprintf( f, "TEMPO: %3.2f\n",
                    seq->GetTrackState(0)->tempobpm
             );
         }
       }
   }
 }
Exemple #2
0
VOID ProcessNotifierMessage( MIDISequencerGUIEvent ev) {
/* the param ev is a GUIEvent object (see the file sequencer.h */
    char s[300];

    /* Get the group (general type) of the event */
    switch (ev.GetEventGroup()) {

        case MIDISequencerGUIEvent::GROUP_ALL:
        /* This is a general GUI reset event: update all rextboxes */
            SetControls();
            break;

        case MIDISequencerGUIEvent::GROUP_CONDUCTOR:
        /* This is an event regarding conductor track: find the type and update appropriate textbox */

            switch (ev.GetEventItem()) {
                case MIDISequencerGUIEvent::GROUP_CONDUCTOR_TEMPO:
                    sprintf (s, "%3.2f", sequencer->GetTempoWithoutScale());
                    SetWindowText ( hTempo, s );
                    break;
                case MIDISequencerGUIEvent::GROUP_CONDUCTOR_TIMESIG:
                    sprintf (s, "%d/%d", sequencer->GetTimeSigNumerator(), sequencer->GetTimeSigDenominator());
                    SetWindowText( hTime, s );
                    break;
                case MIDISequencerGUIEvent::GROUP_CONDUCTOR_KEYSIG:
                    /* TODO: */
                    //sprintf(s, "%s", KeyNames[seq->GetState()->keysig_sharpflat+ 7 +
                    //                          15 * seq->GetState()->keysig_mode]);
                    break;
                case MIDISequencerGUIEvent::GROUP_CONDUCTOR_MARKER:
                    SetWindowText (hMarker, sequencer->GetCurrentMarker());
                    break;
            }
            break;

        case MIDISequencerGUIEvent::GROUP_TRANSPORT:
        /* This is an event regarding transport (start, stop, etc): we monitor only
         * beat events to update the meas - beat box
         */
            if (ev.GetEventItem() == MIDISequencerGUIEvent::GROUP_TRANSPORT_BEAT) {
                sprintf (s, "%d:%d", sequencer->GetMeasure()+1, sequencer->GetBeat()+1);
                SetWindowText ( hMeas, s );
            }
            break;

        case MIDISequencerGUIEvent::GROUP_TRACK: {
        /* This is a track event: find the track (GetEventSubGroup) and the type (GetEventItem) and proceed */
            int track = ev.GetEventSubGroup();
            if (ev.GetEventItem() == MIDISequencerGUIEvent::GROUP_TRACK_PG) {
                if (track > 0) {
                    if (sequencer->FindFirstChannelOnTrack(track) == 10) {
                        SetWindowText( hTrackPrgrs[track-1], GMDrumKits[sequencer->GetTrackProgram( track )] );
                    }
                    else {
                        SetWindowText ( hTrackPrgrs[track-1], GMpatches[sequencer->GetTrackProgram( track)] );
                    }
                }
            }

            else if (ev.GetEventItem() == MIDISequencerGUIEvent::GROUP_TRACK_VOLUME) {
                sprintf (s, "vol: %d", sequencer->GetTrackVolume( track ) );
                if (track > 0) {
                    SetWindowText ( hTrackVols[track-1], s );
                }
            }
            break;
        }

    }

}