Strudelify
Smoke Gets in Your Eyes cover art

Smoke Gets In Your Eyes

Smoke Gets in Your Eyes

The Platters

KeyE♭ majorTempo56 bpm
0:00/0:00
// Smoke Gets in Your Eyes — The Platters
// 56 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 37 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(56/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.

// other · piano · "A.PIANO 1"
const piano = note("<A@3 B C D E F@2 G A H I J K L M ~@8 N O P Q R S T U V ~@3>".pickRestart({
  A: "g3 bb3 eb4 bb3 g3 bb3 eb4 bb3", B: "ab3@6 c4@6 eb4@6 c4@5 ~ ab3@6 bb3@6 d4@6 bb3@4 ~@2",
  C: "g3@3 bb3@3 eb4@3 bb3@3 g3@3 b3@3 eb4@3 b3@2 ~", D: "ab3@3 c4@3 eb4@3 c4@3 a3@3 c4@3 eb4@3 c4@2 ~",
  E: "~ eb3 g3 bb3 eb4@3 ~",
  F: "[~@6 c3@6 eb3@6 ab3@6 ~@6 bb2@6 d3@6 f3@5 ~ [bb3,eb4]@23 ~@7 bb3@6 c4@11 ~, ~@47 g3@23 ~@26]/2", // Eb5
  G: "~@2 eb4 ab4 f4@3 ~, ~@3 c4@5 ~@16", H: "ab3 c4 eb4 c4 ab3 bb3 d4 bb3",
  I: "g3@6 bb3@6 eb4@6 bb3@6 g3@6 b3@6 eb4@6 b3@5 ~", J: "ab3@6 c4@6 eb4@6 c4@5 ~ a3@6 c4@6 eb4@6 c4@5 ~",
  K: "~@5 eb3@7 g3@6 bb3@6 c4@6 bb3@6 g3@6 eb3@6", L: "~@6 c3@6 f3@6 ab3@7 ~@5 bb3@6 d4@6 f4@5 ~",
  M: "~ bb3 eb4 bb3 ~ c4 eb4 c4", N: "~@8 [d6,d7] [bb5,bb6] [ab5,ab6] [f5,f6] [d5,d6] [bb4,bb5] [ab4,ab5] [f4,f5]",
  O: "~ bb3 eb4 bb3 g3 bb3 eb4 bb3, g3@11 ~@37", P: "ab3@6 c4@6 eb4@6 c4@6 ab3@6 bb3@6 d4@6 bb3@5 ~",
  Q: "g3 bb3 eb4 bb3 g3 b3 eb4 b3", R: "ab3@3 c4@3 eb4@3 c4@2 ~ a3@3 ~@3 [eb4,gb4]@5 ~, ~@10 c4@5 ~",
  S: "~@6 eb3@6 g3@6 bb3@6 eb4@6 g4@6 c4@6 eb4@5 ~", T: "~@6 c3@6 f3@6 ab3@5 ~ c4@6 ab3@6 d4@6 f4@5 ~",
  U: "~@8 f4@7 ~, ~@22 ab3@23 ~@3, ~@23 [b3,d4]@22 ~@3", V: "~@8 g4@7 ~, ~@22 b3@23 ~@3, ~@23 d4@22 ~@3",
})).s("gm_piano").gain(0.38).pan(0.7)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<A B A C D E F G H I A J K L M N O P Q R S T U V W X A G Y Z AA AB AC AD ~@2 AE>".pickRestart({
  A: "eb2@11 ~ eb2@11 ~", B: "eb2@21 ~@3 eb2@22 ~@2", C: "f2@22 ~@2 bb1@21 ~@3", D: "eb2@23 ~ g2@21 ~@3",
  E: "ab2@23 ~ a2@23 ~", F: "bb2@24 bb1@23 ~", G: "f2@24 bb1@23 ~", H: "eb2@10 ~@2 eb2@11 ~ c2@10 ~@2 c2@10 ~@2",
  I: "f2@5 ~ f2@5 ~ bb1@5 ~ bb1@4 ~@2", J: "f2@11 ~ bb1@11 ~", K: "eb2@11 ~ g2@11 ~", L: "ab2@23 ~ a2@22 ~@2",
  M: "bb2@23 ~ bb1@21 ~@3", N: "f2@23 ~ bb1@22 ~@2", O: "eb2@23 ~ ab2@22 ~@2",
  P: "eb2@21 ~@3 gb2@10 ~@2 gb2@3 ~@3 gb2@5 ~", Q: "b2@5 ~ b2@5 ~ b2@4 ~@2 b2@3 gb2@3",
  R: "b2@9 ~@3 b2@8 ~@4 b2@9 ~@3 b2@6 gb2@6", S: "db3@10 ~@2 db3@11 ~ gb2@10 ~@2 gb2@4 ~@2 gb2@6",
  T: "db3@6 gb2@6 db3@6 gb2@2 ~ gb2@3", U: "b2@9 ~@3 b2@9 ~@3 b2@9 ~@3 b2@6 gb2@5 ~", V: "ab2 bb2",
  W: "eb2@22 ~@2 eb2@23 ~", X: "bb1@11 ~ bb1@10 ~@2", Y: "eb2 g2", Z: "ab2 a2", AA: "bb2 bb1", AB: "f2@8 bb1@7 ~",
  AC: "eb2@6 bb1@5 ~ eb2@6 bb1@6 f2@6 bb1@6 b2@6 bb1@6", AD: "eb2@5 ~ bb1@6 eb2@6 bb1@5 f2@7 bb1@6 ab2@6 bb1@6",
  AE: "~ eb2@34 ~@13",
})).s("gm_acoustic_bass").gain(0.38)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<A@3 B C@2 D ~@3 E B F@4 G@2 ~@4 H@2 I J E B C@2 K L@2 M@2 N@2>".pickRestart({
  A: "[[g3,bb3,eb4]@100 ~@2 bb3@5 eb4@6 bb3@4 ~@8 bb3@6 eb4@6 bb3@4 ~@3]/3", // Eb
  B: "~@6 c4@5 eb4@7 c4@5 ~@6 bb3@6 d4@6 bb3@5 ~@2",
  C: "[~@23 b3@23 ~@7 ab5@6 c6@6 eb6@6 [a3,eb4,f6]@25, ~@6 bb3@12 g4@29 f5@10 ~@39, ~ eb4@3 [ab3,f4]@2 ~@2]/2", // F7 Db
  D: "~@17 bb3@6 c4@23 ~@2", E: "~@6 bb3@5 eb4@6 bb3@4 ~@8 bb3@6 eb4@6 bb3@4 ~@3",
  F: "[~@23 b3@23 ~@7 ab5@6 c6@6 eb6@6 [a3,eb4,f6]@24 ~@24 [bb3,c4]@24 [c3,eb3]@24 [f3,bb3,d4]@24 ~, ~@6 bb3@12 g4@29 f5@10 ~@135, ~@12 eb4@36 [ab3,f4]@24 ~@23 [eb3,g3]@31 ~@66]/4", // F7 Bbsus2 Cm Bb Db Eb
  G: "[~@2 bb5@3 ~@3 f6@3 eb6@3 bb5@3 c6@3 g5@3 ~@3 c6@3 ab6@3 g6@3 f6@3 eb6@3 c6@3 ab5@3 g5@16 ~@2 eb5@2 bb4@2 g4@2 ~ gb4@20 ~@4, [eb3,g3]@24 ~@23 [eb3,g3]@25 ~@24, ~@5 g6@6 ~@12 [f3,ab3]@25 ~@23 gb3@23 ~@2]/2", // Eb Fm
  H: "[~@2 [ab3,b3] [d3,f3,bb3], ~@47 eb3@25 ~@24]/2", I: "~@6 c6@6 d6@5 eb6@6 f6@6 ~ d6@5 eb6@6 c6@7",
  J: "~@5 bb5@6 c6@6 d6@6 f6@12 bb6@12 ~", K: "~@23 [bb3,eb4,g4]@17 ~@8",
  L: "[~@23 [d4,f4,ab4]@22 ~@2 [g3,bb3,eb4]@24 [ab3,b3,f4]@25]/2", // Ddim Eb Fdim
  M: "[[g3,bb3,eb4]@23 [ab3,b3,g4]@24 ~ [c4,f4]@12 [eb4,f4,ab4]@11 ~ [f4,ab4,c5]@11 ~ [ab4,c5,eb5]@10 ~@2, ~@47 eb4@12 ~@37]/2", // Eb Abm F5 Fm7 Fm Ab
  N: "[~@23 d5@3 f5@3 eb5@3 c5@3 ab5@3 g5@3 c6@3 bb5@3 d5@2 ~ eb5@3 f5@3 g5@3 ab5@2 bb5 c6 d6 ~ eb6 f6 g6 ab6@2 [eb3,bb6]@14 ~@12]/2", // Eb5
})).s("gm_string_ensemble_1").gain(0.27).pan(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~@7 A ~@9 B C D E F C ~ G H ~@8 I J@2>".pickRestart({
  A: "~@6 [c3,c4]@2 ~@3 eb3@2 ~@4 [ab3,ab4]@2 ~@11 bb3@2 ~@3 [d3,d4]@2 ~@4 [f3,f4]@2 ~@5, ~@11 eb4 ~@18 bb4 ~@17", // C Ab D F
  B: "[eb3,g3,eb4] ~@5 [eb3,g3,eb4] ~ [eb3,g3,eb4] ~ [eb3,g3,eb4] ~ [eb3,g3,eb4] ~@5 [eb3,g3,eb4] ~ [eb3,g3,eb4] ~ [eb3,g3,eb4] ~ [gb3,bb3,db4] ~@5 [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~@5 [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~", // Eb Gb
  C: "[gb3,eb4] ~@5 [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~@5 [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~@5 [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~, b2 ~@23", // Ebm B
  D: "[b2,gb3,eb4] ~@5 [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~@5 [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~@5 [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~ [b2,gb3,eb4] ~", // B
  E: "[gb2,bb3,gb4] ~@5 [gb2,bb3,gb4] ~ [gb2,bb3,gb4] ~ [gb2,bb3,gb4] ~ [gb2,bb3,gb4] ~@5 [gb2,bb3,gb4] ~ [gb2,bb3,gb4] ~ [gb2,bb3,gb4] ~ [a3,c4,gb4] ~@5 [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~ [gb2,a3,c4,eb4,gb4] ~, ~@12 [gb2,eb4] ~@11", // Gb Gbdim Ebm
  F: "[gb2,bb3,e4,gb4] ~@5 [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~@5 [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~@5 [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] ~ [gb2,bb3,e4,gb4] e4 [gb2,bb3,gb4] ~", // Gb7 Gb
  G: "[eb3,g3]", H: "[f3,ab3]", I: "~@3 eb4, f3, ~ ab3@3, ~ c4",
  J: "[~@23 [d3,d4]@3 [f3,f4]@3 [eb3,eb4]@3 [c3,c4]@3 [ab3,ab4]@3 [g3,g4]@3 [c4,c5]@3 [bb3,bb4]@3 [d3,d4]@3 [eb3,eb4]@3 [f3,f4]@2 ~ [g3,g4]@2 ~ ab4 bb4 bb3 [c4,c5] d5 [d4,eb5] eb4 [f4,f5] g5 g4 ab4 [bb4,g5,bb5]@14 ~@12, ~@29 ab3 ~@4 ab5 ~@13]/2", // D F Eb C Ab G C Bb …
})).s("gm_string_ensemble_1").gain(0.44).pan(0.6)

