Strudelify

Storie

Anna Oxa

KeyB♭ majorTempo108 bpm
0:00/0:00
// Storie — Anna Oxa
// 108 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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(`<
  A B C D E F G H I J K@2 L@2 M N O P K Q R S T U V W X Y Z AA AB J@2 AC AD AE@2 AF M AG AH AI AJ AK AL AM AN AF AO AP
  AQ AR AS AT AU AV AW AX AY AZ AC@2 BA BB BC@2 BD@2 AC L BA BE BF BC BG J AE BH BI BJ AE BK BL BM BN AC BA BB BC@2 BO
  BP AC L BA BE BF BC BO BQ BR BS BC BT BU BV BW BX BR BS BY BZ BU BV BC CA CB ~@2
>`.pickRestart({
  A: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 f2 ~", B: "f2 ~ f2 ~ f2 ~ f2@2 e2 ~ e2@2 e2@2 e2@2",
  C: "d2@2 d2 ~ d2 ~ d2 ~ d2@2 d2@2 d2@2 d2@2", D: "d2 ~ d2@2 d2@2 d2@2 d2 ~ d2 ~ d2@4",
  E: "f2@2 f2 ~ f2@2 f2 ~ f2@2 f2 ~ f2 ~ f2 ~", F: "f2@2 f2 ~ f2 ~ f2@2 e2@2 e2 ~ e2@2 e2 ~",
  G: "d2@2 d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", H: "d2 ~ d2 ~ d2 ~ d2 ~ d2@8",
  I: "f1 ~ f1 ~ f1 ~ f1@2 f1 ~ f1 ~ f1 ~ f1 ~", J: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  K: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", L: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  M: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", N: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ bb1@3 ~",
  O: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2", P: "f1@2 f1@2 f1@2 f1@2 f1 ~ f1@2 f1@2 f1@2",
  Q: "e1 ~ e1@2 e1@2 e1 ~ e1 ~ e1@2 e1 ~ e1@2", R: "d2 ~ d2@2 d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2@2",
  S: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2", T: "c2 ~ c2 ~ c2@2 c2@2 c2@2 c2 ~ c2 ~ c2@2",
  U: "c2@2 c2@2 c2@2 c2@2 c2 ~ c2@2 a1@4", V: "bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2",
  W: "d2@2 d2 ~ d2@2 c2@2 c2@2 c2@2 c2 ~ c2@2", X: "f1 ~ f1 ~ f1 ~ f1 ~ f1@2 a1@6",
  Y: "bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2 a1@2 a1 ~", Z: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
  AA: "c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AB: "c2 ~ c2 ~ c2 ~ c2@2 g2@2 c3@4 c2 ~",
  AC: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", AD: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  AE: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~", AF: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  AG: "f1 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2", AH: "f1@2 f1@2 f1 ~ f1@2 e1@2 e1@2 e2@2 e2 ~", AI: "d2!8",
  AJ: "d2@2 d2@2 d2@2 d2@2 d2@2 d2 ~ d2@4", AK: "f1!8", AL: "f1 ~ f1 ~ f1@2 c2@2 f2@2 f2 ~ f2@3 ~, ~@4 bb1 ~@11",
  AM: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2", AN: "bb1@2 bb1@2 bb1@2 bb1@2 bb1 ~ bb1@2 bb1@2 bb1@2",
  AO: "a1 ~ a1@2 a1@2 a1 ~ a1 ~ a1@2 a1 ~ a1@2", AP: "g2 ~ g2@2 g2@2 g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  AQ: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2", AR: "f2 ~ f2 ~ f2@2 f2@2 f2@2 f2 ~ f2 ~ f2@2",
  AS: "f2@2 f2@2 f2@2 f2@2 f2 ~ f2@2 d2@4", AT: "eb2@2 eb2 ~ eb2@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2",
  AU: "g2@2 g2 ~ g2@2 f2@2 f2@2 f2@2 f2 ~ f2@2", AV: "bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ d2@6",
  AW: "eb2@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2 d2@2 d2 ~", AX: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  AY: "f2 ~ f2 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", AZ: "f2@2 c3@2 f3@2 c3@2 f3@2 c3@2 f3@2 c3 ~",
  BA: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", BB: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ f2 ~ f2 ~ f2 ~ f2 ~",
  BC: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  BD: "[d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ eb3 ~ e3@2 f3@4 f3@2 f3@2 f3 ~ f3 ~ f3 ~ f3 ~ f3 ~]/2",
  BE: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ f2 ~ f2 ~ f2@4", BF: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f1@2",
  BG: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ eb2 ~ e2 ~ f2 ~", BH: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~",
  BI: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g2@4", BJ: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 f2@3 ~",
  BK: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ bb2@2 eb3@2 eb2@2", BL: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ bb2@2",
  BM: "eb3!3 bb2 eb3!4", BN: "~@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  BO: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ eb2 ~ e2 ~ f2@2", BP: "~@2 f2@2 f2@2 f2@2 f2!3 ~ f2 ~ f2 ~",
  BQ: "~@2 f2@2 f2 ~ c3@2 f3@2 f3 ~ f3 c3 f2 ~", BR: "bb1 ~ bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2",
  BS: "bb1@2 bb1@2 bb1 ~ bb1@2 a1@2 a1@2 a1 ~ a1 ~", BT: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g2@3 ~", BU: "bb1!8",
  BV: "bb1@2 bb1 ~ bb1 ~ bb1@2 a1@2 a1@2 a1 ~ a1 ~", BW: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1 ~",
  BX: "g1@2 g1@2 g1@2 g1 ~ g1 ~ g1@2 g1 ~ g1 ~", BY: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1 ~",
  BZ: "g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2", CA: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1@2", CB: "~ bb0!2 ~@13",
})).s("gm_fretless_bass").gain(0.54)

// chords · pad warm
const pad_warm = note(`<
  ~@8 A@4 B@2 C@2 D@4 E@4 F@3 G H@3 I@4 J@4 ~@4 K@2 ~@15 L@4 M@2 N@2 L@4 M@2 O P@4 Q@5 L@4 M@2 R@2 L@4 M@2 O S@2 ~@18
