Strudelify

Buenas Dias weisse Taube

Frans Bauer

KeyB♭ majorTempo92 bpm
0:00/0:00
// Buenas Dias weisse Taube — Frans Bauer
// 92 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 82 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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.

// chords · marimba · "#Marimba"
const marimba = note(`<
  ~ A B C A D B C A C E F G H E F G E I J K L J M K L N J K L J M K L O L E F G H E F G E I J K L J M K L P J K L J M K
  L J K L J M K L N J K L J M K L N J K L J M Q
>`.pickRestart({
  A: "~@4 [bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@7 [bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@3", // Bb
  B: "~@4 [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4] ~@5 [g3,bb3,eb4,g4] ~@7 [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4] ~@5 [g3,bb3,eb4,g4] ~@3", // Eb
  C: "~@4 [a3,c4,f4,a4] ~ [a3,c4,f4,a4] ~@5 [a3,c4,f4,a4] ~@7 [a3,c4,f4,a4] ~ [a3,c4,f4,a4] ~@5 [a3,c4,f4,a4] ~@3", // F
  D: "~@4 [g3,bb3,d4,g4] ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@7 [g3,bb3,d4,g4] ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@3", // Gm
  E: "[bb3,d4,g4] ~ [bb3,d4,g4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [g3,bb3,d4] ~@3 [d4,g4,bb4] ~@3 [bb3,d4,g4] ~ [bb3,d4,g4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [g3,bb3,d4] ~@3 [d4,g4,bb4] ~@3", // Gm
  F: "[bb3,d4,f4] ~ [bb3,d4,f4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [f3,bb3,d4] ~@3 [d4,f4,bb4] ~@3 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [f3,bb3,d4] ~@3 [d4,f4,bb4] ~@3", // Bb
  G: "[a3,c4,f4] ~ [a3,c4,f4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [f3,a3,c4] ~@3 [c4,f4,a4] ~@3 [a3,c4,f4] ~ [a3,c4,f4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [f3,a3,c4] ~@3 [c4,f4,a4] ~@3", // F
  H: "[bb3,d4,g4] ~ [bb3,d4,g4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [g3,bb3,d4] ~@3 [d4,g4,bb4] ~@3 [bb3,d4,g4] ~@3 [c4,f4,a4] ~ [d4,g4,bb4] ~@3 [c4,f4,a4] ~ [bb3,d4,g4] ~@3", // Gm F Gm F Gm
  I: "[a3,c4,f4] ~ [a3,c4,f4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [f3,a3,c4] ~@3 [c4,f4,a4] ~@3 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [a3,c4,f4] ~@3 [c4,f4,a4] ~@3", // F Eb F
  J: "[bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@7 [bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@7", // Bb
  K: "[g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4] ~@5 [g3,bb3,eb4,g4] ~@7 [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4] ~@5 [g3,bb3,eb4,g4] ~@7", // Eb
  L: "[a3,c4,f4,a4] ~ [a3,c4,f4,a4] ~@5 [a3,c4,f4,a4] ~@7 [a3,c4,f4,a4] ~ [a3,c4,f4,a4] ~@5 [a3,c4,f4,a4] ~@7", // F
  M: "[g3,bb3,d4,g4] ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@7 [g3,bb3,d4,g4] ~ [g3,bb3,d4,g4] ~@5 [g3,bb3,d4,g4] ~@7", // Gm
  N: "[bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@7 [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4] ~@5 [a3,c4,f4,a4] ~@7", // Bb Eb F
  O: "[bb3,d4,g4,bb4] ~ [bb3,d4,g4,bb4] ~@5 [bb3,d4,g4,bb4] ~@7 [bb3,d4,g4,bb4] ~ [bb3,d4,g4,bb4] ~@5 [bb3,d4,g4,bb4] ~@7", // Gm
  P: "[bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@7 [bb3,eb4,g4,bb4] ~ [bb3,eb4,g4,bb4] ~@5 [a3,c4,f4,a4] ~@7", // Bb Eb F
  Q: "[g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4] ~@5 [g3,bb3,eb4,g4] ~@23", // Eb
})).s("gm_marimba").gain(0.23).pan(0.4)

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  ~ A B C D E F G H I J K L M J K L N O A B C D E F G P A B C D E F G E I J K L M J K L N O A B C D E F G P A B C D E F
  G A B C D E F G P A B C D E F G P A B C D E Q
