你们大多数人可能都知道C大尺度:
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#major / ionian中,您使用F ##而不是G;音乐家只会看看五角星在哪里,他们已经了解了每种音阶的偶然性。确实,在G#大调中,F ##在F ##的行中没有偶然出现,偶然出现在密钥签名中-但由于该密钥签名需要F的两个尖锐字符,因此通常将其标记为Ab Major。
改变2 2 1 2 2 2 1
间隔,我们得出全音阶的七个不同模式:
- 爱奥尼亚语:
2 2 1 2 2 2 1
-对应主要比例 - 多利安:
2 1 2 2 2 1 2
- Phrygian:
1 2 2 2 1 2 2
- 吕底安:
2 2 2 1 2 2 1
- Mixolydian:
2 2 1 2 2 1 2
- 风神:
2 1 2 2 1 2 2
-对应于自然的次要音阶,当下降时对应于旋律的次音阶(上升时,旋律的次音阶上升了6度和7度。还有一个谐和的次音阶,与自然的相比上升了7度次要)。 - Locrian:
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
进一步的参考:
那里有多少个(主要和次要)键?为什么?
4
示例中的特征符号没有在上面进行描述-单位和双重利器。仅使用基音和简单专业输出等值的文字是否可以接受?(对于它的价值,我希望您说“ No”并稍微扩展一下规格-看来这个问题可能有很多隐藏的深度)。
—
彼得·泰勒
@PeterTaylor:对。我希望编辑足够。我希望输出显示为七个音符名称及其对应的偶然字符。这是一个相对较大的程序。
—
ninjalj 2012年