#include <matrix.h>
Public Member Functions | |
MIDIMatrix () | |
virtual | ~MIDIMatrix () |
virtual bool | Process (const MIDIMessage &m) |
virtual void | Clear () |
int | GetTotalCount () const |
int | GetChannelCount (int channel) const |
int | GetNoteCount (int channel, int note) const |
bool | GetHoldPedal (int channel) const |
Protected Member Functions | |
virtual void | DecNoteCount (const MIDIMessage &m, int channel, int note) |
virtual void | IncNoteCount (const MIDIMessage &m, int channel, int note) |
virtual void | ClearChannel (int channel) |
virtual void | OtherMessage (const MIDIMessage &m) |
void | SetNoteCount (unsigned char chan, unsigned char note, unsigned char val) |
void | SetChannelCount (unsigned char chan, int val) |
Private Attributes | |
unsigned char | note_on_count [16][128] |
int | channel_count [16] |
bool | hold_pedal [16] |
int | total_count |
|
Definition at line 53 of file jdkmidi_matrix.cpp. References channel_count, ENTER, hold_pedal, note_on_count, and total_count.
00054 { 00055 ENTER("MIDIMatrix::MIDIMatrix()"); 00056 00057 for( int channel=0; channel<16; channel++ ) 00058 { 00059 channel_count[channel]=0; 00060 hold_pedal[channel]= false; 00061 for( unsigned char note=0; note<128; note++ ) 00062 note_on_count[channel][note]=0; 00063 } 00064 00065 total_count=0; 00066 } |
|
Definition at line 68 of file jdkmidi_matrix.cpp. References ENTER.
00069 { 00070 ENTER("MIDIMatrix::~MIDIMatrix()"); 00071 } |
|
Definition at line 151 of file jdkmidi_matrix.cpp. References ClearChannel(), ENTER, and total_count.
00152 { 00153 ENTER( "MIDIMatrix::Clear()" ); 00154 00155 for( int channel=0; channel<16; ++channel ) 00156 { 00157 ClearChannel( channel ); 00158 } 00159 total_count=0; 00160 } |
|
Definition at line 162 of file jdkmidi_matrix.cpp. References channel_count, ENTER, hold_pedal, note_on_count, and total_count.
00163 { 00164 ENTER( "MIDIMatrix::ClearChannel()" ); 00165 00166 for( int note=0; note<128; ++note ) 00167 { 00168 total_count -= note_on_count[channel][note]; 00169 note_on_count[channel][note]=0; 00170 } 00171 channel_count[channel]=0; 00172 hold_pedal[channel]=0; 00173 } |
|
Definition at line 74 of file jdkmidi_matrix.cpp. References channel_count, ENTER, note_on_count, and total_count.
00075 { 00076 ENTER( "MIDIMatrix::DecNoteCount()" ); 00077 00078 if( note_on_count[channel][note]>0 ) 00079 { 00080 --note_on_count[channel][note]; 00081 --channel_count[channel]; 00082 --total_count; 00083 } 00084 } |
|
Definition at line 58 of file matrix.h. References channel_count.
00059 { 00060 return channel_count[channel]; 00061 } |
|
Definition at line 68 of file matrix.h. References hold_pedal.
00069 { 00070 return hold_pedal[channel]; 00071 } |
|
Definition at line 63 of file matrix.h. References note_on_count.
00064 { 00065 return note_on_count[channel][note]; 00066 } |
|
Definition at line 54 of file matrix.h. References total_count.
00055 { 00056 return total_count; 00057 } |
|
Definition at line 86 of file jdkmidi_matrix.cpp. References channel_count, ENTER, note_on_count, and total_count.
00087 { 00088 ENTER( "MIDIMatrix::IncNoteCount()" ); 00089 00090 ++note_on_count[channel][note]; 00091 ++channel_count[channel]; 00092 ++total_count; 00093 } |
|
Definition at line 95 of file jdkmidi_matrix.cpp. References ENTER.
00096 { 00097 ENTER( "MIDIMatrix::OtherMessage()" ); 00098 00099 } |
|
Definition at line 102 of file jdkmidi_matrix.cpp. References jdkmidi::C_DAMPER, ClearChannel(), DecNoteCount(), ENTER, jdkmidi::MIDIMessage::GetChannel(), jdkmidi::MIDIMessage::GetController(), jdkmidi::MIDIMessage::GetControllerValue(), jdkmidi::MIDIMessage::GetNote(), jdkmidi::MIDIMessage::GetVelocity(), hold_pedal, IncNoteCount(), jdkmidi::MIDIMessage::IsAllNotesOff(), jdkmidi::MIDIMessage::IsChannelMsg(), jdkmidi::MIDIMessage::IsControlChange(), jdkmidi::MIDIMessage::IsNoteOff(), jdkmidi::MIDIMessage::IsNoteOn(), and OtherMessage().
00103 { 00104 ENTER( "MIDIMatrix::Process()" ); 00105 00106 bool status=false; 00107 00108 if( m.IsChannelMsg() ) 00109 { 00110 int channel=m.GetChannel(); 00111 int note=m.GetNote(); 00112 00113 if( m.IsAllNotesOff() ) 00114 { 00115 ClearChannel( channel ); 00116 status=true; 00117 } 00118 else 00119 if( m.IsNoteOn() ) 00120 { 00121 if( m.GetVelocity()!=0 ) 00122 IncNoteCount( m, channel, note ); 00123 else 00124 DecNoteCount( m, channel, note ); 00125 status=true; 00126 } 00127 else 00128 if( m.IsNoteOff() ) 00129 { 00130 DecNoteCount( m, channel, note ); 00131 status=true; 00132 } 00133 else 00134 if( m.IsControlChange() && m.GetController()==C_DAMPER ) 00135 { 00136 if( m.GetControllerValue() & 0x40 ) 00137 { 00138 hold_pedal[channel]=true; 00139 } 00140 else 00141 { 00142 hold_pedal[channel]=false; 00143 } 00144 } 00145 else 00146 OtherMessage( m ); 00147 } 00148 return status; 00149 } |
|
Definition at line 84 of file matrix.h. References channel_count.
00085 { 00086 channel_count[chan]=val; 00087 } |
|
Definition at line 80 of file matrix.h. References note_on_count.
00081 { 00082 note_on_count[chan][note]=val; 00083 } |
|
|
|
|
|
|
|
|