Strudelify
Every Morning cover art

14:59

Every Morning

Sugar Ray

KeyA♭ majorTempo110 bpm
0:00/0:00
// Every Morning — Sugar Ray
// 110 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 38 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(110/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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@5 A B C D A B A B A B A B ~@8 A B A B E F G H I J K L K L K L A B M N A B A B A B A B E F E F E F G H I J K L K L K
  L ~@6 A B A B A B A B A B A B A B A B A B A B A B A B O
>`.pickRestart({
  A: "[eb3,ab3,c4,eb4,ab4]@2 [eb3,ab3,c4,eb4,ab4]@2 [eb3,ab3,c4,eb4,ab4]@2 [eb3,ab3,c4,eb4,ab4]@2 [eb3,ab3,c4,eb4,ab4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4]@2 [db3,ab3,db4,f4]@2", // Ab Eb Db
  B: "[db3,ab3,db4,f4]@4 [db3,ab3,db4,f4]@2 [db3,ab3,db4,f4]@2 [db3,ab3,db4,f4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4]@2 [eb3,ab3,c4,eb4,ab4]@2", // Db Eb Ab
  C: "[eb3,ab3,c4,eb4,ab4]@4 [eb3,ab3,c4,eb4,ab4]@2 [eb3,ab3,c4,eb4,ab4]@2 [eb3,ab3,c4,eb4,ab4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4]@4", // Ab Eb
  D: "[db3,ab3,c4,f4]@4 [db3,ab3,c4,f4]@2 [db3,ab3,c4,f4]@2 [db3,ab3,c4,f4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4]@2 [eb3,ab3,c4,eb4,ab4]@2", // Dbmaj7 Eb Ab
  E: "[eb3,ab3,c4,eb4,ab4]!3 ~@2 [eb3,bb3,eb4,g4] ~ [db3,ab3,db4,f4]", // Ab Eb Db
  F: "[db3,ab3,db4,f4]!2 [db3,ab3,db4,f4]@3 [eb3,bb3,eb4,g4]!2 ~", // Db Eb
  G: "[eb3,ab3,c4,eb4,ab4]!2 [eb3,ab3,c4,eb4,ab4]@3 [eb3,ab3,c4,eb4,ab4] ~@2", H: "~@5 [eb3,bb3,eb4,g4]!2 ~",
  I: "~@4 [eb3,ab3,c4,eb4,g4]@3 ~@3 [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4] ~ [db3,ab3,db4,f4]@2", // Abmaj7 Eb Db
  J: "[db3,ab3,db4,e4,f4] [db3,ab3,db4,f4]!2 ~@2 [eb3,bb3,eb4,g4]!2 [eb3,ab3,c4,eb4,g4]", // Db Eb Abmaj7
  K: "[eb3,ab3,c4,eb4,g4]!3 ~@2 [eb3,bb3,eb4,g4]!2 [db3,ab3,db4,f4]", // Abmaj7 Eb Db
  L: "[db3,ab3,db4,f4]!3 ~@2 [eb3,bb3,eb4,g4]!2 [eb3,ab3,c4,eb4,g4]", M: "[eb3,ab3,c4,eb4,ab4] ~@15",
  N: "[c4,f4]@4 [db3,ab3,c4,f4]@2 [db3,ab3,c4,f4]@2 [db3,ab3,c4,f4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4]@2 [eb3,ab3,c4,eb4,ab4]@2, [db3,ab3] ~@15", // F5 Dbmaj7 Eb Ab Db5
  O: "[eb3,ab3,c4,eb4,ab4]!3 ~@5", // Ab
})).s("gm_acoustic_guitar_steel").gain(0.14)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B C D C B C D C B C D E F G F G F G H C I C D C D J K L M L N L M L N C B O D C D C I C D C I C D C I C D J P L
  M L N L M L N Q R S T Q R C B C D C B C B C B C D C B C D C B C D C B C D U
>`.pickRestart({
  A: "ab1!3 c2 ~ eb2 ~ c2", B: "db2@3 db2 ab2@2 eb2@2", C: "ab1@3 c2@2 eb2@2 c2", D: "db2@3 db2 ab2 eb2 eb2@2",
  E: "ab1@3 eb2@2 f2@2 ab2", F: "db2@3 f2 ab2@2 f2@2", G: "ab1@3 c2@2 eb2 f2 ab2", H: "db2@3 f2 ab2!2 f2 eb2",
  I: "db2@3 db2 ab2 eb2!3", J: "ab1@3 c2@2 eb2 ~@2", K: "~@4 ab2 eb2 eb2@2", L: "ab1@3 c2 eb2!2 ab2 db2",
  M: "db2@3 ab1 db2 eb2 eb2@2", N: "db2@3 ab1 db2 eb2!3", O: "ab1 ~@2 c2@2 eb2@2 c2", P: "~@4 ab2 eb2!3", Q: "db2!8",
  R: "eb2!8", S: "ab1!8", T: "f1!8", U: "ab1!3 ~@5",
})).s("gm_electric_bass_finger").gain(0.31)

