Strudelify

Don't Dream It's Over

Young Paul

KeyC majorTempo82 bpm
0:00/0:00
// Don't Dream It's Over — Young Paul
// 82 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass pick · "PICK BASS"
const bass = note(`<
  ~@4 A B C D E F G H I@2 J K L M N O K B C D E P G H I@2 J K L M N O Q@2 R S T U@2 V W X Y Z AA AB AC@2 AD AE AF@2 V AG
  AH AI AJ AK AL AM AN AO AP AQ AR AS AT@2 AN AU AV@2 AW AX AY O AX AZ
>`.pickRestart({
  A: "~@9 f2 g2@2 c3@4", B: "c2 g1 a1 c2 ~@2 d2@2 c2@4 ~@4", C: "a1@4 ~ e2 a2@8 ~@2", D: "f2@5 ~ f2 ~ f2@5 ~ f2 ~",
  E: "e2@5 ~ e2 ~ e2@6 g1 a1", F: "c2 g1 a1 c2 ~@2 d2@2 c2@4 ~@2 c2 b1", G: "a1@4 ~ e2 a2@6 ~ a1 g1 ~",
  H: "f1@5 ~ f1 ~ f1@5 ~ f1 ~", I: "[e1@5 ~ e1 ~ e1@5 ~ g1 f#1 f1@5 ~ f1@2 g1@5 ~ g1 a1, ~@13 e1@5 ~@14]/2",
  J: "c2@5 ~ c2@2 a1@5 ~ a1 g1", K: "f1@5 ~ f1@2 g1@5 ~ g1 a1", L: "c2@6 g1 c2 a1@4 g1@4",
  M: "f1@5 ~ e1 f1 g1@5 ~ g1 a1", N: "c2@6 b1 c2 a1@8", O: "f1@5 ~ f1 ~ f1@7 ~", P: "c2 g1 a1 c2 ~@2 d2@2 c2@4 g1@3 b1",
  Q: "[f1@5 ~ f1@2 c2@6 c3@6 c2 g1!2 ~ a1@5 ~ a1 ~]/2", R: "a1@5 ~ g1@2 f1@5 ~ f1 ~, ~@5 a1@5 ~@6",
  S: "f1@5 ~ f1 ~ e1@5 ~ e1!2", T: "e1 ~@7 c2 g1 a1 c2 ~@2 d2@2",
  U: "[c2@4 ~@2 c2 b1 a1@4 ~ e2 a2@6 ~ a1 g1 ~ f1@5 ~ f1 ~]/2", V: "f1@5 ~ f1 ~ e1@5 ~ e1 ~",
  W: "e1@4 e2@4 f2@5 ~ f2 ~", X: "c2 ~ c2@2 ~ c2 g1 ~ f1@5 ~ f1 a1", Y: "c2@4 e1@4 f1@5 ~ f1!2",
  Z: "c2 ~ c2@2 ~ c2 d2@2 a#1@5 ~ a#1 ~", AA: "a#1@4 ~ a#1!2 ~ a#1@5 ~ a#1!2", AB: "a#1@6 ~@2 c2 g1 a1 c2 ~@2 d2@2",
  AC: "[c2@4 ~@4 a1@4 ~ e2 a2@8 ~@2 f2@5 ~ f2 ~]/2", AD: "f2@5 ~ f2 ~ e2@5 ~ e2 ~",
  AE: "e2@6 g1 a1 c2 g1 a1 c2 ~@2 d2@2", AF: "[c2@4 g1@3 b1 a1@4 ~ e2 a2@6 ~ a1 g1 ~ f1@5 ~ f1 ~]/2",
  AG: "e1@5 ~ g1 f#1 d2@5 ~ d2@2, ~@5 e1@5 ~@6", AH: "e2@5 ~ g1 a1 c2@5 ~ c2@2", AI: "a1@5 ~ a1 g1 f1@5 ~ f1@2",
  AJ: "g1@5 ~ g1 a1 c2@4 ~ e2 g2 e2, ~@3 c2", AK: "a2@4 ~@2 d2 e2 f2@3 e2 a2 g2 f2 c2", AL: "g1@5 ~ g1 a1 c2@6 b1 c2",
  AM: "a1@8 f1@5 ~ f1 ~", AN: "f1@7 ~ f1@5 ~ f1@2", AO: "g1@5 ~ g1@2 f1@5 ~ f1 ~",
  AP: "g1@3 ~ c2 g1 a1 b1 c2@5 ~ c2@2, ~@3 g1@2 ~@11", AQ: "a1@5 ~ g1@2 f1@5 ~ f1@2, ~@5 a1@5 ~@6",
  AR: "g1@5 ~ g1 a1 c2@4 ~ c2 f#1 g1", AS: "a1@4 g1@4 f1@5 ~ f1@2",
  AT: "[g1@5 ~ g1@2 c2@5 ~ e2@2 a1@8 f1@5 ~ f1 ~, ~@13 c2@5 ~@14]/2",
  AU: "f1@5 ~ f1 ~ g1@3 ~ c2 g1 a1 b1, ~@11 g1@2 ~@3",
  AV: "[c2@5 ~ c2@2 a1@5 ~ g1@2 f1@5 ~ f1@2 g1@5 ~ g1 a1, ~@13 a1@5 ~@14]/2",
  AW: "c2@3 ~ e2@2 g2 a1 a2 e2 d2 a1 ~@2 g1@2, ~@3 c2@3 ~@10", AX: "f1@5 ~ f1@2 g1@5 ~ g1@2",
  AY: "c2@5 ~ e2@2 a1@8, ~@5 c2@5 ~@6", AZ: "c2 ~",
})).s("gm_electric_bass_pick").gain(0.41)

