Strudelify
Love Is All (Shine Your Light On Me) cover art

1994 · Crash! Boom! Bang!

Love Is All (Shine Your Light On Me)

Roxette

KeyE majorTempo63 bpm
0:00/0:00
// Love Is All (Shine Your Light On Me) — Roxette
// 63 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 62 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(63/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 · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@49 A B C D E@4 F@3 ~@2>".pickRestart({
  A: "f#5@3 f5", B: "d#5@3 a#4", C: "c#5@6 d#5 c#5", D: "b4@3 b4 d#5 ~ c#5@4 d#5@2 f5@2 g#5@2",
  E: "[g#5@35 ~ a#5@6 c6@3 g#5@38 ~ a#5@6 c6@2 ~ g#5@38 ~ a#5@5 c6@2 ~ a#5@26 ~@2 a#5 ~@2 a#5@3 c6@6 c#6@12]/4",
  F: "[c6@6 a#5@2 ~ g#5@27 a#5@6 c6@2 g#5@39 ~ a#5@6 c6@2 g#5@10 f5@6 d#5@3 ~@33, ~ c6 ~@22]/3",
})).s("gm_overdriven_guitar").gain(0.72)

// other · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@59 A@2 ~>".pickRestart({
  A: "[~@35 [f5,g#5]@8 ~@4 [g4,a#4,d#5]@48 ~, ~@7 c#5@14 ~@27]/2", // Fm D#
})).s("gm_overdriven_guitar").gain(0.16)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<~@49 A B C D E F G H I J K L M>".pickRestart({
  A: "f#2!6 f2!2, f#1@3 f1", B: "d#2!6 f#2!2, d#1@3 f#1", C: "a#2!8, a#1", D: "[b0,b1]!4 [c#1,c#2]!4",
  E: "[g#0,g#1]@3 [g#0,g#1] [g#0,g#1]@2 [g0,g1]@2", F: "[f0,f1]@3 [f0,f1] [f0,f1]@2 d#1@2", G: "c#1@3 c#1 c#1@2 c#1@2",
  H: "[d#1,d#2]@6 [d#1,d#2] ~ [d#1,d#2]@4 [g1,g2]@4", I: "[g#1,g#2]@6 [g#1,g#2] ~ [g#1,g#2]@4 [g1,g2]@4",
  J: "[f1,f2]@5 ~ [f1,f2] ~ [f1,f2]@4 [d#1,d#2]@4", K: "[c#1,c#2]@3 [c#1,c#2] [c#1,c#2]@2 [c#1,c#2]@2",
  L: "[d#1,d#2]@6 [d#1,d#2] ~ [d#1,d#2]@3 ~ [d#1,d#2]@3 ~", M: "[f1,f2]!2 [f1,f2]@2 [f1,f2]@4",
})).s("gm_acoustic_bass").gain(0.8)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<~@12 A B@3 C@2 D E ~@8 A B@3 C@2 D E ~@26>".pickRestart({
  A: "~@3 a3 ~@3 a3, e3@23 ~ e3@23 ~, ~@2 a3@13 b3@9 ~@3 a3@15 ~@6, ~@8 e4@15 ~@7 b3@9 b3@9, ~@11 e4@5",
  B: "[~@6 b3@9 ~@3 g#3@5 ~@19 g#3@5 ~@19 a3@5 ~@19 a3@5 ~@19 g#3@5 ~@7 b3@5 ~@7 b3@6, e3@23 e3@24 e3@23 ~ e3@24 e3@24 ~ e3@12 ~@3 f#3@9, ~@3 g#3@12 b3@8 ~@6 b3@10 b3@8 ~@4 a3@15 ~@8 a3@16 ~@33 g#3@9 ~@12, ~@32 e4@15 ~@6 b3@9 ~ b3@8 ~@6 b3@10 ~@14 b3@10 b3@8 ~@12 d#3@12 ~, ~@56 e4@14 ~@10 e4@15 ~@10 e4@15 ~@24]/3",
  C: "[~@18 g#3@5 ~@19 g#3@5 ~@19 f#3@5 ~@19 f#3@6, c#3@23 ~ c#3@24 ~@26 f#3@16 ~@6, ~@3 g#3@15 ~@8 g#3@15 ~@6 b2@24 b2@25, ~@6 c#4@9 c#4@8 ~@6 c#4@10 c#4@8 ~@7 b3@9 b3@8 ~@6 b3@10 b3@9, ~@8 e4@15 ~@9 e4@15 ~@9 d#4@15 ~@9 d#4@16]/2",
  D: "~@18 c#3@5 ~@19 c#3@5 ~, a2@23 a2@24 ~, ~@2 c#3@15 ~@31, ~@5 e3@10 e3@8 ~@16 e3@8 ~, ~@9 a3@14 ~@10 a3@15",
  E: "~@18 g#3@5 ~@19 d#3@5 ~, c#3 ~, ~@3 g#3@15 ~@5 b2@24 ~, ~@5 c#4@10 c#4@8 ~@6 g#3@10 g#3@8 ~, ~@8 e4@15 ~@9 b3@15 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.48)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note("<~@12 A B C D ~ E F G ~@8 A B C D ~ E F G ~@26>".pickRestart({
  A: "~@5 b3@9 ~@34", B: "~@9 e4@14 ~@3 g#3@15 ~@7", C: "~@39 b3@8 ~", D: "~ g#3@8 ~@15", E: "~ f#3@8 ~@15",
  F: "~@29 e3@10 ~@9, ~@13 c#3@8 ~@3", G: "~@13 d#3@8 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// chords · piano · "A.PIANO 2"
