Strudelify

Il suono c'e

Raf

KeyB majorTempo124 bpm
0:00/0:00
// Il suono c'e — Raf
// 124 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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
const bass = note(`<
  ~@4 A@2 B C D@2 E F G@2 H I J@2 K L ~@2 G@2 H I J@2 M N O P Q R S T U V O P Q R S T W X Y ~@4 Z@2 AA AB AC@2 AD AE
  AF@2 AG AH AI@2 AJ AK ~@2 AF@2 AG AH AI@2 AL AM AN AO AP AQ AR AS AT AU AN AO AP AQ AR AS AV AW AX ~@2 Z@2 AA AB Z@2
  AA AB Z@2 AA AB Z@2 AA AB Z@2 AA AB Z@2 AA ~
>`.pickRestart({
  A: "[f#1@5 ~@3 b1@2 f#1@3 ~ c#1@6 ~@6 c#1@2 e1@4]/2", B: "f#1@6 ~@2 b1@2 f#1@3 ~ e1@2", C: "~@5 c#1 e1@2",
  D: "[f#1@6 ~@2 b1@2 f#1@3 ~ c#1@6 ~@6 f#1@2 f#1@2 f#1@2]/2", E: "f#1@3 ~@3 b1@3 ~@7",
  F: "e1@3 ~@3 a1@2 c#1@2 c#1@2 e1@2 f1@2", G: "[f#1@5 ~ f#1 ~ b1@2 f#1@3 ~ c#1@6 ~@2 c#1@2 c#1@4 e1@4]/2",
  H: "f#1@5 ~ f#1 ~ b1@2 f#1@3 ~ e1@2", I: "~@6 c#1 ~ c#1@2 e1@2 e1@2 f1@2",
  J: "[f#1@6 ~@2 b1@2 f#1@3 ~ c#1@6 ~@4 e1 ~ f#1@2 f#1@2 f#1@2]/2", K: "f#1@5 ~@3 b1 ~ f#1@3 ~@3",
  L: "f1@2 c#2 ~ b1@2 a1@2 e2@2 f#2@5 ~", M: "f#1@5 ~@3 b1 ~ f#1@3 ~ d1@2", N: "d1@2 d1!2 e1!2 f#1@2",
  O: "a1@13 ~ d1@2", P: "e1@3 ~@2 e1 ~ c#1", Q: "f#1@4 ~ f#1 a1 b1", R: "d1@5 ~ d2@4 ~@2 b1@2 f#1@2", S: "a1@13 ~ b1@2",
  T: "g1@15 ~", U: "f#1@2 ~@2 e1@2 ~@2 f#1@5 ~ d1@2", V: "d1@5 ~ d2@2 ~@2 c#2 ~ b1@2 f#1@2", W: "f#1@9 ~ f#1@2 a1@3 ~",
  X: "b1@6 ~ b1 b1@2 a1@2 b1@4", Y: "b0", Z: "[g#1@5 ~@3 c#2@2 g#1@3 ~ d#1@6 ~@6 d#1@2 f#1@4]/2",
  AA: "g#1@6 ~@2 c#2@2 g#1@3 ~ f#1@2", AB: "~@5 d#1 f#1@2",
  AC: "[g#1@6 ~@2 c#2@2 g#1@3 ~ d#1@6 ~@6 g#1@2 g#1@2 g#1@2]/2", AD: "g#1@3 ~@3 c#2@3 ~@7",
  AE: "f#1@3 ~@3 b1@2 d#1@2 d#1@2 f#1@2 g1@2", AF: "[g#1@5 ~ g#1 ~ c#2@2 g#1@3 ~ d#1@6 ~@2 d#1@2 d#1@4 f#1@4]/2",
  AG: "g#1@5 ~ g#1 ~ c#2@2 g#1@3 ~ f#1@2", AH: "~@6 d#1 ~ d#1@2 f#1@2 f#1@2 g1@2",
  AI: "[g#1@6 ~@2 c#2@2 g#1@3 ~ d#1@6 ~@4 f#1 ~ g#1@2 g#1@2 g#1@2]/2", AJ: "g#1@5 ~@3 c#2 ~ g#1@3 ~@3",
  AK: "g1@2 d#2 ~ c#2@2 b1@2 f#2@2 g#2@5 ~", AL: "g#1@5 ~@3 c#2 ~ g#1@3 ~ e1@2", AM: "e1@2 e1!2 f#1!2 g#1@2",
  AN: "b1@13 ~ e1@2", AO: "f#1@3 ~@2 f#1 ~ d#1", AP: "g#1@4 ~ g#1 b1 c#2", AQ: "e1@5 ~ e2@4 ~@2 c#2@2 g#1@2",
  AR: "b1@13 ~ c#2@2", AS: "a1@15 ~", AT: "g#1@2 ~@2 f#1@2 ~@2 g#1@5 ~ e1@2", AU: "e1@5 ~ e2@2 ~@2 d#2 ~ c#2@4",
  AV: "g#1@9 ~ g#1@2 b1@3 ~", AW: "c#2@6 ~ c#2 c#2@2 b1@2 c#2@4", AX: "c#1",
})).s("gm_fretless_bass").gain(0.57)

