Tomorrow is the deadline for the #libremusicchallenge, and I think my #synthwavefromscratch track is in a good enough place for it.

For those of you just joining in, for the past month, I've been making a synthwave track from scratch: no DAW, no plugins. Just C code and some scripting languages on top of that. In other words, I'm using my #sndkit and #gest projects.

The code for the song can be found here:

https://git.sr.ht/~pbatch/gest/tree/master/item/examples/synthwave.lil

...if you don't believe me, compile and render it yourself ;)

~pbatch/gest: examples/synthwave.lil - sourcehut git

More progress with my #synthwavefromscratch track today for the #libremusicchallenge! (I am building a synthwave track without a DAW, using just low-level C code with a small scripting language on top.)

Starting to use my gesture sequencer to work out melodies and make automation curves. Also added some a delay-throw on the melody.

I'm up to a 8-16 bar loop now. Hoping to add a little bit more. Another section perhaps? I need to leave enough time to make sure I can publish all the source code before the deadline!

Here's a classic subtractive 3osc synth bass sound. #synthwavefromscratch #sndkit

set key 36;env [metro [expr (4 * 96) / 60]] 0.001 0.01 0.12;blsaw [mtof $key];blsaw [mtof [expr $key - 11.8]];add zz zz;blsaw [mtof [expr $key + 11.9]];add zz zz;mul zz 0.2;chorus zz 1.0 0.5 0.02 0.1;dcblocker zz;butlp zz 1000;butlp zz 1000;mul zz zz;wavout zz "synthbass.wav";computes 10;

hihat sounds! #synthwavefromscratch

env [metro 8] 0.001 0.01 0.01;mul [noise] 0.5;butlp zz 4000;buthp zz 8000;mul zz zz;wavout zz "hh.wav";computes 10;

synthesized snare with gated reverb. also for #synthwavefromscratch

metro 1;hold zz;regset zz 0;regget 0;env zz 0.001 0.07 0.07;mul [noise] 0.1;butlp zz 5000;peakeq zz 8000 8000 2;peakeq zz 200 1000 5;buthp zz 200;mul zz zz;dup;dup dup;bigverb zz zz 0.97 10000;drop;dcblocker zz;regget 0;env zz 0.001 0.08 0.1;mul zz zz;add zz zz;wavout zz "snare.wav";regget 0;unhold;computes 10;

synthesized kick drum sound using #sndkit and #LIL. This will be used #synthwavefromscratch track.

metro 2;hold zz;regset zz 0;gensine [tabnew 8192];regget 0;dup;expon zz 1 0.1 0.001;scale zz 60 500;tphasor zz zz 0;phasewarp zz 0.2;oscfext zz zz;mul zz 0.5;regget 0;env zz 0.001 0.1 0.1;mul zz zz;regget 0;modalres zz 3000 3;add zz zz;wavout zz "kik.wav";computes 10;regget 0;unhold zz;

Continuations on my Synthwave From Scratch project, where I build a Synthwave track from "scratch" without a DAW, using open source DSP code in C, with some scripting languages on top.

I've added an initial lead sound to my track, but I haven't programmed the melody so it's just a single note. The lead is a particularly distinct feature with the synthwave genre, so it's important to get this one right. Both in timbre and in feel.

It seems the base of this sound is typically a modulated pulse oscillator put through some kind of chorus. I have a really nice sounding bandlimited square wave oscillator that worked quite well, but it goes against the rules of this month's #libremusicchallenge (wavetable synthesis only). So, I went with a wavetable oscillator that uses phase distortion synthesis. It has a similar characteristic.

The way vibrato and pulse modulation behaves in the lead sound is key to getting it to feel right. This also influences the kinds of melodies that work. So actually sequencing will come next.

It also helps to dunk the lead in a very bright very large artificial reverb.

#synthwavefromscratch