// other · clarinet
const clarinet = note("<~@5 A@2 B C D ~@3 A@2 B E F G@2 H@2 G I ~@12 J>".pickRestart({
  A: "[~@41 c4@6 d4@19 bb3@6 c4@24]/2", B: "eb4@23 d4@23 ~@2", C: "d4@23 c4@24 ~", D: "eb4 d4", E: "eb4@23 c4@24 ~",
  F: "eb4 ~@5 eb4 ~ eb4 ~ eb4 ~ eb4 ~@5 eb4 ~ eb4 ~ eb4 ~ gb4 ~@5 gb4 ~ gb4 ~ gb4 ~ gb4 ~@5 gb4 ~ gb4 ~ gb4@2",
  G: "eb4 ~@5 eb4 ~ eb4 ~ eb4 ~ eb4 ~@5 eb4 ~ eb4 ~ eb4 ~ eb4 ~@5 eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~",
  H: "gb4 ~@5 gb4 ~ gb4 ~ gb4 ~ gb4 ~@5 gb4 ~ gb4 ~ gb4 ~ gb4 ~@5 gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~",
  I: "eb4@24 d4@23 ~", J: "~ g4@35 ~@12, eb5@3 ~",
})).s("gm_clarinet").gain(0.27).pan(0.4)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<A B C D E F G H I J K@2 L@2 M@2 N@2 O ~@7 P Q R@2 S T U V ~@2 W>".pickRestart({
  A: "g3@6 bb3@6 eb4@2 ~@4 bb3@3 ~@3 g3@4 ~@2 bb3@5 ~ eb4@3 ~@3 bb3@3 ~@3",
  B: "g3@4 ~@2 bb3@5 ~ eb4@2 ~@4 bb3@4 ~@2 g3@4 ~@2 bb3@4 ~@2 eb4@2 ~@4 bb3@3 ~@3",
  C: "g3@4 ~@2 bb3@5 ~ eb4@2 ~@4 bb3@3 ~@3 g3@4 ~@2 bb3@4 ~@2 eb4@4 ~@2 bb3@2 ~@4",
  D: "ab3@5 ~ c4@3 ~@3 eb4@4 ~@2 c4 ~@5 ab3@4 ~@2 bb3@6 d4@4 ~@2 bb3@2 ~@4",
  E: "g3@3 ~@3 bb3@5 ~ eb4@2 ~@4 bb3@2 ~@4 g3@3 ~@3 b3@3 ~@3 eb4@3 ~@3 b3 ~@5",
  F: "ab3@4 ~@2 c4@3 ~@3 eb4@4 ~@2 c4@2 ~@4 a3@4 ~@2 c4@3 ~@3 eb4@5 ~ c4@2 ~@4",
  G: "~@25 g3 ~ bb3 [d4,eb4] f4 [g4,bb4] [c5,d5] [eb5,f5,g5] bb5 [c6,d6] [eb6,f6,g6] ~@4 [eb5,f5] ~@3 g4 ~ c4 ~, ~@27 c4@2 ~@19", // Ebmaj7 Gm Csus2 Eb Csus2 Eb Ebsus2
  H: "~@12 ab3@5 eb4 ~@17 f4 [g4,ab4] bb4@11", I: "eb5@3 ~@13",
  J: "~ ab4@3 ~@20 f4@2 ~@10 bb5@4 f5 [d5,eb5] [bb4,c5] [g4,ab4] f4 ~@3, c4 ~@11", // Ebmaj7 Bbsus2 Abmaj7
  K: "[g3@6 bb3@6 eb4@5 bb3@6 g3@6 bb3@6 eb4@6 bb3@5 ~ ab3@6 ~ c4@5 eb4@6 ~ c4@6 ab3@6 bb3@6 d4@6 bb3@5 ~]/2",
  L: "[g3@6 bb3@6 eb4@6 bb3@6 g3@6 b3@6 eb4@5 b3@5 ~ ab3@7 c4@6 eb4@6 c4@5 a3@7 c4@6 eb4@6 c4@4 ~@2]/2",
  M: "[g3@6 bb3@6 eb4@5 ~ bb3 ~@5 g4@12 ~@11 f3@7 ab3@6 c4@6 ab3@3 ~@4 d4@14 ~@9, ~@22 bb3@12 ~@37 f3@16 ~@9, ~@23 eb4@9 ~@40 bb3@16 ~@8]/2",
  N: "[~@6 bb3@6 eb4@5 bb3@3 ~@10 c4@6 eb4@5 ~ c4 ~@5 eb4@11 ~@25 gb6@2 ~ db6 b5 ~ [e5,gb5] [db5,eb5] [bb4,b4] [gb4,ab4] e4 [db4,eb4], ~@46 g3@13 ~@37, ~@47 bb3@9 ~@40]/2", // Esus2 Dbsus2 Bmaj7 Gbsus2 Dbsus2
  O: "b3@3 ~@5", P: "g3 bb3 eb4 bb3 g3 bb3 eb4 bb3", Q: "ab3 c4 eb4 c4 ab3 bb3 d4 bb3",
  R: "[g3@6 bb3@6 eb4@6 bb3@6 g3@6 b3@6 eb4@5 b3@6 ab3@7 c4@6 eb4@6 c4@6 a3@6 c4@5 eb4@6 c4@6 ~]/2",
  S: "~@23 g4@21 ~@4, ~@7 bb3@8 ~, ~@22 eb4@21 ~@5", T: "~@6 ab4@5 ~, ~@23 [c4,d4]@22 ~@3",
  U: "~@27 b5@2 ~ ab5@2 ~ f5@3 d5 ~@2 b4@2 ~ ab4@3 f4@2 ~", V: "~@27 d6@3 b5@3 ab5@3 f5 ~@2 d5@2 ~ b4 ~@2 ab4 ~@2",
  W: "~@2 [d3,eb3] f3 [g3,ab3,bb3] [c4,d4] [eb4,f4,g4] [ab4,bb4,c5] [d5,eb5] [f5,g5,ab5] [bb5,c6] [bb5,c6,d6] ~@3 [c5,d5] bb4 [g4,ab4] [eb4,f4] [c4,d4] [g3,ab3,bb3] [c3,f3] eb3 ~ [c4,d4,eb4] [f4,g4] [ab4,bb4] [c5,d5] [eb5,f5,g5] [ab5,bb5] c6 [d6,eb6] [f6,g6] ~ [bb6,c7] ~ eb7 ~@11", // Ebmaj7 Gm Csus2 Eb Ab Ebmaj7 Fm Bbsus2 …
})).s("gm_orchestral_harp").gain(0.33).pan(0.2)

