Strudelify

Redeas do possante

Zeze di Camargo

KeyG majorTempo119 bpm
0:00/0:00
// Redeas do possante — Zeze di Camargo
// 119 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(119/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 · "Split Chan 4"
const bass = note(`<
  ~ A B C D E F G@2 B H I J B H F K H L M N O P Q R B H I J B H F K H L M N O K G@2 S T U V W X Y Z S T U V W X Y Z E F
  G@2 B H I J B H F K H L M N O K G@2 S T U V W X Y Z S T U V W X Y Z S T U V W X Y Z S T U V W X Y Z B H AA@2
>`.pickRestart({
  A: "c1@5 ~ c1@3 ~ c1@4 c1 ~", B: "g1@5 ~ g1@7 ~ g1@2", C: "b1@5 ~ b1@7 ~ b1@2", D: "e1@5 ~ e1@3 ~ e1@2 b1@2 e1@2",
  E: "c2@5 ~ c2@3 ~ c2@3 ~ c2@2", F: "d2@5 ~ d2@7 ~ d2@2", G: "g1@5 ~ g1@7 ~ d2@2", H: "c2@5 ~ c2@7 ~ c2@2",
  I: "g1@5 ~ g1@5 ~ g1@4", J: "c2@4 ~@2 c2@2 d2@5 ~ d2@2", K: "f#1@5 ~ f#1@7 ~ f#1@2", L: "g1@5 ~ d2@5 ~ g1@2 d2@2",
  M: "b1@5 ~ b1@3 ~ b1@3 ~ b1@2", N: "e1@5 ~ e1@6 b1@2 e1 ~", O: "c2@4 ~@2 c2@7 ~ c2@2", P: "a1@5 ~ e2@5 ~ a1 ~ e2 ~",
  Q: "d2@5 ~ d2@7 ~ a1@2", R: "d2@5 ~ d2@5 ~ a1@2 d2 ~", S: "d2@5 ~ a1@5 ~ d2@2 a1@2", T: "c2@6 g1@5 ~ c2@2 d2@2",
  U: "g1@6 d2@5 ~ d2 ~ d2@2", V: "g1@5 ~ b1@6 g1@4", W: "d2@3 a1@3 d2 a1", X: "c2@3 g1@3 c2 d2",
  Y: "g1@5 ~ g1@6 d2 ~ d2@2", Z: "g1@5 ~ g1@4 d2 ~ g1@3 ~", AA: "[g1@5 ~ g1@7 ~ g1@18]/2",
})).s("gm_fretless_bass").gain(0.71)

