Strudelify

Standing in the Light

Level 42

KeyA minorTempo105 bpm
0:00/0:00
// Standing in the Light — Level 42
// 105 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · "Bass"
const bass = note(`<
  A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F@2 G@2 F@2 H I A@2 B@2 A@2 B@2 C@2 E@2 F@2 G@2 F@2 H I A@2 B@2 A@2
  B@2 C@2 D@2 A@2 B@2 C@2 E@2 F@2 G@2 F@2 H I A@2 B@2 A@2 J@2 ~
>`.pickRestart({
  A: "[e1 ~ e1 ~ e1 ~ e1 ~ e1@2 f#1 g#1 ~@3 c2@3 d2 ~ c2 ~ d2 c2!3 b1 ~ a1 ~@2 e2]/2",
  B: "[~ e1@3 e1 ~ e1 ~ e1@2 f#1 g#1 ~@3 c2@3 d2 ~ c2@2 d2 c2!3 b1 ~ a1 ~@2 e2]/2",
  C: "[~ e1@2 ~ e1 ~ e1 ~ e1@2 f#1 g#1 ~@3 c2@3 d2 ~ c2@2 d2 c2!3 b1 ~ [a1,b1] ~@2 e2]/2", // Asus2
  D: "[~ e1@3 e1 ~ e1 ~ e1@2 f#1 g#1 ~@3 c2@3 d2 ~ c2@2 d2 c2!3 b1 ~ a1 ~@3]/2",
  E: "[~ e1@3 e1 ~ e1 ~ e1@2 f#1 g#1 ~@3 c2@3 d2 ~ c2@2 d2 c2!3 b1 ~ a1@4]/2",
  F: "[d2@4 d3 a2 f2@2 c2@2 e2@2 c2@2 g1@9 g1 b1@2 d2@2 e2@2 g1@2]/2", G: "[a1@6 a1@2 e2@4 c2@2 a1@8 a1@4 a1@4 a1 ~]/2",
  H: "f#1@3 g1@4 a1", I: "b1", J: "[~ e1@3 e1 ~ e1 ~ e1@2 f#1 g#1 ~@3 c2@3 d2 ~ c2@2 d2 c2!3 ~@6]/2",
})).s("gm_fretless_bass").gain(0.8)

