Strudelify

Carrie

Europe

KeyG majorTempo68 bpm
0:00/0:00
// Carrie — Europe
// 68 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 16, 4/4 at bar 17, 2/4 at bar 38, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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.

// chords · piano
const piano = note("<~ A@3 B C D E F G H I J K H L@2 ~@60>".pickRestart({
  A: "[~@4 e4@2 f#4@2 g4@2 e4@2 b3@2 ~@2 d3@3 ~ g3@4 g4 ~ d5 e5 ~@4 a4 ~@3 g5@2 c5@2 g4@2 ~@4 d5 ~, e3@15 ~@5 c3@8 b2@4 [a2,e4]@8 b2@8, ~@2 b3@10 ~@2 g3@5 ~@6 g4@3 d5@2 b4@2 c5@4 ~@4 [b4,d5]@6 ~@2, ~@29 g4@2 d5@2 ~ a4@4 ~@4 g4@5 ~, ~@11 g5]/3", // A5 Bm
  B: "~@6 e5@2 f#5 ~ g4 a4 e4 ~ d4 e4, c3 d2, [c5,e5]@6 ~@3 d5@2 ~@2 f#4@2 ~, ~ g4@3 ~@2 a3@2, ~ g5 ~@2", // C
  C: "~@4 [c4,g4]@4 ~@7 g3, [a1,e3,a3]@2 [a1,e3] b1, ~@9 a3@2 e4@2 d4@2 ~, ~@5 c4 g4 b3", // C5 A5
  D: "[c4,e4,g4]@4 [e4,g4]@4 d4 ~ d4 ~@3 a3@2, [c2,g3] [d2,f#4], ~@4 c4 ~@3 a3@6 ~@2, ~@3 d4", // C Em C5 D
  E: "a4 ~ g4@2 g5@8 [f#2,d3,f#3,a3]@4, [g2,b3,d4]@3 ~, ~ b4@2 ~@13", // D G
  F: "~@2 f#4 d4 ~@2 [e3,g3]@2, e2, [b2,e3,g3]@3 ~, ~@4 e4@3 ~", // Em
  G: "~ g4 e4 d4 ~ g2 ~ g4, [d2,g3,b3,d4] [c2,g3,c4]@2 [b2,g3,b3,d4], ~@8 e4@7 ~", // G C5 G
  H: "a3 ~@3 g4@2 c4@2 g3@2 ~@4 d4 ~, [a2,e3] b2, c4@2 ~@2 [b3,d4]@3 ~, ~@2 a3@4 ~@4 g3@5 ~, ~@3 g4", // A5 Bm
  I: "~@3 e4 ~@3 a4, c3 d3, [c4,e4]@3 ~@2 d4@3, ~ g3@3 [a3,f#4]@2 [a3,f#4]@2, ~ g4 ~@2", // C D
  J: "g4 e5 ~ e5 ~ e5 ~ e5, [e2,e4,b4], ~ a4 g4 a4", // E5
  K: "~ e4 ~ b4 c2@4 ~@2 d4 e4 ~@2 b3 d4, g3@10 g3@2 ~ g3@2 ~, [d2,b3,d4]@2 e4@3 ~ d4 ~, b4 g4 [c4,c5]@4 ~@2, ~@2 c3 b2", // G C
  L: "[~@4 g4 e4 c4@2 [d3,f#3,a3,d4]@16 ~@8, c3 ~@3, [c4,e4]@3 ~@13, ~ g3@3 ~@12]/2", // D C
})).s("gm_piano").gain(0.35).pan(0.4)

