Strudelify

Whom Shall I Fear Instrumental

Chris Tomlin

KeyC majorTempo74 bpm
0:00/0:00
// Whom Shall I Fear Instrumental — Chris Tomlin
// 74 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "Electric Guitar" electric guitar clean (copy of ch 4 "Classical Guitar" acoustic guitar nylon); ch 5 "Acoustic Guitar" acoustic guitar nylon (copy of ch 7 "Alto Saxophone" alto sax)
// note: Transcription provider: pdmx. https://musescore.com/score/3736746; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(74/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.

// chords · piano
const piano = note(`<
  A@2 B@4 C@2 D E F@2 C@2 D E G@2 H@2 G@2 H@2 A@2 F@2 C@2 D E I J G@2 H@2 G@2 H@2 K L M N O P Q R S L M N O P Q R S T@2
  G@2 H@2 G@2 H@2 G@2 H@2 G@2 U@3
>`.pickRestart({
  A: "[c4@2 f4 c4 g4@2 f4 c4 c4@2 f4 c4 g4@2 f4 c4 c4@2 f4 c4 g4@2 g4@2 d5@2 d5@2 g4@2 g4@2, f2@23 ~ [g2,g3]@8, [c3,g3]@15 ~ [c3,g3]@8 ~@8]/2", // G C5
  B: "[c4@2 f4 c4 g4@2 f4 c4 c4@2 f4 c4 g4@2 f4 c4 c4@2 f4 c4 g4@2 g4@2 b3 c4@2 b3 b3@2 a3 ~ [c4,e4]@6 [c4,e4]@2 [c4,e4]@8 [c4,e4]@6 [c4,e4]@2 [g3,c4,e4]@8, f2@23 ~ [g2,g3]@8 c3@15 ~ c3@15 ~, [c3,g3]@15 ~ [c3,g3]@8 ~@7 g3@9 g3@15 ~@9]/4", // C G C5
  C: "[c4,f4]@3 [c4,f4] [g3,c4,f4]@4, [f2,c3]@15 ~, g3 ~", D: "[c4,e4,a4]!2, [a2,e3,g3]@15 ~",
  E: "[c4,f4,g4]!2, [f2,c3,g3]@15 ~", // Csus4 Fsus2
  F: "[[c4,e4]@3 [c4,e4] [c4,e4]@4 [c4,e4]@3 [c4,e4] [g3,c4,e4]@4, c3@15 ~ c3@15 ~, g3@8 g3@15 ~@9]/2", // C
  G: "[a2,a3,c4,e4,g4]@2 [g2,g3,b3,d4,g4] [c3,g3,c4,e4]", // Am7 G C
  H: "[[a2,a3,c4,e4,g4]@2 [c3,g3,f4,g4]@2 [c3,g3,f4,g4]@2 [g2,g3,b3,d4,g4] [c3,g3,c4,e4], ~@8 [f2,c4]@15 ~@9]/2", // Am7 Csus4 G C F5
  I: "[a2,e3,g3,c4,e4,a4] [f2,c3,g3,c4,f4,g4]", J: "[d4,e4,g4] [b3,d4,g4], [g2,d3,g3]@15 ~",
  K: "[f2,c3,g3,c4,f4,g4]!6 [f2,c3,g3,c4,f4,g4]@2", L: "[f2,c3,g3,c4,f4,g4] [c3,c4,e4,g4,c5]",
  M: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2, [g2,g3]@15 ~", // G
  N: "[e4,g4,c5]@3 [e4,g4,c5] [e4,g4,c5]@4, [c3,c4]@15 ~", O: "[f4,g4,c5]@3 [f4,g4,c5] [f4,a4,c5]@4, [f2,c3,g3]@15 ~",
  P: "[f2,c3,g3,f4,g4,c5] [c3,c4,e4,g4,c5]", Q: "[a2,e3,g3,e4,g4,c5]@3 [g2,g3,b3,d4,g4] [g2,g3,b3,d4,g4]@4",
  R: "[c4,f4,g4]@3 [c4,f4,g4] [c4,f4,g4]@4, [f2,c3,g3]@15 ~", S: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@4, [g2,g3]@15 ~",
  T: "[[c4,e4,a4]@6 [b3,d4,g4]@2 [g2,g3,b3,d4,g4]@23 ~, [a2,e3,g3] ~@3]/2", // Am G A7
  U: "[[a2,a3,c4,e4,g4]@8 [c3,g3,f4,g4]@8 [c3,g3,f4,g4]@8 [g2,g3,b3,d4,g4]@4 g3@4 [g4,c5]@11 ~ [c4,e4,g4]@3 ~, ~@8 [f2,c4]@15 ~@5 c3@19 ~, ~@7 [c4,e4]@4 ~]/3", // Am7 Csus4 G C5 C F5 C
})).s("gm_piano").gain(0.25)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  ~@8 A B C@2 D@2 E B F@2 G H F@2 G H ~@6 I J G K F@2 G H F@2 G H L M N O D M P J N M N O J M P J N Q@2 F@2 G H F@2 G H
  F@2 G H F@2 G R@2
