Strudelify
See You Later Alligator cover art

Later Alligator

See You Later Alligator

Haley

KeyE♭ majorTempo163 bpm
0:00/0:00
// See You Later Alligator — Haley
// 163 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(163/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F G H I J K@2 L B L D E F M N O P Q R A B C D E F G H I J K@2 A B C D E F G H I J K@2 S T U V W X G Y Z J
  Q R AA AB U D W AC G AD AE AF Q R A B G D W AG@3 AH AI AJ@3 ~
>`.pickRestart({
  A: "eb2@3 ~ g2@3 ~ ab2@4 a2@4", B: "bb2@4 ab2@3 ~ f2@4 bb2@3 ~", C: "eb2 g2 ab2 a2", D: "bb2@4 ab2@4 f2@3 ~ bb2@4",
  E: "ab2@3 ~ c3@3 ~ db3@4 d3@4", F: "eb3@4 d3@3 ~ db3@4 bb2@2 ~ bb2", G: "eb3 d3 db3 c3",
  H: "bb2@4 ab2@4 gb2@3 ~ eb2@4", I: "f2@3 ~ g2@3 ~ ab2@4 a2@4", J: "bb2@4 ab2@4 f2@4 bb2@3 ~",
  K: "[eb2@4 g2@4 ab2@4 bb2@2 ~ eb2@2 ~@15]/2", L: "eb3@3 ~ d3@3 ~ db3@4 c3@4", M: "eb3 d3 db3 bb2",
  N: "eb3@4 d3@4 bb2@3 ~ eb3@4", O: "bb2@3 ~ bb2@3 ~ f2@4 bb2@4", P: "ab2@4 ab2@4 f2@4 bb2@3 ~",
  Q: "eb2@2 g2@2 ab2@2 bb2 ~", R: "eb2 ~@7", S: "eb2@3 ~ eb3@3 ~ bb2@4 a2@4", T: "g2@4 f2@3 ~ eb2@4 bb2@3 ~",
  U: "eb2@3 ~ eb3@3 ~ d3@4 db3@4", V: "bb2@4 eb3@4 bb2@3 ~ eb3@4", W: "ab2@3 ~ eb3@3 ~ db3@4 bb2@4",
  X: "ab2@4 ab2@3 ~ f2@4 ab2@4", Y: "bb2@4 ab2@4 f2@3 ~ eb2@4", Z: "f2@3 ~ gb2@3 ~ g2@4 ab2@4",
  AA: "eb2@3 ~ eb2@4 bb2@3 ~ a2@4", AB: "ab2@4 f2@3 ~ eb2@4 f2@3 ~", AC: "ab2@4 ab2@3 ~ f2@4 bb2@4",
  AD: "bb2@4 ab2@4 f2@3 ~ ab2@4", AE: "bb2@3 ~ a2@3 ~ ab2@4 f2@4", AF: "bb2@4 a2@4 ab2@4 f2@3 ~",
  AG: "[ab2@4 ab2@3 ~ f2@4 f2@2 ~ f2@4 ~ ab2@4 bb2@4 bb2@2 ~ bb2@4 ~ f2@4 eb2@3 ~ eb3@2 ~ eb3]/3",
  AH: "eb3@3 ~ eb3@3 ~ c3@4 c3@4", AI: "b2@4 b2@4 bb2@5 ~@3", AJ: "[bb2@5 ~@3 bb2@4 f2@2 ~ eb2@2 ~@3 eb2@27 ~]/3",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@3 B C D E A F D G ~ H@2 I@2 J@2 K@2 L M N O H@2 I@2 J@2 K@2 L M P Q H@2 I@2 J@2 R S L M N O H@2 I@2 J@2 K@2 L M N
  O H@2 I@2 J@2 K@2 L M P Q T@3 U V W X Y Z AA ~ AB@2 ~
>`.pickRestart({
  A: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3", B: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3, ~@4 gb4@3 ~@9",
  C: "~@4 [gb3,c4,eb4] ~@7 [gb3,c4,eb4]@2 ~@2", D: "~@4 [gb3,c4,eb4] ~@7 [gb3,c4,eb4] ~@3",
  E: "~@4 [g3,bb3,eb4,bb4] ~@7 [g3,bb3,eb4] ~@3", F: "~@4 [ab3,d4,f4] ~@7 [ab3,d4,f4] ~@3",
  G: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]", // Eb
  H: "[~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3, eb3@31 ~]/2", // Eb
  I: "[~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3, eb3@31 ~, ~@20 gb4@3 ~@9]/2", // Eb
  J: "[~@4 [gb3,c4,eb4] ~@7 [gb3,c4,eb4]@2 ~@6 [gb3,c4,eb4] ~@7 [gb3,c4,eb4] ~@3, [ab2,eb3]]/2", // Cdim Ab5
  K: "[~@4 [g3,bb3,eb4,bb4] ~@7 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3, eb3]/2", // Eb
  L: "~@4 [ab3,d4,f4] ~@7 [ab3,d4,f4] ~@3, [bb2,f3]", M: "~@4 [gb3,c4,eb4] ~@7 [gb3,c4,eb4] ~@3, [ab2,eb3]@7 ~",
  N: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3, eb3@15 ~", O: "[eb3,g3,bb3,eb4] ~@15",
  P: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@2 [g3,bb3,eb4], eb3@15 ~", Q: "eb3 ~@15",
  R: "~@4 [g3,bb3,eb4,bb4] ~@7 [g3,bb3,eb4] ~@3, eb3", S: "~@4 [g3,bb3,eb4] ~@7 [g3,bb3,eb4] ~@3, eb3",
  T: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3", // Eb
  U: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3, ~@4 gb4@3 ~@9", // Eb
  V: "[gb3,c4,eb4] ~@3 [gb3,c4,eb4] ~@3 [gb3,c4,eb4] ~@3 [gb3,c4,eb4]@2 ~@2", // Cdim
  W: "[ab3,c4,eb4] ~@3 [gb3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]@2 ~ [ab3,c4,eb4]", // Ab Cdim Ab
  X: "~@4 [ab3,c4,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4]@2 ~ [f3,bb3,d4]", // Ab Bb
  Y: "~@4 [f3,bb3,d4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3", // Bb Eb
  Z: "[eb3,g3,db4] ~@3 [eb3,g3,db4] ~@3 [eb3,ab3,c4] ~@3 [eb3,ab3,c4] ~@3", // Eb7 Ab
  AA: "[gb3,b3,eb4] ~@3 [gb3,b3,eb4] ~@2 [f3,bb3,d4] ~@8", AB: "[~ [g3,eb4,bb4,eb5]@7]/2",
})).s("gm_electric_guitar_clean").gain(0.41).pan(0.7)

