Strudelify

Wer hat dir das Kussen beigebracht

BAGINSKY,GABY

KeyD♭ majorTempo126 bpm
0:00/0:00
// Wer hat dir das Kussen beigebracht — BAGINSKY,GABY
// 126 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · fretless bass · "FRETLESS"
const bass = note(`<
  A B@2 C@2 B@2 C@4 B@4 C@2 D E C F D B C@2 B@2 C@2 B@2 C@2 B@2 C@2 D C B C B@2 C@2 B@2 C@4 B@4 C@2 D E C F D B C@2 B@2
  C@2 B@2 C@2 B@2 C@2 D C B C G H@2 G@2 H@2 G@2 H@2 G@2 I G H G I G H G H@2 G@2 H@2 G J K
>`.pickRestart({
  A: "~@3 db2", B: "ab1@2 ~ ab1 c2@2 eb2@2 ab1@2 ~ ab1 c2@2 eb2@2",
  C: "db2@2 ~ ab1 ab1@2 bb1@2 db2@2 ~ ab1 ab1@2 bb1@2", D: "gb1@2 ~ gb1 bb1@2 db2@2 gb1@2 ~ gb1 bb1@2 db2@2",
  E: "gb1@2 ~ gb1 a1@2 db2@2 gb1@2 ~ gb1 a1@2 db2@2", F: "bb1@2 ~ f1 f1@2 ab1@2 bb1@2 ~ f1 f1@2 ab1@2",
  G: "d2@2 ~ a1 a1@2 b1@2 d2@2 ~ a1 a1@2 b1@2", H: "a1@2 ~ a1 db2@2 e2@2 a1@2 ~ a1 db2@2 e2@2",
  I: "g1@2 ~ g1 b1@2 d2@2 g1@2 ~ g1 b1@2 d2@2", J: "d2@2 ~ a1 a1@2 b1@2 d2@2 ~ a1!5", K: "d2 ~@3",
})).s("gm_fretless_bass").gain(0.4)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@2 B@2 A@2 B@2 ~@16 A@2 B@2 A@2 B@2 A@2 B@2 C B A B A@2 B@2 A@2 B@2 ~@16 A@2 B@2 A@2 B@2 A@2 B@2 C B A D E F@2 G@2
  F@2 G@2 F@2 G@2 H G F G H G F G F@2 G@2 F@2 G I J