>`.pickRestart({
  A: "~ a2", B: "f2!2", C: "c3@3 c3 c3@4", D: "f2@3 f2 f2@4", E: "a2!2", F: "a2@3 a2 g2@2 c3@2", G: "a2@3 a2 f2@2 f2@2",
  H: "f2@3 f2 g2@2 c3@2", I: "~@3 a2 a2@2 a2@2", J: "f2@3 f2 f2@2 f2@2", K: "g2@3 g2 g2@4", L: "f2!6 f2@2",
  M: "f2@3 f2 c3@2 c3@2", N: "g2@3 g2 g2@2 g2@2", O: "c3@3 c3 c3@2 c3@2", P: "a2@3 g2 g2@2 g2@2",
  Q: "[a2@3 a2 g2@2 ~@2 g3@8, ~@3 g2@5]/2", R: "[f2@3 f2 g2@2 ~@2 c4@8, ~@3 c3@5]/2",
})).s("gm_electric_bass_finger").gain(0.32)

// bass · electric bass finger · "Electric Bass" · soft notes
const bass_soft = note("<A@4 B@2 C@2 D ~@15 A@2 E@2 F@2 G ~@47>".pickRestart({
  A: "[f2@3 f2 f2@7 f2 g2@4]/2", B: "c3@3 c3 c3@4", C: "f2@3 f2 f2@4", D: "a2 ~", E: "c3@3 c3 c3@2 c3@2",
  F: "f2@3 f2 f2@2 f2@2", G: "a2@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.21)

// chords · acoustic guitar nylon · "Classical Guitar"
const acoustic_guitar_nylon = note(`<
  A B A C@4 D E F G@2 H@2 E F I@2 J@2 I@2 J@2 A K@3 H@2 E F L M I@2 J@2 I@2 J@2 N O P Q R S T U V O P Q R S T U V W@2
  I@2 J@2 I@2 J@2 I@2 J@2 I@2 X@3
