Strudelify

take on me

Gero

KeyG majorTempo170 bpm
0:00/0:00
// take on me — Gero
// 170 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 12 "B Tuba (Violinschlüssel)" tuba (copy of ch 13 "Tuba" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/5199146; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 149 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/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 · alto sax · "Alt Saxophon"
const alto_sax = note(`<
  ~@39 A ~@3 A B C@2 D@5 ~@15 A ~@3 A B C@2 E@4 F ~@4 G@3 H I@2 J@2 ~@4 K L M N K L M N K L M N O P Q R O P Q R O P S T
  ~@3 A ~@3 A B C@2 U V@3 A ~@3 A B C@2 W V@3 X Y
>`.pickRestart({
  A: "d5@4 ~@2 e5@4 ~@2 d5@3 ~", B: "b4", C: "[f#5@7 g5@9]/2", D: "[~@2 a5 b5@2 a5@2 g5@3 d6@30]/5",
  E: "[~@2 a5 b5@2 a5@2 g5@3 d6@22]/4", F: "d6", G: "f#5 f5 e5 d#5!2 e5 f5 f#5!2 f5 e5 d#5!2 e5 f5 f#5",
  H: "f#5 f5 e5 d#5!2 e5 f5 f#5 ~@8", I: "[b4 c5@11 g4@4]/2", J: "[g4 a4@15]/2", K: "e5!2 c5 a4 ~ a4 ~ d5",
  L: "~ d5 ~ d5 f#5!2 g5 a5", M: "g5!3 d5 ~ c5 ~ e5", N: "~ e5 ~ e5 d5!2 e5 d5", O: "~ e4 c5 e4 a4 c5 e4 a4",
  P: "c5 e4 a4 c5 ~ e4 c5 d5", Q: "~ g4 b4 d4 g4 b4 ~ d4", R: "b4 d4 g4 b4 ~ e4 a4 c5", S: "~@2 g5!6",
  T: "g5 f#5@2 f#5@2 e5@3", U: "~@4 a5 b5@3", V: "[~ d6@11]/3", W: "~@4 d5 d5@3", X: "~@8 [e4,e5] ~ [f#4,f#5]@4 ~@2",
  Y: "[g4,g5]@3 ~@13", // G
})).s("gm_alto_sax").gain(0.13)

// other · trumpet · "B♭ Trumpet 1"
const trumpet = note(`<
  ~@12 A B C D A B E D A B E F G ~ H I J ~ K@2 L ~ M N ~@3 O ~@3 O P Q@2 R@5 G ~ H I J ~ K@2 L ~ M N ~@3 O ~@3 O P Q@2
  S@4 T ~@4 U@3 V W@2 X@2 A B A B A B C D A B C D A B C D ~@10 M Y ~@3 O ~@3 O P Q@2 Z AA@3 O ~@3 O P Q@2 AB AA@3 AC AD
>`.pickRestart({
  A: "e5!2 c5 a4 ~ a4 ~ d5", B: "~ d5 ~ d5 f#5!2 g5 a5", C: "g5!3 d5 ~ c5 ~ e5", D: "~ e5 ~ e5 d5!2 e5 d5",
  E: "g5!3 e5 ~ c5 ~ e5", F: "~ e5 ~ e5 d5!2 d5@2", G: "c5@3 c5@2 b4 a4@2", H: "b4!2 c5 b4@2 g4@3",
  I: "~ e5!2 ~ e5@2 d5@2", J: "c5@3 c5!2 b4@2 a4", K: "[b4@2 c5 b4@2 a4 g4 g4@2 a4 b4@2 a4 g4@3]/2",
  L: "c5@3 c5@2 c5 c5@2", M: "~@2 g5!6", N: "g5@2 f#5 f#5@2 e5@3", O: "d5@4 ~@2 e5@4 ~@2 d5@3 ~", P: "b4",
  Q: "[f#5@7 g5@9]/2", R: "[~@2 a5 b5@2 a5@2 g5@3 d6@26 ~ d5@3]/5", S: "[~@2 a5 b5@2 a5@2 g5@3 d6@22]/4", T: "d6",
  U: "f#5 f5 e5 d#5!2 e5 f5 f#5!2 f5 e5 d#5!2 e5 f5 f#5", V: "f#5 f5 e5 d#5!2 e5 f5 f#5 ~@8", W: "[b4 c5@11 g4@4]/2",
  X: "[g4 a4@15]/2", Y: "g5 f#5@2 f#5@2 e5@3", Z: "~@4 a5 b5@3", AA: "[~ d6@11]/3", AB: "~@4 d5 d5@3",
  AC: "~@8 [e4,e5] ~ [f#4,f#5]@4 ~@2", AD: "[g4,g5]@3 ~@13",
})).s("gm_trumpet").gain(0.09)

