Понимание аккордов и Voicings
Давайте глубже погрузимся в то, как работают аккорды и voicings в strudel. Я постараюсь свести теоретический жаргон к минимуму, так что, надеюсь, это будет доступно для всех заинтересованных.
Что такое аккорд
Игра более чем одной ноты одновременно обычно называется аккордом. Вот пример:
note("<[c3,eb3,g3] [f3,a3,c4]>").room(.5)Вот то же самое с midi-номерами:
note("<[48,51,55] [53,57,60]>").room(.5)Здесь у нас два 3-нотных аккорда, воспроизводимых в цикле. Вы могли бы уже остановиться здесь и писать аккорды в этом стиле, что вполне нормально и дает вам контроль над отдельными нотами. Один недостаток заключается в том, что может быть сложно найти хорошо звучащие аккорды, и, возможно, вы жаждете какого-то другого способа организации аккордов.
Обозначение аккордов
Аккорды обычно получают разные метки в зависимости от соотношения нот внутри.
В числовом примере выше у нас есть 48,51,55 и 53,57,60.
Чтобы проанализировать соотношение этих нот, их обычно сравнивают с каким-то основным тоном, который часто является самой низкой нотой.
В нашем случае основными тонами будут 48 (= c3) и 53 (= f3).
Мы можем выразить те же аккорды относительно этих основных тонов так:
note("<[0,3,7] [0,4,7]>".add("<48 53>")).room(.5)Теперь внутри каждого аккорда каждое число представляет расстояние от основного тона.
Расстояние между питчами обычно называется интервалом, но пока давайте будем придерживаться понятия расстояние.
Теперь мы видим, что наши 2 аккорда на самом деле довольно похожи, так как единственное различие - средняя нота (и основной тон, конечно).
Они являются частью группы аккордов, называемых трезвучиями, которые являются аккордами с 3 нотами.
Трезвучия
Эти 4 формы являются наиболее распространенными типами трезвучий, с которыми вы столкнетесь:
| форма | обозначение |
|---|---|
| 0,4,7 | мажорное |
| 0,3,7 | минорное |
| 0,3,6 | уменьшенное |
| 0,4,8 | увеличенное |
Вот они по порядку:
note("<[0,4,7] [0,3,7] [0,3,6] [0,4,8]>".add("60"))
.room(.5)._pitchwheel()Многие типы музыки часто используют только минорные и мажорные аккорды, так что у нас уже есть знания для аккомпанемента песен. Вот одна из них:
note(`< [0,3,7] [0,4,7] [0,4,7] [0,4,7] [0,3,7] [0,4,7] [0,3,7] [0,4,7] >`.add(`< a c d f a e a e >`)).room(.5)
Это аккорды для “The House of the Rising Sun” группы The Animals. Пока это звучит не слишком захватывающе, но, по крайней мере, узнаваемо.
Voicings
Voicing - это один из многих способов расположения определенной формы аккорда.
Термин происходит из хоровой музыки, где аккорды могут быть спеты по-разному путем назначения разных нот каждому голосу.
Например, мы могли бы добавить 12 полутонов к одной или нескольким нотам в аккорде:
note("<[0,3,7] [12,3,7] [12,15,7] [12,15,19]>".add("48"))
.room(.5)Ноты, находящиеся на расстоянии 12 полутоновых шагов (= 1 октава), считаются равными в гармоническом смысле, поэтому они получают одну и ту же нотную букву.
Вот тот же пример с нотными буквами:
note("<[c3,eb3,g3] [c4,eb3,g3] [c4,eb4,g3] [c4,eb4,g4]>")
.room(.5)Эти типы voicings также называются обращениями. Существует много других способов, которыми мы могли бы озвучить этот минорный аккорд:
note("<[0,3,7,12] [0,15,24] [0,3,12]>".add("48"))
.room(.5)Здесь мы немного меняем вкус аккорда путем
- удвоения нот на 12 шагов выше,
- использования очень широких расстояний
- пропуска нот
Voice Leading
Когда мы хотим осмысленно соединить аккорды в последовательности, выбранные voicings влияют на то, как каждый аккорд переходит к следующему. Давайте вернемся к “The House of the Rising Sun”, на этот раз используя наши недавно приобретенные техники voicing:
note(`< [0,3,7] [7,12,16] [0,7,16] [4,7,12] [0,3,7] [4,7,12] [0,3,7] [4,7,12] >`.add(`< a c d f a e a e >`)).room(.5)
Эти voicings делают аккорды более связными и менее скачкообразными по сравнению с предыдущей версией, которая не фокусировалась на voicing.
Способ взаимодействия аккордов также называется голосоведением, напоминающим о том, как
индивидуальный хоровой голос двигался бы через последовательность аккордов.
Например, попробуйте спеть верхний голос в примере выше. Затем попробуйте то же самое в примере, не фокусирующемся на голосоведении. Какой легче?
Естественно, есть много способов, которыми прогрессия аккордов может быть озвучена, и нет определенного правильного или неправильного.
Символы аккордов
Музыканты, играющие музыку на основе аккордов, часто используют лид-шит, который является упрощенной нотацией для музыкального произведения.
Эти листы сжимают основные элементы, такие как аккорды, в символы, которые делают музыку легкой для чтения и следования.
Например, лид-шит для “The House of the Rising Sun” может включать аккорды, написанные так:
Am | C | D | F
Am | E | Am | E
Здесь каждый символ состоит из основного тона аккорда и опционально m для обозначения минорного аккорда (только основной тон означает мажорный).
Мы могли бы зеркально отразить эту нотацию в strudel, используя функцию pick:
"<Am C D F Am E Am E>"
.pick({
Am: "57,60,64",
C: "55,60,64",
D: "50,57,66",
F: "57,60,65",
E: "56,59,64",
})
.note().room(.5)Функция voicing
Придумывание хорошо звучащих voicings, которые хорошо соединяются, может быть трудным и трудоемким процессом.
Функции chord и voicing могут использоваться для автоматизации этого:
chord("<Am C D F Am E Am E>").voicing().room(.5)Здесь мы также используем символы аккордов, но voicings будут автоматически сгенерированы с плавным голосоведением, минимизирующим скачки.
Это вдохновлено тем, как пианист или гитарист выбирал бы аккорды для аккомпанемента песни.
Словари Voicing
Функция voicing внутренне использует так называемые словари voicing, которые также могут быть настроены:
addVoicings('house', {
'': ['7 12 16', '0 7 16', '4 7 12'],
'm': ['0 3 7']
})
chord("<Am C D F Am E Am E>")
.dict('house').anchor(66)
.voicing().room(.5)В словаре voicing каждому символу аккорда назначается один или несколько voicings.
Функция voicing затем выбирает voicing, который ближе всего к anchor (по умолчанию c5).
Удобная вещь в этом подходе заключается в том, что словарь voicing может использоваться для воспроизведения любой прогрессии аккордов с автоматизированным голосоведением!
Словарь по умолчанию
При использовании словаря по умолчанию вы можете использовать эти символы аккордов:
2 5 6 7 9 11 13 69 add9
o h sus ^ - ^7 -7 7sus
h7 o7 ^9 ^13 ^7#11 ^9#11
^7#5 -6 -69 -^7 -^9 -9
-add9 -11 -7b5 h9 -b6 -#5
7b9 7#9 7#11 7b5 7#5 9#11
9b5 9#5 7b13 7#9#5 7#9b5
7#9#11 7b9#11 7b9b5 7b9#5
7b9#9 7b9b13 7alt 13#11
13b9 13#9 7b9sus 7susadd3
9sus 13sus 7b13sus
aug M m M7 m7 M9 M13
M7#11 M9#11 M7#5 m6 m69
m^7 -M7 m^9 -M9 m9 madd9
m11 m7b5 mb6 m#5 mM7 mM9
Доступные аккорды и формат очень вдохновлены аккордами ireal pro. Некоторые символы являются синонимами:
- ”-” то же самое, что “m”, например C-7 = Cm7
- ”^” то же самое, что “M”, например C^7 = CM7
- ”+” то же самое, что “aug”
Вы можете решить, какие вам больше нравятся. Не существует международного стандарта для этих символов. Чтобы получить полный аккорд, символы должны иметь префикс с основным питчем, например D7#11 - это аккорд 7#11 относительно питча D.
Вот все возможные аккорды с основным тоном C:
chord(`< C2 C5 C6 C7 C9 C11 C13 C69 Cadd9 Co Ch Csus C^ C- C^7 C-7 C7sus Ch7 Co7 C^9 C^13 C^7#11 C^9#11 C^7#5 C-6 C-69 C-^7 C-^9 C-9 C-add9 C-11 C-7b5 Ch9 C-b6 C-#5 C7b9 C7#9 C7#11 C7b5 C7#5 C9#11 C9b5 C9#5 C7b13 C7#9#5 C7#9b5 C7#9#11 C7b9#11 C7b9b5 C7b9#5 C7b9#9 C7b9b13 C7alt C13#11 C13b9 C13#9 C7b9sus C7susadd3 C9sus C13sus C7b13sus C Caug CM Cm CM7 Cm7 CM9 CM13 CM7#11 CM9#11 CM7#5 Cm6 Cm69 Cm^7 C-M7 Cm^9 C-M9 Cm9 Cmadd9 Cm11 Cm7b5 Cmb6 Cm#5 >`).voicing().room(.5)
Обратите внимание, что словарь по умолчанию содержит несколько способов (= voicings) для воспроизведения каждого символа аккорда.
По умолчанию функция voicing пытается минимизировать скачки.
Вы можете изменить выбранные voicings различными способами, которые теперь объясняются более подробно:
anchor
Anchor - это нота, которая используется для выравнивания voicings:
anchor("<c4 g4 c5 g5>").chord("C").voicing().room(.5)По умолчанию anchor - это самая высокая возможная нота, которую может содержать voicing. При принятии решения, какой voicing из словаря выбрать для определенного аккорда, побеждает voicing с верхней нотой, ближайшей к anchor.
Обратите внимание, что anchors в примере выше совпадают с верхними нотами на пиано-ролле.
Как и note, anchor принимает либо midi-номера, либо названия нот.
mode
С помощью mode вы можете изменить способ, которым voicing относится к anchor:
mode("<below above duck root>").chord("C").anchor("c5").voicing().room(.5)Режимы:
below: верхняя нота voicing ниже или равна anchor (по умолчанию)above: нижняя нота voicing выше или равна anchorduck: верхняя нота voicing ниже anchorroot: нижняя нота voicing всегда является основным тоном, ближайшим к anchor
Anchor также может быть установлен изнутри функции mode:
mode("<below above duck root>:c5").chord("C").voicing().room(.5)n
Контрол n может использоваться с voicing для выбора отдельных нот:
n("0 3 1 2").chord("<C <Fm Db>>").voicing()
.clip("4 3 2 1").room(.5)Пример
Вот пример джазового блюза в F:
let chords = chord(`<
F7 Bb7 F7 [Cm7 F7]
Bb7 Bo F7 [Am7 D7]
Gm7 C7 [F7 D7] [Gm7 C7]
>`)
$: n("7 8 [10 9] 8").set(chords).voicing().dec(.2)
$: chords.struct("- x - x").voicing().room(.5)
$: n("0 - 1 -").set(chords).mode("root:g2").voicing()
Аккорды повторно используются для мелодии, аккордов и басовой линии композиции.