Тональные функции
Эти функции используют tonaljs для предоставления помощников для музыкальных операций.
voicing()
Преобразует символы chord в voicing. Вы можете использовать следующие параметры управления:
chord: нота, за которой следует символ chord, например C Am G7 Bb^7dict: словарь voicing для использования, по умолчанию используется словарь по умолчаниюanchor: нота, которая используется для выравнивания chordmode: как voicing выравнивается относительно anchorbelow: верхняя нота <= anchorduck: верхняя нота <= anchor, anchor исключаетсяabove: нижняя нота >= anchor
offset: целое число, которое сдвигает voicing вверх или вниз к следующему voicingn: если установлено, voicing играется как scale. Выходящие за пределы числа будут октавированы
Все вышеперечисленные параметры являются необязательными, кроме chord.
Если вы передаете pattern строк в voicing, они будут интерпретированы как chord.
n("0 1 2 3").chord("<C Am F G>").voicing()Вот пример того, как можно играть аккорды и басовую линию:
chord("<C^7 A7b13 Dm7 G7>*2")
.dict('ireal').layer(
x=>x.struct("[~ x]*2").voicing()
,
x=>n("0*4").set(x).mode("root:g2").voicing()
.s('sawtooth').cutoff("800:4:2")
)scale(name)
Преобразует числа в ноты в scale (с нулевой индексацией) или квантизует ноты к scale.
При описании нот через числа обратите внимание, что отрицательные числа могут использоваться для движения назад по scale, а также диезы или бемоли для получения нот вне scale.
Также устанавливает scale для других операций со scale, таких как Pattern#scaleTranspose.
Scale состоит из основной ноты (например, c4, c, f#, bb4), за которой следует двоеточие (':'), а затем тип scale.
Название scale должно быть написано без пробелов (потому что иначе оно будет интерпретировано как многошаговый pattern). Если название вашей scale содержит пробелы, замените их на двоеточия.
Основная нота по умолчанию находится в октаве 3, если номер октавы не указан.
- scale (string): Название scale
n("0 2 4 6 4 2").scale("C:major")n("[0,7] 4 [2,7] 4")
.scale("C:<major minor>/2")
.s("piano")n(rand.range(0,12).segment(8))
.scale("C:ritusen")
.s("piano")n("<[0,7b] [-4# -4] [-2,7##] 4 [0,7] [-4# -4b] [-2,7###] 4b>*4")
.scale("C:<major minor>/2")
.s("piano")note("C1*16").transpose(irand(36)).scale('Cb2 major').scaleTranspose(3)n("[0 0] [1 2] [3 4] [5 6]").scale("C:major:blues")transpose(semitones)
Транспонирует все ноты на заданное количество полутонов:
Этот метод становится действительно интересным, когда мы используем его с pattern, как показано выше.
Вместо чисел можно использовать научную нотацию интервалов:
scaleTranspose(steps)
Транспонирует ноты внутри гаммы на количество шагов:
"[-8 [2,4,6]]*2"
.scale('C4 bebop major')
.scaleTranspose("<0 -1 -2 -3 -4 -5 -6 -4>*2")
.note()rootNotes(octave = 2)
Превращает символы аккордов в основные ноты аккордов в заданной октаве.
Вместе с layer, struct и voicings это может быть использовано для создания базового аккомпанемента:
"<C^7 A7b13 Dm7 G7>*2".layer(
x => x.voicings('lefthand').struct("[~ x]*2").note(),
x => x.rootNotes(2).note().s('sawtooth').cutoff(800)
)