LibMusicXML 3.22
transposition Class Reference

A visitor that computes a diatonic transposition of a score. More...

#include <transposition.h>

Inheritance diagram for transposition:
notevisitor visitor< S_cancel > visitor< S_fifths > visitor< S_encoding > visitor< S_part > basevisitor basevisitor basevisitor basevisitor visitor< S_staccatissimo > visitor< S_snap_pizzicato > visitor< S_harmonic > visitor< S_down_bow > visitor< S_up_bow > visitor< S_pluck > visitor< S_fingering > visitor< S_tuplet > visitor< S_notehead > visitor< S_accidental_mark > visitor< S_arpeggiate > visitor< S_mordent > visitor< S_inverted_mordent > visitor< S_wavy_line > visitor< S_trill_mark > visitor< S_inverted_turn > visitor< S_tremolo > visitor< S_turn > visitor< S_lyric > visitor< S_voice > visitor< S_unpitched > visitor< S_type > visitor< S_time_modification > visitor< S_tied > visitor< S_tie > visitor< S_tenuto > visitor< S_strong_accent > visitor< S_step > visitor< S_stem > visitor< S_staff > visitor< S_staccato > visitor< S_slur > visitor< S_rest > visitor< S_pitch > visitor< S_octave > visitor< S_note > visitor< S_instrument > visitor< S_grace > visitor< S_fermata > visitor< S_duration > visitor< S_dot > visitor< S_display_step > visitor< S_display_octave > visitor< S_cue > visitor< S_chord > visitor< S_breath_mark > visitor< S_beam > visitor< S_alter > visitor< S_accent >

Public Member Functions

 transposition (int steps)
 
- Public Member Functions inherited from notevisitor
bool isGrace () const
 
bool isCue () const
 
bool inChord () const
 
bool inFermata () const
 
type getType () const
 
int getTie () const
 
int getStaff () const
 
int getVoice () const
 
S_note getSnote () const
 
float getNoteHeadDy (string fCurClef) const
 
std::string getNoteheadType () const
 
bool printObject () const
 
virtual float getMidiPitch () const
 Compute the note MIDI pitch.
 
virtual float getAlter () const
 
virtual int getOctave () const
 
virtual const std::string & getStep () const
 
virtual const std::string & getInstrument () const
 
virtual const std::string & getGraphicType () const
 
virtual const rationalgetTimeModification () const
 
virtual void setStep (const std::string &step)
 
virtual void setOctave (int oct)
 
virtual void setAlter (float alter)
 
virtual long getDynamics () const
 
virtual long getDuration () const
 
virtual int getDots () const
 
virtual void print (std::ostream &out) const
 
virtual const std::vector< Sxmlelement > & getFingerings () const
 
virtual const std::vector< S_tied > & getTied () const
 
virtual const std::vector< S_slur > & getSlur () const
 
virtual const std::vector< S_beam > & getBeam () const
 
virtual const std::vector< S_wavy_line > & getWavylines () const
 
virtual const std::vector< S_tuplet > & getTuplet () const
 
virtual const std::vector< S_lyric > & getLyric () const
 
virtual const std::string & getSyllabic () const
 
virtual const std::string & getLyricText () const
 
virtual const float & getLyricDy () const
 
- Public Member Functions inherited from visitor< S_accent >
virtual void visitEnd (S_accent &elt)
 
- Public Member Functions inherited from basevisitor
- Public Member Functions inherited from visitor< S_alter >
virtual void visitEnd (S_alter &elt)
 
- Public Member Functions inherited from visitor< S_beam >
virtual void visitEnd (S_beam &elt)
 
- Public Member Functions inherited from visitor< S_breath_mark >
virtual void visitEnd (S_breath_mark &elt)
 
- Public Member Functions inherited from visitor< S_chord >
virtual void visitEnd (S_chord &elt)
 
- Public Member Functions inherited from visitor< S_cue >
virtual void visitEnd (S_cue &elt)
 
- Public Member Functions inherited from visitor< S_display_octave >
virtual void visitEnd (S_display_octave &elt)
 
- Public Member Functions inherited from visitor< S_display_step >
virtual void visitEnd (S_display_step &elt)
 
- Public Member Functions inherited from visitor< S_dot >
virtual void visitEnd (S_dot &elt)
 
- Public Member Functions inherited from visitor< S_duration >
virtual void visitEnd (S_duration &elt)
 
- Public Member Functions inherited from visitor< S_fermata >
virtual void visitEnd (S_fermata &elt)
 
