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 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_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()

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()

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()

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()

int getOctave ( Chromatic steps)
inlinestatic

computes an octaves count from a chromatic interval

Parameters
stepsa chromatic steps count
Returns
the count of octaves

◆ getOctaveStep()

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()

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 >.