jdkmidi class library documentation

Copyright © 2004 J.D. Koftinoff Software, Ltd.

Released under the GNU General Public License (GPL)




Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

jdkmidi::MIDISequencerTrackProcessor Class Reference

#include <sequencer.h>

Inheritance diagram for jdkmidi::MIDISequencerTrackProcessor:

jdkmidi::MIDIProcessor List of all members.

Public Member Functions

 MIDISequencerTrackProcessor ()
virtual ~MIDISequencerTrackProcessor ()
virtual void Reset ()
virtual bool Process (MIDITimedBigMessage *msg)

Public Attributes

bool mute
bool solo
int velocity_scale
int rechannel
int transpose
MIDIProcessorextra_proc

Constructor & Destructor Documentation

jdkmidi::MIDISequencerTrackProcessor::MIDISequencerTrackProcessor  ) 
 

Definition at line 194 of file jdkmidi_sequencer.cpp.

00195     :
00196     mute(false),
00197     solo(false),
00198     velocity_scale(100),
00199     rechannel(-1),
00200     transpose(0),
00201     extra_proc(0)
00202   {
00203   } 
  

jdkmidi::MIDISequencerTrackProcessor::~MIDISequencerTrackProcessor  )  [virtual]
 

Definition at line 206 of file jdkmidi_sequencer.cpp.

00207   {
00208   } 


Member Function Documentation

bool jdkmidi::MIDISequencerTrackProcessor::Process MIDITimedBigMessage msg  )  [virtual]
 

Implements jdkmidi::MIDIProcessor.

Definition at line 221 of file jdkmidi_sequencer.cpp.

References extra_proc, jdkmidi::MIDIMessage::GetNote(), jdkmidi::MIDIMessage::GetVelocity(), jdkmidi::MIDIMessage::IsChannelMsg(), jdkmidi::MIDIMessage::IsNoOp(), jdkmidi::MIDIMessage::IsNoteOff(), jdkmidi::MIDIMessage::IsNoteOn(), jdkmidi::MIDIMessage::IsPolyPressure(), mute, jdkmidi::MIDIProcessor::Process(), rechannel, jdkmidi::MIDIMessage::SetChannel(), jdkmidi::MIDIMessage::SetNote(), jdkmidi::MIDIMessage::SetVelocity(), transpose, and velocity_scale.

00222   {
00223     
00224     // are we muted?
00225     
00226     if( mute )
00227     {
00228       // yes, ignore event.
00229       return false;
00230     }
00231     
00232     // is the event a NoOp?
00233     
00234     if( msg->IsNoOp() )
00235     {
00236       // yes, ignore event.
00237       
00238       return false;
00239     }
00240     
00241     // pass the event to our extra_proc if we have one
00242     
00243     if( extra_proc && extra_proc->Process(msg)==false )
00244     {
00245       // extra_proc wanted to ignore this event
00246       return false;
00247     }
00248     
00249     // is it a normal MIDI channel message?
00250     if( msg->IsChannelMsg() )
00251     {
00252       // yes, are we to re-channel it?
00253       if( rechannel!=-1 )
00254       {
00255         msg->SetChannel( (unsigned char)rechannel );
00256       }
00257       
00258       // is it a note on message?
00259       if( msg->IsNoteOn() && msg->GetVelocity()>0 )
00260       {
00261         // yes, scale the velocity value as required
00262         
00263         int vel = (int)msg->GetVelocity();
00264         
00265         vel = vel*velocity_scale / 100;
00266         
00267         // make sure velocity is never less than 0
00268         
00269         if( vel<0 )
00270         {
00271           vel=0;
00272         }
00273         
00274         // rewrite the velocity
00275         
00276         msg->SetVelocity( (unsigned char)vel );
00277         
00278       }
00279       
00280       // is it a type of event that needs to be transposed?
00281       
00282       if( msg->IsNoteOn() || msg->IsNoteOff() || msg->IsPolyPressure() )
00283       {
00284         int new_note = ((int)msg->GetNote())+transpose;
00285         
00286         if( new_note>=0 && new_note<=127 )
00287         {
00288           // set new note number
00289           msg->SetNote( (unsigned char)new_note );
00290         }
00291         else
00292         {
00293           // otherwise delete this note - transposed value is out of range
00294           return false;
00295         }
00296         
00297       }
00298       
00299     }
00300     
00301     return true;
00302   } 

void jdkmidi::MIDISequencerTrackProcessor::Reset  )  [virtual]
 

Definition at line 211 of file jdkmidi_sequencer.cpp.

References mute, rechannel, solo, transpose, and velocity_scale.

00212   {
00213     mute=false;
00214     solo=false;
00215     velocity_scale=100;
00216     rechannel=-1;
00217     transpose=0;
00218   } 


Member Data Documentation

MIDIProcessor* jdkmidi::MIDISequencerTrackProcessor::extra_proc
 

Definition at line 213 of file sequencer.h.

bool jdkmidi::MIDISequencerTrackProcessor::mute
 

Definition at line 207 of file sequencer.h.

int jdkmidi::MIDISequencerTrackProcessor::rechannel
 

Definition at line 210 of file sequencer.h.

bool jdkmidi::MIDISequencerTrackProcessor::solo
 

Definition at line 208 of file sequencer.h.

int jdkmidi::MIDISequencerTrackProcessor::transpose
 

Definition at line 211 of file sequencer.h.

int jdkmidi::MIDISequencerTrackProcessor::velocity_scale
 

Definition at line 209 of file sequencer.h.


The documentation for this class was generated from the following files: