2015-06-23 2 views
0

Я пытаюсь отобразить амплитуду на синтезатор с использованием шины, чтобы сгладить синусоидальную волну (удалить высокие частоты) на основе полуслучайных входов от внешнего источника, но когда я запускаю этот код, Нет звука.Картирование в 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; 


) 

ответ

2

У вас есть как минимум несколько проблем.

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

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

Смежные вопросы