Strudelify

Volta pro meu coracao

Zeze di Camargo

KeyG majorTempo145 bpm
0:00/0:00
// Volta pro meu coracao — Zeze di Camargo
// 145 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 148 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(145/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 · epiano2
const epiano2 = note(`<
  A B@2 C D@2 E F G@2 H I J K L@3 M N O P@3 Q G@2 H I J K L@3 M N O P@3 R S T U V W@2 X@2 Y Z AA AB AC AD AE@2 Y AF AG
  AH AI AJ AK@2 AL@2 A B@2 C D@2 E F G@2 H I J K L@3 M N O P@3 R S T U V W@2 X@2 Y Z AA AB AC AD AM@3 Z AA AB AC AD AE@2
  AN AO AP AQ AR AS AT AU AV@2 AP AW AX AY AZ BA BB@2 BC@2 BD BE@2 BF BG BH@2 BF BI@2 BJ BK BL@2
>`.pickRestart({
  A: "~@3 d4, c3, ~ g3@3, ~ c4", B: "[~@7 [e3,a3], [b2,b3] a2, ~ d3@3 ~ c4@3, ~@2 [g3,d4]@2 a3 e3 e4@2, ~@3 g4@5]/2",
  C: "~@3 b3, b2, b3@3 ~, ~ [d3,d4]@3, ~ [g3,g4]", // D G
  D: "[~@3 d4 ~@3 b3, [c3,c4]@15 ~ b2@16, g3 g3@2 [g3,g4], ~@4 [e3,e4]@11 ~ b3@12 ~@4, ~@5 [d3,d4]@3]/2", // C G E D
  E: "~@3 a4, [a2,a3], ~ [e3,c4]@3, ~ e4", F: "~@12 b3@3 ~, b2@15 ~, b3@3 ~, ~@4 [d3,d4]@11 ~, ~@8 [g3,g4]@7 ~",
  G: "[~@2 g3 ~@4 [d4,g4], [c3,c4] [b2,b3], [g3,e4,g4]@2 [e4,g4]@2 [d4,g4]@3 ~, ~ e3@3 ~ d3@3, ~@3 g3@3 g3@2]/2", // G5 C B C Em G5
  H: "[c4,e4]@2 ~ e3, [a2,a3], e3@3 ~, ~ [c4,e4]", I: "~@12 e3@3 ~, g2@15 ~, [g3,c4,e4]@8 [g3,c4,e4]@7 ~, ~ e3@2 ~",
  J: "[a3,c4]@2 ~ c3, [f2,f3], c3@3 ~, ~ [a3,c4,f4]", K: "[g3,c4]@2 ~ e2, e3, e2@3 ~, ~ [g3,c4]",
  L: "[[d4,f4,a4]@2 ~ d3 ~@4 d4!2 ~ a3, d2@7 a3@4 ~, a3@2 a3 [f4,a4] [f4,a4] [d4,f4,a4], d3@3 ~ [d3,d4]@4 [d3,f3]@4, c2 ~@7 [d4,f4,a4]@8 [f4,a4]@4 f3@12 ~@16]/3", // Dm F Dm D Dm F
  M: "~@3 [c3,a3], [c3,a3]@3 ~, [c4,f4,a4]!2, ~ f3@3", N: "[b3,d4,g4]@2 ~ g3, [b2,d3], g3@3 ~, ~ [b3,d4,g4]",
  O: "[c4,f4]@8 ~@4 f3@3 ~, [a2,c3,a3]@15 ~, f3@3 ~, ~@8 [c4,f4]@7 ~", // F5 Am F5
  P: "[[b3,d4]@2 ~@5 g3 e4@2 ~ e3, g2@23 ~, g3@6 d3@2 g3@4 d4 g4@3 ~@4 [e4,g4]@4, d3@2 [b3,g4]@2 b3@4 e3@3 ~, ~@2 d4@2 g4 d3@3 [c3,g3,c4]@4]/3", // Bm Em C5
  Q: "g3@3 ~@5 b3@2 ~@2 d4@4, [g2,d3]@15 ~, d4@3 ~, b3 g4, ~@2 g3@3 [g3,b3]@3", R: "[g2,g3,a#3,d4] [c3,e3,g3,c4,e4]",
  S: "a3@2 ~ c3, [f2,f3,c4], c3@3 ~, ~ [a3,f4]", T: "[b3,d4]@2 ~ f2, g3, f2@3 ~, ~ [b3,d4,g4]",
  U: "[e4,g4]@2 ~ e3, e2, e3@3 ~, b3@5 b3@3, ~ [e4,g4]", V: "~@3 a3, [a2,e4], c4!2, a3@3 a3@2 a4@3, ~ e3@3",
  W: "[[a#3,d4]@2 ~@5 f3, a#2, f3@4 a#3 f4 f3@2 a#3@4 [d4,f4]@4, f4@4 d4@6 f3@3 a#3@3, ~ a#4@3]/2", // A# Dm
  X: "[~@28 g3@3 ~, [g2,d4]@31 ~, b3@14 g3@6 d3@11 ~, d3@10 g3@2 d3@4 b3@6 g3@4 g4@5 ~, g3@8 g4@16 b3@7 ~]/2", // G5
  Y: "~@3 g3, [c3,c4,g4], g3@3 ~, e4 [e4,c5], ~ e3@3", Z: "d4 ~@2 f3, [d3,a3], f3@3 ~, [f4,a4] [f4,a4,d5], ~ d4@3",
  AA: "[g4,b4]@2 ~ [e3,g3,b3], e4, [e3,g3,b3]@3 ~, ~ [g4,b4]", // G Em G
  AB: "[f4,a4]@2 ~ a3, [c3,f3], a3@3 ~, c4@5 c4@3, ~ [f4,a4,c5]", // F F5 F
  AC: "[f4,a4]@2 ~ [d3,f3,a3], [d3,f3,a3]@3 ~, d4@5 d4@3, ~ [f4,a4,d5]", // F Dm
  AD: "f4@2 ~ a3, [c3,f3,a4], a3@3 ~, c4@5 c4@3, ~ f4", // F
  AE: "[~@7 g3, g2, g4@5 b3 d4@6 g3 d4@3, d4@2 g3@3 d3@3, b3 d3@3 [b3,g4]@4]/2", // Em
  AF: "~@3 [d3,f3,a3], d4, [d3,a3]@3 ~, [f4,a4] [f4,a4,d5], ~ f3@2 ~", // Dm D5 F Dm
  AG: "[g4,b4]@2 ~ [e3,g3,b3], e4, [e3,g3,b3]@3 ~, f3 ~@7 [g4,b4,e5]@8", // G Em
  AH: "[f4,a4]@2 ~ [f3,a3], c3, [f3,a3]@3 ~, c4@5 c4@3, ~ [f4,a4,c5]", // F
  AI: "[d4,f4,a4]@2 d4 [d3,f3,a3,d4], [d3,f3,a3]@3 ~, ~ [f4,a4]", AJ: "[c3,f3,a3,c4,f4,a4]!2",
  AK: "[[a#3,d4,f4]@2 ~@5 f3, a#2, d3@4 [a#3,d4,f4] d3@3, f3@2 [a#3,d4,f4] f3@3 [a#3,d4,f4]@2, ~ a#4@3]/2", // A#
  AL: "[g2,d3,b3,d4,g4]", // G
  AM: "[~@7 g3 ~@3 g3, g2@12 g3 d4@3 g3@6 ~@2, g4@5 b3 d4@4 d3@6 e4@4 [e4,c5]@4, d4 g3 g4@2 [c3,c4,g4]@2, b3 d3@3 b3@5 e3@3]/3", // C C5
  AN: "~@2 g3!2, [c3,c4], [g3,e4,g4] [e4,g4], ~ e3@3", // C Em
  AO: "e3@2 ~@8 a4@2 a3 ~@3, a2@5 ~@3, a4@2 c#4 ~, [a3,c#4]@3 a3@2 ~@3, ~@2 e3@3 ~@3", // A
  AP: "~@3 a3, [d3,d4,a4], a3@3 ~, f#4 [f#4,d5], ~ f#3@3", AQ: "e4 ~@2 g3, [e3,b3], g3@3 ~, [g4,b4] [g4,b4,e5], ~ e4@3",
  AR: "[a4,c#5]@2 ~ [f#3,a3,c#4], f#4, [f#3,a3,c#4]@3 ~, ~ [a4,c#5]", // A F#m A
  AS: "[g4,b4]@2 ~ b3, [d3,g3], b3@3 ~, d4@5 d4@3, ~ [g4,b4,d5]", // G G5 G
  AT: "[g4,b4]@2 ~ [e3,g3,b3], [e3,g3,b3]@3 ~, e4@5 e4@3, ~ [g4,b4,e5]", // G Em
  AU: "g4@2 ~ b3, [d3,g3,b4], b3@3 ~, d4@5 d4@3, ~ g4", // G
  AV: "[~@7 a3, a2, a4@5 c#4 e4@6 a3 e4@3, e4@2 a3@3 e3@3, c#4 e3@3 [c#4,a4]@4]/2", // F#m
  AW: "~@3 [e3,g3,b3], e4, [e3,b3]@3 ~, [g4,b4] [g4,b4,e5], ~ g3@2 ~", // Em E5 G Em
  AX: "[a4,c#5]@2 ~ [f#3,a3,c#4], f#4, [f#3,a3,c#4]@3 ~, g3 ~@7 [a4,c#5,f#5]@8", // A F#m
  AY: "[g4,b4]@2 ~ [g3,b3], d3, [g3,b3]@3 ~, d4@5 d4@3, ~ [g4,b4,d5]", // G
  AZ: "[e4,g4,b4]@2 e4 [e3,g3,b3,e4], [e3,g3,b3]@3 ~, ~ [g4,b4]", BA: "[d3,g3,b3,d4,g4,b4]!2",
  BB: "[[c4,e4,g4]@2 ~@5 g3, c3, e3@4 [c4,e4,g4] e3@3, g3@2 [c4,e4,g4] g3@3 [c4,e4,g4]@2, ~ c5@3]/2", // C
  BC: "[a2,e3,c#4,e4,a4]", BD: "~@3 e4, d3, ~ a3@3, ~ d4",
  BE: "[~@7 [f#3,b3], [c#3,c#4] b2, ~ e3@3 ~ d4@3, ~@2 [a3,e4]@2 b3 f#3 f#4@2, ~@3 a4@5]/2", // B5 C# A5
  BF: "~@3 c#4, c#3, c#4@3 ~, ~ [e3,e4]@3, ~ [a3,a4]", BG: "~@3 e4, [d3,d4]@15 ~, a3@8 a3@7 ~, ~@4 [f#3,f#4]@11 ~",
  BH: "[e4 ~@27 [f#3,b3]@4, [c#3,c#4] b2, ~ e3@3 ~ d4@3, ~@2 [a3,e4]@2 b3 f#3 f#4@2, ~@3 a4@5]/2", // B5 C# A5
  BI: "[~@3 e4 ~@3 c#4, [d3,d4]@15 ~ c#3@16, a3 a3@2 [a3,a4], ~@4 [f#3,f#4]@11 ~ c#4@12 ~@4, ~@5 [e3,e4]@3]/2", // D A F# E
  BJ: "~@3 b4, [b2,b3], ~ [f#3,d4]@3, ~ f#4", BK: "~@12 c#4@3 ~, c#3@15 ~, c#4@3 ~, ~@4 [e3,e4]@11 ~, ~@8 [a3,a4]@7 ~",
  BL: "[d3,f#3,a3,d4,f#4,a4]/2", // D
})).s("gm_epiano2").gain(0.32)

