Strudelify

Tarzan Boy

Baltimora

KeyF majorTempo110 bpm
0:00/0:00
// Tarzan Boy — Baltimora
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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: edit a riff to change every repeat.

// other · acoustic guitar steel · "VOCE LINE"
const acoustic_guitar_steel = note(`<
  ~@16 A B@2 C D E F@4 G H@2 I J@2 ~@8 K L M N O L P Q ~@8 R S@2 T U V W@2 X Y@2 Z@3 AA@2 AB AC AD AE AF AE AG AH ~@37
>`.pickRestart({
  A: "d4@2 ~@4 d4 ~ f4 e4 ~ d4 ~@2 c4 ~", B: "[a3 c4 ~ c4@2 ~@7 a3 ~ c4 d4@2 ~@5 d4 ~ f4@2 ~ e4@2 ~ d4@2]/2",
  C: "~ c4 ~@10 a3 c4 ~ d4", D: "~@8 d4 c4 ~ a3 ~@2 f3 ~", E: "g3 ~ g3 ~ g3 ~ g3 g3@2 ~ g3 ~ g3 ~ a3 g3",
  F: "[~ f3 ~@4 f3 ~ g3@2 f3 g3 ~ a3 ~ a3@3 ~@10 a3 ~ c4 d4@2 ~@5 c4 ~ d4 ~ c4 a3 ~ f3 ~ g3@2 c4 ~ c4 ~@8 [g3,a3] ~ c4 ~]/4", // Gsus2
  G: "d4@2 ~@4 c4 ~ f4@2 ~ e4@2 ~ d4@2", H: "[c4 ~@11 a3 ~ c4 d4@2 ~@5 c4 ~ d4 c4 ~ a3 ~ f3 ~@2]/2",
  I: "g3 ~ g3!2 ~ g3 ~ g3 ~ g3 ~@2 g3 ~ a3 g3", J: "[~ f3 ~@4 f3 ~ g3@2 f3 g3 ~ a3 a3@4 ~@14]/2", K: "d4!4 ~@12",
  L: "f4!3 e4@2 ~ c4 ~ f4!3 e4@2 ~ c4 ~", M: "d4 ~ d4 d4@2 ~@11", N: "[f4,gb4]!2 f4 e4@2 ~ c4 ~ f4!3 e4 ~@2 c4 ~",
  O: "d4 ~ d4!2 ~@12", P: "d4@2 c4 ~ d4@2 c4 ~ d4@2 c4 ~ d4@2 c4 ~", Q: "d4@2 c4 ~ d4@2 c4 ~ d4@2 c4 ~ d4 ~@3",
  R: "d4@2 ~@4 c4 ~ d4 ~ c4 a3 ~ f3 ~ g3", S: "[~ c4 ~ c4 ~@8 a3 ~ c4 d4@2 ~@5 c4 ~ f4@2 ~ e4@2 ~ d4@2]/2",
  T: "~@12 a3 ~ c4 ~", U: "d4 ~ d4 ~@3 c4 ~ d4 c4 ~ [g3,a3] ~ f3@2 ~", V: "g3 ~ g3 ~ g3 ~ g3 g3@2 g3 ~@2 g3@2 a3 g3",
  W: "[~ f3 ~@4 f3 ~ g3@2 f3 g3 ~ a3 ~ a3@3 ~@11 a3 c4 ~]/2", X: "d4 ~@8 d4 c4 a3 ~@2 g3 ~",
  Y: "[[g3,a3]@2 ~@10 a3 ~ c4 d4@2 ~@5 c4 ~ f4@2 ~ e4@2 ~ d4@2]/2", // Gsus2
  Z: "[~@12 a3 ~ c4 d4@2 ~@5 c4 ~ d4 ~ c4 a3 ~ f3 ~ g3@3 g3 ~ g3 ~ g3!3 ~ g3 ~@2 g3 a3 ~]/3",
  AA: "[g3 f3 ~@4 f3 ~ g3 ~ f3 g3 ~ a3 ~ a3@2 ~@15]/2", AB: "[c4,d4] d4!3 ~@12",
  AC: "f4!3 e4@2 ~ c4 ~ f4!3 e4 ~@2 c4 ~", AD: "d4 ~ c4 d4@2 ~@11", AE: "f4!3 e4@3 c4 ~ f4!3 e4@2 ~ c4 ~",
  AF: "d4 ~ c4 d4 ~@12", AG: "d4@2 c4 d4@2 ~ c4 ~ d4@2 c4 ~ d4@2 c4 ~", AH: "d4@2 c4 ~ d4@2 c4 ~ d4@2 c4 ~ d4@2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.72)

// chords · distortion guitar · "OVERD.GT."
const distortion_guitar = note(`<
  A B C D E F G H A B C D E F G H ~@16 A B C D E F G H ~@8 A B C D E F G H ~@24 A B C D E F G H ~@4 E F G H E F G H A B
  C D E F G H A B C D E F G H ~
>`.pickRestart({
  A: "[f2,c3,c4]@9 ~@3 [c2,g2,c3,g3,c4]@4, [f3,f4]@7 ~@9", B: "[d2,a2,d3,a3,d4]@7 ~",
  C: "[bb1,f2,bb2]@2 ~ [c2,g2,c3,g3,c4], [f3,bb3]@5 ~@3", D: "[f2,f3,c4,f4]@15 ~, c3 ~@3",
  E: "[f2,c3,f3,c4,f4]@9 ~@3 [c2,g2,c3,g3,c4]@4", F: "[d2,a2,d3,d4]@15 ~, a3@13 ~@3",
  G: "[bb1,f2,bb2,f3,bb3]@9 ~@3 [c2,g2,c3,g3,c4]@4", H: "[f2,c3,f3,c4,f4]@15 ~",
})).s("gm_distortion_guitar").gain(0.25).pan(0.6)

// other · electric guitar muted · "MUTE GT."
const electric_guitar_muted = note(`<
  A B C D A B C D A B C D A B C D E F E F E G H I E F E F E G H I A B C D A B C D E F J F E F J K A B C D A B C D E F E
  F E G H I E F E F E G H I E F J F E F J K A B C D A B C D ~@12 A B C D A B C D A B C D A B C L ~
>`.pickRestart({
  A: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ c3 ~ c3 ~", B: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  C: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ c4 ~ c4 ~", D: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~",
  E: "d4 ~ d4 ~ d4 ~ d4 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~", F: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
  G: "c4 ~ c4 ~ c4 ~ c4 ~ db4 ~ db4 ~ db4 ~ db4 ~", H: "d4 ~ d4 ~ d4 ~ d4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
  I: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~", J: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~",
  K: "bb3 ~ bb3 ~ g3 ~ a3 ~ bb3 ~ bb3 ~ g3 ~ a3 ~", L: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~@7",
})).s("gm_electric_guitar_muted").gain(0.45)

// bass · electric bass finger · "BASS"
const bass = note(`<
  A B C A D E C A@2 B C A D E C A F G F G F H I A F G F G F H I A@2 B C A D E C A J K L M F N C O P B C A D E C A F G F
  G F H I A F G F G F H I A J K L M F N C O P B C A D E C A ~@12 A B C A D E C A P B C A D E C Q ~
>`.pickRestart({
  A: "f1@2 f2 ~ f1@2 f2 ~ f1@2 f2 ~ f1@2 f2 ~", B: "d1@2 d2 ~ d1@2 d2 ~ d1@2 d2 ~ d1@2 d2 ~",
  C: "bb0@2 bb1 ~ bb0@2 bb1 ~ bb0@2 bb1 ~ bb0@2 bb1 ~", D: "f1@2 f2 ~ f1 ~ f2 ~ f1 ~ f2 ~ f1@2 f2 ~",
  E: "d1 ~ d2 ~ d1@2 d2 ~ d1@2 d2 ~ d1@2 d2 ~", F: "d1@2 d2 ~ d1@2 d2 ~ bb0@2 bb1 ~ bb0@2 bb1 ~",
  G: "c1@2 c2 ~ c1@2 c2 ~ c1@2 c2 ~ c1@2 c2 ~", H: "c1@2 c2 ~ c1@2 c2 ~ db1@2 db2 ~ db1@2 db2 ~",
  I: "d1@2 d2 ~ d1@2 d2 ~ c1@2 c2 ~ c1@2 c2 ~", J: "d1 ~ d2 ~ d1 ~ d2 ~ bb0 ~ bb1 ~ bb0@2 bb1 ~",
  K: "c1@2 c2 ~ c1@2 c2 ~ c1@2 c2 ~ c1 ~ c2 ~", L: "d1@2 d2 ~ d1@2 d2 ~ bb0@2 bb1 ~ bb0 ~ bb1 ~",
  M: "c1@2 c2 ~ c1 ~ c2 ~ c1@2 c2 ~ c1 ~ c2 ~", N: "c1@2 c2 ~ c1 ~ c2 ~ c1 ~ c2 ~ c1@2 c2 ~",
  O: "bb0@2 bb1 ~ g0@2 a1 ~ bb0@2 bb1 ~ g0@2 a1 ~", P: "f1 ~ f2 ~ f1@2 f2 ~ f1@2 f2 ~ f1@2 f2 ~",
  Q: "f1@2 f2 ~ f1@2 f2 ~ f1@2 ~@6",
})).s("gm_electric_bass_finger").gain(0.45)

// bass · acoustic guitar steel · "GUITAR"
const bass_2 = note(`<
  ~@16 A B A B A C D E A B A B A C D E ~@8 F G F H F H F H ~@8 A B A B A C D E A B A B A C D E F G F H F H F H ~@37
>`.pickRestart({
  A: "d1!2 ~ d1!2 ~ d1!4 ~ d1!2 ~ d1!2", B: "c1!2 ~ c1!2 ~ c1!4 ~ c1!2 ~ c1!2",
  C: "c1!2 ~ c1!2 ~ c1!2 db1!2 ~ db1!2 ~ db1!2", D: "d1!2 ~ d1!2 ~ d1!2 c1!2 ~ c1!2 ~ c1!2",
  E: "f1!2 ~ f1!2 ~ f1!4 ~ f1!2 ~ f1!2", F: "d2!2 ~ d2!2 ~ d2!4 ~ d2!2 ~ d2!2",
  G: "c2!2 ~ c2!2 ~ [b1,c2] c2!3 ~ c2!2 ~ c2!2", H: "c2!2 ~ c2!2 ~ c2!4 ~ c2!2 ~ c2!2",
})).s("gm_acoustic_guitar_steel").gain(0.45)

// chords · synth brass 2 · "SYNTHBRAS"
const synth_brass_2 = note(`<
  ~@16 A B C B D E F G D H D H D E F I ~@8 D H J H D H K@2 ~@8 A B C B D E F G D H D H D E F I L H M N D H O@2 ~@37
>`.pickRestart({
  A: "[a3,d4]@7 ~ [bb3,d4]@8, f4@15 ~", B: "[g3,c4,e4]", C: "[a3,d4,f4]@7 ~ [bb3,d4,f4]@7 ~",
  D: "[a3,d4,f4]@7 ~ [f3,bb3,d4]@7 ~", E: "[g3,c4,e4]@7 ~ [a3,db4,e4]@7 ~", F: "[a3,d4,f4]@7 ~ [g3,c4,e4]@7 ~",
  G: "[f3,a3,c4]@15 ~", H: "[g3,c4,e4]@15 ~", I: "~ c4@15, [f3,a3]", J: "[f3,bb3,d4]@15 ~", K: "[[f3,bb3,d4]@31 ~]/2",
  L: "[a3,f4]@8 [f3,bb3]@7 ~, d4@15 ~", M: "[f3,bb3,d4]", N: "[g3,c4]@15 ~, e4@13 ~@3", O: "[f3,bb3,d4]/2",
})).s("gm_synth_brass_2").gain(0.1)

// chords · electric guitar clean · "BRASS"
const electric_guitar_clean = note(`<
  ~@24 A B A C D E F G ~@14 H I ~@8 A J A K D E F G A B A C D E F G L M N O P Q R S ~@20 G R@2 G@2 R@2 G@2 R@2 G@2 R@2 T
  ~
>`.pickRestart({
  A: "~ [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2", // Dm
  B: "~ [c4,e4,e5,g5,c6] ~ [e5,g5,c6] [c4,e4] ~@2 [c4,e4] ~ [e5,g5,c6] [c4,e4] [e5,g5,c6] ~ [c4,e4] ~@2", // C
  C: "~ [c4,e4,e5,g5] ~ [e5,g5] [c4,e4] [e5,g5] ~ [c4,d4,e4,f4,d5,f5] [e5,g5] [f5,a5] [c4,e4,f5,a5] ~@2 [c4,e4] ~@2", // C Em C Em Dm7 Em F Fmaj7 …
  D: "[d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@3", // Dm
  E: "~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [db4,e4] ~@2 [db4,e4] ~", // C Dbm
  F: "~@2 [d4,f4] ~@2 [d4,f4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~", // Dm C
  G: "~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~", // F5
  H: "[g3,bb3,d4]!2 ~ [g3,bb3,d4]!2 ~ [bb3,d4] [g3,bb3,d4] ~ [g3,bb3,d4]!2 ~ [g3,bb3,d4]!2 ~ [g3,bb3,d4]", // Gm Bb Gm
  I: "[g3,bb3,d4] ~ [bb3,d4] [g3,bb3,d4] ~ [g3,bb3,d4] [bb3,d4] ~ [g3,bb3,d4] [bb3,d4] ~ [g3,bb3,d4]!2 ~ [g3,bb3,d4] [bb3,d4]", // Gm Bb Gm Bb Gm Bb Gm Bb
  J: "~ [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2", // C
  K: "~ [c4,e4] ~@2 [c4,e4] ~@2 [c4,d4,e4,f4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2", // C Dm7 C
  L: "~ [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4]!2 ~", // Dm
  M: "~ [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~ [c4,e4]", // C
  N: "~@2 [d4,f4] ~ [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2", // Dm
  O: "[c4,e4] ~@2 [c4,d4,e4,f4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~ [c4,e4] ~", // C Dm7 C
  P: "~ [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~ [c4,e4]", // Dm C
  Q: "~@3 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4] ~@2 [c4,e4]", // C
  R: "~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~", // Dm
  S: "~ [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,e4,f4] ~@2 [d4,f4] ~@2", T: "~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@7",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.4)

// other · trumpet
const trumpet = note(`<
  ~@23 A ~@11 B ~@4 C D C D C D E F ~@3 B ~@11 A ~@8 C D C D C D E F ~@3 B ~@7 B ~@11 B ~@7 B ~@5
>`.pickRestart({
  A: "~@2 f2!3 [e2,f2]!2 ~ f2!4 ~ f2 [e2,f2]!2", B: "~@2 f2!4 ~ f2!5 ~ f2!3", C: "~@6 e2 ~ e2!4 ~@4",
  D: "~@10 e2 ~@4 e2", E: "~@8 e2!4 ~@4", F: "~ e2!3 ~@5 e2!3 ~@4",
})).s("gm_trumpet").gain(0.35)

// other · trumpet · soft notes
const trumpet_soft = note("<~@40 A B A B A B ~@26 A B A B A B ~@39>".pickRestart({
  A: "~@7 e2 ~@8", B: "~@11 e2 ~@4",
})).s("gm_trumpet").gain(0.25)

// drums · kick
const kick = s("bd").struct("<[x!2]!116 ~>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<A@47 B A@31 C A@19 D A@15 E ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2 x ~@2 x ~@3 x!3 ~@2", C: "~ x ~@2 x ~@4 x ~@2 x ~@3", D: "~ x ~@2 x ~@3 x ~@2 x!2 ~ x!2",
  E: "~ x ~@2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<A@40 B A@31 B A@15 B A@26 C ~>".pickRestart({
  A: "x!8", B: "~ x!7", C: "x!5 ~@3",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@40 x ~@31 x ~@15 x ~@28>").gain(0.35)

stack(
  acoustic_guitar_steel, distortion_guitar, electric_guitar_muted, bass, bass_2, synth_brass_2, electric_guitar_clean,
  trumpet, trumpet_soft, kick, snare, hihat, crash
)

More by Baltimora