// bass · fretless bass
const bass = note(`<
  ~@15 A@2 B C D E F G H E F G I J K@2 L@2 M N L@2 M O P Q R S T U V S W U X Y Z AA AB Y Z AC V P Q R S T U AD S AE U AB
  AF AG AH@2 ~@4
>`.pickRestart({
  A: "[~ d2@2 c2]/2", B: "d2 c2", C: "a1 d2", D: "c2@2 d2@2 g2@3 g2", E: "f#2@4 e2@3 e2", F: "d2@4 c2@2 c2 d2",
  G: "e2@4 d2@3 a1", H: "d2@4 g2@3 g2", I: "d2@4 a1@3 e1", J: "a1@3 b1 c2@3 g2",
  K: "[b2 c3 b2 a2 b2 a2 g2 f#2 g2@12 f#2@4 e2@7 b1]/2", L: "[e2 ~ e2@6 d2@4 c2@6 g1@2 b1@4 a1@6 a1@2]/2",
  M: "b1@6 a1 b1 c2@6 a1@2", N: "d2@8 e2@7 b1", O: "d2@7 a1 d2 ~ d2@6", P: "c2@7 a1 d2 ~ d2@6", Q: "c2@7 g1 a1 ~ a1@6",
  R: "d2@2 c2 d2", S: "g1@3 g1 f#1@4", T: "e1@3 e1 d2@4", U: "c2@2 c2 d2 e2@4", V: "d2@3 a1 d2@4", W: "e1 e2 d2@2",
  X: "d2@3 a1 d2@2 c2 d2", Y: "e2@3 b1 e2@2 e2 d2", Z: "e2@3 f#1 g1@2 a1 b1", AA: "c2@4 e2@3 e2", AB: "d2@3 a1 d2@3 d2",
  AC: "c2@2 e2!2", AD: "d2@6 a1@2 d2@3 b1@2 g1 a1@2", AE: "e1@4 e2@4 d2@6 a1 b1", AF: "a1@3 e1 a1@3 b1",
  AG: "c2@6 g2@2 b2 c3 b2 a2 b2 a2 ~ g2", AH: "[f#2 g2@30 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · pad new age
const pad_new_age = note(`<
  A B@5 C@8 D@3 E F G H I J K H I J L@5 M N O P@2 Q R S T U V W X Y V W X Z AA AB AC AD AA AB AC AD S T U V W X Y V W X
  Y AE AF AG AH@5
>`.pickRestart({
  A: "~@5 g6 f#6 d6",
  B: "[~@16 d4@4 ~@4 g5 ~@7 a5@2 ~@4 c6@2 g5@2 ~@4 d6@2 ~@6 e6@2 ~@2 g5 ~@20 g4, e4@11 ~@2 d6 b3@3 ~ g6@2 d6@2 g6@2 [c4,c6]@4 d3@6 ~@2 [a2,e4]@3 ~, ~@2 b4@10 b4@5 ~@3 g4@7 e6@2 g5@2 d6@2 ~ a5@6 b3@12 g6@5 d6@2 ~ a4@3 e5@2 ~@3 [c5,g5]@6 c5@3 d5@3, ~@4 e5@4 g5@4 ~@13 g5@3 d6@2 b5@2 c6@6 ~@2 b5@8 e6@6 ~@2 f#6@2 ~@2 e5@2 d5@2 [a2,e4,a4]@9 ~@2 e5@3 b4@2, ~@6 f#5@4 e5@4 g4@6 c4@11 ~ [a3,e5]@10 g5@8 g5@8 ~ a5@2 f#5@3 ~@9 a4@3 [b2,g5]@4]/5", // C A5 C5 A5 Em
  C: "[[c5,e5,g5]@4 c5@2 ~@2 d5@2 d5@2 ~@2 a4@2 ~@28 g4@4 ~@2 g5@2 e5@2 d5@2 ~@2 g3@2 ~@2 g5@2 a4@2 ~@4 c5@2 g4@2 ~@4 d5@2 ~@6 e5@2 ~@6 a5@2 ~@14 e6@2 ~@15 d5, [c3,g4]@12 ~@4 [g3,b4,d5]@16 [e4,g4]@12 e4@4 [g4,d5]@4 g4@8 [b3,g4,b4,d5]@6 ~@2 g5@4 d5@4 g5@4 c4@12 ~@4 e3@20 [c3,e5]@6 [g4,d5] e5 [b3,d5]@4, ~@4 [e5,g5]@6 ~@2 d5@4 a5@2 g5@5 ~@9 e3@24 e5@10 a4@6 b3@10 g4@8 d5@6 g5@4 a5@4 g5@4 a5@4 [b4,d5,b5] e5 g5 b5 c6@9 g4@3, ~@4 [d3,f#5]@6 ~@4 [f#3,d4,f#4,a4]@3 ~ f#5 d5 e5@4 [d3,b4]@3 ~@5 [a3,e4]@5 g4@3 e5@2 g5@2 [a4,f#5]@2 [a4,f#5]@2 [e5,b5]@8 d3@2 c5@6, ~@8 a4@6 ~@3 b5@3 g6@12 b3@18 ~@2 [c3,c5]@12 c5@6 ~@2 b4@8 c5@8 d4@10 e6@4 e6@4 e6@4 ~@2 g4@8 c4@6 b4@2]/8", // C C5 G Em G5 G C G5 …
  D: "[a4 ~@2 c5 g4 ~@2 d5 ~@3 c5 [f#5,a5,d6,f#6]@8 [g3,c4,e4]@4, [a3,e4]@10 g4@8 g4@9 ~@21, c5@3 ~ b4@4 c4@6 ~@10, ~ a4@3 b3@6 g5 ~@13, ~@4 g5@4 d5@4 g5@4 [c5,e5]@5 e5@2 ~@25]/3", // D C A5 C
  E: "[a3,d4,f#4] [g3,c4,e4]", F: "[a3,c4,e4] [a3,d4,f#4]", G: "d6 e6 d6 c6 e6 f#6 e6 d6 [b3,d4,g4]@8",
  H: "[b3,d4,f#4]@4 [g3,b3,e4]@3 [g3,e4]", I: "[g3,b3,d4]@4 [g3,c4,e4]@2 [g3,c4,e4] [a3,d4,f#4]",
  J: "[b3,e4,g4] [a3,d4,f#4]", K: "[a3,d4,f#4] [b3,d4,g4]",
  L: "[[a3,d4,f#4]@8 [c4,e4,a4]@15 ~ [c4,e4,g4]@15 ~ [b3,d4,g4]@16 ~@2 g4@2 f#4@2 ~@2 b3@9 ~ g4@2 [b3,d4]@4, ~@7 e3@3, ~@28 b3@3 d4@5 ~@4]/5", // D Am C G Bm
  M: "[a3,c4] [g3,b3] [a3,c4]@2", N: "[b3,d4]@2 ~ g4, ~ [c4,e4]", O: "[d4,f#4]@2 [e4,g4] [d4,f#4]",
  P: "[[e4,g4]@8 [b3,d4]@3 ~ [g3,c4]@8 [g3,b3]@4 [a3,c4]@8]/2", Q: "~ g4 ~ g4, [b3,d4]@7 ~ [c4,e4]@8", R: "[d4,f#4]",
  S: "[c4,g4] [d4,f#4]", T: "[c4,g4]@7 ~@5 g4@4, ~ [a3,e4]", U: "[d4,f#4]@2 [c4,e4] [d4,f#4]",
  V: "[b3,d4,g4] [b3,d4,f#4]", W: "[g3,b3,e4]@3 [g3,e4] [g3,b3,d4]@4",
  X: "[g3,c4,e4]@2 [g3,c4,e4] [a3,d4,f#4] [b3,e4,g4]@4", Y: "[a3,d4,f#4]!2", Z: "[a3,d4,f#4]@6 [g3,c4,e4] [a3,d4,f#4]",
  AA: "[g3,b3,e4]@11 ~ [g3,b3,e4] ~ [f#3,a3,d4] ~", AB: "[g3,b3,e4]@5 ~ [a3,d4,f#4] ~ [b3,d4,g4]@7 ~",
  AC: "[g3,c4,e4]@8 [g3,b3,e4]@7 ~", AD: "[f#3,a3,d4]", AE: "[c4,e4,a4]@15 ~", AF: "[c4,e4,g4]",
  AG: "~ [b3,d4,g4]@12 [b3,g4]@3", // G Em
  AH: "[[a3,f#4]@4 d4@3 [d3,b3]@14 [e4,g4]@5 e4@2 g4@3 d4@2 ~@2 d5@5 [d4,b4]@5 d4@2 ~ [a3,c4]@2 ~@2 d4@24 ~@4, ~@4 g3@17 [g3,b3]@9 ~ [a3,f#4]@9 [b3,g4]@8 ~@3 [d3,g3,b3]@25 ~@4, ~@31 a4@4 ~@45, ~@33 d4@7 ~@7 e4@2 ~ d4@2 ~@28]/5", // D G Em G Am G D Em …
})).s("gm_pad_new_age").gain(0.12).pan(0.6)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@15 A@2 B C D E F G@2 E F H@2 I J@2 ~ K ~@3 L M N O P Q R S T N R S T U V W X N V W X N O P Q R S T N R S Y N Z AA@3
  ~@4
>`.pickRestart({
  A: "[~ [d3,a3,d4]@2 [c3,g3,c4]]/2", B: "[d3,a3,d4] [c3,g3,c4]", C: "[a2,e3,a3]@7 ~ [d3,a3,d4]@7 ~",
  D: "[c3,g3,c4] [d3,a3,d4] [g3,d4,g4]@2", E: "[f#3,d4,f#4] [e3,b3,e4]",
  F: "[d3,a3,d4]@4 [c3,g3,c4]@2 [c3,g3,c4] [d3,a3,d4]", G: "[[e3,b3,e4] [d3,a3,d4]@2 [g3,d4,g4]]/2",
  H: "[[e3,b3,e4]@4 [d3,a3,d4]@8 d4 c4!2 b3]/2", I: "b3 g3!2 d4!2 c4!2 b3", J: "[b3@2 g3@2 g3@2 a3@2 g3@17 ~@7]/2",
  K: "d4 e4 d4 b3 a3 b3 a3 g3 e3@5 ~@3", L: "~ e4 d4 b3 a3 b3 a3 g3 ~@2 a3@5 a2, [a3,d4] ~@3 e3@2 ~@2",
  M: "~@2 g3@5 b2 ~@2 g3@6, b2@6 ~@2 c3@7 ~", N: "[d3,a3,d4]", O: "[c3,g3,c4] [d3,a3,d4]",
  P: "[c3,g3,c4]@8 [a2,e3,a3]@7 ~", Q: "[d3,a3,d4]@7 ~ [c3,g3,c4]@4 [d3,a3,d4]@4", R: "[g3,d4,g4] [f#3,d4,f#4]",
  S: "[e3,b3,e4] [d3,a3,d4]", T: "[c3,g3,c4]@2 [c3,g3,c4] [d3,a3,d4] [e3,b3,e4]@4",
  U: "[d3,a3,d4]@6 [c3,g3,c4] [d3,a3,d4]", V: "[e3,b3,e4]@6 [e3,b3,e4] [d3,a3,d4]",
  W: "[e3,b3,e4]@3 [f#2,f#3] [g2,d3,g3]@2 [a2,e3,a3] [b2,b3]", X: "[c3,g3,c4] [e3,b3,e4]",
  Y: "[c3,g3,c4]@3 [d3,a3,d4] [e3,b3,e4]@4", Z: "d4 c4!2 b3!2 g3!2 d4",
  AA: "[d4@2 c4@2 c4@2 b3@2 b3@2 g3@2 g3@2 ~ a3@2 g3@25 ~@6]/3",
})).s("gm_distortion_guitar").gain(0.3).pan(0.4)

// other · overdriven guitar
const overdriven_guitar = note("<~@27 A B C@2 ~@18 D E F G H I J K L ~@10 M N O@4 ~@3>".pickRestart({
  A: "~@3 d4!2 c4!2 b3", B: "b3 g3!2 d4!2 c4!2 b3", C: "[b3@2 g3@2 g3@2 a3@2 g3@17 ~@7]/2", D: "~@12 e5 g5 ~ a5",
  E: "b5@6 e5 g5", F: "e5 e5@5 b4 d5 b4@4 c5 b4 a4 g4, ~ g5 ~@14", G: "b4@2 g5 e5 b4@2 g4 e4 g4@6 e4@2",
  H: "d4@4 e4 d4 b3 g3 a3@4 e3 g3 c4 b3", I: "a3@2 g3@8 g3 b3 [c4,d4] c4 b3 g3",
  J: "f#4 e4 d4 b3 a4 [g4,g#4,a4] f#4 d4 b4@4 e5 b4 a4 g4", K: "e5@6 [e5,a5] [g5,c6] [a5,d6]@4 [b5,e6]@4",
  L: "[a5,d6]@5 [g5,c6] [f#5,b5] [e5,a5] [d5,f#5]@8", M: "~@7 d4", N: "d4 c4!2 b3!2 g3!2 d4",
  O: "[d4@2 c4@2 c4@2 b3@2 b3@2 g3@2 g3@2 ~ a3@2 g3@36 ~@11]/4",
})).s("gm_overdriven_guitar").gain(0.36).pan(0.6)

// other · distortion guitar
const distortion_guitar_2 = note("<~@49 A@3 B@2 C D E F ~@19>".pickRestart({
  A: "[~@15 a5@2 b5@12 e5@2 g5@2 [e5,g5] e5@5 b4 d5 b4@4 c5 b4 a4, ~@13 e5@2 ~@33, ~@7 g5 ~@16]/3", // Em
  B: "[g4 b4@2 g5 e5 b4@2 g4 e4 g4@6 e4@2 d4@4 e4 d4 b3 g3 a3@4 e3 g3 c4]/2", C: "b3 a3@2 g3@8 g3 b3 [c4,d4] c4 b3",
  D: "g3 f#4 e4 d4 b3 a4 [g4,g#4,a4] f#4 d4 b4@4 e5 b4 a4", E: "g4 e5@6 [e5,a5] g5 [a5,d6]@4 [b5,e6]@3",
  F: "~ [a5,d6]@5 g5 f#5 e5 [d5,f#5]@7", // D5 D
})).s("gm_distortion_guitar").gain(0.15).pan(0.3)

// other · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@56 [~@8 c6 ~@7] [~@6 c6 b5 a5 ~@7] ~@19>")
  .s("gm_distortion_guitar").gain(0.07).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@16 A B C D E@10 F C G E F C G F H@3 I J@7 K J@8 H@2 I J@10 L ~@5>".pickRestart({
  A: "~@8 x ~@6 x", B: "x ~ x ~@5 x ~@6 x", C: "x!2 ~@2 x ~@3", D: "~@4 x ~@2 x", E: "x ~@3 x ~@2 x", F: "x!2",
  G: "x!2 ~@2 x ~@2 x", H: "x ~@3 x!2 ~@2", I: "x", J: "x ~@2 x!2 ~@3", K: "x ~@2 x!2 ~ x!2", L: "~ x ~@14",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@17 A@2 B C@10 D A C@9 A C@7 A C@7 E C@2 F C@9 E ~@6>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~ x ~ x", D: "~ x ~@6", E: "~@2 x ~@2 x ~@2", F: "~@4 x!2 ~ x ~ x ~ x ~@4",
})).gain(0.5)

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

// drums · hihat
const hihat = s("hh").struct("<~@30 A B@6 C D E D F ~@16 E D F ~@16>".pickRestart({
  A: "~@5 x!3", B: "x!3 ~ x!4", C: "x!3 ~ x!3 ~", D: "x!7 ~", E: "~ x!6 ~", F: "x!4 ~@4",
})).gain(0.3)

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

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@15 [~@12 x!3 ~] ~@61>").gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@31 [~@3 x ~@4]!6 [~@3 x ~@3 x] [~@7 x]!3 ~@17 [~@7 x]!2 ~@17>").gain(0.3)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@19 A B C D E B C D E B@2 F ~@11 D B G B D B G H D I E B D I E C ~@3 D B G B D B G B D J K ~@5
>`.pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x!7 ~", D: "~ x!7", E: "x!4 ~ x!3", F: "x!2 ~@6", G: "x!3 ~@2 x!3", H: "x!6 ~@2",
  I: "~ x!2 ~@2 x!3", J: "x!5 ~@3", K: "~ x ~@14",
})).gain(0.3)

stack(
  piano, bass, pad_new_age, distortion_guitar, overdriven_guitar, distortion_guitar_2, distortion_guitar_soft, kick,
  snare, low_tom, hihat, mid_tom, mid_tom_soft, open_hat, crash, ride
)

More by Europe