Strudelify

Do You See the Light

Snap

KeyF♯ minorTempo132 bpm
0:00/0:00
// Do You See the Light — Snap
// 132 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "SYN BASS 1" synth bass 1 (copy of ch 3 "+SYNBASS 3" synth bass 1); ch 5 "SYN STR 1" synth strings 1 (copy of ch 6 "ALTO SAX" alto sax)
// note: Full arrangement: all 139 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  A B C D E B C D E B C D E B C D F ~@31 G H I H J H I H J ~@35 G H I H J H I H K ~@19 A B C D E B C D E B C D E B C D F
  ~@2
>`.pickRestart({
  A: "~@7 f#4", B: "a4!2 f#4 c#5@2 f#4 ~ f#4", C: "a4!2 f#4 e5@2 f#4 ~ f#4", D: "a4!2 f#4 b4@2 f#4 ~ f#4",
  E: "b4@2 f#4 c#5@2 f#4 ~ f#4", F: "b4@2 f#4 c#5@2 f#4 ~@2", G: "~@7 c#5", H: "f#5@2 c#5 g#5@2 c#5 ~ c#5",
  I: "f#5@2 c#5 e5@2 c#5 ~ c#5", J: "f#5@2 c#5 c#6@2 c#5 ~ c#5", K: "f#5@2 c#5 c#6@2 c#5 ~@2",
})).s("gm_percussive_organ").gain(0.61).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~ A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@104 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@4>".pickRestart({
  A: "f#2/2", B: "a2/2", C: "d2/2", D: "e2/2", E: "e2/4",
})).s("gm_string_ensemble_1").gain(0.61).pan(0.6)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~ A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@104 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@4
>`.pickRestart({
  A: "f#4/2", B: "a4/2", C: "d4/2", D: "e4/2", E: "e4/4",
})).s("gm_string_ensemble_1").gain(0.34).pan(0.6)

// bass · synth bass 1 · "+SYNBASS 3"
const bass = note("<~@17 [f#2!4 e2!2 f#2!2 c#2!2 e2!2 f#2!2 c#2!2]!104 ~@18>").s("gm_synth_bass_1").gain(0.52)

// bass · fretless bass · "FRETLESS"
const bass_2 = note("<~@17 [f#1@2 e1 f#1 c#1 e1 f#1 c#1]!104 ~@18>").s("gm_fretless_bass").gain(0.36)

// other · alto sax
const alto_sax = note("<~@23 A@2 ~@6 A@2 ~@14 A@2 ~@6 A@2 ~@26 A@2 ~@34 A@2 ~@18>".pickRestart({
  A: "g5/2",
})).s("gm_alto_sax").gain(0.2).pan(0.6)

// other · lead 5 charang · "CHARANG"
const lead_5_charang = note("<~@25 [~@2 c#3 ~@3 c#3 ~@3 c#3 ~@3 b2 ~]!8 ~@106>").s("gm_lead_5_charang").gain(0.45)

// other · synth strings 1 · "+SYN STR 3"
const synth_strings_1 = note("<~@41 A B A C A B A C A B A C A B A C ~@36 A B A C A B A C A B A D ~@34>".pickRestart({
  A: "f#4@2 c#4 g#4@2 c#4 ~ c#4", B: "f#4@2 c#4 e4@2 c#4 ~ c#4", C: "f#4@2 c#4 c#5@2 c#4 ~ c#4",
  D: "f#4@2 c#4 c#5@3 ~@2",
})).s("gm_synth_strings_1").gain(0.41).pan(0.6)

// other · synth bass 2 · "SYN BASS 2"
const synth_bass_2 = note("<~@33 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 ~@28 A B@3 A B@3 A B@3 A B@3 ~@38>".pickRestart({
  A: "~@4 c#5!12", B: "c#5!16",
})).s("gm_lead_8_bass_lead").gain(0.21)

// other · synth bass 2 · "SYN BASS 2" · soft notes
const synth_bass_2_soft = note("<~@33 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@31 A ~@3 A ~@3 A ~@3 A ~@41>".pickRestart({
  A: "c#5!4 ~@12",
})).s("gm_lead_8_bass_lead").gain(0.1)

// other · distortion guitar · "DISTORTION" · F# G# F# G# F# G# F# G# …
const distortion_guitar = note(`<
  ~@61
  [[f#2,f#3] [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3] ~ [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3]]
  [~ [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3] ~ [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3]]!15
  ~@28
  [[f#2,f#3] [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3] ~ [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3]]
  [~ [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3] ~ [g#2,g#3]!2 ~ [g#2,g#3] ~ [g#2,g#3] [f#2,f#3]]!15
  ~@18
>`).s("gm_distortion_guitar").gain(0.44).pan(0.4)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@62 A B A B A B A B A B A B A B A B ~@28 A B A B A B A B A B A B A B A B ~@17
>`.pickRestart({
  A: "~@12 [b2,b3] [a#2,a#3] [g#2,g#3]@2", B: "[f#2,f#3] ~@15",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@21 A@11 ~ A@24 ~@2 A@18 ~@8 A@18 ~@2 A@16 ~@18>".pickRestart({
  A: "x!4",
})).gain(0.72)

// drums · clap
const clap = s("cp").struct("<~@24 A ~@23 A ~@7 A ~@23 A ~@58>".pickRestart({
  A: "~@4 x ~@2 x ~ x ~@2 x ~@2 x",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@16 B@32 A@4 B@16 A@8 B@35 C ~@18>".pickRestart({
  A: "x!16", B: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", C: "x!2 ~ x!3 ~ x!3 ~ x!3 ~@2",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@25 [~ x ~ x ~ x ~ x]!32 ~@4 [~ x ~ x ~ x ~ x]!16 ~@8 [~ x ~ x ~ x ~ x]!36 ~@18>")
  .gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@21 [~ x!3 ~ x!3 ~ x!3 ~ x!3]!36 ~@2 [~ x!3 ~ x!3 ~ x!3 ~ x!3]!62 ~@18>")
  .gain(0.24)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@21 [x!4]!36 ~@2 [x!4]!62 ~@18>").gain(0.16)

stack(
  percussive_organ, string_ensemble_1, string_ensemble_1_soft, bass, bass_2, alto_sax, lead_5_charang, synth_strings_1,
  synth_bass_2, synth_bass_2_soft, distortion_guitar, overdriven_guitar, kick, clap, hihat, open_hat, tambourine,
  tambourine_soft
)

More by Snap