5.9 KiB

ark'd, amorphic development LOG

I'll try to post as much as possible about research and work on this project here in a form of a daily log.


7.apr, 2020

Started to sketch more into my notebook:


  • samples
  • granular syn.
  • glitches, basskicks, highhats
  • leads, pads, basses
  • SynthDefs, Buffers (loading)

TRYING THINGS OUT ub a different workflow with Ndef and Proxies?


  • master bus
  • sends?
  • control busses


  • nested
  • Ppar, conductor?


8.apr, 2020

Ended up with two kinda finished SynthDefs - a granulator (I wonder how could it be made more reusable, there's space for improvement), and a supersaw, that is still quite soft - I think quite useful for some deep ground here and there. I have managed to make it quite clean, and learned a lot in the process, especially regarding the Splay and panning and stereo balancing. Basic loading of whatever is in lib/ and smp/ folders now works. Will need to be improved on the way.

I'm kinda moving towards a self-baked framework for composing dance tracks, or at least beat-based stuff. It's probably the only way - to build everything by yourself (of course so much has been built within SuperCollider too on top of which I'm building now. There's now also just a basic Buffer player. I was thinking to just create number of different SynthDefs, all some kind of specific synth sounds - pads, leads, basses, etc. I'm also thinking to get onto the single-cycle waveforms collection and use that for table oscilators: Osc, COsc, VOsc, VOsc3...

I also init remote git repo on and pushed current work there (here?).


9.apr, 2020

Three hours of play and learning in the morning. Learned how to use Ndef and then experimented with first building a synth (using Ndef) with sine and pulse oscilators, adding detuning and filter, converting to a SynthDef and using Ndef to play with a Pbind:

SynthDef(\sinPulz, {
	arg gate = 1, freq, out=0, amp = 1, attackTime=0.01, releaseTime=1, oscDetune=0.05, cutoff=1;
	var snd, env;

	oscDetune = oscDetune * 0.1;
	oscDetune = oscDetune+1;

	env =, attackTime:attackTime, releaseTime:releaseTime, doneAction:2);
	snd =[freq, freq*oscDetune]) ;
	snd = snd +[freq*2, freq*oscDetune*2]) ;
	snd = snd +[freq/2,(freq/2)*oscDetune]) *,40);

	snd = snd.softclip;
	snd =, freq:
		freq * cutoff,

	snd = snd * env * amp * 0.4;, snd);

// add a delay/reverb bus here?

// first press play :)

// set default quant
Ndef(\ba).proxyspace.quant = 5;

				\octave, [4,5,7],
				\amp, [0.1,0.2,0.005], 
				\degree, Pseq([0,3,4,2,6], inf),
				\dur, Prand([1,0.5,2], inf),
				\octave, [3,6],
				\degree, Pseq([[0,-3],4,6,3,2], inf),
				\dur, 3.5,
				\amp, 0.2,
				\legato, 0.6,
				\attackTime, 2,
				\releaseTime, 2,
		// common parameters
		\instrument, \sinPulz,
		\oscDetune, Prand([1,3,7]*0.01, inf),
		\scale, Scale.minor.tuning_(\just),
		\cutoff, Prand([1,2,3,4,5,6], inf)


10.apr, 2020

Implemented bus routing while using Ndef so I could hear the yesterday's melodies in more rich reverb/delay kinda space:

~reverBus =,2);

Ndef(\ba).play(~reverBus, addAction: \addToHead)

~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addAfter);

... and then the Pbind or Pbindf need

		\out, ~reverBus


I then went on to find ways how to load single-cycle waveforms and discovered that the collection I have has them all in size of 600 samples. Which SC doesn't like in order to oscilate them with and use them as wavetables. However it's possible to oscilate them with which I tested and played a little with it:


Ndef(\bosc, {
	var buffer = ~smpBuffers[2], freq = 30, oscDetune = 1.01, amp = 0.2;, bufnum:buffer, phase:[freq,freq*oscDetune]) * * amp
	//+ * 0.5;
} );

... but then I discovered and started to read on Buffer filling methods and Harmonics class. It's a sine harmonics factory with number of different methods how to manipulate the frequencies and amps for them. It took me a while to understand what exactly is going on, but now I understand and I'm curious about all different ways how one can fill a buffer with various waveforms to use in synths.

the main ark_d.scd is in complete disarray, because I'm using it as a testing ground. I should be working in SC_Workspace, but then I would not be able to work on different machines (I would need to continue saving the Workspace, yeah.).

That was about 3.5 hours of work today. I feel I'm far from something musically concrete, but I'm showing up.

18.dec, 2020

Well, this was a long run. I commited to git the last version that is supposed to be released - tomorrow. So, I finalized recording, minimal corrections in terms of limiting, topping and tailing, but essentially, what comes from SuperCollider is basicaly what is on the recording. Save for algorithmic randomisations and stuff. 2020 was a really weird year. So much detours, so many distractions, so much invisible pressure. But I'm happy with this final result. I had some completely different ideas and they are still here, but hopefully in the next project. Soon.

All the code is now in ark_d.scd. No libraries, not samples, no separate init files. It's just that. And the dependency on SC3-plugins. Sorry about that.

I learned so much. I took so much from the community, many helping comments, solving what I couldn't understand. Thank you! And, there's so much more to learn. I'm still a beginner. But a bit more confident one.