// chords · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note(`<
  ~@16 A B C D A B C E ~@15 F ~@3 F G H@2 I@2 J K L ~@15 F ~@3 F G H@2 I@2 J K L ~@7 M N@2 O@2 ~@4 A B P D Q R S T Q R S
  T U V W X U V W X U V Y Z ~@3 F ~@3 F G H@2 AA AB@3 F ~ AC@2 F G H@2 AD AE J K AF AG
>`.pickRestart({
  A: "e4!2 c4 a3 ~ a3 ~ d4", B: "~ d4 ~ d4 f#4!2 g4 a4", C: "g4!3 e4 ~ c4 ~ e4", D: "~ e4 ~ e4 d4!2 e4 d4",
  E: "~ e4 ~ e4 d4!2 d4@2", F: "[g4,c5]@4 ~@2 g4@2 g4@2 ~@2 [g4,c5]@3 ~, ~@3 c5@2 ~@3", G: "g4",
  H: "[[a4,d5]@7 [b4,e5]@9]/2", I: "[~@2 a4 b4@2 a4@2 g4@3 [b4,g5]@6]/2", J: "[a4,f#5]", K: "[g4,e5]", L: "[g4,c5]",
  M: "~ b4", N: "[b4 c5@11 g4@4]/2", O: "[g4 a4@15]/2", P: "g4!3 d4 ~ c4 ~ e4",
  Q: "[e4,a4]!2 [c4,e4] [a3,c4] ~ [a3,c4] ~ [d4,f#4]", R: "~ [d4,f#4] ~ [d4,f#4] [f#4,a4]!2 [g4,b4] [a4,c5]",
  S: "[g4,b4]!3 [d4,g4] ~ [c4,e4] ~ [e4,g4]", T: "~ [e4,g4] ~ [e4,g4] [d4,f#4]!2 [e4,g4] [d4,f#4]", U: "e4!3 ~@4 f#4",
  V: "~ f#4 ~ f#4!2 ~@3", W: "d4!3 ~@4 g4", X: "~ g4 ~ g4!2 ~@2 g4", Y: "b4!3 ~@4 g4", Z: "~ g4 ~ g4!5",
  AA: "~@4 e5 e5@3", AB: "[~ d5@11]/3", AC: "[d4@7 e4@9]/2", AD: "~@4 a4 b4@3", AE: "~ [b4,g5]@3",
  AF: "~@8 e4 ~ f#4@4 ~@2", AG: "g4@3 ~@13",
})).s("gm_trumpet").gain(0.11)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@24 A B C D A B C D A E C F ~@3 G ~@3 H I J@2 K L M N@2 A B C D A B C D A E C F ~@3 G ~@3 H I J@2 K L M N@2 ~@4 I O P
  Q R@4 ~@4 S T U V W X Y Z W X Y Z AA AB C D AA AB C D AA AB C F ~@3 G ~@3 H I J@2 ~ L AC@2 H AD AE@2 H I J@2 K L M N
  AF AG
>`.pickRestart({
  A: "e3!3 ~@4 f#3", B: "~ f#3 ~ f#3!2 ~@3", C: "b3!3 ~@4 g3", D: "~ g3 ~ g3!2 ~@2 g3", E: "~ f#3 ~ f#3!2 ~@2 f#3",
  F: "~ g3 ~ g3!5", G: "d4@4 ~@2 e4@4 ~@2 d4@3 ~", H: "d4@2 ~ e4@2 ~ d4@2", I: "b3", J: "[f#4@7 g4@8 g4]/2",
  K: "g4!2 ~ g4 ~ g4 ~ g4", L: "~ g3@3", M: "f#3", N: "e3", O: "d4", P: "f4", Q: "e4", R: "e4/2",
  S: "e4!2 c4 a3 ~ a3 ~ d4", T: "~ d4 ~ d4 f#4!2 g4 a4", U: "g4!3 d4 ~ c4 ~ e4", V: "~ e4 ~ e4 d4!2 e4 d4",
  W: "g3!2 e3 c3 ~ c3 ~ f#3", X: "~ f#3 ~ f#3 a3!2 b3 c4", Y: "b3!3 g3 ~ e3 ~ g3", Z: "~ g3 ~ g3 f#3!2 g3 f#3",
  AA: "c4!3 ~@4 a3", AB: "~ a3 ~ a3!2 ~@3", AC: "[a3@7 b3@9]/2", AD: "g3", AE: "[f#3@7 g3@9]/2",
  AF: "~@8 e4 ~ f#4@4 ~@2", AG: "g4@3 ~@13",
})).s("gm_french_horn").gain(0.1)

