Strudelify

i got rhythm

R.Folino

KeyB♭ majorTempo120 bpm
0:00/0:00
// i got rhythm — R.Folino
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/94902; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 106 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 · [c3,e3] is a chord · [...]/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.

// other · violin
const violin = note(`<
  ~@14 A B ~@6 A C D E D F G H I J ~@5 K L M N O ~@14 P B ~@6 Q ~@15 P B ~@6 Q ~@8 K N R L S K N T O
>`.pickRestart({
  A: "f5@4 eb5@3 ~", B: "d5 ~@7", C: "d5 ~@2 d5 ~@2 d5 ~", D: "~@2 d5@3 d5 ~@2", E: "d5@3 e5 ~@4", F: "d5@3 g4 ~@4",
  G: "~@4 c5@6 c5 ~@5", H: "c5@3 d5 ~@4", I: "~@4 db5@6 db5 ~@5", J: "c5 ~", K: "~@10 eb5@4 c5 ~",
  L: "d5@2 ~@2 d5@2 ~@2 c5@2 d5@2 eb5 ~@3", M: "f5@8 ~@2 eb5@4 c5 ~", N: "d5@2 ~@2 d5@2 ~@2 c5@2 d5@2 c5 ~@3",
  O: "bb4 ~@7", P: "f5@3 ~ eb5@3 ~", Q: "gb5 ~@3 gb5@3 f5", R: "bb4@2 ~@8 eb5@4 c5 ~", S: "f5",
  T: "bb4@2 ~@9 e5 f5 ~@3",
})).s("gm_violin").gain(0.21)

// other · viola
const viola = note(`<
  ~@14 A B ~@6 A C D E F G H I J K ~@5 L M N O P ~@14 Q B ~@6 R ~@15 Q B ~@6 R ~@8 L O S M T L O U B
>`.pickRestart({
  A: "d5@4 c5@3 ~", B: "bb4 ~@7", C: "bb4 ~@2 bb4 ~@2 bb4 ~", D: "~@2 a4@3 g4 ~@2", E: "f4@3 gb4 ~@4",
  F: "~@2 g4@3 bb4 ~@2", G: "a4@3 g4 ~@4", H: "~@4 g4@4 ~@2 g4 ~@5", I: "g4@3 g4 ~@4", J: "~@4 bb4@6 bb4 ~@5",
  K: "a4 ~", L: "~@10 eb5@4 c5 ~", M: "d5@2 ~@2 d5@2 ~@2 c5@2 d5@2 eb5 ~@3", N: "f5@8 ~@2 eb5@4 c5 ~",
  O: "f4@2 ~@2 f4@2 ~@2 eb4@2 eb4@2 eb4 ~@3", P: "d4 ~@7", Q: "d5@3 ~ c5@3 ~", R: "db5 ~@3 db5@3 c5",
  S: "d4@2 ~@8 eb5@4 c5 ~", T: "f5", U: "d4@2 ~@9 e4 f4 ~@3",
})).s("gm_viola").gain(0.2)

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  A B A B A B C@2 D E F G D H I J D E F G D H I K L M N O P Q R S D E F G D T U V I J ~@2 W X@2 ~ Y Z ~@2 W X@2 ~ Y Z
  ~@6 AA ~@3 W X@2 ~ Y Z ~@2 W X@2 ~ Y Z ~@6 AA ~ D E F G D T U V I AB U AC AD I AE AF
>`.pickRestart({
  A: "~@2 f4@3 f4 ~@2", B: "f4@3 f4 ~@4", C: "[bb4 ~ c5 ~ bb4 c5@2 d5@2 ~ e4@4 eb4 ~]/2", D: "~@4 d4@2 ~@5 d4 ~@4",
  E: "g4@3 f4 ~@4", F: "~@4 g4@2 ~@5 g4 ~@4", G: "eb4@3 c4 ~@4", H: "g4@6 a4@2 ~@2 eb5@4 c5 ~",
  I: "f4@2 ~@2 f4@2 ~@2 eb4@2 eb4@2 eb4 ~@3", J: "d4 ~ e4@4 eb4 ~", K: "d4 ~@2 f4 ~@2 f4 ~", L: "~@2 a4@3 g4 ~@2",
  M: "f4@3 gb4 ~@2 gb4@2", N: "f4 ~ g4@3 bb4 ~@2", O: "a4@3 g4 ~@4", P: "~@4 g4@4 ~@2 g4 ~@5", Q: "g4@3 g4 ~@4",
  R: "~@4 gb4@6 gb4 ~@5", S: "g4 ~", T: "bb4@6 c5@2 ~@2 eb5@4 c5 ~", U: "d5@2 ~@2 d5@2 ~@2 c5@2 d5@2 eb5 ~@3",
  V: "f5@8 ~@2 eb5@4 c5 ~", W: "~@2 a4@3 g4 ~@2 a4@2 g4 ~@5", X: "[a4@2 g4@4 ~@2 a4@2 g4 ~@3 d4@4 ~@14]/2",
  Y: "a4@3 ~ a4@3 ~", Z: "g4 ~@7", AA: "bb4 ~@3 bb4@3 a4", AB: "d4@2 ~@8 eb5@4 c5 ~", AC: "f5", AD: "~@10 eb5@4 c5 ~",
  AE: "d4@2 ~@9 e4 f4 ~@3", AF: "bb4 ~@7",
})).s("gm_trumpet").gain(0.12)

// other · french horn · "Horn"
const french_horn = note(`<
  A B A B A B C@2 D E F G D H I J D E F G D H K L M N O P Q R Q S D E F G D H T U K J ~@22 V ~@23 V ~ D E F G D H T U K
  W T X Y K Z AA
