Strudelify

You Still Believe in Me

The Beach Boys

KeyB majorTempo89 bpm
0:00/0:00
// You Still Believe in Me — The Beach Boys
// 89 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 13 "Harpsicho" harpsichord (copy of ch 2 "Harpsicho" harpsichord); ch 8 "Guitar 1" acoustic guitar steel (copy of ch 7 "Piano" piano); ch 9 "Piano 2" piano (copy of ch 7 "Piano" piano)
// note: Full arrangement: all 60 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(89/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 · acoustic bass · "Bass"
const bass = note(`<
  ~@5 A B@3 C D E F G H I J K L M A B@3 C D E F G H I J K L M@2 A B@3 A B@3 A N@3 O P@3 Q@6 R ~
>`.pickRestart({
  A: "b1@11 ~ b1@4 c#2@8 f#1@7 ~", B: "b1@9 ~@3 b1@4 c#2@8 f#1@8", C: "b1@9 ~@3 b1@4 c#2@7 ~ f#1@8",
  D: "b1@9 ~@3 b1@4 c#2@8 f#1@7 ~", E: "e1@11 ~ e1@4 g#1@7 ~ f#1@8", F: "e1@8 ~@4 e1@4 g#1@7 ~ f#1@7 ~",
  G: "g#1@10 ~@2 g#1@3 ~ g#1@11 ~ g#1@3 ~", H: "g#1@11 ~ g#1@3 ~ g#1@7 ~ g#1@7 ~",
  I: "c#2@10 ~@2 c#2@2 ~@2 c#2@10 ~@2 c#2 ~@3", J: "c#2@5 ~ c#2 ~ c#2@3 ~ c#2@3 ~",
  K: "b1@11 ~ b1@3 ~ b1@10 ~@2 b1@3 ~", L: "g#1@10 ~@2 g#1@3 ~ f#1@10 ~@2 f#1@3 ~",
  M: "g1@11 ~ g1@2 ~@2 g1@11 ~ g1@2 ~@2",
  N: "[b1@10 ~@2 b1@4 ~ c#2@9 f#1@9 b1@9 ~@4 b1@4 c#2@8 f#1@8 b1@10 ~@2 b1@3 ~ b1@7 ~ b1@4]/3",
  O: "~@4 b1@10 ~@2 b1@3 ~ b1@7 ~ b1@4",
  P: "[~@4 b1@11 ~@2 b1@4 c#2@8 f#1@8 b1@10 ~@2 b1@4 c#2@8 f#1@8 b1@9 ~@3 b1@4 c#2@8 f#1@3]/3",
  Q: "[~@6 b1@9 ~@3 b1@4 c#2@8 f#1@8 b1@11 ~ b1@4 c#2@8 f#1@8 b1@10 ~@2 b1@4 c#2@8 ~ f#1@8 b1@9 ~@3 b1@4 c#2@8 f#1@8 b1@9 ~@3 b1@4 c#2@8 f#1@8 b1@11 ~@2 b1@4 c#2@8]/6",
  R: "f#1@4 b1@5 ~ b1@2 c#2@4",
})).s("gm_acoustic_bass").gain(0.6)

// chords · harpsichord · "Harpsicho"
const harpsichord = note(`<
  ~@5 A@6 B@2 C@2 D@2 E F G A@6 B@2 C@2 D@2 E F G@2 A@9 H@2 I ~ J K@2 L@2 M@4 N ~
>`.pickRestart({
  A: "[b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [c#5,e5,f#5] ~ [c#5,e5,f#5] ~ [a#4,c#5,e5,f#5] ~ [a#4,c#5,e5,f#5] ~", // B F#7
  B: "[b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,f#5,a5] ~ [b4,f#5,a5] ~ [b4,d#5,f#5,a5] ~ [b4,d#5,f#5,a5] ~", // E B7
  C: "[d#5,g#5,c6] c5 [d#5,g#5,c6] c5 [d#5,g#5,c6] c5 [d#5,g#5,c6] c5, c5 ~@3 c5 ~@3 c5 ~@3 c5 ~@3", // G#
  D: "[e5,g#5,b5] c#5 [e5,g#5,b5] c#5 [e5,g#5,b5] c#5 [e5,g#5,b5] c#5", // E
  E: "[d#5,f#5] b4 [d#5,f#5] b4 [d#5,f#5] b4 [d#5,f#5] b4", F: "[c#5,e5] g#4 [c#5,e5] g#4 [b4,d#5] f#4 [b4,d#5] f#4",
  G: "[b4,d5] g4 [b4,d5] g4 [b4,d5] g4 [b4,d5] g4", // Bm
  H: "[[b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@3 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@3 [a#4,c#5,e5,f#5]@2 ~@3 [a#4,c#5,e5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@3 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2]/2", // B F#7 B F#7
  I: "[a#4,c#5,e5,f#5] ~@15", // F#7
  J: "~@4 [b4,d#5,f#5]@2 ~@3 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~", // B F#7
  K: "~ [a#4,c#5,e5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~", // F#7 B F#7
  L: "~ [a#4,c#5,e5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [c#5,e5,f#5] ~ [c#5,e5,f#5] ~ [a#4,c#5,e5,f#5]", // F#7 B F#7
  M: "[~@2 [a#4,c#5,e5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@3 [c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2 [a#4,c#5,e5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5]@2 ~@3 [b4,d#5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2 [c#5,e5,f#5]@2 ~@2]/4", // F#7 B F#7 B F#7 B F#7 B …
  N: "[a#4,c#5,e5,f#5] ~ [a#4,c#5,e5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [c#5,e5,f#5] ~@3", // F#7 B F#7
})).s("gm_harpsichord").gain(0.19)

