Strudelify

Here Today

The Beach Boys

KeyA majorTempo120 bpm
0:00/0:00
// Here Today — The Beach Boys
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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(`<
  A B C D A B C D E F G H I J K L M N O P Q R Q R Q S T A B C D A B C D E F G H I J K L M N O P Q R Q R Q S T U ~ V ~ U
  ~ V ~ E F G H I J K L M N O P Q R Q R Q S T Q R Q R Q S T Q R Q R Q S T
>`.pickRestart({
  A: "b3 ~ a2 ~ d3 ~ a2 b2", B: "~ e3 ~ b2 a2 ~ d3 ~", C: "a3 ~ a2 ~ e3 ~ a2 b2", D: "~ e3 ~ b2 a2 ~ e3 ~",
  E: "d3 c#3 b2 a2", F: "g#2@3 ~ g#2@4 c#3@3 ~ c#3@3 ~", G: "f#2@3 ~ f#2@3 ~ f#2@3 ~ f#2@3 ~",
  H: "e2@3 ~ e2@3 ~ e2@3 ~ e2 ~ e2@2", I: "d3@3 ~ c#3@4 b2@4 a2@4", J: "g#2@3 ~ g#2@4 c#3@4 c#3@4",
  K: "f#2@3 ~ f#2@3 ~ f#2@3 ~ f#2@4", L: "g#2@4 ~ c#3 ~ g#3, g#3 ~@3", M: "a3@2 ~@3 c#3 ~ a3, a2@15 ~",
  N: "b3@2 ~@3 c#3 ~ b3, b2", O: "c#4@2 ~@3 e3@2 c#4, c#3@7 ~",
  P: "d4 ~ c#4!2 b3!2 a3!2 g#3!2 f#3!2 e3!2 d3!2, d3@7 ~, ~ d4@7 ~@8, ~@3 e2 ~ e2 ~ e2", Q: "a2 g2 f#2 f2",
  R: "e2@3 ~ e2@2 f#2@2 a2@4 b2@4", S: "~@4 g#2@2 ~@2 g#2@2 b2@3 ~ e3@2, e2@3 e2@3 ~@2", T: "~ b2 ~ g#2 e2@2 f#2@2",
  U: "b2 ~@5 a2 b2", V: "a2 ~@5 g#2 a2",
})).s("gm_acoustic_bass").gain(0.56)

// other · electric guitar muted · "Mute Guit"
const electric_guitar_muted = note(`<
  A B C D A B C D E F G H I F G J K L M N O P O P Q R ~ A B C D A B C D E F G H I F G J K L M N O P O P Q R ~ S@2 T@2
  S@2 T@2 ~@8 K L M N O P O P Q R ~ O P O P Q R ~ O P O P Q R ~
>`.pickRestart({
  A: "b3 ~@3 a2 ~@3 d3 ~@3 a2 ~ b2 ~", B: "~@2 e3 ~@3 b2 ~ a2 ~@3 d3 ~@3", C: "a3 ~@3 a2 ~@3 e3 ~@3 a2 ~ b2 ~",
  D: "~@2 e3 ~@3 b2 ~ a2 ~@3 e3 ~@3", E: "d3 ~ d3 ~ c#3 ~ c#3 ~ b2 ~ b2 ~ a2 ~ a2 ~",
  F: "g#2 ~ g#2 ~ g#2 ~ g#2 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~", G: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~",
  H: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", I: "[e2,d3] ~ d3 ~ c#3 ~ c#3 ~ b2 ~ b2 ~ a2 ~ a2 ~",
  J: "g#3 ~@9 c#3 ~@3 g#3 ~", K: "a3 ~@9 c#3 ~@3 a3 ~", L: "b3 ~@9 c#3 ~@3 b3 ~", M: "c#4 ~@9 e3 ~@3 c#4 ~",
  N: "d4!2 ~@14", O: "[a2,a3] ~ [a2,a3] ~ [g2,g3] ~ [g2,g3] ~ [f#2,f#3] ~ [f#2,f#3] ~ [f2,f3] ~ [f2,f3] ~",
  P: "[e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [f#2,f#3] ~ [a2,a3] ~ [a2,a3] ~ [b2,b3] ~ [b2,b3] ~", // E F# A B
  Q: "[a2,a3] ~ [a2,a3] ~ [g2,g3] ~ [g2,g3] ~ [f#2,f#3] ~ [f#2,f#3] ~ [f2,f3,f#3] ~ [f2,f3] ~", R: "[e2,e3] ~@15",
  S: "a2 ~@3 a2 ~@3 a2 ~@3 a2 ~@3", T: "g2 ~@3 g2 ~@3 g2 ~@3 g2 ~@3",
})).s("gm_electric_guitar_muted").gain(0.47)