// chords · piano · "A.PIANO 1"
const piano = note("<~@36 A@3 B C D@4 ~@12 E@3 F@2 G@3 H I@2 F@2 G@3 J@3 K L K M@2 N>".pickRestart({
  A: "[~@7 d4 e4@8 d4@4 ~@8 b3@4 ~@6 g2@2 a2@6 b2@2, ~@7 c4@21 ~@4 [a3,e4]@8 ~@8, ~@5 g4@5 ~@2]/3", // A5
  B: "c3@4 d3@4 b2@6 a2 [a2,b2]", C: "g#2 [c3,e3]",
  D: "[d3@2 ~@6 a3@2 b3@2 ~ b3 a3 g3 f3 e3 d3 c3 ~ a3 g#3 f3 e3@4 ~@4, c3 e3@2 ~@5, ~ g3@3 ~@2 c4@4 b3@4 ~@2]/4",
  E: "[~ [a3,f4] b3 ~@2 f4, ~ d4@2 c4@3, ~ g4 a4, ~@3 e4@2 ~]/3", F: "[[d4,g4,b4] g4 ~ f4, ~ c4@3, ~ e4@2 ~, ~ a4]/2",
  G: "[[d4,g4,b4] g4 ~ f4@3, ~ c4@5, ~ e4@2 ~@3, ~ a4@2]/3", H: "[d4,g4,b4] [a3,d4,f4]",
  I: "[b3 ~@2 f4, g4 a4, ~ c4@3, ~ e4@2 ~]/2",
  J: "[a3 [g3,g4] f3 [e3,e4] [d3,d4]@4 g3 f3 e3 [d3,d4] c3@4 a3 [g3,g4] f3 [e3,e4] [d3,d4]@4, a4@2 a4, c4@5 e4@3 f4 f4@3, f4@2 f4@6 e4 f4@3 c4@8 ~@4, ~ g4 ~]/3", // G E D G E D
  K: "g3 [f3,f4] e3 [d3,d4] [c3,c4]@4, g4, e4 e4@3", L: "a3 [g3,g4] f3 [e3,e4] [d3,d4]@4, a4, f4 f4@3",
  M: "[f4@3 [d4,g4,b4]]/2", N: "[e4,g4,c5] ~",
})).s("gm_piano").gain(0.26)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@5 A@2 B C D@4 ~@4 E@4 F@3 G H@2 I@2 ~@4 J@3 K@8 L@3 M@6 N@5 ~@4 O@3 P ~@4 O@3 ~@4 E@4 ~
>`.pickRestart({
  A: "[[g2,c3] [a2,e3], g3]/2", B: "[g2,c3,f3]", C: "e3@10 ~ c3 d3 a2 c3@2, [g#2,b2], ~@5 e3@3",
  D: "[c3@2 [e3,a3]@2 [c3,f3]@2 d3 e3, c4@3 [g#3,b3], g3 g3]/4", // A5 F5 G#m
  E: "[~@7 [f3,a3] g3@4 a3@4 f3@12 [g3,b3,d4]@4, ~@7 c4@21 ~@4, ~@14 g3 ~ e3@16 a3@8 ~@24]/4", F: "[d3 e3 f3, c3]/3",
  G: "~@9 [c4,d4,e4] ~ d4!2 a3 c4@2, [b2,e3]", // C E5
  H: "[c4@7 ~ e4 ~@12 e4@11, g3, c3 [e3,a3], ~@7 c4@25, ~@9 g4@12 d4 ~@10]/2", // A5
  I: "[[c3,f3,c4]@2 d3 e3, g3, ~ [g#3,b3]]/2", J: "[~@7 [f3,a3] g3@4 a3@4 f3@8, ~@7 c4@17, ~@14 g3 ~ e3@16 a3@8 ~@8]/3",
  K: "[~@8 g3@16 ~@16 f3@16 ~@8 b3@8 [g2,e3]@16 e3 ~@3 d3@4 ~@4 b2@4 [c3,f3]@16 [b2,e3]@8, ~ c3@6 [b2,e3]@2 c3@3 c3 ~@3, ~ e3@4 ~@6 a2@4 ~, ~@6 a3@8 ~ g#3@3 ~@14]/8", // C F5 E5
  L: "[g#2 [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3], ~ c4@5]/3", // F Em F Em F
  M: "[[e3,g3] [f3,a#3,d4]@4 d3@2 e3@2 f3@2 [b2,e3], ~@5 c3@6 ~]/6", // Em A# E5
  N: "[~ [c4,d4] ~ d4!2 a3 c4@2 c4@7 ~ e4 ~@12 e4@11 [c3,f3]@16 d3@8 e3@8 ~@8, ~ e4@2 ~@5 g3@32 g3@32 ~@8, ~ c3@2 [e3,a3]@2 ~@2 [g#3,b3]@2 ~, ~@15 c4@41 ~@24, ~@17 g4@12 d4 ~@50]/5", // Csus2 F5 A5 G#m
  O: "[~@3 [f3,a3] g3@4 a3@4 f3@12, ~ c4@7, ~@6 g3 ~ e3@16 a3@8 ~@16]/3", P: "[g3,b3,d4] ~",
})).s("gm_percussive_organ").gain(0.26)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<A@5 ~@6 B@3 ~@13 B@3 ~@52>".pickRestart({
  A: "[~@27 g3@8 ~@5, ~@3 c3@16 c3@16 ~@5, ~@11 g3@10 ~@19]/5", B: "[~@3 [b3,d4,e4]@16 ~@5]/3",
})).s("gm_pad_sweep").gain(0.13)

// chords · tubular bells · "TUBULARBEL"
const tubular_bells = note(`<
  ~@14 A B C ~@12 D E D F G E H ~@21 I J K L M J N O P J K L Q J N O D R S T G E U V W