>`.pickRestart({
  A: "[[f3,a3] [g3,e4], c4]/4", B: "[bb3@7 a3@9, [f3,d4]]/2", C: "[g3,c4,e4]/2",
  D: "[[f3,a3] g3, c4@63 ~, ~@16 e3@15 ~]/4", // F
  E: "[[f3,bb3]@15 ~ f3@15 ~ [e3,g3,c4]@31 ~, d4@33 ~@31, ~@15 a3@16 ~@33]/4", // Bb5 C
  F: "[bb3@8 a3@3 [g3,e4]@5 f4@5 e4@3, [d4,f4]@11 c4@13, ~@2 a3]/3", G: "[bb3,d4,f4]@3 [a3,c4,e4]",
  H: "[[bb3,d4] e4 f4, g3, ~ c4@2]/3", I: "[[a3,c4]@16 d4@3 ~@9 [g3,e4]@4, f4@7 ~, ~@4 bb3@3 ~, ~@38 c4@25 ~]/4",
  J: "[[d4,f4]@16 e4@7 [bb3,f4]@9, a3@45 ~@19, ~ c4]/4", K: "[~@14 [f4,ab4,bb4,eb5]@17 ~]/2",
  L: "[[f3,d4]@32 [g3,eb4]@24 [f3,a3,c4]@7 ~, bb3@55 ~@9]/4", M: "[[g3,bb3,d4]@31 ~]/2",
  N: "[[f3,d4]@15 [bb3,c4,f4]@16 ~, a3@7 ~@9]/2", O: "[f3,d4], a3@7 ~",
  P: "[c4@15 d4@16 ~ [a3,f4] ~@13 d4@15 ~@3, [a3,f4]@31 [g3,bb3]@30 ~@3, ~@16 eb4@7 ~@9]/4", // Dm Gm
  Q: "[c4@15 d4@16 g3@15 gb4@16 ab4@17 ~, [f3,a3]@31 [bb3,eb4]@47 ~@2]/5", // F Eb5
  R: "[[f3,d4]@15 [bb3,eb4,f4]@16 ~, a3@7 ~@9]/2", S: "[[a3,f4]@31 ~, c4 ~]/2",
})).s("gm_pad_warm").gain(0.26).pan(0.7)

// other · tubular bells
const tubular_bells = note("<A@2 ~@2 B@2 ~@33 A@2 ~@2 B@2 C ~@54 D@2 ~@2 E@2 ~@2 D@2 ~@2 E@2 ~@2 F ~@2>".pickRestart({
  A: "[[f4,f5]@19 ~@13]/2", B: "[[f4,f5]@11 ~@5]/2", C: "bb3", D: "[[bb4,bb5]@19 ~@13]/2", E: "[[bb4,bb5]@11 ~@5]/2",
  F: "~ bb4@15, ~ bb3@7 ~@8",
})).s("gm_tubular_bells").gain(0.37)

// chords · percussive organ
const percussive_organ = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@4 J@2 K@2 L M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 B@2 U@2 ~@2 V@2 W X Y@2 Z AA AB@5 AC@4
  AD@4 AE@4 AF@3 ~@7 AG@2 AH@4 AI@4 AE@4 AF@3 ~ AJ@2 AK AL@4 AM@5 AN@2 AO@2 AP@3
>`.pickRestart({
  A: "[~ a4@23 [g4,e5]@8, f5@3 ~, ~ c5@31]/2", // C
  B: "[[f4,a4,d5]@28 [d4,e4,f4,g4,a4,b4,c5] [f3,g3,a3,b3,c4] [a3,b3,c4,d4] [e4,f4,g4,b4]]/2", // Dm Dm7 F D7 Em
  C: "[e5 f5@23 [g4,e5]@8, [a4,c5]@24 c5 ~@7]/2", D: "[[f4,a4,d5]@28 b4 [e4,f4,g4] [a3,b3,c4,d4] [d3,e3,f3,g3]]/2",
  E: "a4/2", F: "[[e4,g4]@31 ~]/2", G: "[bb4@3 a4, [d4,f4]]/2", H: "[[c4,e4,g4]@25 ~@7]/2",
  I: "[[a4,c6] g6, c5@63 ~]/4", J: "[[d5,d6], bb4 ~]/2", K: "[g6@31 ~]/2", L: "[bb4,d5,f5]",
  M: "[[a4,d5,f5]@3 [g4,e5]@5 [a4,f5]@8, db5 ~@5 c5@26]/2", N: "[f5 g4, [bb4,d5]]/2",
  O: "[f5@6 e5@9 ~ d5@6 e5@9 [a4,b4], [g4,c5]@31 ~]/2", P: "[a4,c5,f5]/2", Q: "[[bb4,c5,f5]@3 [g4,c5,e5]]/2",
  R: "[a4,d5,f5]/2", S: "[[a4,c5,e5]@7 [bb4,c5,d5,f5]@9]/2", T: "[[a4,f5]@3 [g4,e5], c5]/2",
  U: "[e5 f5@13 [bb4,c5,eb5,f5]@18, [a4,c5]@7 ~@9]/2", V: "[a4,c5,f5,c6,f6]/2", W: "[bb4,eb5,g5,bb5,eb6,g6]",
  X: "[bb4,d5,g5,bb5,d6,g6]", Y: "[[a4,c5,f5,a5,c6,f6]@29 eb6 a5 [f5,g5]]/2", Z: "[eb5,g5,bb5]",
  AA: "[d5,g5,bb5]@3 [c5,f5,a5]@5, gb5 ~@15", // Gm F
  AB: "[[d5,bb5]@16 bb5@16 c5@16 bb5@6 a5@9 ~ g5@6 a5@9 [d5,e5], f6, f5@3 ~@2, ~@16 [eb5,g5]@32 [c5,f5]@31 ~]/5", // Gm Dsus2 Eb F5
  AC: "[d5@4 [bb4,eb5,g5]@3 [c5,f5], bb5@7 ~, f5 ~@63]/4", AD: "[[bb4,g5]@16 [a4,f5]@7 [f4,bb4,c5,f5]@9, d5@23 ~@9]/4",
  AE: "[d5@4 eb5@3 [a4,c5], f5, bb4@7 ~]/4", AF: "[[bb4,g5]@32 [a4,f5]@15 ~, d5@47 ~]/3",
  AG: "[~@14 [gb5,ab5,db6]@17 ~]/2", AH: "[[d5,f5]@4 [eb5,g5]@3 [c5,f5], bb5@7 ~]/4",
  AI: "[[bb4,g5]@16 [a4,f5]@7 [g4,bb4,eb5]@9, d5@23 ~@9]/4", AJ: "[[d5,f5,bb5]@3 [c5,f5,a5]]/2", AK: "[bb4,d5,g5]",
  AL: "[~@13 [d4,e4,f4] ~@3 bb5@23 [c5,f5,a5]@8 ~@16, ~@12 e5@3 [bb4,c5] [d5,f5]@23 ~@25, ~@12 [c5,d5,f5]@3 a4@49, ~@6 [g4,a4,bb4] [d4,e4,f4,g4]@25, ~@13 [bb3,c4]@51]/4", // Dm F Bbsus2 Dm Dm7 Gm Em7 Bbsus2
  AM: "[~@15 [g3,a3] [d5,bb5]@24 [c5,a5]@8 [bb4,d5,g5]@28 [g4,a4,bb4,c5,d5,e5,f5] [bb3,c4,d4,e4,f4] [d4,e4,f4,g4] [a4,bb4,c5,e5], ~@3 e5 f5@8 ~@8, ~@13 a4@63 ~@4, ~@13 bb4@2 [bb3,c4]@62 ~@3, ~@13 c5 [d4,e4,f4,g4]@63 ~@3]/5", // Gsus2 Gm F Gm Gm7 Bb Em7 Am …
  AN: "[a5 bb5@23 [c5,a5]@8, [d5,f5]@24 f5 ~@7]/2", AO: "[[bb4,d5,g5]@28 e5 [bb4,c5] [e4,f4,g4,a4] [c4,d4]]/2",
  AP: "[~ [c5,d5,f5]@41 ~@6]/3", // Dm7
})).s("gm_percussive_organ").gain(0.08).pan(0.4)

