Strudelify
De vogeltjesdans cover art

2022 · De Vogeltjesdans

De vogeltjesdans

De Electronica's

KeyG majorTempo190 bpm
0:00/0:00
// De vogeltjesdans — De Electronica's
// 190 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(190/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@6 A@2 B@3 C D E A@2 C@4 F G A@5 H C@2 B@2 C@4 D G A@4 H A C I B@3 J I K L M N@2 B@3 O A@2 N P B@4 L G A@2 N A@3 B O
  B C B@3 C D G A@2 N@2 A@2 B C@5 Q R L M N@2 B O B@2 A@2 N@2 B@2 S J L T@3
>`.pickRestart({
  A: "g1@3 ~ d1@3 ~", B: "a1@5 ~@3 d1@6 ~@2", C: "a1@4 d1@3 ~", D: "g1@7 ~ d1@8", E: "g1 ~@3 d1@4", F: "g1 e2 d2 b1",
  G: "g1 ~@3 d1@4 e1@4 f#1@4", H: "g1@7 ~ d1@6 ~@2", I: "a1@5 ~@3 d1@8", J: "a1@4 ~@4 d1@5 ~@3",
  K: "a1 ~@3 d1@3 ~ e1@3 ~ f#1@4", L: "g1 ~ e2@2 d2@2 b1@2", M: "g1 ~@3", N: "g1@5 ~@3 d1@6 ~@2", O: "a1@2 ~@2 d1@3 ~",
  P: "g1@2 ~@2 d1@3 ~", Q: "a1@7 ~ d1@7 ~", R: "a1@4 d1@3 ~ e1@2 ~@2 f#1@2 ~@2", S: "a1@3 ~@5 d1@5 ~@3",
  T: "[g1@3 ~@5 g1@28 ~@12]/3",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · marimba
const marimba = note(`<
  ~@5 A B C D E F G H I J C K F@2 L M N ~@31 A B C O F@2 G P Q B C R F S T U V ~@31 A B C W F@2 G X Y B C Z F@2 T AA AB
  ~@2
