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