// chords · piano
const piano = note(`<
  ~@30 A B C D E F G H@2 I J K L M N O P ~@22 Q R S T@2 U V ~ W X Y Z AA AB AC AD@2 AE AF AG AH AI AJ AK AL ~@3 AM@2 AN
  ~@9 AM@2 AN ~@8
>`.pickRestart({
  A: "[a3,c#4,e4]@10 [a3,c#4,e4]@5 ~", B: "[g#3,b3,e4]@5 [g#3,b3,e4]@2 ~, f#4@7 ~",
  C: "[a3,c#4]@10 [a3,c#4,e4]@5 ~, f#4@15 ~", D: "[f#4,a4] [a4,c#5]@2 [a4,c#5,e5]@4 ~, d4@7 ~, ~ f#4@6 ~",
  E: "[a4,c#5,e5]@8 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~@3", F: "[g4,b4,d5]@7 ~ [g4,b4,d5] ~ [g4,b4,d5]@2 ~@4",
  G: "~@2 [a3,a4]@3 [b3,b4]@2 ~ [e3,e4]@2 ~ [a3,a4]@2 ~ [b3,b4]@2", // A B E A B
  H: "[[e4,e5] ~ [d4,d5]@3 ~ [c#4,c#5]@3 ~ [b3,b4]@3 ~@9 a4@2 [a4,c#5,e5]@2 [a4,c#5,e5]@5 ~, ~@14 c#4@17 ~, ~@7 c#5@5 ~@4]/2", // E D C# B A
  I: "~@10 [a4,e5]@3 ~ [a4,e5]@2", J: "~@4 [a4,e5]@6 [a4,e5]@5 ~", K: "e4@3 [e4,e5]@3 [e4,e5]@3 [e4,e5]@7, e3",
  L: "~@2 [e3,e4] [f#3,f#4] [a3,a4]!2 ~ [b3,b4] ~ [c#4,c#5] ~ [a3,a4] [b3,b4]@2 [a3,a4]@2", // E F# A B C# A B A
  M: "[c#4,c#5]@2 ~ [b3,b4]@2 ~ [e4,e5]@2 [a3,a4]@2 ~ [f#3,f#4]@2 [a3,a4] ~@2", // C# B E A F# A
  N: "[e3,f#4,a4,c#5]@9 ~ [e3,f#4,a4,c#5]@5 ~", O: "~@3 [b3,b4,d#5]@2 [e4,a#4,d5]@2 ~ [f#4,a4,c#5,f#5]@7 ~",
  P: "~@3 [b2,g#5,b5]@2 [e3,g5,a#5]@2 ~ [f#3,f#5,a5]@7 ~, [b0,b1]@15 ~", // E Edim F#m B
  Q: "~@2 [d#4,d#5] ~ [d#4,d#5]@3 ~ [f4,f5] ~ [f4,f5]@5 ~", // D# F
  R: "~@2 [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5]@2 [f4,f5]@3 ~@3", S: "~@2 f#3!7 ~ g#3 ~ b3 ~ d#4 ~",
  T: "[[g#3,g#4]@2 ~ [b3,b4] [d#4,d#5] ~ [g3,g4]@4 [b3,b4] ~ [d#4,d#5] ~ [f#3,f#4]@4 [b3,b4] ~ [d#4,d#5] ~ [f3,f4]@3 ~ [b3,b4] ~ [d#4,d#5] ~ [b3,b4] ~]/2", // G# B D# G B D# F# B …
  U: "[g#4,d#5,f#5] ~ [g#4,d#5,f#5] ~ [c#5,c#6] [b4,b5] [g#4,g#5] ~ [g#4,b4,f5] ~ [g#4,b4,f5]@3 ~ [g#4,g#5]@2", // G#7 C# B G# Fdim G#
  V: "[f#4,f#5] ~@7", W: "[b3,d#4,f#4]@10 [b3,d#4,f#4]@5 ~", X: "[a#3,c#4,f#4]@5 [a#3,c#4,f#4]@2 ~, g#4@7 ~",
  Y: "[b3,d#4]@10 [b3,d#4,f#4]@5 ~, g#4@15 ~", Z: "[g#4,b4] [b4,d#5]@2 [b4,d#5,f#5]@4 ~, e4@7 ~, ~ g#4@6 ~",
  AA: "[b4,d#5,f#5]@8 [b4,d#5,f#5] ~ [b4,d#5,f#5]@3 ~@3", AB: "[a4,c#5,e5]@7 ~ [a4,c#5,e5] ~ [a4,c#5,e5]@4 ~@2",
  AC: "~@2 [b3,b4]@3 [c#4,c#5]@2 ~ [f#3,f#4]@2 ~ [b3,b4]@2 ~ [c#4,c#5]@2", // B C# F# B C#
  AD: "[[f#4,f#5] ~ [e4,e5]@3 ~ [d#4,d#5]@3 ~ [c#4,c#5]@3 ~@9 b4@2 [b4,d#5,f#5]@2 [b4,d#5,f#5]@5 ~, ~@14 d#4@17 ~, ~@7 d#5@5 ~@4]/2", // F# E D# C# B
  AE: "~@10 [b4,f#5]@3 ~ [b4,f#5]@2", AF: "~@4 [b4,f#5]@6 [b4,f#5]@5 ~",
  AG: "f#4@3 [f#4,f#5]@3 [f#4,f#5]@3 [f#4,f#5]@7, f#3", // F#
  AH: "~@3 [g#3,g#4] [b3,b4]!2 ~ [c#4,c#5] ~ [d#4,d#5] ~ [b3,b4] [c#4,c#5]@2 [b3,b4]@2, ~ [f#3,f#4] ~@6", // G# B C# D# B C# B F#
  AI: "[d#4,d#5]@2 ~ [c#4,c#5]@2 ~ [f#4,f#5]@2 [b3,b4]@2 ~ [g#3,g#4]@2 [b3,b4] ~@2", // D# C# F# B G# B
  AJ: "[f#3,g#4,b4,d#5]@9 ~ [f#3,g#4,b4,d#5]@5 ~", AK: "~@3 [c#4,c#5,f5]@2 [f#4,c5,e5]@2 ~ [g#4,b4,d#5,g#5]@7 ~",
  AL: "~@3 [c#3,a#5,c#6]@2 [f#3,g#5,c6]@2 ~ [g#3,g#5,b5]@7 ~, [c#1,c#2]@15 ~", // F# G#7 G#m C#
  AM: "[~@8 [f#4,f#5]@2 [f4,f5] [f#4,f#5]@2 ~ [d#4,d#5]@4 ~@2 [f#4,c#5,f#5]@4 ~@2 [f#4,c#5,f#5]@4 ~@2]/2", // F# F F# D# F#5
  AN: "[f#4,c#5,f#5]@4 ~@2 [c#4,f#4,c#5]@3 [c#4,f#4,c#5] [b3,f#4,b4] ~ [c#4,f#4,c#5]@2 [b3,f#4] ~", // F#5 B5 F#5 B5
})).s("gm_piano").gain(0.47).pan(0.3)

