Strudelify

Ich Hab Dich Gern

Emanuel Schuster

KeyF majorTempo112 bpm
0:00/0:00
// Ich Hab Dich Gern — Emanuel Schuster
// 112 bpm, 2/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 9 "Basse" named as a bass, played on electric bass finger (its tuba patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5920150; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet · "Trompette"
const trumpet = note(`<
  A B C ~@4 D E F G H ~@3 D E F G I ~@4 J@2 K L ~@4 M@2 N O P ~ Q R S T ~@6 U V W X N Y Q R S T Z@2 AA Y ~@6 AA AB AC W
  N AD AE AF AG AH AI@2 AJ AK AL@2 AM AN AO AP AQ AR AS ~ Q R S T ~@6 U V W X N Y Q R S T Z@2 AA Y ~@6 AA AB AC W N AD
  AE AF AG AH
>`.pickRestart({
  A: "bb4@3 a4 bb4@2 c5@2", B: "d5 c5 d5 eb5", C: "f5@4 ~@4 [bb4,bb5]@3 ~@5", D: "~@4 bb3 ~ eb4 ~", E: "g4", F: "f4",
  G: "~@2 g4!2 bb4@2 g4@2", H: "bb4 ~@3", I: "eb4 ~@3", J: "a4", K: "ab4", L: "ab4 ~@3", M: "~@4 bb4 ~ bb4 ~ bb4@8",
  N: "eb5", O: "eb5@4 ~@4 eb5@3 ~@5", P: "db4 [eb4,g4] ab4@2 ~@12", Q: "~@6 eb4 d4", R: "eb4 ~ eb4 ~ f4@2 eb4@2",
  S: "~@6 ab4 g4", T: "ab4 ~ ab4 ~ c5@2 ab4@2", U: "~@2 bb4!2 bb4@4", V: "~@2 g4 bb4 eb5@4", W: "g5@3 f5",
  X: "f5@3 eb5", Y: "eb5 ~", Z: "~@2 ab4!2 ab4@4", AA: "ab4 ~ ab4!3 ~ c5 ~", AB: "eb5 ~@3", AC: "db5@3 g5", AD: "c5",
  AE: "~@2 eb5!2 eb5@2 eb5!2", AF: "eb5@4 eb5@2 eb5@2 eb5@3 eb5@2 eb5@3", AG: "ab5", AH: "ab5@4 ~@4 ab5@3 ~@5",
  AI: "~ c5 ~ c5", AJ: "c5@3 ~@5 eb5@3 ~@5", AK: "eb5@3 ~@13", AL: "~ eb5 ~ eb5", AM: "eb5@3 ~@5 g5@3 ~@5",
  AN: "g5@3 ~@9 eb4 ~ f4 ~", AO: "g4@12 g4 ~ ab4 ~", AP: "bb4@12 bb4 ~ c5 ~", AQ: "db5@3 c5 bb4 ~ ab4 ~",
  AR: "g4 ~@3 bb4@4", AS: "ab4@3 ~@13",
})).s("gm_trumpet").gain(0.11)

// other · trumpet · "Cornet 1"
const trumpet_2 = note(`<
  A B C ~ D E D F G H I J D E D F G H I K ~@4 L M N O D E D P G H I Q R ~ S ~ I ~ T U I V W X G N Y Z T AA S ~ I ~ AB AC
  T AA AD Y T AE AF AG T AA AD Y T AE AB D AE AH AI@2 AJ AK AL@2 AM AN AO AP AQ AR AS ~ S ~ I ~ T U I V W X G N Y Z T AA
  S ~ I ~ AB AC T AA AD Y T AE AF AG T AA AD Y T AE AB D AE AH
>`.pickRestart({
  A: "bb4@3 a4 bb4@2 c5@2", B: "d5 c5 d5 eb5", C: "f5@4 ~@4 [bb4,bb5]@3 ~@5", D: "bb4 g4", E: "~@4 ab4 ~ c5 ~",
  F: "~@4 bb3 ~ eb4 ~", G: "g4", H: "f4", I: "eb4", J: "eb4 bb3 c4 d4 eb4 f4 g4 ab4", K: "eb4 ~@3", L: "f4 eb5",
  M: "d5 c5", N: "bb4", O: "bb4@2 d4 eb4 f4 g4 ab4 a4", P: "~@4 bb4 ~ ab4 ~", Q: "eb4@4 ~@4 eb5@3 ~@5",
  R: "eb5 [f5,g5] ab5@2 ~@12", S: "c4", T: "c5", U: "ab4 f4", V: "eb4 ~", W: "bb4@3 ab4", X: "ab4@3 g4", Y: "eb5@3 db5",
  Z: "db5@3 c5", AA: "c5 ~", AB: "c5 ab4", AC: "f4 db5", AD: "bb4@3 eb5", AE: "ab4", AF: "bb4@3 a4", AG: "bb4@3 b4",
  AH: "ab4@4 ~@4 ab4@3 ~@5", AI: "~ ab4 ~ ab4", AJ: "g4@3 ~@5 c5@3 ~@5", AK: "c5@3 ~@13", AL: "~ c5 ~ c5",
  AM: "bb4@3 ~@5 eb5@3 ~@5", AN: "eb5@3 ~@9 eb4 ~ f4 ~", AO: "g4@12 g4 ~ ab4 ~", AP: "bb4@12 bb4 ~ c5 ~",
  AQ: "db5@3 c5 bb4 ~ ab4 ~", AR: "g4 ~@3 bb4@4", AS: "ab4@3 ~@13",
})).s("gm_trumpet").gain(0.06)