>`.pickRestart({
  A: "bb1@7 ~ f1@7 ~ bb1@7 ~ c2@3 ~ d2@3 ~", B: "c2@7 ~ g1@7 ~ c2@7 ~ g1@3 ~ c2@3 ~",
  C: "f1@7 ~ c2@7 ~ f1@7 ~ g1@3 ~ a1@3 ~", D: "bb1@7 ~ f1@7 ~ bb1@7 ~ f1@3 ~ bb1@3 ~",
  E: "g1@7 ~ d2@7 ~ g1@7 ~ bb1@3 ~ d2@3 ~", F: "eb1@7 ~ bb1@7 ~ eb1@7 ~ g1@3 ~ bb1@3 ~",
  G: "f1@7 ~ c2@7 ~ f1@7 ~ a1@3 ~ c2@3 ~", H: "bb1@7 ~ f1@7 ~ bb1@7 ~ g1@3 ~ bb1@3 ~",
  I: "f1@7 ~ c2@7 ~ f1@3 ~ f1@3 ~ c2@3 ~ f1@3 ~", J: "g1@7 ~ d2@7 ~ g1@7 ~ g1@3 ~ a1@3 ~",
  K: "bb1@7 ~ f1@7 ~ bb1@7 ~ bb1@3 ~ c2@3 ~", L: "f1@7 ~ c2@7 ~ f1@7 ~ f1@3 ~ c2@3 ~",
  M: "g1@7 ~ d2@7 ~ g1@3 ~ g1@3 ~ bb1@3 ~ a1@3 ~", N: "g1@7 ~ d2@7 ~ g1@7 ~ g1@3 ~ d2@3 ~",
  O: "f1@7 ~ c2@7 ~ eb1@7 ~ f1@7 ~", P: "bb1@7 ~ f1@7 ~ eb1@3 ~ eb1@3 ~ f1@3 ~ a1@3 ~", Q: "eb1@7 ~ bb1@8 ~@16",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note(`<
  ~ A@2 B C D@2 E F G H I J K@2 I L M N A@2 B C D@2 E O A@2 B C D@2 E P Q H I J K@2 I L M N A@2 B C D@2 E O A@2 B C D@2
  E A@2 B C D@2 E O A@2 B C D@2 E O A@2 B C R@2
>`.pickRestart({
  A: "[[bb4,d5]@6 [c5,eb5] [d5,f5]@3 [c5,eb5]@6]/2", B: "[a4,c5]@6 [bb4,d5] [c5,eb5]", C: "[bb4,d5]",
  D: "[[g4,bb4]@6 [a4,c5] [bb4,d5]@3 [g4,c5]@6]/2", E: "[f4,a4]@6 [g4,bb4] [a4,c5]",
  F: "~@3 bb5 d6 bb5 g5 bb5, [d4,bb4]", G: "[f4,a4,a5]", H: "g5@7 a5", I: "bb5@7 c6", J: "f5", K: "[g5@15 a5]/2",
  L: "f5@3 bb5", M: "g5", N: "f5@15 ~ bb5@8 c6@7 ~", O: "[d4,bb4]@2 [eb4,bb4] [f4,c5]", P: "[g4,bb4]", Q: "[f4,a4]",
  R: "[[g4,bb4]@6 [a4,c5] [bb4,d5]@3 [g4,c5]@2 ~@4]/2", // Gm Am Bb C5
})).s("gm_string_ensemble_1").gain(0.2)

// chords · string ensemble 1 · "#St.Strin" · soft notes
const string_ensemble_1_soft = note("<~@10 A B C D@2 B E F G ~@17 A B C D@2 B E F G ~@37>".pickRestart({
  A: "g6@7 a6", B: "bb6@7 c7", C: "f6", D: "[g6@15 a6]/2", E: "f6@3 bb6", F: "g6", G: "f6@15 ~ bb6@8 c7@7 ~",
})).s("gm_string_ensemble_1").gain(0.15)

// other · pan flute
const pan_flute = note(`<
  ~@4 A B ~@2 C D ~@3 E ~@8 A B ~@6 A B ~@2 F G ~@3 E ~@8 A B ~@6 A B ~@5 A B ~@6 A B ~@6 A B ~
