int generator::getNoteFrequencyByIndex(const Chord& tonicChord, int index){ // 1-indexation here int octave = 0; while (index < 1){ octave--; index += 7; } while (index > 7){ octave++; index -= 7; } int baseFrequency = tonicChord.getNote().getFrequency() + octave * 12; // FixMe: do not use switches for this //later if (tonicChord.getMode() == MAJOR){ switch(index){ case 1: return baseFrequency + 0; case 2: return baseFrequency + 2; case 3: return baseFrequency + 4; case 4: return baseFrequency + 5; case 5: return baseFrequency + 7; case 6: return baseFrequency + 9; case 7: return baseFrequency + 11; default: return baseFrequency + 12; } } else { switch(index){ case 1: return baseFrequency + 0; case 2: return baseFrequency + 2; case 3: return baseFrequency + 3; case 4: return baseFrequency + 5; case 5: return baseFrequency + 7; case 6: return baseFrequency + 8; case 7: return baseFrequency + 10; default: return baseFrequency + 12; } } }