Більшість із вас, напевно, знають основну шкалу С:
C D E F G A B C
Основна шкала характеризується інтервалами між суміжними нотами, які вимірюються в півтонах :
2 2 1 2 2 2 1
З цих інтервалів ми можемо побудувати будь-яку основну шкалу, починаючи з будь-якої ноти ( ключ шкали). 12 нот нашої 12-тонної системи настроювання рівних темпераментів:
C C♯ D D♯ E F F♯ G G♯ A A♯ B
еквівалентно (замінюючи деякі енгармонічні еквіваленти ):
C D♭ D E♭ E F G♭ G Ab A B♭ B
з півтоном між кожною парою суміжних нот.
Кожна шкала повинна мати сім нот по порядку, починаючи з ключа. Інакше у вас може бути дві ноти в одному рядку пентаграми, що було б заплутано. Отже, у G # мажор / іон, у вас F ## замість G; музиканти просто подивляться, де в пентаграмі є нота, вони вже дізналися випадковість для кожної шкали. Дійсно, у G # мажор F ## представлений у рядку F ## без випадкових випадків, випадкові випадки є в підписі ключа, але оскільки цей підпис ключа потребує 2 різких знаків для F, зазвичай це позначається як Ab major.
Зміщуючи 2 2 1 2 2 2 1
інтервали, ми дістаємось до семи різних режимів діатонічного масштабу:
- Іонічний :
2 2 1 2 2 2 1
- відповідає основній шкалі - Доріан :
2 1 2 2 2 1 2
- Фрігійська :
1 2 2 2 1 2 2
- Лідійський :
2 2 2 1 2 2 1
- Міксолійський :
2 2 1 2 2 1 2
- Еоловий :
2 1 2 2 1 2 2
- відповідає природній мінорній шкалі і мелодичній мінорній шкалі при спаді (при висхідній мелодійній мінорній шкалі піднявся 6-й і 7-й градуси. Існує також гармонічна мінорна шкала, піднята 7-ю ступінь порівняно з природною неповнолітній). - Локар :
1 2 2 1 2 2 2
Отже, завдання полягає в тому, щоб написати програму, яка приймає за вхід (через stdin ) ключ і режим і виводить (через stdout ) відповідну шкалу. Деякі тестові випадки ( stdin ( key
mode
) => stdout ( scale
)):
Input: Output:
C mixolydian => C D E F G A Bb
F mixolydian => F G A Bb C D Eb
G mixolydian => G A B C D E F
G# ionian => G# A# B# C# D# E# F##
Bb aeolian => Bb C Db Eb F Gb Ab
Подальші посилання:
Скільки (основних та другорядних) клавіш є? Чому?