Отображение в SuperCollider

Я пытаюсь сопоставить амплитуду с синтезатором, используя шину, чтобы сгладить синусоидальную волну (удалить высокие частоты) на основе полуслучайных входных данных из внешнего источника, но когда я запускаю этот код, звука нет.

s.boot;
(
SynthDef( \cello, {|rate = 440, amp = 0.2|
    var signal;
    signal = SinOsc.ar(rate, 0, amp);
    Out.ar([0,1], signal)}
).add;)

h = Synth( \cello, [ \rate, 440, \amp, 0 ] );

c = Bus.control(s, 2);

c.scope;



Task({
 var counter, pyAmp, newAmp, oldAmp = 0;

 counter = 0;

 {counter < 1}.while ({

  pyAmp = 3.0.rand;
  (pyAmp).postln;

  d = { XLine.ar(oldAmp, pyAmp, 0.1) }.play(outbus: c);
        ("and").postln;
        (oldAmp).postln;
  oldAmp = pyAmp;

  h.map(\amp, d);
  0.1.wait;

 })
}).play;


)

person Bryan Yoder    schedule 23.06.2015    source источник


Ответы (1)


У тебя как минимум пара проблем.

  1. Ваш первый синтезатор XLine пытается выполнить XLine, начиная с 0 . Абсолютный ноль — это проблема экспоненциальной земли, это невозможно. Вместо этого начните с крошечного, но положительного значения.
  2. Вы создаете маленькие синтезаторы XLine, чтобы попытаться настроить усилитель, но вы никогда не выпускаете эти синтезаторы. Многие из них строятся. Кто знает, какую ценность в итоге дает этот усилитель? Вы должны использовать doneActions, чтобы синтезаторы освободились. .

В-третьих (но не вредно), нет смысла запускать эти синтезаторы XLine со скоростью звука, вы также можете использовать XLine.kr, а не XLine.ar.

person Dan Stowell    schedule 24.06.2015