62class EXP midiInstrument :
63 public visitor<S_midi_instrument>,
68 public visitor<S_midi_unpitched>,
73 virtual void visitStart( S_midi_instrument& elt );
74 virtual void visitStart( S_midi_channel& elt );
75 virtual void visitStart( S_midi_name& elt );
76 virtual void visitStart( S_midi_bank& elt );
77 virtual void visitStart( S_midi_program& elt );
78 virtual void visitStart( S_volume& elt );
79 virtual void visitStart( S_midi_unpitched& elt );
83 virtual ~midiInstrument() {}
124class EXP midicontextvisitor :
126 public transposevisitor,
127 public midiInstrument,
128 public scoreInstrument,
139 typedef std::multimap<std::string, scoreInstrument> instrumentsList;
140 typedef std::map<std::string, midiInstrument> midi_instrumentsList;
141 instrumentsList fScoreInstruments;
142 midi_instrumentsList fMidiInstruments;
143 std::string fCurrentPartID;
148 long fEndMeasureDate;
156 std::map<int, long> fPendingDurations;
157 long fCurrentDynamics;
162 void addDuration(
long dur);
163 long convert2Tick(
long val) {
return (val*fTPQ)/fDivisions; }
164 long convert2Vel(
long val) {
return (val * 90) / 100; }
166 virtual void playScoreInstrument (
const scoreInstrument& instr);
167 virtual void playMidiInstrument (
const midiInstrument& instr);
168 virtual void playNote (
const notevisitor& note);
169 virtual void playTempoChange (
long bmp);
170 virtual void playPedalChange (midiwriter::pedalType type,
const std::string& val);
172 virtual void visitStart( S_divisions& elt );
173 virtual void visitStart( S_duration& elt );
174 virtual void visitStart( S_backup& elt ) { fInBackup =
true; }
175 virtual void visitEnd ( S_backup& elt ) { fInBackup =
false; }
176 virtual void visitStart( S_forward& elt ) { fInForward =
true; }
177 virtual void visitEnd ( S_forward& elt ) { fInForward =
false; }
178 virtual void visitEnd ( S_score_instrument& elt );
179 virtual void visitStart( S_midi_device& elt );
180 virtual void visitEnd ( S_midi_instrument& elt );
181 virtual void visitEnd ( S_measure& elt );
182 virtual void visitStart( S_part& elt );
183 virtual void visitEnd ( S_part& elt );
184 virtual void visitEnd ( S_note& elt );
185 virtual void visitStart( S_score_part& elt );
186 virtual void visitEnd ( S_score_part& elt );
187 virtual void visitStart( S_sound& elt );
188 virtual void visitEnd ( S_sound& elt ) { fInSound =
false; }
189 virtual void visitEnd ( S_transpose& elt );
192 midicontextvisitor(
long tpq,
midiwriter* writer=0);
193 virtual ~midicontextvisitor();