0:00/0:00
// String Quartet KV 157 — W. A. MozartBearb.: JM
// 145 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6365377; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145/4)
// 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 · flute
const flute = note(`<
~@2 A B C D E F G H I J K@2 L M N O P Q R S T U V W V W X Y ~@11 Z AA Z AA AB AC AD AE ~@2 AF AG AH AI AJ AK AL AM AN
~@8 AO AP AQ AR AS AT ~@2 A B C D E F G H I J K@2 L M N O P Q AU AV AW AX AY AZ BA BB BC BD ~@11 BE BF BE BG BH BI BJ
BK ~ BL BM
>`.pickRestart({
A: "f4@3 g4 ab4 ~ ab4 ~", B: "ab4 g4 bb4 ab4 g4@2 ~@2", C: "c5@3 d5 eb5 ~ eb5 ~", D: "eb5@2 d5@2 c5 ~ bb4 ~",
E: "bb4@2 ab4@2 g4 ~ f4 ~", F: "eb4 ~@3", G: "eb5@3 f5 g5 ~ g5 ~", H: "g5 f5 ab5 g5 f5@2 ~@2",
I: "f5@3 g5 ab5 ~ ab5 ~", J: "ab5 g5 bb5 ab5 g5@2 ~@2", K: "bb5@6 g5 ab5 bb5 ~ c6 d6 eb6@2 c6@2",
L: "bb5@6 g5@2 ab5@3 f5 eb5@2 f5@2", M: "g5@2 eb5@2 c5@3 f5 eb5@4 d5@4",
N: "bb5@2 ab5 g5 f5@2 g5@2 ab5@2 g5 f5 eb5@2 f5@2", O: "g5@3 eb5 c5@3 f5 eb5@4 d5@4",
P: "eb5@6 f5 g5 ab5@2 bb5@2 c6@2 ab5@2", Q: "g5@2 f5 ~", R: "d6@8 c6 bb5@3 ab5 g5@3", S: "f5 eb5 d5 eb5 c5@2 ~@2",
T: "c6@8 bb5 a5@3 g5 f5@3", U: "eb5 d5 c5 d5 bb4@2 ~@2", V: "g5@3 bb5 bb5@4 f5@6 d5@2", W: "eb5@3 d5 eb5@2 g5@2 d5@8",
X: "c5 c6@2 bb5", Y: "a5@3 g5 f5 ~ f5 ~ f5@4 ~@4", Z: "bb4@2 d5@2 f4 ~ f4 ~ c5@2 eb5@2 f4 ~ f4 ~",
AA: "d5@2 f5@2 f4 ~ f4 ~ f5@2 eb5 d5 eb5@2 c5@2", AB: "~@3 d6", AC: "eb6 d6 ~@2", AD: "~@3 d5", AE: "eb5 d5 ~@2",
AF: "~ bb5!2 ~", AG: "bb4@2 d5@2 f4 ~ f4 ~ d5@2 f5@2 f4 ~ f4 ~", AH: "f5@2 bb5@2 d5 ~ d5 ~ c6 ab5 f5 ~ ab5 f5 d5 ~",
AI: "eb5@2 g5@2 bb4 ~ bb4 ~ g5@2 bb5@2 eb5 ~ eb5 ~", AJ: "bb5@2 eb6@2 g5 ~ g5 ~ eb6 bb5 g5 ~ bb5 g5 eb5 ~",
AK: "d5@2 f5@2 bb4 ~ bb4 ~ f5@2 ab5@2 d5 ~ d5 ~", AL: "ab5@2 d6@2 f5 ~ f5 ~ bb5 ab5 g5 ~ f5 eb5 d5 ~",
AM: "g5@2 c6@2 eb5 ~ eb5 ~ ab5 g5 f5 ~ eb5 d5 c5 ~", AN: "b4@2 g5 ~ g5 ~@3", AO: "gb5@2 f5 eb5",
AP: "f5@3 bb5 bb5@2 g5@2 f5@3 bb5 bb5@2 f5@2", AQ: "d5 f5 bb5 d6 ~ eb6 c6 ab5", AR: "~ g5 bb5 d6 ~ c6 ab5 f5",
AS: "~@2 eb5@2 g5@2 bb5@2 ab5@3 bb5 ab5@2 g5@2", AT: "ab5 f5 d5 bb4 a4 ab4 f4 d4", AU: "db6@8 c6 bb5@3 ab5 g5@3",
AV: "g5 ab5 e5 f5 f4@2 ~@2", AW: "c6@8 bb5 ab5@3 g5 f5@3", AX: "f5 g5 d5 eb5 eb4@2 ~@2",
AY: "c6@3 eb6 [eb6,f6]!4 bb5@6 g5@2", AZ: "ab5 g5 ab5 c6 g5@4", BA: "c5@3 eb5 [eb5,f5]!4 bb4@6 g4@2",
BB: "ab4 g4 ab4 c5 g4@4", BC: "f4 f5@2 eb5", BD: "d5@3 c5 bb4 ~ bb4 ~ bb4@4 ~@4",
BE: "eb5@2 g5@2 bb4 ~ bb4 ~ f5@2 ab5@2 bb4 ~ bb4 ~", BF: "g5@2 bb5@2 eb5 ~ eb5 ~ bb5@2 ab5 g5 ab5@2 f5 d5",
BG: "g5@2 bb5@2 bb4 ~ bb4 ~ bb5@2 ab5 g5 ab5@2 f5 d5", BH: "eb5!2 f5 g5", BI: "ab5 g5 ~@2", BJ: "~@3 g4",
BK: "ab4 g4 ~@2", BL: "~@5 eb4 f4 g4", BM: "eb4@2 eb6 ~ eb6@2 ~@2",
})).s("gm_flute").gain(0.35).pan(0.4)
// other · flute · soft notes
const flute_soft = note(`<
A B ~@28 C@2 D@4 E F G@2 H ~@4 I J K L M@2 N ~@8 O P Q@2 R@4 ~@6 A B ~@28 S@2 R@4 T U V@2 W ~@5 X Y Z AA AB ~
>`.pickRestart({
A: "eb4@3 f4 g4 ~ g4 ~", B: "g4 f4 ab4 g4 f4@2 ~@2", C: "bb5 ~ bb5 ~@3 c6 a5 bb5 ~ f5 ~ bb5 ~ d6 ~",
D: "[f6@38 ~@2 eb6@15 ~ d6@8]/4", E: "c6@6 eb6 c6 bb5@4 a5@4", F: "bb5@2 f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~",
G: "[f5@8 eb5@15 ~ d5@8]/2", H: "c5@6 eb5 g5 bb4@4 a4@4", I: "bb4 bb5 c6 ~", J: "~@8 d6 c6 bb5@2 c6@2 d6@2",
K: "bb5 bb4 c5 ~", L: "~@8 d5 c5 bb4@2 c5@2 d5@2", M: "bb4@8 d5 c5 bb4@2 c5@2 d5@2", N: "bb4 ~@3",
O: "c5 ~ c5 ~@3 d5 b4 c5 ~ g4 ~ c5 ~ eb5 ~", P: "c5 ~ c5 ~@3 d5 b4 c5 ~ c5 ~ eb5 ~ g5 ~", Q: "[c6@15 ~]/2",
R: "[bb5@38 ~@2 ab5@15 ~ g5@8]/4", S: "eb5 ~ eb5 ~@3 f5 d5 eb5 ~ bb4 ~ eb5 ~ g5 ~", T: "f5@6 ab5 c6 eb5@4 d5@4",
U: "eb5@2 bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~", V: "[bb4@8 ab4@15 ~ g4@8]/2", W: "f4@6 ab4 c5 eb5@4 d5@4",
X: "~@8 g5 f5 eb5@2 f5@2 g5@2", Y: "eb5 eb4 f4 ~", Z: "~@8 g4 f4 eb4@2 f4@2 g4@2", AA: "eb4@8 g4 f4 eb4@2 f4@2 g4@2",
AB: "eb4@8 g4 f4 ~@6",
})).s("gm_flute").gain(0.2).pan(0.4)
// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
~ A B@2 C D@2 E F@2 G H I J K L M L N O P Q R S T U V U W X ~@2 Y Z AA AB AC AD AE@3 AF AG AH AI AJ AK AL AM ~@2 AN AO
AP AQ AR AS AT AU AV ~@2 AW AX AY AZ BA BB BC BD BE BF BG BH ~ A B@2 C D@2 E F@2 BI H I J BJ L M L BK BL BM BN BO ~ BP
BQ BR BS BT BU ~@2 BV BW BX BY BZ CA CB@3 CC CD CE CF CG CH CI CJ ~ CK CL
>`.pickRestart({
A: "~@7 d4", B: "[bb3@13 g4 bb4 g4]/2", C: "eb4@2 c4 f4", D: "bb3 ~", E: "~@2 g3 ~ ab3 ~ bb3 ~ c4 ~ d4 ~ eb4 ~ f4 ~",
F: "[g4 ~ bb4@4 bb4@4 bb4@4 bb4@4 bb4@4 bb4@4 bb4@2 a4@2 bb4@2]/2", G: "bb3 ~ bb4@4 bb4@4 bb4@4 bb4@2",
H: "bb4 bb4@2 bb4@2 eb5 d5 eb5", I: "eb4@2 ~@3 eb4 d4 eb4", J: "eb4@2 ~@3 eb5 d5 eb5",
K: "eb4 ~ bb4@2 ab4@2 g4@2 ~@2 ab4@2 g4@2 f4@2", L: "eb4@2 ~ c4 bb3@4", M: "~ bb3 ab3 g3 ~ ab3 g3 f3",
N: "bb3 ~ bb3 ~ g3 ~ g3 ~ eb4@2 g4@2 ab4@2 c5@2", O: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb3@2 bb4@2 f4@2 d4@2", P: "bb3 ~@3",
Q: "~ c4 g4 eb4", R: "f4 ~@3", S: "~ bb3 f4 d4", T: "eb4!3 g4 d4@4", U: "g4@3 bb4 bb4@4 f4@6 d4@2",
V: "eb4!3 f4 d4@4", W: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ c5 ~ c5 ~", X: "c5 a4 c4 ~",
Y: "d4 ~ d4 ~@3 eb4 c4 d4 ~ d4 ~ f4 ~ a4 ~", Z: "bb4 ~ bb4 ~@3 c5 a4 bb4 ~ f4 ~ d5 ~ c5 ~",
AA: "b4@2 d5@2 eb5 d5 c5 bb4", AB: "a4@2 c5@2 d5 c5 bb4 a4", AC: "g4 ~ g4 ~ g4 ~ g4 ~ f4 ~ f4 ~ eb4 ~ eb4 ~",
AD: "d4 ~@3", AE: "[d4@2 g4@4 c4@4 f4@4 bb3@5 g3 f3@4]/3", AF: "f3 ~@3 f4 ~@3", AG: "f4 ~@3 c4@4",
AH: "bb3 ~@3 eb4 ~@3", AI: "d4 ~@3 c4@4", AJ: "~@3 bb4", AK: "g4 f4 ~@2", AL: "~@3 f4", AM: "f4 ~", AN: "~ f4!2 ~",
AO: "d4 ~@3 f4 ~@3", AP: "bb4 ~@7", AQ: "eb4 ~@3 g4 ~@3", AR: "g4 ~@7", AS: "f4 ~@3 d4 ~@3", AT: "d4 ~@7",
AU: "c5 ~@3 eb4@2 eb4@2", AV: "d4@2 g3 ~ g3 ~@3", AW: "e4 ~ e4 ~@3 g4 e4 f4 ~ f4 ~@3 c5 ab4",
AX: "g4 ~ bb4 ~ e4 ~ g4 ~ f4 ~ g4 ~ f4 ~ eb4 ~", AY: "d4 ~ d4 ~@3 f4 d4 eb4 ~ eb4 ~@3 bb4 g4",
AZ: "f4 ~ ab4 ~ d4 ~ f4 ~ eb4 ~ g4 ~ bb4 ~ g4 ~", BA: "e4 ~ e4 ~@3 g4 e4 ab4@2 g4@2 f4@2 eb4@2",
BB: "d4 ~ d4 ~@3 f4 d4 g4@2 f4@2 eb4@2 d4@2", BC: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
BD: "d4@2 ~ bb4!2 bb3 ~ bb3", BE: "bb3@2 ~ f4 eb4@2 ~ c5", BF: "bb4@2 ~ d4 c4@2 ~ d4", BG: "eb4 ~ bb4!2",
BH: "bb4 ~@3", BI: "d4 ~ bb4@4 bb4@4 bb4@4 bb4@2", BJ: "eb4 bb4 ab4 g4 ~ ab4 g4 f4",
BK: "bb3 ~ bb3 ~ g3 ~ g3 ~ eb4@2 g4@2 ab4@2 c5 ~", BL: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb3@2 ab4@2 g4@2 f4@2",
BM: "e4 ~ e4 ~ e4 ~ e4 ~ db5 ~ db5 ~ db5 ~ db5 ~", BN: "c5 ~ c5 ~ c5 ~ c5 ~ c4 ~ c4 ~ c4 ~ c4 ~",
BO: "f4 ~ f4 ~ f4 ~ f4 ~ d5 ~ d5 ~ d5 ~ d5 ~", BP: "ab4 g4 ab4 c5 g4@4", BQ: "c5@3 eb5 [eb5,f5]!4 bb4@6 g4@2",
BR: "ab4 g4 ab4 c5 g4@2 bb3@2", BS: "c4@3 eb4 [eb4,f4]!4 bb3@6 g4@2", BT: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ f4 ~ f4 ~",
BU: "f4!2 bb3 ~", BV: "g3 ~ g3 ~@3 ab3 f3 g3@4 bb3 ~ d4 ~", BW: "eb4 ~ eb4 ~@3 f4 d4 eb4 ~ bb3 ~ g4 ~ f4 ~",
BX: "e4@2 g4@2 ab4 g4 f4 eb4", BY: "d4@2 f4@2 g4 f4 eb4 d4", BZ: "eb4@6 c4@2 bb3 ~ g4@2 f4@2 ab4@2", CA: "g4 ~@3",
CB: "[g3 c4@2 f3@2 bb3@2 eb4@2 c4 bb3 ab3]/3", CC: "g3 ~@3 ab3 ~@3", CD: "g3 ~@3 c4@2 f4@2", CE: "eb4 ~ ab4 ~",
CF: "g4 ~ f4@2", CG: "eb4 g4 ab4 bb4", CH: "bb4 ~", CI: "~@3 bb3", CJ: "c4 bb3 ~@2", CK: "~@5 g3 ab3 bb3",
CL: "g3@2 bb3 ~ eb4@2 ~@2",
})).s("gm_clarinet").gain(0.33).pan(0.6)
// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<A@2 ~@28 B@2 ~@13 C D E F G H I ~@8 J@2 ~@12 A@2 ~@28 K@2 ~@14 L M N O P ~>".pickRestart({
A: "[bb3@13 d4 f4 ~]/2", B: "~ c5 bb4 ~", C: "bb3 f4 a4 ~", D: "~@8 f4 eb4 d4@2 eb4@2 f4@2", E: "d4!2 eb4 ~",
F: "~ a3", G: "bb3 a4", H: "bb4 a3", I: "bb3 ~@3", J: "~ d4 c4 ~", K: "~ f4 eb4 ~", L: "~ d4", M: "eb4 g3 ab3 ~",
N: "~@8 bb3 ab3 g3@2 ab3@2 bb3@2", O: "g3@8 bb3 ab3 g3@2 ab3@2 bb3@2", P: "g3@8 bb3 ab3 ~@6",
})).s("gm_clarinet").gain(0.19).pan(0.6)
// other · bassoon
const bassoon = note(`<
~@2 A B C D A E F G H I J K L M N O P Q D R S D T U T U V W ~@4 X Y Z AA X Y Z AB AC AD AE AF AG AF AG ~@2 AH AI AJ AI
AJ AI AK AL AM ~@7 AN C D@2 AO AP AQ ~@2 A B C D A AR F G H I J K L M N O AS Q D AT@2 AU AV AW AV AW AX AY ~@2 AZ@2 BA
BB BC BD BA BB BE BF BG T BH BI BJ BK BL ~@2 BM
>`.pickRestart({
A: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~", B: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3@4 ~@4",
C: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~", D: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~",
E: "eb3 ~ eb3 ~ f3 ~ g3 ~ ab3 ~ bb3 ~ c4 ~ d4 ~", F: "eb4 bb3 g3 eb3", G: "bb3 bb2 ~@2", H: "bb3 f3 d3 bb2",
I: "eb3 eb4 ~@2", J: "~ eb4 d4 eb4 eb3@2 ~@2", K: "~ eb3 d3 eb3 eb3@2 ~@2", L: "eb3 ~ bb3 ~", M: "eb4 ab3 bb3 bb2",
N: "eb3 ~ bb2 ~", O: "eb3 ab3 bb2 ab3", P: "g3 ~ g3 ~ eb3 ~ eb3 ~ c4@2 bb3@2 ab3@2 f3@2",
Q: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb2@4 ~@4", R: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
S: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~", T: "eb3 ~ d3 ~", U: "g3 ~ f3 ~",
V: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ e3 ~ e3 ~", W: "f3!3 ~", X: "g3 ~ g3 ~@3 b3 g3 c4@2 bb3@2 a3@2 g3@2",
Y: "f3 ~ f3 ~@3 a3 f3 bb3@2 a3@2 g3@2 f3@2", Z: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ f3 ~ f3 ~ f3 ~ f3 ~", AA: "bb3 ~@3",
AB: "bb3 ~@3 a3 ~@3", AC: "bb3 ~@3 eb3@2 f3@2", AD: "bb2 ~@3 a3 ~@3", AE: "bb2 ~@3 eb3@2 f3@2", AF: "~@3 bb3",
AG: "a3 bb3 ~@2", AH: "~ bb3 bb2 ~", AI: "bb3 ~@3 bb3 ~@3", AJ: "bb3 ~@7", AK: "b3 ~@7", AL: "eb4 ~@3 c3@2 c3@2",
AM: "g3@2 g3 ~ g3 ~@3", AN: "~@5 d4 c4 bb3", AO: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~",
AP: "g3 ~ g3 ~ g3 ~ g3 ~ f3@2 eb3@2 f3@2 eb3@2", AQ: "f3 ~@3", AR: "eb3@2 eb3 ~ f3 ~ g3 ~ ab3 ~ bb3 ~ c4 ~ d4 ~",
AS: "g3 ~ g3 ~ eb3 ~ eb3 ~ c4@2 bb3@2 ab3@2 f3 ~", AT: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~",
AU: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~", AV: "ab3 ~ g3 ~", AW: "c4 ~ bb3 ~",
AX: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ a3 ~ a3 ~", AY: "bb3 bb2!2 ~", AZ: "eb3 bb2 eb3 ~",
BA: "c4 ~ c4 ~@3 e4 c4 f4@2 eb4@2 d4@2 c4@2", BB: "bb3 ~ bb3 ~@3 d4 bb3 eb4@2 d4@2 c4@2 bb3@2",
BC: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~", BD: "eb3 ~@3",
BE: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~", BF: "eb3 ~@3 d3 ~@3", BG: "eb3 ~@3 ab3@2 bb3@2",
BH: "eb3 ~ ab3 bb3", BI: "eb3 g4 f4 eb4", BJ: "d4 eb4 ~@2", BK: "~@3 eb3", BL: "d3 eb3 ~@2",
BM: "~@2 eb3 ~ eb3@2 ~@2",
})).s("gm_bassoon").gain(0.3).pan(0.6)
// other · bassoon · soft notes
const bassoon_soft = note(`<
A B ~@28 C@2 D@2 ~@11 E F E F G@3 ~@8 H@2 I J K L M N ~@6 A B ~@28 O@2 ~@14 P Q R S@3
>`.pickRestart({
A: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~", B: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2@4 ~@4", C: "~ f3 bb2 ~",
D: "bb3 f3 bb2 ~", E: "bb2 d4 c4 ~", F: "~@2 f3!2", G: "[bb2@3 ~]/3", H: "~ g3 c3 ~", I: "~ c4 ab3 f3",
J: "c3 c4 f3 ab3", K: "bb2 bb3 g3 eb3", L: "bb2 bb3 eb3 g3", M: "c4 ~ c4 ~@3 e4 c4 f4@2 eb4@2 d4@2 c4@2",
N: "bb3 ~ bb3 ~@3 d4 bb3 eb4@2 ~@6", O: "~ bb3 eb3 ~", P: "~@2 bb3 bb2", Q: "eb3 g3 f3 ~", R: "~@2 bb2!2",
S: "[eb3@3 ~]/3",
})).s("gm_bassoon").gain(0.2).pan(0.6)
stack(flute, flute_soft, clarinet, clarinet_soft, bassoon, bassoon_soft)
More by W. A. MozartBearb.: JM
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.