>`.pickRestart({
  A: "c4 f4 g4 f4 c4 f4 g4 f4", B: "c4 f4 g4 f4 b3 d4 g4 d4",
  C: "[c4 f4 c4 g3 b3 d4 g4 d4 [c4,e4]@3 [c4,e4] [c4,e4]@4 [c4,e4]@3 [c4,e4] [c4,e4]@4 [c4,f4]@3 [c4,f4] [g3,c4,f4]@4, ~@7 g3@5 g3@8 g3@8 ~@4]/4", // C F5 Csus4
  D: "[c4,f4]@3 [c4,f4] [g3,c4,f4]@4, g3 ~", E: "[c4,e4,a4]!2", F: "[c4,f4,g4]!2",
  G: "[[c4,e4]@3 [c4,e4] [c4,e4]@4 [c4,e4]@3 [c4,e4] [g3,c4,e4]@4, g3 g3@2 ~]/2", // C
  H: "[[c4,f4]@3 [c4,f4] [c4,f4]@4 [c4,f4]@3 [c4,f4] [g3,c4,f4]@4, g3 g3@2 ~]/2", // F5 Csus4
  I: "[c4,e4,g4]@2 [b3,d4,g4] [g3,c4,e4]", J: "[[c4,e4,g4]@2 [f4,g4]@2 [f4,g4]@2 [b3,d4,g4] [g3,c4,e4], ~ c4@2 ~]/2",
  K: "[c4 f4 c4 g3 b3 d4 g4 d4 [c4,e4]@3 [c4,e4] [c4,e4]@4 [c4,e4]@3 [c4,e4] [g3,c4,e4]@4, ~@7 g3@5 g3@8 ~@4]/3", // C
  L: "[c4,e4,a4] [c4,f4,g4]", M: "[d4,e4,g4] [b3,d4,g4]", N: "[c4,f4,g4]!6 [c4,f4,g4]@2", O: "[c4,f4,g4] [e4,g4,c5]",
  P: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2", Q: "[e4,g4,c5]@3 [e4,g4,c5] [e4,g4,c5]@4",
  R: "[f4,g4,c5]@3 [f4,g4,c5] [f4,a4,c5]@4", S: "[f4,g4,c5] [e4,g4,c5]", T: "[e4,g4,c5]@3 [b3,d4,g4] [b3,d4,g4]@4",
  U: "[c4,f4,g4]@3 [c4,f4,g4] [c4,f4,g4]@4", V: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@4",
  W: "[[c4,e4,a4]@3 [b3,d4,g4] [b3,d4,g4]@12]/2", // Am G
  X: "[[c4,e4,g4]@8 [f4,g4]@8 [f4,g4]@8 [b3,d4,g4]@4 g3@4 [g4,c5]@12 [c4,e4,g4]@3 ~, ~@2 c4@4 ~ [c4,e4]@4 ~]/3", // C Fsus2 G C5 C
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@8 A@2 ~@4 B@2 C D E F G H I J@2 ~ K@2 L M B@2 N@2 C D E F G H I O@2 P@2 Q@2 R S T U V@2 W@2 X Y Z AA AB@2 C D E F G
  H I AC AD H AE AF G H AE AG@2
>`.pickRestart({
  A: "[~@8 e4@3 a4@3 g4@4 f4@10 ~@4]/2", B: "[~@8 c5@3 e5@3 d5@4 c5@10 ~@4]/2", C: "~ c5!2 d5!2 e5!2 c5",
  D: "~ e5!2 g5!3 g5@2", E: "~@2 g5@2 g5@2 e5@2 a5@2 g5@2 e5!2 e5@2", F: "~@2 c5@2 c5@2 g5@2 f5 e5 e5@2 e5@4",
  G: "~ e4!2 g4!5", H: "~ a4!2 b4!2 c5 c5@2", I: "~@2 c5@2 c5@2 a4@2 d5@2 c5@2 a4 g4 g4@2",
  J: "[~@2 f4@2 f4@2 c5@2 b4 a4 a4@2 a4@16 ~@4]/2", K: "~ e4!4 c4 c4@2", L: "~@2 e4@2 e4@2 e4@2 e4 c4 c4@2 c4@4",
  M: "~@2 c5@2 c5@2 c5@2 g4@2 g4 f4 g4@4", N: "[~@8 a4@3 c5@3 c5@4 b4@14]/2",
  O: "[~@2 f4@2 f4@2 c5@2 b4 a4 a4@2 a4@12 ~@6 g4@2]/2", P: "[c5@2 c5@2 f5@2 c5@2 c5@3 c5@3 b4@4 b4@8 ~@6]/2",
  Q: "[~@2 c5@2 c5@2 g4 c5@3 a4@2 g4@2 a4@4 a4@10 ~@4]/2", R: "~@2 c5@2 c5@2 c5 c5@5 g4@2 c5@2",
  S: "c5@3 b4@3 b4@2 ~@4 g4@2 g4@2", T: "c5@3 c5 ~@2 f4!2", U: "g4@3 g4@3 ~ e5",
  V: "[a5@2 a5@2 a5@2 a5@2 a5@3 g5@3 g5@4 g5@8 ~@6]/2", W: "[~@2 g5@2 g5@2 e5 a5@3 g5@2 f5@2 e5@4 f5@10 ~@4]/2",
  X: "~@2 a5@2 a5@2 a5 a5@5 e5@2 g5@2", Y: "g5@3 g5@3 g5@2 ~@4 c5@2 d5@2", Z: "e5@3 f5 ~@2 c5 d5",
  AA: "e5@3 f5@3 c5 d5", AB: "[e5@3 f5@9 ~@4]/2", AC: "~@2 f4@2 f4@2 c5@2 b4 a4 a4@2 a4@4", AD: "~ e4!2 g4!4 e4",
  AE: "~@2 c5@2 c5@2 g4@2 d5@2 c5@2 a4 g4 g4@2", AF: "~@2 f4@2 f4@2 c5@2 a4 g4 g4@2 g4@4",
  AG: "[~@2 c5@2 c5@2 g5@2 f5 e5 e5@2 e5@20]/2",
})).s("gm_clarinet").gain(0.48).pan(0.6)