>`.pickRestart({
  A: "~@2 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~", // Ab
  B: "~@2 [ab3,db4,f4]!2 ~@2 [ab3,db4,f4] ~@3 [ab3,db4,f4]!2 ~@2 [ab3,db4,f4] ~", // Db
  C: "~@2 [bb3,db4,gb4]!2 ~@2 [bb3,db4,gb4] ~@3 [bb3,db4,gb4]!2 ~@2 [bb3,db4,gb4] ~", // Gb
  D: "~@2 [ab3,db4,f4]!2 ~@2 [ab3,db4,f4]@4 ~@2 [ab3,db4,f4]@4", E: "[a3,d4,gb4]@8 ~@2 [a3,d4,gb4]!2 ~@2 [a3,d4,gb4] ~",
  F: "~@2 [a3,db4,e4]!2 ~@2 [a3,db4,e4] ~@3 [a3,db4,e4]!2 ~@2 [a3,db4,e4] ~", // A
  G: "~@2 [a3,d4,gb4]!2 ~@2 [a3,d4,gb4] ~@3 [a3,d4,gb4]!2 ~@2 [a3,d4,gb4] ~", // D
  H: "~@2 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~", // G
  I: "~@2 [a3,d4,gb4]!2 ~@2 [a3,d4,gb4] ~@3 [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~", J: "[d3,a3,d4,gb4]@3 ~@13",
})).s("gm_epiano2").gain(0.28)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  A B@2 C@2 D@2 E F ~@14 G H ~@5 I J K L@2 ~@5 A B@2 C@2 D@2 E F ~@14 G H ~@5 I J K L@2 ~@12 M N O P@2 ~@9 Q R@2 S@2 T@2
  U V W
>`.pickRestart({
  A: "~@10 [f4,db5]!2 [f4,db5]@2 [f4,db5] ~", // Db
  B: "[[ab4,c5,ab5]@3 ~ [ab4,c5,ab5]@3 ~ [ab4,c5,ab5]@3 ~ [gb4,bb4,gb5]@2 [eb4,gb4,eb5]@10 ~@2 [eb4,gb4,gb5]!2 [eb4,gb4,gb5]@2 [eb4,gb4,gb5]@2]/2", // Ab Gb Ebm
  C: "[[gb4,bb4,bb5]@3 ~ [gb4,bb4,bb5]@3 ~ [gb4,bb4,bb5]@3 ~ [f4,ab4,ab5]@2 [db4,f4,f5]@10 ~@2 [f4,db5]!2 [f4,db5]@2 [f4,db5]@2]/2", // Gb Fm Db
  D: "[[ab4,c5,ab5]@3 ~ [ab4,c5,ab5]@3 ~ [ab4,c5,ab5]@3 ~ [gb4,bb4,gb5]@2 [eb4,gb4,eb5]@7 ~ [eb4,gb4,gb5]@2 [eb4,gb4,gb5]@3 [db4,f4,f5]@2 [eb4,gb4,gb5]@3]/2", // Ab Gb Ebm Db Ebm
  E: "[db4,f4,f5]@11 ~ [db5,f5] [eb5,gb5] [f5,ab5] [eb5,gb5]", F: "[db5,f5] ~",
  G: "~@6 [f4,db5]!2 [f4,db5]@2 [db4,ab4] ~ [db4,ab4]@2 [bb3,gb4] ~", H: "[db4,f4]@7 ~@9",
  I: "~@6 [gb4,eb5]@2 [gb4,eb5]@3 [f4,db5]@2 [gb4,eb5]@3", // Ebm Db Ebm
  J: "[db5,gb5]@6 [db5,f5]!2 [db5,f5]@4 [f4,db5] [gb4,eb5] [ab4,f5] [gb4,eb5]", // Gb5 Db Ebm Db Ebm
  K: "[f4,db5] [db4,f4] [eb4,gb4] [e4,g4]", L: "[[f4,ab4]@4 [f4,ab4]@4 [f4,ab4]@4 [eb4,gb4]@2 [c4,eb4]@5 ~@13]/2",
  M: "~@6 [g4,e5]@2 [g4,e5]@3 [gb4,d5]@2 [g4,e5]@3", // C D C
  N: "[d5,g5]@6 [d5,gb5]!2 [d5,gb5]@4 [gb4,d5] [g4,e5] [a4,gb5] [g4,e5]", O: "[gb4,d5] [d4,gb4] [e4,g4] [f4,ab4]",
  P: "[[gb4,a4]@4 [gb4,a4]@4 [gb4,a4]@4 [e4,g4]@2 [db4,e4]@5 ~@13]/2", Q: "~@10 [gb4,d5]!2 [gb4,d5]@2 [gb4,d5] ~",
  R: "[[a4,db5,a5]@3 ~ [a4,db5,a5]@3 ~ [a4,db5,a5]@3 ~ [g4,b4,g5]@2 [e4,g4,e5]@10 ~@2 [e4,g4,g5]!2 [e4,g4,g5]@2 [e4,g4,g5]@2]/2", // A G Em
  S: "[[g4,b4,b5]@3 ~ [g4,b4,b5]@3 ~ [g4,b4,b5]@3 ~ [gb4,a4,a5]@2 [d4,gb4,gb5]@10 ~@2 [gb4,d5]!2 [gb4,d5]@2 [gb4,d5]@2]/2", // G Gbm D
  T: "[[a4,db5,a5]@3 ~ [a4,db5,a5]@3 ~ [a4,db5,a5]@3 ~ [g4,b4,g5]@2 [e4,g4,e5]@7 ~ [e4,g4,g5]@2 [e4,g4,g5]@3 [d4,gb4,gb5]@2 [e4,g4,g5]@3]/2", // A G Em D Em
  U: "[d4,gb4,gb5]@11 ~ [d5,gb5] [e5,g5] [gb5,a5] [e5,g5]", V: "[d5,gb5]@11 ~ [a4,gb5,a5]!4", W: "[gb4,d5,d6]@3 ~@13",
})).s("gm_brass_section").gain(0.33)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@2 B@2 A@2 B@2 C@2 D@4 E@2 F@2 G@2 H I J@2 A@2 B@2 A@2 B@2 A@2 B@2 K@2 L M A@2 B@2 A@2 B@2 C@2 D@4 E@2 F@2 G@2 H I
  J@2 A@2 B@2 A@2 B@2 A@2 B@2 K@2 L M N O@2 P@2 O@2 P@2 O@2 P@2 Q@2 R N Q@2 R N O@2 P@2 O@2 S@3