// chords · ocarina · "Pad"
const ocarina = note(`<
  A@8 B@5 C@8 D@3 E@3 F@3 G H I@4 J@8 E@3 F@3 G H I@4 B@5 C@8 D@3 E@3 F@3 G H I@4 K@4 ~
>`.pickRestart({
  A: "[[b3,e4,g#4]@15 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 ~]/8", // E F E F E F E F
  B: "[[b3,e4,g#4]@15 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]]/5", // E F E F E F
  C: "[~@15 [b3,g#4]@16 [c4,a4]@16 [b3,e4,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]]/8", // E F E F E F E F
  D: "[~@15 [b3,g#4]@16 [c4,a4]@17]/3", E: "[[a3,d4,f4]@4 [c4,e4]@3 ~@9 g4@8, ~ g3@3 ~@2, ~@7 [b3,d4]@17]/3",
  F: "[[c#4,e4]@8 [d4,f4]@4 [c4,e4]@3 [b3,d4]@9, a3 g3]/3", G: "[f#3,a#3,c#4]@6 g3@5 g3@4 ~, ~@3 [b3,d4]@5",
  H: "[b3,d#4,f#4]", I: "[[b3,e4,g#4]@15 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]]/4",
  J: "[[b3,e4,g#4]@15 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@17]/8", // E F E F E F E F
  K: "[[b3,e4,g#4]@15 [c4,a4]@16 [b3,g#4]@16 [c4,a4]@16 ~]/4", // E F E F
})).s("gm_ocarina").gain(0.25)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@3 A@3 B ~@17 C@2 D@4 E F G@4 ~@8 C@2 D@4 E F G@4 ~@16 C@2 D@4 E F G@8 ~
>`.pickRestart({
  A: "[~@15 [b3,b4]@7 [a3,a4] [g#3,g#4] ~ [f#3,f#4] ~ [e3,e4] ~ [e3,e4] [b2,b3] [c3,c4]@6 [e3,e4] [b3,b4] [a3,a4]@5 [b3,b4]@2 [a3,a4] [g#3,g#4]]/3", // B A G# F# E B C E …
  B: "~ [b3,b4]@14 ~", C: "[~@4 d4@2 a3@2 ~@4 e4@2 [b3,d4]@17 ~, f4@7 ~ g3@23 ~, ~@5 c4@2 ~@9]/2",
  D: "[~@4 b3@6 g3@2 [b3,d4]@2 [a3,c#4]@13 ~ c#4@2 ~@6 a3@2 d4@2 ~@4 e4@2 [b3,d4]@18, d4@10 ~@4 e4@16 a3@5 ~@5 g3@24, ~@16 [d4,f4]@3 ~@2 c4@2 ~@9]/4", // Bm A Bm Dm
  E: "f#3@3 g3@4 a3", F: "~ d#4@11 f#4 ~@3, b3@13 ~@3",
  G: "[[e3,g#3,b3]@2 ~@2 [e3,g#3,b3] ~ e3 ~ e3@2 f#3 g#3@2 ~@2 [c3,e3,a3]@8 ~ c4@2 [a#3,b3]@2 a3@2 ~ [e3,g#3,b3]@2 ~@5 e3 ~ e3@2 f#3 g#3@2 ~@2 [c3,e3,a3]@13 ~@4]/4", // E Am Bmaj7 E Am
})).s("gm_electric_guitar_clean").gain(0.41).pan(0.7)

// other · electric guitar muted · "Mute Guit"
const electric_guitar_muted = note("<~@11 A ~@3 B ~@3 C ~@3 C ~@15 C ~@3 C ~@15 A ~@3 B ~@3 C ~@3 C ~@17>".pickRestart({
  A: "~@10 b4 ~ c5!2 ~@2", B: "~@7 b4 c5 ~ b4 ~ c5!2 ~@2", C: "~ c5 ~@2 c5 ~@3 c5 ~ b4 ~ c5!2 ~@2",
})).s("gm_electric_guitar_muted").gain(0.4)

// bass · synth bass 1 · "Synth"
const bass_2 = note("<~@32 A B C ~@6 D E ~@9 A B C ~@25 A B C ~ A B C ~@2>".pickRestart({
  A: "[g#2,g#3] ~ [g#2,g#3] ~ [g#2,g#3] ~ [g#2,g#3] ~ [g#2,g#3]@2 [a2,a3] [b2,b3] ~@4", B: "~@14 [a2,a3] [g#2,g#3]",
  C: "~ [g#2,g#3] ~@2 [g#2,g#3] ~ [g#2,g#3] ~ [g#2,g#3]@2 [a2,a3] [b2,b3] ~@4", D: "~@12 a2@3 [e2,g#2]",
  E: "~ e2@2 ~ [e2,g#2] ~ [e2,g#2] ~ [e2,g#2]@2 [f#2,a2] [g#2,b2]@2 ~@3, ~ g#2 ~@14", // E F#m G#m
})).s("gm_synth_bass_1").gain(0.48)

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

// drums · snare
const snare = s("sd").struct(`<
  A B A@2 B A@4 B A@2 B A@4 B A@2 B A@10 B A@3 C A B A@2 B A@10 B A@3 C A B A@2 B A@4 B A@2 B A@10 B A@3 C A@3 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@2 x ~ x ~@2 x ~@3",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D B E B F A B C D B E B F A B C D B E B G H@7 I J K L M L N O L K L N L H@7 I J K L M A B C D B E B F A B C D B
  E B G H@7 I J K L M J K L ~@2
>`.pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~",
  D: "x ~ x ~ x ~ x!5 ~ x ~ x!2", E: "~ x!2 ~ x ~ x ~ x ~ x ~ x!4", F: "~ x!2 ~ x ~ x!3 ~ x ~ x ~ x ~",
  G: "~ x!2 ~ x ~ x!3 ~ x ~ x ~@3", H: "~@2 x!3 ~ x!2 ~@2 x!3 ~ x!2", I: "~@2 x!3 ~ x!2 ~@2 x!6",
  J: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", K: "x ~ x ~ x ~ x ~ x ~ x!5 ~", L: "x!8", M: "x ~ x!3 ~ x ~ x!3 ~ x ~@3",
  N: "x ~ x!5 ~ x ~ x ~ x ~ x ~", O: "~@2 x ~ x ~ x ~ x ~ x!5 ~",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@3 A ~@2 A ~@12 A ~@3 A ~@2 A ~@20 A ~@3 A ~@2 A ~@9>".pickRestart({
  A: "x",
})).gain(0.8)

stack(bass, ocarina, electric_guitar_clean, electric_guitar_muted, bass_2, kick, snare, hihat, crash)

More by Level 42