- Public Member Functions inherited from visitor< S_grace >
virtual void visitEnd (S_grace &elt)
 
- Public Member Functions inherited from visitor< S_instrument >
virtual void visitEnd (S_instrument &elt)
 
- Public Member Functions inherited from visitor< S_note >
- Public Member Functions inherited from visitor< S_octave >
virtual void visitEnd (S_octave &elt)
 
- Public Member Functions inherited from visitor< S_pitch >
virtual void visitEnd (S_pitch &elt)
 
- Public Member Functions inherited from visitor< S_rest >
virtual void visitEnd (S_rest &elt)
 
- Public Member Functions inherited from visitor< S_slur >
virtual void visitEnd (S_slur &elt)
 
- Public Member Functions inherited from visitor< S_staccato >
virtual void visitEnd (S_staccato &elt)
 
- Public Member Functions inherited from visitor< S_staff >
virtual void visitEnd (S_staff &elt)
 
- Public Member Functions inherited from visitor< S_stem >
virtual void visitEnd (S_stem &elt)
 
- Public Member Functions inherited from visitor< S_step >
virtual void visitEnd (S_step &elt)
 
- Public Member Functions inherited from visitor< S_strong_accent >
virtual void visitEnd (S_strong_accent &elt)
 
- Public Member Functions inherited from visitor< S_tenuto >
virtual void visitEnd (S_tenuto &elt)
 
- Public Member Functions inherited from visitor< S_tie >
virtual void visitEnd (S_tie &elt)
 
- Public Member Functions inherited from visitor< S_tied >
virtual void visitEnd (S_tied &elt)
 
- Public Member Functions inherited from visitor< S_time_modification >
virtual void visitEnd (S_time_modification &elt)
 
- Public Member Functions inherited from visitor< S_type >
virtual void visitEnd (S_type &elt)
 
- Public Member Functions inherited from visitor< S_unpitched >
virtual void visitEnd (S_unpitched &elt)
 
- Public Member Functions inherited from visitor< S_voice >
virtual void visitEnd (S_voice &elt)
 
- Public Member Functions inherited from visitor< S_lyric >
virtual void visitEnd (S_lyric &elt)
 
- Public Member Functions inherited from visitor< S_turn >
virtual void visitEnd (S_turn &elt)
 
- Public Member Functions inherited from visitor< S_tremolo >
virtual void visitEnd (S_tremolo &elt)
 
- Public Member Functions inherited from visitor< S_inverted_turn >
virtual void visitEnd (S_inverted_turn &elt)
 
- Public Member Functions inherited from visitor< S_trill_mark >
virtual void visitEnd (S_trill_mark &elt)
 
- Public Member Functions inherited from visitor< S_wavy_line >
virtual void visitEnd (S_wavy_line &elt)
 
- Public Member Functions inherited from visitor< S_inverted_mordent >
virtual void visitEnd (S_inverted_mordent &elt)
 
- Public Member Functions inherited from visitor< S_mordent >
virtual void visitEnd (S_mordent &elt)
 
- Public Member Functions inherited from visitor< S_arpeggiate >
virtual void visitEnd (S_arpeggiate &elt)
 
- Public Member Functions inherited from visitor< S_accidental_mark >
virtual void visitEnd (S_accidental_mark &elt)
 
- Public Member Functions inherited from visitor< S_notehead >
virtual void visitEnd (S_notehead &elt)
 
- Public Member Functions inherited from visitor< S_tuplet >
virtual void visitEnd (S_tuplet &elt)
 
- Public Member Functions inherited from visitor< S_fingering >
virtual void visitEnd (S_fingering &elt)
 
- Public Member Functions inherited from visitor< S_pluck >
virtual void visitEnd (S_pluck &elt)
 
- Public Member Functions inherited from visitor< S_up_bow >
virtual void visitEnd (S_up_bow &elt)
 
- Public Member Functions inherited from visitor< S_down_bow >
virtual void visitEnd (S_down_bow &elt)
 
- Public Member Functions inherited from visitor< S_harmonic >
virtual void visitEnd (S_harmonic &elt)
 
- Public Member Functions inherited from visitor< S_snap_pizzicato >
virtual void visitEnd (S_snap_pizzicato &elt)
 
- Public Member Functions inherited from visitor< S_staccatissimo >
virtual void visitEnd (S_staccatissimo &elt)
 
- Public Member Functions inherited from visitor< S_cancel >
virtual void visitEnd (S_cancel &elt)
 
- Public Member Functions inherited from visitor< S_fifths >
virtual void visitEnd (S_fifths &elt)
 