// other · flute
const flute = note(`<
  ~@8 A@2 ~@4 B@2 C D E F G H I J@2 ~ K@2 L M B@2 N@2 C D E F G H I O@2 P@2 Q@2 R S T U P@2 Q@2 V@2 T W X@2 Y Z AA AB Y
  Z AA AB Y Z AA AB Y Z AA AC@2
>`.pickRestart({
  A: "[~@8 e4@3 a4@3 g4@4 f4@9 ~@5]/2", B: "[~@8 c5@3 e5@3 d5@4 c5@9 ~@5]/2", C: "~ c5!2 d5!2 e5!2 c5",
  D: "~ e5!2 g5!3 g5@2", E: "~@2 g5@2 g5@2 e5@2 a5@2 g5@2 e5!2 e5@2", F: "~@2 c5@2 c5@2 g5@2 f5 e5 e5@2 e5@4",
  G: "~ e4!2 g4!5", H: "~ a4!2 b4!2 c5 c5@2", I: "~@2 c5@2 c5@2 a4@2 d5@2 c5@2 a4 g4 g4@2",
  J: "[~@2 f4@2 f4@2 c5@2 b4 a4 a4@2 a4@15 ~@5]/2", K: "~ e4!4 c4 c4@2", L: "~@2 e4@2 e4@2 e4@2 e4 c4 c4@2 c4@4",
  M: "~@2 c5@2 c5@2 c5@2 g4@2 g4 f4 g4@4", N: "[~@8 a4@3 c5@3 c5@4 b4@13 ~]/2",
  O: "[~@2 f4@2 f4@2 c5@2 b4 a4 a4@2 a4@11 ~@7 g4@2]/2", P: "[f5@2 f5@2 f5@2 f5@2 f5@3 e5@3 d5@4 d5@8 ~@6]/2",
  Q: "[~@2 e5@2 e5@2 c5 f5@3 e5@2 d5@2 c5@4 c5@9 ~@5]/2", R: "~@2 f5@2 f5@2 f5 f5@5 c5@2 e5@2",
  S: "e5@3 d5@3 d5@2 ~@4 a4@2 b4@2", T: "c5@3 d5 ~@2 a4 b4", U: "c5@3 d5@3 ~ c5",
  V: "[~@2 f5@2 f5@2 f5 f5@5 c5@2 e5@5 d5@3 d5@2 ~@4 a4@2 b4@2]/2", W: "c5@3 d5@3 a4 b4", X: "[c5@6 d5@17 ~@9]/2",
  Y: "~ a4!2 b4!2 c5!2 g4", Z: "~ c5!2 d5!2 e5 e5@2", AA: "~@2 e5@2 e5@2 c5@2 f5@2 e5@2 d5 c5 c5@2",
  AB: "~@2 a4@2 a4@2 e5@2 d5 c5 c5@2 c5@4", AC: "[~@2 a4@2 a4@2 e5@2 d5 c5 c5@2 c5@19 ~]/2",
})).s("gm_flute").gain(0.3)