// other · electric guitar muted · "Mute Guit" · soft notes
const electric_guitar_muted_2 = note("<~@19 A B ~@25 A B ~@6 C@2 D@2 E C F D ~@11 A B ~@20>".pickRestart({
  A: "~@2 [c#4,d4] c#4 [b3,c#4] b3 [a3,b3] a3 [g#3,a3] g#3 [f#3,g#3] f#3 [e3,f#3] e3 [d3,e3] d3", B: "d3 ~@15",
  C: "~ a2!3 ~ a2!3 ~ a2!3 ~ a2!3", D: "~ g2!3 ~ g2!3 ~ g2!3 ~ g2!3", E: "~ a2 [a2,a#2] a2 ~ a2!3 ~ a2!3 ~ a2!3",
  F: "~ g2 [g2,g#2] g2 ~ g2!3 ~ g2!3 ~ g2!3", // G#maj7
})).s("gm_electric_guitar_muted").gain(0.23)

// chords · tenor sax · "Sax"
const tenor_sax = note(`<
  ~@4 A@4 B C D E B C F G ~@4 H I J I K L ~@5 A@4 B C D E B C F G ~@4 H I J I K L ~@21 H I J I K L ~ H I J I K L ~ H I J
  I K L ~
>`.pickRestart({
  A: "[a1@15 ~]/2", B: "b2 c#3 d3 e3", C: "f#3 b3", D: "a3@10 g#3@2 a3 g#3 f#3 e3", E: "f#3@7 ~",
  F: "a3@9 ~ g#3@2 a3 g#3 f#3 e3", G: "c#3", H: "[a2,c#3,e3] [g2,c#3,e3] [f#2,d3,f#3] [f2,d3,f#3]",
  I: "[c#3,e3]@3 ~ [c#3,e3]@2 f#2@2 [a2,d3,f#3]@4 [b2,d3,f#3]@4, e2@3 ~@5", // C#m D Bm
  J: "[a2,c#3,e3]@4 [g2,c#3,e3]@3 ~ [f#2,d3,f#3]@4 [f2,d3,f#3]@4", // A C#dim D
  K: "[a2,e3] [g2,c#3,e3] [f#2,d3,f#3] [f2,d3,f#3], c#3 ~@7", L: "[b2,e3]@3 ~@5, e2@7 ~",
})).s("gm_tenor_sax").gain(0.31)

// other · trombone
const trombone = note(`<
  ~@4 A@2 B@2 C D E F C D G H ~@4 I J K J I L ~@5 A@2 B@2 C D E F C D G H ~@4 I J K J I L ~@21 I J K J I L ~ I J K J I L
  ~ I J K J I L ~
>`.pickRestart({
  A: "[a1@15 ~]/2", B: "[a1@7 ~]/2", C: "b2 c#3 d3 e3", D: "f#3 b3", E: "a3@10 g#3@2 a3 g#3 f#3 e3", F: "f#3@7 ~",
  G: "a3@9 ~ g#3@2 a3 g#3 f#3 e3", H: "c#3", I: "a2 g2 f#2 f2", J: "e2@3 f#2 a2@2 b2@2", K: "a2@4 g2@3 ~ f#2@4 f2@4",
  L: "e2@7 ~",
})).s("gm_trombone").gain(0.64)