// other · electric guitar clean
const electric_guitar_clean = note("<~@17 A B A C A B A D ~@26 A E ~@25 F A C A D ~@17>".pickRestart({
  A: "bb4@9 ~ bb4@3 a4@3", B: "ab4@9 ~ ab4@3 a4@3", C: "ab4@7 ~", D: "ab4@5 ~@3", E: "ab4@9 ~ ab4@3 ~@3",
  F: "~@10 ab4@3 a4@3",
})).s("gm_electric_guitar_clean").gain(0.36).pan(0)

// chords · electric guitar muted · Db5 Eb5 Ab F5 Db5 Eb5
const electric_guitar_muted = note(`<
  ~@69
  [[db3,ab3,db4]!7 [eb2,bb2,eb3]]
  [[eb2,bb2,eb3]!7 [ab2,eb3,ab3,c4]]
  [[ab2,eb3,ab3,c4]!7 [f2,c3,f3,c4]]
  [[f2,c3,f3,c4]!7 ab2]
  [[db3,ab3,db4]!7 [eb3,bb3,eb4]]
  [[eb3,bb3,eb4]!8]
  ~@25
>`).s("gm_electric_guitar_muted").gain(0.4)

// other · electric guitar clean
const electric_guitar_clean_2 = note("<~@17 A B A C A B A C ~@26 A D ~@25 B A C A E ~@17>".pickRestart({
  A: "eb5@9 ~ eb5@3 d5@3", B: "db5@10 db5@3 d5@3", C: "db5@7 ~", D: "db5@5 db5@2 ~", E: "db5@9 ~@7",
})).s("gm_electric_guitar_clean").gain(0.22).pan(1)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note("<~ A B C D A B C D ~@22 C D ~@8 A B C D ~@14 C D ~@39>".pickRestart({
  A: "[bb3,eb4]@2 ~ bb3 [bb3,f4]@2 [bb3,eb4]@2 [bb3,f4]@2 [bb3,eb4]@2 ~@2 [ab3,db4]@2, ~ eb4 ~@6", // Eb5 Bb5 Eb5 Bb5 Eb5 Db5
  B: "[ab3,eb4] [ab3,db4] [ab3,eb4] [ab3,db4] ~ [g3,c4] [ab3,db4] [ab3,c4]", C: "~@2 [c4,eb4]!4 ~@2",
  D: "[c4,f4]@5 ~ eb4 ~ c4@5 ~@3, ~@7 db4@2 ~@7", // F5
})).s("gm_acoustic_guitar_steel").gain(0.31)

// chords · epiano1
const epiano1 = note("<~@17 A B A B A B A C ~@8 D E D E D E D F ~@20 D E D E D E D F ~@31>".pickRestart({
  A: "~ eb2 f2 ab2 ~ eb2 f2 ab2, [c4,g4]@15 ~", B: "~ eb2 f2 ab2 ~ eb2 f2 ab2, [db4,f4]@15 ~",
  C: "~ eb2 f2 ab2 ~ eb2 f2 ab2, [db4,f4]@7 ~", D: "[c4,g4]@15 ~", E: "[db4,f4]@15 ~", F: "[db4,f4]@7 ~",
})).s("gm_epiano1").gain(0.25)

// other · pad choir
const pad_choir = note("<~@71 A@2 ~@27>".pickRestart({
  A: "[~@7 c5@2 ~@7]/2",
})).s("gm_pad_choir").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~ A@4 B@11 A@8 C B@6 A D E@8 F@2 G F B@14 A D E@8 A@6 B@24 G>".pickRestart({
  A: "x ~@4 x ~@2", B: "x ~@4 x ~ x", C: "x!2 ~@8 x ~@5", D: "~@7 x", E: "x ~@6 x!2 ~ x ~@3 x ~", F: "x ~@2 x!3 ~ x",
  G: "x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@3 B A@11 C A@3 D A@3 E A@6 F G A@10 H D A@7 D A@6 F G A@13 I A@7 J A@3 J A@3 J K A@2 J A@3 J F
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@4 x ~@2 x ~@3", D: "~@2 x ~@3 x!2", E: "~@2 x!3 ~ x ~",
  F: "~ x ~@2", G: "~@5 x!3", H: "~@7 x", I: "~@2 x ~ x!3 ~", J: "~@2 x ~@2 x!2 ~", K: "~ x!2 ~@3 x ~",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<A B@23 C B@6 D E B@10 F B@15 D E B@38 G>".pickRestart({
  A: "x!4", B: "x!8", C: "x!5 ~@3", D: "x!6 ~@2", E: "~@5 x!3", F: "x", G: "x!3 ~@5",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@83 A B A B A B A B A B A B A B A B C>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~ x ~@2",
})).gain(0.54)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A@30 B C A@10 D A@15 B C A@38 E>".pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "~@5 x!3", D: "x", E: "x!3 ~@5",
})).gain(1.83)

stack(
  acoustic_guitar_steel, bass, electric_guitar_clean, electric_guitar_muted, electric_guitar_clean_2,
  acoustic_guitar_steel_2, epiano1, pad_choir, kick, snare, hihat, tambourine, cabasa
)

More by Sugar Ray