>`.pickRestart({
  A: "~@10 d5 ~ f5 ~ bb5 ~ d6 ~@3 c6 ~@3 bb5 ~@3 a5 ~@3", B: "g5 a5 g5 f5 g5 ~@27", C: "~@24 f5 ~ g5 ~ bb5 ~ g5 ~",
  D: "~@4 c5 ~@3", E: "~@11 g5 a5 bb5 c6 d6 ~@16", F: "~@23 ab5@4 ~ f5@4", G: "g5 f5 g5@26 ~@4",
})).s("gm_pan_flute").gain(0.32).pan(0.3)

// other · pan flute
const pan_flute_2 = note("<~@5 A ~@3 B ~@3 C ~@9 A ~@7 A ~@7 C ~@9 A ~@7 A ~@6 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@8 g5 a5 g5 f5 g5 ~@19", B: "f5 ~ g5 ~ bb5 ~ g5 ~ f5 ~ g5 ~ bb5 ~ g5 ~@17", C: "~@19 g5 a5 bb5 c6 d6 ~@8",
})).s("gm_pan_flute").gain(0.29).pan(0.8)

// other · pan flute · soft notes
const pan_flute_soft = note("<~@13 [~@27 g5 a5 bb5 c6 d6] ~@25 [~@27 g5 a5 bb5 c6 d6] ~@42>")
  .s("gm_pan_flute").gain(0.16).pan(0.8)

// other · acoustic guitar steel · "#Mandolin"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I ~@9 A B C D E F G J A B C D E F G H I ~@9 A B C D E F G J A B C D E F G A B C D E F G J A B C D E
  F G J A B C D E K
>`.pickRestart({
  A: "bb4!24 c5!4 d5!4", B: "d5!8 c5!24", C: "a4!24 bb4!4 c5!4", D: "bb4!32", E: "g4!24 a4!4 bb4!4", F: "bb4!8 g4!24",
  G: "f4!24 g4!4 a4!4", H: "d4!32", I: "f4!32", J: "d4!16 eb4!8 f4!8", K: "bb4!8 g4!8 ~@16",
})).s("gm_acoustic_guitar_steel").gain(0.27)

// chords · synth strings 1 · "Syn.Strin"
const synth_strings_1 = note(`<
  ~ A B C A D B C A C D A E D@2 A E D F A B C A D B C A@2 B C A D B C D C D A E D@2 A E D F A B C A D B C A@2 B C A D B
  C A B C A D B C A@2 B C A D B C A@2 B C A D G
>`.pickRestart({
  A: "[bb3,d4,f4,bb4]", B: "[g3,bb3,eb4,g4]", C: "[a3,c4,f4,a4]", D: "[g3,bb3,d4,g4]", E: "[f3,a3,c4,f4]",
  F: "[f3,a3,c4,f4]@2 [bb3,eb4,g4,bb4] [c4,f4,a4,c5]", G: "[g3,bb3,eb4,g4] ~",
})).s("gm_synth_strings_1").gain(0.33)

// other · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@2 A B C D A B A B ~@10 A B C D A B A B A B C D A B A B ~@10 A B C D A B A B A B C D A B ~ A B C D A B A B A B C D A
  B A B C D A B ~
>`.pickRestart({
  A: "~@30 f5 [a5,c6]", B: "f6 ~@31", C: "~@30 g5 [bb5,d6]", D: "g6 ~@31",
})).s("gm_orchestral_harp").gain(0.22)

// chords · acoustic guitar steel · "#12Str.Gt"
const acoustic_guitar_steel_2 = note(`<
  ~ A B C A D E C A C F G C D F G C F H A B C A D E C I A B C A D E C F C F G C J F G C F K A B C A D E C I A B C A D E
  C A B C A D E C I A B C A D E C I A B C A D L