// chords · piano
const piano = note(`<
  A B C D B@2 C@2 E F G H E F G I ~@11 A B C D B@2 C@2 E F G H E F G I ~@19 J K L M N K O ~@26
>`.pickRestart({
  A: "[d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,e5,f#5,b5] ~ [d5,f#5,b5] ~", // Bm
  B: "[d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~ [d5,f#5,b5] ~", // Bm
  C: "[c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~", // A
  D: "[c#5,e5,a5] ~ [c#5,e5,g5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~", // A A7 A
  E: "[d5,f#5,a5]@3 ~ [c#5,e5,a5]@3 ~ [d5,f#5,b5]@3 ~ [c#5,e5,b5]@3 ~", // D A Bm C#m7
  F: "[d#5,g#5,b5]@3 ~ [d#5,g#5,b5]@4 [c#5,f5,g#5]@3 ~ [c#5,f5,g#5]@3 ~", // G#m C#
  G: "[c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~", // F#m
  H: "[c#5,e5,a5]@3 ~ [c#5,e5,a5]@3 ~ [c#5,e5,a5]@3 ~ [c#5,e5,a5]@2 ~@2", // A
  I: "[c#5,e5,g#5]@3 ~ [c#5,e5,g#5]@3 ~ [c#5,e5,g#5]@4 [c#5,e5,g#5]@3 ~", // C#m
  J: "[d3,d5,f#5,a5]@4 [c#3,c#5,e5,a5]@4 [d5,f#5,b5]@3 ~ [a2,c#5,e5,b5]@4, ~@2 b2 ~", // D A Bm A
  K: "[d#5,g#5,b5]@3 ~ [d#5,g#5,b5]@4 [c#5,f5,g#5]@3 ~ [c#5,f5,g#5]@3 ~, g#2 c#3", // G#m C#
  L: "[c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@2 f2@2, f#2@7 ~", // F#m
  M: "[c#5,e5,a5]@3 ~ [c#5,e5,a5]@2 e2@2 [c#5,e5,a5]@2 c#2@2 [b1,c#5,e5,a5]@2 c#2@2, e2@6 ~@2 e2@7 ~", // A
  N: "[d3,d5,f#5,a5] [c#3,c#5,e5,a5] [b2,d5,f#5,b5] [a2,c#5,e5,b5]", // D A Bm A
  O: "[c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~, f#3", // F#m
})).s("gm_piano").gain(0.2)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  A@2 B@2 A@2 B@2 C D E F C D E G H I J K ~@7 A@2 B@2 A@2 B@2 C D E F C D E G H I J K ~@15 C D E F C D E L H I J K ~@21
>`.pickRestart({
  A: "[[d6,f#6,b6]@31 ~]/2", B: "[[c#6,e6,a6]@31 ~]/2",
  C: "[d6,f#6,a6]@3 ~ [c#6,e6,a6]@3 ~ [d6,f#6,b6]@3 ~ [c#6,e6,b6]@3 ~", // D A Bm C#m7
  D: "[d#6,g#6,b6]@3 ~ [d#6,g#6,b6]@4 [c#6,f6,g#6]@3 ~ [c#6,f6,g#6]@3 ~", // G#m C#
  E: "[c#6,f#6,a6]@3 ~ [c#6,f#6,a6]@3 ~ [c#6,f#6,a6]@3 ~ [c#6,f#6,a6]@3 ~", // F#m
  F: "[c#6,e6,a6]@3 ~ [c#6,e6,a6]@3 ~ [c#6,e6,a6]@3 ~ [c#6,e6,a6]@2 ~@2", // A
  G: "[c#6,e6,g#6]@3 ~ [c#6,e6,g#6]@3 ~ [c#6,e6,g#6]@4 [c#6,e6,g#6]@3 ~", // C#m
  H: "[c#6,f#6,a6] ~ [c#6,f#6,a6] ~ [c#6,f#6,a6] ~ [c#6,f#6,a6] ~", // F#m
  I: "[c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6] ~", // C#
  J: "[c#6,e6,g#6] ~ [c#6,e6,g#6] ~ [c#6,e6,g#6] ~ [c#6,e6,g#6] ~", // C#m
  K: "[b5,d6,e6,g#6] ~ [b5,d6,e6,g#6] ~ [b5,d6,e6,g#6] ~ [b5,d6,e6,f#6,g#6] ~", // E7
  L: "[c#6,f6,g#6]@3 ~ [c#6,f6,g#6]@3 ~ [c#6,f6,g#6]@4 [c#6,f6,g#6]@3 ~", // C#
})).s("gm_drawbar_organ").gain(0.33)

// chords · piano · "Piano 2"
const piano_2 = note(`<
  ~@8 A B C D A B C E ~@4 F G@4 H I ~@8 A B C D A B C E ~@4 F G@4 H I J ~ K ~ L ~ M@2 A B C D A B C ~@5 F G@4 H I F G@4
  H I F G@4 H I
