ark_d.amorphic/LOG.md

4.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:

MATERIALS:

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

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

ARCHITECTURE

  • master bus
  • sends?
  • control busses

PATTERNS

  • 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 git.tmp.si/luka/ark_d.amorphic 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 = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2);
	
	snd = SinOsc.ar([freq, freq*oscDetune]) ;
	snd = snd + SinOsc.ar([freq*2, freq*oscDetune*2]) ;
	snd = snd + Pulse.ar([freq/2,(freq/2)*oscDetune]) * LFNoise1.kr(0.5).exprange(2,40);

	snd = snd.softclip;
	snd = RLPF.ar(snd, freq:
		//LFNoise1.kr(0.01).exprange(4000,300),
		freq * cutoff,
		rq:0.4);

	snd = snd * env * amp * 0.4;

	Out.ar(out, snd);
}).add;
)

// add a delay/reverb bus here?

// first press play :)
Ndef(\ba).play

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

(
Ndef(\ba, 
	Pbindf(
		Ppar([
			Pbind(
				\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),
			),		
			Pbind(
				\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 = Bus.audio(s,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

inside.

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 Osc.ar and use them as wavetables. However it's possible to oscilate them with BufRd.ar which I tested and played a little with it:


Ndef(\bosc).play
Ndef(\bosc).fadeTime=2;

(
Ndef(\bosc, {
	var buffer = ~smpBuffers[2], freq = 30, oscDetune = 1.01, amp = 0.2;
	BufRd.ar(1, bufnum:buffer, phase: LFSaw.ar([freq,freq*oscDetune]) * BufFrames.ir(buffer)) * amp
	//+ SinOsc.ar(60.2) * 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.