2022-01-03

This is #jamuary jam number 3. This time I’ve added another technique from Andrew Huang’s video - the “floaty arp”.

The characteristics of this voice are that it plays a rapid downward arpeggio (I’ve chosen two octaves of a C minor 7th chord). Andrew uses a Mutable Instruments Braids module - and I’ve used the SuperCollider implementation too. This is nice, because I can use the same trick of choosing a random synthesis model for each arpeggio burst.

(
SynthDef(\floaty, { |outbus = 0, model = 0, gate = 1|
  var out, env;
  var notes = [82,79,75,72,70,67,63,60];
  var seq_freq = 7;
  var sequence = Select.kr(Stepper.kr(trig: Impulse.kr(seq_freq), min: 0, max: notes.size - 1), notes);

  env = EnvGen.ar(Env.asr(0.01,1,0.2), gate, doneAction: 2);
  out = MiBraids.ar(pitch: sequence, model: model) * env;
  Out.ar(outbus, out ! 2);
}).add;
)

The key line in the synth def is Select.kr(Stepper.kr(trig: Impulse.kr(seq_freq), min: 0, max: notes.size - 1), notes);. This line creates a series of impulses at the seq_freq, each time an impulse is generated the Stepper increments a counter, which is then used to Select the corresponding element of the notes array. This note number is then passed into the MiBraids as its pitch argument (these MI Ugens take midi note numbers as pitches rather than frequencies in Hz).

The synth is triggered occasionally using a sequence

(
Pbind(
  \dur, 1.6,
  \instrument, \floaty,
  \model, Pwrand([Rest(), Prand((0..20))], [5, 1].normalizeSum, repeats: inf),
).play()
)

I then overdubbed that, with a little delay, onto the jam from yesterday. It’d be nice to have both sequenced in SuperCollider, but I ran out of time.