// other · trumpet · "Cornet 2"
const trumpet_3 = note(`<
  A B C ~ D E D F G H I J D E D F G H I K ~@4 L M H N D E D O G H I P Q ~ R ~ S ~ I T S U V W I X V W I Y R ~ S ~ Z AA I
  Y AB V I S AC AD I Y AB V I S Z AE S AF AG@2 AH AI AJ@2 AK AL AM AN AO AP AQ ~ R ~ S ~ I T S U V W I X V W I Y R ~ S ~
  Z AA I Y AB V I S AC AD I Y AB V I S Z AE S AF
>`.pickRestart({
  A: "bb3@3 a3 bb3@2 c4@2", B: "d4 c4 d4 eb4", C: "f4@4 ~@4 bb4@3 ~@5", D: "g4 eb4", E: "~@4 c4 ~ ab4 ~",
  F: "~@4 bb3 ~ eb4 ~", G: "bb3", H: "d4", I: "eb4", J: "eb4 g3 ab3 bb3 c4 d4 eb4 f4", K: "eb4 ~@3", L: "a3 g4",
  M: "f4 eb4", N: "d4@2 bb3 c4 d4 eb4 f4 gb4", O: "~@4 d4 ~ c4 ~", P: "eb4@4 ~@4 g4@3 ~@5", Q: "c5 ~@3", R: "ab3",
  S: "c4", T: "f4 db4", U: "c4 ~", V: "g4@3 f4", W: "f4@3 eb4", X: "g4", Y: "eb4 ~", Z: "eb4 c4", AA: "db4@2 f4 e4",
  AB: "db4@3 g4", AC: "db4@3 c4", AD: "db4@3 d4", AE: "db4 bb3", AF: "c4@4 ~@4 c4@3 ~@5", AG: "~ f4 ~ f4",
  AH: "e4@3 ~@5 g4@3 ~@5", AI: "g4@3 ~@13", AJ: "~ ab4 ~ ab4", AK: "g4@3 ~@5 bb4@3 ~@5", AL: "bb4@3 ~@9 eb4 ~ f4 ~",
  AM: "g4@12 g4 ~ ab4 ~", AN: "bb4@12 bb4 ~ c5 ~", AO: "db5@3 c5 bb4 ~ ab4 ~", AP: "g4 ~@3 bb4@4", AQ: "ab4@3 ~@13",
})).s("gm_trumpet").gain(0.06)

