Today I gave a sample lecture to some sixth form students for HuddersfieldÂ University.

Took the opportunity to introduce them to ChucK and I think they found it quite enjoyable.

When introducing ChucK I prefer to use the miniAudicle as the VM monitor makes it easy to spot and sort problems and helps students develop a clear understanding.

```SinOsc s => dac;
500::ms => now;```

Then a sine wave with a random frequency

```SinOsc s => dac;
Std.rand2f(300,600) => s.freq;
500::ms => now;```

Now add in a simple control structure

```SinOsc s => dac;
while(1)
{
Std.rand2f(300,600) => s.freq;
500::ms => now;
}```

I use this example to explain the VM monitor and demonstrate how to stop a shred from the user interface.

Now is a good time to make a chord and explain the Ugens

```SinOsc s => dac;
SinOsc ss => dac;
SinOsc sss => dac;
while(1)
{
Std.rand2f(300,600) => s.freq;
s.freq() + 100 => ss.freq;
s.freq() + 200 => sss.freq;
500::ms => now;
}```

At this point I tend to talk about Ugen DSP network by modifying the code to include a Gain Ugen.

```SinOsc s => Gain g => dac;
SinOsc ss => g;
SinOsc sss => g;
while(1)
{
Std.rand2f(300,600) => s.freq;
s.freq() + 100 => ss.freq;
s.freq() + 200 => sss.freq;
500::ms => now;
}```

Doing this also makes it possible to sort the dac amplitude issues by altering the gain.

```SinOsc s => Gain g => dac;
SinOsc ss => g;
SinOsc sss => g;
0.3 => g.gain;
while(1)
{
Std.rand2f(300,600) => s.freq;
s.freq() + 100 => ss.freq;
s.freq() + 200 => sss.freq;
500::ms => now;
}```

I think this block of code provides an easy to follow introduction to the ChucK programming language.

Finally to finish the example off I like to expand the code to include to demonstrate the use of functions and sporking.

```adc => Gain gg => blackhole;

SinOsc s => Gain g => dac;
SinOsc ss => g;
SinOsc sss => g;

{
while(1)
{
gg.last() => g.gain;
2::ms => now;
}
}