Ксеногармонические функции
Эти функции позволяют использовать гаммы, отличные от типичных хроматических 12-тоновых.
xen(scaleOrRatios)
Предполагает числовой паттерн ступеней лада и сам лад. Принимаются любые предустановленные имена ладов из tune, произвольные EDO, такие как 31edo, или массив частотных отношений. Предполагается, что лады повторяются через октаву (2/1). Возвращает новый паттерн, в котором все значения сопоставлены с соответствующими частотами, при базовой частоте 220hz.
- scaleNameOrRatios (string|Array.<number>):
// A minor triad in 31edo:
i("0 8 18").xen("31edo").piano()// You can also use xen with frequency ratios.
// This is equivalent to the above:
i("0 1 2").xen([
Math.pow(2, 0/31),
Math.pow(2, 8/31),
Math.pow(2, 18/31),
]).piano()// However, with the above you won't get highlighting of the scale indices,
// instead you could do something like:
i("[<2 ->, 0 1 <- 2> 3]*2").xen([
"1:1", // tonic
"5:4", // Major 3rd
"[3:2 4:3]", // Perfect 5th, 4th
"5:3" // Major 6th
]).s("tri")// xen also supports all scale names that
// tune does:
i("0 1 2 3 4 5").xen("hexany15")
// equiv to:
// "0 1 2 3 4 5".tune("hexany15").mul("220").freq()i("0 1 2 3 4 5 6 7").xen("<5edo 10edo 15edo hexany15>")tune(scale)
Вот пример настройки базовой гаммы hexany:
"0 1 2 3 4 5".tune("hexany15").mul("220").freq()Попробуйте другие гаммы, такие как hexany1, iraq, gumbeng, gunkali, или tranh3
Полный список доступных гамм из tunejs см. на http://abbernie.github.io/tune/scales.html
Вы можете установить свою основную ноту на определенную ноту с помощью getFreq
"4 8 9 10 - - 5 7 9 11 - -".tune("tranh3")
.mul(getFreq('c3'))
.freq().clip(.5).room(1)Некоторые строи становятся более выраженными с более длительным затуханием reverb:
"<[5 6 8 10] - [5 7 9 12] -> -".tune("gumbeng")
.mul(getFreq('c3'))
.freq().clip(.8).room("3:10").rdim(10000).rfade(5)Кроме того, вы можете комбинировать это с fmap, чтобы базовая нота изменялась:
"9 11 12 10 - - -".tune("gunkali")
.mul("<c3 c3 a3 d#3>".fmap(getFreq))
.freq().legato("2 .7").room("1:15").rdim(8500).rlp(14000).rfade(8)Комбинирование этого с различными трюками полиритмии может стать очень выразительным:
"<[0 3 1 -] [-1 4 2 8]> ~ ~,<-4 -5>"
.transpose(4)
.tune("iraq")
.mul("<c3 d3 c#3>".fmap(getFreq))
.freq().clip(.5).room(1).rfade(9)Еще одна полезная уловка при изучении новых строев - играть их арпеджио. Многие имеют гораздо более очаровательное звучание, которое было выбрано в течение многих поколений музыкантов за игру арпеджио.
Возьмем строй sanza:
"4 5 6 7 8 9".tune("sanza")
.mul(getFreq('c3'))
.freq()Ноты 7 и 9 будут довольно сильно конфликтовать, если вы играете их арпеджио обычным способом. Многие строи будут иметь такое звучание, и это может отвлекать само по себе. Посмотрите, как они близко на pitch wheel?
"[7 9]!3".tune("sanza").mul(getFreq('c3')).freq()._pitchwheel()Это качество часто связано с тем, как строи формировались с инструментами, на которых играли иначе, чем на фортепиано. Таким образом, на некоторых строях гораздо лучше играть арпеджио, где тонкий конфликт расстроенных нот фактически делает звук гораздо более магическим:
"[0 1 2 3 4 5 6]@0.3 -"
.transpose("<2 5 8 1>")
.tune("sanza")
.mul(getFreq('c3')).freq()
.legato("3").room(1).rfade(5)Обратите внимание, что эффекты legato и reverb обеспечивают, чтобы звук арпеджио смешивался вместе. Чередование направления арпеджио может сделать тона еще более живыми.
Строй tranh3 имеет похожий набор нот, две из которых конфликтуют. Попробуйте подставить его выше и поищите любимый паттерн арпеджио.
Вместо названия строя в tune можно передать список частот:
i("0 1 2 3 4").tune([
261.6255653006,
302.72962012827,
350.29154279212,
405.32593044476,
469.00678383895,
523.2511306012
]).mul(220).freq();