>`.pickRestart({
  A: "~@4 [bb3,d4,f4,bb4]@4 ~@3 [bb3,d4,f4,bb4] [bb3,d4,f4,bb4]@4 ~@4 [bb3,d4,f4,bb4]@4 ~@3 [bb3,d4,f4,bb4] [bb3,d4,f4,bb4]@4, bb2 f2 bb2 f2", // Bb
  B: "~@4 [g3,c4,eb4,g4]@4 ~@3 [g3,c4,eb4,g4] [g3,c4,eb4,g4]@4 ~@4 [g3,c4,eb4,g4]@4 ~@3 [g3,c4,eb4,g4] [g3,c4,eb4,g4]@4, c3 g2 c3 g2", // Cm
  C: "~@4 [a3,c4,f4,a4]@4 ~@3 [a3,c4,f4,a4] [a3,c4,f4,a4]@4 ~@4 [a3,c4,f4,a4]@4 ~@3 [a3,c4,f4,a4] [a3,c4,f4,a4]@4, f2 c3 f2 c3", // F
  D: "~@4 [g3,bb3,d4,g4]@4 ~@3 [g3,bb3,d4,g4] [g3,bb3,d4,g4]@4 ~@4 [g3,bb3,d4,g4]@4 ~@3 [g3,bb3,d4,g4] [g3,bb3,d4,g4]@4, g2 d3 g2 d3", // Gm
  E: "~@4 [g3,bb3,eb4,g4]@4 ~@3 [g3,bb3,eb4,g4] [g3,bb3,eb4,g4]@4 ~@4 [g3,bb3,eb4,g4]@4 ~@3 [g3,bb3,eb4,g4] [g3,bb3,eb4,g4]@4, eb2 bb2 eb2 bb2", // Eb
  F: "~@4 [bb3,d4,g4,bb4]@4 ~@3 [bb3,d4,g4,bb4] [bb3,d4,g4,bb4]@4 ~@4 [bb3,d4,g4,bb4]@4 ~@3 [bb3,d4,g4,bb4] [bb3,d4,g4,bb4]@4, g2 d3 g2 d3", // Gm
  G: "~@4 [bb3,d4,f4,bb4]@4 ~@3 [bb3,d4,f4,bb4] [bb3,d4,f4,bb4]@4 ~@4 [bb3,d4,f4,bb4]@4 ~@3 [bb3,d4,f4,bb4] [bb3,d4,f4,bb4]@4, bb2 f3 bb2 f3", // Bb
  H: "~@4 [a3,c4,f4,a4]@4 ~@3 [a3,c4,f4,a4] [a3,c4,f4,a4]@4 ~@16, f2 c3 ~@2", // F
  I: "~@4 [bb3,d4,f4,bb4]@4 ~@3 [bb3,d4,f4,bb4] [bb3,d4,f4,bb4]@4 ~@4 [bb3,eb4,g4,bb4]@4 ~@3 [c4,f4,a4,c5] [c4,f4,a4,c5]@4, bb2 f2 eb2 f2", // Bb Eb F
  J: "~@4 [d4,g4,bb4,d5]@4 ~@3 [d4,g4,bb4,d5] [d4,g4,bb4,d5]@4 ~@4 [d4,g4,bb4,d5]@4 ~@3 [d4,g4,bb4,d5] [d4,g4,bb4,d5]@4, g2 d3 g2 d3", // Gm
  K: "~@4 [a3,c4,f4,a4]@4 ~@3 [a3,c4,f4,a4] [a3,c4,f4,a4]@4 f2@8 ~@8, f2 c3 ~@2", // F
  L: "~@4 [g3,bb3,eb4,g4]@4 ~@3 [g3,bb3,eb4,g4] [g3,bb3,eb4,g4]@4 ~@16, eb2 bb2 ~@2", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!80 [x!2 ~@2]>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!80 [~ x ~@2]>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<A ~@8 B ~@8 C ~@7 C ~@8 B ~@8 C ~@7 C ~@6 B ~@7 D ~@7 E ~@6>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2", D: "~@12 x ~ x!2", E: "~@10 x!2 ~@2 x!2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!80 [x!4 ~@4]>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@8 B ~@8 C ~@7 D ~@8 B ~@8 E ~@7 E ~@14 F ~@7 G ~@6>".pickRestart({
  A: "~@6 x!2", B: "~@11 x!2 ~@3", C: "~@10 x!3 ~@3", D: "~@6 x!2 ~@4 x ~@3", E: "~@10 x!2 ~@4", F: "~@3 x!2 ~@3",
  G: "~@6 x!2 ~@4 x!2 ~@2",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<A ~@17 B ~@7 C ~@17 D ~@7 D ~@29>".pickRestart({
  A: "~@11 x ~@4", B: "~@6 x!3 ~@7", C: "~@10 x!2 ~@4", D: "~@6 x!2 ~@8",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~ A ~@8 A ~@8 A ~@7 A ~@8 A ~@8 A ~@7 A ~@6 A ~@7 A ~@7 A ~@5>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!10
  ~@8
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!17
  ~@9
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!36
  [x!3 ~ x!3 ~@9]
>`).gain(0.24)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~]!80 [~@2 x!2 ~@2 x ~@9]>").gain(2.03)

stack(
  marimba, bass, string_ensemble_1, string_ensemble_1_soft, pan_flute, pan_flute_2, pan_flute_soft,
  acoustic_guitar_steel, synth_strings_1, orchestral_harp, acoustic_guitar_steel_2, kick, snare, low_tom, hihat,
  mid_tom, high_tom, crash, tambourine, cabasa
)

More by Frans Bauer