Strudelify

Real in Rio (Capture)

John Powell

KeyE majorTempo120 bpm
0:00/0:00
// Real in Rio (Capture) — John Powell
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3550381; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@12 A B A B C@2 ~@3 D@2 E@3 F D@4 E@4 G H@3 I J K L M N O G P Q R S M N O G P Q R S ~@27 T@3 U V W ~ X Y Z AA X AB AC
  AD AE
>`.pickRestart({
  A: "a3 ~ d3 ~ g#3 ~ d3 ~", B: "g#3 ~ d3 ~ a3 ~ d3 ~", C: "e3", D: "e4 b3 e4 b3", E: "e4 a3 e4 a3", F: "e4 a3 e4 b3",
  G: "b3 ~@3", H: "e3 b3 e3 b3", I: "a3 e4 a3 e4", J: "f#4@3 f#4@2 f#4@3 f4@3 f4@2 f4@3",
  K: "e4@3 e4@2 e4@3 d#4@3 d#4@2 d#4@3", L: "a3@3 b3@2 c#4@3 d#4@3 e4@2 f#4@3", M: "g#4 b3 f#4 b3", N: "f#4 b3 e4 b3",
  O: "e4 b3 d#4 c#4", P: "g#3 b2 f#3 b2", Q: "f#3 g#3 f3 c#3", R: "a3@3 a3@2 a3@3 f#3@3 f#3@2 f#3@3", S: "e3 ~@7",
  T: "c4 g3 c4 g3", U: "d4 a3 d4 a3", V: "d4 a3 c#4 a3", W: "c4 a3 b3 d4", X: "e4 g3 d4 g3", Y: "d4 g3 c4 g3",
  Z: "c4 g3 b3 a3", AA: "g3 g#3 a3 e3", AB: "d4 e4 c#4 a3", AC: "e4 d4", AD: "e4", AE: "e4 ~",
})).s("gm_tenor_sax").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A B ~ C@14 D C@22 E ~ F G H I@3 J ~@2 K L ~ C M I ~@4 N O P Q R C@16 Q R
>`.pickRestart({
  A: "x ~ x!2", B: "x ~@2 x ~@2 x ~@3 x ~ x ~@3", C: "x!4", D: "x ~@2 x!2 ~@3", E: "x ~ x ~ x ~@2 x ~ x ~ x!2 ~@3",
  F: "x ~ x ~ x ~@2 x ~ x ~ x ~@4", G: "~ x", H: "~@7 x", I: "x", J: "~@2 x ~ x ~@3 x!2 ~ x!2 ~ x ~",
  K: "x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3", L: "x!2 ~ x!3 ~ x!3 ~ x!2 ~@3", M: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", N: "~@12 x ~@2 x",
  O: "~ x ~@10 x ~@2 x", P: "~ x ~@14", Q: "x ~@2 x ~@2 x ~@3 x ~ x!2 ~@2", R: "x ~@7 x!2 ~@2 x ~@3",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@59 [x ~ x ~ x ~@2 x ~ x ~ x!2 ~@3] ~@42>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@19 A ~@15 B ~@22 C ~ D E F G@3 H ~@2 I J K L M G ~@4 N O P Q R ~@16 Q R>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~ x ~@3", B: "x ~@2 x!2 ~@3", C: "x ~ x ~ x ~@2 x ~ x ~ x!2 ~@3",
  D: "x ~ x ~ x ~@2 x ~ x ~ x ~@4", E: "~ x", F: "~@7 x", G: "x", H: "~@2 x ~ x ~@3 x!2 ~ x!2 ~ x ~",
  I: "x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3", J: "x!2 ~ x!3 ~ x!3 ~ x!2 ~@3", K: "x ~@2 x!3 ~ x ~ x ~ x!2 ~ x ~",
  L: "x ~@3 x!2 ~ x!3 ~ x!3 ~ x", M: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", N: "~@12 x ~@2 x", O: "~ x ~@10 x ~@2 x",
  P: "~ x ~@14", Q: "x ~@2 x ~@2 x ~@3 x ~ x!2 ~@2", R: "x ~@7 x!2 ~@2 x ~@3",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@62 A B@3 C ~@5 D E B ~@7 F G ~@16 F G>".pickRestart({
  A: "~@7 x", B: "x", C: "~@2 x ~ x ~@3 x!2 ~ x!2 ~ x ~", D: "x ~@3 x!2 ~ x!3 ~ x!3 ~ x",
  E: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", F: "x ~@2 x ~@2 x ~@3 x ~ x!2 ~@2", G: "x ~@7 x!2 ~@2 x ~@3",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A@8 ~@2 B C ~ D@14 E D@22 F ~ G H I@5 J@4 K ~@12 D@16 ~@2>".pickRestart({
  A: "x ~@3 x!2 ~ x!2 ~@3 x!2 ~ x", B: "x ~@2 x!2 ~ x ~ x ~ x ~ x ~@3", C: "x ~@2 x ~@2 x ~@3 x ~ x ~@3",
  D: "x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~", E: "x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3", F: "x ~ x ~ x ~@2 x ~ x ~ x!2 ~@3",
  G: "x ~ x ~ x ~@2 x ~ x ~ x!3 ~ x", H: "x!2 ~ x!2 ~@3 x ~@7", I: "~@4 x!2 ~ x ~@4 x!2 ~ x",
  J: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", K: "x ~@2 x!3 ~ x ~ x ~ x!2 ~ x ~",
})).gain(0.3)

// drums · bongos
const bongos = s("bongo:18").struct("<~@9 A@7 ~@5 A@14 ~ B@22 ~@3 C B@9 ~@13 B@17 D>".pickRestart({
  A: "x!8", B: "x!16", C: "~@8 x!8", D: "x!8 ~@8",
})).gain(0.78)

// drums · ht
const ht = s("ht").struct("<~@62 [x!2]!9 ~@31>").gain(0.3)

// drums · triangle
const triangle = s("triangles:30").struct("<[x!16]!19 ~@55 [x!16]!10 ~@18>").gain(2.59)

stack(tenor_sax, kick, rim, snare, low_tom, mid_tom, bongos, ht, triangle)