>`.pickRestart({
  A: "~@4 [b4,d5] ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [g4,b4] ~ [g4,b4] ~", // Bm E5 G
  B: "[b4,d5] ~@3 [b4,d5] ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [g4,b4] ~ [g4,b4] ~", // Bm E5 G
  C: "[b4,d5] ~@3 [b4,d5] ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [b4,g5] ~ [b4,g5] ~", // Bm E5 Em
  D: "[c5,f#5] ~@3 [c5,f#5] ~@3 [c5,e5] ~@3 d5 ~@3", // Cdim C
  E: "c5 ~@3 [a4,c5] ~ [a4,c5] ~ [a4,d5] ~ [a4,d5] ~ [f#4,a4] ~ [f#4,a4] ~", // Am D5 F#m
  F: "[a4,c5] ~@3 [a4,c5] ~ [a4,c5] ~ [a4,d5] ~ [a4,d5] ~ [f#4,a4] ~ [f#4,a4] ~", // Am D5 F#m
  G: "[a4,c5] ~@3 [a4,d5] ~ [a4,d5] ~ [c5,e5] ~ [c5,e5] ~ [d5,f#5] ~ [d5,f#5] ~", // Am D5 C D
  H: "~@4 [c5,e5]@4 [b4,d5] ~@3 [a4,c5] ~@3, ~@4 d5 ~@11", // C Bm Am
  I: "b4@2 ~@2 [b4,d5] ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [g4,b4] ~ [g4,b4] ~, g4 ~@15", // Bm E5 G
  J: "[b4,d5] ~@3 [b4,d5] ~ [b4,d5,e5] ~ [b4,e5] ~ [b4,e5] ~ [g4,b4] ~ [g4,b4] ~", // Bm E7 E5 G
  K: "~@4 [c5,f#5] ~@3 [c5,e5] ~@3 [c5,d5] ~@3", L: "[a4,c5] ~@3 d5 ~ d5 ~ e5 ~ e5 ~ [c5,f#5] ~ [c5,f#5] ~",
  M: "[b4,g5] ~@3 e5 ~@3 d5 ~@3 b4 ~@3", N: "g4 ~@15", O: "[c5,f#5] ~@3 [c5,f#5] ~@3 [c5,e5] ~@3 [c5,d5] ~@3",
  P: "[c5,e5] ~@3 [c5,e5] ~@3 [b4,d5] ~@3 [a4,c5] ~@3", // C Bm Am
  Q: "[g4,b4] ~@3 [b4,d5] ~ [b4,d5] ~ [b4,e5] ~ [b4,e5] ~ [g4,b4] ~ [g4,b4] ~", // G Bm E5 G
  R: "~@4 [c5,f#5] ~@3 [c5,e5] ~@3 [a4,b4,d5] ~@3", // Cdim C Bm7
  S: "[a4,c5] ~@3 [a4,c5] ~ [a4,c5] ~ [a4,d5] ~ [a4,d5] ~ [f#4,a4] ~ [f#4,a4,c5] ~", // Am D5 F#m F#dim
  T: "[a4,c5] ~@3 [a4,d5] ~ [a4,d5] ~ [a4,e5] ~ [a4,e5] ~ [a4,f#5] ~ [a4,f#5] ~", // Am D5 A5 D
  U: "g5 ~@3 e5 ~@3 [b4,d5] ~@3 [g4,b4] ~@3", V: "[d4,g4] ~@15", W: "~@4 [c5,f#5] ~@3 [c5,e5] ~@3 [b4,d5] ~@3",
  X: "~@4 e5@2 ~@2 d5@2 ~@2 c5 ~@3", Y: "b4 ~@3 [b4,d5] ~ [b4,d5] ~ [b4,d5,e5] ~ [b4,e5] ~ [g4,b4] ~ [g4,b4] ~",
  Z: "~@4 [c5,f#5] ~@3 e5 ~@3 d5 ~@3", AA: "g5@2 ~@2 e5 ~@3 d5 ~@3 b4 ~@3", AB: "g4 ~@7 g4 ~ g4 ~@5",
})).s("gm_marimba").gain(0.5)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@21 A B C D@2 B E F G H I J@2 K@2 L M B N@3 B E F G H I O@2 P@2 Q ~@16 R B C D@2 B E F G H I S@2 T@2 L U B V W@2 B E
  F G H I O@2 X@2 Q Y Z AA AB AC@2 AD AE AF Z AA AB AC@2 AD AG AH@2 ~
>`.pickRestart({
  A: "~ [b4,d5] [a#4,c#5] [a4,c5]", B: "[g4,b4]@11 ~ [b4,d5]@2 ~@2", C: "[d5,b5]@11 ~ [c5,a5]@3 ~",
  D: "[[c5,a5]@4 [b4,g5]@14 ~@2 [b4,d5]@3 ~ [a#4,c#5]@3 ~ [a4,c5]@2 ~@2]/2", E: "[c5,a5]@11 ~ [b4,g5]@4", F: "[c5,f#5]",
  G: "~@2 [c5,e5]@2 d5@2 [a#4,c#5] ~, ~@4 b4 ~@3", H: "c5@3 f#4, a4@5 ~ d5 ~", I: "[c5,a5]@11 ~ [b4,g5]@2 ~@2",
  J: "[[b4,g5]@3 ~ [c5,f#5]@2 ~@2 [c5,f#5]@12 [f#5,a5]@3 ~ [f#5,a5]@4 [e5,g5]@3 ~]/2", // Em Cdim F#m Em
  K: "[[e5,g5]@4 [d5,f#5]@16 [c5,e5]@3 ~ [b4,d5]@2 ~@2 [a4,c5]@3 ~]/2", L: "[g4,b4]",
  M: "~@4 [b4,d5]@3 ~ [a#4,c#5]@3 ~ [a4,c5]@2 ~@2", // Bm A#m Am
  N: "[[d5,b5]@11 ~ [c5,a5]@7 ~ b4@14 ~@2 [b4,d5]@3 ~ [a#4,c#5]@3 ~ [a4,c5]@2 ~@2, ~@5 g5@3 ~@4]/3", // G F Bm A#m Am
  O: "[[b4,g5]@3 ~ [c5,f#5]@2 ~@2 [c5,f#5]@12 [f#5,a5]@3 ~ [f#5,a5]@4 [e5,g5]@2 ~@2]/2", // Em Cdim F#m Em
  P: "[[e5,g5]@4 [d5,f#5]@2 ~@2 [d5,f#5]@10 ~@2 [d5,f#5]@4 [e5,g5]@4 [c5,a5]@3 ~, ~@28 f#5 ~@3]/2", Q: "[b4,g5]",
  R: "~@4 [b4,d5]@4 [a#4,c#5]@3 ~ [a4,c5]@2 ~@2", S: "[g5@2 c5@8 [f#5,a5]@4 [e5,g5] ~, b4 ~ f#5@7 ~@7]/2",
  T: "[[e5,g5]@2 [d5,f#5]@8 [c5,e5]@2 [b4,d5] ~ [a4,c5] ~]/2", U: "~@4 [b4,d5]@3 ~ [a#4,c#5]@2 ~@2 [a4,c5]@2 ~@2",
  V: "[d5,b5]@11 ~ [c5,a5]@2 ~@2", W: "[[c5,a5]@4 [b4,g5]@14 ~@2 [b4,d5]@3 ~ [a#4,c#5]@2 ~@2 [a4,c5]@2 ~@2]/2",
  X: "[[e5,g5]@4 [d5,f#5]@15 ~ [d5,f#5]@3 ~ [e5,g5]@3 ~ [c5,a5]@4]/2", Y: "~@4 d5 ~ d5 ~ e5 ~ e5 ~ b4 ~ b4 ~",
  Z: "d5 ~@3 d5 ~ d5 ~ e5 ~ e5 ~ b4 ~ b4 ~", AA: "d5 ~@3 d5 ~ d5 ~ e5 ~ e5 ~ g5 ~ g5 ~", AB: "~ f#5 e5 d5",
  AC: "c5 ~@3 c5 ~ c5 ~ d5 ~ d5 ~ a4 ~ a4 ~", AD: "c5 ~@3 d5 ~ d5 ~ e5 ~ e5 ~ f#5 ~ f#5 ~", AE: "~ e5 d5 c5",
  AF: "b4@3 ~ d5 ~ d5 ~ e5 ~ e5 ~ b4 ~ b4 ~", AG: "g5@4 e5@3 ~ d5@3 ~ b4@4", AH: "[g4 ~@7 [b3,d4,e4,g4]@22 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.45)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@6 A@2 B@3 C D@4 B@4 E F D@6 B@5 G B@2 D H D@3 I D@2 B@8 D F D@2 B@4 D@4 B@4 D F D@6 B@8 D@8 B@8 D F D@2 B@4 E D@3 J
  B@3 D K@2 ~
>`.pickRestart({
  A: "~@4 [b3,d4,g4] ~ [b3,d4,g4]@2 ~@4 [b3,d4,g4]@2 ~@2", B: "~@4 [c4,d4,f#4] ~ [c4,d4,f#4] ~@5 [c4,d4,f#4] ~@3",
  C: "~@4 [c4,d4,f#4] ~ [c4,d4,f#4] ~@5 [c4,d4,f#4]@2 ~@2", D: "~@4 [b3,d4,g4] ~ [b3,d4,g4] ~@5 [b3,d4,g4] ~@3",
  E: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3", F: "[b3,d4,g4] ~@15",
  G: "~@4 [c4,d4,f4,f#4] ~ [c4,d4,f#4] ~@5 [c4,d4,f#4] ~@3", H: "~@4 [b3,d4,g4] ~ [b3,d4,g4] ~@5 [d4,g4] ~@3",
  I: "~@4 [b3,d4,g4,a4] ~ [b3,d4,g4] ~@5 [b3,d4,g4] ~@3", J: "~@4 [c4,d4,f#4] ~@7 [c4,d4,f#4] ~@3",
  K: "[[b3,d4,g4] ~@7 [b3,d4,e4,g4]@20 ~@4]/2", // G Em7
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.4)

// chords · trumpet
const trumpet = note(`<
  ~@21 A B C D@2 B E F@2 G H I@2 J@2 K@2 L M N@2 B E F@2 G H I@2 O@2 P ~@16 A Q R S T U E F@2 G H I@2 V@2 W X B M Y@2 B
  E F@2 G H I@2 Z@2 AA ~@19
>`.pickRestart({
  A: "~@4 [b4,d5]@4 [a#4,c#5]@4 [a4,c5]@3 ~", B: "[g4,b4]@11 ~ [b4,d5]@3 ~", C: "[d5,b5]@10 ~@2 [c5,a5]@3 ~",
  D: "[[c5,a5]@4 [b4,g5]@2 ~@2 [b4,g5]@10 ~@2 [b4,d5]@3 ~ [a#4,c#5]@4 [a4,c5]@4]/2", E: "[c5,a5]@5 ~ [b4,g5]@2",
  F: "[c5@18 ~@2 [c5,e5]@4 [b4,d5]@4 [a#4,c#5]@3 ~, f#5 ~]/2", G: "[a4,c5]@11 ~ [f#4,d5]@3 ~",
  H: "[c5,a5]@11 ~ [b4,g5]@3 ~", I: "[[b4,g5]@4 [c5,f#5]@2 ~@2 [c5,f#5]@11 ~ [f#5,a5]@3 ~ [f#5,a5]@3 ~ [e5,g5]@3 ~]/2",
  J: "[[e5,g5]@4 [d5,f#5]@3 ~ f#5@12 [c5,e5]@3 ~ [b4,d5]@4 [a4,c5]@3 ~, ~@4 d5@5 ~@7]/2", // Em D C Bm Am
  K: "[g4@19 ~ d5@4 [a#4,c#5]@4 [a4,c5]@4, b4@17 ~@3 b4@3 ~@9]/2", L: "[g4,b4]@11 ~ [b4,d5]@3 ~, a4 ~@15",
  M: "[d5,b5]@10 ~@2 [c5,a5]@3 ~, a5 ~@15", // G F
  N: "[[c5,a5]@4 [b4,g5]@3 ~ b4@11 ~ [b4,d5]@4 [a#4,c#5]@3 ~ [a4,c5]@3 ~, ~@8 g5@9 ~@15]/2", // F Em Bm A#m Am
  O: "[[e5,g5]@4 [d5,f#5]@3 ~ f#5@12 [d5,f#5]@3 ~ [e5,g5]@3 ~ [f#5,a5]@4, ~@4 d5@5 ~@7]/2", P: "g5@15 ~, b4@13 ~@3",
  Q: "b4@3 [b4,d5], g4", R: "[d5,b5]@11 ~ [c5,a5]@3 ~", S: "[c5,a5] [b4,g5]@3",
  T: "~@4 [b4,d5]@4 [a#4,c#5]@3 ~ [a4,c5]@3 ~", U: "b4@3 b4, g4, ~@6 d5 ~",
  V: "[[e5,g5]@4 [d5,f#5]@3 ~ f#5@12 [c5,e5]@4 [b4,d5]@3 ~ [a4,c5]@3 ~, ~@4 d5@5 ~@7]/2", W: "[g4,b4]",
  X: "~@4 [b4,d5]@3 ~ [a#4,c#5]@4 [a4,c5]@4", // Bm A#m Am
  Y: "[[c5,a5]@4 b4@14 ~@2 [b4,d5]@4 [a#4,c#5]@3 ~ [a4,c5]@3 ~, ~ g5@3 ~@4]/2", // F Bm A#m Am
  Z: "[[e5,g5]@4 [d5,f#5]@3 ~ [d5,f#5]@11 ~ [d5,f#5]@3 ~ [e5,g5]@3 ~ [f#5,a5]@4]/2", AA: "[b4,g5]",
})).s("gm_trumpet").gain(0.32).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  A@2 B C@2 D@7 E@4 F@4 G@2 H@5 I@8 ~ J@2 H@5 I@8 ~ G@2 K@8 ~ L@5 G@2 M@6 N@8 O@7 P@8 ~ G@2 Q@2 R@4 S@4 R@4 T U@2 ~
>`.pickRestart({
  A: "d5@2 ~@6 d6 ~@7", B: "d5 ~@3 d6 ~@3 d5 ~@7", C: "d5/2",
  D: "[~@4 d5@4 e5@4 ~@3 g4@28 ~@4 [f#4,a4]@63 ~@2, ~@12 b4@34 ~ c5@65, ~@15 d5@97]/7", E: "[[g4,b4]@31 ~]/4",
  F: "[[f#4,c5]@63 ~, a4@61 ~@3]/4", G: "[[g4,b4]@9 ~@7]/2", H: "[g4,b4,d5]/5", I: "[~@15 [f#4,a4,c5]@113]/8",
  J: "[[g4,b4]@21 ~@11]/2", K: "[g4@30 ~ [f#4,a4,c5]@63 ~ [g4,b4]@33, d5, b4@7 ~@25]/8",
  L: "[~@16 [f#4,c5]@63 ~, ~@15 a4@62 ~@3]/5", M: "[[g4,b4]@31 ~, d5]/6", N: "[[f#4,c5]@63 ~, a4@31 ~]/8",
  O: "[g4,b4]/7", P: "[~ [f#4,a4]@7, ~@15 c5@113]/8", Q: "[[g4,b4,d5]@15 ~]/2", R: "[[f#4,a4,c5,d5]@61 ~@3]/4",
  S: "[[g4,b4]@15 ~, d5@31 ~]/4", T: "[g4,b4,d5]", U: "[~ [b4,d5,e5,g5]@3]/2",
})).s("gm_string_ensemble_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@6 A@15 B A@31 B A@15 B A@31 B A@16 ~@2>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@4 A B C@14 D ~ C@15 D C@14 D ~ C@15 ~ C@15 D C@14 D ~ C@15 ~@3>".pickRestart({
  A: "x!8", B: "x", C: "~ x ~ x", D: "~@2 x ~@3 x!2",
})).gain(0.5)

// drums · clap
const clap = s("cp").struct("<~@4 A B C@14 D ~ C@15 D C@14 D ~ C@15 ~ C@15 D C@14 D ~ C@15 ~@3>".pickRestart({
  A: "x!8", B: "x", C: "~ x ~ x", D: "~@2 x ~@3 x!2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<A@5 B C@15 D C@31 E C@15 E C@31 E C@15 B ~@2>".pickRestart({
  A: "x!2", B: "x", C: "x!8", D: "x ~@2 x", E: "x ~@6 x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@6 A ~@14 A@2 ~@15 A ~@14 A@2 ~@14 A@2 ~@15 A ~@14 A@2 ~@14 B ~@2>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.4)

// drums · cowbell
const cowbell = s("cb").struct("<~@6 A@15 B A@31 B A@15 B A@31 B A@16 ~@2>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~@6 [~@6 x!2]!15 ~@33 [~@6 x!2]!15 ~@33 [~@6 x!2]!15 ~@3>").gain(0.4)

stack(
  bass, marimba, string_ensemble_1, electric_guitar_muted, trumpet, string_ensemble_1_2, kick, snare, clap, hihat,
  crash, cowbell, shaker
)