0:00/0:00
// Goldberg-Variationen BWV 988 — Johann Sebastian Bach
// 72 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/4 at bar 1, 1/4 at bar 65, 3/4 at bar 66) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5983401; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 118 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/3)
// 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 · recorder · "Soprano Recorder"
const recorder = note(`<
A B C D E F G H I J K L M N O P A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@3 AI@3 AJ
AK@3 AL AM AN AO AP AQ AR AS AT AU@2 AV@2 AW AX AY AZ BA@2 BB BC BD BE BF@2 BG BH BI BJ BK@2 BL BM BN BO BP BQ BR BS
BT@2 BU BV BW BX BY BZ CA@2 CB@2 CC@2 CD CE CF CG CH ~
>`.pickRestart({
A: "g6@11 g6@10 a6 ~ g6 a6@5 b6@3", B: "a6@5 g6@3 f#6@3 e6@5 d6@16",
C: "g5 f#5 ~ g5@8 a5@4 g5 a5 g5 ~ a5 g5 a5 ~ g5 a5 g5 ~ f#5@2 g5@3", D: "a5 g5 ~ f#5@2 g5 ~ f#5 e5@3 e5@5 d5@16",
E: "d6@11 d6@10 e6 ~ d6 e6@5 f6@3", F: "e6@5 d6@3 c6@3 b5@2 a5@13 ~ e6 f#6 g6 ~ f#6",
G: "g6 f#6@4 a6 ~ g6@4 f#6 e6@4 d6 c6@4 c6@5 ~ a6@2 c6@3", H: "b5 g5@4 f#5@5 ~ f#5@5 g5@16",
I: "b5@11 b5@10 c#6 ~ b5 c#6@5 d6@3", J: "d6@3 c#6@2 b5@3 a5@24",
K: "g5@3 b5@2 e6@3 g6@3 a6@4 g6 a6 g6 ~ a6 g6 a6 ~ g6 a6 g6 ~ f#6@2 g6@3",
L: "g6@5 e6@5 ~ d6@4 c#6 d6 c#6 ~ d6 c#6 d6 ~ c#6 d6 c#6 ~ e6@5", M: "a6@3 g6@2 f#6@3 e6@3 d6@5 a5@12 b5 c6@3",
N: "b5@3 a5@2 g5@3 f#5@3 e5@5 d6@5 c#6@7 d6 e6@3", O: "d6@3 c#6@2 b5@3 a5@3 g6@5 b5@11 c#6@5",
P: "c#6@3 d6@4 e6 d6 c#6 ~ c#6@5 d6@16", Q: "a5 b5 ~ a5@8 b5@4 a5 b5 a5 ~ b5 a5 b5 ~ a5!2 b5 ~ c6 d6 e6@3",
R: "e6@3 d6@2 c6@3 b5@3 a5@2 g5@13 ~ g6@5", S: "f#6@5 e6@3 f#6 d#6 ~ d#6 e6 d#6 ~ e6@12 a6 b6 a6 ~ g6",
T: "a6@8 f#6@3 e6@10 d#6@5 ~ b5@5", U: "a6@4 g6 a6 ~ g6 f#6@3 f#6@5 e6@8 b5@3 c6 b5 a5 ~ b5",
V: "g6 e6@4 f#6 ~ d#6@4 d#6@5 e6@8 g5@3 f#5@2 e5@3", W: "f#5@8 e6@3 e6@2 d#6@3 g6 a6 b6 a6 [a6,b6] g6@5 ~ f#6@5",
X: "f#6@5 e6@3 f#6 d#6 ~ d#6@10 e6@11", Y: "e6@5 c6@5 ~ a5@16 b5@2 c6@3",
Z: "d6 c6 ~ b5@2 c6 ~ b5 a5@3 g5@16 a5@2 b5@3", AA: "c6@3 d6@2 c6@3 b5@3 c6@2 a5@3 e5@3 a5@2 c6@11",
AB: "~@3 d6@2 c6@3 b5@3 c6@2 a5@3 f#5@3 a5@2 c6@3 e6@3 d6@2 c6@3",
AC: "b5@3 c6@2 b5@3 a5@3 b5@2 g5@3 d5@3 g5@2 b5@3 g5@3 c6@2 d6@3",
AD: "e6@3 f6@2 e6@3 d6@3 e6@2 c6@3 g5@3 c6@2 e6@3 c6@3 f#6@2 g6@3",
AE: "a6@3 c6@2 b5@3 a5@3 b5@2 c6@3 d6@3 g5@2 b5@3 a5@3 g5@2 f#5@3", AF: "g5@13 d5@3 g5@3 f#5@2 f#5@11",
AG: "g5@11 a5 b5 a5@8 b5@4 a5 ~ b5 a5 b5 ~ a5",
AH: "[b5 a5 ~ a5 b5 c6 ~ d6 e6@3 e6@2 d6@3 c6@3 b5@2 a5@3 g5@13 g6@5 ~ f#6@5 e6@3 f#6 d#6!2 ~ e6 d#6 e6@12 a6 ~ b6 a6 g6 ~ a6@8 f#6@2 e6@11]/3",
AI: "[d#6@5 b5@5 ~ a6@4 g6 a6 g6 ~ f#6@2 f#6@5 ~ e6@8 b5@2 c6 ~ b5 a5 b5 ~ g6 e6@4 f#6 d#6@4 d#6@5 ~ e6@8 g5@2 f#5@3 e5@3 f#5@8 e6@2 e6@3 d#6@3 g6 [a6,b6] a6 b6 a6]/3", // Asus2
AJ: "g6@5 f#6@5 ~ f#6@5 e6@3 f#6 d#6 d#6@11",
AK: "[e6@11 e6@5 c6@5 a5@16 b5@3 c6@3 d6 c6 b5@3 c6 b5 ~ a5@2 g5@16 a5@3 b5@3 c6@2 d6@3 c6@3 b5@2 c6@3 a5@3 e5@2 a5@3]/3",
AL: "c6@13 d6@3 c6@3 b5@2 c6@3 a5@3 f#5@2 a5@3", AM: "c6@3 e6@2 d6@3 c6@3 b5@2 c6@3 b5@3 a5@2 b5@3 g5@3 d5@2 g5@3",
AN: "b5@3 g5@2 c6@3 d6@3 e6@2 f6@3 e6@3 d6@2 e6@3 c6@3 g5@2 c6@3",
AO: "e6@3 c6@2 f#6@3 g6@3 a6@2 c6@3 b5@3 a5@2 b5@3 c6@3 d6@2 g5@3", AP: "b5@3 a5@2 g5@3 f#5@3 g5@13 d5@3 g5@2 f#5@3",
AQ: "f#5@11 g5@11 ~@10", AR: "~@14 g5 f#5", AS: "~ g5@6 d5@2 e5@2 f#5@2 g5@2 ~ a5@2 b5@2 c#6@2 d6@2 c#6@2 d6@6",
AT: "~ a5@2 b5@2 c#6@2 d6@2 e6@2 f#6@2 d6@2 ~ g6@2 f#6@2 g6@6 f#6@2 e6@2 d6@2",
AU: "[~ c#6@2 e6@2 a5@2 g5@2 f#5@2 e5@2 d5@2 ~ c#5@2 d5@2 f#5@2 a5@2 g5@2 f#5@2 a5@2 d5@4 ~@5 d6@2 c6@2 d6@4 ~ g5@4 b5@4 d6@4 ~@4]/2",
AV: "[~ e6@2 d6@2 e6@4 a5@4 c5@4 ~ e6@4 ~@4 f#6@2 e6@2 f#6@4 ~ d6@4 a6@4 c6@8 ~ b5@4 ~@2 g5@2 b5@2 d6@2]/2",
AW: "~ g6@2 d6@2 g6@2 a6@2 b6@2 g6@2 d6@2 ~ b5@2 g5@2 b5@2 d6@2 g6@2 b6@2 g6@2 f#6@2",
AX: "~ e6@2 a6@2 e6@2 c#6@2 a5@2 f#5@2 a5@2 ~ c#6@2 e6@2 a6@2 f#6@2 e6@2 d6@2 g6@2 d6@2",
AY: "~ b5@2 g5@2 e5@2 g5@2 b5@2 d6@2 g6@2 ~ f#6@2 e6@2 d6@2 c#6@2 g5@2 e5@2 c#5@2 a5@2",
AZ: "~ c#5@2 e5@2 g5@2 c#6@2 e6@2 d6@2 c#6@2 ~ d6@4 d5@2 f#5@2 a5@2 f#5@2 a5@4",
BA: "[~ d6@4 f#6@4 b5@4 d5@2 ~ g5@2 b5@2 g5@2 b5@4 e6@4 g6@4 ~ c#6@2 e6@2 a5@2 g5@2 f#5@2 a5@2 ~ d6@2 f#6@2 g6@2 e6@2 d6@2 c#6@2 f#6@2 d6@2]/2",
BB: "~ c#6@2 b5@2 a5@2 g5@2 f#5@2 e5@2 d5@8 ~ g5@2 f#5@2 g5@6",
BC: "~ d5@2 e5@2 f#5@2 g5@2 a5@2 b5@2 c#6@2 ~ d6@2 c#6@2 d6@6 a5@2 b5@2 c#6@2",
BD: "~ d6@2 e6@2 f#6@2 d6@2 g6@2 f#6@2 g6@6 ~ f#6@2 e6@2 d6@2 c#6@2 e6@2 a5@2",
BE: "~ g5@2 f#5@2 e5@2 d5@2 c#5@2 d5@2 f#5@2 ~ a5@2 g5@2 f#5@2 a5@2 d5@4 ~@4",
BF: "[~ d6@2 c6@2 d6@4 g5@4 b5@4 ~ d6@4 ~@4 e6@2 d6@2 e6@4 ~ a5@4 c5@4 e6@4 ~@5 f#6@2 e6@2 f#6@4 d6@4]/2",
BG: "~ a6@4 c6@8 b5@4 ~@3 g5@2 b5@2 d6@2 g6@2 d6@2 g6@2",
BH: "~ a6@2 b6@2 g6@2 d6@2 b5@2 g5@2 b5@2 ~ d6@2 g6@2 b6@2 g6@2 f#6@2 e6@2 a6@2 e6@2",
BI: "~ c#6@2 a5@2 f#5@2 a5@2 c#6@2 e6@2 a6@2 ~ f#6@2 e6@2 d6@2 g6@2 d6@2 b5@2 g5@2 e5@2",
BJ: "~ g5@2 b5@2 d6@2 g6@2 f#6@2 e6@2 d6@2 ~ c#6@2 g5@2 e5@2 c#5@2 a5@2 c#5@2 e5@2 g5@2",
BK: "[~ c#6@2 e6@2 d6@2 c#6@2 d6@4 d5@2 ~ f#5@2 a5@2 f#5@2 a5@4 d6@4 f#6@4 ~ b5@4 d5@2 g5@2 b5@2 g5@2 ~ b5@4 e6@4 g6@4 c#6@2 e6@2]/2",
BL: "~ a5@2 g5@2 f#5@2 a5@2 d6@2 f#6@2 g6@2 ~ e6@2 d6@2 c#6@2 f#6@2 d6@2 c#6@2 b5@2 a5@2",
BM: "~ g5@2 f#5@2 e5@2 d5@8 ~ f#6@2 g6@2 a6@6 b6@2 a6@2 g6@2",
BN: "~ f#6@2 e6@2 d6@2 c6@2 b5@2 c6@2 d6@6 ~ e6@2 d6@2 c6@2 b5@2 a5@2 g5@2",
BO: "~ f#5@2 e5@2 g#5@2 a5@2 b5@2 a5@2 e5@2 ~ a5@2 b5@2 c6@2 a5@2 d#6@2 e6@2 f#6@2 e6@2",
BP: "~ d#6@2 c#6@2 b5@19 d#6@2 e6@6", BQ: "~ d#5@2 e5@6 d#6@2 e6@4 ~@3 g#6@2 a6@6 g#5@2 a5@4",
BR: "~@3 g#6@2 a6@6 b5@2 c6@2 ~ f#5@2 b5@2 d#5@2 e5@2 g5@2 f#5@2 e5@2 d#5@2",
BS: "~ a5@2 g5@2 f#5@2 e5@2 d#5@2 e5@2 g5@2 ~ b5@2 a5@2 g5@2 b5@2 e5@4 ~@4",
BT: "[~ e6@4 c6@4 e6@4 a6@4 ~ a5@4 ~@4 d6@4 b5@4 ~ d6@4 g6@4 g5@4 ~ c6@2 a5@2 e5@2 c5@2 a5@2 c5@2 e5@2 a5@2]/2",
BU: "~ c6@2 a5@2 c6@2 e6@2 f#6@2 c6@2 a5@2 ~ f#5@2 d5@2 f#5@2 a5@2 c6@2 f#6@2 c6@2 f#6@2",
BV: "~ a6@2 b6@2 g6@2 d6@2 b5@2 g5@2 b5@2 ~ d6@2 g6@2 b6@2 f6@2 b6@2 d7@2 e6@2 d7@2",
BW: "~ c7@2 e6@2 d6@2 c7@2 b6@2 d6@2 c6@2 ~ e6@2 f#6@2 g6@2 a6@2 c6@2 b5@2 a5@2 b5@2",
BX: "~ d6@2 b5@2 g5@2 c6@2 a5@2 g5@2 f#5@2 ~ b5@2 g6@2 f#6@2 e6@2 d6@2 c6@2 b5@2 a5@2",
BY: "~ g5@8 f#6@2 g6@2 a6@6 ~ b6@2 a6@2 g6@2 f#6@2 e6@2 d6@2",
BZ: "~ c6@2 b5@2 c6@2 d6@6 e6@2 ~ d6@2 c6@2 b5@2 a5@2 g5@2 f#5@2 e5@2 g#5@2",
CA: "[~ a5@2 b5@2 a5@2 e5@2 a5@2 b5@2 c6@2 ~ a5@2 d#6@2 e6@2 f#6@2 e6@2 d#6@2 c#6@2 b5@19 ~ d#6@2 e6@6 d#5@2 e5@4]/2",
CB: "[~@3 d#6@2 e6@4 ~@2 g#6@2 a6@6 ~ g#5@2 a5@6 g#6@2 a6@6 ~ b5@2 c6@2 f#5@2 b5@2 d#5@2 ~ e5@2 g5@2 f#5@2 e5@2 d#5@2 a5@2 g5@2 f#5@2]/2",
CC: "[~ e5@2 d#5@2 e5@2 g5@2 b5@2 a5@2 g5@2 ~ b5@2 e5@4 ~@4 e6@4 c6@4 ~ e6@4 a6@4 a5@4 ~@5 d6@4 b5@4 d6@4]/2",
CD: "~ g6@4 g5@4 c6@2 a5@2 e5@2 ~ c5@2 a5@2 c5@2 e5@2 a5@2 c6@2 a5@2 c6@2",
CE: "~ e6@2 f#6@2 c6@2 a5@2 f#5@2 d5@2 f#5@2 ~ a5@2 c6@2 f#6@2 c6@2 f#6@2 a6@2 b6@2 g6@2",
CF: "~ d6@2 b5@2 g5@2 b5@2 d6@2 g6@2 b6@2 ~ f6@2 b6@2 d7@2 e6@2 d7@2 c7@2 e6@2 d6@2",
CG: "~ c7@2 b6@2 d6@2 c6@2 e6@2 f#6@2 g6@2 ~ a6@2 c6@2 b5@2 a5@2 b5@2 d6@2 b5@2 g5@2",
CH: "~ c6@2 a5@2 g5@2 f#5@2 b5@2 g6@2 f#6@2 ~ e6@2 d6@2 c6@2 b5@2 a5@2 g5@6",
})).s("gm_recorder").gain(0.3).pan(0)
// other · recorder · "Tenor Recorder"
const recorder_2 = note(`<
A B C D E F G H I J K L B I M@2 A B C D E F G H I J K L B I M@2 N O P Q R S T U V@3 W X@2 ~ Y@4 Z@2 AA AB AC@2 AD AE@5
AF@2 ~@53
>`.pickRestart({
A: "~@11 b4@10 d5@11", B: "~@11 a4@10 d5@11", C: "~@11 g4@10 c#5@11", D: "~@11 f#4@10 a4@11", E: "~@11 d4@10 g4@11",
F: "~@11 e4@10 a4@11", G: "~@5 c5@16 g4@3 f#4@3 e4@2 f#4@3", H: "g4@5 a4@5 ~ b4@21", I: "~@11 b4@10 e5@11",
J: "a4@11 d5@21", K: "~@5 b4@5 ~ e5@16 d5@5", L: "c#5@5 d5@5 ~ e5@21", M: "[f#5@11 e5@8 f#5@2 g5@21 ~ f#5@21]/2",
N: "~@5 e5@5 ~ f#5@21", O: "~@5 c5@5 ~ d5@21", P: "~@5 e5@5 ~ g5@10 f#5@5 ~ e5@5", Q: "d#5@5 e5@5 ~ f#5@21",
R: "~@5 a4@5 ~ a4 g4 a4 ~ g4 f#4@5 g4@11", S: "~@5 a4@5 ~ a4 g4 a4 ~ g4 f#4@5 g4@5 ~ b4@5",
T: "f#4@16 c5@5 b4@5 ~ a4@5", U: "a4@11 g4@21",
V: "[~@11 e4@10 a4@16 f#4@5 ~ d4@5 e4@3 f#4@2 g4@3 f#4@3 g4@10 e4@5 ~ a4@5 e5@8 b5@3 a5@2 g5@3]/3",
W: "f#5@11 ~@5 f#5@16", X: "[g5@5 ~@11 d5@8 g5@19 ~@5 g5@8 c6@8]/2",
Y: "[~@3 c5@2 b4@3 a4@3 b4@32 ~@5 e5@5 f#5@21 ~@6 c5@5 d5@21 ~@6 e5@5 g5@11]/4",
Z: "[f#5@5 e5@5 ~ d#5@5 e5@5 f#5@21 ~@6 a4@5 a4 ~ g4 a4 g4 ~ f#4@5]/2", AA: "g4@11 ~@5 a4@5 a4 ~ g4 a4 g4 ~ f#4@5",
AB: "g4@5 b4@5 ~ f#4@16 c5@5", AC: "[b4@5 a4@5 ~ a4@10 g4@21 ~@11 e4@11]/2", AD: "a4@16 f#4@5 d4@5 ~ e4@2 f#4@3",
AE: "[g4@3 f#4@2 g4@11 e4@5 a4@5 ~ e5@8 b5@2 a5@3 g5@3 f#5@11 ~@5 f#5@16 g5@5 ~@11 d5@8 g5@19 ~@5 g5@8 c6@8 ~@21]/5",
AF: "[~@13 c5@3 b4@3 a4@2 b4@32 ~@11]/2",
})).s("gm_recorder").gain(0.3)
stack(recorder, recorder_2)
More by Johann Sebastian Bach
Air 'on the G string' Orchestral Suite No. 3 in D major BWV 1068D major · 30 bpmAir on the G string (D major)D major · 52 bpmAria variata in A minor BWV 989A major · 76 bpmArioso BWV 156A major · 35 bpmBach - Kyrie from Mass in B Minor - Woodwind QuintetD major · 50 bpmbereite dich zionA minor · 120 bpmBist du bei mirE♭ major · 68 bpmbwv 974 - adagio in d minorF major · 40 bpm
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.