Strudelify
Harry Lime Theme (Theme From the Third Man) cover art

Der dritte Mann - The Third Man

Harry Lime Theme (Theme From the Third Man)

Karas Anton

KeyG majorTempo145 bpm
0:00/0:00
// Harry Lime Theme (Theme From the Third Man) — Karas Anton
// 145 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "BASSLINE" named as a bass, played on electric bass finger (its electric guitar muted patch is not one)
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(145/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 · electric bass finger · "BASSLINE"
const bass = note(`<
  A B C@4 D A@3 C E F@2 G ~ H@2 F I@2 E H@2 J K L M N O G P Q H D R S R T U V U@2 V@3 G W X R@2 Y Z AA U AB@2 H R I AC T
  U Q S AD V U V T AE AD R X U@2 V U AF AG
>`.pickRestart({
  A: "c2@3 ~@5 g2@3 ~@5", B: "c2@3 ~@5 g2@2 ~@6", C: "d2@3 ~@5 g2@3 ~@5", D: "c2@4 ~@4 g2@3 ~@5",
  E: "d2@4 ~@4 g2@3 ~@5", F: "d2@3 ~@5 g2@4 ~@4", G: "c2 ~@7", H: "c2 ~ g2 ~", I: "d2 ~ g2 ~", J: "a2@3 ~@5 e2@4 ~@4",
  K: "a2@3 ~@5 a2@4 ~@4", L: "d2@3 ~@9 a2@2 ~@2", M: "d2 ~ a2 ~ d2 ~@3", N: "g2@3 ~@5 d2@4 ~@4", O: "g2 ~ g2 ~",
  P: "~@8 g2@5 ~@3", Q: "c2@3 ~@5 g2@4 ~@4", R: "c2@5 ~@3 g2@5 ~@3", S: "c2@4 ~@4 g2@5 ~@3", T: "d2@5 ~@3 g2@4 ~@4",
  U: "d2@5 ~@3 g2@5 ~@3", V: "d2@4 ~@4 g2@5 ~@3", W: "f2@4 g2 ~@3", X: "c2@2 ~@2 g2@3 ~", Y: "d2@5 ~@3 g2@3 ~@5",
  Z: "d2@3 ~ g2@3 ~", AA: "d2@6 ~@2 g2@3 ~@5", AB: "c2@5 ~@3 g2@4 ~@4", AC: "d2@5 ~@3 g2@6 ~@2",
  AD: "c2@6 ~@2 g2@5 ~@3", AE: "c2@5 ~@3 g2@6 ~@2", AF: "c2 ~@3", AG: "~@8 c2@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.28).pan(1)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note("<~@16 A@8 B@2 C D E@3 F G@6 H@8 I J K@7 L@8 M ~@15 N>".pickRestart({
  A: "[[c4,e4]@31 ~ [b3,d4,f4]@63 ~ e4@32, g4, ~@96 c4@29 ~@3]/8", B: "[[a3,c#4]@15 ~]/2",
  C: "[a3,d4,f4]@9 ~@3 [g3,a3,c#4,e4] ~@3", D: "[f3,a3,d4] ~", E: "[[b3,f4]@29 ~@3 [c4,e4]@2 ~@14, g3@17 ~@7]/3",
  F: "~@8 [b3,d4,f4,g4]@5 ~@3", // G7
  G: "[g4@13 ~ g#4@2 a4@14 g#4@2 g4@14 g#4@2 a4@16 ~@16 c5@13 ~@3, [c4,e4]@31 ~, ~@76 g4@17 ~@3]/6", // C
  H: "[~@2 b4 ~, [d4,g4], [b3,f4]@125 ~@3, ~ g3@3]/8", I: "[c3,c4,e4]@2 ~@2 c5 b4 a#4 a4",
  J: "~ [f4,c5] [g4,b4,d5] ~, g#4 ~", K: "[[c4,e4]@48 ~@49 b3 b3@12 ~@2, g3, ~@3 f4@4, ~@48 b3@47 ~@17, ~@4 d4@3]/7",
  L: "[~@35 c5@5 c4@22 ~@2 [b3,d4,f4]@63 ~, e4 ~, c4@35 ~@93, ~ g4@7]/8", M: "[c4,e4]@4 ~@4 [b3,d4,f4,g4]@5 ~@3",
  N: "~@8 [c3,g3,c4,e4,g4]@3 ~@5", // C
})).s("gm_string_ensemble_2").gain(0.09)

// chords · electric guitar muted · "BEGL/GITA"
const electric_guitar_muted = note(`<
  A B C D E F G H I G F@4 J ~ G@2 K L F M N O P Q R S T U V W N@3 X@3 Y Z AA AB Z AC AD@2 J AE AF X@2 AG AA AG AA AH AI
  N X M AA AG AA AJ AK X AD AA@3 X@3 AK AA@2 AL AA AM AN
>`.pickRestart({
  A: "c3@2 ~@2 [c4,e4,g4]@2 ~@2 g3@2 ~@2 [c4,e4,g4] ~@3", B: "c3 ~ [c4,e4,g4] ~ g3 ~ [c4,e4,g4] ~",
  C: "d3 ~ [b3,d4,f4,g4] ~ g3 ~ [b3,d4,f4,g4] ~", D: "d3@2 ~@2 [b3,d4,f4,g4]@2 ~@2 g3@3 ~ [b3,d4,f4,g4]@2 ~@2",
  E: "d3@3 ~ [b3,d4,f4,g4]@2 ~@2 g3@2 ~@2 [b3,d4,f4,g4]@2 ~@2", // G7
  F: "d3@3 ~ [b3,d4,f4,g4]@2 ~@2 g3@3 ~ [b3,d4,f4,g4]@2 ~@2", G: "c3@3 ~ [c4,e4,g4]@2 ~@2 g3@3 ~ [c4,e4,g4]@2 ~@2",
  H: "c3@3 ~ [c4,e4,g4]@2 ~@2 g3@2 ~@2 [c4,e4,g4] ~@3", I: "c3@2 ~@2 [c4,e4,g4]@2 ~@2 g3@3 ~ [c4,e4,g4]@2 ~@2",
  J: "c3 ~@15", K: "d3@2 ~@2 [b3,d4,f4,g4] ~@3 g3@3 ~ [b3,d4,f4,g4] ~@3",
  L: "d3@3 ~ [b3,d4,f4,g4]@2 ~@2 g3@3 ~ [b3,d4,f4,g4] ~@3", M: "d3@3 ~ [b3,d4,f4,g4] ~@3 g3@3 ~ [b3,d4,f4,g4] ~@3",
  N: "c3@3 ~ [c4,e4,g4] ~@3 g3@3 ~ [c4,e4,g4] ~@3", O: "c3@3 ~ [c4,e4,g4] ~@3 g3@3 ~ [c4,e4,g4]@2 ~@2",
  P: "a3@3 ~ [a3,c#4,e4,g4]@2 ~@2 e3@3 ~ [a3,c#4,e4,g4]@2 ~@2", // A7
  Q: "a3@3 ~ [a3,c#4,e4,g4] ~@3 a3@3 ~ [a3,c#4,e4,g4] ~@3", R: "d3@2 ~@10 a3 ~@3", S: "d3 ~@3 a3@2 ~@2 d3@2 ~@6",
  T: "g3@3 ~ [b3,d4,f4,g4]@2 ~@2 d3@3 ~ [b3,d4,f4,g4]@2 ~@2", U: "g3@3 ~ [b3,d4,f4,g4] ~@3 g3@3 ~ [b3,d4,f4,g4] ~@3",
  V: "[c3,c4,e4,g4] ~@7", W: "~@2 g3 ~", X: "c3@4 [c4,e4,g4] ~@3 g3@4 [c4,e4,g4] ~@3",
  Y: "d3@4 [b3,d4,f4,g4]@2 ~@2 g3@3 ~ [b3,d4,f4,g4] ~@3", Z: "d3@4 [b3,d4,f4,g4]@2 ~@2 g3@4 [b3,d4,f4,g4] ~@3",
  AA: "d3@4 [b3,d4,f4,g4] ~@3 g3@4 [b3,d4,f4,g4] ~@3", AB: "d3@4 [b3,d4,f4,g4] ~@3 g3@4 [b3,d4,f4,g4]@2 ~@2",
  AC: "d3@3 ~ [b3,d4,f4,g4] ~@3 g3@4 [b3,d4,f4,g4]@2 ~@2", AD: "d3@3 ~ [b3,d4,f4,g4] ~@3 g3@4 [b3,d4,f4,g4] ~@3",
  AE: "f3@6 ~@2 g3 ~@7", AF: "c3@3 ~ [c4,e4,g4]@2 ~@2 g3@4 [c4,e4,g4] ~@3",
  AG: "d3@4 [b3,d4,f4,g4] ~@3 g3@3 ~ [b3,d4,f4,g4] ~@3", AH: "c3@4 [c4,e4,g4] ~@3 g3@3 ~@5",
  AI: "c3@4 [c4,e4,g4] ~@3 g3@3 ~ [c4,e4,g4] ~@3", AJ: "c3@3 ~@5 g3@3 ~@5",
  AK: "c3@3 ~ [c4,e4,g4] ~@3 g3@4 [c4,e4,g4] ~@3", AL: "d3@3 ~ [b3,d4,f4,g4] ~@3 g3@4 [b3,c4,d4,f4,g4] ~@3",
  AM: "c3@3 ~@13", AN: "~@4 [c3,e4,g4,a4,c5] ~@3",
})).s("gm_electric_guitar_muted").gain(0.22)

// chords · acoustic guitar nylon · "BEGL/GITA"
const acoustic_guitar_nylon = note(`<
  A@2 B@4 C@2 A@2 D@2 E@2 F ~ G@2 H@4 G@2 I J K@2 L@2 F M N O@2 P A@2 H@2 Q@2 R@2 S T U V W P X T Y T Z AA AB P W T Y
  AC@2 AD AE@2 AF@4 G@2 AG@2 B@4 F AH
>`.pickRestart({
  A: "[~@4 [g4,c5] ~@7 [g4,c5] ~@7 [g4,c5] ~@7 [g4,c5] ~@3, e5@29 ~@3]/2", // C5
  B: "[~@4 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@3, f5@29 ~@3]/2", // G
  C: "[~@4 [g4,c5] ~@7 [g4,c5] ~@7 [g4,c5] ~@3 [g4,c5] ~@3 [g4,c5] ~@3, e5@29 ~@3]/2", // C5
  D: "[~@4 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@3, f5@15 ~]/2", // G
  E: "[~@4 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@3, d5@29 ~@3]/2", F: "[g4,c5,e5] ~@7",
  G: "[~@4 [g4,c5]@2 ~@6 [g4,c5] ~@7 [g4,c5] ~@3 [g4,c5] ~@3 [g4,c5] ~@3, e5@29 ~@3]/2", // C5
  H: "[~@4 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@3 [g4,b4] ~@3 [g4,b4] ~@3, f5@29 ~@3]/2", // G
  I: "[g4,c#5,e5] ~@3 [g4,c#5,e5]@6 ~@2 [g4,c#5,e5]@2 ~@2", J: "~@4 [g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3 [g4,c#5,e5] ~@3",
  K: "[[f4,a4,d5] ~@11 [g4,c#5]@4 [f4,d5]@8 ~@8, ~@3 a4@3 ~@2]/2", // Dm Gdim Dm
  L: "[~@4 [g4,b4]@2 ~@6 [g4,b4] ~@7 [g4,b4] ~@3 [g4,b4] ~@3 [g4,b4] ~@3, f5@15 ~]/2", M: "~@4 [g4,b4,f5]@3 ~",
  N: "[g4,c5,e5]@2 ~@2 [g4,c5,e5]@2 ~@6 [g4,c5,e5] ~@3", O: "~@4 [g4,c5,e5] ~@7 [g4,c5,e5] ~@3",
  P: "~@4 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3", // C
  Q: "[~@4 [g4,f5]@2 ~@6 [g4,f5]@2 ~@6 [g4,f5]@2 ~@6 [g4,f5] ~@3, b4@15 ~]/2", // G7
  R: "[~@4 [g4,f5]@2 ~@6 [g4,f5]@2 ~@6 [g4,f5] ~@3 [g4,f5] ~@3 [g4,f5] ~@3, b4@29 ~@3]/2", // G7
  S: "[g4,b4,f5] ~@3 [g4,b4,f5] ~@7 [g4,b4,f5] ~@3", T: "~@4 [g4,b4,f5] ~@3 [g4,b4,f5] ~@3 [g4,b4,f5] ~@3",
  U: "[g4,c5,e5]@2 ~@6 c5@2 ~ b4 a#4@3 a4", V: "~@4 [c5,f5]@2 ~@2 [g4,b4,f5]@3 ~@5, g#4@3 ~@5",
  W: "~@4 [g4,c5] ~@7 [g4,c5]@2 ~@2, e5@7 ~", X: "~@2 [g4,c5] ~@3 [g4,c5] ~, e5@7 ~",
  Y: "~@4 [g4,b4] ~@7 [g4,b4] ~@3, f5@7 ~", Z: "~@4 [g4,f5] ~@3 [g4,f5] ~@3 [g4,f5] ~@3, b4@13 ~@3",
  AA: "~@4 g4 ~@3 [g4,e5] ~@3 [g4,e5] ~@3, e5@3 ~@5", AB: "~@4 [g4,c5] ~@7 [g4,c5] ~@3, e5@7 ~",
  AC: "~@4 [g4,f5] ~@7 [g4,f5] ~@3, b4@13 ~@3", AD: "[g4,c5,e5] ~@7 [g4,b4,f5]@5 ~@3",
  AE: "[~@4 [g4,c5]@2 ~@6 [g4,c5]@2 ~@6 [g4,c5] ~@7 [g4,c5] ~@3, e5@29 ~@3]/2", // C5
  AF: "[~@4 [g4,b4]@2 ~@6 [g4,b4] ~@7 [g4,b4] ~@7 [g4,b4] ~@3, f5@29 ~@3]/2", // G
  AG: "[~@4 [g4,c5]@2 ~@6 [g4,c5] ~@7 [g4,c5] ~@7 [g4,c5] ~@3, e5@29 ~@3]/2", AH: "~@4 [c3,c4,g4,c5,e5] ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// drums · kick
const kick = s("bd").struct("<A@14 B ~ A@10 B@2 A@2 B C A@14 B A@31 B C>".pickRestart({
  A: "x!2", B: "x", C: "~ x",
})).gain(0.21)

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

stack(bass, string_ensemble_2, electric_guitar_muted, acoustic_guitar_nylon, kick, tambourine)