Strudelify
Una zebra a pois cover art

Una Zebra a Pois

Una zebra a pois

Mina

KeyG majorTempo170 bpm
0:00/0:00
// Una zebra a pois — Mina
// 170 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 electric guitar muted (copy of ch 5 acoustic guitar steel)
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · piano
const piano = note(`<
  ~ A@4 B@2 A@2 C B D E A@4 B@2 A@2 C B A F A@4 B@2 A G C B H I J K L@2 M N O P A@4 B@2 A@2 C B A F Q R S T U V W X Q R
  S T U Y Z AA A@4 B@2 A@2 C B A F AB@2 AC AD AE@2 AF AG
>`.pickRestart({
  A: "[g3,b3,f4] ~@2 [g3,b3,f4]@4 ~", B: "[g3,a#3,e4] ~@2 [g3,a#3,e4]@4 ~", C: "[a3,c4,f#4] ~@2 [a3,c4,f#4]@4 ~",
  D: "[g3,b3,f4] ~ [g3,b3,f4] ~ [g3,b3,f4] ~ [g3,b3,f4] ~", E: "[g3,b3,g4] ~@7", F: "[g3,b3,f4] ~@7",
  G: "[g3,b3,f4]@2 ~@4 [g3,b3,f4]@5 ~ [g3,b3,f4]@2 ~@2", H: "[g3,b3,f4] ~@3 [g3,b3,f4] ~@3", I: "[b3,d4,f4,g4]@5 ~@11",
  J: "[b3,c#4,d#4,f#4]@15 ~", K: "[b3,c#4,d#4,f#4] ~@6 [b3,c#4,d#4,f#4]@5 b3@3 ~",
  L: "[[g3,b3,d4,f#4]@11 ~@4 [b3,d4,a4]@3 ~ [b3,d4,a4] [b3,d4,g4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,e4] ~@3]/2", // Gmaj7 Bm7 G Bm E7
  M: "[g3,b3,d4]@15 ~", N: "[g3,b3]@7 ~ [g3,b3]@5 ~@3, c#4@13 ~@3, ~@8 f#4@7 ~",
  O: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~", P: "[a3,c4,f#4]@3 ~@13",
  Q: "[c4,e4,g#4] [c4,e4,a4] ~ [c4,e4,g#4] [c4,e4,a4] ~ [c4,e4,g#4] [c4,e4,a4]", // Caug Am Caug Am Caug Am
  R: "~ [c4,e4,g#4] [c4,e4,a4] ~ [c4,e4,g#4] ~ [c4,e4,a4] ~", // Caug Am Caug Am
  S: "[d4,f#4,g#4] [d4,f#4,a4] ~ [d4,f#4,g#4] [d4,f#4,a4] ~ [d4,f#4,g#4] [d4,f#4,a4]", // G#m7b5 D G#m7b5 D G#m7b5 D
  T: "~ [d4,f#4,g#4] [d4,f#4,a4] ~ [d4,f#4,g#4] ~ [d4,f#4,a4] ~", // G#m7b5 D G#m7b5 D
  U: "[b3,d4,g#4] [b3,d4,a4] ~ [b3,d4,g#4] [b3,d4,a4] ~ [b3,d4,g#4] [b3,d4,a4]", // G#dim Bm7 G#dim Bm7 G#dim Bm7
  V: "~ [b3,d4,g#4] [b3,d4,a4] ~ [b3,d4,g#4] ~ [b3,a4] ~", W: "[c4,e4,g4] ~ [c4,e4,a4] ~ [c4,e4,g4] ~ [c4,e4,a4] ~",
  X: "[c4,e4,g4] ~ [c4,e4,a4] [c4,e4,g4] ~ [c4,e4,g4] ~ c4", Y: "~ [b3,d4,g#4] [b3,d4,a4] ~ [b3,d4,g#4] ~ [d4,a4] ~",
  Z: "[c4,e4,g4]!4 [d4,f#4,a4]!4", AA: "[c4,d4,f#4,a4] ~@7", AB: "[c4,e4,a4] ~@2 [c4,e4,a4]@4 ~",
  AC: "[d4,f#4,a#4] ~@2 [d4,f#4,a#4]@4 ~", AD: "[d4,f#4,b4] ~@2 [d4,f#4,b4]@4 ~", AE: "[g4,b4,e5] ~@2 [g4,b4,e5]@4 ~",
  AF: "[g4,b4,e5] ~ [g4,b4,e5] ~@3 [g4,b4,e5]!2", AG: "[g4,b4,e5] ~@7",
})).s("gm_piano").gain(0.62)

// bass · acoustic bass
const bass = note(`<
  ~ A@4 B C A@2 D B E F G H G I J K G L M J G N G H G H J O G H M K P Q R S T U V W X Y G H G I J K G L M J G F Z@2 AA@2
  AB@2 Z AC Z@2 AA@2 AB@2 AD AE G H G I J K G L M J G F AF AG AH@2 AI@2 AJ F
>`.pickRestart({
  A: "g1@2 ~ g1 ~ g1@2 ~", B: "c2@2 ~ c2 ~ c2@2 ~", C: "c2@4 ~@2 c2@2 ~@2 c2@5 ~", D: "d2@2 ~ d2 ~ d2@2 ~",
  E: "g1 ~ g1 ~ g1 ~ g1 ~", F: "g1 ~@7", G: "g1!2 ~ g1 ~ g1 f1 g1", H: "g1@2 ~ g1 ~ g1 f1 g1",
  I: "g1@2 ~ g1@2 a1 a#1 b1", J: "c2!2 ~ c2 ~ c2 a#1 c2", K: "c2@2 ~ c2 ~ c2 a#1 c2", L: "g1@2 ~ g1 ~ f1 g1 c2",
  M: "d2@2 ~ d2 ~ d2 c2 d2", N: "g1 ~@6 f1", O: "c2@2 ~ c2 ~ a#1 c2 a#1", P: "g1!2 ~ g1 ~ g1!3", Q: "g1 ~@3",
  R: "b1 ~ f#2 ~", S: "b2@3 ~@4 f#2@3 ~ b2 f#2@3 ~", T: "e1@7 ~ b1@7 ~", U: "e2 e1 b1 e2", V: "a1@7 ~ e2@7 ~",
  W: "a2@4 ~@3 e2@4 a2 e2@3 ~", X: "d1@3 ~ d1@3 ~ d1@3 ~ d1@3 ~", Y: "d1 ~@3", Z: "c1@2 c2 c1 ~ c1 c2 c1",
  AA: "d1@2 d2 d1 ~ d1 d2 d1", AB: "g1@2 g2 g1 ~ g1 g2 g1", AC: "c1 c2 c1!2 c2 c1!2 c2", AD: "c1 c2 c1 c2 d1 d2 d1 d2",
  AE: "d1 ~@7", AF: "c1@2 ~ c1 c1@3 ~", AG: "c1 ~@2 c1 c1@3 ~", AH: "d1@2 ~ d1 d1@3 ~", AI: "g1@2 ~ g1 g1@3 ~",
  AJ: "g1 ~ g1 ~@3 g1!2",
})).s("gm_acoustic_bass").gain(0.49)

// other · string ensemble 2
const string_ensemble_2 = note("<~@37 A@4 B@4 ~@12 C D C D C E F@2 C D C D C E ~@14 G@2 H@2 I@3 ~>".pickRestart({
  A: "[b3 b4 a4 g4, f#4@3 ~, d#4 d4]/4", B: "[d4@7 ~ c#4@8 d4@8 c4 ~@7, f#4@25 ~@7, b3@16 a3@9 ~@7]/4", C: "[a4,a5]",
  D: "[e5,e6] [d5,d6]", E: "[a5,a6] [g5,g6]", F: "[e5,e6]/2", G: "[e4,a4]/2", H: "[a#4@3 b4, f#4]/2",
  I: "[[g4,d5]@13 ~@3]/3", // G5
})).s("gm_string_ensemble_2").gain(0.18)

// other · vibraphone
const vibraphone = note(`<
  ~@12 A B C B D B C B E F G H I B C B C B J B E K L M N O P Q R S T U V B W B X Y Z Y AA AB AC AD B ~@14 AE AF Y AG Y
  AH B X B AA AI AJ AK AL AM@2 AN@2 AO@2 ~@2
>`.pickRestart({
  A: "~@2 a#4!3 ~ a#4!2", B: "g4 ~@7", C: "~@2 a#4!6", D: "~ a#4 ~ a#4!5", E: "~@2 g4!3 ~ g4!2", F: "a4 ~ a4 ~@3 a4 ~",
  G: "g4 ~@5 a#4!2", H: "g4 ~ a#4!2 g4 ~ a#4!2", I: "g4 ~ a#4!3 ~ a#4!2", J: "~ a#4 ~ a#4!2 g4 a#4!2",
  K: "a4 ~ a4@3 ~ a4 ~", L: "g4 ~@5 a4 a#4", M: "g4 ~ a4 a#4 g4 ~ a4 a#4", N: "g4@2 ~@9 g4 a4 ~@2 a#4",
  O: "b4 ~@3 b4 ~@3 a4 ~@3 a4 ~@3", P: "g4 ~@3 g4 ~@3 f#4 ~@3 f#4 ~@3", Q: "f#4@5 ~@2 e4 ~@8", R: "~@11 f#4 g4 ~@2 g#4",
  S: "a4 ~@3 a4 ~@3 g4 ~@3 g4 ~@3", T: "f#4 ~@3 f#4 ~@3 e4 ~@3 e4 ~@3", U: "e4@4 d4 ~@3 e4 ~@2 f#4 g4 ~@2 g#4",
  V: "a4@2 ~@2 a#4 ~ a#4 ~ a#4@2 ~@2 a#4 ~ a#4 ~", W: "~@2 a#4@2 ~@2 a#4 ~ a#4 ~ g4 ~ a#4 ~ a#4 ~",
  X: "~@4 a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~", Y: "g4 ~@15", Z: "~@2 a#4@2 ~@2 g4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~",
  AA: "~@4 g4 ~ g4 ~ g4@2 ~@2 g4 ~ g4 ~", AB: "a4 ~ a4@2 ~@2 a4 ~", AC: "g4@2 ~@10 a4 ~ a#4 ~",
  AD: "g4@2 ~@2 a4 ~ a#4 ~ g4 ~@3 a4 ~ a#4 ~", AE: "g4 ~ g4 ~ g4 ~ g4 ~ a4 ~ a4 ~ a4 ~ a4 ~",
  AF: "a4 ~@3 a#4 ~ a#4 ~ a#4@3 ~ a#4 ~ a#4 ~", AG: "~@4 a#4 ~ g4 ~ a#4 ~ g4 ~ a#4 ~ a#4 ~",
  AH: "~@2 a#4@2 ~@2 g4 ~ a#4 ~ g4 ~ a#4 ~ a#4 ~", AI: "a4@2 ~@2 a4@5 ~@3 a4@2 ~@2", AJ: "g4 ~@11 a4 ~ a#4 ~",
  AK: "g4 ~@3 a4 ~ a#4 ~ g4 ~@3 a4 ~ a#4 ~", AL: "g4 ~@7 g4@2 ~@2 g4@2 ~@2", AM: "[a4@5 ~ a4@16 ~@2 g4@3 ~ g4@3 ~]/2",
  AN: "[a#4@5 ~ a#4@15 ~@3 b4@3 ~ b4@3 ~]/2", AO: "[d5@23 ~@9]/2",
})).s("gm_vibraphone").gain(0.57)

// other · brass section
const brass_section = note("<~ A B C B D B A B C B E F ~@80>".pickRestart({
  A: "[g3,g4] ~ [g3,g4] ~ [a#3,a#4]@2 [g3,g4] ~@3 [g3,g4] ~ [c4,c5]@2 [g3,g4] ~", // G A# G C G
  B: "~@2 [g3,g4] ~ [a#3,a#4] ~ [g3,g4] ~ [c4,c5]@3 ~ [d4,d5]@3 ~", // G A# G C D
  C: "[g3,g4] ~ [g3,g4] ~ [a#3,a#4]@2 [g3,g4] ~@3 [g3,g4] ~ [c4,c5] ~ [g3,g4] ~", // G A# G C G
  D: "[g3,g4] ~ g4 ~ [a#3,a#4]@2 [g3,g4] ~@3 [g3,g4] ~ [c4,c5] ~ [g3,g4] ~", // G A# G C G
  E: "[g4,g5] ~ [g4,g5] ~ [g4,g5] ~ [g4,g5] ~", F: "[g4,g5]@5 ~@11",
})).s("gm_brass_section").gain(0.44)

// other · trombone
const trombone = note("<~ A B A C A D E B A F G H ~@80>".pickRestart({
  A: "g4 ~ g4 ~ a#4@2 g4 ~@3 g4 ~ c5@2 g4 ~", B: "~@2 g4 ~ a#4 ~ g4 ~ c5@3 ~ d5@3 ~",
  C: "~@2 g4 ~ a#4@2 g4 ~ c5@2 ~@2 d5@3 ~", D: "~@2 g4 ~ a#4 ~ g4 ~ c5@2 ~@2 d5@4",
  E: "g4 ~ g4 ~ a#4 ~ g4 ~@3 g4 ~ c5@2 g4 ~", F: "~@2 g4 ~ a#4 ~ g4 ~ c5@3 ~ d5 ~@3",
  G: "g5 ~@3 g5@2 ~@2 g5@2 ~@2 g5@2 ~@2", H: "g5@3 ~@5",
})).s("gm_trombone").gain(0.49)

// other · harpsichord
const harpsichord = note("<~@45 A B C B@2 C@2 B D C E F ~@36>".pickRestart({
  A: "g2!5 g2@2 g2", B: "g2!5 g2@2 ~", C: "g2!5 g2@3", D: "a2!5 a2@3", E: "g2!8", F: "g2 ~@7",
})).s("gm_harpsichord").gain(0.4)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@37 A B C D E F G H ~@48>".pickRestart({
  A: "b3@3 c#5 b4 ~@3 f#4@3 b4 b3 ~@2 [f#4,c#5], ~@3 f#4@3 ~@2 c#5 ~@7", // F#5
  B: "~@3 c#5 b4 ~@3 [f#4,c#5] ~@3 f#4@3 ~, ~@3 f#4@3 ~@6 b4 ~@3", // F#5
  C: "e3 ~@2 [f#4,b4] [f#4,a4] ~@3 [f#4,b4] ~@2 a4 ~@3 [e4,g4]", D: "~@3 [e4,g4] [d4,f#4] ~@3 e4 ~@3 d4 ~@3",
  E: "a3@3 b4 a4 ~@3 [e4,b4] ~@2 [e4,a4] ~@3 [e4,b4], ~@3 e4@3 ~@10", // E5 A5 E5
  F: "~@4 a4 ~@3 [e4,b4] ~@3 [e4,a4] ~@3, ~@3 e4@3 ~@10", G: "[f#3,f#4] ~@3 [f#3,f#4] ~@3 [g3,g4] ~@3 [g#3,g#4] ~@3",
  H: "[a3,a4] ~@15", // A
})).s("gm_electric_guitar_jazz").gain(0.36).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A B C B@3 C B C B@2 ~ D C@5 B C@4 E D F C F C F B F C@3 G ~ H@3 I J K I D C@5 B C@4 E D C@7 G C@5 L M D C@5 B C@4 E D
  F C F@4 ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~@2", B: "x ~@2 x ~ x ~@2", C: "x ~@2 x ~ x ~ x", D: "x", E: "x ~@2 x!2 ~@2 x", F: "x ~@2 x!2 ~@3",
  G: "x ~ x!2 ~ x!2 ~", H: "x!2", I: "x!4", J: "x ~@7 x ~@6 x", K: "x ~@6 x ~@3 x!2 ~@3", L: "x ~@3 x!2 ~ x",
  M: "x ~@2 x!3 ~ x",
})).gain(0.62)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@10 B C A@5 D A@5 E A@5 D A@4 F ~@9 A@5 D A@5 E A@7 F A@7 ~ A@5 D A@5 G A@6 H C
>`.pickRestart({
  A: "~ x ~ x", B: "x!4", C: "x", D: "~@2 x ~@3 x!2", E: "~ x ~ x ~ x ~ x", F: "~ x ~@2 x ~@2 x", G: "~ x ~ x ~ x ~@2",
  H: "x ~ x ~@3 x!2",
})).gain(0.62)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C D C E C@4 ~@2 F G H C I D J K D C@2 L M D C@2 D I N O C P Q ~@9 F G H C I D J K D C@2 L R S R T R T C U R T R
  T R@2 C ~ F G H C I D J K D C@2 L ~@6 V W
>`.pickRestart({
  A: "x ~ x!3 ~ x ~", B: "~@2 x ~ x!4", C: "x!8", D: "x!7 ~", E: "x!4", F: "x ~ x!2 ~ x!3", G: "~ x!6 ~",
  H: "x!3 ~ x!4", I: "x!3 ~@2 x!3", J: "x!4 ~@2 x ~", K: "x!5 ~ x ~", L: "x ~@2 x ~@4", M: "x ~ x ~ x!4",
  N: "x!4 ~ x!3", O: "~ x!2 ~@3 x ~", P: "x!5 ~ x!2", Q: "x ~@2 x!5", R: "x!2 ~ x!3 ~ x", S: "~ x ~ x!5",
  T: "x!2 ~ x!5", U: "x!4 ~@4", V: "~@2 x ~@3 x!2", W: "x",
})).gain(0.54)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B ~@10 C D E ~ F G H ~@4 I J ~@3 G F K L ~ M N ~@9 C D E ~ F G H ~@4 O ~ D ~@14 C D E ~ F G H ~@4 O ~@8
>`.pickRestart({
  A: "~ x ~@3 x ~ x", B: "x!2 ~ x ~@4", C: "~ x ~@2 x ~@3", D: "x", E: "~@3 x ~@4", F: "~@3 x!2 ~@3", G: "~@7 x",
  H: "~@4 x!2 ~ x", I: "~ x!2 ~@2 x ~ x", J: "~ x ~ x ~@4", K: "~ x", L: "x ~@2 x!3 ~ x", M: "~@5 x ~@2",
  N: "~ x!2 ~@5", O: "~ x!2 ~@2 x ~@2",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<[~@6 x!2] ~@90 [~@6 x!2] x>").gain(0.62)

// drums · mid tom
const mid_tom = s("mt").struct("<[~ x!2 ~] ~@83 [~@5 x!2 ~] ~ [~@5 x!2 ~] ~@4 [x!2 ~@2] ~>").gain(0.62)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~ B ~@4 C D ~ A ~@5 E A ~@4 A ~@19 A ~@5 E A ~@3 F G F G F G ~ H F G F G F@2 ~ D ~ A ~@5 E A ~@11
>`.pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~ x", C: "x!4", D: "x", E: "~@5 x ~ x", F: "~ x ~ x", G: "~ x ~@2", H: "~ x",
})).gain(0.62)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@11 A ~@11 A ~@10 A@2 ~@2 B ~@2 C A@2 ~@3 A ~@3 A@2 ~@8 A@3 ~@5 D A@2 ~@7 A@2 D A@2 ~ A ~ A ~@3
>`.pickRestart({
  A: "x", B: "~@3 x", C: "x!4", D: "x!2",
})).gain(0.54)

// drums · ride bell
const ride_bell = s("rd").struct("<~@2 A B@8 ~@26 C D E B D@2 ~@42 C@6 ~@2>".pickRestart({
  A: "~ x!2 ~", B: "x!3 ~", C: "x!4", D: "x ~@3 x ~@2 x!2 ~@3 x ~@3", E: "x ~@3 x ~@3 x ~@3 x ~@2 x",
})).gain(0.62)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct("<~@2 [~@3 x] ~@34 [~@7 x ~@7 x] [~@15 x] [~@7 x ~@8]!2 [~@15 x] ~@51>")
  .gain(0.39)

// drums · tambourine
const tambourine = s("tb").struct("<~@57 [x!4]!6 [~ x!3]!3 [x!4]!5 ~@22>").gain(0.62)

// drums · cowbell
const cowbell = s("cb").struct("<~@26 A@3 B A B A@4 ~@49 A@3 C A@2 D E>".pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x ~ x!2", D: "x ~ x ~@3 x!2", E: "x",
})).gain(0.62)

// drums · bongos
const bongos = s("bongo:18").struct("<~@85 [~@7 x] [~@6 x!2]!5 ~@2>").gain(1.63)

// drums · congas
const congas = s("conga:13").struct("<~@2 A ~ A ~ B ~ C ~ A ~@74 D E F@2 G F E ~>".pickRestart({
  A: "~@6 x!2", B: "~@5 x!3", C: "~@3 x", D: "x ~@2 x", E: "x!2 ~@2", F: "x!2", G: "x!3 ~",
})).gain(1.98)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct("<~@8 A ~@76 B C D@2 ~ D ~@2>".pickRestart({
  A: "~@7 x", B: "~ x!2 ~", C: "~ x", D: "~ x ~@2",
})).gain(1.24)

// drums · congas
const congas_2 = s("conga:33").struct("<~@3 A ~ A ~ A ~ B ~@75 C@6 ~@2>".pickRestart({
// … 44 more lines

More by Mina