// chords · piano · "Split Chan 5"
const piano = note(`<
  ~ A B C D E F G@2 H I J K L M N@2 O P Q R S T U V H I J K L M N@2 O P Q R S W G@2 X Y Z@2 AA AB AC AD X Y Z@2 AA AB AC
  AD E F G@2 H I J K L M N@2 O P Q R S W G@2 X AE Z@2 AA AB AC AD X Y Z@2 AA AB AC AD X Y Z@2 AA AB AC AD X Y Z@2 AA AB
  AC AD H I AF@2
>`.pickRestart({
  A: "c4@4 ~@2 c4@2 c2@2 g3@3 ~ g3@2, [c2,c3,e4]@7 ~@9, g3@3 ~ g3@5 ~ [c4,e4]@6", // C
  B: "~@2 g3@2 b3 ~ [g3,b3,d4]@4 g2@2 [g3,b3,d4]@3 e4, g2 ~", // G
  C: "~@2 b3@2 d#4@2 ~@2 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~, b2@5 ~ b2@7 ~@3", // B
  D: "~@2 e3@3 ~ [e3,g3,b3]@4 e2@2 [e3,g3,b3]@3 ~, e2@7 ~@9", // Em
  E: "~@2 [g3,c4] ~ [g3,c4,e4]@2 ~@2 [c4,e4]@2 g3 ~ c4@2 e4@2, c3@5 ~ c3@7 ~@3, ~@8 g3 ~@3 g3 ~@3", // C5 C
  F: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4]@4 ~@2 [a3,d4,f#4]@4, d3@9 ~ d3@6", // D
  G: "[~@6 [g3,b3,d4]@4 g2@2 [g3,c4,d4]@2 ~@2 [g3,b3,d4]@3 ~ g3 ~ [g3,b3]@4 ~@2 g3@2 b3 ~, g2@9 ~@5 g2@10 ~@2 g2@5 ~, ~@22 d4@7 ~@3]/2", // G Gsus4 G
  H: "[b3,d4]@4 g3 ~ b3@4 ~@4 [b3,d4] ~, g2@9 ~ g2@6, g3@3 ~@3 g3@9 ~, ~@6 d4@7 ~@3", // Bm
  I: "[g3,c4,e4]@3 ~@9 c4@2 e4 ~, c3 e4@2 ~, ~@4 [g3,c4]@6 g3@5 ~, ~@6 c3@9 ~", // C C5
  J: "[b3,d4]@4 g3 ~@7 b3@2 [g3,e4] ~, g2@9 ~ g2@6, g3@3 ~@3 [g3,b3,d4]@6 g3 ~@3", // Bm C G
  K: "c4@2 g3@2 c4 ~ [d4,f#4]@4 a3 ~@3 f#4@2, [c3,e4]@5 ~ d3@9 ~, g3 ~@5 a3@3 ~@3 [a3,d4]@4", // D C D5
  L: "~@2 g3 ~ b3 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4,e4]@3 ~, g2@10 g2@5 ~", // G Em7
  M: "[c4,e4]@4 g3 ~ [g3,c4,e4]@4 c3@2 [g3,c4,e4]@4, c3@9 ~@7, g3@3 ~@13", // C
  N: "[~@4 [a3,d4]@2 a3@2 d4 ~ [a3,d4,f#4]@2 ~@2 [a3,f#4] ~@3 d4@2 ~@4 a3@2 ~@2 [a3,f#4]@4, [d2,d3]@11 ~ d2@6 ~@2 d2@8 ~@4, ~@4 f#4@4 ~@5 d3@5 ~@4 d3@6 ~@4, ~@14 d4@2 a3@5 ~@5 d4@5 ~]/2", // D5 D
  O: "~@2 g3@2 c4 ~ [g3,c4,e4]@4 ~@2 [g3,c4,e4]@3 ~, c3@9 ~ c3@6", // C
  P: "[g3,b3,d4]@3 ~ g3@2 ~@2 g3 ~ [g3,b3,d4]@3 ~@3, g2@4 [b3,d4]@5 ~@7, ~@3 g2@5", // G Bm
  Q: "b3@2 d#4@2 b3@2 [b3,d#4]@3 ~ b3 ~ [b3,d#4,f#4]@3 ~, a#3 ~@5 f#4 ~@2 f#4@2 ~@5", // B
  R: "e2@4 [e3,g3,b3]@2 e2@2 e3 ~@3 g3@2 b3@2, e3 ~@7 [g3,b3]@4 ~@4, ~@10 e3@5 ~", // Em G
  S: "~@2 g3 ~ [g3,c4,e4] ~ g3 ~ [g3,c4,e4]@3 ~ [g3,e4]@4, c3@15 ~, ~@6 c4 ~", // C
  T: "~@4 c#4@2 a3@3 ~@3 a2@2 a3 ~, a2@11 ~@5, ~ e4 ~@2, ~@4 a3 ~@5 [a3,c#4,e4]@4 ~@2", // A
  U: "[a3,d4,f#4]@3 ~ a3@2 ~@2 a3 ~ [a3,d4,f#4]@4 d3@2, d3@4 [d4,f#4]@5 ~@7, ~@6 d3@5 ~@5", // D
  V: "[a3,d4,g4]@2 ~@2 a3 ~@5 a3@2 [a3,d4] ~ [a3,d4,f#4] ~, ~ d3@2 [a3,d4,f#4]@2 ~@3, ~@8 d3@5 ~@3", // Dsus4 D5 D
  W: "~ d4 ~@2 a3 ~ [a3,f#4]@2, a3 d2@2 ~, ~@3 d3@3 ~@2, ~@10 d4@5 ~", // D
  X: "[a3,d4,f#4]@3 ~@5 d3@2 [a3,d4]@2 [d2,d3]@2 [a3,d4] ~, [d2,d3]@4 [a3,d4,f#4]@5 ~ f#4@5 ~, ~@3 d2@3 ~@2", // D D5 D D5 D
  Y: "c4@2 g3@2 [g3,c4] ~ [g3,c4,e4]@4 ~@2 [g3,c4] ~ g3 ~, [c2,c3]@9 ~ c2@6, e4@2 ~@4 e4 ~, g3 ~@9 c3@4 ~@2", // C5 C C5 C
  Z: "[[g3,b3,d4]@3 ~ g3@2 ~@2 g3 ~ [g3,c4,d4] ~@3 [g3,c4] ~ [g3,b3]@2 ~@2 g3 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4] ~ c#4 ~, g2@4 [b3,d4]@5 ~@5 d4@6 ~@12, ~@6 g2@4 ~@2 g2@5 ~ g2@7 ~ g2@4 ~@2]/2", // G Gsus4 C5 G Bm
  AA: "[c2,d2] d2@3 ~@4 d3@2 ~@2 d3 ~ [d2,d3] ~, d3@5 ~ d2@5 ~@5, [a3,d4,f#4]@3 ~ [a3,d4,f#4]@5 ~ [a3,d4,f#4]@5 ~", // Csus2 D
  AB: "c4@2 g3@2 c4 ~ [g3,c4,e4]@4 ~@2 [c4,e4]@2 g3 ~, [c2,c3]@8 ~@2 [c2,c3]@5 ~, e4 ~@3, g3 ~@11 g3 ~@3", // C
  AC: "[g3,b3,d4]@3 ~ g3@2 ~@2 g3 ~ [g3,b3,d4]@4 g2@2, g2 [b3,d4] ~@2, ~@6 g2@5 ~@5", // G Bm
  AD: "[g3,c4,d4]@2 g2 ~ c4 ~ b3@2 ~@2 g3 ~ [g3,b3,d4]@2 g2 ~, ~@3 g2@5 g2@5 ~@3, ~@4 [g3,d4]@5 ~@7", // Gsus4 G G5
  AE: "c4@2 g3@2 [g3,c4] ~ [g3,c4,e4]@4 ~@2 [c4,e4]@2 g3 ~, [c2,c3]@9 ~ c2@6, e4@4 ~@8 g3 ~@3, g3 ~@9 c3@4 ~@2", // C5 C
  AF: "[~@3 [g3,b3,d4]@2 g2 [g3,c4,d4] [g2,g4,b4]@9, g2@9 ~@5 [g3,d4] ~@17]/2", // G Gsus4 G G5
})).s("gm_piano").gain(0.8).pan(0.7)