// other · french horn · "Bariton Horn"
const french_horn_2 = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~@8 E F G H I ~ J K L ~ M N O ~ P Q R S@3 G T@3 U V@2 W@5 I ~ J K L ~ M N O ~ P Q R S@3 G T@3 U
  V@2 X@5 ~@4 F Y Z@2 AA@4 ~@4 AB AC AD AE AB AC AD AE AB AC AD AE ~@10 P AF R S@3 G T@3 U V@2 AG AH S@3 G T@3 U V@2
  AI@4 AJ AK
>`.pickRestart({
  A: "[b2 e3 b3@14]/2", B: "[b3@3 g3@13]/2", C: "c3/2", D: "[d3@3 b3@3 g3@8 ~@2]/2", E: "e3", F: "f#3", G: "g3",
  H: "a3", I: "c4@3 c4@2 b3 a3@2", J: "b3!2 ~ b3 ~ g3 ~@2", K: "~ e4 ~ a3 e4@2 d4@2", L: "c4@3 c4!2 b3@2 a3",
  M: "b3@2 c4 b3 ~ a3 ~ g3", N: "~ a3 ~ b3 a3@2 g3@2", O: "~@2 c4@3 c4!3", P: "~@2 g4!6", Q: "g4 f#4@3 f#4 e4@3",
  R: "g2", S: "[d3@7 e3@13 ~@4]/3", T: "[f#3@7 g3@13 ~@4]/3", U: "b3", V: "[f#4@7 g4@9]/2",
  W: "[~@2 a4 b4@2 a4@2 g4@3 d5@26 ~@4]/5", X: "[~@2 a4 b4@2 a4@2 g4@3 ~@22 d4@8, ~@5 d5@13 ~@2]/5", Y: "f#3@3 a3",
  Z: "c4/2", AA: "a3/2", AB: "e4!2 c4 a3 ~ a3 ~ d4", AC: "~ d4 ~ d4 f#4!2 g4 a4", AD: "g4!3 d4 ~ c4 ~ e4",
  AE: "~ e4 ~ e4 d4!2 e4 d4", AF: "g4 f#4@2 f#4@2 e4@3", AG: "g4!2 ~ g4 ~ g4 ~ g4", AH: "~ g2@3",
  AI: "[~@2 a4 b4@2 a4@2 g4@3 d5@22]/4", AJ: "~@8 e4 ~ f#4@4 ~@2", AK: "g4@3 ~@13",
})).s("gm_french_horn").gain(0.13)

// other · french horn · "Bariton Horn 2"
const french_horn_3 = note(`<
  ~@24 A B C D A B C D A E F G H I@3 J K@3 L M N O P Q R@2 A B C D A B C D A E F G H I@3 J K@3 L M N O P Q R@2 ~@4 S T
  U@2 V@2 W@2 ~@4 X Y Z AA AB AC AD AE AB AC AD AE ~@10 AF AG H I@3 J K@3 L M N O AH I@3 J K@3 L M N O P Q R AI AJ
