mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 13:48:40 +00:00
+ remove /master from dirt-samples calls (there is now a main branch) + remove /main endings from some places
932 lines
28 KiB
JavaScript
932 lines
28 KiB
JavaScript
/*
|
|
tunes.mjs - <short description TODO>
|
|
Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/strudel/blob/main/repl/src/tunes.mjs>
|
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
export const swimming = `// Koji Kondo - Swimming (Super Mario World)
|
|
stack(
|
|
seq(
|
|
"~",
|
|
"~",
|
|
"~",
|
|
"A5 [F5@2 C5] [D5@2 F5] F5",
|
|
"[C5@2 F5] [F5@2 C6] A5 G5",
|
|
"A5 [F5@2 C5] [D5@2 F5] F5",
|
|
"[C5@2 F5] [Bb5 A5 G5] F5@2",
|
|
"A5 [F5@2 C5] [D5@2 F5] F5",
|
|
"[C5@2 F5] [F5@2 C6] A5 G5",
|
|
"A5 [F5@2 C5] [D5@2 F5] F5",
|
|
"[C5@2 F5] [Bb5 A5 G5] F5@2",
|
|
"A5 [F5@2 C5] A5 F5",
|
|
"Ab5 [F5@2 Ab5] G5@2",
|
|
"A5 [F5@2 C5] A5 F5",
|
|
"Ab5 [F5@2 C5] C6@2",
|
|
"A5 [F5@2 C5] [D5@2 F5] F5",
|
|
"[C5@2 F5] [Bb5 A5 G5] F5@2"
|
|
).color('#FFEBB5'),
|
|
seq(
|
|
"[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]",
|
|
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]",
|
|
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
|
|
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
|
|
"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]",
|
|
"[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
|
|
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]",
|
|
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
|
|
"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]",
|
|
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
|
|
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]",
|
|
"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]",
|
|
"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]",
|
|
"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]",
|
|
"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]",
|
|
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
|
|
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]"
|
|
).color('#54C571'),
|
|
seq(
|
|
"[G3 G3 C3 E3]",
|
|
"[F2 D2 G2 C2]",
|
|
"[F2 D2 G2 C2]",
|
|
"[F2 A2 Bb2 B2]",
|
|
"[A2 Ab2 G2 C2]",
|
|
"[F2 A2 Bb2 B2]",
|
|
"[G2 C2 F2 F2]",
|
|
"[F2 A2 Bb2 B2]",
|
|
"[A2 Ab2 G2 C2]",
|
|
"[F2 A2 Bb2 B2]",
|
|
"[G2 C2 F2 F2]",
|
|
"[Bb2 Bb2 A2 A2]",
|
|
"[Ab2 Ab2 G2 [C2 D2 E2]]",
|
|
"[Bb2 Bb2 A2 A2]",
|
|
"[Ab2 Ab2 G2 [C2 D2 E2]]",
|
|
"[F2 A2 Bb2 B2]",
|
|
"[G2 C2 F2 F2]"
|
|
).color('#0077C9')
|
|
).note().slow(51)
|
|
//.pianoroll({fold:1})
|
|
`;
|
|
|
|
export const giantSteps = `// John Coltrane - Giant Steps
|
|
|
|
let melody = note(
|
|
"[F#5 D5] [B4 G4] Bb4 [B4 A4]",
|
|
"[D5 Bb4] [G4 Eb4] F#4 [G4 F4]",
|
|
"Bb4 [B4 A4] D5 [D#5 C#5]",
|
|
"F#5 [G5 F5] Bb5 [F#5 F#5]",
|
|
)
|
|
|
|
stack(
|
|
// melody
|
|
melody.color('#F8E71C'),
|
|
// chords
|
|
chord(
|
|
"[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]",
|
|
"[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]",
|
|
"Eb^7 [Am7 D7] G^7 [C#m7 F#7]",
|
|
"B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]"
|
|
).dict('lefthand')
|
|
.anchor(melody).mode('duck')
|
|
.voicing().color('#7ED321'),
|
|
// bass
|
|
note(
|
|
"[B2 D2] [G2 Bb2] [Eb2 Bb3] [A2 D2]",
|
|
"[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]",
|
|
"[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]",
|
|
"[B2 F#2] [F2 Bb2] [Eb2 Bb3] [C#2 F#2]"
|
|
).color('#00B8D4')
|
|
).slow(20)
|
|
.pianoroll({fold:1})`;
|
|
|
|
export const zeldasRescue = `// Koji Kondo - Princess Zelda's Rescue
|
|
stack(
|
|
// melody
|
|
\`[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]
|
|
[B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]
|
|
[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]
|
|
[B3@2 D4] [A4@2 G4] D5@2
|
|
[D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2]
|
|
[D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]\`
|
|
.color('#9C7C38'),
|
|
// bass
|
|
\`[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]
|
|
[[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]
|
|
[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]
|
|
[[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]
|
|
[[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2]
|
|
[[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]\`
|
|
.color('#4C4646')
|
|
).transpose(12).slow(48)
|
|
.superimpose(x=>x.add(0.06)) // add slightly detuned voice
|
|
.note()
|
|
.gain(.1)
|
|
.s('triangle')
|
|
.room(1)
|
|
//.pianoroll({fold:1})`;
|
|
|
|
export const caverave = `// "Caverave"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
const keys = x => x.s('sawtooth').cutoff(1200).gain(.5)
|
|
.attack(0).decay(.16).sustain(.3).release(.1);
|
|
|
|
const drums = stack(
|
|
s("bd*2").mask("<x@7 ~>/8").gain(.8),
|
|
s("~ <sd!7 [sd@3 ~]>").mask("<x@7 ~>/4").gain(.5),
|
|
s("[~ hh]*2").delay(.3).delayfeedback(.5).delaytime(.125).gain(.4)
|
|
);
|
|
|
|
const synths = stack(
|
|
|
|
"<eb4 d4 c4 b3>/2"
|
|
.scale("<C:minor!3 C:melodic:minor>/2")
|
|
.struct("[~ x]*2")
|
|
.layer(
|
|
x=>x.scaleTranspose(0).early(0),
|
|
x=>x.scaleTranspose(2).early(1/8),
|
|
x=>x.scaleTranspose(7).early(1/4),
|
|
x=>x.scaleTranspose(8).early(3/8)
|
|
).note().apply(keys).mask("<~ x>/16")
|
|
.color('darkseagreen'),
|
|
|
|
note("<C2 Bb1 Ab1 [G1 [G2 G1]]>/2")
|
|
.struct("[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2".fast(2))
|
|
.s('sawtooth').attack(0.001).decay(0.2).sustain(1).cutoff(500)
|
|
.color('brown'),
|
|
chord("<Cm7 Bb7 Fm7 G7b13>/2")
|
|
.struct("~ [x@0.2 ~]".fast(2))
|
|
.dict('lefthand').voicing()
|
|
.every(2, early(1/8))
|
|
.apply(keys).sustain(0)
|
|
.delay(.4).delaytime(.12)
|
|
.mask("<x@7 ~>/8".early(1/4))
|
|
).add(note("<-1 0>/8"))
|
|
stack(
|
|
drums.fast(2).color('tomato'),
|
|
synths
|
|
).slow(2)
|
|
//.pianoroll({fold:1})`;
|
|
|
|
export const sampleDrums = `samples({
|
|
bd: 'bd/BT0A0D0.wav',
|
|
sn: 'sn/ST0T0S3.wav',
|
|
hh: 'hh/000_hh3closedhh.wav'
|
|
}, 'https://loophole-letters.vercel.app/samples/tidal/')
|
|
|
|
stack(
|
|
"<bd!3 bd(3,4,3)>".color('#F5A623'),
|
|
"hh*4".color('#673AB7'),
|
|
"~ <sn!3 sn(3,4,2)>".color('#4CAF50')
|
|
).s()
|
|
.pianoroll({fold:1})
|
|
`;
|
|
|
|
export const barryHarris = `// adapted from a Barry Harris excercise
|
|
"0,2,[7 6]"
|
|
.add("<0 1 2 3 4 5 7 8>")
|
|
.scale('C bebop major')
|
|
.transpose("<0 1 2 1>/8")
|
|
.slow(2)
|
|
.note().piano()
|
|
.color('#00B8D4')
|
|
`;
|
|
|
|
export const blippyRhodes = `// "Blippy Rhodes"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({
|
|
bd: 'samples/tidal/bd/BT0A0D0.wav',
|
|
sn: 'samples/tidal/sn/ST0T0S3.wav',
|
|
hh: 'samples/tidal/hh/000_hh3closedhh.wav',
|
|
rhodes: {
|
|
E1: 'samples/rhodes/MK2Md2000.mp3',
|
|
E2: 'samples/rhodes/MK2Md2012.mp3',
|
|
E3: 'samples/rhodes/MK2Md2024.mp3',
|
|
E4: 'samples/rhodes/MK2Md2036.mp3',
|
|
E5: 'samples/rhodes/MK2Md2048.mp3',
|
|
E6: 'samples/rhodes/MK2Md2060.mp3',
|
|
E7: 'samples/rhodes/MK2Md2072.mp3'
|
|
}
|
|
}, 'https://loophole-letters.vercel.app/')
|
|
|
|
stack(
|
|
s("<bd sn> <hh hh*2 hh*3>").color('#00B8D4'),
|
|
"<g4 c5 a4 [ab4 <eb5 f5>]>"
|
|
.scale("<C:major C:mixolydian F:lydian [F:minor <Db:major Db:mixolydian>]>")
|
|
.struct("x*8")
|
|
.scaleTranspose("0 [-5,-2] -7 [-9,-2]")
|
|
.slow(2)
|
|
.note()
|
|
.clip(.3)
|
|
.s('rhodes')
|
|
.room(.5)
|
|
.delay(.3)
|
|
.delayfeedback(.4)
|
|
.delaytime(1/12).gain(.5).color('#7ED321'),
|
|
"<c2 c3 f2 [[F2 C2] db2]>/2"
|
|
.add("0,.02")
|
|
.note().gain(.3)
|
|
.clip("<1@3 [.3 1]>/2")
|
|
.cutoff(600)
|
|
.lpa(.2).lpenv(-4)
|
|
.s('sawtooth').color('#F8E71C'),
|
|
).fast(3/2)
|
|
//.pianoroll({fold:1})`;
|
|
|
|
export const wavyKalimba = `// "Wavy kalimba"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({
|
|
'kalimba': { c5:'https://freesound.org/data/previews/536/536549_11935698-lq.mp3' }
|
|
})
|
|
const scales = "<C:major C:mixolydian F:lydian [F:minor Db:major]>"
|
|
|
|
stack(
|
|
"[0 2 4 6 9 2 0 -2]*3"
|
|
.add("<0 2>/4")
|
|
.scale(scales)
|
|
.struct("x*8")
|
|
.velocity("<.8 .3 .6>*8")
|
|
.slow(2),
|
|
"<c2 c2 f2 [[F2 C2] db2]>"
|
|
.scale(scales)
|
|
.scaleTranspose("[0 <2 4>]*2")
|
|
.struct("x*4")
|
|
.velocity("<.8 .5>*4")
|
|
.velocity(0.8)
|
|
.slow(2)
|
|
)
|
|
.fast(1)
|
|
.note()
|
|
.clip("<.4 .8 1 1.2 1.4 1.6 1.8 2>/8")
|
|
.s('kalimba')
|
|
.delay(.2)`;
|
|
|
|
export const festivalOfFingers = `// "Festival of fingers"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
const chords = "<Cm7 Fm7 G7 F#7>";
|
|
stack(
|
|
chord(chords).dict('lefthand').voicing().struct("x(3,8,-1)")
|
|
.velocity(.5).off(1/7,x=>x.add(note(12)).velocity(.2)),
|
|
|
|
chords.rootNotes(2).struct("x(4,8,-2)").note(),
|
|
|
|
chords.rootNotes(4)
|
|
.scale(cat('C minor','F dorian','G dorian','F# mixolydian'))
|
|
.struct("x(3,8,-2)".fast(2))
|
|
.scaleTranspose("0 4 0 6".early(".125 .5")).layer(scaleTranspose("0,<2 [4,6] [5,7]>/4"))
|
|
.note()
|
|
|
|
).slow(2)
|
|
.velocity(sine.struct("x*8").add(3/5).mul(2/5).fast(8))
|
|
.piano()`;
|
|
|
|
// iter, echo, echoWith
|
|
export const undergroundPlumber = `// "Underground plumber"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
// @details inspired by Friendship - Let's not talk about it (1979) :)
|
|
|
|
samples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',
|
|
}, 'https://loophole-letters.vercel.app/samples/tidal/')
|
|
|
|
const h = x=>x.transpose("<0@2 5 0 7 5 0 -5>/2")
|
|
|
|
stack(
|
|
s("<<bd*2 bd> sn> hh").fast(2).gain(.7),
|
|
"[c2 a1 bb1 ~] ~"
|
|
.echo(2, 1/16, 1)
|
|
.slow(2)
|
|
.layer(h)
|
|
.note().s('square')
|
|
.clip(.4)
|
|
.cutoff(400).decay(.12).sustain(0)
|
|
,
|
|
"[g2,[c3 eb3]]".iter(4)
|
|
.echoWith(4, 1/8, (x,n)=>x.transpose(n*12).velocity(Math.pow(.4,n)))
|
|
.layer(h).note()
|
|
.clip(.1)
|
|
)
|
|
.fast(2/3)
|
|
.pianoroll()`;
|
|
/*
|
|
export const bridgeIsOver = `// "Bridge is over"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos, bassline by BDP - The Bridge Is Over
|
|
|
|
samples({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})
|
|
stack(
|
|
stack(
|
|
note("c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>")
|
|
.gain(.8).clip("[.5 1]*2"),
|
|
n("<0 1 2 3 4 3 2 1>")
|
|
.clip(.5)
|
|
.echoWith(8, 1/32, (x,i)=>x.add(n(i)).velocity(Math.pow(.7,i)))
|
|
.scale('c4 whole tone')
|
|
.echo(3, 1/8, .5)
|
|
).piano(),
|
|
s("mad").slow(2)
|
|
).cpm(78).slow(4)
|
|
.pianoroll()
|
|
`; */
|
|
|
|
export const goodTimes = `// "Good times"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
const scale = cat('C3 dorian','Bb2 major').slow(4);
|
|
stack(
|
|
n("2*4".add(12)).off(1/8, add(2))
|
|
.scale(scale)
|
|
.fast(2)
|
|
.add("<0 1 2 1>").hush(),
|
|
"<0 1 2 3>(3,8,2)".off(1/4, add("2,4"))
|
|
.n().scale(scale),
|
|
n("<0 4>(5,8,-1)").scale(scale).sub(note(12))
|
|
)
|
|
.velocity(".6 .7".fast(4))
|
|
.add(note(4))
|
|
.piano()
|
|
.clip(2)
|
|
.velocity(.8)
|
|
.slow(2)
|
|
.pianoroll()`;
|
|
|
|
export const echoPiano = `// "Echo piano"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
n("<0 2 [4 6](3,4,2) 3*2>").color('salmon')
|
|
.off(1/4, x=>x.add(2).color('green'))
|
|
.off(1/2, x=>x.add(6).color('steelblue'))
|
|
.scale('D minor')
|
|
.echo(4, 1/8, .5)
|
|
.clip(.5)
|
|
.piano()
|
|
.pianoroll()`;
|
|
|
|
export const sml1 = `// Hirokazu Tanaka - World 1-1
|
|
stack(
|
|
// melody
|
|
note(\`<
|
|
[e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [e5 f5] [g5 a5]
|
|
[~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ g6] [g6 ~]
|
|
[e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [a5 g5] [c6 [e5@2 d5]]
|
|
[~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ [g6@2 ~] ~@2] [g5 ~]
|
|
[~ a5] [b5 c6] [b5@2 ~@2 g5] ~
|
|
[f5 ~] [[g5@2 f5] ~] [[e5 ~] [f5 ~]] [[f#5 ~] [g5 ~]]
|
|
[~ a5] [b5 c6] [b5@2 ~@2 g5] ~
|
|
[eb6 d6] [~ c6] ~!2
|
|
>\`)
|
|
.clip(.95),
|
|
// sub melody
|
|
note(\`<
|
|
[~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2
|
|
[~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2
|
|
[~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2
|
|
[~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2
|
|
[~ c5]!4 [~ a4]!2 [[c4 ~] [d4 ~]] [[eb4 ~] [e4 ~]]
|
|
[~ c5]!4 [~ eb5]!2 [g4*2 [f4 ~]] [[e4 ~] [d4 ~]]
|
|
>\`),
|
|
// bass
|
|
note(\`<
|
|
c3!7 a3 f3!2
|
|
e3!2 ~!4
|
|
c3!7 a3 f3!2
|
|
e3!2 ~!4
|
|
f3!2 e3!2 d3!2 ~!2
|
|
f3!2 e3!2 ab3!2 ~!2
|
|
>\`)
|
|
.clip(.5)
|
|
).fast(2)`;
|
|
|
|
export const randomBells = `// "Random bells"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({
|
|
bell: { c6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3' },
|
|
bass: { d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3' }
|
|
})
|
|
|
|
stack(
|
|
// bells
|
|
"0".euclidLegato(3,8)
|
|
.echo(3, 1/16, .5)
|
|
.add(rand.range(0,12))
|
|
.scale("D:minor:pentatonic").note()
|
|
.velocity(rand.range(.5,1))
|
|
.s('bell').gain(.6).delay(.2).delaytime(1/3).delayfeedback(.8),
|
|
// bass
|
|
note("<D2 A2 G2 F2>").euclidLegatoRot(6,8,4).s('bass').clip(1).gain(.8)
|
|
)
|
|
.slow(6)
|
|
.pianoroll({vertical:1})`;
|
|
|
|
export const waa2 = `// "Waa2"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
note(
|
|
"a4 [a3 c3] a3 c3"
|
|
.sub("<7 12 5 12>".slow(2))
|
|
.off(1/4,x=>x.add(7))
|
|
.off(1/8,x=>x.add(12))
|
|
)
|
|
.slow(2)
|
|
.clip(sine.range(0.3, 2).slow(28))
|
|
.s("sawtooth square".fast(2))
|
|
.cutoff(cosine.range(500,4000).slow(16))
|
|
.gain(.5)
|
|
.room(.5)
|
|
.lpa(.125).lpenv(-2).v("8:.125").fanchor(.25)`;
|
|
|
|
export const hyperpop = `// "Hyperpop"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
const lfo = cosine.slow(15);
|
|
const lfo2 = sine.slow(16);
|
|
const filter1 = x=>x.cutoff(lfo2.range(300,3000));
|
|
const filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000)
|
|
const scales = cat('D3 major', 'G3 major').slow(8)
|
|
|
|
samples({
|
|
bd: '344/344757_1676145-lq.mp3',
|
|
sn: '387/387186_7255534-lq.mp3',
|
|
hh: '561/561241_12517458-lq.mp3',
|
|
hh2:'44/44944_236326-lq.mp3',
|
|
hh3: '44/44944_236326-lq.mp3',
|
|
}, 'https://freesound.org/data/previews/')
|
|
|
|
stack(
|
|
"-7 0 -7 7".struct("x(5,8,1)").fast(2).sub(7)
|
|
.scale(scales)
|
|
.note()
|
|
.s("sawtooth,square")
|
|
.gain(.3).attack(0.01).decay(0.1).sustain(.5)
|
|
.apply(filter1)
|
|
.lpa(.1).lpenv(2).ftype('24db')
|
|
,
|
|
"~@3 [<2 3>,<4 5>]"
|
|
.echo(4,1/16,.7)
|
|
.scale(scales)
|
|
.note()
|
|
.s('square').gain(.7)
|
|
.attack(0.01).decay(0.1).sustain(0)
|
|
.apply(filter1),
|
|
"6 4 2".add(14)
|
|
.superimpose(sub("5"))
|
|
.fast(1).euclidLegato(3,8)
|
|
.mask("<1 0@7>")
|
|
.fast(2)
|
|
.echo(32, 1/8, .8)
|
|
.scale(scales)
|
|
.note()
|
|
.s("sawtooth")
|
|
.gain(sine.range(.1,.4).slow(8))
|
|
.attack(.001).decay(.2).sustain(0)
|
|
.apply(filter2)
|
|
).stack(
|
|
stack(
|
|
"bd <~@7 [~ bd]>".fast(2),
|
|
"~ sn",
|
|
"[~ hh3]*2"
|
|
).s().fast(2).gain(.7)
|
|
).slow(2)
|
|
// strudel disable-highlighting`;
|
|
|
|
export const festivalOfFingers3 = `// "Festival of fingers 3"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
n("[-7*3],0,2,6,[8 7]")
|
|
.echoWith(
|
|
4, // echo 4 times
|
|
1/4, // 1/4s between echos
|
|
(x,i)=>x
|
|
.add(n(i*7)) // add octaves
|
|
.gain(1/(i+1)) // reduce gain
|
|
.clip(1/(i+1))
|
|
)
|
|
.velocity(perlin.range(.5,.9).slow(8))
|
|
.stack(n("[22 25]*3")
|
|
.clip(sine.range(.5,2).slow(8))
|
|
.gain(sine.range(.4,.8).slow(5))
|
|
.echo(4,1/12,.5))
|
|
.scale("<D:dorian G:mixolydian C:dorian F:mixolydian>")
|
|
.slow(2).piano()
|
|
//.pianoroll({maxMidi:160})`;
|
|
|
|
export const meltingsubmarine = `// "Melting submarine"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples('github:tidalcycles/dirt-samples')
|
|
stack(
|
|
s("bd:5,[~ <sd:1!3 sd:1(3,4,3)>],hh27(3,4,1)") // drums
|
|
.speed(perlin.range(.7,.9)) // random sample speed variation
|
|
//.hush()
|
|
,"<a1 b1*2 a1(3,8) e2>" // bassline
|
|
.off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps
|
|
.add(perlin.range(0,.5)) // random pitch variation
|
|
.superimpose(add(.05)) // add second, slightly detuned voice
|
|
.note() // wrap in "note"
|
|
.decay(.15).sustain(0) // make each note of equal length
|
|
.s('sawtooth') // waveform
|
|
.gain(.4) // turn down
|
|
.cutoff(sine.slow(7).range(300,5000)) // automate cutoff
|
|
.lpa(.1).lpenv(-2)
|
|
//.hush()
|
|
,chord("<Am7!3 <Em7 E7b13 Em7 Ebm7b5>>")
|
|
.dict('lefthand').voicing() // chords
|
|
.add(note("0,.04")) // add second, slightly detuned voice
|
|
.add(note(perlin.range(0,.5))) // random pitch variation
|
|
.s('sawtooth') // waveform
|
|
.gain(.16) // turn down
|
|
.cutoff(500) // fixed cutoff
|
|
.attack(1) // slowly fade in
|
|
//.hush()
|
|
,"a4 c5 <e6 a6>".struct("x(5,8,-1)")
|
|
.superimpose(x=>x.add(.04)) // add second, slightly detuned voice
|
|
.add(perlin.range(0,.5)) // random pitch variation
|
|
.note() // wrap in "note"
|
|
.decay(.1).sustain(0) // make notes short
|
|
.s('triangle') // waveform
|
|
.degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)
|
|
.echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes
|
|
//.hush()
|
|
)
|
|
.slow(3/2)`;
|
|
|
|
/*
|
|
export const outroMusic = `// "Outro music"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({
|
|
bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],
|
|
sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],
|
|
hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],
|
|
perc: ['perc/002_perc2.wav'],
|
|
}, 'github:tidalcycles/dirt-samples');
|
|
|
|
chord("<C^7 Am7 Dm7 G7>*2").dict('lefthand').anchor("G4").voicing()
|
|
.stack(n("0@6 [<1 2> <2 0> 1]@2").scale('C5 major'))
|
|
.slow(4)
|
|
.s("gm_epiano1:1")
|
|
.color('steelblue')
|
|
.stack(
|
|
"<-7 ~@2 [~@2 -7] -9 ~@2 [~@2 -9] -10!2 ~ [~@2 -10] -5 ~ [-3 -2 -10]@2>*2"
|
|
.scale('C3 major').note()
|
|
.s('sawtooth').color('brown')
|
|
)
|
|
.attack(0.05).decay(.1).sustain(.7)
|
|
.cutoff(perlin.range(800,2000))
|
|
.gain(.3)
|
|
.stack(
|
|
s("<bd!3 [bd ~ bd]> sd,hh*3,~@5 <perc perc*3>")
|
|
.speed(perlin.range(.9,1.1))
|
|
.n(3).color('gray')
|
|
).slow(3/2)
|
|
//.pianoroll({autorange:1,vertical:1,fold:0})
|
|
`;
|
|
*/
|
|
|
|
export const bassFuge = `// "Bass fuge"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] },
|
|
'github:cleary/samples-flbass/main/')
|
|
samples({
|
|
bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],
|
|
sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],
|
|
hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],
|
|
}, 'github:tidalcycles/dirt-samples');
|
|
|
|
note("<8(3,8) <7 7*2> [4 5@3] 8>".sub(1) // sub 1 -> 1-indexed
|
|
.layer(
|
|
x=>x,
|
|
x=>x.add(7).color('steelblue')
|
|
.off(1/8,x=>x.add("2,4").off(1/8,x=>x.add(5).echo(4,.125,.5)))
|
|
.slow(2),
|
|
).scale('A1 minor'))
|
|
.s("flbass").n(0)
|
|
.gain(.3)
|
|
.cutoff(sine.slow(7).range(200,4000))
|
|
.resonance(10)
|
|
//.hcutoff(400)
|
|
.clip(1)
|
|
.stack(s("bd:1*2,~ sd:0,[~ hh:0]*2"))
|
|
.pianoroll({vertical:1})`;
|
|
|
|
export const chop = `// "Chop"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({ p: 'https://cdn.freesound.org/previews/648/648433_11943129-lq.mp3' })
|
|
|
|
s("p")
|
|
.loopAt(32)
|
|
.chop(128)
|
|
.jux(rev)
|
|
.shape(.4)
|
|
.decay(.1)
|
|
.sustain(.6)
|
|
`;
|
|
|
|
export const delay = `// "Delay"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
stack(
|
|
s("bd <sd cp>")
|
|
.delay("<0 .5>")
|
|
.delaytime(".16 | .33")
|
|
.delayfeedback(".6 | .8")
|
|
).sometimes(x=>x.speed("-1"))`;
|
|
|
|
export const orbit = `// "Orbit"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
stack(
|
|
s("bd <sd cp>")
|
|
.delay(.5)
|
|
.delaytime(.33)
|
|
.delayfeedback(.6),
|
|
s("hh*2")
|
|
.delay(.8)
|
|
.delaytime(.08)
|
|
.delayfeedback(.7)
|
|
.orbit(2)
|
|
).sometimes(x=>x.speed("-1"))`;
|
|
|
|
export const belldub = `// "Belldub"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples({ bell: {b4:'https://cdn.freesound.org/previews/339/339809_5121236-lq.mp3'}})
|
|
// "Hand Bells, B, Single.wav" by InspectorJ (www.jshaw.co.uk) of Freesound.org
|
|
stack(
|
|
// bass
|
|
note("[0 ~] [2 [0 2]] [4 4*2] [[4 ~] [2 ~] 0@2]".scale('g1 dorian').superimpose(x=>x.add(.02)))
|
|
.s('sawtooth').cutoff(200).resonance(20).gain(.15).shape(.6).release(.05),
|
|
// perc
|
|
s("[~ hh]*4").room("0 0.5".fast(2)).end(perlin.range(0.02,1)),
|
|
s("mt lt ht").struct("x(3,8)").fast(2).gain(.5).room(.5).sometimes(x=>x.speed(".5")),
|
|
s("misc:2").speed(1).delay(.5).delaytime(1/3).gain(.4),
|
|
// chords
|
|
chord("[~ Gm7] ~ [~ Dm7] ~")
|
|
.dict('lefthand').voicing()
|
|
.add(note("0,.1"))
|
|
.s('sawtooth').gain(.8)
|
|
.cutoff(perlin.range(400,3000).slow(8))
|
|
.decay(perlin.range(0.05,.2)).sustain(0)
|
|
.delay(.9).room(1),
|
|
// blips
|
|
note(
|
|
"0 5 4 2".iter(4)
|
|
.off(1/3, add(7))
|
|
.scale('g4 dorian')
|
|
).s('square').cutoff(2000).decay(.03).sustain(0)
|
|
.degradeBy(.2)
|
|
.orbit(2).delay(.2).delaytime(".33 | .6 | .166 | .25")
|
|
.room(1).gain(.5).mask("<0 1>/8"),
|
|
// bell
|
|
note(rand.range(0,12).struct("x(5,8,-1)").scale('g2 minor pentatonic')).s('bell').begin(.05)
|
|
.delay(.2).degradeBy(.4).gain(.4)
|
|
.mask("<1 0>/8")
|
|
).slow(5)`;
|
|
|
|
export const dinofunk = `// "Dinofunk"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
setcps(1)
|
|
|
|
samples({bass:'https://cdn.freesound.org/previews/614/614637_2434927-hq.mp3',
|
|
dino:{b4:'https://cdn.freesound.org/previews/316/316403_5123851-hq.mp3'}})
|
|
setVoicingRange('lefthand', ['c3','a4'])
|
|
|
|
stack(
|
|
s('bass').loopAt(8).clip(1),
|
|
s("bd*2, ~ sd,hh*4"),
|
|
chord("Abm7")
|
|
.mode("below:G4")
|
|
.dict('lefthand')
|
|
.voicing()
|
|
.struct("x(3,8,1)".slow(2)),
|
|
"0 1 2 3".scale('ab4 minor pentatonic')
|
|
.superimpose(x=>x.add(.1))
|
|
.sometimes(x=>x.add(12))
|
|
.note().s('sawtooth')
|
|
.cutoff(sine.range(400,2000).slow(16)).gain(.8)
|
|
.decay(perlin.range(.05,.2)).sustain(0)
|
|
.delay(sine.range(0,.5).slow(32))
|
|
.degradeBy(.4).room(1),
|
|
note("<b4 eb4>").s('dino').delay(.8).slow(8).room(.5)
|
|
)`;
|
|
|
|
export const sampleDemo = `// "Sample demo"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
stack(
|
|
// percussion
|
|
s("[woodblock:1 woodblock:2*2] snare_rim:0,gong/8,brakedrum:1(3,8),~@3 cowbell:3")
|
|
.sometimes(x=>x.speed(2)),
|
|
// melody
|
|
note("<0 4 1 3 2>".off(".25 | .125",add(2)).scale('D3 hirajoshi'))
|
|
.s("clavisynth").gain(.2).delay(.25).jux(rev)
|
|
.degradeBy(sine.range(0,.5).slow(32)),
|
|
// bass
|
|
note("<0@3 <2(3,8) 3(3,8)>>".scale('D1 hirajoshi'))
|
|
.s('psaltery_pluck').gain(.6).clip(1)
|
|
.release(.1).room(.5)
|
|
)`;
|
|
|
|
export const holyflute = `// "Holy flute"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
"c3 eb3(3,8) c4/2 g3*2"
|
|
.superimpose(
|
|
x=>x.slow(2).add(12),
|
|
x=>x.slow(4).sub(5)
|
|
).add("<0 1>/16")
|
|
.note().s('ocarina_vib').clip(1)
|
|
.release(.1).room(1).gain(.2)
|
|
.color("salmon | orange | darkseagreen")
|
|
.pianoroll({fold:0,autorange:0,vertical:0,cycles:12,smear:0,minMidi:40})
|
|
`;
|
|
|
|
export const flatrave = `// "Flatrave"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
stack(
|
|
s("bd*2,~ [cp,sd]").bank('RolandTR909'),
|
|
|
|
s("hh:1*4").sometimes(fast("2"))
|
|
.rarely(x=>x.speed(".5").delay(.5))
|
|
.end(perlin.range(0.02,.05).slow(8))
|
|
.bank('RolandTR909').room(.5)
|
|
.gain("0.4,0.4(5,8,-1)"),
|
|
|
|
note("<0 2 5 3>".scale('G1 minor')).struct("x(5,8,-1)")
|
|
.s('sawtooth').decay(.1).sustain(0)
|
|
.lpa(.1).lpenv(-4).lpf(800).lpq(8),
|
|
|
|
note("<G4 A4 Bb4 A4>,Bb3,D3").struct("~ x*2").s('square').clip(1)
|
|
.cutoff(sine.range(500,4000).slow(16)).resonance(10)
|
|
.decay(sine.slow(15).range(.05,.2)).sustain(0)
|
|
.room(.5).gain(.3).delay(.2).mask("<0 1@3>/8"),
|
|
|
|
"0 5 3 2".sometimes(slow(2)).off(1/8,add(5)).scale('G4 minor').note()
|
|
.decay(.05).sustain(0).delay(.2).degradeBy(.5).mask("<0 1>/16")
|
|
)`;
|
|
|
|
export const amensister = `// "Amensister"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples('github:tidalcycles/dirt-samples')
|
|
|
|
stack(
|
|
// amen
|
|
n("0 1 2 3 4 5 6 7")
|
|
.sometimes(x=>x.ply(2))
|
|
.rarely(x=>x.speed("2 | -2"))
|
|
.sometimesBy(.4, x=>x.delay(".5"))
|
|
.s("amencutup")
|
|
.slow(2)
|
|
.room(.5)
|
|
,
|
|
// bass
|
|
sine.add(saw.slow(4)).range(0,7).segment(8)
|
|
.superimpose(x=>x.add(.1))
|
|
.scale('G0 minor').note()
|
|
.s("sawtooth")
|
|
.gain(.4).decay(.1).sustain(0)
|
|
.lpa(.1).lpenv(-4).lpq(10)
|
|
.cutoff(perlin.range(300,3000).slow(8))
|
|
.degradeBy("0 0.1 .5 .1")
|
|
.rarely(add(note("12")))
|
|
,
|
|
// chord
|
|
note("Bb3,D4".superimpose(x=>x.add(.2)))
|
|
.s('sawtooth').lpf(1000).struct("<~@3 [~ x]>")
|
|
.decay(.05).sustain(.0).delay(.8).delaytime(.125).room(.8)
|
|
,
|
|
// alien
|
|
s("breath").room(1).shape(.6).chop(16).rev().mask("<x ~@7>")
|
|
,
|
|
n("0 1").s("east").delay(.5).degradeBy(.8).speed(rand.range(.5,1.5))
|
|
).reset("<x@7 x(5,8,-1)>")`;
|
|
|
|
export const juxUndTollerei = `// "Jux und tollerei"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
note("c3 eb3 g3 bb3").palindrome()
|
|
.s('sawtooth')
|
|
.jux(x=>x.rev().color('green').s('sawtooth'))
|
|
.off(1/4, x=>x.add(note("<7 12>/2")).slow(2).late(.005).s('triangle'))
|
|
.lpf(sine.range(200,2000).slow(8))
|
|
.lpa(.2).lpenv(-2)
|
|
.decay(.05).sustain(0)
|
|
.room(.6)
|
|
.delay(.5).delaytime(.1).delayfeedback(.4)
|
|
.pianoroll()`;
|
|
|
|
export const csoundDemo = `// "CSound demo"
|
|
// @license with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
await loadCsound\`
|
|
instr CoolSynth
|
|
iduration = p3
|
|
ifreq = p4
|
|
igain = p5
|
|
ioct = octcps(ifreq)
|
|
|
|
kpwm = oscili(.05, 8)
|
|
asig = vco2(igain, ifreq, 4, .5 + kpwm)
|
|
asig += vco2(igain, ifreq * 2)
|
|
|
|
idepth = 2
|
|
acut = transegr:a(0, .005, 0, idepth, .06, -4.2, 0.001, .01, -4.2, 0) ; filter envelope
|
|
asig = zdf_2pole(asig, cpsoct(ioct + acut + 2), 0.5)
|
|
|
|
iattack = .01
|
|
isustain = .5
|
|
idecay = .1
|
|
irelease = .1
|
|
asig *= linsegr:a(0, iattack, 1, idecay, isustain, iduration, isustain, irelease, 0)
|
|
|
|
out(asig, asig)
|
|
endin\`
|
|
|
|
"<0 2 [4 6](3,4,2) 3*2>"
|
|
.off(1/4, add(2))
|
|
.off(1/2, add(6))
|
|
.scale('D minor')
|
|
.note()
|
|
//.pianoroll()
|
|
.csound('CoolSynth')`;
|
|
|
|
export const loungeSponge = `// "Lounge sponge"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos, livecode.orc by Steven Yi
|
|
|
|
await loadOrc('github:kunstmusik/csound-live-code/master/livecode.orc')
|
|
|
|
stack(
|
|
chord("<C^7 A7 Dm7 Fm7>/2").dict('lefthand').voicing()
|
|
.cutoff(sine.range(500,2000).round().slow(16))
|
|
.euclidLegato(3,8).csound('FM1')
|
|
,
|
|
note("<C2 A1 D2 F2>/2").ply(8).csound('Bass').gain("1 4 1 4")
|
|
,
|
|
n("0 7 [4 3] 2".fast(2/3).off(".25 .125", add("<2 4 -3 -1>"))
|
|
.slow(2).scale('A4 minor'))
|
|
.clip(.25).csound('SynHarp')
|
|
,
|
|
s("bd*2,[~ hh]*2,~ cp").bank('RolandTR909')
|
|
)`;
|
|
|
|
export const arpoon = `// "Arpoon"
|
|
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
// @by Felix Roos
|
|
|
|
samples('github:tidalcycles/dirt-samples')
|
|
|
|
n("[0,3] 2 [1,3] 2".fast(3).lastOf(4, fast(2))).clip(2)
|
|
.offset("<<1 2> 2 1 1>")
|
|
.chord("<<Am7 C^7> C7 F^7 [Fm7 E7b9]>")
|
|
.dict('lefthand').voicing()
|
|
.add(perlin.range(0,0.2).add("<-12 0>/8").note())
|
|
.cutoff(perlin.range(500,4000)).resonance(12)
|
|
.gain("<.5 .8>*16")
|
|
.decay(.16).sustain(0.5)
|
|
.delay(.2)
|
|
.room(.5).pan(sine.range(.3,.6))
|
|
.s('piano')
|
|
.stack(
|
|
"<<A1 C2>!2 F2 F2>"
|
|
.add.out("0 -5".fast(2))
|
|
.add("0,.12").note()
|
|
.s('sawtooth').cutoff(180)
|
|
.lpa(.1).lpenv(2)
|
|
)
|
|
.slow(4)
|
|
.stack(s("bd*4, [~ [hh hh? hh?]]*2,~ [sd ~ [sd:2? bd?]]").bank('RolandTR909').gain(.5).slow(2))
|
|
`;
|