// chords · string ensemble 2 · "Split Chan 6"
const string_ensemble_2 = note(`<
  ~ A B C D A E F@2 G H G I G A E J H G K L H M N E G H G I G A E J H G K L H J F@2 J H O@2 J H P@2 J H O@2 J H P@2 A E
  F@2 G H G I G A E J H G K L H J F@2 J H O@2 J H P@2 J H O@2 J H P@2 J H O@2 J H P@2 J H O@2 J H P@2 G H Q@2
>`.pickRestart({
  A: "[g3,c4,e4]", B: "[g3,b3,d4]", C: "[f#3,b3,d#4]", D: "[g3,b3,e4]", E: "[a3,d4,f#4]", F: "[g3,b3,d4]/2",
  G: "[b3,d4,g4]", H: "[c4,e4,g4]", I: "[c4,e4,g4] [d4,f#4,a4]", J: "[d4,f#4,a4]", K: "[b3,d#4,f#4]", L: "[b3,e4,g4]",
  M: "[a3,c#4,e4]", N: "[f#3,a3,d4]", O: "[b3,d4,g4]/2", P: "[d4,g4,b4]/2", Q: "[[g3,b3,d4,g4]@7 [g2,d4,g4,b4]@9]/2",
})).s("gm_string_ensemble_2").gain(0.18)

// other · string ensemble 1 · "Split Chan 7"
const string_ensemble_1 = note("<~@4 A B@4 ~@47 A B@4 ~@52>".pickRestart({
  A: "~@14 e5 f#5", B: "[g5@2 a5@2 g5@2 f#5@2 g5@2 b5 ~ b5@9 ~ a5 ~ a5@2 g5 ~ g5@33 ~@3]/4",
})).s("gm_string_ensemble_1").gain(0.8).pan(0.3)

// chords · alto sax · "Split Chan 8"
const alto_sax = note("<A B@2 C D ~@34 E@2 F ~@6 G F ~@25 E@2 F ~@6 G F ~@6 G F ~@6 G F ~@6 H ~@2 I@2>".pickRestart({
  A: "~@10 e4 f#4 g4 a4 b4 d5", B: "[[c5,e5]@4 [e4,g4] ~ [f#4,g4,c5] ~ [c5,e5]@2 [a4,c5]@3 ~ [b4,d5]@16 ~@2]/2",
  C: "[d#4,b4] ~ [d#4,b4] ~ [d#4,b4]@2 [e4,c5]@2 [d#4,b4]@4 [c4,a4] ~ [c4,a4]@2", D: "~ b3@6 ~, ~ g4@5 ~@2",
  E: "[~@4 b4 ~ b4@3 ~ g4 ~ d4 e4 d4@6 ~@2 d4 ~ [c4,e4]@4 [c#4,f4]@4]/2", F: "[d4,f#4]",
  G: "~@6 d4 ~ [c4,e4]@4 [c#4,f4]@4", H: "~@4 b4 c5 b4 g4@5 ~@4", I: "[~@4 b4 ~ b4@3 ~ g4 ~ d4 e4 [d4,g4,b4]@18]/2",
})).s("gm_alto_sax").gain(0.8).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@9 [~ x ~ x]!32 ~@20 [~ x ~ x]!16 ~@32 [~ x ~ x]!3 ~>").gain(0.8)

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

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@31 A ~@7 B ~@7 B ~@3 A ~@15 A ~@7 B ~@7 B ~@7 B ~@7 B ~@4>".pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x ~ x!3",
})).gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@9 [x!4]!32 [x!8]!16 ~@4 [x!4]!16 [x!8]!32 [x!4]!3 ~>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 [~ x] ~@35 [~ x] ~@36>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@31 A ~@7 A ~@7 A ~@3 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~ B ~>".pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~ [x!8]!8 ~@48 [x!8]!4 ~@52>").gain(0.8)

stack(
  bass, piano, string_ensemble_2, string_ensemble_1, alto_sax, kick, rim, snare, low_tom, pedal_hat, mid_tom, crash,
  ride
)

More by Zeze di Camargo