8 #ifndef __VRV_TRANSPOSE_H__
9 #define __VRV_TRANSPOSE_H__
18 #define INVALID_INTERVAL_CLASS -123456789
47 TransPitch(
int aPname,
int anAccid,
int anOct);
48 TransPitch(data_PITCHNAME pname, data_ACCIDENTAL_GESTURAL_basic accidG, data_ACCIDENTAL_WRITTEN accidW,
int oct);
62 data_ACCIDENTAL_GESTURAL_basic GetAccidGesBasic()
const;
63 data_ACCIDENTAL_GESTURAL GetAccidGes()
const;
64 data_ACCIDENTAL_WRITTEN GetAccidWritten()
const;
65 data_PITCHNAME GetPitchName()
const;
66 std::u32string GetPitchString()
const;
67 std::string GetSimplePitchString()
const;
68 bool IsValid(
int maxAccid);
69 void SetPitch(
int aPname,
int anAccid,
int anOct);
75 static int GetChromaticAlteration(data_ACCIDENTAL_GESTURAL accidG, data_ACCIDENTAL_WRITTEN accidW);
76 static int GetChromaticAlteration(data_ACCIDENTAL_GESTURAL_basic accidG, data_ACCIDENTAL_WRITTEN accidW);
79 std::ostream &operator<<(std::ostream &out,
const TransPitch &pitch);
93 void SetMaxAccid(
int maxAccid);
102 bool SetTransposition(
int transVal);
103 bool SetTransposition(
const std::string &transString);
104 bool SetTransposition(
const TransPitch &fromPitch,
const std::string &toString);
105 bool SetTransposition(
int keyFifths,
int semitones);
106 bool SetTransposition(
int keyFifths,
const std::string &semitones);
109 int GetTranspositionIntervalClass();
110 std::string GetTranspositionIntervalName();
114 int Transpose(
int iPitch);
117 void Transpose(
TransPitch &pitch,
int transVal);
118 void Transpose(
TransPitch &pitch,
const std::string &transString);
122 std::string GetIntervalName(
int intervalClass);
123 int GetInterval(
const std::string &intervalName);
126 int TransPitchToIntegerPitch(
const TransPitch &pitch);
127 TransPitch IntegerPitchToTransPitch(
int ipitch);
131 std::string SemitonesToIntervalName(
int keyFifths,
int semitones);
132 int SemitonesToIntervalClass(
int keyFifths,
int semitones);
133 int IntervalToSemitones(
int intervalClass);
134 int IntervalToSemitones(
const std::string &intervalName);
137 int IntervalToCircleOfFifths(
const std::string &transString);
138 int IntervalToCircleOfFifths(
int transval);
139 std::string CircleOfFifthsToIntervalName(
int fifths);
140 int CircleOfFifthsToIntervalClass(
int fifths);
143 bool GetKeyTonic(
const std::string &keyTonic,
TransPitch &tonic);
144 TransPitch CircleOfFifthsToMajorTonic(
int fifths);
145 TransPitch CircleOfFifthsToMinorTonic(
int fifths);
146 TransPitch CircleOfFifthsToDorianTonic(
int fifths);
147 TransPitch CircleOfFifthsToPhrygianTonic(
int fifths);
148 TransPitch CircleOfFifthsToLydianTonic(
int fifths);
149 TransPitch CircleOfFifthsToMixolydianTonic(
int fifths);
150 TransPitch CircleOfFifthsToLocrianTonic(
int fifths);
153 std::string DiatonicChromaticToIntervalName(
int diatonic,
int chromatic);
154 int DiatonicChromaticToIntervalClass(
int diatonic,
int chromatic);
155 void IntervalToDiatonicChromatic(
int &diatonic,
int &chromatic,
int intervalClass);
156 void IntervalToDiatonicChromatic(
int &diatonic,
int &chromatic,
const std::string &intervalName);
161 int PerfectUnisonClass();
162 int MinorSecondClass();
163 int MajorSecondClass();
164 int MinorThirdClass();
165 int MajorThirdClass();
166 int PerfectFourthClass();
167 int PerfectFifthClass();
168 int MinorSixthClass();
169 int MajorSixthClass();
170 int MinorSeventhClass();
171 int MajorSeventhClass();
172 int PerfectOctaveClass();
175 int GetCPitchClass() {
return m_diatonicMapping[0]; }
176 int GetDPitchClass() {
return m_diatonicMapping[1]; }
177 int GetEPitchClass() {
return m_diatonicMapping[2]; }
178 int GetFPitchClass() {
return m_diatonicMapping[3]; }
179 int GetGPitchClass() {
return m_diatonicMapping[4]; }
180 int GetAPitchClass() {
return m_diatonicMapping[5]; }
181 int GetBPitchClass() {
return m_diatonicMapping[6]; }
188 static bool IsValidIntervalName(
const std::string &name);
189 static bool IsValidKeyTonic(
const std::string &name);
190 static bool IsValidSemitones(
const std::string &name);
203 std::vector<int> m_diatonicMapping;
206 const std::vector<int> m_diatonic2semitone{ 0, 2, 4, 5, 7, 9, 11 };
209 void CalculateDiatonicMapping();
Definition: transposition.h:35
Definition: transposition.h:87