Strudelify
Everywhere I Go cover art

Unguarded

Everywhere I Go

Amy Grant

KeyE♭ majorTempo80 bpm
0:00/0:00
// Everywhere I Go — Amy Grant
// 80 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · synth strings 1 · "Synthesizer"
const synth_strings_1 = note(`<
  A B C B D E F G F G H F H A I G F G J F J B C B C B C B C K L I G F G J F J B C B C B C B C K L M N O P M N O Q C B C
  B C B C B C B C B C B C ~
>`.pickRestart({
  A: "eb5 g4 bb4 eb5 g5 eb5 bb4 g4 d5 f4 bb4 d5 f5 d5 bb4 f4",
  B: "eb5 g4 c5 eb5 g5 eb5 c5 g4 [eb5,g5]@2 [eb5,g5]@2 [f5,ab5]@2 [g5,bb5] [eb5,g5]", // Eb Fm Gm Eb
  C: "[eb5,g5] g4 bb4 eb5 g5 eb5 bb4 g4 d5 f4 bb4 d5 f5 d5 bb4 f4", // Eb
  D: "[eb5,g5] g4 c5 eb5 g5 eb5 c5 g4 c5 g4 c5 eb5 g5 eb5 c5 g4", // Eb
  E: "c5 g4 c5 eb5 g5 eb5 c5 g4 f5 d5 bb4 f4 d5 f4 bb4 d5",
  F: "eb5 g4 bb4 eb5 g5 eb5 bb4 g4 eb5 g4 bb4 eb5 g5 eb5 bb4 g4",
  G: "eb5 ab4 c5 eb5 ab5 eb5 c5 ab4 eb5 ab4 c5 eb5 ab5 eb5 c5 ab4",
  H: "eb5 ab4 c5 f5 ab5 f5 c5 ab4 f5 ab4 c5 ~ ab5 f5 c5 ab4, ~@11 f5@2 ~@3",
  I: "eb5 g4 bb4 eb5 g5 eb5 bb4 g4 eb5 g4 bb4 ~ g5 eb5 bb4 g4, ~@11 eb5@2 ~@3",
  J: "eb5 ab4 c5 f5 ab5 f5 c5 ab4 f5 ab4 c5 f5 ab5 f5 c5 ab4",
  K: "eb5 g4 c5 eb5 g5 eb5 c5 g4 eb5 g4 c5 eb5 g5 eb5 c5 g4",
  L: "eb5 g4 c5 eb5 g5 eb5 c5 g4 eb5 g4 c5 eb5 [f4,bb4,d5,f5]@4", // Bb
  M: "~@2 [g4,c5,eb5]!2 ~@2 [g4,c5,eb5]!2 ~@2 [ab4,c5,f5]!2 ~@2 [g4,c5,eb5]!2", // Cm Fm Cm
  N: "~@2 [f4,bb4,d5]!2 ~@2 [f4,bb4,d5]!2 ~@2 [g4,bb4,eb5]!2 ~@2 [f4,bb4,d5]!2", // Bb Eb Bb
  O: "~@2 [eb4,ab4,c5]!2 ~@2 [eb4,ab4,c5]!2 ~@2 [f4,ab4,d5]!2 ~@2 [eb4,ab4,c5]!2", // Ab Ddim Ab
  P: "~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4]!2 ~@2 [eb4,g4,c5]!2 ~@2 [f4,ab4,d5]!2", // G Cm Ddim
  Q: "~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4]!2 [eb5,g5]@2 [eb5,g5]@2 [f5,ab5]@2 [g5,bb5] [eb5,g5]", // G Eb Fm Gm Eb
})).s("gm_synth_strings_1").gain(0.4).pan(0.8)