const piano = note("<~@12 A@2 B C D@3 E F@4 G@5 H I@5 J K@2 L@6 ~@5 M N O P Q@4 R@3 ~ S>".pickRestart({
  A: "[a4@42 ~@6 g#4@35 ~@7 g#4@5 ~, ~@42 b4@41 f#4@12 ~]/2", B: "a4@36 ~@3 b4@6 g#4@2 ~, ~@3 a4",
  C: "g#4@35 ~ b4@6 [b4,d#5]@6, ~@3 g#4", // B
  D: "[[c#5,e5]@35 ~@7 b4@5 ~@4 f#4@32 ~@7 [e4,c#5]@5 ~ a4@18 a4@6 [a4,e5]@12 ~@3 [e4,c#5]@9, ~@36 c#5@11 d#5@36 ~@12 e5@24 ~@25, ~@48 g#4@35 [f#4,d#5]@12 ~@37 [f#4,d#5]@12]/3", // C#m A5 C#m D#m
  E: "[g#4,e5] ~", // C#m
  F: "[[b3,d4,g4]@8 ~@3 g2@6 g2@12 g2@6 b3@6 ~@5 e2 [e3,e4]@9 [b3,e4]@10 ~@12 e2@5 ~@7 [e3,b4]@5 c3 c3@5 ~@6 c3@6 c3@12 ~ c3@5 ~@6 b4@5 ~ [f#4,b4]@7 ~@18 [d4,a4]@3 [d4,a4]@3 [d4,b4]@5 ~ f#3@6 f#3@6, g1@43 b3@13 ~@10 [g3,b3]@29 c4@6 c3@6 ~@6 c4@18 [c3,c4,a4]@11 d4@8 f#4@25 ~@17, [g2,g3]@5 ~@3 [b3,d4,g4]@9 [g3,d4,g4]@29 e1@50 [e4,g4]@8 [c4,e4,g4]@9 e4@30 [d2,a3]@38 ~@11, ~@17 b3@18 [g2,a4]@12 e2@6 ~@31 [e2,a4]@12 g3@47 d3@19 d3@12 d3 ~@4 f#1@13, ~@41 b4@6 g4@19 ~@29 c2@49 ~@6 [d4,a4]@18 ~@12 [f#2,d4,c5]@12]/4", // G E E5 B5 D5 G F G …
  G: "[g4@6 ~@24 d4@5 ~@6 b4@6 e2 [e2,g4]@9 ~@9 e4@18 ~@6 b4@5 c3 e4@6 [c4,e4]@6 ~@3 c4@20 [c4,e4]@6 ~ [g3,c4,e4]@5 d3 ~@48 a4@42 b4@6, g1@36 [f#1,f#2,f#3,d4,a4]@12 ~@36 [d2,d3,b3,a4]@12 [c3,g4]@12 c3@12 ~@11 [c3,g4]@12 ~ [d3,a3,d4]@78 ~@18, [g2,g3,b4]@9 d4@21 ~@18 e3@36 ~@12 g3@42 ~@24 f#4@6 a4@7 e5@6 f#5@5 a5@35 ~@19, ~@6 a4@12 [g2,g3]@18 ~@11 e1@37 ~@11 c2@48 d2@78 ~@19, ~@9 g4@26 ~@13 e4@18 b3@12 ~@30 d4@35 ~@13 e4@65 ~@19]/5", // Em C D Bm7 C5 D5 G
  H: "g#4@35 f#4@7 g#4@6",
  I: "[a4@29 e4@5 ~ e4@5 ~ e4@5 ~ e4@32 ~@2 e4@2 ~ d#4@5 ~ b4@5 ~ c#5@35 c#5@6 b4@6 ~ g#4@2 ~ f#4@31 ~ [d#4,f#4]@6 e4@5 ~@2 a4@35 ~ c#4@5 ~ e4@6, ~@83 g#4@6 g#4@6 e4@35 ~ e4@11 ~ d#4@34 ~@14 c#4@34 ~@2 f#4@6 b3@5 ~@2]/5", // D#m
  J: "g#4@3 ~, e4 ~@7",
  K: "[[d3,g3,b3,d4,g4]@6 ~@5 [d3,g3]@6 ~ b3@12 b3@6 ~@6 b4@5 ~ [e3,b3,e4,g4]@6 ~@6 e3@6 [e3,b3]@13 ~@5 b3@6 [b3,b4]@6, g1@47 [e1,e2]@49, g2@18 [g2,d3,g3]@18 [g2,d3,g3,b3,a4]@12 ~@9 [e4,g4]@10 ~@29, ~@6 [d3,g3]@5 ~@43 e3@6 ~@6 [g3,e4]@30, ~@9 [b3,d4,g4]@9 [d4,g4]@30 ~@8 b3@10 ~@18 [e3,a4]@12]/2", // G G5 Em E5 B E G5 G …
  L: "[[c3,c4,e4,g4]@9 ~@3 c3@6 [c3,g3]@12 [c3,g3]@6 g3@6 g3@5 d3 [d4,f#4]@5 ~@18 [d4,a4]@3 ~ d4@3 [d3,a3,d4,b4]@5 f#2 ~@6 f#3@5 g2 ~@29 d4@6 f#3@6 [f#3,b4]@6 [e3,b3,e4]@9 ~@3 e2@7 [e2,e3,g3,b3,e4]@18 ~@5 b4@5 ~ c3 ~@15 c3@20 [g3,e4]@6 [g3,c4,e4]@6 a3@19 ~@12 a3@17 ~, c2@47 a3@6 [d4,a4]@13 d3@9 a4@9 ~@11 g3 g4@5 a4@3 d4@10 [g2,g3]@29 e2@6 ~@3 [b3,e4]@10 ~@29 g3@36 [c3,g4]@12 ~@49, g3@18 [c4,e4]@30 b4@30 ~@5 c5@12 b4@36 [f#1,f#2,d4,a4]@12 e1@37 ~@10 c2@49 [d2,d3]@48 ~, ~@9 [c4,e4,g4]@10 ~@17 [c3,a4]@12 d2@36 [f#1,f#2,d4,b4]@11 d4 g2@8 g4@39 g4@19 ~@29 [c4,g4]@12 d4@5 ~@31 d4@25 d4@22 ~@2, ~@48 d3@5 f#4@30 f#3@6 ~@6 g1@48 ~@37 [d2,d3,a4]@11 e4 c3@5 e4@9 c4@20 ~@32 a3@12 ~@18]/6", // C C5 D D5 Bm7 B5 E5 Em …
  M: "[f#1,f#2,a#3,c#4,f#4]@11 ~ [f1,f2,a#3,c#4,f4]@4", // F# A#m
  N: "[d#2,d#3,f#3,a#3,d#4]@11 ~ [d#3,f#3,a#3]@2 ~@2, ~@3 [f#1,f#2]", O: "[a#1,a#2,f3,a#3,c#4]@7 ~",
  P: "[b1,b2,d#3,f#3,b3]@2 [d#3,f#3,b3] ~ [c#2,c#3,g#3,c#4]@4, ~@4 [b1,b2]@4 f3 ~@7", // B C#5 B
  Q: "[g#4@11 ~ a#4@2 c5 g#4@13 a#4@2 c5 g#4@13 a#4@2 c5 a#4@9 a#4!2 c5@2 [d#4,c#5]@4, d#4@15 f4@15 ~ f4@16 g4@13 ~@4]/4", // D#7
  R: "[[g#4,c5]@2 a#4 g#4@9 a#4@2 c5 g#4@13 a#4@2 c5 [f4,g#4]@3 f4@2 d#4 c#4@10 ~, ~@15 f4@16 ~@17]/3", // G# Fm
  S: "~@12 f4@3 d#4 f4@7 ~",
})).s("gm_piano").gain(0.64)

// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note("<~@20 A B ~ C@4 ~@10 D E ~@2 F G ~@19>".pickRestart({
  A: "~@5 [g2,g3]@6 ~ g3@5 ~@31", B: "~@5 e2@6 ~ e2@6 e3@24 ~@2 c4@3 ~, ~@11 e3@7 e2@12 ~@18",
  C: "[~@47 d4@9 ~@51 e2@7 ~@12 b3@5 ~@12 c4@7 ~@18 c3@11 ~@13, ~@31 b3@7 ~@26, ~@102 e2@5 ~@7 e2@18 ~@60, ~@35 g4@9 ~@20]/4",
  D: "~@31 b3@5 ~@12, ~@5 e3 ~@2", E: "~@6 c3@5 ~@31 b4@6", F: "~@5 e2@6 e3@7 ~@30", G: "~@34 c4@7 ~@7",
})).s("gm_piano").gain(0.32)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@12 A@8 B@8 A@8 C@8 ~@18>".pickRestart({
  A: "[a4@46 ~@2 g#4@47 a4@46 ~@3 g#4@31 ~@5 d#5@11 ~ c#5@47 [b2,b4,f#5]@48 [e4,a4,c#5]@44 ~@4 [c#4,c#5]@24 [b2,b3,b4]@24 g3, e4@178 ~ [d#4,g#4]@11 ~ [c#4,g#4]@49 ~@47 [a2,a5]@48 ~@49, [b4,e5]@174 ~@5 d#3@7 ~@5 [c#3,g#3]@45 ~@3 f#4@44 ~@52 g#4@47 ~@2]/8", // B5 A C# B G#5 C#5 A E5 …
  B: "[[d4,g4]@46 [e3,b3,e4,g4,b4]@49 [c3,c4,e4,g4]@47 [d3,a3,a4]@37 [f#3,c5]@13 [g3,g4,b4]@35 a4@11 [e3,g4]@38 [d3,a4]@10 [c3,g3,c4]@49 [a3,d4]@48 ~, ~@142 d4@96 e4@97 ~@49, ~@143 g4@21 ~@28]/8", // G5 Em C D5 F#dim G Em D5 …
  C: "[[d4,g4]@42 ~@5 [e4,e5]@48 [c4,g4,c5]@47 ~ d5@46 ~@2 [g4,g5]@35 ~ f#4@11 [e4,g5]@37 [d4,a5]@11 [c4,g4,g5,c6]@48 ~@19 a5@5 d6@7 a5@15 ~@4, [b4,g5]@95 ~@47 a4@36 ~@12 [b4,d5]@37 ~@11 e5@97 ~@49, d5@47 ~@96 d4@36 ~@47 a5@12 ~@96 [d4,d5]@45 ~@5]/8", // G5 E C5 G Em D5 C5 Em …
})).s("gm_pad_warm").gain(0.4)