// bass · fretless bass
const bass = note(`<
  A B C B A B C B D E F G H I J K L M N F G O A P Q R S T U V W X Y Q Z AA AB T Q AC AD U V AE AF AG AB T Q AH AI AJ AK
  Q T AL AM AH AN AJ AH Q AO AP AQ O A B C B A B C B Q R S T U V W X Y Q Z AA AB T Q AC AD U V S AF AG AB T Q AH V AJ AK
  AR T AL Q AH V AJ AK Q T AL Q S Y V AS AT AU Y S AV AW V AX AT V Y AR AY AZ C J BA B BA J BA B BA J BA B BA BB@2
>`.pickRestart({
  A: "c2", B: "b1", C: "a1", D: "c1", E: "b2", F: "a2", G: "g2", H: "f2", I: "e2", J: "d2", K: "~@6 d3 e3", L: "f3",
  M: "e3", N: "d3", O: "g1", P: "g1 a1 b1 d2", Q: "c2@11 ~ c2@4", R: "b1@11 ~ b1@4", S: "a1@11 ~ a1@4",
  T: "g1@11 ~ g1@4", U: "f1@11 ~ f1@4", V: "e1@11 ~ e1@4", W: "d1@3 a1", X: "d2@6 a1 c2", Y: "d2@11 ~ d2@4",
  Z: "b1@3 b1", AA: "a1@3 a1", AB: "g1@11 ~ g1@3 ~", AC: "g1 c2", AD: "f1@11 ~ f1@3 ~", AE: "a1@11 ~ a1@3 ~",
  AF: "a#1@13 ~ f1@2", AG: "a#1@11 ~ a#1@4", AH: "d1@11 ~ d1@4", AI: "e1@11 ~ e1@3 ~", AJ: "f1@3 e1", AK: "d1@3 d1",
  AL: "g1@7 ~ g1@2 a1@2 c2@2 d2@2", AM: "c2@3 c2", AN: "e1@12 e1@3 ~", AO: "a#1@11 ~ a#1@3 ~", AP: "a#1@11 ~ a1@4",
  AQ: "g1@3 d1", AR: "c2@11 ~ c2@3 ~", AS: "f#1@11 ~ f#1@3 ~", AT: "g1@3 f#1", AU: "e1@3 e1",
  AV: "a1@7 ~ a1@2 b1@2 d2@2 e2@2", AW: "d2@3 d2", AX: "f#1@3 f#1", AY: "c2@11 ~ b1@4", AZ: "a1@3 e1", BA: "c#2",
  BB: "d1/2",
})).s("gm_fretless_bass").gain(0.54)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N O@2 P Q J R S T U V I J K L M N O@2 P Q J R S T U W X Y Z AA AB AC Y AD ~@18 A B C D E F G
  H I J K L M N O@2 P Q J R S T U W X Y Z AA AB AC Y AD ~@36 AE AF AG AH AI AF AG AH AI AJ AK AL AM@2