// chords · rock organ
const rock_organ = note(`<
  A@4 B@4 C@2 D E F@4 G@4 ~@2 F@4 H@4 I J K L M N O P I J K P M N Q R@2 S@4 T@4 U@2 V W X@4 Y@4 ~@2 X@4 Z@4 AA AB AC AD
  AE M AF AG AA AB AC AG AE M AH AI@2 ~@2 AJ@8 T@12 AK@4
>`.pickRestart({
  A: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,a4,c#5]@4 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [e3,a3,b4,e5]@4 e3@2 [a3,b4,e5]@2 e3@2 [b3,a4,e5,a5] ~ [b3,a4,e5,a5]@3 ~@3]/4", // A B F#7 C#m B F#m A B …
  B: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,a4,c#5]@4 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,b4,e5]@4 ~@2 [f#4,b4,e5]@2 ~@2 [a4,e5,a5] ~ [a4,e5,a5]@3 ~@3]/4", // A B F#7 C#m B F#m A B …
  C: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@4 ~@2]/2", // A B F#7 C#m B
  D: "[f#4,a4,c#5]@3 ~@3 [f#4,a4,e5]@2 ~@8", E: "[f#4,c#5]@2 ~@4 [f#4,a4] ~@9, e5 ~@5 c#5@2 ~@8",
  F: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,a4,c#5]@4 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,b4,e5]@4 ~@2 [f#4,b4,e5]@2 ~@2 [a4,e5,a5] ~ [a4,e5,a5]@3 ~ [f#4,a4,c#5]@2]/4", // A B F#7 C#m B F#m A B …
  G: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@4 [f#4,a4,c#5]@4 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,b4,e5]@4 ~@2 [f#4,b4,e5]@2 ~@2 [a4,e5,a5] ~ [a4,e5,a5]@3 ~@3]/4", // A B F#7 C#m B F#m A B …
  H: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@4 [f#4,a4,c#5]@4 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,a4,d5]@4 ~@2 [f#4,a4,d5]@2 ~@2 [e4,b4,e5] ~ [e4,b4,e5]@3 ~@3]/4", // A B F#7 C#m B F#m A B …
  I: "[a4,c#5,e5]", J: "[g#4,b4,e5]", K: "[f#4,a4,c#5]", L: "a4@3 e5@5, [d4,f#4]", M: "[e4,a4,c#5]", N: "[d4,g4,b4]",
  O: "c#4", P: "[f#4,c#5,e5]", Q: "[c#4,f#4,a4]", R: "[f#4,a4,d#5]/2",
  S: "[~@2 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,c#5,e5]@4 f#4@2 [c#5,e5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [f#4,a4,c#5]@4 f#4@2 [a4,c#5]@2 f#4@2 [f#4,b4,d#5] ~ [f#4,b4,d#5]@3 ~ [g#4,c#5,f#5]@4 g#4 ~ [g#4,c#5,f#5]@2 g#4 ~ [g#4,c#5,d#5] ~ [g#4,c#5,d#5]@5 ~]/4", // A B F#7 C#m B F#m A B …
  T: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,b4,d#5]@4 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,c#5,f#5]@4 ~@2 [g#4,c#5,f#5]@2 ~@2 [b4,f#5,b5] ~ [b4,f#5,b5]@3 ~@3]/4", // B C# G#7 D#m C# G#m B C# …
  U: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@4 ~@2]/2", // B C# G#7 D#m C#
  V: "[g#4,b4,d#5]@3 ~@3 [g#4,b4,f#5]@2 ~@8", W: "[g#4,d#5]@2 ~@4 [g#4,b4] ~@9, f#5 ~@5 d#5@2 ~@8",
  X: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,b4,d#5]@4 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,c#5,f#5]@4 ~@2 [g#4,c#5,f#5]@2 ~@2 [b4,f#5,b5] ~ [b4,f#5,b5]@3 ~ [g#4,b4,d#5]@2]/4", // B C# G#7 D#m C# G#m B C# …
  Y: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@4 [g#4,b4,d#5]@4 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,c#5,f#5]@4 ~@2 [g#4,c#5,f#5]@2 ~@2 [b4,f#5,b5] ~ [b4,f#5,b5]@3 ~@3]/4", // B C# G#7 D#m C# G#m B C# …
  Z: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@4 [g#4,b4,d#5]@4 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,b4,e5]@4 ~@2 [g#4,b4,e5]@2 ~@2 [f#4,c#5,f#5] ~ [f#4,c#5,f#5]@3 ~@3]/4", // B C# G#7 D#m C# G#m B C# …
  AA: "[b4,d#5,f#5]", AB: "[a#4,c#5,f#5]", AC: "[g#4,b4,d#5]", AD: "b4@3 f#5@5, [e4,g#4]", AE: "[f#4,b4,d#5]",
  AF: "d#4", AG: "[g#4,d#5,f#5]", AH: "[d#4,g#4,b4]", AI: "f5/2",
  AJ: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,b4,d#5]@4 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,c#5,f#5]@4 ~@2 [g#4,c#5,f#5]@2 ~@2 [b4,f#5,b5] ~ [b4,f#5,b5]@6]/4", // B C# G#7 D#m C# G#m B C# …
  AK: "[~@2 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,d#5,f#5]@4 g#4@2 [d#5,f#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,b4,d#5]@4 g#4@2 [b4,d#5]@2 g#4@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@3 ~ [g#4,c#5,f#5]@4 ~@2 [g#4,c#5,f#5]@2 ~@2 [b4,f#5,b5] ~@7]/4", // B C# G#7 D#m C# G#m B C# …
})).s("gm_rock_organ").gain(0.39).pan(0.4)

// other · trumpet
const trumpet = note(`<
  ~@8 A@2 B C ~@10 D ~@4 A@2 E ~@4 F G F ~@6 H@2 I ~@9 J@2 K L ~@10 M ~@4 J@2 N ~@4 O P O ~@6 Q@2 R ~@27
>`.pickRestart({
  A: "[~@7 [f#4,f#5]@9]/2", B: "[f#4,f#5] ~@2 a4 ~@4, ~@6 a5 ~@9", C: "[f#4,f#5] ~@2 [c#5,c#6] ~@4", D: "[f#4,c#5] ~@3",
  E: "~@2 [b3,b4] ~ [c#4,c#5]@2 [e4,e5] ~ [e4,e5]@3 ~ [e4,e5]@3 ~", F: "[a4,a5]@3 [a4,a5]@2 ~@11",
  G: "~@2 [a4,a5] ~@7 [e4,e5]!3 [f#4,f#5] [a4,a5] ~", H: "[~@7 [a4,a5]@9]/2", I: "[f#4,f#5] ~@7",
  J: "[~@7 [g#4,g#5]@9]/2", K: "[g#4,g#5] ~@2 b4 ~@4, ~@6 b5 ~@9", L: "[g#4,g#5] ~@2 [d#5,d#6] ~@4", M: "[g#4,d#5] ~@3",
  N: "~@2 [c#4,c#5] ~ [d#4,d#5]@2 [f#4,f#5] ~ [f#4,f#5]@3 ~ [f#4,f#5]@3 ~", O: "[b4,b5]@3 [b4,b5]@2 ~@11",
  P: "~@2 [b4,b5] ~@7 [f#4,f#5]!3 [g#4,g#5] [b4,b5] ~", Q: "[~@7 [b4,b5]@9]/2", R: "[g#4,g#5] ~@7",
})).s("gm_trumpet").gain(0.49).pan(0.7)

// other · trombone
const trombone = note(`<
  ~@8 A@2 B C ~@10 D ~@4 A@2 E ~@4 F G F ~@6 H@2 I ~@9 J@2 K L ~@10 M ~@4 J@2 N ~@4 O P O ~@6 Q@2 R ~@27
>`.pickRestart({
  A: "[~@7 [f#2,f#3]@9]/2", B: "[f#2,f#3] ~@2 a2 ~@4, ~@6 a3 ~@9", C: "[f#2,f#3] ~@2 [c#3,c#4] ~@4", D: "[f#2,c#3] ~@3",
  E: "~@2 [b1,b2] ~ [c#2,c#3]@2 [e2,e3] ~ [e2,e3]@3 ~ [e2,e3]@3 ~", F: "[a2,a3]@3 [a2,a3]@2 ~@11",
  G: "~@2 [a2,a3] ~@7 [e2,e3]!3 [f#2,f#3] [a2,a3] ~", H: "[~@7 [a2,a3]@9]/2", I: "[f#2,f#3] ~@7",
  J: "[~@7 [g#2,g#3]@9]/2", K: "[g#2,g#3] ~@2 b2 ~@4, ~@6 b3 ~@9", L: "[g#2,g#3] ~@2 [d#3,d#4] ~@4", M: "[g#2,d#3] ~@3",
  N: "~@2 [c#2,c#3] ~ [d#2,d#3]@2 [f#2,f#3] ~ [f#2,f#3]@3 ~ [f#2,f#3]@3 ~", O: "[b2,b3]@3 [b2,b3]@2 ~@11",
  P: "~@2 [b2,b3] ~@7 [f#2,f#3]!2 ~ [g#2,g#3] [b2,b3] ~, ~@6 [f#2,f#3] ~", Q: "[~@7 [b2,b3]@9]/2", R: "[g#2,g#3] ~@7",
})).s("gm_trombone").gain(0.49).pan(0.7)

// other · flute
const flute = note("<~@50 A B C D E F G H I ~@36 J K L M@2 B C D E F G H I K L N O P Q R@2 S T U V>".pickRestart({
  A: "~@2 g#5 [b5,c#6] d6 [b5,c#6] g#5 [b5,c#6] d6 [b5,c#6] g#5 [b5,c#6] d6 [b5,c#6] c#6 [d6,e6]", // Bsus2 Dsus2
  B: "f#6@2 g#6@2 f#6@2 f6@2 d#6 ~ g#5 c#6@4 ~", C: "~@4 c#6!2 ~@2 c#6!2 b5 g#5 b5 g#5 b5 g#5",
  D: "b5!4 [g#5,b5] b5 g#5 ~@3 f#5 g#5 b5!2 ~ b5", E: "~ b5 ~ b5!2 ~ b5!2 ~ b5!4 ~ b5!2",
  F: "f#6 g#6 f#6 d#6 c#6 b5 g#5 b5 g#5 b5@4 g#5 ~@2", G: "f6 f#6 f6 d#6 c#6 ~ c#6@4 d#6 ~ g#5!4",
  H: "b5 g#5@2 ~@3 b5!2 g#5 b5 g#5@2 ~ [g5,g#5] [b5,c#6] ~", // G#maj7 Bsus2
  I: "[c#6,d#6] [f#5,g#5,b5] c#6 b5 g#5 ~@3 c#6@2 b5 g#5 f#5@2 g#5@2", J: "~@6 b5 g#5 b5 c#6 d#6 ~ f6 ~ f#6 ~",
  K: "f6@9 ~ d#6 c#6 b5@2 c#6 ~", L: "c#6@4 [g#5,b5] d#5 ~@4 c#6 b5 c#6@2 b5 ~",
  M: "[b5@2 b5@2 ~ b5@2 ~ b5@2 ~ b5@2 g#5 ~ g#5@5 ~@12]/2", N: "b5@2 b5@2 ~ b5@2 ~ b5@2 ~ b5@2 g#5 ~@2", O: "c#6!16",
  P: "c#6@3 ~ g#6 f#6 ~@2 d#6 ~ c#6 ~ b5@3 ~", Q: "g#6 f#6 ~ d#6 ~@2 c#6 ~@2 b5@5 g#5 f#5",
  R: "[g#5 ~ g#5 f#5 g#5 b5 c#6 ~ g#6 f#6 ~ d#6 ~ c#6 b5 c#6@2 ~ b5 g#5 f#5@2 g#5 ~ g#5@2 b5 ~ f6 f#6 f6 f#6]/2",
  S: "f6@2 d#6 ~ c#6 ~ b5 c#6!6 ~ c#6 b5", T: "c#6@2 b5 g#5 f#5@2 g#5 ~@9",
  U: "b4 c#5 ~@2 b4 c#5 ~@2 b4 c#5 ~@2 c#5 f5 ~@2", V: "g#5 ~ b5 ~ [a#5,b5] ~ [a#5,b5] ~ [a#5,b5] ~@7",
})).s("gm_flute").gain(0.5).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@4 [x ~@2 x ~ x ~ x]!64 [x ~@2 x ~@4] [x ~@2 x ~ x ~ x]!50 [x ~@2 x ~@4]>").gain(0.43)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!64 ~ [~ x ~ x]!50 [~ x ~@2]>").gain(0.38)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@4 [~@3 x ~@12]!64 ~ [~@3 x ~@12]!51>").gain(0.11)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A ~ B ~@3 A ~ A ~ B ~@3 A ~ A ~ A ~ B ~@5 A ~ B ~@3 A ~ A ~ B ~@3 A@2 ~ A ~ B ~ A ~ B ~@3 A ~ A ~ B ~@3 A@2 ~@2 A
  ~ B ~@5 A ~ B ~@3 A ~ A ~ B ~@3 A@4 ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ C
>`.pickRestart({
  A: "~@7 x", B: "~@9 x ~@4 x ~", C: "~@9 x ~@6",
})).gain(0.27)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@7 A ~@9 A ~@6 B A ~@7 A ~@8 A ~@3 A ~@7 A ~@9 A ~@6 B A ~@7 A ~@10 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.27)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [x!16]!64 ~ [x!16]!50 [x!10 ~@6]>").gain(0.16)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@7 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A@4 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B
>`.pickRestart({
  A: "~@8 x ~@4 x ~@2", B: "~ x",
})).gain(0.99)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@4 A B A@3 B A@3 B A@3 B A@3 C A B A@3 B A@3 B A@3 B A@3 B A@3 B A@4 B A@3 B A@3 B A@3 B A@3 B A@2 C ~ A B A@3 B A@3
  B A@3 B A@3 B A@3 B A@6 B A@3 B A@3 B A@3 B A@3 B A@3 B A@2
>`.pickRestart({
  A: "~ x ~@2", B: "~ x!2 ~", C: "~@4 x ~@3 x!5 ~ x!2",
})).gain(0.99)

// drums · congas
const congas = s("conga:33").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B@2 A B A B A B A B A B A B A B
  A B A B A B@2 ~ A B A B A B A B A B A B A B A B A B A B A B A B@4 A B A B A B A B A B A B A B A B A B A B A B A@2
>`.pickRestart({
  A: "~@3 x ~@12", B: "~@3 x ~@6 x ~@5",
})).gain(1.2)

stack(
  bass, piano, rock_organ, trumpet, trombone, flute, kick, snare, snare_soft, hihat, open_hat, crash, tambourine,
  bongos, bongos_2, congas
// … 1 more lines

More by Raf