>`.pickRestart({
  A: "~@2 [d5,f#5,a5]@3 ~ [c#5,e5,a5]@3 ~ [d5,f#5,b5]@3 ~ [c#5,e5,b5]@2", // D A Bm C#m7
  B: "~@2 [d#5,g#5,b5]@3 ~ [d#5,g#5,b5]@4 [c#5,f5,g#5]@3 ~ [c#5,f5,g#5]@2", // G#m C#
  C: "~@2 [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@3 ~ [c#5,f#5,a5]@2", // F#m
  D: "~@2 [c#5,e5,a5]@3 ~ [c#5,e5,a5]@3 ~ [c#5,e5,a5]@3 ~ [c#5,e5,a5]@2", // A
  E: "~@2 [c#5,e5,g#5]@3 ~ [c#5,e5,g#5]@3 ~ [c#5,e5,g#5]@4 [c#5,e5,g#5]@2", // C#m
  F: "[c#5,e5,a5]@3 ~ [c#5,e5,a5]@3 ~ [d5,f#5,a5]@2 ~@2 [d5,f#5,a5]@3 ~", // A D
  G: "[c#5,e5,a5] ~ [c#5,e5,a5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] ~", // A D
  H: "e2@4 g#2@2 e2@2 g#2@2 b2@3 ~ e3@2, [e5,g#5,b5]@5 ~@3", I: "~@2 b2@3 ~ g#2@2 e2@4 f#2@4",
  J: "[b4,d5,f#5] ~@5 [a4,c#5,e5] [b4,d5,f#5]", K: "[a4,c#5,e5]@3 ~@9 [g#4,b4,e5]@2 [a4,c#5,e5]@2",
  L: "[b4,d5,f#5]@3 ~@9 [a4,c#5,e5]@2 [b4,d5,f#5]@2", M: "[[a4,c#5,e5]@3 ~@9 [g#4,b4,e5]@2 [a4,c#5,e5]@4 ~@14]/2",
})).s("gm_piano").gain(0.35)

// chords · drawbar organ · "Organ 2"
const drawbar_organ_2 = note(`<
  ~@16 A B@2 C D@3 E F G ~@17 A B@2 C D@3 E F G ~ H ~ I ~ J ~ I ~@8 K A B@2 C D@3 E F G ~ D@3 E F G ~ D@3 E F G ~
>`.pickRestart({
  A: "~ f#5 ~ f#5 ~ f#5 ~ f#5", B: "~ g#5 ~ g#5 ~ g#5 ~ g#5", C: "~ e5 ~ e5 ~ e5 ~ e5",
  D: "[[c#6,e6,a6]@8 [d6,f#6]@8 [c#6,e6]@8 [d6,f#6]@8 [c#6,e6]@8 [d6,f#6]@7 ~, ~@8 a6@39 ~]/3", // A D C#m D C#m D
  E: "c#6 [d6,f#6], a6, e6@3 ~@5", F: "[c#6,e6,a6] [d6,f#6,a6]", G: "[e6,g#6,b6]@9 ~@7",
  H: "[b4,d5,f#5] ~@5 [a4,c#5,e5] [b4,d5,f#5]", I: "[a4,c#5,e5] ~@5 [g#4,b4,e5] [a4,c#5,e5]",
  J: "[b4,d5,f#5]@3 ~@9 [a4,c#5,e5]@2 [b4,d5,f#5]@2", K: "~ c#5 ~ c#5 ~ c#5 ~ c#5, [f5,g#5]@15 ~",
})).s("gm_drawbar_organ").gain(0.4)

// chords · drawbar organ · "Organ 2" · soft notes
const drawbar_organ_soft = note("<~@16 A@3 B ~@23 A@3 B ~@23 A@3 B ~@21>".pickRestart({
  A: "[[f#6,a6] f6 e6, c#6, ~ g#6@2]/3", B: "[b5,d6,e6,g#6]",
})).s("gm_drawbar_organ").gain(0.24)

// other · timpani
const timpani = note(`<
  ~@4 A B A C D E F D@4 G ~@4 H D@4 I ~ A J A J A B A C D E F D@4 G ~@4 D K D@2 L M ~ I ~ N ~@5 D E F D@4 N ~@4 D@5 O P
  Q R@3 S T U D@4 V M ~