>`.pickRestart({
  A: "~@2 c4 d4, c3@13 ~@3, ~ g3@3", B: "~@2 d4 b3, b2@15 ~, ~ g3@3", C: "~@2 a3 c4, a2@7 ~, ~ e3@3",
  D: "~@2 d4 b3, b2@15 ~, ~ d3@3", E: "~@2 c4 d4, c3@15 ~, ~ g3@3", F: "~@2 d4 b3, b2@15 ~, ~@4 g3@11 ~",
  G: "~@2 a3 c4, a2@15 ~, ~ e3@3", H: "~@12 d4@3 ~, b2@15 ~, ~@4 d3@11 ~, ~ g3", I: "c3 g3 c4 c3", J: "b2 d3 g3 b2",
  K: "a2 c3 e3 a2", L: "g2 c3 g3 g2", M: "f2 c3 f3 f2", N: "e2 g2 c3 e2",
  O: "[d3 f3 a3 ~ d3 f3 a3 d3, ~@3 d3 ~@4, ~@7 a3@2 ~@7]/2", P: "f3 a3 d4 d3", Q: "c3 f3 a3 c3", R: "a2 c3 f3 a2",
  S: "g2 b2 d3 g2", T: "g3 d3 b2 g2", U: "c3 e3 g3 c3", V: "g2 a2 b2 g2", W: "g3 a#3 c4 g3", X: "f3 a3 c4 f3",
  Y: "g3 b3 d4 g3", Z: "e4 b3 g3 e4", AA: "c4 a3 c4 e4", AB: "d4 a#3 f3 a#3", AC: "d4 a#3 f3 d4", AD: "b3 d4 g4 d4",
  AE: "~@2 d4 e4, d3@13 ~@3, ~ a3@3", AF: "~@2 e4 c#4, c#3@15 ~, ~ a3@3", AG: "~@2 b3 d4, b2@7 ~, ~ f#3@3",
  AH: "~@2 e4 c#4, c#3@15 ~, ~ e3@3", AI: "~@2 d4 e4, d3@15 ~, ~ a3@3", AJ: "~@2 e4 c#4, c#3@15 ~, ~@4 a3@11 ~",
  AK: "~@2 b3 d4, b2@15 ~, ~ f#3@3", AL: "~@12 e4@3 ~, c#3@15 ~, ~@4 e3@11 ~, ~ a3", AM: "[d3,a3,d4]/2",
})).s("gm_acoustic_guitar_steel").gain(0.28)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A B C@2 A B D@2 ~@14 E F@2 ~@41 A B C@2 A B D@2 ~@60 G H I@2 G H I@2 G H J@2 K@2
>`.pickRestart({
  A: "d5", B: "d5@6 c5 b4", C: "[c5@14 d5 d#5]/2", D: "c5@15 ~", E: "~@3 d5", F: "g4/2", G: "e5", H: "e5@6 d5 c#5",
  I: "[d5@14 e5 f5]/2", J: "d5@15 ~", K: "d5/2",
})).s("gm_overdriven_guitar").gain(0.48)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@3 B@4 C ~@16 D@2 E@4 F@6 G@3 H@2 I@3 J@4 K L M N@3 O@3 L M P@7 A@3 B@4 C D@2 E@4 F@6 G@3 H@2 I@3 J@4 K L M N@3 Q@2 K
  L M N@3 Q@2 K R S M T U@3 V@2 W M T X@7 Y@3 Z AA Z AB AC@4 Z AD@2