// other · orchestral harp · "HARP" · soft notes
const orchestral_harp_soft = note("<~@6 A B C@2 ~@7 D ~@18 E>".pickRestart({
  A: "~@6 g3@4 ~@2 bb3@3 ~@2 eb4 ~@6 eb3 f3 ~@9 d6 c6 bb5 g5 ~@2 d5 c5 bb4 f4 [d4,eb4] ~ bb3", // Ebmaj7
  B: "g3 ~@4 f3@6 ~@19 f3 [g3,ab3] bb3 c4 [d4,eb4] ~@13", // Abmaj7 Ebmaj7
  C: "[~@24 c5@5 ~@20 eb4@2 ~@22 bb4@2 ~@12 ab5 g5 ~@3 eb4 [c4,d4] bb3 ab3, ~@21 c4@2 g4@2 ~@23 ab3@4 ~@44, ~@22 eb4@2 ~@23 f3@4 ~@20 [f3,bb3,d4]@4 ~@21]/2", // Csus2 Bb
  D: "~@37 e6 ~ eb6 ~ [ab5,bb5] ~@6", E: "~@9 d5 ~ eb6 ab5 g5 [eb5,f5] ~@7 [d3,f3] [g3,ab3,bb3] ~@9 ab6 ~@14",
})).s("gm_orchestral_harp").gain(0.16).pan(0.2)

// other · timpani · Ebsus2
const timpani = note(`<
  ~@34
  [f2 ~@2 f2!3 ~ f2!34 ~@7]
  [eb2 ~@5 eb2 ~ eb2!2 ~ eb2!5 ~ eb2!3 ~ eb2!26 [eb2,f7]]
  [eb2!34 eb2@2 ~@12]
>`).s("gm_timpani").gain(0.38)

// drums · kick
const kick = s("bd").struct("<[x!2]!32 ~@5>").gain(0.33)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!32 ~@5>").gain(0.33)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!32 ~@5>").gain(0.22)

stack(
  piano, bass, string_ensemble_1, string_ensemble_1_2, clarinet, orchestral_harp, orchestral_harp_soft, timpani, kick,
  rim, hihat
)

More by The Platters