- Public Member Functions inherited from visitor< S_encoding >
virtual void visitStart (S_encoding &elt)
 
- Public Member Functions inherited from visitor< S_part >
virtual void visitEnd (S_part &elt)
 

Static Public Member Functions

static int getOctave (Chromatic steps)
 
static Chromatic getOctaveStep (Chromatic steps)
 
static int getKey (Chromatic steps)
 
static int getAccidental (Diatonic pitch, int key)
 
static string getAccident (float alter)
 
static int transposeKey (int key, Chromatic steps, int &enharmonicChange)
 
- Static Public Member Functions inherited from notevisitor
static int step2i (const std::string &step)
 
static std::string i2step (int i)
 

Protected Member Functions

void initialize ()
 
Sxmlelement buildSupport (const string &elt, bool val) const
 
void transpose (string &pitch, float &alter, int &octave, int tableshift) const
 
void setPitch (notevisitor &v)
 
ctree< xmlelement >::iterator insertAlter (S_note &elt, ctree< xmlelement >::iterator pos, float value)
 
ctree< xmlelement >::iterator insertAccident (S_note &elt, ctree< xmlelement >::iterator pos, const string &value)
 
virtual void visitStart (S_part &elt)
 
virtual void visitEnd (S_note &elt)
 
virtual void visitStart (S_cancel &elt)
 
virtual void visitStart (S_fifths &elt)
 
virtual void visitEnd (S_encoding &elt)
 
- Protected Member Functions inherited from notevisitor
void reset ()
 
virtual void visitStart (S_accent &elt)
 
virtual void visitStart (S_alter &elt)
 
virtual void visitStart (S_beam &elt)
 
virtual void visitStart (S_tuplet &elt)
 
virtual void visitStart (S_breath_mark &elt)
 
virtual void visitStart (S_chord &elt)
 
virtual void visitStart (S_cue &elt)
 
virtual void visitStart (S_display_octave &elt)
 
virtual void visitStart (S_display_step &elt)
 
virtual void visitStart (S_dot &elt)
 
virtual void visitStart (S_duration &elt)
 
virtual void visitStart (S_fermata &elt)
 
virtual void visitStart (S_grace &elt)
 
virtual void visitStart (S_instrument &elt)
 
virtual void visitStart (S_note &elt)
 
virtual void visitStart (S_octave &elt)
 
virtual void visitStart (S_pitch &elt)
 
virtual void visitStart (S_rest &elt)
 
virtual void visitStart (S_slur &elt)
 
virtual void visitStart (S_staccato &elt)
 
virtual void visitStart (S_staff &elt)
 
virtual void visitStart (S_stem &elt)
 
virtual void visitStart (S_step &elt)
 
virtual void visitStart (S_strong_accent &elt)
 
virtual void visitStart (S_tenuto &elt)
 
virtual void visitStart (S_tie &elt)
 
virtual void visitStart (S_tied &elt)
 
virtual void visitStart (S_time_modification &elt)
 
virtual void visitStart (S_type &elt)
 
virtual void visitStart (S_unpitched &elt)
 
virtual void visitStart (S_voice &elt)
 
virtual void visitStart (S_lyric &elt)
 
virtual void visitStart (S_turn &elt)
 
virtual void visitStart (S_tremolo &elt)
 
virtual void visitStart (S_trill_mark &elt)
 
virtual void visitStart (S_wavy_line &elt)
 
virtual void visitStart (S_accidental_mark &elt)
 
virtual void visitStart (S_inverted_mordent &elt)
 
virtual void visitStart (S_inverted_turn &elt)
 
virtual void visitStart (S_arpeggiate &elt)
 
virtual void visitStart (S_mordent &elt)
 
virtual void visitStart (S_notehead &elt)
 
virtual void visitStart (S_fingering &elt)
 
virtual void visitStart (S_pluck &elt)
 
virtual void visitStart (S_down_bow &elt)
 
virtual void visitStart (S_up_bow &elt)
 
virtual void visitStart (S_harmonic &elt)
 
virtual void visitStart (S_snap_pizzicato &elt)
 
virtual void visitStart (S_staccatissimo &elt)
 

Protected Attributes

Chromatic fChromaticSteps
 
std::vector< pair< std::string, int > > fFifthCycle
 
int fTableShift
 
int fOctaveChange
 
int fKeySign
 
int fCurrentKeySign
 
- Protected Attributes inherited from notevisitor
bool fInNote
 

Additional Inherited Members

