Difference between revisions of "Example 3"

From CSWiki
Jump to: navigation, search
(SuperCollider code)
(SuperCollider code)
Line 36: Line 36:
 
from JN: neat-o - this should totally be added to the ChucK code section as an alternative approach.  i couldn't immediately see how to use it - can you post an example?
 
from JN: neat-o - this should totally be added to the ChucK code section as an alternative approach.  i couldn't immediately see how to use it - can you post an example?
  
from DT: well, FM by itself doesn't actually work, which is silly, but ChucK is full of silliness. however, FM synthesis is possible very simply and efficiently using the .sync method, which many UGENS have, and which tells the UGEN how to interpret its input. so, here's a very simple example, from the ChucK examples:
+
from DT: well, FM by itself doesn't actually work, which is silly (it's meant to be a superclass only), but ChucK is full of silliness. however, FM synthesis is possible very simply and efficiently using the .sync method, which many UGENS have, and which tells the UGEN how to interpret its input. so, here's a very simple example, from the ChucK examples:
  
 
  SinOsc m => SinOsc c => dac;
 
  SinOsc m => SinOsc c => dac;

Revision as of 22:12, 14 January 2013

FM synthesis:

ChucK code

SinOsc c => Gain amp => dac; // carrier
SinOsc m => blackhole; // modulator 
0.3 => amp.gain;
550 => float mf => m.freq;
300 => float cf => c.freq;
2 => float index;

while( true )
{
    cf + (index * mf * m.last()) => c.freq;
    1::samp => now;
}

SuperCollider code

{
	var cf, mf, index;
	cf = 300;
	mf = 550;
	index = 2;
	SinOsc.ar(cf + SinOsc.ar(mf, mul: mf * index), mul: 0.3).dup // .dup = duplicate = cheap stereo
}.play;

SC actually has a PM UGen (Phase Modulation synthesis and Frequency Modulation synthesis are basically the same sound), so this example could also look like this:

{PMOsc.ar(300,550,2,mul:0.3).dup}.play;

from DT here: this is super cool Jascha! there is also a ChucK FM synthesis ugen:

http://chuck.cs.princeton.edu/doc/program/ugen_full.html#FM

from JN: neat-o - this should totally be added to the ChucK code section as an alternative approach. i couldn't immediately see how to use it - can you post an example?

from DT: well, FM by itself doesn't actually work, which is silly (it's meant to be a superclass only), but ChucK is full of silliness. however, FM synthesis is possible very simply and efficiently using the .sync method, which many UGENS have, and which tells the UGEN how to interpret its input. so, here's a very simple example, from the ChucK examples:

SinOsc m => SinOsc c => dac;

300 => c.freq;
550 => m.freq;
2 => m.gain;
 
2 => c.sync;
 
while( true ) 1::second => now;