#jamuary jam number 7. Today I played with Eli Fieldsteel’s FM voice

SynthDef(\fm, {
  arg freq=500, mRatio=1, cRatio=1,
  index=1, iScale=5, cAtk=4, cRel=(-4),
  amp=0.2, atk=0.01, rel=3, pan=0,
  var car, mod, env, iEnv;

  //index of modulation
  iEnv = EnvGen.kr(
	[index, index*iScale, index],
	[atk, rel],
	[cAtk, cRel]

  //amplitude envelope
  env = EnvGen.kr(Env.perc(atk,rel,curve:[cAtk,cRel]),doneAction:2);

  mod = SinOsc.ar(freq * mRatio, mul:freq * mRatio * iEnv);
  car = SinOsc.ar(freq * cRatio + mod) * env * amp;

  car = Pan2.ar(car, pan);

  //direct out/reverb send
  Out.ar(out, car);

The pad is the following repeating sequence washed out with (ValhallaDelay) reverb

Pdef(\m1, Pbind(
  \instrument, \fm,
  \dur, 1/4,
  \mRatio, 1,
  \scale, Scale.aeolian,
  \degree, Pseq([0, 3, 5, 2, \, -1], inf),
  \out, 0,

A bassline

Pdef(\b, Pbind(
  \instrument, \fm,
  \dur, 2,
  \cRatio, 4,
  \atk, 0.05,
  \iScale, 2,
  \scale, Scale.aeolian,
  \degree, Pseq([0, -5, -4, -1, 1], inf),
  \ctranspose, -14,
  \out, 4,

And a melody, which I edited as it played to create some variations

Pdef(\m3, Pbind(
  \instrument, \fm,
  \delta, Pbjorklund2(5, 8) / 2 ,
  \cRatio, Pseq([1, 2, 1], inf),
  \scale, Scale.aeolian,
  \degree, Pseq([0, -4, -7, 0, -1], inf),
  \out, 2,
  \ctranspose, 7,

There’s some really nice sounds to coax out of this simple FM patch I think, and I’d like to explore adding some filtering and distortion. I think it might be possible to create a synthdef that has some of the characteristics of the Digitone.

I’m quite happy that this sketch has more of a “composed” and melodic feel and isn’t overly robotic, but there’s still a long way for me to go to bring some emotion into these sounds.