- Public Types inherited from notevisitor
enum  {
  C , D , E , F ,
  G , A , B , last =B ,
  diatonicSteps =last
}
 
enum  type { kUndefinedType , kPitched , kUnpitched , kRest }
 
enum  { kUndefinedDynamics = -1 , kUndefinedStaff = 0 , kUndefinedVoice = 0 }
 
- Public Attributes inherited from notevisitor
S_stem fStem
 
S_accent fAccent
 
S_strong_accent fStrongAccent
 
S_staccato fStaccato
 
S_tenuto fTenuto
 
S_breath_mark fBreathMark
 
S_trill_mark fTrill
 
S_inverted_mordent fInvertedMordent
 
S_mordent fMordent
 
S_turn fTurn
 
S_tremolo fTremolo
 
S_arpeggiate fArpeggio
 
S_inverted_turn fInvertedTurn
 
S_accidental_mark fAccidentalMark
 
S_notehead fNotehead
 
S_fermata fFermata
 
std::string fGraphicType
 
std::string fAccidental
 
std::string fCautionary
 
S_harmonic fHarmonic
 
S_snap_pizzicato fSnapPizzicato
 
S_staccatissimo fStaccatissimo
 
S_up_bow fBowUp
 
S_down_bow fBowDown
 
int x_default
 

Detailed Description

The transposition visitor computes a diatonic transposition of a score. The transposition interval is specified as a number of chromatic steps, the simplest enharmonic diatonic transposition is automatically selected. The operation makes use of a fifth cycle table to compute transposed values.

Todo
transposing ornaments elements

Member Function Documentation

◆ buildSupport()

Sxmlelement buildSupport ( const string & elt,
bool val ) const
protected

Create a support element

Parameters
eltthe target element name
vala boolean denoting support
Returns
a musicxml support element

◆ getAccident()

static string getAccident ( float alter)
static

gives the accident string corresponding to an alter value

Parameters
altera float pitch alter value
Returns
an accidental string (sharp, flat, natural...)

◆ getAccidental()

static int getAccidental ( Diatonic pitch,
int key )
static

gives a note accidental according to a key signature

Parameters
pitcha diatonic pitch (where C=1)
keythe key signature expressed as a number of sharps when > 0 or flats when < 0
Returns
an accidental as a positive value for sharps and negative for flats

◆ getKey()

static int getKey ( Chromatic steps)
static

computes a key sign corresponding to a chromatic degree

Parameters
stepsa chromatic step
Returns
a numeric key signature representing a number of sharps when positive and a number of flats when negative

◆ getOctave()

static int getOctave ( Chromatic steps)
inlinestatic

computes an octaves count from a chromatic interval

Parameters
stepsa chromatic steps count
Returns
the count of octaves

◆ getOctaveStep()

static Chromatic getOctaveStep ( Chromatic steps)
inlinestatic

computes a step number wihin an octave

Parameters
stepsa chromatic steps count
Returns
the step number within an octave

◆ transpose()

void transpose ( string & pitch,
float & alter,
int & octave,
int tableshift ) const
protected

Transpose a pitch expressed as a diatonic value + alteration + octave

Parameters
pitchon input a diatonic pitch value (where C=1), on output the new pitch value
alteron input the accidental value, on output the new accidental value
octaveon input the octave number, on output the new octave number
tableshiftshift in the table of fifth cycle
Returns
the corresponding diatonic steps count

◆ transposeKey()

static int transposeKey ( int key,
Chromatic steps,
int & enharmonicChange )
static

Transpose a key expressed as a count of sharps (positive keys) or flats (negative key). The method may do enharmonic adjustments to choose the simplest key.

Parameters
keythe key to be transposed
stepschromatic transposition steps
enharmonicChangeon output, possible adjustment to enharmonic keys
Returns
the transposed key

◆ visitEnd() [1/2]

virtual void visitEnd ( S_encoding & elt)
protectedvirtual

Reimplemented from visitor< S_encoding >.

◆ visitEnd() [2/2]

virtual void visitEnd ( S_note & elt)
protectedvirtual

Reimplemented from notevisitor.

◆ visitStart() [1/3]

virtual void visitStart ( S_cancel & elt)
protectedvirtual

Reimplemented from visitor< S_cancel >.

◆ visitStart() [2/3]

virtual void visitStart ( S_fifths & elt)
protectedvirtual

Reimplemented from visitor< S_fifths >.

◆ visitStart() [3/3]

virtual void visitStart ( S_part & elt)
protectedvirtual

Reimplemented from visitor< S_part >.