// chords · percussive organ · soft notes
const percussive_organ_soft = note(`<
  ~@8 A@4 ~@4 B@2 C@2 D@2 E@2 ~@21 F@2 ~@5 G ~@10 H ~@23 H ~@18 I@2 ~@11
>`.pickRestart({
  A: "[c5, f4@31 ~@33]/4", B: "[f4@31 ~]/2", C: "[[e4,g4]@31 ~]/2", D: "[~ a4, f5]/2", E: "[[g4,c5,e5]@31 ~]/2",
  F: "[bb4,d5,f5]/2", G: "~@14 b5 ~", H: "~ a4", I: "[[bb4,d5,g5]@7 ~]/2",
})).s("gm_percussive_organ").gain(0.05).pan(0.4)

// other · celesta
const celesta = note("<~@39 A B A B ~@57 C D E D C D E D C D E D C D E D ~@3>".pickRestart({
  A: "[f5,f6]@2 ~ [g5,g6]@2 ~ [a5,a6]@2", B: "~ [f5,f6]@2 ~ [g5,g6]@2 ~@2", C: "[bb5,bb6]@2 ~ [c6,c7]@2 ~ [d6,d7]@2",
  D: "~ [bb5,bb6]@2 ~ [c6,c7]@2 ~@2", E: "[bb5,bb6]@2 ~ [c6,c7]@2 [c6,c7] [d6,d7]@2",
})).s("gm_celesta").gain(0.31).pan(0.4)

// chords · guitar harmonics
const guitar_harmonics = note("<~@16 A@2 B@2 C@2 ~@16 D ~@3 E F G ~@74>".pickRestart({
  A: "[~ c3@7]/2", B: "g3/2", C: "[d3@15 ~]/2", D: "~@12 [f3,c4]@3 ~", E: "~@13 a2@3, ~@3 d3, ~@6 f3 ~",
  F: "~@3 [f3,c4]", G: "~@5 [ab2,eb3]@3",
})).s("gm_guitar_harmonics").gain(0.1)

// chords · distortion guitar
const distortion_guitar = note(`<
  A@2 B@2 C@2 B@2 ~@15 D E F G H I J@6 K@2 L@2 M@2 N@2 O@2 ~@7 P Q R S T U V@4 W@2 X@2 Y@2 Z@2 W@2 X@2 AA@2 AB@2 AC@2 AD
  AE@3 AF@2 W@2 X@2 AG@2 Z@2 W@2 X@2 AA@2 AH@2 AI@2 AJ@2 AI@2 AH@2 AI@2 AJ@2 AK@5
>`.pickRestart({
  A: "[[f2,c3,f3]@24 [g2,c3,e3]@7 ~]/2", B: "[a2,d3]/2", C: "[[f2,c3,f3]@23 ~ [c3,e3,g3]@8]/2",
  D: "~@4 [g2,c3,g3] ~ [a2,e3,a3]@2", E: "[bb2,f3,bb3]@14 e2 ~", F: "[d3,a3,d4]@4 e2 ~ [c3,g3,c4]@8 c2 ~",
  G: "[f2,c3,f3]@7 ~ [f2,c3,f3] ~ [a2,e3,a3]@4 d2 ~", H: "[bb2,f3,bb3]@12 ~@2 e2 d2, ~@3 [a2,e3,a3]",
  I: "[d3,g3]@4 g2 ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3]@4, g2@3 ~@13", // G5
  J: "[~@10 g3 ~@9 c4 ~ e3 ~@9 f4@21 ~@11 [c4,f4]@22 [e3,g3,c4,e4] ~ [e3,c4,e4]@4 [a2,e3]@4, f3@3 e3@5 d3@3 ~@4 f2@11 ~@22, ~@2 g3@8 ~@8 e3@4 ~@9 [c3,a3]@22 ~@10 [c3,bb3]@22 ~@2 a2@5 ~@4, ~@4 c4@8 c4@8 ~@12 c4 ~@30 f3@2 ~@31]/6", // F5 C A5 F C7
  K: "[[a3,d4,f4]@10 [a3,d4,f4] ~@3 [f3,a3,d4,f4]@14 ~@4, d3@14 d3 ~@17]/2", // Dm
  L: "[[a2,e3,a3]@9 ~ [a2,e3,a3] ~@3 [c3,g3,c4]@9 ~ [c3,g3,c4] [c3,g3,c4]@2 ~ [c3,g3,c4]@4, g3 ~@27 gb3 ~@3]/2", // A5 C5
  M: "[[f2,c3,f4]@23 ~ [g2,c3,e4]@8]/2", N: "[[a2,d3,d4]@15 [d2,a2,d3]]/2",
  O: "[[f2,c3,f3]@3 ~ [f2,c3,f3]@8 [f2,c3,f3]@2 [ab2,eb3,ab3]@18]/2", P: "~@6 [bb2,f3,bb3] ~",
  Q: "~@14 a1 ~, [bb2,eb3,bb3]", R: "[g2,d3,g3]@4 a1 ~ [f2,c3,f3]@8 f1 ~",
  S: "[f2,bb2,bb3]@7 ~ [f2,bb2] ~ [a2,d3]@4 g1 ~", T: "[bb2,eb3,eb4]@12 [f3,c4,f4]@2 a1 g1", U: "[eb3,bb3,eb4]@7 ~",
  V: "[c4 ~@9 c4@2 ~@2 c4@2 ~@6 a3@8 ~@2 [bb2,bb3]@32, bb3@4 f4@6 ~@2 f4@6 c4@13 [f2,d3]@22 ~@11, ~ c4@2 a3@4 ~ g3@3 ~@4 bb1@11 ~@6, ~@20 f4@11 ~ f3@21 ~@11]/4", // Bb Dm
  W: "[[eb3,bb3,eb4]@23 d4 [f3,c4]@8]/2", // Eb5 F5
  X: "[[g2,d3,g3]@10 [g2,d3,g3] ~ [g2,d3,g3] ~ [d4,g4,d5]@12 [bb3,d4,g4,d5]@2 [bb3,d4,g4,d5] ~@3, [a2,db3] ~@13 [d3,g3]@18]/2", // G5 Gm A G5
  Y: "[[d3,a3,d4]@10 [eb3,bb3,eb4]@2 [e3,b3,e4]@2 f3@12 f3 ~ [f3,c4,f4]@4, e3 ~@13 [c4,f4]@14 ~@4]/2", // D5 Eb5 E5 F5
  Z: "[bb2@16 d3@15 ~, [f3,bb3]@31 ~]/2", AA: "[[d3,a3,d4]@5 [eb3,bb3,eb4] [e3,b3,e4] [f3,c4,f4]@9, e3 ~@31]/2",
  AB: "[[d3,a3,d4]@13 ~ bb3@8 g3@4 ~ g3@3 g3 ~, ~@14 eb3@15 ~@3, ~@22 [bb3,eb4]@9 ~]/2", // D5 Eb5
  AC: "[a2 ~@5 d4@6 bb3@3 c4@16 ~, [g2,d3]@11 ~@21, ~@2 g3@10 f3@19 ~, ~@4 c4@9 ~@19]/2", // G5
  AD: "[d3,a3,d4]@7 ~, gb3 ~@15", // D5
  AE: "[[eb3,bb3,eb4]@12 ~@2 [gb3,bb3,db4,eb4]@16 [gb3,bb3,db4]@4 [gb3,bb3,db4] ~ [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2]/3", // Eb5 Ebm7 Gb
  AF: "[[bb2,f3,bb3]@31 ~]/2", // Bb5
  AG: "[[d3,a3,d4]@10 [eb3,bb3,eb4]@2 [e3,b3,e4]@2 f3@12 f3 ~ [f3,c4,f4]@4, ~@7 [c4,f4]@7 ~@2]/2", // D5 Eb5 E5 F5
  AH: "[[f3,bb3]@24 [f3,a3]@7 ~]/2", AI: "[d3,g3]/2", AJ: "[[f3,bb3]@3 [a3,c4]]/2",
  AK: "[~@32 [bb3,f4]@35 ~@13, d3@2 ~@3, ~ g3@33 ~@46]/5", // Bb5
})).s("gm_distortion_guitar").gain(0.3).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@2 ~@12 B@2 C@2 ~@5 D E ~@4 F@2 ~@14 G@2 H@2 I J@3 K ~@4 L@2 M@2 N O P@2 Q ~ R@4 S@2 Q ~@3 T ~@2 U@3 M@2 N O P@2 Q ~
  R@4 S@2 Q ~@20
