Почему этот паттерн событий не приводит к скачкам на октаву?

Я пытаюсь научиться использовать шаблоны событий. Я напечатал следующее, ожидая последовательность, которая каждый раз «прыгает» на октаву вниз:

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?


person David    schedule 27.07.2013    source источник


Ответы (1)


Да, вы что-то упускаете: данные в ключе midinote волшебным образом преобразуются в значения Герца в ключе freq при воспроизведении паттерна. Поэтому, когда вы пишете свой synthdef, вы не должны использовать midinote, вместо этого используйте freq.

Это может показаться подозрительной магией, но подумайте об этом так: вы можете написать SynthDef один раз, используя freq, и после этого вы можете свободно использовать midinote, freq или degree в своих паттернах, и все они будут преобразованы без вашего участия. необходимость переписать SynthDef, чтобы использовать элемент управления с другим именем.

Чтобы лучше понять, что происходит, очень полезна эта страница: Руководство по шаблонам 07. Преобразование ценности

person Dan Stowell    schedule 28.07.2013
comment
Я вижу, вы также задаете вопросы о SuperCollider. Это правильное место, или есть более активный форум? - person David; 29.07.2013
comment
@David: Мне нравится SO для этого, но списки рассылки SuperCollider имеют наибольшую активность: birmingham.ac.uk/facilities/BEAST/research/supercollider/ (на этой странице вы можете подписаться на sc-users или просматривать архивы онлайн так далее) - person Dan Stowell; 29.07.2013