>`.pickRestart({
  A: "[e4 [b3,d4] [a3,c4,e4], g4@11 ~@5, c4@5 ~@11]/3", B: "[[b3,d4] [c4,e4] [b3,d4] [a3,c4,e4], g4@49 ~@15]/4",
  C: "[b3,d4,g4]", D: "[[c4,e4] [b3,d4], g3]/2", E: "[a3 g3 [a3,f4] [g3,e4], c4, e4 ~]/4",
  F: "[d4@3 c4 ~ [c4,f4], [a3,f4]@4 [g3,b3,d4] ~, ~@78 a3@17 ~]/6", G: "[[b3,d4]@2 [c4,e4], g3]/3",
  H: "[[a#3,d4] e4 [a3,f4]@2, g3 ~, ~ c4@3, ~@8 d4 ~@23]/2", I: "[d4 ~ [a3,c4], [g3,b3]@2 ~, ~ e4@2]/3",
  J: "[[a#3,f4] [g3,b3], d4]/4", K: "[g3,c4,e4]", L: "[a3,d4,f4]", M: "[b3,e4,g4]", N: "[c4 d4 c4, [a3,f4]]/3",
  O: "[[b3,d4,g4]@2 [g3,c4,e4]]/3", P: "[c4 d4 c4 a#3@2 [g3,b3]@2, f4@5 ~@2, a3@3 d4@4]/7", Q: "[b3,d4,g4]/2",
  R: "[a3,c#4,e4]", S: "[a3,d4,f#4]", T: "[c#4,f#4,a4]", U: "[d4 e4 d4, [b3,g4]]/3", V: "[c#4,e4,a4]/2",
  W: "[a3,d4,f#4], [c#4,a4] ~@15", X: "[d4 e4 d4 c4@2 [a3,c#4]@2, g4@5 ~@2, b3@3 e4@4]/7",
  Y: "[f#4 [c#4,e4] [b3,d4,f#4], a4@11 ~@5, d4@5 ~@11]/3", Z: "[c#4,e4,a4]", AA: "[d4,f#4]", AB: "[b3,d4,f#4]",
  AC: "[[c#4,e4] [d4,f#4] [c#4,e4] [b3,d4,f#4], a4@49 ~@15]/4", AD: "[a3,d4,f#4]/2",
})).s("gm_string_ensemble_2").gain(0.19)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A ~@19 B@15 C B@7 D B@7 C B@8 D A@2 ~ A ~ A ~ A E B@15 C B@7 D B@7 C B@8 F B@8 C B@8 D A@2 ~ A ~ A ~ A ~ A ~ A E
  ~@2
>`.pickRestart({
  A: "x", B: "x ~@2 x", C: "x ~@2 x ~ x!2 ~", D: "x!2 ~@4 x ~", E: "~@3 x ~ x ~@2", F: "x ~@5 x!2",
})).gain(0.54)