>`.pickRestart({
  A: "~@2 bb3@3 bb3 ~@2", B: "a3@3 a3 ~@4", C: "[bb3 ~ c4 ~ bb3 c4@2 d4@2 ~ bb3@4 a3 ~]/2", D: "~@4 f3@2 ~@5 g3 ~@4",
  E: "f3@3 f3 ~@4", F: "~@4 a3@2 ~@5 bb3 ~@4", G: "g3@3 f3 ~@4", H: "f3@6 c4@2 ~@2 c4@4 a3 ~",
  I: "bb3@2 ~@2 bb3@2 ~@2 a3@2 a3@2 a3 ~@3", J: "bb3 ~ bb3@4 a3 ~", K: "bb3@2 ~@2 bb3@2 ~@2 a3@4 a3 ~@3",
  L: "bb3 ~@2 d4 ~@2 bb4 ~", M: "~@2 d4@3 d4 ~@2", N: "d4@3 e4 ~@2 d4@2", O: "d4 ~ d4@3 d4 ~@2", P: "d4@3 g3 ~@4",
  Q: "~@4 c4@6 c4 ~@5", R: "c4@3 d4 ~@4", S: "c4 ~", T: "bb3@2 ~@2 d4@2 ~@2 eb4@2 f4@2 eb4 ~@3",
  U: "d4@8 ~@2 c4@4 a3 ~", V: "bb4 ~@3 bb4@3 a4", W: "bb3@2 ~@8 c4@4 a3 ~", X: "d4", Y: "~@10 c4@4 a3 ~",
  Z: "bb3@2 ~@9 e4 f4 ~@3", AA: "bb3 ~@7",
})).s("gm_french_horn").gain(0.21)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B A B A B C@2 D E F G D H I J D E F G D H I K L M N O P Q R S D E F G D H T U I J ~@22 V ~@23 V ~ D E F G D H T U I
  W T X Y I Z AA
>`.pickRestart({
  A: "bb2 ~@3", B: "~@11 e3 f3@2 ~@2", C: "[bb2 ~ c3 ~ d3 eb3@2 d3@2 ~ bb2@4 a2 ~]/2", D: "~@4 f3@2 ~@5 g3 ~@4",
  E: "bb3@3 c4 ~@4", F: "~@4 c4@2 ~@5 bb3 ~@4", G: "g3@3 f3 ~@4", H: "bb3@6 c4@2 ~@2 eb4@4 c4 ~",
  I: "d4@2 ~@2 d4@2 ~@2 c4@2 d4@2 c4 ~@3", J: "bb3 ~ bb2@4 a2 ~", K: "bb3 ~@2 f3 ~@2 bb2 ~", L: "~@2 gb3@3 g3 ~@2",
  M: "ab3@3 a3 ~@2 a3@2", N: "b3 ~ b3@3 b3 ~@2", O: "a3@3 b2 ~@4", P: "~@4 e3@6 f3 ~@5", Q: "gb3@3 g3 ~@4",
  R: "~@4 e3@6 e3 ~@5", S: "eb3 ~", T: "d4@2 ~@2 d4@2 ~@2 c4@2 bb3@2 a3 ~@3", U: "g3@8 ~@2 eb4@4 c4 ~",
  V: "bb3 ~@3 bb3@3 a3", W: "bb3@2 ~@8 eb4@4 c4 ~", X: "g3", Y: "~@10 eb4@4 c4 ~", Z: "bb3@2 ~@9 e3 f3 ~@3",
  AA: "bb2 ~@7",
})).s("gm_tenor_sax").gain(0.22)

// other · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note("<A@54 B A@23 B A@22 C A@2 D C>".pickRestart({
  A: "bb4!4", B: "~ bb4!3", C: "bb4 ~@3", D: "bb4 ~@2 bb4",
})).s("gm_acoustic_guitar_nylon").gain(0.03)