>`.pickRestart({
  A: "[ab3,eb4,c5]/2", B: "[ab3,f4,db5]/2", C: "[db4,ab4,f5]/2", D: "[c4,ab4,eb5]/2", E: "[db4,ab4,db5]/2",
  F: "[bb4 a4, [db4,gb5]]/2", G: "[ab4 bb4, [db4,f5]]/2", H: "db5@3 f5, [bb3,gb4]", I: "[c4,eb5]@2 db5 c5, ab4, ~ ab3",
  J: "[~@5 f5 gb5 ab5, db4, [f4,db5]@3 ab4]/2", K: "[[bb3,gb4] [ab3,f4], db5]/2", L: "[ab3,eb4,c5]", M: "[ab3,f4,db5]",
  N: "[a3,gb4,d5]", O: "[a3,e4,db5]/2", P: "[a3,gb4,d5]/2", Q: "[[b3,g4] [a3,gb4], d5]/2", R: "[a3,e4,db5]",
  S: "[[a3,gb4,d5]@17 ~@7]/3", // D
})).s("gm_string_ensemble_1").gain(0.21)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@9 A@2 B@4 A@2 C@2 D E A B A@2 ~@24 A@2 B@4 A@2 C@2 D E A B A@2 ~@46
>`.pickRestart({
  A: "~@2 db3!2 ~@2 db3 ~@3 db3!2 ~@2 db3 ~", B: "~@2 eb3!2 ~@2 eb3 ~@3 eb3!2 ~@2 eb3 ~",
  C: "~@2 gb3!2 ~@2 gb3 ~@3 gb3!2 ~@2 gb3 ~", D: "~@2 f3!2 ~@2 f3 ~@2 f3!3 ~@2 f3 ~",
  E: "~@2 f3!2 ~@2 f3 ~@3 f3!2 ~@2 f3 ~",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.7)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note(`<
  ~@12 A B ~@2 C D ~@8 A E C F ~@4 A E C D ~@14 A B ~@2 C D ~@8 A E C F ~@4 A E C D ~@5 G H I J ~@4 G H I K ~@16
>`.pickRestart({
  A: "eb5@5 ~ c5@5 ~ ab4@4", B: "~ eb4@3 ~@4", C: "ab5@5 ~ f5@5 ~ db5@4", D: "~ bb4@3 ~@4", E: "~ f4@3 ~@4",
  F: "~ ab4@3 ~@4", G: "e5@5 ~ db5@5 ~ a4@4", H: "~ gb4@3 ~@4", I: "a5@5 ~ gb5@5 ~ d5@4", J: "~ a4@3 ~@4",
  K: "~ b4@3 ~@4",
})).s("gm_lead_3_calliope").gain(0.21).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!109 x>").gain(0.52)

// drums · snare
const snare = s("sd").struct(`<
  [~@10 x!2 ~@4]
  [~ x ~ x]!79
  [~@4 x ~@6 x!2 ~@3]
  [~ x ~ x]!16
  [~@4 x ~@6 x!2 ~@3]
  [~ x ~ x]!12
  ~
>`).gain(0.46)

// drums · clap
const clap = s("cp").struct("<~@25 [~ x ~ x]!16 ~@24 [~ x ~ x]!37 ~@9>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@8 B ~@7 B ~@11 B ~@7 C ~
>`.pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "~@14 x!2",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~ x!3 ~ x ~ x ~ x!3 ~ x ~]!109 ~>").gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@8 B ~@7 B ~@7 C ~@3 B ~@7 D ~
>`.pickRestart({
  A: "~@3 x", B: "~@4 x ~ x ~@3 x!2 ~@4", C: "~@7 x", D: "~@4 x ~ x ~@3 x ~ x!2 ~@2",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@8 A ~@7 A ~@11 A ~@7 B ~
>`.pickRestart({
  A: "~@2 x!2 ~@12", B: "~@2 x!2 ~@4 x ~@7",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A@2 ~@7 A ~@7 A ~@3 A ~@7 A
>`.pickRestart({
  A: "x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@102 [~ x!3] [x!4]!7 ~>").gain(0.52)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [x!8]!16 [x!16]!93 x>").gain(0.88)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~ [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16 ~@94>").gain(0.59)

stack(
  bass, epiano2, brass_section, string_ensemble_1, electric_guitar_muted, lead_3_calliope, kick, snare, clap, low_tom,
  hihat, mid_tom, high_tom, crash, ride, cabasa, cabasa_soft
)