Skip to main content

14 posts tagged with "supercollider"

View All Tags

trip points one-shot cap

'trip points one-shot cap' is (yet another) piece inspired by ripped off from alluding to Louis Andriessen's gritty post-minimalist classic 'Hoketus'.

There are two main building blocks. The first is… I was rummaging around in my box of old electronics, and found an optical theremin I'd built years ago. The IC at the heart of this is a bit of a classic, a Texas Instruments SN76477, a very early chip designed to make sounds for toys and games, also great for musical experimentation.

The second part of the track is itself made up of two layers. At the bottom is a two-second slice (ntfot82.aif) of an improvisation made with… well, to tell the truth, I can't remember! An out-of-tune guitar played with a chopstick, I think, but I'm not sure what I was processing it through, might have been hardware, might have been software. This short file was then sliced up and remixed in SuperCollider (code below).

The final track was composed in Logic 9: no added effects there apart from a bit of fake stereo.


//SuperCollider code
s.boot;

p =/Users/jsimon/Music/tedsound/prosim/nolap_firstofthese/slices/ntfot82.aif”;
b = Buffer.read(s, p);
b = Buffer.read(s, p, bufnum: 0);
b.play; //quick check

b.free; // eventually

(
SynthDef(\mybuf, { |out, bufnum, sig, rate=1, slices=16, slice=16|
var myenv, env, start, len;
len = BufFrames.kr(bufnum);
start = (len / slices * slice);
myenv = Env.linen(0.01, 0.2, 0.1); //attack, sustain, release
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum) * rate, startPos: start, loop: 1);
env = EnvGen.kr(myenv, Impulse.kr(0), doneAction: 2);
Out.ar(out, sig * env)
}).add;
)

(
a = Pbind(
\instrument, \mybuf,
\slice, Prand((1 .. 16), inf)
);
)

a.play;

(
b = Pbind(
\instrument, \mybuf,
\slice, Pseq((1 .. 16).scramble, inf)
);
)

b.play;

(
c = Pbind(
\instrument, \mybuf,
\slice, Pseq((1 .. 16).pyramid, inf)
);
)

c.play;

// this is medium fab
// need to get \freq or something in the synth also
// also figger out how buffer number allocation works
// could allocate several buffers and switch between?!?

TempoClock.default.tempo = 160/60;

(
d = Pbind(
\instrument, \mybuf,
\slice, Pseq((1 .. 16).pyramid(9), 1),
// careful pyramid returns all kinds of different length arrays
// 136, 256, 271 seems to be the three possibilities
// (1 .. 16).pyramid(9).size; -> 256
\dur, 0.5
);
)

d.play;

Max 5 and SuperCollider using sc3~

Another way of doing it, using the sc3~ object. I can't quite make up my mind at the moment which is the way forward; this way it looks like you'd have to develop your code in SuperCollider, then paste it into Max and hope it still works… have a feeling the OSC bridging method is more generally useful, for instance, could use it with Pd as well. On the other hand, this way it's all together in the one patch in a single program, to run it you don't need SC installed, probably a lot easier to deal with when you come back to it in five years time…

Max 5 to SuperCollider using OSC

Updated

I guess it's just possible some people might not get what's going on here :) SuperCollider is a very powerful text-based programming language for sound. If you know what you're doing, then with just a couple of lines of code you can create really fascinating sounds and textures, even entire compositions; see for instance sc140, an album where each piece is created using just a twitter-long 140 characters of code.

Unfortunately, I don't know what I'm doing; my mind doesn't seem to work logically enough to really do computer programming properly! Enter the other half of the equation, Max 5 (or Max/MSP as it used to be known). This is a graphical programming language, which allows you to make stuff happen just by plugging things together on the screen.

I've got quite good at Max, and sometimes managed to make quite interesting sounds in SuperCollider.  I found the missing link between these two on a great blog posting by Fredrik Olofsson. It's a way of using a so-called 'quark', a type of extension to SuperCollider, to send OSC (Open Sound Control) messages from Max to SC. So, what I'm happy to have found here is an easy way to attach knobs to these hard-to-get-at text based sounds. The next step from here will be controlling SC using external midi/bluetooth/whatever hardware, again via Max.

Loudcoding?

Managing to do the same kind of thing now in SuperCollider, speaking one word at a time, which kind of makes more sense in this context; loudcoding?

(Amazed at getting this to work, actually. I'm *so* not a programmer!)