// other · violin
const violin = note(`<
  ~@4 A@2 B C D@2 A@2 B C D@2 E F G H E F G I@2 ~ A@2 B C D@2 J@2 E F G H E F G K@2 L@2 M@2 N O P Q R@2 S@2 T U V W X@2
  Y Z AA AB AC AD AE AF AG AD AH AI AC AD AH AJ@2
>`.pickRestart({
  A: "~ g4!4 e4 e4@2", B: "~@2 g4@2 g4@2 g4@2 g4 e4 e4@2 e4@4", C: "~@2 g4@2 g4@2 g4@2 a4@2 e4 d4 e4@4",
  D: "[~@8 a4@3 c5@3 b4@4 a4@10 ~@4]/2", E: "~ a4!2 b4!2 c5!2 g4", F: "~ c5!2 d5!2 e5 e5@2",
  G: "~@2 e5@2 e5@2 c5@2 f5@2 e5@2 d5 c5 c5@2", H: "~@2 a4@2 a4@2 e5@2 d5 c5 c5@2 c5@4",
  I: "[~@2 a4@2 a4@2 e5@2 d5 c5 c5@2 c5@16 ~@4]/2", J: "[~@8 a4@3 f5@3 e5@4 d5@14]/2",
  K: "[~@2 a4@2 a4@2 e5@2 d5 c5 c5@2 c5@12 ~@6 c5@2]/2", L: "[c5@2 c5@2 f5@2 c5@2 c5@3 c5@3 b4@4 b4@8 ~@6]/2",
  M: "[~@2 c5@2 c5@2 g4 c5@3 a4@2 g4@2 a4@4 a4@10 ~@4]/2", N: "~@2 c5@2 c5@2 c5 c5@5 g4@2 c5@2",
  O: "c5@3 b4@3 b4@2 ~@4 g4@2 g4@2", P: "c5@3 c5 ~@2 f4!2", Q: "g4@3 g4@3 ~ e5",
  R: "[a5@2 a5@2 a5@2 a5@2 a5@3 g5@3 g5@4 g5@8 ~@6]/2", S: "[~@2 g5@2 g5@2 e5 a5@3 g5@2 f5@2 e5@4 f5@10 ~@4]/2",
  T: "~@2 a5@2 a5@2 a5 a5@5 e5@2 g5@2", U: "g5@3 g5@3 g5@2 ~@4 c5@2 d5@2", V: "e5@3 f5 ~@2 c5 d5", W: "e5@3 f5@3 c5 d5",
  X: "[e5@3 f5@9 ~@4]/2", Y: "~ c5!2 d5!2 e5!2 c5", Z: "~ e5!2 g5!3 g5@2", AA: "~@2 g5@2 g5@2 e5@2 a5@2 g5@2 e5!2 e5@2",
  AB: "~@2 c5@2 c5@2 g5@2 f5 e5 e5@2 e5@4", AC: "~ e4!2 g4!5", AD: "~ a4!2 b4!2 c5 c5@2",
  AE: "~@2 c5@2 c5@2 a4@2 d5@2 c5@2 a4 g4 g4@2", AF: "~@2 f4@2 f4@2 c5@2 b4 a4 a4@2 a4@4", AG: "~ e4!2 g4!4 e4",
  AH: "~@2 c5@2 c5@2 g4@2 d5@2 c5@2 a4 g4 g4@2", AI: "~@2 f4@2 f4@2 c5@2 a4 g4 g4@2 g4@4",
  AJ: "[~@2 c5@2 c5@2 g5@2 f5 e5 e5@2 e5@20]/2",
})).s("gm_violin").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@10 A@4 ~@2 A@10 B@16 C B@14 A@3 ~@18>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~ x ~", C: "x!6 ~@2",
})).gain(0.24)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<[x ~@2 x!2 ~@3]!8 ~@53 [x ~@2 x!2 ~@3]!16 ~>").gain(0.12)

// drums · rim
const rim = s("rim").struct("<~@10 [~@3 x]!4 ~@2 [~@3 x]!8 ~@37 [~@3 x]!15 [~@12 x!4] ~>").gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~@24
  [~@3 x]!2
  [~@12 x!4]!7
  [~@2 x ~ x ~ x ~ x ~ x ~ x!4]
  [~@12 x!4]!8
  [x ~ x ~ x ~ x ~ x ~ x ~@3 x!2]
  [~@12 x!4]!14
  ~@21
>`).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@33 [~ x!5 ~@2] ~@8 [x!6 ~@2] ~@35>").gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@42 [~@13 x ~@2] ~@35>").gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@42 [~@3 x] ~@35>").gain(0.31)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@5 A ~@9 B ~ A ~@2 A@6 ~@2 A@2 ~ A C ~ A ~@4 A@3 ~@4 A ~@3 D ~@16 E
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@15 x", D: "x!8 ~@8", E: "x!16",
})).gain(0.24)

// drums · ride
const ride = s("rd").struct("<~@10 A@4 B C A@9 D E F E@5 ~ E F E@3 F E@4 F E@5 F E@5 F G@3 C ~@15 H B>".pickRestart({
  A: "x ~@2 x!2 ~ x ~", B: "x!16", C: "~@4 x ~ x!2", D: "x ~@2 x!2 ~@3", E: "x!6 ~@2", F: "~ x!5 ~@2", G: "x!4",
  H: "~@8 x ~@3 x!4",
})).gain(0.2)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<[x ~@2 x!2 ~ x ~]!8 [x!16] [~@4 x ~ x!2] ~@51 [x!4]!15 [x!2 ~@2] ~>").gain(0.12)

stack(
  piano, bass, bass_soft, acoustic_guitar_nylon, clarinet, flute, violin, kick, kick_soft, rim, snare, low_tom, mid_tom,
  high_tom, crash, ride, ride_soft
)