>`.pickRestart({
  A: "e3!3 ~@4 f#3", B: "~ f#3 ~ f#3!2 ~@3", C: "d3!3 ~@4 g3", D: "~ g3 ~ g3!2 ~@2 g3", E: "~ f#3 ~ f#3!2 ~@2 f#3",
  F: "e3!3 ~@4 g3", G: "~ g3 ~ g3!5", H: "g2", I: "[a2@7 b2@13 ~@4]/3", J: "g3", K: "[a3@7 b3@13 ~@4]/3",
  L: "b3!3 ~@4 b3", M: "a3!3 ~@4 a3", N: "g3!3 ~@4 g3", O: "g3!2 ~ g3 ~ g3 ~ g3", P: "~ g3@3", Q: "f#3", R: "e3",
  S: "d4", T: "b3", U: "a3", V: "c4/2", W: "d4/2", X: "e3!2 c3 a2 ~ a2 ~ d3", Y: "~ d3 ~ d3 f#3!2 g3 a3",
  Z: "g3!3 d3 ~ c3 ~ e3", AA: "~ e3 ~ e3 d3!2 e3 d3", AB: "g3!2 e3 c3 ~ c3 ~ f#3", AC: "~ f#3 ~ f#3 a3!2 b3 c4",
  AD: "b3!3 g3 ~ e3 ~ g3", AE: "~ g3 ~ g3 f#3!2 g3 f#3", AF: "~@2 g3!6", AG: "g3 f#3@2 f#3@2 e3@3", AH: "~ g2@3",
  AI: "~@8 e3 ~ f#3@4 ~@2", AJ: "g3@3 ~@13",
})).s("gm_french_horn").gain(0.3)

// other · trombone · "Trombone 2"
const trombone = note(`<
  ~@24 A B C D A B C D A E C F G H@3 I J@3 K@2 L M N O P@2 A B C D A B C D A E C F G H@3 I J@3 K@2 L M N O P@2 ~@4 Q R
  S@2 T@2 U@2 ~@4 V W X Y V W X Y Z W Z AA A B C D A B C D A E AB AC G H@3 I J@3 K@2 L M AD H@3 I J@3 K@2 L M N O R AE
  AF
>`.pickRestart({
  A: "c3!3 ~@4 d3", B: "~ d3 ~ d3!2 ~@3", C: "g3!3 ~@4 e3", D: "~ e3 ~ e3!2 ~@2 e3", E: "~ d3 ~ d3!2 ~@2 d3",
  F: "~ e3 ~ e3!5", G: "g2", H: "[f#3@7 g3@13 ~@4]/3", I: "g3", J: "[d4@7 e4@13 ~@4]/3", K: "d4!3 ~@4 d4",
  L: "b3!3 ~@4 b3", M: "c4!2 ~ c4 ~ c4 ~ c4", N: "~ g3@3", O: "f#3", P: "e3", Q: "d4", R: "b3", S: "a3", T: "c4/2",
  U: "d4/2", V: "a3!2 ~ a3 ~@3 d4", W: "~ d4!2 ~ d4!2 ~@2", X: "g3!2 ~ g3 ~@3 c4", Y: "~ c4!2 ~ b3!2 ~@2",
  Z: "a3!2 ~@5 d4", AA: "~ d4 ~@2 d4!3 ~", AB: "~@2 g3!6", AC: "g3 f#3@2 f#3@2 e3@3", AD: "~ g2@3",
  AE: "~@8 e3 ~ f#3@4 ~@2", AF: "g3@3 ~@13",
})).s("gm_trombone").gain(0.1)

// bass · tuba
const bass = note(`<
  ~@8 A B A B C D E F C D E F C D G D H I J K H I J K H L M N O P Q R O P Q R S T U V O P W X H I J K H I J K H L M N O
  P Q R O P Q R S T U V O P W X Y Z AA AB Y Z AA AB A B AC AD ~@4 C D E F C D E F G D G AE H I J K H I J K H L M N O P Q
  R O P Q R S T U V O P Q R O P Q R S T U V AF AG AH AI AJ