// other · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@5 A B C A B C D E F ~@6 A B C A B C D G H ~@7 A B C A@2 B C A@2 I@2 J ~ K L M N O P@4 Q ~
>`.pickRestart({
  A: "f#4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e5@3 ~ d#5@3 ~ c#5@3 ~ b4@3 ~",
  B: "b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@2 ~@2 g#5@3 ~ f#5@3 ~ e5@3 ~ d#5@3 ~",
  C: "b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@4 b5@3 ~ a#5@3 ~ g#5@3 ~ f#5@3 ~",
  D: "b4@3 ~ e5@3 ~ f#5@3 ~ e5@4 ~@4 f#5@3 ~@5 a5@3 ~, ~@17 a5@7 b5@7 ~",
  E: "b4@3 ~ e5@3 ~ f#5@3 ~ e5@4 ~@4 f#5@4 ~@4 a5@4, ~@16 a5@7 ~ b5@7 ~", F: "g#5@3 ~@5",
  G: "b4@3 ~ e5@3 ~ f#5@3 ~ e5@4 ~@4 f#5@4 ~@4 a5@3 ~, ~@16 a5@7 ~ b5@7 ~", H: "g#5 ~",
  I: "[b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@3 ~@2 g#5@3 ~ f#5@3 ~@2 e5@3 ~@2 d#5@4 b4@3 ~ d#5@3 ~ f#5@3 ~@2 d#5@4 b5@3 ~ a#5@3 ~ g#5@3 ~]/2",
  J: "f#5@3 ~@29", K: "~@4 f#4@3 ~@2 b4@3 ~ c#5@3 ~ b4@3 ~ e5@3 ~ d#5@3 ~ c#5@3",
  L: "~ b4@3 ~ b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@2 ~@2 g#5@3 ~ f#5@3 ~ e5@3",
  M: "~ d#5@3 ~ b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@4 b5@3 ~ a#5@3 ~ g#5@3",
  N: "~@2 f#5@3 ~ f#4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e5@3 ~ d#5@3 ~ c#5@2",
  O: "~@2 b4@3 ~ f#4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e5@3 ~ d#5@3 ~ c#5@2",
  P: "[~@2 b4@3 ~ b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@2 ~@2 g#5@3 ~@2 f#5@3 ~ e5@3 ~ d#5@3 ~ b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@4 b5@3 ~ a#5@3 ~ g#5@3 ~ f#5@3 ~ f#4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e5@3 ~ d#5@3 ~ c#5@3 ~ b4@3 ~ f#4@3 ~ b4@3 ~ c#5@3 ~@2 b4@3 ~ e5@3 ~ d#5@3 ~]/4",
  Q: "c#5@3 ~ b4@3 ~ b4@3 ~ d#5@3 ~ f#5@3 ~ d#5@2 ~@2 g#5@3 ~@5",
})).s("gm_orchestral_harp").gain(0.36)

// chords · oboe
const oboe = note("<~@13 A@2 B@2 C D E ~@8 A@2 B@2 C D E ~@5 F G@2 H I J K@3 L@2 M@2 N@7>".pickRestart({
  A: "[g#3,d#4]/2", B: "[b3,e4]/2", C: "b3", D: "g#3 f#3", E: "g3", F: "[b3,d#4,f#4] [b3,e4,f#4]",
  G: "[b3,d#4,f#4]@16 [b3,e4,f#4]@15 ~", H: "[b3,d#4,f#4]@16 [b3,f#4]@13 ~@3, ~ e4",
  I: "[b3,d#4,f#4]@15 ~ [b3,e4,f#4]@15 ~", J: "[b3,d#4,f#4]@16 ~ [b3,e4,f#4]@15",
  K: "[~@3 [b3,d#4,f#4]@16 ~ [b3,e4,f#4]@16 b2@60]/3", // B Bsus4
  L: "[~@4 [b3,d#4,f#4]@16 ~ [b3,e4,f#4]@16 [b3,d#4,f#4]@16 [b3,e4,f#4]@11]/2", // B Bsus4 B Bsus4
  M: "[~@5 [b3,d#4,f#4]@16 [b3,e4,f#4]@16 ~ [b3,d#4,f#4]@16 [b3,e4,f#4]@10]/2", // B Bsus4 B Bsus4
  N: "[~@6 [b3,d#4,f#4]@16 [b3,e4,f#4]@16 [b3,d#4,f#4]@16 [b3,e4,f#4]@15 ~@2 [b3,d#4,f#4]@16 [b3,e4,f#4]@16 [b3,d#4,f#4]@16 [b3,f#4]@13 ~@3 [b3,d#4,f#4]@16 ~ [b3,e4,f#4]@16 [b3,d#4,f#4]@16 [b3,e4,f#4]@15 ~@25, ~@119 e4@16 ~@89]/7", // B Bsus4 B Bsus4 B Bsus4 B B5 …
})).s("gm_oboe").gain(0.33)

// other · flute
const flute = note("<A B@3 C ~@8 D@2 E@2 F G H ~@8 D@2 E@2 F G H ~@9 I J@3 ~ K@4 L@4 M N ~>".pickRestart({
  A: "~@23 b3@9", B: "[b4@8 ~ b4@4 a#4@5 g#4@8 f#4@9 b3@8 g#4@5 f#4@5 e4@7 d#4@9 ~ f#3@8 e4@4 ~ d#4@4 c#4@9]/3",
  C: "b3 ~", D: "[~ [g#3,d#4]@63]/2", E: "[[b3,e4]@15 ~]/2", F: "[b3,f#4,b4,d#5], d#4 ~@31",
  G: "[g#3,c#4,g#4,c#5] [f#3,d#4,f#4,b4]", H: "g3", I: "~@8 b4@7 ~@2 b4@3 a#4@4 g#4@8",
  J: "[f#4@8 b3@9 g#4@4 f#4@5 e4@9 d#4@8 f#3@8 e4@4 d#4@4 c#4@8 b3@24 ~@5]/3",
  K: "[~@13 b4@7 ~ b4@4 a#4@4 g#4@8 f#4@8 b3@8 g#4@4 f#4@4 e4@8 d#4@8 f#3@8 e4@4 d#4@4 c#4@8 b3@24 ~@3]/4",
  L: "[~@14 b4@7 ~@2 b4@3 a#4@4 ~ g#4@7 f#4@8 b3@8 g#4@4 f#4@4 e4@9 d#4@8 f#3@7 e4@4 d#4@4 c#4@8 ~ b3@24 ~]/4",
  M: "~@16 b4@7 ~ b4@4 a#4@4", N: "g#4@2 f#4@2 b3@2 g#4 ~",
})).s("gm_flute").gain(0.51)

// chords · piano
const piano = note("<A@5 ~@55>".pickRestart({
  A: "[~@32 b4@9 ~@87 b3@32, ~@24 b3@35 f#4@17 g#4@39 d#4@45, ~@41 b4@39 f#4@39 c#4@41, ~@46 a#4@39 e4@8 d#4@9 f#3@58, ~@50 g#4@17 b3@44 e4@49]/5",
})).s("gm_piano").gain(0.56)

// other · timpani
const timpani = note("<~@20 A B C D C E F@2 ~@15 G E H I ~@2 J K@2 L@3 M@3 N ~>".pickRestart({
  A: "b2@9 ~@23", B: "b2@5 ~@11", C: "b2@15 ~@17", D: "b2@7 ~@9", E: "b2 ~", F: "e2 ~", G: "~@28 b2 ~ b2 ~",
  H: "b2@5 ~@3", I: "~@3 b2@17 ~@12", J: "~@2 b2@13 ~", K: "~@5 b2@16 ~@11", L: "~@3 b2@8 ~@5", M: "~@7 b2@16 ~@9",
  N: "~ b2@2 ~",
})).s("gm_timpani").gain(0.52)

// other · tenor sax · "Sax"
const tenor_sax = note("<~@51 A B C D E ~@2 F ~>".pickRestart({
  A: "~@11 c#5 e5 c#5 ~@2", B: "~@30 c#5 ~", C: "e5 ~ c#5@2 ~@28", D: "~@15 c#5", E: "~@2 c#5@3 ~@27, ~ e5@2 ~@29",
  F: "c#5@2 e5 ~ c#5@2 ~@26",
})).s("gm_tenor_sax").gain(0.57)

// drums · triangle
const triangle = s("triangles:35").struct("<~@5 A@40 B C ~@2 D@3 E@2 F@3 ~ G ~>".pickRestart({
  A: "~@3 x", B: "~@13 x ~@2", C: "~@7 x", D: "~@29 x ~@2", E: "~@15 x", F: "~@31 x", G: "x",
})).gain(3.46)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@32 [~@12 x!3 ~]!3 ~@25>").gain(0.74)

stack(bass, harpsichord, orchestral_harp, oboe, flute, piano, timpani, tenor_sax, triangle, jingle_bells)

More by The Beach Boys