>`.pickRestart({
  A: "~@14 a2 ~", B: "a2@4 ~@2 a2 ~ a2@2 ~@6", C: "a2@4 ~@2 a2 ~ a2@4 ~@4", D: "a2 ~ a2 ~ a2 ~ a2 ~",
  E: "a2@2 ~@2 a2@2 ~@2 a2 ~@3 a2@2 ~@2", F: "a2 ~@3 a2@2 ~@2 a2@2 ~@2 a2 ~@3",
  G: "a2@2 ~@2 a2 ~ a2 ~ a2 ~ a2@2 ~@2 a2@2", H: "a2 ~ a2 ~ a2 ~ a2 ~, ~@4 g2 ~@11", I: "a2 ~@15",
  J: "a2 ~@5 a2 ~ a2 ~@7", K: "a2@2 ~@2 a2 ~@3 a2@2 ~@2 a2@2 ~@2", L: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2@2 ~ a2",
  M: "a2@3 ~@13", N: "a2 ~@7", O: "a2@7 ~@9", P: "~@12 a2!2 ~ a2", Q: "a2 ~@3 a2 ~@3 a2 ~@3 a2@2 ~@2",
  R: "a2 ~@3 a2 ~@3 a2 ~@3 a2 ~@3", S: "a2 ~@3 a2 ~@3 a2 ~@3 a2 ~ a2!2", T: "a2 ~@3", U: "~@8 a2!2 ~ a2!2 ~ a2 ~",
  V: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2 ~ a2!2",
})).s("gm_timpani").gain(0.56)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note("<~@54 A ~ B ~ A ~ B ~@34>".pickRestart({
  A: "[a3,b4,d5,f#5] ~@5 [a3,a4,c#5,e5] [a3,b4,d5,f#5]", B: "[a3,a4,c#5,e5] ~@5 [g3,g#4,b4,e5] [a3,a4,c#5,e5]",
})).s("gm_acoustic_guitar_steel").gain(0.59)

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

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

// drums · clap
const clap = s("cp").struct("<~@47 A ~@26 A ~@6 A ~@6 A ~@6>".pickRestart({
  A: "~@3 x",
})).gain(0.17)

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

// drums · hihat
const hihat = s("hh").struct("<~@40 A ~@10 B ~@2 C ~ C ~ D@11 C ~@4 D@5 ~@2 D@5 ~@2 D@5 ~@2>".pickRestart({
  A: "~ x", B: "~@3 x", C: "x", D: "x!4",
})).gain(0.17)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~ A ~@13 B ~@10 A ~ A ~@61>".pickRestart({
  A: "~@2 x!3 ~@11", B: "x!3 ~",
})).gain(0.38)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B A B C@7 D ~@4 C@5 ~@2 A B A B A B A B C@7 D ~@4 C@5 ~@2 E ~ E ~ C@11 E ~@4 C@5 ~@2 C@5 ~@2 C@5 ~@2
>`.pickRestart({
  A: "~@7 x", B: "x ~@2 x!2 ~@3", C: "x!4", D: "x ~ x!4 ~ x", E: "x",
})).gain(0.38)

// … 20 more lines

More by The Beach Boys