>`.pickRestart({
  A: "e4 ~ d4 ~ g4 ~@3 a4@4 ~@4", B: "a4 ~ g4 ~", C: "g4@4 ~@4 a4@4 e3@2 d3 ~", D: "a3 ~@7 b3 ~@7",
  E: "e4 ~@3 [c4,g4] ~@3 [c4,a4] ~@3 [c4,g4] ~@3", F: "[c4,e4] ~@3 [c4,g4] ~@3 [c4,a4] ~@3 e4 ~ d4 ~",
  G: "c4 ~@7 b3 ~@7", H: "a3 ~@15", I: "~@8 a3 ~@7", J: "b3 ~@7 e4 ~@3 [c4,g4] ~@3",
  K: "[c4,a4] ~@3 [c4,g4] ~ g4 ~ [a3,f4] ~@7", L: "b3 ~@7 [c4,e4] ~@3 [c4,g4] ~@3",
  M: "[c4,a4] ~@2 a4 e4 g4 d4 ~ c4 ~@7", N: "[c4,a4] ~@3 [c4,g4] ~@3 a3 ~@7", O: "g4!4 ~@4 g4 ~ g4 ~ g4 ~@3",
  P: "g4!2 ~@6 a3 ~@7", Q: "[c4,a4] ~@2 a4 e4 ~ d4 ~ c4 ~@7", R: "e4 ~@3 [c4,g4] ~@3 [c4,a4] ~@3 [c4,g4] ~ g4 ~",
  S: "[a3,f4] ~@7 b3 ~@7", T: "[c4,e4] ~@3 [c4,g4] ~@3 [c4,a4] ~@3 [e4,g4] ~ d4 ~", U: "a3 ~@7 g4!4 ~@4",
  V: "g4 ~ g4 ~ g4 ~@3 g4!2 ~ g4!2 ~@3", W: "c4 ~@15",
})).s("gm_tubular_bells").gain(0.2)

// chords · piano · "A.PIANO 1"
const piano_2 = note("<~@13 A@6 B C ~@7 D A@6 B E ~@20 F@5 G@4 H@4 I@3 J@2 K@2 A@2 B C L>".pickRestart({
  A: "[[c3,f3,a3] [d3,b3] ~ a3, ~ g3@2 ~, ~ [e3,c4]]/2", B: "[f3,c4]@7 [f3,c4], a3@8 ~@6 a3 ~",
  C: "[a3,c4] ~@7 [g3,b3,d4]@8, f3@3 ~", D: "[b2,e3]", E: "[a3,c4] ~@15, f3@3 ~",
  F: "[~ [d3,f3,a3,d4] [d3,b3] g4 [a3,e4] [c3,f3,a3] [d3,b3] ~ a3 [c3,f3,a3], ~ a4@2 [e3,c4]@2 ~ g3@2 ~@2, ~@2 g3@2 ~ f4@2 [e3,c4,e4]@2 ~]/5", // Dm G A5 F G F C
  G: "[[d3,b3]@8 ~@8 a3@8 [f3,c4]@14 [f3,c4]@2 [a3,c4] ~@7 [g3,b3,d4]@8 [c3,f3,a3,c4,f4]@8, g3@16 ~@8 a3@8 ~@6 a3 ~@25, ~@2 [e3,c4]@4 ~@4 f3@3 ~@3]/4", // G F5 Am G F C
  H: "[[d3,b3] ~ [a3,e4] [c3,f3,a3] [d3,b3] ~ a3 [c3,f3,a3], [g3,g4]@2 ~ f4@2 [e3,c4,e4]@2 ~, ~ [e3,c4]@2 ~ g3@2 ~@2]/4", // G A5 F G F G C
  I: "[[d3,b3]@8 ~@8 a3@8 [f3,c4]@14 [f3,c4]@2 [a3,c4] ~@7, g3@16 ~@8 a3@8 ~@6 a3 ~@9, ~ [e3,c4]@2 ~@2 f3]/3", // G F5 Am C
  J: "[[c3,f4] [d3,b3] ~ [a3,e4], f3 ~ [g3,g4]@4 ~@2, [a3,c4] ~@15 [e3,c4]@16]/2", // F5 G A5 G Am C
  K: "[[c3,f3,a3] [d3,b3] ~ a3, f4 [e3,c4,e4], ~ g3@2 ~]/2", L: "[c4,e4] ~",
})).s("gm_piano").gain(0.26)

// chords · piano · "A.PIANO 1"
const piano_3 = note("<~@16 A B ~ C D@2 ~@12 E F@2 ~@19 G H ~@5 I J K ~@5 L M ~@5 N O P Q>".pickRestart({
  A: "~@6 e4 d4", B: "c4 ~@3", C: "[f3,a3,c4] ~",
  D: "[[f3,a3,c4]@4 [g3,b3,d4]@2 ~@6 g5@3 ~, ~@7 g3@7 ~@2, ~@4 [c4,g4]@3 ~, ~@11 d5@2 ~@3]/2", E: "~@7 [b3,d4]",
  F: "[f3,a3,c4] ~@3", G: "~@4 e4 g#4 a4 b4", H: "e4@6 d4 c4 a3@4 ~@4", I: "~@6 [b3,d4]@2 [f3,a3,c4]@7 ~",
  J: "~@13 g4 ~ g4, ~@8 [f3,a3,c4]@7 ~", K: "~ g4 ~ g4!2 ~@11, [g3,b3,d4] ~", L: "~@6 [g3,b3,d4]@2 [f3,a3,c4]@7 ~",
  M: "~@8 g5 g4 ~ g4 ~ g4 ~ g4, ~@8 [f3,a3,c4]@7 ~", N: "~@7 [g3,b3,d4]", O: "[f3,a3,c4]@7 ~@9",
  P: "~@5 g4 ~ g4 ~ g4 ~ g4!2 ~@3, [f3,a3,c4]@7 ~ [g3,b3,d4]@8", Q: "[c2,c3,e3,g3] ~",
})).s("gm_piano").gain(0.41)

// drums · kick
const kick = s("bd").struct("<~@5 A@15 B A@15 C D@27 E F D@6 G A@7 H ~>".pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@7", B: "~@10 x!2 ~@4", C: "x ~@2 x ~@4 x ~@2 x ~@2 x ~", D: "x ~@7 x ~@2 x ~@2 x ~", E: "x",
  F: "~@2 x!2 ~@4 x ~@2 x ~@2 x ~", G: "x!2", H: "x ~@7 x ~@4 x ~@2",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<~@5 A@9 B A B A@3 ~ C D@3 C D@2 E ~@20 F D@3 G D@3 H ~@24>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~ x!3", D: "x!4", E: "x!3 ~", F: "~@3 x", G: "x!2 ~ x", H: "x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@20 A ~@7 B C@3 D C@16 E ~@7 F C@3 G C@2 E G C@3 G C@2 H C@3 I C@3 J K>".pickRestart({
  A: "~@3 x", B: "~@11 x!2 ~@3", C: "~ x ~ x", D: "~@4 x ~@7 x!3 ~", E: "~ x ~@2", F: "~@3 x!2 ~@7 x ~@3",
  G: "~@4 x ~ x!2 ~@4 x ~@3", H: "~@4 x ~@5 x!2 ~@4", I: "~@4 x ~@7 x ~ x!2", J: "~@4 x ~@7 x ~@2 x", K: "x",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@12 A ~@7 B ~@3 C ~@11 D ~@7 E ~@8 D ~@11 F ~@6 G ~@7 H ~>".pickRestart({
  A: "~@11 x!2 ~ x ~", B: "~ x", C: "~@7 x", D: "~@3 x ~@4", E: "~@3 x!2 ~ x ~@9", F: "x", G: "~@14 x!2",
  H: "~@11 x!2 ~@3",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@4 B C D@2 B C D@2 B C D@2 B C D E B C D@2 B C D F B C D@2 B C D G H I H J H I H J H I H J@2 H I H J H I H K H I H
  J H I L M H I H J H N O P C D@2 B C Q R ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!4 ~ x!2", C: "x!5 ~ x ~", D: "x!5 ~ x!2", E: "x!3 ~", F: "x!7 ~", G: "x!4 ~ x!3", H: "x ~ x!6",
  I: "x ~ x ~ x!4", J: "x ~ x!2 ~ x!3", K: "x!3 ~@2 x!3", L: "x ~ x!3 ~ x ~", M: "x ~@4 x ~ x", N: "x ~ x ~@3 x!2",
  O: "x ~ x!4 ~@2", P: "~ x ~ x!2 ~ x!2", Q: "~@2 x!3 ~ x!2", R: "x ~ x!3 ~ x!2",
})).gain(0.41)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ C D C ~ C D C ~ C D C ~ C@2 D C ~ C D C ~ C@3 ~ C
  D C ~ C@3 ~ C@3 A@3 ~ A@3 E ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@5 x ~ x", C: "~ x ~@6", D: "~ x ~ x ~@4", E: "~ x ~@3 x ~@2",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 A ~@7 B ~@15 B ~@6 C D ~@19 E ~@7 F ~@7 G ~>".pickRestart({
  A: "~@5 x!2 ~ x!2 ~@6", B: "~@5 x ~@10", C: "~@13 x!2 ~", D: "x!2 ~@14", E: "~@13 x ~@2", F: "~@12 x!2 ~@2", G: "~ x",
})).gain(0.46)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@3 A ~@3 A ~@3 B ~@3 A ~@3 C ~@3 A ~@7 D ~@3 D ~@3 D ~@4 D ~@3 E ~ E ~ D ~@3 F ~ E ~ D ~@2 C ~ C ~ A ~@5
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "~@7 x", D: "~ x ~@6", E: "~@3 x ~@4", F: "~ x ~@2",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@12 A ~@7 B ~@15 C ~@6 D ~@20 E ~@17>".pickRestart({
  A: "~@2 x!2 ~@12", B: "~ x ~@6", C: "~ x ~@2", D: "~@10 x!2 ~@4", E: "~@5 x ~@2",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B ~@3 B ~@3 C ~@2 B@3 ~@3 B ~@3 B ~@3 B ~@3 D ~@3 B ~ E ~ F ~@3 A
  G A ~@2
>`.pickRestart({
  A: "x", B: "~ x", C: "~ x!2 ~ x ~@3", D: "~@2 x!2", E: "~@3 x!2 ~@3", F: "x!2 ~@2", G: "~@7 x",
})).gain(0.26)

// drums · tambourine
const tambourine = s("tb").struct("<~@13 [~ x ~ x]!31 [~@3 x] [~ x ~ x]!36 ~>").gain(0.46)

// drums · congas
const congas = s("conga:13").struct(`<
  ~
  [x ~ x ~@4 x ~ x ~@5 x]!2
  [x!2 ~@5 x ~ x ~@5 x]
  [x ~ x ~@4 x ~ x ~@4 x!2]
  ~@77
>`).gain(0.82)

// drums · congas
const congas_2 = s("conga:18").struct("<~ [~@4 x!2 ~@6 x!2 ~@2]!4 ~@77>").gain(0.82)

// drums · congas
const congas_3 = s("conga:33").struct("<~ [~@3 x ~@7 x ~@4]!4 ~@77>").gain(0.82)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@5
  [x!3 ~ x ~ x!3 ~ x!6]!31
  [x!3 ~ x ~ x!5 ~ x ~ x!2]
  [x ~ x!9 ~ x ~ x!2]!36
// … 18 more lines

More by Young Paul