00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 #ifndef __TMidiInstrument__
00026 #define __TMidiInstrument__
00027 
00028 #include "exports.h"
00029 #include "smartpointer.h"
00030 #include "TScoreVisitor.h"
00031 #include <string>
00032 
00033 namespace MusicXML 
00034 {
00043 class EXP TMidiInstrument : public visitable, public smartable {
00044     
00045     public:
00046         enum { undefined = -1 };
00047         EXP friend SMARTP<TMidiInstrument> newMidiInstrument(string id);
00048 
00050         void    setID (const string& id);
00052         void    setChannel (long chan);
00054         void    setName (const string& name);
00056         void    setBank (long bank);
00058         void    setProgram (long prog);
00063         void    setUnpitched (long pitch)   { fMidiUnpitched = pitch; }
00064 
00065         const string&   getID () const      { return fID; }
00066         long    getChannel () const         { return fMidiChannel; }
00067         const string&   getName () const    { return fMidiName; }
00068         long    getBank () const            { return fMidiBank; }
00069         long    getProgram () const         { return fMidiProgram; }
00070         long    getUnpitched () const       { return fMidiUnpitched; }
00071 
00072         virtual void accept(TScoreVisitor& visitor);
00073         
00074     protected:
00075         TMidiInstrument(string ident)
00076                 :fID(ident), fMidiChannel(undefined),fMidiBank(undefined),
00077                 fMidiProgram(undefined),fMidiUnpitched(undefined){}
00078         virtual ~TMidiInstrument() {}
00079 
00080     private:
00081         string  fID;
00082         long    fMidiChannel;
00083         string  fMidiName;
00084         long    fMidiBank;
00085         long    fMidiProgram;
00086         long    fMidiUnpitched;
00087 };
00088 typedef SMARTP<TMidiInstrument> SMidiInstrument;
00089 
00090 } 
00091 
00092 
00093 #endif