// drums · rim
const rim = s("rim").struct("<~@24 A@17 ~ A ~ A ~ A ~@27 A@17 ~ A ~ A ~ A ~@51>".pickRestart({
  A: "~ x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@23 A ~@15 B ~ B ~ B ~ B ~ B@18 ~@8 B ~@15 B ~ B ~ B ~ B ~ B@18 C B@17 ~@12 B ~@2
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@23 A ~@15 B ~@7 C ~@7 B ~@8 C ~@8 B ~@15 B ~@7 C ~@7 B ~@9 A ~@7 B ~@8 C ~@12 B ~@2
>`.pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "~@2 x ~@3 x!2",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<~@24 [x!4]!41 ~@9 [x!4]!59 ~@15>").gain(0.42)

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

// drums · open hat
const open_hat = s("oh").struct("<~@4 A ~@61 A ~ A ~ A ~ A ~@61 A ~ A ~ A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@115 [~@2 x ~ x ~ x!2 ~@8] ~@32>").gain(0.42)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@15 A B ~ B ~ B ~ B C B@7 C B@8 A ~@8 A ~@15 A B ~ B ~ B ~ B C B@7 C B@9 C B@7 C B@8 A ~@12 A ~
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2",
})).gain(0.48)

stack(
  epiano2, bass, acoustic_guitar_steel, overdriven_guitar, string_ensemble_2, kick, rim, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash
)

More by Zeze di Camargo