13#ifndef __midiContextVisitor__
14#define __midiContextVisitor__
21#include "notevisitor.h"
22#include "transposevisitor.h"
38 public visitor<S_score_instrument>,
39 public visitor<S_instrument_name>,
40 public visitor<S_instrument_abbreviation>
63 public visitor<S_midi_instrument>,
68 public visitor<S_midi_unpitched>,
82 midiInstrument() : fChan(-1), fBank(-1), fProgram(-1), fVolume(-1), fUnpitched(-1) {}
100 enum pedalType { kDamperPedal, kSoftpedal, kSostenutoPedal };
105 virtual void newInstrument (std::string
instrName,
int chan=-1) = 0;
106 virtual void endPart (
long date) = 0;
109 virtual void tempoChange (
long date,
int bpm) = 0;
110 virtual void pedalChange (
long date, pedalType
t,
int value) = 0;
112 virtual void volChange (
long date,
int chan,
int vol) = 0;
113 virtual void bankChange (
long date,
int chan,
int bank) = 0;
114 virtual void progChange (
long date,
int chan,
int prog) = 0;
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 long fPendingDuration;
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; }
169 virtual void playTempoChange (
long bmp);
170 virtual void playPedalChange (midiwriter::pedalType type,
const std::string&
val);
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; }
188 virtual void visitEnd (
S_sound&
elt ) { fInSound =
false; }
the smart pointer implementation
Definition smartpointer.h:58
midi-instrument data
Definition midicontextvisitor.h:70
std::string fID
the midi-instrument id
Definition midicontextvisitor.h:91
int fVolume
a percentage from 0 to 100 (-1 when undefined)
Definition midicontextvisitor.h:88
int fBank
an optional MIDI bank number (-1 when undefined)
Definition midicontextvisitor.h:86
int fUnpitched
a note number from 1 to 127 (-1 when undefined)
Definition midicontextvisitor.h:89
std::string fMIDIName
MIDI names correspond to ProgramName meta-events within a Standard MIDI File.
Definition midicontextvisitor.h:90
int fProgram
a MIDI program change (-1 when undefined)
Definition midicontextvisitor.h:87
int fChan
an optional MIDI channel (-1 when undefined)
Definition midicontextvisitor.h:85
A Visitor that maintains a context for MIDI generation.
Definition midicontextvisitor.h:137
An abstract interface to be used with midicontextvisitor.
Definition midicontextvisitor.h:98
A note visitor.
Definition notevisitor.h:87
score-instrument data
Definition midicontextvisitor.h:41
std::string fID
the score-instrument id
Definition midicontextvisitor.h:54
std::string fName
the score instrument name
Definition midicontextvisitor.h:52
std::string fAbbreviation
the instrument abbreviated name
Definition midicontextvisitor.h:53
a musicxml transpose element visitor
Definition transposevisitor.h:36