Почему этот шаблон событий не производит скачки октавы?
Я пытаюсь научиться использовать шаблоны событий. Я набрал следующее, ожидая последовательность, которая "спрыгивает" на октаву каждый раз:
p = Pbind(*[
instrument: \mySynth,
midinote: Pseq([108, 96, 84, 72, 60, 48, 36, 24, 12], inf),
dur: 0.2
]);
SynthDef(
"mySynth",
{
|midinote, gate = 1|
var stereofreq = [midinote, midinote];
var audio = Pulse.ar(stereofreq, 0.5, mul: 0.8);
var env = Linen.kr(gate, 0.01, 1, 0.1, doneAction: 2);
OffsetOut.ar(0, audio * env);
}
).add;
p.play;
Я конечно получаю нисходящую последовательность, но интервал не октава. Я пропустил некоторые детали midinote
ключ?
1 ответ
Да, вы что-то упустили: данные в midinote
ключ магически преобразуется в значения Герца в freq
ключ при воспроизведении паттерна. Поэтому, когда вы пишете свой synthdef, вы не должны использовать midinote
вместо freq
,
Это может показаться подозрительной магией, но подумайте об этом так: вы можете написать SynthDef один раз, используя freq
и после этого вы можете свободно использовать midinote
или же freq
или же degree
в ваших шаблонах, и все они будут преобразованы без необходимости переписывать SynthDef для использования элемента управления с другим именем.
Чтобы узнать больше о том, что происходит, эта страница очень полезна: Руководство по шаблонам 07: Преобразование значений