// other · tuba · "Euphonium 1"
const tuba = note(`<
  A B C D E F G H I J K L E F G H I J K M N O P Q R S T U E F G V W X K Y Z ~ AA ~ AB ~ Q AC AB AD AE AF Q P AE AF Q AG
  AA ~ AB ~ AH AI Q AG AJ AE Q AB AK AL Q AG AJ AE Q AB AH AM AB AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA ~ AA ~ AB ~ Q
  AC AB AD AE AF Q P AE AF Q AG AA ~ AB ~ AH AI Q AG AJ AE Q AB AK AL Q AG AJ AE Q AB AH AM AB AN
>`.pickRestart({
  A: "bb3@3 a3 bb3@2 c4@2", B: "d4 c4 d4 eb4", C: "f4@4 ~@4 d4@3 ~@5", D: "~@2 bb2 ~ c3 ~ d3 ~", E: "eb3@6 g3 ab3",
  F: "bb3@4 c4 ~ ab3 ~", G: "g3@2 eb4 c4", H: "bb3", I: "~ bb2 eb3 g3", J: "ab3 d3", K: "g3", L: "g3 ~@3",
  M: "g3 eb4 f4 g4", N: "ab4@6 ab4 ~", O: "c4 ab4", P: "g4", Q: "eb4", R: "f4 eb4", S: "d4 c4", T: "d4", U: "d4 ~@3",
  V: "bb3@4 d4 ~ c4 ~", W: "bb3 ~ bb2@2 eb3@2 g3@2", X: "bb3 bb2 d3 ab3", Y: "g3@4 ~@4 eb4@3 ~@5", Z: "c4 ~@3",
  AA: "ab3", AB: "c4", AC: "f4 db4", AD: "c4 ~", AE: "g4@3 f4", AF: "f4@3 eb4", AG: "eb4 ~", AH: "eb4 c4",
  AI: "db4@2 f4 e4", AJ: "db4@3 g4", AK: "db4@3 c4", AL: "db4@3 d4", AM: "db4 bb3", AN: "c4@4 ~@4 c4@3 ~@5",
  AO: "f3@3 e3 f3@2 g3@2", AP: "ab3 f3", AQ: "c4@3 ~@5 c4@3 ~@5", AR: "c4@3 ~@13", AS: "ab3@3 g3 ab3@2 bb3@2",
  AT: "c4 ab3", AU: "eb4@3 ~@5 eb4@3 ~@5", AV: "eb4@3 ~@9 eb3 ~ f3 ~", AW: "g3@12 g3 ~ ab3 ~", AX: "bb3@12 bb3 ~ c4 ~",
  AY: "db4@3 c4 bb3 ~ ab3 ~", AZ: "g3@2 ~@6 eb3@3 f3@2 g3@3", BA: "ab3@3 ~@13",
})).s("gm_tuba").gain(0.13)

// bass · electric bass finger · "Basse"
const bass = note(`<
  A B C D ~@16 E F G H I J K L ~@4 M@2 N O P Q E@4 F R S T U@5 V S W E@4 F R E X U V E@2 V@2 Y Z U V E@2 F V AA AB AC AD
  AE AF AG AH AI AJ ~@6 E@4 F R S T U@5 V S W E@4 F R E X U V E@2 V@2 Y Z U V E@2 F V AA AB
>`.pickRestart({
  A: "bb1@3 a1 bb1@2 c2@2", B: "d2 c2 d2 eb2", C: "f2@4 ~@4 bb1@3 ~@5", D: "~@2 bb1 ~ c2 ~ d2 ~", E: "ab1 ~ eb2 ~",
  F: "ab1 ~ ab1 ~", G: "eb2@2 d2 db2", H: "c2 ~ c2 ~", I: "f2 ~ c2 ~", J: "f2 ~ f2 ~", K: "bb2 ~ ab2@2", L: "g2 f2",
  M: "bb1 ~ bb1 ~", N: "eb2@2 bb2 g2", O: "eb2@4 ~@4 eb2@3 ~@5", P: "ab1 ~ f2@2", Q: "eb2 c2", R: "db2 ~ db2 ~",
  S: "ab1 ~ c2 ~", T: "eb2 ~ ab1 ~", U: "eb2 ~ bb1 ~", V: "eb2 ~ eb2 ~", W: "eb2 ~ c2 ~", X: "c2 ~ ab1 ~", Y: "ab2 g2",
  Z: "f2 eb2", AA: "ab1 ~ eb2 c2", AB: "ab1@4 ~@4 ab1@3 ~@5", AC: "f2@3 e2 f2@2 g2@2", AD: "ab2 f2",
  AE: "c3@3 ~@5 c3@3 ~@5", AF: "c3@3 ~@13", AG: "ab2@3 g2 ab2@2 bb2@2", AH: "c3 ab2", AI: "eb3@3 ~@5 eb3@3 ~@5",
  AJ: "eb3@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.64)

// bass · electric bass finger · "Basse" · soft notes
const bass_soft = note("<~@4 A B A@3 C A D A B A@3 C A E ~@8 A B A F ~@54 G H I J K L ~@40>".pickRestart({
  A: "eb2 ~ bb1 ~", B: "eb2 ~ ab1 ~", C: "d2 ~ bb1 ~", D: "eb2 d2 c2 bb1", E: "eb2 ~@3", F: "eb2 ~ eb2 ~@5",
  G: "~@2 eb2 ~ eb2 ~@3", H: "~@4 eb2@2 ~@2 eb2@2 ~@2 bb2 ~ c3 ~", I: "db3@3 c3 bb2 ~ ab2 ~",
  J: "g2@2 ~@6 eb2@3 f2@2 g2@3", K: "ab2@3 ~@5 f2@8", L: "eb2 c2",
})).s("gm_electric_bass_finger").gain(0.32)

stack(trumpet, trumpet_2, trumpet_3, tuba, bass, bass_soft)