// chords · piano
const piano = note(`<
  A B A B A B C@2 D E F G D H I J D E F G D H I K L M N O P Q R S D E F G D H I T U V@2 W F X V Y I V@2 W F X V Y I K L
  M N Z Q@2 R S V W F X V Y I V@2 W F X V Y I K L M N Z Q@2 R S D E F G D H I T U AA I AB T U AC AD
>`.pickRestart({
  A: "~@2 [d3,g3,c4,d4,f4,bb4]@3 [d3,g3,c4,d4,f4,bb4] ~@2", B: "[db3,g3,b3,db4,f4,a4]@3 [db3,g3,b3,db4,f4,a4] ~@4",
  C: "[[d3,f3,c4,g4,d5]@6 ~@2 [eb3,gb3,a3,c4,eb4,c5]@6 [bb2,d3,a3,c4,g4,bb4]@4 ~@9 [e4,e5] [f4,f5]@2 ~@2]/2", // Dm7 Ebdim Gm E F
  D: "[bb5,bb6] ~@3", E: "~@11 [g5,g6] [f5,f6]@2 ~@2", F: "[bb4,bb5] [a4,a5]", G: "[g4,g5]@8 ~@3 [e4,e5] [f4,f5]@2 ~@2",
  H: "~@5 [c3,f3,eb4,a4,eb5]@3", I: "[d3,f3,d4,a4,d5]@3 ~ [c3,f3,eb4,a4,c5]@3 ~",
  J: "[bb2,d3,a3,c4,g4,bb4]@2 ~@9 [e4,e5] [f4,f5]@2 ~@2", K: "[d3,a3,c4,g4,bb4]@2 ~ g4 bb4@3 g4 c5@4 db5@2 d5@2",
  L: "[d3,a3,gb4,a4,c5] ~@3", M: "~@3 [d3,a3,gb4,a4,c5]", N: "[d3,g3,f4,b4] ~@3", O: "~@5 [g3,g5] [a3,a5] [g3,g5]",
  P: "[c3,c4,c5,c6] ~@7", Q: "[e3,bb3,d4,bb4] ~@3", R: "[db3,gb3,e4,bb4] ~@3",
  S: "[c3,f3,eb4,a4]@6 ~@5 [e4,e5] [f4,f5]@2 ~@2", T: "[f3,a3,d4,b4] [e3,ab3,db4,bb4]",
  U: "[d3,f3,c4,a4] [f2,eb3,c4,g4]", V: "[bb2,d3,a3,c4,g4,bb4] ~@7", W: "[c3,g3,d4,g4,bb4] ~@7", X: "[g4,g5] ~",
  Y: "[c3,g3,d4,g4,bb4] ~@4 [c3,f3,eb4,a4,eb5]@3", Z: "~@3 [d3,g3,f4,b4]",
  AA: "[d3,a3,c4,g4,bb4] ~@4 [c3,f3,eb4,a4,eb5]@3", AB: "[f3,a3,d4,b4]",
  AC: "[d3,a3,c4,g4,bb4]@2 ~@9 [e4,e5] [f4,f5] ~@3", AD: "[bb5,bb6] ~@7",
})).s("gm_piano").gain(0.48)

// bass · fretless bass · "Fretless Electric Bass"
const bass = note(`<
  A B A B A B A C D E F G H I J C D E F G H I J K L M N O P Q R S D E F G H I J T U C D E F G H I J C D E F G H I J K L
  M N O P Q R V D E F G H I J C D E F G H I J K L M N O P Q R V D E F G H I J T U W J X T U Y Z
>`.pickRestart({
  A: "bb1 ~ f1 ~", B: "b1@2 ~ f1", C: "bb1 db2 c2 f1", D: "bb1 g1", E: "c2@3 b1@2 f2 f1@2", F: "d2 db2",
  G: "c2@3 f2@3 f1@2", H: "bb1@3 bb1 g1@3 g1", I: "c2@3 b1@2 f2@2 f1", J: "bb1 d2 f1 a1", K: "bb1 f1 g1 bb1",
  L: "d2!2 e2!2", M: "f2!2 gb2!2", N: "g2 gb2 f2 e2", O: "g1 a1 b1 g1", P: "c2!2 d2!2", Q: "eb2!2 e2 f2",
  R: "gb2 bb1 a1 gb1", S: "f1 a1 d2 c2", T: "g1 gb2", U: "f2!2 eb2!2", V: "f1 eb2 c2 b1", W: "bb1@3 b1@2 f2@2 f1",
  X: "g1 d2 g1@2", Y: "bb1@8 ~@3 e2 f2 ~@3", Z: "bb1 ~@7",
})).s("gm_fretless_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct("<A B A B A B A B A@3 B A@7 B A@84 C@2>".pickRestart({
  A: "x!2", B: "x ~@3 x ~@2 x", C: "x",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct("<~@8 [~@3 x]!16 ~@8 [~@3 x]!26 ~@8 [~@3 x]!16 ~@24>").gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@24 [~ x ~ x]!8 ~@26 [~ x ~ x]!8 ~@16 [~ x ~ x]!22 [~@3 x] x>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x ~ x!3 ~ x!2]!96 [x ~@5 x!2] x>").gain(0.48)

// drums · ride
const ride = s("rd").struct("<[x ~ x!3 ~ x!2]!8 ~@98>").gain(0.48)

stack(violin, viola, trumpet, french_horn, tenor_sax, acoustic_guitar_nylon, piano, bass, kick, rim, snare, hihat, ride)