Created
March 24, 2026 16:41
-
-
Save CharStiles/7de836b0e138de250c5468bd496ba523 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| @title realtionships are our mirrors | |
| @by char stiles | |
| @license CC BY-NC-SA (code) | |
| */ | |
| setcpm(50) | |
| $: s("saw").note("<F1 Eb1 G0 G1>") | |
| .fm(slider(2.064, 0, 3)).fmh("0.99, 1.01")//.sometimes(x=>x.euclidrot("<11 [9 8]>/4",16,"<2 3 4>")).ribbon(1,16) | |
| .lpf(slider(330.3, 100, 5000)) | |
| .diode(1.3) | |
| .compressor(-20) | |
| let drums = stack( | |
| sound("bd*4").bank("Rolandmc303").gain(1.).duckorbit(1).duckattack(0.2).duckdepth(.2), | |
| sound(` | |
| <- sd>*4 | |
| `).bank("RolandTR909").gain(.7), | |
| //add a hihat on the off beat (8th note) | |
| sound("<- hh>*8").bank("LinnDrum").gain(.2), | |
| sound("~ hh ~ [hh hh] ~ hh ~ hh").sound("slapstick").sometimes(x=>x.jux(rev)).ribbon(2,6).gain(slider(4.5675,0.,7.5)), | |
| // s("cp * <2 2 2 2 4 4 8 [ 8 16]>".slow(2)).gain(0.4), | |
| ); | |
| // you can concatenate cycles to change up the notes on each measure | |
| let bass = cat( | |
| "<c2>*4", | |
| "<g1>*4", | |
| // use flats with b and sharps with # | |
| "<eb1>*4", | |
| // !n will repeat the note n times | |
| // this is equivalent to "<eb1 eb1 f1 f1>*4" | |
| "<eb1!2 f1!2>*4", | |
| "<c2>*4", | |
| "<g1!2 bb1!2>*4", | |
| "<eb1>*4", | |
| "<f1>*4" | |
| ).note() | |
| .n(3).sound("agogo") | |
| // use effects to modify a sound | |
| // low pass filter allows low frequencies to pass through | |
| .lpf(200).lpenv(5).lpa(.5).lps(.8).lpd(.1).gain(7.); | |
| $: bass | |
| //$: drums | |
| let intro_vocals = s("nn").room(.3).rsize(2).gain(4.).sometimes(x=>x.euclidrot("<11 [9 8]>/4",16,"<2 3 4>")).ribbon(1,16); | |
| // modify when the sample begins and ends | |
| // this sample has 4 lines and we want the first one | |
| // so start at 0 and cut it just after 1/4 | |
| let vocals01 = s("nn").begin(0).end(.25 + (.25 * .25 * .5)) | |
| .attack(.25).delay(".25:.45:.4").room(.2).rsize(2).gain(4.)//.sometimes(x=>x.slice("[0.2 0.51 0]","<2. 1. .75>").euclidrot("<11 [9 8]>/4",16,"<2 3 4>")).ribbon(1,16);; | |
| // start the second one at 1/4 and cut it just after 2/4 | |
| let vocals02 = s("nn").begin(.5).end(.95 + (.25 * .25 * .5)) | |
| .attack(.25).delay(".25:.45:.4").room(.2).rsize(2).fast(2).gain(9.); | |
| // $: vocals01.mask("<1 2 4 0 1 1 1 0>").duck(1) | |
| //$: vocals02.mask("<1 1 1 1 1 1 1 >").duck(1) | |
| $: intro_vocals.mask("<0 0 0 0 0 0 0 0>") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment