Strudelify
Just Say Hello cover art

`K Heb Je Lief - 50 jaar de muziek, M`n fans, het leven

Just Say Hello

Rene Froger

KeyA♭ majorTempo98 bpm
0:00/0:00
// Just Say Hello — Rene Froger
// 98 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 95 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 10 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(98/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C D E F G H I F G J K L I M N O P Q R S T U R S T V W X Y Z F G H I F G J K L I M N O P Q R S T U R S T V W X
  Y AA G AB AC AD AE G AF AG AH AI AJ AK AH AL AJ AM AH AI AJ AK AH AN AJ AO AP AQ AR AQ AP AQ AR AS
>`.pickRestart({
  A: "ab1 ~@2 ab1 ~@2 ab1@3 ~@2 ab1 ~@2 ab1 ~@2 ab1 c2@6", B: "f1 ~@2 f1 ~@2 f1@4 ~ f1 ~@2 f1 ~@2 f1 f1@3 eb2@3",
  C: "db2 ~@2 db2 ~@2 db2@3 ~@2 db2 ~@2 db2 ~@2 db2 db2@3 c2@3", D: "bb1 ~@2 bb1 ~@2 bb1@5 eb2@6 ~ eb2@2 ~ g1@2 ~",
  E: "f1 ~@2 f1 ~@2 f1@3 ~@2 f1 ~@2 f1 ~@2 f1 f2@6", F: "eb2 ~@2 eb2 ~@2 eb2@4 ~ eb2 ~@2 eb2 ~@2 eb2 eb2@6",
  G: "db2 ~@2 db2 ~@2 db2@3 ~@2 db2 ~@2 db2 ~@2 db2 db2@6", H: "eb2 ~@2 eb2 ~@2 eb2@3 ~@2 c2 ~@2 c2 ~@2 c2 c2@6",
  I: "f2 ~@2 f2 ~@2 f2@3 ~@2 f2 ~@2 f2 ~@2 f2 f2@6", J: "eb2 ~@2 eb2 ~@2 eb2@3 ~@2 eb2 ~@2 eb2 eb2@2 ~ f2@2 ~ g2@3",
  K: "ab2 ~@2 ab2 ~@2 ab2@3 ~@2 ab2 ~@2 ab2 ~@2 ab2!2 ~@5", L: "g2 ~@2 g2 ~@2 g2@4 ~ g2 ~@2 g2 ~@2 g2 g2@3 eb2@3",
  M: "c2 ~@2 c2 ~@2 c2@3 c2 ~ c2 ~@2 c2 ~@2 c2 c2@3 ~@3", N: "db2 ~@2 db2 ~@2 db2@3 ~@2 db2 ~@2 db2 ~@2 db2!2 ~@4 eb2",
  O: "ab2 ~@2 ab2 ~@2 ab2@4 ~ ab2 ~@2 ab2 ~@2 ab2 ab2@6", P: "gb2 ~@2 gb2 ~@2 gb2@3 ~@2 gb2 ~@2 gb2 ~@2 gb2 gb2@3 b1@3",
  Q: "c2 ~@2 c2 ~@2 c2@3 ~@2 eb2 ~@2 eb2 eb2@2 ~ eb2@2 ~ g2@3", R: "ab2 ~@2 ab2 ~@2 ab2@3 ~@2 ab2 ~@2 ab2 ab2@2 ~ c2@6",
  S: "f2 ~@2 f2 ~@2 f2@4 ~ f2 ~@2 f2 ~@2 f2 f2@3 eb2@3",
  T: "db2 ~@2 db2 ~@2 db2@3 ~@2 db2 ~@2 db2 db2@2 ~ db2@2 ~ c2@3",
  U: "bb1 ~@2 bb1 ~@2 bb1@4 ~ eb2 ~@2 eb2 eb2@2 ~ eb2@2 ~ g2@2 ~",
  V: "bb1 ~@2 bb1 ~@2 bb1@4 ~ eb2 ~@2 eb2 eb2@2 ~ eb2@3 d2@3",
  W: "gb1 ~@2 gb1 ~@2 gb1@3 ~@2 db2 ~@2 db2 ~@2 db2 db2@3 ab1@3",
  X: "ab2 ~@2 ab2 ~@2 ab2@4 ~ ab2@2 ~ ab2@2 ~ ab2 ab2@3 c2@3", Y: "gb1 ~@2 gb1 ~@2 gb1@3 ~@2 db2 ~@2 db2!2 ~@2 db2@6",
  Z: "f2 ~@2 f2 ~@2 f2@3 ~@2 f2 ~@2 f2 ~@2 f2!2 ~@5", AA: "ab2 ~@2 ab2 ~@2 ab2@3 ~@2 eb2 ~@2 eb2 eb2@3 ab2@3 eb2@3",
  AB: "gb2 ~@2 gb2 ~@2 gb2@3 ~@2 gb2 ~@2 gb2 ~@2 gb2 gb2@6", AC: "c2 ~@2 c2 ~@2 c2@3 ~@2 c2 ~@2 c2 ~@2 c2 c2@6",
  AD: "f2 ~@2 f2 ~@2 f2@3 ~@2 f2 ~@2 f2 ~@2 f2 f2@3 c2@2 ~", AE: "db2@2 ~ db2@2 ~ db2@3 ~@2 db2 ~@2 db2 ~@2 db2 db2@6",
  AF: "bb1@2 ~ bb1@2 ~ bb1@3 ~@2 bb1 ~@2 bb1 ~@2 bb1 bb1@6",
  AG: "eb2 ~@2 eb2 ~@2 eb2@3 ~@2 e2 ~@2 e2 ~@2 e2 e2@2 ~ ab2@2 ~", AH: "a2 ~@2 a2 ~@2 a2@3 ~@2 a2 ~@2 a2 a2@2 ~ db2@6",
  AI: "gb2 ~@2 gb2 ~@2 gb2@4 ~ gb2 ~@2 gb2!2 ~ gb2 gb2@3 e2@3",
  AJ: "d2 ~@2 d2 ~@2 d2@3 ~@2 d2 ~@2 d2 d2@2 ~ d2@2 ~ db2@3", AK: "b1 ~@2 b1 ~@2 b1@4 ~ e2 ~@2 e2!2 ~ e2 e2@2 ~ ab2@3",
  AL: "gb2 ~@2 gb2 ~@2 gb2@4 ~ gb2 ~@2 gb2 ~@2 gb2 gb2@3 e2@3", AM: "b1 ~@2 b1 ~@2 b1@4 ~ e2 ~@2 e2 e2@2 ~ e2@3 ab2@3",
  AN: "gb2 ~@2 gb2 ~@2 gb2@4 ~ gb2 ~@2 gb2 ~@2 gb2 gb2@3 db2@3", AO: "b1 ~@2 b1 ~@2 b1@4 ~ e2 ~@2 e2 e2@2 ~ e2@3 gb1@3",
  AP: "g1 ~@2 g1 ~@2 g1@3 ~@2 d2 ~@2 d2 ~@2 d2 d2@3 a1@3", AQ: "a2 ~@2 a2 ~@2 a2@4 ~ a2@2 ~ a2@2 ~ a2 a2@3 db2@3",
  AR: "g1 ~@2 g1 ~@2 g1@3 ~@2 d2 ~@2 d2 d2@2 ~ d2@3 a1@3", AS: "a2 ~@2 a2 ~@2 a2@4 ~ a2@2 ~ a2@2 ~ a2 a2@3 ~@3",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B A B A B A C D@2 E F D@2 E G H I D J K L M N O D E P O D E P Q R Q D@2 E F D@2 E G H I D J K L M N O D E P O D E P
  Q R Q ~@9 S T U V S T U V S T U V S T U V W X W X W X W X
>`.pickRestart({
  A: "[ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4]@2 ab3 [ab3,ab4] ~ [ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4] [ab3,ab4]@2 [ab3,ab4]@2 ~ [ab3,ab4]", // Ab
  B: "[ab3,ab4]@2 ~ [ab3,ab4]@2 ~ [ab3,ab4]@2 ab3 [ab3,ab4]@2 [ab3,ab4] ab3 ~ [ab3,ab4] ~@2 [ab3,ab4] [ab3,ab4]@2 [ab3,ab4]!2 ~ [ab3,ab4]", // Ab
  C: "[ab3,ab4]@2 ~ [ab3,ab4]@2 ~ [ab3,ab4]@2 ab3 [ab3,ab4]@2 [ab3,ab4] ab3 ~ [ab3,ab4] ~@2 [ab3,ab4] [ab3,ab4]@2 [ab3,ab4]!2 ~@2", // Ab
  D: "~@3 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~@2", // Fm
  E: "~@3 [db4,f4,ab4] ~@5 [db4,f4,ab4] ~@5 [db4,f4,ab4] ~@5 [db4,f4,ab4] ~@2", // Db
  F: "~@3 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~@2", // Eb C
  G: "~@3 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@2", // Eb
  H: "~@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@2", // Ab
  I: "~@3 [f4,g4,bb4] ~@5 [f4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@2", // Gm7 Eb
  J: "~@3 [f4,g4,c5] ~@5 [f4,g4,c5] ~@5 [e4,g4,c5] ~@5 [e4,g4,c5] ~@2", // Fsus2 C
  K: "~@3 [ab3,db4,f4] ~@5 [ab3,db4,f4] ~@5 [ab3,db4,f4] ~@5 [ab3,db4,f4] ~@2", // Db
  L: "~@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [db4,f4,ab4] ~@5 [c4,eb4,ab4] ~@2", // Ab Db Ab
  M: "~@3 [db4,gb4,ab4] ~@5 [db4,gb4,ab4] ~@5 [db4,gb4,ab4] ~@5 [db4,gb4,ab4] ~@2", // Dbsus4
  N: "~@3 [e4,g4,c5] ~@5 [e4,g4,c5] ~@5 [eb4,bb4,eb5] ~@5 [eb4,bb4,eb5] ~@2", // C Eb5
  O: "~@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [bb3,eb4,ab4] ~@2", // Ab Ebsus4
  P: "~@3 [db4,f4,ab4] ~@5 [db4,f4,ab4] ~@5 [bb3,eb4,g4] ~@5 [bb3,eb4,g4] ~@2", // Db Eb
  Q: "~@3 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@5 [ab3,db4,f4] ~@5 [ab3,db4,f4] ~@2", // Gb Db
  R: "[ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4]@2 ab3 [ab3,ab4] ~ [ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4] [ab3,ab4]@2 [ab3,ab4]@2 ~@2", // Ab
  S: "~@3 [db4,e4,a4] ~@5 [db4,e4,a4] ~@5 [db4,e4,a4] ~@5 [b3,e4,a4] ~@2", // A Esus4
  T: "~@3 [db4,gb4,a4] ~@5 [db4,gb4,a4] ~@5 [db4,gb4,a4] ~@5 [db4,gb4,a4] ~@2", // Gbm
  U: "~@3 [d4,gb4,a4] ~@5 [d4,gb4,a4] ~@5 [d4,gb4,a4] ~@5 [d4,gb4,a4] ~@2", // D
  V: "~@3 [d4,gb4,a4] ~@5 [d4,gb4,a4] ~@5 [b3,e4,ab4] ~@5 [b3,e4,ab4] ~@2", // D E
  W: "~@3 [b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [a3,d4,gb4] ~@5 [a3,d4,gb4] ~@2", // G D
  X: "[a3,a4] ~@2 [a3,a4] ~@2 [a3,a4]@2 a3 [a3,a4] ~ [a3,a4] ~@2 [a3,a4] ~@2 [a3,a4] [a3,a4]@2 [a3,a4]@2 ~@2", // A
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.3)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D A B C E F G H I F G H J K L M N O P Q R A B S E A T U V W X W F G H Y Z G H J K L M N O P Q R A B S E A T U V
  W X W AA AB AC AD AE AF AG AH AI AJ AK AL AM AJ AK AL AM AJ AK AL AN AJ AO AP AQ AR AS AR AS AR AS AR AT
>`.pickRestart({
  A: "[ab2,eb3,ab3,c4]@17 ~ [c2,eb3,ab3,bb3,eb4]@6", B: "f2@6 f3 eb2, [eb3,ab3,c4]@23 ~",
  C: "ab3@6 ab3 f2, [db2,f3,db4]@11 ~", // Db
  D: "[bb2,f3]@13 ~ [eb3,ab3,bb3]@4 [eb3,g3,bb3]@2 ~ [eb3,g3,bb3,eb4]@3, [ab3,db4]@11 ~@3 eb2@10, ~@14 eb4@7 ~@3", // Bb5 Ebsus4 Eb Db5
  E: "[bb2,f3,ab3,db4]@10 [eb3,ab3,bb3,eb4]@7 ~ [eb3,g3,bb3,eb4]@6, ~@5 eb2@7", // Bbm7 Ebsus4 Eb
  F: "f3@16 ~@5 f2@3, [ab3,c4]@23 ~, f2@5 ~, ~@18 f3@5 ~", G: "f3@17 ~@4 eb2@3, [ab3,c4]@23 ~, eb2@5 ~, ~@18 eb3@5 ~",
  H: "f3@17 ~@4 db2@3, [ab3,db4]@23 ~, db2@5 ~, ~@18 f3@5 ~", // Db5
  I: "[eb2,g3,bb3,eb4]@5 ~@4 [g3,c4,g4]@3, ~@10 [g3,c4,e4]@7 ~@7, ~@11 c2@13", // Eb C5 C
  J: "[g3,bb3,eb4]@2 [g3,bb3,eb4]@3 [eb2,eb3,eb4] [f2,f3,f4] [g2,g3,g4], eb2@7 ~@5", K: "[c4,eb4,ab4]@7 ~, ab2@23 ~",
  L: "[f3,bb3,f4,g4]@10 ~ [bb3,eb4,g4]@11 ~@2, g2@23 ~, ~@11 eb3@13", M: "[ab3,c4,f4]@7 ~, f2@23 ~",
  N: "[g3,c4,f4]@5 ~@4 e3@3, c3@17 ~@7, ~@11 [g3,c4,e4]@11 ~@2", O: "[db3,ab3,db4,f4]@11 ~",
  P: "[ab3,c4,eb4]@10 ~ [ab3,db4,f4]@7 [ab3,c4,eb4]@6, ab2", Q: "[gb3,bb3,db4]@7 ~, gb2",
  R: "c2@5 ~ c2@4 ~ [eb2,g3,bb3,eb4]@4 [eb2,eb3]@3 [f2,f3,bb3,eb4]@3 [g2,g3,bb3,db4,eb4]@3, [g3,c4,e4]@10 ~@5 [bb3,eb4]@2 ~@7", // Eb Ebsus2 Eb7 C Eb5
  S: "[f3,ab3,db4]@6 ~ f2, db2@11 ~, ~@18 [f3,ab3,db4]@5 ~", T: "f2@6 f3 [eb2,eb3,ab3,c4], [eb3,ab3,c4]@5 ~",
  U: "[f3,ab3,db4]@20 ~ [f2,f3,ab3,db4]@3, db2@7 ~", // Db
  V: "[bb2,f3,ab3,db4]@10 [eb3,ab3,bb3,eb4]@7 ~ [eb3,g3,bb3,eb4]@3 [eb3,g3,bb3]@3, ~@10 eb2@13 ~", // Bbm7 Ebsus4 Eb
  W: "[gb2,db3,gb3,bb3]@10 ~ [db2,db3,f3,ab3]@12 ~", // Gb Db
  X: "[ab2,eb3,ab3] ~@2 [ab2,eb3,ab3] ~@2 [ab2,eb3,ab3]@3 ~@2 [ab2,eb3,ab3] ~@2 [ab2,eb3,ab3] ~@2 eb3 [eb3,ab3]@3 c3@3, ~@17 ab2@4 ~@3", // Ab5
  Y: "[eb2,g3,bb3,eb4]@10 ~@8 g4@3 g4@3, ~@10 [g3,c4,e4]@7 ~ [g3,c4]@6, ~@11 c2@13", // Eb C C5
  Z: "f4@16 ~@5 f2@3, [ab4,c5]@23 ~, f2@5 ~, ~@18 f3@5 ~", AA: "[ab2,ab3,c4,eb4]@2 [eb2,gb3,bb3,db4] [ab2,ab3,c4,eb4]",
  AB: "[db3,f3,ab3,c4]@7 ~, db2@23 ~", AC: "[gb2,gb3,bb3,db4,e4]@23 ~", AD: "[c3,g3,bb3,c4,eb4]@23 ~",
  AE: "[f2,g3,bb3,c4,eb4]@19 ~@2 [eb2,eb3,ab3,c4]@3", AF: "[db2,db3,f3,ab3,c4]", AG: "[db2,db3,e3,ab3,bb3]@23 ~",
  AH: "[f3,ab3,bb3,eb4]@9 ~@2 [ab3,bb3]@13, bb2, ~@10 [f3,d4]@13 ~", // Fm7 Absus2 Dm
  AI: "[eb2,eb3,ab3,bb3,eb4]@10 ~ [e2,e3,a3,b3,e4]@13", AJ: "[a2,e3,a3,db4]@17 ~ [db2,e3,a3,b3,e4]@6",
  AK: "gb2@6 gb3 e2, [e3,a3,db4]@23 ~", AL: "[gb3,a3,d4]@6 ~ gb2, d2@11 ~, ~@18 [gb3,a3,d4]@5 ~",
  AM: "[b2,gb3,a3,d4]@10 [e3,a3,b3,e4]@7 ~ [e3,a3,db4] ~@2 [e3,b3] ~@2, ~@5 e2@7, ~@21 ab3@2 ~", // Bm7 Esus4 A E5
  AN: "[b2,gb3,a3,d4]@10 [e3,a3,b3,e4]@7 ~ [e3,ab3,b3,e4]@6, ~@5 e2@7", AO: "gb2@6 gb3 [e2,e3,a3,db4], [e3,a3,db4]@5 ~",
  AP: "[gb3,a3,d4]@20 ~ [gb2,gb3,a3,d4]@3, d2@7 ~", // D
  AQ: "[b2,gb3,a3,d4]@10 [e3,a3,b3,e4]@7 ~ [e3,ab3,b3,e4]@3 [e3,ab3,b3]@3, ~@5 e2@7", // Bm7 Esus4 E
  AR: "[g2,d3,g3,b3]@10 ~ [d2,d3,gb3,a3]@12 ~", // G D
  AS: "[a2,e3,a3] ~@2 [a2,e3,a3] ~@2 [a2,e3,a3]@3 ~@2 [a2,e3,a3] ~@2 [a2,e3,a3] ~@2 e3 [e3,a3]@3 db3@3, ~@17 a2@4 ~@3", // A5
  AT: "[a2,e3,a3] ~@2 [a2,e3,a3] ~@2 [a2,e3,a3]@3 ~@2 [a2,e3,a3] ~@2 [a2,e3,a3] ~@2 e3 [e3,a3]@3 ~@3, ~@17 a2@4 ~@3", // A5
})).s("gm_piano").gain(0.42)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@5 A ~@16 B C ~ A ~ D ~ A ~ D ~@2 E ~@14 B C ~ A ~ D ~ A ~ D ~@2 E F ~@3 G H I ~@2 J K L M N K L M J K L M N K L O P
  Q P Q P Q R S
>`.pickRestart({
  A: "~@18 [bb3,bb4]@2 [ab3,ab4] [f3,f4]@2 [ab3,ab4]", B: "~@3 ab4 ~ [db4,gb4]@3, gb3@23 ~, gb4@7 ~@5, ~ bb4",
  C: "[g3,c4,g4,bb4,e5]@11 ~@4 [eb3,eb4]@3 [f3,f4]@3 g4@2 ~, ~@21 g3 ~@2", // C7 Eb F
  D: "~@14 [eb3,eb4]!2 ~ [eb3,eb4] [f3,f4] ~ [ab3,ab4] [bb3,bb4]@2 [ab3,ab4]", // Eb F Ab Bb Ab
  E: "[gb3,db4,gb4]!2 [f3,db4,f4,ab4]@2, bb4 ~", F: "[eb3,c4,eb4,ab4]@2 [gb3,db4,gb4] [ab3,eb4,ab4]",
  G: "~@18 f4@2 g4 ab4@3", H: "~@11 ab4@13, [ab3,c4,db4,f4]",
  I: "[db4,e4]@3 [e3,bb3]@3 [bb3,db4]@3 [db4,e4] ~@14, [ab4,bb4]@5 ~@7", // Dbm Edim Bbm Dbm Absus2
  J: "~@3 [e4,a4,db5] ~@2 [e4,a4,db5] ~@2 [e4,a4,db5] ~@2 db5@6 [e4,ab4,b4] ~@5, ~@5 [e4,a4]@4 ~@3", // A E A5
  K: "~@3 [db4,gb4,a4] ~@2 [db4,gb4,a4] ~@2 [db4,gb4,a4] ~@2 db5@4 [db4,gb4,a4,db5] ~@7, ~@5 [db4,gb4,a4]@3 ~@4", // Gbm
  L: "[d4,gb4,a4,d5] ~@2 [gb4,a4,d5] ~@2 [gb4,a4,d5] ~@2 [d4,gb4,a4,d5] ~@2 d5@6 [d4,e4,a4,db5]@6, ~@5 [gb4,a4]@4 ~@3, ~@11 d4@7 ~@6", // D A Gbm
  M: "[d4,e4,a4,b4]@11 [e4,ab4]@3 [b3,e4,ab4]!2 ~@2 [db4,gb4,a4] ~@2 [e4,ab4,b4] ~@2, ~@11 b4@6 ~@7", // Dsus2 E Gbm E
  N: "[e4,a4,db5] ~@2 [e4,a4,db5] ~@2 [e4,a4,db5] ~@2 [e4,a4,db5] ~@2 db5@6 [e4,ab4,b4] ~@5, ~@5 [e4,a4]@4 ~@3", // A E A5
  O: "[d4,e4,a4,b4]@11 [e4,ab4,b4]@13", P: "[b3,d4,g4] [g3,d4,g4,b4,d5] [gb3,d4,gb4,a4,d5]@2",
  Q: "~@14 [e3,e4]!2 ~ [e3,e4] [gb3,gb4] ~ [a3,a4] [b3,b4]@2 [a3,a4]", // E Gb A B A
  R: "[b3,d4,g4] [g3,d4,g4,b4,d5] d5!2, ~ [gb3,d4,gb4,a4]", // G D
  S: "[e3,a3,e4,a4,db5,a5] ~@2 [e3,a3,e4,a4,db5,a5] ~@2 [e3,a3,e4,a4,db5,a5]@3 ~@2 [e3,a3,e4,a4,db5,a5] ~@2 [e3,a3,e4,a4,db5,a5] ~@2 [e3,a3,e4,a4,db5,a5]!2 ~@5", // A
})).s("gm_brass_section").gain(0.42).pan(0.6)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  ~@4 A B C D ~@8 E F G@2 H I J K L B C M L B C M N O N P@4 Q@4 E F R@2 S I T K L B C M L B C M N O N U V W X Y Z AA AB
  AC AD AE AF AG AH AE AF AG AH AE AF AG AH AE AF AG AI AJ AK AJ AK AJ AK AJ
>`.pickRestart({
  A: "[c4,eb4]@3 [eb4,ab4]", B: "[ab3,c4]@6 [bb3,db4] [c4,eb4]", C: "[db4,f4]@3 [c4,eb4]", D: "[ab3,db4]@11 ~@13",
  E: "[c4,eb4]", F: "f4@5 eb4@7, bb3", G: "[[ab3,c4]@23 ~ [bb3,d4]@11 [c4,e4]@13, ~@23 c5@24 ~]/2",
  H: "[f3,db4,f4]@17 ~ f3@3 [g3,db4]@3, db5@12 ~@5 eb4@3 ~@4", I: "[c4,eb4]@10 ~ [db4,f4]@7 [c4,eb4]@6, ab3",
  J: "ab3@10 ~@5 db4@3 c4@3 bb3@3, bb3@7 ~, db4@5 ~@3, ~@10 gb3@13 ~", K: "[g3,c4]@10 [ab3,eb4]@11 [g3,db4]@3",
  L: "[c4,eb4]@3 [eb4,g4]", M: "[ab3,db4]@5 [bb3,eb4]@7", N: "[bb3,db4]@10 ~ ab3@13, ~@10 db4@13 ~",
  O: "ab3@3 ab3@3 ab3@5 ab3@2 ~ [ab3,eb4] ~@2 [ab3,eb4] [ab3,eb4]@3 ~@3, eb4 ~@2 eb4 ~@2 eb4@3 ~@2 eb4 ~@12", // Ab5
  P: "[ab3@24 g3@10 f3@14 ab3@23 [g3,bb3]@11 ~ e3@6 c4@7, c4@72 ~@11 g3@13]/4", // Gm
  Q: "[ab3@24 g3@10 f3@14 ab3@18 [ab3,bb3]@3 [ab3,c4]@2 [g3,bb3]@15 ~ [bb3,eb4]@3 [g3,db4]@6, c4@11 ~@5]/4", // Absus2 Ab Gm Eb5 Gdim
  R: "[~@12 ab4@11 ~ [bb3,d4]@11 [c4,e4]@13, [ab3,c4]@23 c5@24 ~]/2", // Bb C Ab
  S: "[f3,db4,f4]@17 ~ f3@3 [g3,db4]@3, db5@6 ~@11 eb4@3 ~@4", // Db Gdim
  T: "ab3@11 ~@4 db4@3 c4@3 bb3@3, bb3@7 ~, db4@5 ~@3, ~@11 gb3@12 ~",
  U: "[ab3,eb4]@11 ~ [gb3,bb3,db4]@6 [ab3,c4,eb4]@6", V: "[ab3,c4,db4,f4]@12 ~@5 [ab4,ab5]@7",
  W: "[bb4,bb5]@5 [c5,c6] [bb4,bb5] [ab4,ab5]", X: "[eb5,eb6]", Y: "[g4,bb4] [ab4,c5] [g4,bb4] [f4,ab4]", Z: "[c4,f4]",
  AA: "[db4,e4]", AB: "[bb3,eb4]@5 [bb3,d4]@7", AC: "[bb3,eb4]@5 [b3,e4]@7", AD: "db4@17 ~ [e4,ab4]@6, e4@7 ~@5",
  AE: "[a3,db4]@6 [b3,d4] [db4,e4]", AF: "[d4,gb4]@3 [db4,e4]", AG: "[a3,d4]@5 [b3,e4]@7", AH: "[db4,e4]@3 [e4,ab4]",
  AI: "g4@10 ~ gb4@13, b3@7 ~@5, ~@10 a3@13 ~",
  AJ: "[a3,e4] ~@2 [a3,e4] ~@2 [a3,e4]@3 ~@2 [a3,e4] ~@2 [a3,e4] ~@2 [a3,e4] [a3,e4]@3 ~@3", // A5
  AK: "[b3,g4]@10 ~ gb4@13, ~@10 a3@13 ~", // Em
})).s("gm_synth_strings_2").gain(0.22)

// other · music box
const music_box = note(`<
  ~@39 A@3 B C D C E F G H ~@13 I J K L I ~ M N O P ~@2 Q R ~@2 Q P ~@2 Q P ~@2 S ~ S ~ T ~ S ~
>`.pickRestart({
  A: "~@12 f6@4 ~ ab6@4 c7@3", B: "bb6@9 ~@6 g6@3 ab6@2 ~ bb6@2 ~", C: "c7@7 ~@17", D: "~@11 eb7@8 ~@5", E: "f7@7 ~@17",
  F: "db7@3 ~@5", G: "eb7@7 ~@17", H: "bb6@7 ~@17", I: "f6@11 ~@13", J: "e6@13 ~@11", K: "eb6@7 ~@17",
  L: "bb6@6 c7@5 ~ bb6@6 ab6@5 ~", M: "c7@5 ~@6 bb6@9 ~@4", N: "eb7@7 ~@4 e7@5 ~@8", O: "db7@12 ~@6 e7@5 ~",
  P: "a6@5 ~@3", Q: "db7@15 ~@3 e7@5 ~", R: "a6 ~", S: "b6@3 ~@3 a6@5 ~@13", T: "b6@3 ~@3 a6@4 ~@14",
})).s("gm_music_box").gain(0.2).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@4 A@29 B A@16 C A@9 B A@9 C A@17 B A B A B D B>".pickRestart({
  A: "x ~@5 x ~@4 x ~@2 x ~@2 x!2 ~@5", B: "x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x!2 ~@5", C: "x ~@5 x ~@4 x ~@3 x ~@8",
  D: "x ~@5 x ~@4 x ~@12",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@3 C B@7 C B@7 C B@7 C B D B@8 C B@7 E B@3 C B@5 F B C B@7 E B@7 C B@3 C B@3 C B D B D B D G H
>`.pickRestart({
  A: "~@17 x!7", B: "~ x ~ x ~ x ~ x", C: "~@3 x ~@5 x ~@5 x ~@5 x ~ x",
  D: "x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x!2 ~@2 x ~ x", E: "~@3 x ~@5 x ~@4 x ~@2 x!7",
  F: "x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x!2 ~@2 x!3", G: "~@3 x ~@5 x ~@4 x!2 ~ x!7",
  H: "x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x!2 ~@5",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x ~ x ~ x]!94 [~ x ~ x ~ x ~@2]>").gain(0.32)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 A@19 ~ A@9 ~ A@16 B A@9 ~ A@9 B A@17 ~ A ~ A ~@3>".pickRestart({
  A: "~@11 x ~@2 x ~@9", B: "~@11 x ~@12",
})).gain(0.24)
// … 28 more lines

More by Rene Froger