// chords · pad warm · "WARM PAD" · soft notes
const pad_warm_soft = note("<~@12 A@4 B@2 C@3 ~ D@2 E ~ F@2 A@4 B@2 G@3 ~ H@2 ~@22>".pickRestart({
  A: "[~@143 [g#5,b5]@36 g#3@9 ~@4, e3@11 ~]/4", B: "[~@47 f#3@47 ~@2]/2", C: "[~@47 c#3@23 ~@25 b3@47 ~@2]/3",
  D: "[~@46 f#4@37 ~@13]/2", E: "~@35 f#3@11 ~@2", F: "[~@47 d3@48 ~]/2", G: "[~@47 c#3@23 ~@25 b3@42 ~@7]/3",
  H: "[~@83 f#4@12 ~, ~@47 f#5@47 ~@2]/2",
})).s("gm_pad_warm").gain(0.24)

// chords · tremolo strings · "TREMOLOST"
const tremolo_strings = note("<~@43 A@6 ~@13>".pickRestart({
  A: "[~@46 [e2,e3]@25 ~ d#3@12 [d#2,d#3]@11 ~ g#2@15 ~@3 b2@5 ~@3 c#3@21 e2 e3@5 b2@6 e3@6 b2@6 [c#3,f#3]@7 c#3@5 f#3@7 c#3@5 ~@6 d#4@6 c#4@6 b3@6 ~@13 d#4@3 ~@2 a#4@3 d#5@3 c#5@23 ~@26, ~@71 d#2@11 ~@13 g#3@18 b1@5 ~ c#2@23 ~ b2@6 ~@42 [b2,f#3]@23 ~ [d#3,g3]@47 ~@26, ~@144 e2@23 f#2@20 ~@44 f#4@4 ~@53]/6", // E D# F#5 B5 D#
})).s("gm_tremolo_strings").gain(0.56)

// drums · kick
const kick = s("bd").struct("<~@49 [x ~@3 x!2 ~@2]!4 [x!2]!8 ~>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@49 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!3 [~@4 x ~@7 x ~ x!2] [~ x ~ x]!4 ~>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@52 [~@13 x!2 ~] ~@7 [~@13 x!2 ~] ~>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@52 [~@9 x!2 ~ x ~@3] ~@7 [~@9 x!2 ~ x ~@3] ~>").gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@28 x ~@20 x!7 ~ x!3 ~ x>").gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@3 A ~@8 B ~@7 B ~@15 B ~@6 A ~@5 C@3 D C@8 ~>".pickRestart({
  A: "~@47 x", B: "x", C: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", D: "x!8",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@49 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!3 [~@4 x ~@7 x ~ x!2] [~ x ~ x]!4 ~>")
  .gain(0.8)

stack(
  overdriven_guitar, overdriven_guitar_soft, bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, piano, piano_soft,
  pad_warm, pad_warm_soft, tremolo_strings, kick, snare, low_tom, mid_tom, crash, ride, tambourine
)

More by Roxette