Projetando sons no SuperCollider/Toques de telefone
Nos exemplos a seguir apresentaremos diferentes maneiras de se fazer a mesma coisa
Fig 25.2: CCITT
editarAtente para o conceito de expansão multicanal no SC: inserindo Arrays nos UGens estaremos alocando cada elemento em canais diferentes:
Método por funções
editar{SinOsc.ar([440, 350])}.play //duas senóides diferentes em canais diferentes
{Mix.new([SinOsc.ar(350), SinOsc.ar(440)])}.play // A classe Mix permite mixar tudo num mesmo canal
{Pan2.ar(Mix.new([SinOsc.ar(350), SinOsc.ar(440)]), 0, 0.4)}.play //colocando em dois canais
Método através das classes SynthDef/Synth
editar//Aqui criaremos uma definição para futuras instâncias
(
SynthDef(\ccitt, {arg freq1, freq2, vol = 1;
var sin1, sin2, mix, pan;
sin1 = SinOsc.ar(freq1);
sin2 = SinOsc.ar(freq2);
mix = Mix.new([sin1, sin2]);
pan = Pan2.ar(mix, 0, vol);
Out.ar(0, pan);
}).send(s)
)
//criando uma instância do SynthDef anterior: tente mudar os argumentos!
x = Synth(\ccitt, [\freq1, 440, \freq2, 350, \vol, 0.4]);
x.free;
Método através da classe Ndef (definindo nós dentro do servidor)
editar(
Ndef(\dialtone, {
Pan2.ar(SinOsc.ar([350, 440], 0, 0.2).sum)
}).play
)
// Para parar o som:
Ndef(\dialtone).free;