// other · alto sax
const alto_sax = note(`<
  ~ A ~ A ~ B ~ A ~ C ~ A ~ D E D E D E D E F G D E A ~ A ~ B ~ A ~ C ~ A ~ D E D E D E D E F G D H@3 I J K ~@4 L M E A
  ~ A ~ B ~ A ~ C ~ A ~ A ~ A ~ B N@3 O P Q R@3
>`.pickRestart({
  A: "~@3 bb3 eb4 ~@3 ab4@4 g4@3 eb4", B: "~@3 bb3 eb4 ~@3 ab4@4 gb4@3 eb4", C: "~@3 bb3 d4 ~@3 f4@4 d4@3 bb3",
  D: "~@3 eb4 c4@3 bb3 eb4@3 eb4 c4@3 bb3", E: "eb4 ~@7", F: "~@3 f4 d4@3 bb3 f4@3 f4 d4@3 bb3", G: "f4 ~@7",
  H: "[eb4@2 ~@2 eb5 ~ eb5!3 ~ eb5!3 ~ eb5 eb5@2 ~ eb5!3 ~ eb5!3 ~ eb5!3 ~ eb5 eb5@2 eb5 ~ eb5!3 ~ eb5!3 ~ eb5 d5 eb5 ~ eb5]/3",
  I: "d5 ~ eb5!2 d5 eb5 ~ eb5 d5 eb5 ~ eb5 d5 eb5 ~ eb5", J: "eb5 d5 ~ db5 c5 b4 ~ bb4 a4 ab4 ~ g4 gb4 f4 ~ e4",
  K: "eb4 ~@3", L: "~@12 eb4@2 eb4 ~", M: "eb4@2 ~@2 eb4@2 eb4 ~ eb4@2 ~@2 eb4@2 eb4 ~",
  N: "[~@12 c4@2 ~ c4@2 ~@11 d4@2 ~ d4@2 ~@9 eb5@2 ~@3 eb5]/3", O: "db5@3 ~ db5@3 ~ c5@3 bb4 c5@3 ~",
  P: "b4@3 b4 a4@3 bb4@2 ~@3 ab4@2 gb4 ~, ~@11 bb4@2 ~@3", Q: "g4@2 eb4 ~ c4@2 b3@2 bb3@2 c4 d4@3 eb4 ~",
  R: "[~@4 eb4@29 ~@15]/3",
})).s("gm_alto_sax").gain(0.56).pan(0.3)

