Strudelify
Air On The G String cover art

Seasons of Life - Bonus Tracks

Air On The G String

Bach Johann Sebastian

KeyD minorTempo120 bpm
0:00/0:00
// Air On The G String — Bach Johann Sebastian
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 91 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// chords · piano · "A.PIANO 1"
const piano = note("<A B@8 C@8 D@8 E F@5 G@5 H@7 I@4 J@3 K@6 L@4 M@7 N@4 O@8 P@6 Q@4 ~@2>".pickRestart({
  A: "~ a4",
  B: "[~@4 bb4@9 ~@10 db5@9 ~@48 e3@14 ~@65 [a3,gb4]@11 ~@38 c3@10 ~@29 a4@9, ~@4 g4@19 f4@24 ~@5 a4@15 ~@45 a4@29 ~@18 c3@36 ~@4 d3@13 ~@6 bb2@20 [bb2,d4]@18, ~@13 a4@13 ~@6 d5@14 ~@7 a3@14 ~@4 f3@14 ~@37 e4@19 [db3,e4,a4]@21 ~@9 g3@12 ~@7 eb3@13 ~@35 bb4@10 ~@8, ~@23 d3@19 [bb3,g4]@20 e4@60 g4@24 ~@4 g4@12 ~@8 g4@13 ~@46 d5@18 ~@9, ~@42 e4@20 bb4@64 ~@5 e5@15 ~@34 [gb3,a4]@59 g3@17]/8", // D Bb A Eb Gbm
  C: "[~@9 gb4@9 ~@37 [a3,f4]@10 ~@36 g4@9 ~ g3@9 [e3,db5]@11 ~ f3@13 [d3,a5]@16 [e3,a4,db5]@44 ~@7 f4@19 bb4@10 ~@10 db5@5, [bb2,g3,d4,g4]@18 g4@23 ~@5 g4@12 ~@25 f4@10 g2@23 ~@16 [a2,a4]@29 ~@95, ~@18 db4@18 a4@10 ~@9 a2@19 [a2,f3,d4]@28 ~@9 bb2@23 ~@122, ~@19 a2@18 [a2,e3,db4]@20 ~@8 [g3,e4]@16 ~@11 g3@18 ~@22 d5@18 ~@61 a4@21 ~@9 a4@13 ~@2, ~@28 bb4@13 ~@51 bb4@10 ~@8 eb5@11 ~@10 ab5@14 ~@86 g4@22 ~@3]/8", // Dm Dbm D5 A Gm A Dm A …
  D: "[~@16 g4@12 [a3,a4]@10 ~@98 [a3,gb4]@11 ~ g3@9 ~@10 eb3@10 ~@9 c3@10 ~@9 d5@9 ~@10 a4@9 g4@9 gb4@9 ~ a2@4, ~@5 d5@14 ~@19 [g3,bb4]@61 e4@18 [e4,a4]@22 ~@18 [gb3,a4]@57 ~ g3@12 ~@6 [g3,d4]@13 ~@10, ~@16 d3@36 ~@5 e3@14 ~@6 db3@21 g4@10 ~@18 g4@13 ~@8 g4@11 ~@56 d4@18 ~@24, ~@38 e4@60 a3@19 ~@19 c3@35 ~@6 d3@12 ~@7 bb2@18 ~ bb2@18 bb2@19 ~@4, ~@48 f3@14 ~@4 d3@15 ~@7 [e3,a4]@16 ~@3 e5@32 ~@75 bb4@10 ~@27 g4@5]/8", // A D Gm A5 Gbm G5 A5
  E: "~@15 a4@9 g4@8, ~@5 bb4@16 ~@11, ~@15 db4@17",
  F: "[~@39 bb4@9 g4@9 ~@10 [e3,db5]@12 [f3,d5,ab5]@13 ~@14 db5@4 ~@3 db5@31 ~@5 [a2,a4,e5]@11, ~ f4@19 [a2,f3,d4]@25 ~@12 bb2@22 [a2,a4]@24 [a2,a4]@41 ~@16, ~@2 a3@21 ~@16 g3@18 ~ g3@12 ~@23 d3@12 ~@55, ~@10 e4@13 ~@7 f4@15 ~@12 eb5@12 ~@23 a5@13 ~@6 db5@2 ~@47, ~@11 g3@12 ~@16 g2@23 ~@40 d5@4 ~@4 d5@2 d5@3 ~@45]/5", // Dbm Ddim A5 Dm A
  G: "[~@16 a2@9 ~@10 d3@9 ~@21 g4@9 ~@9 [f4,a4]@9 [e4,g4]@12 ~@19 g4@5 ~@22 [g2,g4]@10, ~@7 bb2@11 ~@7 f5@13 ~@7 e4@19 db5@41 ~@8 a2@13 ~@6 [eb3,g4]@9 c5@19, ~@8 e5@18 f4@19 g2@9 a2@11 e4@9 [g4,bb4]@12 ~@18 gb4@23 ~@4 bb4@9 eb5@20, ~@8 [g4,db5]@13 ~@4 a4@20 a4@33 ~@26 [eb4,c5]@18 [eb4,c5]@18 [a2,gb4]@14 ~@6, ~@25 db3 d5@13 ~@5 db5@20 bb2@52 ~@7 g2@20 ~@17]/5", // F Em G Eb Gm Gdim Cm D
  H: "[gb2@9 ~@136 c5@5 ~@12 gb5@9 [bb4,g5]@9 ~@10 [c5,a5]@8 ~@10 a4@9 ~ g2@6, a4@26 gb5@14 ~@4 a5@13 ~@33 g5@31 ~@41 a4@6 ~@13 d3@18 d2@21 ~@4, ~@9 [g2,d5]@9 c5@13 ~@4 g5@14 ~@4 [d5,gb5,bb5]@16 ~@20 [d5,bb5]@31 ~@8 [eb5,c6]@20 ~@5 [bb4,g5]@11 ~@34 [bb4,g5]@11 ~@8 [a4,gb5]@7, ~@18 a2@49 ~@5 [bb2,d5,g5,bb5]@14 ~@4 g2@14 ~@4 eb2@24 ~@4 [bb2,d5,bb5]@12 ~@6 d3@11 ~@15 [gb3,d5,bb5]@19 ~@8 gb5@10 ~@7, ~@18 [eb3,gb3]@39 ~@5 d3@13 ~@5 a2@13 ~@6 f2@12 ~@8 [c5,a5]@13 ~@13 [c3,a5]@12 ~@5 eb3@20 ~@42]/7", // Eb F G5 Daug Gm Cm Eb D …
  I: "[~@6 d3@11 eb3@10 d3@10 ~@51 e5@10 [e5,g5]@10 [f5,a5]@11 [bb4,e5]@9, [bb4,g5]@11 ~@6 [bb4,g5]@43 e5@20 bb3@18 bb3@23 ~@7, ~@61 [bb2,c5]@27 ~@40, ~@79 g4@19 g4@30, ~@79 [d5,f5]@9 c5@14 ~@26]/4", // Em F Bbdim Eb Bbsus2 Dm
  J: "[~@3 c5@10 ~@18 bb3@9 a3@9 ~@37 e5@10, ~@2 f5@11 f5@56 ab3@17 ~@10, ~@3 f4@23 ~@42 b4@18 ~@10, ~@13 [a4,c5]@39 ~@6 e5@19 b5@14 ~@5, ~@22 c4@13 ~@14 ab3@19 d5@10 ~@18]/3", // Am
  K: "[~@9 db5@11 [d4,d5]@10 ~@18 a3@9 ~@47 d5@9 ~@9 bb4@9 ~@38 g4@10 f4@9 ~ g3@3, d5@13 ~@17 e5@48 ~@8 f5@10 ~@26 g4@19 e3@11 ~@7 [db3,a3,a4]@21 ~@12, ~@30 db4@38 a4@19 [f3,a4]@17 d4@18 [f3,d4]@22 ~@6 d3@12 ~@30, ~@39 bb3@13 ~@5 g3@17 ~@3 a5@14 ~@4 e5@13 ~@5 c5@19 ~@8 db5@12 ~@40, ~@68 f4@23 ~@13 a4@27 g5@13 ~@5 bb4@13 ~@26 bb4@4]/6", // D Gbm F Dm
  L: "[~@16 d3@6 ~@15 e4@9 db5@14 d5@13 [gb4,d5]@35 ~@7 [db5,e5]@13, ~@6 [f3,ab4]@13 ~@7 [db4,f5]@24 ~@78, ~@15 a4@15 ~@6 e5@14 ~@65 a4@8 ~@5, ~@23 [bb3,g4]@15 ~@19 a2@7]/4", // D Dbm Fm Db Eb
  M: "[~@5 [bb2,g4]@9 a2@9 db3@9 ~@29 g4@6 ~@3 bb4@10 a4@9 ~ e4@10 ~@19 g4@4 ~@5 [eb3,g4,bb4]@9 ~@65 a5@9 ~@9 d3@4, ~@5 e5@18 [f4,a4]@19 a4@19 e4@13 ~@15 g4@11 gb4@22 ~@34 a4@28 gb5@9 g5@17 ~ [gb5,bb5]@13, ~@23 [d5,f5]@12 ~@6 db5@15 ~@4 db5@40 eb4@18 ~ [g2,eb4]@21 ~@6 [g2,g4]@19 [g2,d5]@10 c5@21 ~@16 d5@12, ~@32 d3@10 e4@15 ~@3 bb2@49 a2@13 ~@15 [a2,gb4,c5]@13 ~@6 [gb2,c5]@14 ~@5 a2@48 ~, ~@41 g2@10 a2@12 ~@37 c5@14 ~@5 c5@18 eb5@31 ~@7 [eb3,gb3]@35 ~@14]/7", // Eb F Gb Dm Cm G G5 Gbdim …
  N: "[~@32 f2@9 ~@45 [d3,bb4,g5]@9 ~@8 [bb4,g5]@9 ~@9 c5@7, ~@5 bb5@17 ~ g2@12 ~@6 eb2@23 ~@13 a5@12 ~@31 a5@8, ~@5 bb2@9 a2@13 ~@43 bb2@7 c5@5 ~@13 [a4,gb5]@12 ~@5 [d3,gb3,d5,bb5]@16, ~@6 d5@17 d5@24 ~@5 [c5,a5]@12 ~@5 [d5,bb5]@9 c3@11 ~@6 eb3@19 ~@14, ~@6 g5@13 ~@4 [g5,bb5]@31 ~@7 [eb5,c6]@19 ~@48]/4", // Gm Eb D Daug F Gm Cm
  O: "[~ [bb4,g5]@9 [a4,gb5]@10 ~@23 eb3@10 d3@10 ~@22 [bb2,c5,e5]@18 ~ d5@8 ~ c5@9 [e5,g5]@10 [f5,a5]@10 [bb4,e5]@10 [f4,f5]@10 ~@19 bb3@9 a3@10 ~@19 d5@10 ~@9 e5@10 d5@8, ~ d2@12 ~@7 gb5@7 bb4@10 ~@6 [g4,bb4,g5]@42 ~@37 g4@29 ~@12 c5@39 ~@7 e5@16 ~@31, ~@20 a4@5 ~ g5@16 ~@61 f5@9 e5@10 ~@30 c5@4 ~@6 f5@48 ~@19 b5@14 ~@13, ~@21 g2@12 d3@13 ~@58 bb3@18 bb3@20 a3@34 ~@24 ab3@19 [ab3,b4]@20 ~@17, ~@172 c4@12 ~@26 b3@15 ~@31]/8", // Eb D C7 Em F Bbdim F Gm …
  P: "[~@11 [d4,d5]@9 ~@10 bb3@11 ~@8 g3@11 a4@10 ~@20 e5@9 ~@10 c5@10 bb4@10 ~@38 g4@11 [d3,f4]@10 bb4@4, ~ db5@12 ~@7 e5@50 a5@29 [f3,a4,d5]@20 f3@24 ~@5 [d3,bb4]@13 ~@31, ~@2 a4@58 f4@40 ~@19 g4@19 db5@14 ~@6 a4@12 ~@22, ~@2 e4@12 ~@7 db4@42 ~@17 [f3,a4,f5]@20 ~@29 g5@13 ~@50, ~@139 e3@13 ~@6 db3@21 ~@13]/6", // D Dm Gm F
  Q: "[~@6 [f3,ab4]@12 a4@12 ~ a4@7 ~@4 [e4,g4]@13 ~@19 d5@26 ~@28, ~@15 f5@6 e5@9 ~@34, ~@55 bb3@53 ~@20, ~@55 [e4,db5]@22 ~@51]/4", // Fm Em Dbm
})).s("gm_piano").gain(0.24)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A@6 B@3 C@3 D ~ E@5 ~ F@4 G@3 H@2 I@3 ~@11 J@3 K@2 L@6 M@6 N ~ O ~@9 P@3 ~ Q@4 R@2 S@8 ~
>`.pickRestart({
  A: "[~@17 [d3,d4,f4]@19 [d3,d4]@19 ~@99 [db3,a3]@19 ~ a3@17 ~, ~@55 d4@24 ~@15 g3@64 ~@34, ~@75 d3@42 ~@5 d3@14 ~@8 e3@34 ~@14, ~@133 db3@21 ~@38]/6", // Dm D Gbm
  B: "[d4@16 ~@5 d4@57 ~@18]/3", C: "[~@19 a3@22 ~@14 db4@26 ~@15]/3", D: "~@15 g4@14 ~@3",
  E: "[~ a2@43 ~@8 [d3,d4]@19 [d3,d4]@11 ~@10 d4@12 ~@8 e4@22 ~@26, ~@91 d3@21 bb3@14 ~@34, ~@23 f4@6 ~@11]/5", // D
  F: "[~@2 db3@19 a3@19 d4@16 ~@5 d4@57 ~@10, ~@21 db3@22 ~@85]/4",
  G: "[~@47 a2@19 db4@21 ~@9, ~@27 db4@19 ~ e3@40 ~@9, ~@28 a3@25 ~@13 a2@18 ~@12]/3", H: "[~@13 g4@7 ~@12]/2",
  I: "[~@7 e3@41 ~@5 db5@18 ~@25]/3", J: "[~@36 gb3@10 g3@15 g4@18 ~@17, ~@17 g4@44 ~@35]/3", K: "[~@23 a3@35 ~@6]/2",
  L: "[~@37 e4@11 ~@6 [ab3,b4]@20 a4@20 a4@38 f3@18 ~ d4@17 f3@18 ~@6, ~@18 d4@28 ~@8 e4@12 ~@8 e4@11 ~@107, ~@3 b4@3 ~@26, ~@27 b3@19 ~@28 g3@33 ~@85]/6", // Abm
  M: "[~@13 [e4,g4]@13 ~@5 e4@21 [d3,a3,d4]@9 ~@29 g4@20 ~@15 d4@12 [d3,a3,d4]@34 ~@21, ~@61 [e3,db4]@14 ~@15 a3@24 ~@78, ~@70 d4@24 ~@16 e4@7 ~@75, ~@111 d3@26 ~@55]/6", // Em D5 Dbm
  N: "~@5 db5@12 ~@15", O: "~@7 g4@9 f4@10 ~@6", P: "[~@30 gb3@9 g3@13 ~ g4@19 g4@12 ~@12]/3",
  Q: "[~@3 a4@32 ~@5 b4@19 ~ e4@12 ~@7 e4@11 ~@8 g3@30, ~@40 d4@9 ~@30 [ab3,b4]@23 ~@26]/4", // Abm
  R: "[~@6 a3@12 ~@11 f3@19 ~@16]/2",
  S: "[~@3 d4@19 ~@22 e4@18 ~ a3@19 [a3,d4]@10 ~@22 d3@5 ~@51 d4@26 [d3,a3,d4,gb4,d5]@60, ~@23 d4@24 ~@15 e4@14 ~@16 [e3,db4]@15 ~@44 d3@45 ~@60, ~@43 g4@13 ~@37 g3@14 ~@20 [a3,db4]@29 ~@100, ~@102 d4@29 ~@20 g4@53 ~@52]/8", // D5 D Dbm A
})).s("gm_piano").gain(0.08)

stack(piano, piano_soft)

More by Bach Johann Sebastian