>`.pickRestart({
  A: "[[g3,a3,c4,f4]@21 ~@11]/2", B: "[e4@21 ~@7 [bb2,f3,bb3,d4]@4]/2", C: "[c3,f3,a3,c4]/2",
  D: "~@10 e3!2 [a2,e3] ~@3", E: "[bb2,f3,bb3,d4]", F: "[~@22 e3 ~@9, f3@3 e3@5 d3@3 ~@5, ~ g3@4 c4@5 c4@6]/2",
  G: "[~ f4@22 ~@9, [bb2,f3,bb3,d4]@23 ~@9]/2", H: "[~@3 f3@7 ~@6, f3@4 f4@17 ~@11, ~@2 c4@5 ~@25]/2",
  I: "[bb3,eb4]@7 ~", J: "[[bb3,d4]@14 ~@3 a3@23 ~@2 a3!2 [d3,a3] ~@3, ~@5 c3@8 ~@3]/3", K: "[eb3,bb3,eb4,g4]",
  L: "[~@22 a3 ~@9, bb3@3 a3@5 g3@3 ~@5, ~ c4@4 f4@5 f4@6]/2", M: "[[f3,bb3,d4]@19 ~@13]/2", N: "[g3,bb3,eb4]",
  O: "~@4 [a3,c4,f4]@3 ~", P: "[[bb3,d4,g4]@5 ~@3]/2", Q: "[a3,d4,f4]@3 ~",
  R: "[[bb3,d4,f4]@24 ~@2 [bb3,d4,f4]@2 ~@2 [bb3,eb4,g4]@22 ~@4 [a3,c4,f4]@7 ~]/4", S: "[[g3,bb3,d4]@5 ~@3]/2",
  T: "~@3 bb3, g2@15 ~, ~ d3@2 d4@5, ~ c4 d3@2, ~@5 g3@3",
  U: "[~@14 [gb3,bb3,db4]@14 ~@2 [gb3,ab3,db4]@4 [gb3,ab3,db4]@2 [gb3,ab3,db4]@2 [gb3,ab3,db4]@2 [gb3,ab3,db4]@2 [gb3,ab3,db4]@2 [gb3,ab3,db4] ~ [gb3,ab3,db4]@2]/3", // Gb Gbsus2
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.7)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@14 A@2 ~@7 B ~@5 C D ~@16 E@6 ~@5 F G ~@59>".pickRestart({
  A: "[g4@21 ~@11]/2", B: "~@10 a2!2 ~@4", C: "~@2 c4@3 ~@3", D: "~ e3@2 ~@5",
  E: "[~@8 c4@13 ~@10 g3@14 ~@2 g3@15 ~@3 c4@23 ~@2 d3!2 ~@4, ~@62 f2@25 ~@9, ~@64 [f3,g3]@23 ~@9]/6", // Fsus2
  F: "~@2 f4@3 ~@3", G: "~ a3@2 ~@5",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.7)

// chords · piano
const piano = note("<A B C@2 D@2 E@2 F@4 G@2 H ~ I@2 J@2 K L M@2 ~@95>".pickRestart({
  A: "~@4 g4 a4 g4@5 ~ [f4,a4,c5]@4, ~@2 c5@3 ~@3", B: "~@2 [c4,f4]@4 ~@2 [e3,g3,c4,e4,g4]@3 ~ [e3,g3,c4,e4,g4]@3 ~",
  C: "[~@4 g4 a4 g4@4 f4 ~ g4@2 ~@4 f4@5 ~ [d3,f3,g3,d4,g4]@3 ~ [d3,f3,g3,d4,g4]@2 ~@2, [d3,f3,a3]@23 ~@9, ~@4 c5@6 ~@2 c5@11 ~@9, ~@7 a4@3 ~@6]/2", // G7 Dm
  D: "[~@4 g4 a4 g4@4 f4@3 ~ f4@2 ~@2 f4@3 ~@3 [e3,g3,c4,e4,g4]@3 ~ [e3,g3,c4,e4,g4]@4, [f3,a3]@23 ~@9, ~@4 c5@7 ~@3 c5@8 ~@10, ~@7 a4@3 ~@6]/2", // C F
  E: "[f4@3 ~ [g4,c5] a4 [g4,c5]@4 f4@2 g4 a4 f4@3 ~ [f4,a4]@4 ~@2 [d3,f3,d4,g4,c5]@3 ~ [d3,f3,d4,g4,c5]@3 ~, [d3,f3]@23 ~@9, ~@12 c5@11 ~@9]/2", // C5 F Dm7 Dm
  F: "[[g4,a4,c5]@22 ~@10 [e3,e4,g4]@24 ~@2 g4@3 a4@3, [f2,c4]@29 ~@35, f4@10 ~ f4@4 ~@17, f3@7 ~@7 c5@14 ~@4]/4", // Am7 Em F5
  G: "[[d4,f4,bb4]@15 ~ [d4,f4,a4]@10 ~@6, [d2,d3]@27 ~@5]/2", H: "[c3,c4,d4,e4]", I: "[f2@29 ~@3]/2",
  J: "[[c4,e4,g4]@23 ~@3 g4@3 a4@3, e2@7 ~]/2", K: "bb4@7 ~", L: "[f4,a4], d4@13 ~@3", M: "[[c3,c4,e4,g4]@23 ~@9]/2",
})).s("gm_piano").gain(0.27)

// chords · piano · soft notes
const piano_soft = note("<~@4 A ~ B C ~ D@3 ~@2 E ~@6 F ~@97>".pickRestart({
  A: "d3 ~@15", B: "~@7 a4", C: "~@6 [d4,f4] ~@9", D: "[~ f3@6 ~ f3@6 c4@25 ~@9]/3", E: "g4", F: "d3@3 ~",
})).s("gm_piano").gain(0.15)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
// … 169 more lines

More by Anna Oxa