// other · tenor sax
const tenor_sax = note(`<
  ~ A ~ A ~ B ~ A ~ C ~ A ~ D E D E D E D E F G D E A ~ A ~ B ~ A ~ C ~ A ~ D E D E D E D E F G D E ~@9 H I E A ~ A ~ B
  ~ A ~ C ~ A ~ A ~ A ~ B J@3 K L M N@3
>`.pickRestart({
  A: "~@3 bb2 eb3 ~@3 ab3@4 g3@3 eb3", B: "~@3 bb2 eb3 ~@3 ab3@4 gb3@3 eb3", C: "~@3 bb2 d3 ~@3 f3@4 d3@3 bb2",
  D: "~@3 eb3 c3@3 bb2 eb3@3 eb3 c3@3 bb2", E: "eb3 ~@7", F: "~@3 f3 d3@3 bb2 f3@3 f3 d3@3 bb2", G: "f3 ~@7",
  H: "~@12 eb3@2 eb3 ~", I: "eb3@2 ~@2 eb3@2 eb3 ~ eb3@2 ~@2 eb3@2 eb3 ~",
  J: "[~@12 c3@2 ~ c3@2 ~@11 d3@2 ~ d3@2 ~@9 eb4@2 ~@3 eb4]/3", K: "db4@3 ~ db4@3 ~ c4@3 bb3 c4@3 ~",
  L: "b3@3 b3 a3@3 bb3@2 ~@3 ab3@2 gb3 ~, ~@11 bb3@2 ~@3", M: "g3@2 eb3 ~ c3@2 b2 ~ bb2@2 c3 d3@3 eb3 ~",
  N: "[~@4 eb3@29 ~@15]/3",
})).s("gm_tenor_sax").gain(0.44).pan(0.9)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note(`<
  ~ A ~ A ~ B ~ A ~ C ~ A ~ D E D E F G D E H I D E A ~ A ~ B ~ A ~ C ~ A ~ D E D E F G D E J I D E K@3 L@7 M N A ~ A ~
  B ~ A ~ C ~ A ~ A ~ A ~ B ~@2 O P Q R ~@3
>`.pickRestart({
  A: "~@3 bb2 eb3 ~@3 ab3@4 g3@3 eb3", B: "~@3 bb2 eb3 ~@3 ab3@4 gb3@3 eb3", C: "~@3 bb2 d3 ~@3 f3@4 d3@3 bb2",
  D: "~@3 g3 f3@3 eb3 g3@3 g3 f3@3 eb3", E: "g3 ~@7", F: "~@3 gb3 f3@3 eb3 gb3@3 gb3 f3@3 eb3", G: "gb3 ~@7",
  H: "~@3 ab3 g3@3 f3 ab3@3 ab3 bb3@3 bb3", I: "ab3 ~@7", J: "~@3 ab3 g3@3 f3 ab3@3 ab3 g3@3 f3", K: "[g4,bb4]@3 ~@5",
  L: "[[g4,bb4]@7 ~@5 [bb4,eb5]@2 ~ gb5@5 bb4 ~ eb5@6 bb4 ~ eb5@6 bb4 ~ gb5@6 bb4 ~@7 bb4 ~ gb5@6 bb4 ~@2 [eb5,gb5]@6 bb4 ~@6 bb4 ~@2 gb5@6 bb4 ~@6 bb4 ~ gb5@6 bb4 ~ [eb5,gb5]@6 [bb4,eb5] ~@2 [bb4,eb5], ~@15 eb5@7 gb5@5 ~@3 gb5@5 ~@3 eb5@8 ~ [eb5,gb5]@7 eb5@8 ~@9 [eb5,gb5]@7 eb5@8 ~ [eb5,gb5]@7 eb5@8 ~@10]/7", // Gm Eb5 Ebm Eb5 Ebm
  M: "[bb4,eb5]@2 ~@2 [bb4,eb5] ~@2 [bb4,eb5] [bb4,eb5]@2 ~@2 [bb4,eb5]@2 ~ [bb4,eb5]", N: "[bb4,eb5] ~@7",
  O: "~@10 bb4@2 ~@3 bb4", P: "bb4@3 ~ bb4@3 ~ ab4@3 g4 ab4@3 ~",
  Q: "[b3,eb4,gb4]@3 gb4 [b3,eb4,gb4]@3 [bb3,d4,f4]@2 ~@3 f4@2 eb4@2, ~@11 gb4@2 ~@3", // B Bb
  R: "db4@2 bb3@2 ab3@2 eb3 ~ bb3@2 c4 d4@2 ~ eb4@2",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.3)

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

// drums · clap
const clap = s("cp").struct("<~@13 A@11 B ~@12 A@11 B A@11 B ~@12 A@5 C ~@8>".pickRestart({
  A: "~ x ~ x", B: "x", C: "~ x ~@2",
})).gain(0.63)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@23 A ~@11 B ~@12 C ~@10 A ~@11 B ~@13 D ~>".pickRestart({
  A: "~@14 x!2", B: "~@13 x ~@2", C: "~@3 x ~@7 x ~@4", D: "~@11 x ~@4",
})).gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@48 [~@15 x] ~@38>").gain(0.63)

// drums · crash
const crash = s("cr").struct("<~@48 A ~@11 B ~@17 C@2 ~ D@2 ~ E F B>".pickRestart({
  A: "~ x", B: "x", C: "~@12 x ~@2 x", D: "~ x ~ x", E: "~@4 x ~ x!6 ~@4", F: "~ x ~@3 x ~@3 x ~@6",
})).gain(0.47)

// drums · ride
const ride = s("rd").struct("<~ A@11 ~ A@10 B C A@11 ~ A@10 B C A@10 B ~ A@11 ~ A@5 D@2 A E F ~@4>".pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3", C: "x", D: "x ~@2 x!2 ~@2 x!2 ~@2 x ~@4",
  E: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x", F: "x ~@2 x ~@3 x!2 ~@2 x ~@4",
})).gain(0.31)

stack(
  bass, electric_guitar_clean, alto_sax, tenor_sax, electric_guitar_clean_2, kick, clap, snare, snare_soft, mid_tom,
  crash, ride
)

More by Haley