Polka?
yet another bouncy polka thing
Started from this youtube tutorial. I think trance is a really useful style to apply here, it does a lot of the things I think I need.
There’s loads of scope for playing with the tune, because it has like 5 notes in and goes nowhere. I should try some things and note them down, or leave code how to do them.
// https://www.youtube.com/watch?v=baT1IVh3XHQ "How to make trance"
setcps(138 / 120 / 2);let key = "F:minor";
// Polka? tought by Tola at Burwell sometimelet tune = n(`[[0 4 4 [3 4] 6 4 3 2][[3 4 3 2]@2 0 -1 [3 4 3 2]@2 0 -1][0 4 4 [3 4] 6 4 [2 3] 4][2@3 0@5]]!2
[[0 [2 3] 4 0 2 3 4@2][[3 4 3 2]@2 0 -1 [3 4 3 2]@2 0 -1][0 [2 3] 4 0 2 3 4@2][[4 3] 2 [3 2] 0 [2 0 ] -1 [0 -1] -3 ]]!2`) .slow(16) .scale(key) .s("sawtooth") .adsr("0.005:0.25:0.5:0.015") .lpf(perlin.range(1000, 2000)) .lpenv(2) .attack(rand.range(0.003, 0.001)) .gain(1.5) .transpose("<0 0 12 12 12 12 12 0>/16");
// "meaty chunky kick"let kick = s("bd:1*4").bank("tr909").gain(1.5);let clap = s("[- cp]!7 [- [cp [- cp]]]").n("2").slow(4).bank("tr909");let hats = stack( s("[- oh]*4").n("4").gain(0.3).room(0.2).roomsize(2).rfade(0.1), s("hh*16") .gain(rand.range(0.4, 0.8)) .pan(rand.range(0.2, 0.8)) .postgain("[0.1 0.2 0.3 0.3]*4"), s("rd*8") .gain(rand.range(0.7, 0.8)) .pan(rand.range(0.4, 0.6)) .postgain("[0.1 0.2]*4"),) .bank("tr909") .clip(0.9);
// trance often has chord progressions over 8 bars, where house has 4
let chords = n("[0,2,4]@4 [2,4,6]@4 [4,6,8]@4 [3,5,7]@2 [2,4,6] [1,3,6]") .slow(8) .scale(key) .transpose("-12") .s("folkharp"); //.gain(.8)
let strings = n("[0,2,4] [2,4,1,-1] [4,3,-1,1] [0,2,3,[5 4]]") .slow(8) .scale(key) .transpose(12) .s("gm_string_ensemble_1") .gain(0.5);
let spicyMelody = n("[[- 0 - 0 - 4 3 2] [1@3 <0 2>@3 - - ]]*4") .scale(key) .slow(8) .s("supersaw square") .attack(0.01) .decay(0.6) .sustain(0.8) .release(0.2) .distort(2) .gain(0.2) .when("[0 1]/2", (x) => x.penv("[12 24 24]").prelease(0.8).release(0.8)) .hpf(250);
let melody = n( "[[- < - 0> - 0 - 4 3 2] [1@3 <0 2>@3 - -]]*2 [[- - - -1 - 2 1 -3] [-1@3 <0 2>@3 - -] [- -2 - -2 - -2 -2 -3] [-3@3 -4@3 -6@2]] ",) .scale(key) .transpose(12) .slow(8) .adsr("0.01:0.6:.8:0.2") .s("supersaw");
let riff = n("[0 1 3 0 2 3 0 4]*16") .chord("Fm7 Ab^7 Cm [Bbm7 [Ab^7 Gm7]]") .mode("root:f3") .slow(8) .voicing() .adsr("0.01:0.6:.8:0.5") .s("supersaw") .lpf(145) .lpattack(0.001) .lpdecay(0.3) .lpsustain(0.01) .lprelease(0.1) .lpenv(4) .distort(2) .gain(0.1);
let subbass = n("[- 0 7 0]*4") .scale(key) .transpose("-24") .s("sine") .adsr("0.001:0.1:0.8:0.6");
let midbass = n("[- 0 - -] [- - -7 0] [- 0 - - ] [- - -7 -]") .scale(key) // .transpose("-12") .adsr("0:0.5:.3:0.1") .s("supersaw") .bpf(rand.range(100, 200)) .bpattack(0) .bpdecay(0.12) .bpsustain(0) .bpenv("2") .bpq(rand.range(3.5, 4.5)) .dist(2) .unison(4) .spread(0.9) .detune(0.3);
let rollbass = n("[- 0 7 0]*4") .scale(key) .transpose("-24") .adsr("0:0.1:.8:0.1") .s("supersaw") .hpf(166) .unison(3) .spread(0.4) .detune(0.1) .lpf(200) .lpattack(0.001) .lpdecay(0.03) .lpenv(4);
let aah = n("[- 7@2 - -@4] -") .scale(key) .s("gm_choir_aahs") .hpf(200) .lpf(5000) .room(0.4) .roomsize(6) .rfade(0.1) .delay("0.65");
let highpedal = stack( n("[[0 - 0 - - - 0 -] [- - 0@3 - 0 - ] [- - 0 - 0 - 0 - ] [0@3 - -@4 ]] -"), // call n("- < - [- - [- - 0 - 0 - 0 - ] [0,1@3 - -@4 ]]>").mask( "<0 1 1 1 1 1 1 1>/8", ), // response) .slow(2) .scale(key) .s("supersaw") .adsr("0:1:1:0") .transpose(12) .gain(rand.range(0.2, 0.3)) .pan(rand.range(0.1, 0.9)) .room(0.4) .roomsize(6) .rfade(0.1) .delay(".5:.35:.2") .unison(3) .spread("[.2 .2 .2 .8]/4");
let highpedalHarmony = highpedal .transpose(3) .someCyclesBy(0.25, (x) => x.transpose(chooseCycles("-1", "2")));
let pedals = stack(highpedal, highpedalHarmony).lpf( "<400 800 1200 1800 2400 3200 4000 6000 10000!8>/8",);// ramp this in gradually by opening up the filter
// remember changing octave is a thing you can do// remember switching out all your chords to just be the root is also a thingstack( // things that don't want reverb! kick.postgain(slider(1, 0, 2, 0.05)), hats, // go look up top for knobs here subbass, // things that want reverb stack( clap, chords.postgain(slider(1, 0, 2, 0.05)).mask("<1 1 1 1 1 [0 1] 1 1>/16"), riff.postgain(slider(1, 0, 2, 0.05)).mask("<0 [0 1] 0 0 1 [1 0] 1 1>/16"), spicyMelody .postgain(slider(1, 0, 2, 0.05)) .mask("<0 0 0 0 0 1 [1 0] 0>/16"), //.transpose(12), melody.postgain(slider(1, 0, 2, 0.05)).mask("<0 0 0 0 1 0 1 0>/16"), midbass.postgain(slider(1, 0, 2, 0.05)).mask("<0 1 1 1 1 1 1 0>/16"), rollbass.mask("<[0 1] 1 1 1 1 1 1 [1 0]>/16"), strings.postgain(slider(1, 0, 2, 0.05)).mask("<0 0 [1 0] 0 1 0 0 0>/16"), pedals.postgain(slider(1, 0, 2, 0.05)).mask("<1 1 1 1 0 0 [0 1] 1>/16"), tune .postgain(slider(1, 0, 2, 0.05)) .mask("<[1 1?]*8 1 1 1 [1? 1?]*4 0 [0 1?]*8 1>/16"), //.lpf("<4000 2800 1800 1200 800 600 400 200>/8"), aah.postgain(slider(1, 0, 2)).mask("<1 1 0 0 0 0 0 1>/16"), ) .room(0.4) .roomsize(4) .rfade(0.1),);