// bass · slap bass 2 · "Bass"
const bass = note(`<
  A B A C D E F G F H I J K L F M N O P Q R S T U T V T B T W X F M N O P Q R S T U T V T B T W X Y Z AA AB Y AC AD AE T
  AF T C AG AF T AH T AF T C AG AF T ~
>`.pickRestart({
  A: "eb2@2 ~ eb2 bb1 ~@3", B: "c2@3 c2 ~@4 ab1@4 ~@2 bb1@2", C: "c2@3 c2 ~@4 ab1@4 bb1@4", D: "c2@2 ~ c2 g1@2 ~ g1",
  E: "c2@3 c2 ~@2 c2@2 ~@2 bb1@2 bb1@4", F: "eb2@3 eb2 ~@8 eb2@2 g2@2", G: "ab2@3 ab2 ~@8 bb2@2 bb2@2",
  H: "ab2@3 ab2 ~@8 ab2@2 g2@2", I: "f2@3 f2 ~@8 ab1@2 bb1@2", J: "c2@3 c2 ~@2 bb1@2 c2@2 ~@4 c2@2",
  K: "f1@3 f1 ~@2 f1@2 f1@4 ~@2 bb1@2", L: "c2@3 c2 ~@2 c2@2 bb1@4 bb1@4", M: "ab2@3 ab2 ~@6 bb2@4 bb2@2",
  N: "eb2@3 eb2 ~@6 eb2@2 f2@2 g2@2", O: "ab2@3 ab2 ~@2 ab2@2 ab2@4 ab2@2 g2@2", P: "f2@3 f2 ~@8 ab2@2 bb2@2",
  Q: "c3@3 c3 ~@2 c3@2 ~@6 c2@2", R: "f2@3 f2 ~@2 f2@2 ~@6 g2@2", S: "c2@3 c2 ~@2 c2@2 bb1@4 ~@2 bb1@2",
  T: "eb2@2 ~ eb2 bb1@2 ~ bb1", U: "c2@2 ~ c2 ab1@2 bb1@2", V: "c2@2 ~ c2 ab1@2 ab1@2", W: "c2@3 c2 ~@10 bb1@2",
  X: "c2@3 c2 ~@4 c2@2 c2@2 bb1@4", Y: "c2@2 ~ c2 c2@2 ~@2", Z: "bb1@2 ~ bb1 bb1@2 ~@2", AA: "ab1@2 ~ ab1 ab1@2 ~@2",
  AB: "g1@2 ~ g1 g1@2 ~@2", AC: "bb1@3 bb1 bb1@2 ~@2", AD: "ab1@3 ab1 ab1@2 ~@2", AE: "g1@2 ~ g1 bb1@2 bb1@2",
  AF: "c2@2 ~ c2 ab1@2 ~ bb1", AG: "c2@2 ~ eb2 bb1@2 ~ bb1", AH: "c2@3 c2 ~@2 c2@2 ab1@4 bb1@4",
})).s("gm_slap_bass_2").gain(0.71).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A@3 B A B A B A B A B A B A@3 B A B A B A B A B A@2 B A B A@3 B A B A B A B C B D@8 B A B A B A B A B A B A B
  A B A E
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!3 ~@2", C: "~@3 x!3 ~@2", D: "x ~@5 x ~ x ~ x ~@2 x ~@2", E: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  A@5 B A@3 C A C A B A@5 B A@3 C A C A B A@2 B A@5 B A@3 C A C A C A@2 C D@4 E D A@3 C A C A B A C A C A B A C A ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@7 x ~@2 x", D: "~@12 x ~@2 x", E: "~@4 x ~@9 x!2",
})).gain(0.5)

// drums · clap
const clap = s("cp").struct("<A@5 B A@7 B A@5 B A@7 B A@8 B A@7 B A@3 ~@7 C A@5 B A@5 B A@3 ~>".pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~", C: "~@7 x",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@44 A ~@3 B@2 C@2 D C E ~@17>".pickRestart({
  A: "~@7 x", B: "~@2 x ~@4 x", C: "~ x ~@2", D: "~@3 x", E: "~@14 x!2",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A@5 B C A@2 D A D A E A@5 B C A@2 D A D A E A@2 F A@5 B C A@2 D A D A E G A H ~@7 I A D A D A E A D A D A E A D A J
>`.pickRestart({
  A: "x!16", B: "x!12 ~@4", C: "~@2 x!14", D: "x!12 ~@2 x!2", E: "x!11 ~@2 x ~ x", F: "x!12 ~ x ~ x", G: "~ x!15",
  H: "x!14 ~@2", I: "~@13 x!3", J: "x",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@5 A ~@7 A ~@5 A ~@7 A ~@8 A ~@7 A ~@2 B ~@2 B ~@2 B ~ C ~@5 A ~@5 A ~@4
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@7 x", C: "~@15 x",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@30 [~@13 x ~@2] ~@20 [~@7 x] ~@20>").gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@3 A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~@2 A ~@5 A ~ A ~ A ~ A ~ A ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct("<~@14 A ~@13 A ~@19 B@7 C ~@6 A ~@5 A ~@3>".pickRestart({
  A: "x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~@14 A@7 B A@15 ~@2 A@6 C A@2 ~@8 A@15 ~>".pickRestart({
  A: "~ x ~@2", B: "~@2 x ~ x!2 ~@2", C: "~ x!2 ~@5",
})).gain(0.5)

stack(synth_strings_1, bass, kick, snare, clap, low_tom, hihat, mid_tom, high_tom, crash, ride, tambourine)

More by Amy Grant