>`.pickRestart({
  A: "a2 ~@2 a1 ~@2 a2 a1", B: "a2!2 ~ a1 ~@2 a2 a1", C: "a2!2 ~ a2 ~@3 d3", D: "~ d3!2 ~ d3!2 ~@2",
  E: "g2!2 ~ g2 ~@3 c3", F: "~ c3!2 ~ b2!2 ~@2", G: "a2!2 ~@5 d3", H: "a2!3 ~@4 d3", I: "~ d3 ~ d3!2 ~@3",
  J: "g2!3 ~@4 c3", K: "~ c3 ~ c3 b2 ~@2 b2", L: "~ d3 ~ d3!2 ~@2 d3", M: "e3!3 ~@4 c3", N: "~ c3 ~ c3 d3!4",
  O: "g2!2 g2@2 g2@2 g2@2", P: "f#2!4", Q: "e2!4", R: "c3@2 c3@2 c3!4", S: "g2!3 ~@4 g2", T: "f#2!3 ~@4 f#2",
  U: "e2!3 ~@4 e2", V: "c3!2 ~ c3 ~ c3 ~ c3", W: "c3!2 c3@2 c3!2 c3@2", X: "d3!8", Y: "b2 ~@2 b1 ~@2 b2 b1",
  Z: "b2!2 ~ b1 ~@2 b2 b1", AA: "f3 ~@2 f2 ~@2 f3 f2", AB: "f3!2 ~ f2 ~@2 f3 f2", AC: "d3 ~@2 d2 ~@2 d3 d2",
  AD: "d3!2 d2 ~ d2 ~ d2 ~", AE: "~ d3 ~@2 d3!3 ~", AF: "~ g2@3", AG: "f#2", AH: "e2", AI: "~@8 e2 ~ f#2@4 ~@2",
  AJ: "g2@3 ~@13",
})).s("gm_tuba").gain(0.4)

// drums · kick
const kick = s("bd").struct("<A@44 B@3 A@25 B@3 A@17 C D@2 E A@32 B@3 A@9 B@3 A@5 ~>".pickRestart({
  A: "x!2", B: "x", C: "x ~@6 x", D: "x!2 ~@5 x", E: "x!2 ~@6",
})).gain(0.01)

// drums · snare
const snare = s("sd").struct("<A@44 B@2 C D A@24 B@2 C D A@16 ~@3 E A@32 B@2 C D A@8 B@2 C D A@3 F ~>".pickRestart({
  A: "~ x ~ x", B: "~ x", C: "~@4 x ~@2 x", D: "~@2 x ~ x!4", E: "~@4 x!2 ~@2", F: "~ x!2 ~",
})).gain(0.01)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!92 [~ x ~ x]!3 [~ x ~@2] [x!8]!51 [x!4 ~@4] ~>").gain(0.01)

// drums · low tom
const low_tom = s("lt").struct("<~@148 x>").gain(0.02)

// drums · crash
const crash = s("cr").struct("<~@147 [~@5 x ~@2] ~>").gain(0.01)

// drums · high tom
const high_tom = s("ht").struct("<~@95 [~@6 x!2] ~@53>").gain(0.01)

stack(
  alto_sax, trumpet, trumpet_2, french_horn, french_horn_2, french_horn_3, trombone, bass, kick, snare, hihat, low_tom,
  crash, high_tom
)

More by Gero