Strudelify
Time After Time cover art

1983 · She's So Unusual

Time After Time

Cyndi Lauper

KeyC majorTempo120 bpm
0:00/0:00
// Time After Time — Cyndi Lauper
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · electric guitar clean · "mel"
const electric_guitar_clean = note("<~@17 A B C@2 D@2 E ~@8 A B C@2 ~@10 A B C@2 D@2 F@6 ~@11>".pickRestart({
  A: "c4@3 d4@3 ~@2", B: "b3@3 c4@3 ~@2", C: "[~ c4 b3@2 c4@2 b3 g3@3 ~@6]/2", D: "[c4@3 d4@3 b3 b3@2 c4 c4@3 ~@3]/2",
  E: "~ c4!2 b3", F: "[~@2 c4@2 c4@2 b3 c4@2 ~@7]/2",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.7)

// other · electric guitar muted · "mutgit"
const electric_guitar_muted = note(`<
  ~ A B C D A B C D ~@8 E F G@2 E F H ~@8 E F G@2 ~@3 I ~@3 I ~@2 E F G@2 E F ~@6 A B C D A B C D C D J
>`.pickRestart({
  A: "c2 f3 g3 a3@2 g3 a3 f3", B: "c2 g3 a3 b3@2 a3 b3 g3", C: "c2 a3 g3 a3@2 b3 a3 g3",
  D: "c2@2 a3@2 g3@2 g3 a3@5 g3@4", E: "~ f3 a3 [g3,b3]@2 a3 g3@2", F: "~ e3 g3 [f3,a3]@2 g3 f3@2",
  G: "[a3@4 g3@3 e3@2 g3 a3 b3@2 a3 g3 e3]/2", H: "~ [f3,a3] [f3,a3]@2", I: "a2 c3 e3 a3@2 e3 c3 a2", J: "a3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.29).pan(0.1)

// chords · acoustic guitar nylon · "guitar"
const acoustic_guitar_nylon = note(`<
  A B C D E B C D E F@2 G H F@2 G H I J I K L J M F@2 G H F@2 G H I J I K N O P Q R S P Q R T I J I K L J R S R S R S B
  C D E B C D E U E V
>`.pickRestart({
  A: "~@14 f2 [a2,c3]", B: "[c3,f3,a3]@2 [c3,f3,a3]!2 [c3,f3,a3]@2 [c3,f3,a3]@8 ~@2",
  C: "[d3,g3,b3]@2 [d3,g3,b3]!2 [d3,g3,b3]@2 [d3,g3,b3]@8 ~@2", // G
  D: "[b2,e3,g3]@2 [b2,e3,g3]!2 [b2,e3,g3]@2 [b2,e3,g3]@8 ~@2", // Em
  E: "[c3,f3,a3]@2 [c3,f3,a3]!2 [c3,f3,a3]@2 [c3,f3,a3]@2 [f3,a3,c4]@4 ~@2 f2 [a2,c3]", F: "[f3,a3]@3 [e3,g3]@4 ~",
  G: "[f3,a3]@3 [e3,g3]@4 [e3,g3]", H: "[f3,a3]@3 [g3,c4]@4 [e3,g3]", I: "[c3,f3,a3] [b2,d3,g3]",
  J: "[b2,e3,g3] [c3,f3,a3]", // Em F
  K: "[b2,e3,g3]@2 [b2,e3,g3]!2 [b2,e3,g3]@2 [b2,e3,g3]@2 [b2,e3,g3]@2 [b2,e3,g3]@2 [b2,e3,g3]@2 g2 [b2,e3]", // Em E5
  L: "[c3,f3,a3] [b2,d3,g3], g3 ~@15", M: "[c3,f3,a3]!8", N: "[c3,f3,g3,a3] [c3,f3,a3]!3 [b2,d3,g3]!4",
  O: "[b2,e3,g3]!4 [c3,f3,a3]!4", P: "[b2,d3,g3]!8", Q: "[c3,e3,a3]!8", R: "[c3,f3,a3]!4 [b2,d3,g3]!4",
  S: "[c3,e3,g3]!8", T: "[g2,c3,e3]!8", U: "[b2,e3,f3,g3]@2 [b2,e3,g3]!2 [b2,e3,g3]@2 [b2,e3,g3]@8 ~@2",
  V: "[c3,f3,a3]", // F
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.9)

// chords · string ensemble 2 · "strings"
const string_ensemble_2 = note(`<
  ~ A B C A@2 B C A D@8 E F E C E F A D@8 E F E C E F B G E H B I E H E F E C E F E H E H E H A B C A@2 B C A C A@2
>`.pickRestart({
  A: "[f3,a3,c4]", B: "[g3,b3,d4]", C: "[e3,g3,b3]", D: "[d3,f3,a3] [c3,e3,g3]", E: "[f3,a3,c4] [g3,b3,d4]",
  F: "[e3,g3,b3] [f3,a3,c4]", G: "[a3,c4,e4]", H: "[g3,c4,e4]", I: "[e3,a3,c4]",
})).s("gm_string_ensemble_2").gain(0.2).pan(0.6)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~ A B C A@2 B C A D E D E D E D F G H I C I J K D E D E D E D F G H I C L M N C O P N C O P G H I C I J K Q K Q K Q A
  B C A@2 B C A C A@2
>`.pickRestart({
  A: "f2", B: "g2", C: "e2", D: "c2@7 c2", E: "c2", F: "c2@3 e2", G: "~ g2@2 ~, f2@3 ~@5", H: "e2@3 f2@4 ~",
  I: "f2@3 g2@4 ~", J: "e2@3 f2@4 f2", K: "f2 g2", L: "f2@3 f2@4 f2", M: "e2@3 f2 ~ d2 e2 c2", N: "g2@7 g2",
  O: "f2@3 f2 g2@3 c3", P: "c3@3 c3!2 d3 e3 c3", Q: "e2 c3",
})).s("gm_electric_bass_finger").gain(0.38)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!67 x>").gain(0.14)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ [x!8]!67 ~>").gain(0.17)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B ~ A@2 B ~@2 A B ~ A@2 B ~@2 A B ~ A@2 B ~ A B ~ A@2 B ~@2 A B ~ A@2 B ~ A@2 B ~ A@2 B A B ~ A@2 B ~@6 A B ~ A@2
  B ~@4 A
>`.pickRestart({
  A: "x", B: "x!2 ~@6",
})).gain(0.14)

// drums · ride
const ride = s("rd").struct("<~ [x ~@3 x!2 ~ x]!67 ~>").gain(0.14)

// drums · congas
const congas = s("conga:13").struct("<~ [~@4 x ~ x ~@3 x!3 ~@3]!67 ~>").gain(0.54)

// drums · shaker
const shaker = s("sh").struct("<~ [~ x!2 ~]!67 ~>").gain(0.14)

// drums · rim
const rim = s("rim").struct("<~ [~@2 x ~@2 x!2 ~]!67 ~>").gain(0.14)

stack(
  electric_guitar_clean, electric_guitar_muted, acoustic_guitar_nylon, string_ensemble_2, bass, kick, pedal_hat,
  open_hat, ride, congas, shaker, rim
)

More by Cyndi Lauper