0:00/0:00
// Things Can Only Get Better — D:Ream
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 131 bars on a 16-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.
// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
~@33 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A
B A B A B A B A B C D C D C D C D C D A B A B A B A B ~@8
>`.pickRestart({
A: "db1 d1 eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ db1 d1", B: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~",
C: "eb1@5 ~ eb1@2 bb1@3 ~ bb1@4", D: "eb1@3 ~@3 eb1@2 bb1@2 a1 ~ bb1@3 ~",
})).s("gm_synth_bass_1").gain(0.57)
// chords · piano · "A.PIANO 2"
const piano = note(`<
~ A@2 B@2 C@2 D@2 E@4 F@2 G@2 H@4 I J K@2 L@2 M N@3 O P ~@10 Q@2 R@2 S@2 T U V@2 W@2 Q@2 R@2 X@2 Y@2 Q@2 R@2 X@2 Y@2
Z@2 AA@2 AB@2 AC AD Q@2 R@2 S@2 T U V@2 AE@2 Q@2 R@2 X@2 Y@2 Q@2 R@2 X@2 ~@2 AF@2 AG@2 AH@2 AI@2 Q@2 R@2 X@2 Y@2 Z@2
AA@2 AJ@2 AK@2
>`.pickRestart({
A: "[eb2,eb3,eb4]/2", B: "[bb2,bb3,d4]/2", C: "[db2,db3,db4]/2", D: "[ab1,ab2,ab3,eb4]/2",
E: "[[eb4,g4,bb4]@6 [f3,f4,ab4]@2 eb4@6 [g2,f4] [ab2,eb4] f4@7 [c4,eb4] [bb3,d4]@8, eb2@31 ~@33, ~ [eb3,g4] bb2@2, ~@14 bb3@9 ~@9]/4", // Eb Fm G7 Ab5 Cm Bb Eb
F: "[db3@3 db3 f3@4, [db2,db4], ~@12 gb3 ~@3 db3@7 ~@9]/2", // Db
G: "[~@13 c4 ~ f4, ab1, ab2@29 ~@3, [ab3,eb4]@27 ~ eb4@4, ~@24 bb3@7 ~]/2", // Ab5
H: "[eb3@10 ~@2 [eb4,ab4] [eb4,g4]@3 bb2@8 bb2@3 ~ [eb4,g4] ~ bb2!2, eb2@17 ~@15, bb3@27 ~@5 bb3@27 ~@5, eb4@24 ~@8 [d4,f4]@25 ~ [d4,f4]@6, ~@20 eb3@13 ~@21 bb2@6 ~@4]/4", // Ab5 Eb Dm
I: "[f3,ab3,db4]@3 [f3,ab3]@3 [f3,ab3]@2, db3, ~@3 db4@5", // Db Fm
J: "[db3,db4] [db3,bb3,db4,gb4] [db3,ab3,f4] [gb2,gb3,db4,gb4], f3@11 ~@5, ab3@7 ~ db4@2 ~@6", // Db Gb Db Gb5
K: "[ab2@2 ~@11 f4@3, [ab3,c4,eb4]@3 ab3@12 ~, ~@2 ab2@3 ab2@11, ~@3 [c4,eb4]@3 [c4,eb4]@4 c4@2 eb4@2 ~@2, ~@8 bb3@5 ~@3]/2", // Ab Cm
L: "[[eb4,g4,bb4]@5 ~ [eb4,g4,bb4]@5 ~ [eb4,ab4,c5]@4 [eb4,g4,bb4]@6 [c4,ab4]@5 ~ [bb3,g4]@4, eb2, ~@22 eb4@9 ~]/2", // Eb Ab Eb Fm Eb
M: "[bb3,d4,f4]@3 [bb3,d4,f4]@2 ~ [c4,eb4,g4]@2, bb2@10 bb2@5 ~", // Bb Cm
N: "[bb2@6 bb2@2 bb2@2 bb2@2 [bb3,d4] ~ [c4,e4] ~ [db4,f4]@6 [db4,f4]@8 db3@4 ~@2 [db4,f4]@4 gb4@2 f4@6, f4@13 c3@2 ab3@6 ~ ab3@18 ~@8, [bb3,d4]@12 b2@2 ~ db3@15 [db4,f4]@6 ~@12, ~@17 db3@3 [db3,ab3,db4]@4]/3", // Bb C Db Bb Db Db5
O: "ab2@3 ~@3 [c4,eb4,ab4]@4 ~@2 [c4,eb4,ab4]@4, [c4,eb4,ab4]@3 ~@5, ~@4 ab2@5 ~ ab2@5 ~", // Ab
P: "[c4,eb4,ab4]@4 [c4,eb4,ab4]@3 ~ [eb4,ab4] ~ [c4,eb4,ab4]@6, ab2, ~@4 c4 ~@3", // Ab Ab5 Ab
Q: "[[bb2,eb3]@23 ~ [bb2,eb3]@7 ~]/2", R: "[[bb2,d3]@23 ~ [bb2,d3]@7 ~]/2", S: "[[c3,f3]@23 ~ [c3,f3]@7 ~]/2",
T: "[eb3,ab3]@15 ~", U: "[f3,bb3]",
V: "[eb2@2 [eb3,bb3]@2 ~ [eb3,bb3]@2 ~ [eb3,bb3]@2 ~ [eb3,bb3]@2 ~ [eb3,bb3]@2 [eb3,bb3,db4]@3 [eb2,eb3,bb3,db4]@2 ~ [eb3,bb3,db4]@2 ~@2 db4@2 [bb3,c4]@2 bb3@2, ~@4 eb2@6 eb2@3 eb2@5 ~@3 eb2@2 ~ eb2@8, ~@14 c4 ~@10 eb3@7, ~@26 bb3 ~@5]/2", // Eb5 Eb7 Bbsus2
W: "[~@2 [eb3,bb3]@2 ~ bb3@2 ~ [eb3,bb3]@2 ~ [eb3,bb3]@2 ~ [eb3,bb3,c4] ~ [eb3,bb3,db4]@3 ~ eb3@2 [eb3,bb3,db4]@2 ~ [eb3,bb3,db4]@2 ~ [eb3,c4]@2 bb3 ~, eb2@4 eb2@3 eb2@2 ~ eb2@3 eb2@5 ~ [eb2,db4]@3 eb2@3 ~@2 eb2@4 ~, ~@5 eb3 ~@14 bb3 ~@7 bb3 ~@3]/2", // Eb5 Cm7 Eb7 Cm Eb7
X: "[[db3,f3]@23 ~ [db3,f3]@7 ~]/2", Y: "[[eb3,ab3]@23 ~ [eb3,ab3]@7 ~]/2",
Z: "[[eb2,eb3,g3]@23 ~ [eb3,g3]@4 [eb3,bb3]@4, ~@3 eb2]/2", AA: "[[bb1,d3,f3]@6 [d3,f3] [d3,bb3], ~@3 bb1]/2",
AB: "[[db2,db3,f3]@6 [db3,f3] [db3,ab3], ~@3 db2]/2", AC: "[ab2,c3,eb3,ab3]", AD: "[bb2,d3,f3,bb3]",
AE: "[~@2 [eb3,bb3]@2 ~ bb3@2 ~ [eb3,bb3]@2 ~ [eb3,bb3]@2 ~ [eb3,bb3,c4] ~ [eb3,bb3,db4]@3 ~ eb3@2 [eb3,bb3,db4]@2 ~ [eb3,bb3,db4]@2 ~ [eb3,c4]@2 bb3 ~, eb2@4 eb2@3 eb2@2 ~ eb2@3 eb2@5 ~ [eb2,db4]@3 eb2@3 ~@2 eb2@5, ~@5 eb3 ~@14 bb3 ~@7 bb3 ~@3]/2", // Eb5 Cm7 Eb7 Cm Eb7
AF: "~@4 [g4,bb4] ~@7 [g4,bb4] ~@3", AG: "~@4 [f4,bb4] ~@7 [f4,bb4] ~@3", AH: "~@4 [db4,ab4] ~@7 [db4,ab4] ~@3",
AI: "~@4 [eb4,ab4] ~@7 [eb4,ab4] ~@3", // Ab5
AJ: "[[db2,db3,f3]@24 [db3,f3,ab3]@3 [db3,f3,ab3]@2 [db3,f3,ab3]@3, ~@3 db2]/2", AK: "[ab2,c3,eb3,ab3]/2",
})).s("gm_piano").gain(0.35).pan(0.6)
// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
~@35 A@2 B@5 C A@2 B@5 C D@2 ~@2 A@2 E@2 F@6 E@2 G@4 ~@8 H@4 I@3 J D@2 ~@2 A@2 E@2 F@6 E@2 G@4 ~@8 A@2 E@2 F@6 E@2 K@2
L@2
>`.pickRestart({
A: "[eb4,g4]/2", B: "[d4@2 ~@2 c5, f4@4 ~, ~@2 ab4@3]/5", C: "[f4,bb4]", D: "[g4,eb5]/2", E: "[d4,f4]/2",
F: "[db4 ~ g4, ab4@2 ~, ~ eb4@2]/6", G: "[db4 eb4, ab4]/4", H: "[[eb4,eb5] [d4,d5], bb4]/4",
I: "[[f4,f5]@2 [ab3,eb5], c5]/3", J: "[bb3,d5,f5]", K: "[db4,ab4]/2", L: "eb4/2",
})).s("gm_synth_strings_1").gain(0.24).pan(0.4)
// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@9 A@8 B@8 C@8 ~@20 D@2 ~@16 E@7 F ~@10 D@2 ~@32 G@6 H@2>".pickRestart({
A: "[[g5,eb6] d6 db6 [eb5,c6], bb5 ab5, ~ f5@2 ~]/8", // Cm
B: "[[eb4,g5,eb6] [bb3,d6] [db4,db6] [ab3,eb5,c6], bb5 ab5, ~ f5@2 ~]/8", // Eb Bb Db Ab
C: "[[eb4,g5,eb6]@2 [bb3,d6]@2 ~ f6 [ab3,eb5,c6]@2, bb5 ab5, ~ f5@2 ~, ~@2 [db4,db6] ~]/8", // Eb Bb Ab Db
D: "[[eb5,bb5,eb6]@31 ~]/2", E: "[[g5,eb6]@2 d6@2 db6@2 [eb5,c6], bb5@4 ab5@3, ~@2 f5@4 ~]/7", F: "[f5,bb5,d6]",
G: "[[eb4,g5,eb6] [bb3,d6] [db4,ab5,db6], bb5@2 ~, ~ f5@2]/6", H: "[ab3,eb5,c6]/2",
})).s("gm_rock_organ").gain(0.2)
// chords · brass section · "BRASS 1"
const brass_section = note(`<
~@55 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D E ~@20 A@2 B@2 C@2 D@2 A@2 B@2 C@2 ~@2 F G H I J K L M A@2 B@2 C@2 D@2 ~@8
>`.pickRestart({
A: "[g4,bb4]@7 ~ [g4,bb4]!2 ~@2 [g4,bb4]!2 ~@2", B: "[f4,bb4]@7 ~ [f4,bb4]!2 ~@2 [f4,bb4]!2 ~@2",
C: "[f4,ab4]@7 ~ [f4,ab4]!2 ~@2 [f4,ab4]!2 ~@2", D: "[eb4,ab4]@7 ~ [eb4,ab4]!2 ~@2 [eb4,ab4]!2 ~@2",
E: "[eb4,ab4]@7 ~ [eb4,ab4]!2 ~ [eb4,ab4]!2 ~ [eb4,ab4] ~", F: "~@2 [g4,bb4] ~ [g4,bb4] ~@5 [g4,bb4] ~ [g4,bb4] ~@3",
G: "~@2 [g4,bb4] ~ [g4,bb4] ~ bb4 ~@3 [g4,bb4] ~ [g4,bb4] ~@3", // Gm
H: "~@2 [f4,bb4] ~ [f4,bb4] ~@5 [f4,bb4] ~ [f4,bb4] ~@3", // Bb5
I: "~@2 [f4,bb4] ~ [f4,bb4] ~ f4 ~@3 [f4,bb4] ~ [f4,bb4] bb4 [f4,bb4] ~", // Bb5
J: "~@2 [f4,ab4] ~ [f4,ab4] ~@5 [f4,ab4] ~ [f4,ab4] ~@3", // Fm
K: "~@2 [f4,ab4] ~ [f4,ab4] ~ f4 ~@3 [f4,ab4] ~ [f4,ab4] ~@3", L: "[ab4,c5]",
M: "~@2 [eb4,ab4] ~ [eb4,ab4] ~@3 [eb4,ab4]@2 ~@2 [eb4,ab4]@3 ~", // Ab5
})).s("gm_brass_section").gain(0.3).pan(0.7)
// chords · brass section · "BRASS 1" · soft notes
const brass_section_soft = note("<~@107 A B C D E F ~ G ~@16>".pickRestart({
A: "~@6 [g4,bb4] ~@7 [g4,bb4] ~", B: "~@6 g4 ~@7 [g4,bb4] ~", C: "~@6 [f4,bb4] ~@7 [f4,bb4] ~",
D: "~@6 bb4 ~@6 f4 ~@2", E: "~@6 [f4,ab4] ~@7 [f4,ab4] ~", F: "~@6 ab4 ~@7 [f4,ab4] ~",
G: "~@6 [eb4,ab4] ~@3 [eb4,ab4] ~@5", // Ab5
})).s("gm_brass_section").gain(0.18).pan(0.7)
// other · baritone sax · "BARITONSAX"
const baritone_sax = note(`<
~@33 A@3 B C D E F G D H I J K L M N O P@4 H I J K L M Q R H I J K L M Q R ~@8 H I J K L M N O P@4 H I J K L M Q R H I
J K L M ~@2 S T S T S T S T H I J K L M Q R ~@8
>`.pickRestart({
A: "eb2 ~@5 eb2 ~@2 eb2 ~@2 eb2 ~ db2@2", B: "eb2 ~@5 eb2 ~@2 eb2 ~@2 eb2 ~ eb2@2",
C: "bb2 ~@5 bb2 ~@2 bb2 ~@2 bb2 ~ f2@2", D: "bb2 ~@5 bb2 ~@2 bb2 ~@2 bb2 ~ bb2@2",
E: "f2 ~@5 f2 ~@2 f2 ~@2 f2 ~ eb2@2", F: "f2 ~@5 f2 ~@2 f2 ~@2 f2 ~ f2@2", G: "ab2 ~@5 ab2 ~@2 ab2 ~@2 ab2 ~ ab2@2",
H: "eb2 ~ eb3 ~@2 eb3 eb2 ~ eb3 eb2 ~ eb3 eb2 ~ db2@2", I: "eb2 ~ eb3 ~@2 eb3 eb2 ~ eb3 eb2 ~ eb3 eb2 ~ eb2@2",
J: "bb2 ~ eb3 ~@2 eb3 bb2 ~ eb3 bb2 ~ eb3 bb2 ~ f2@2, ~@14 eb3 ~",
K: "bb2 ~ eb3 ~@2 eb3 bb2 ~ eb3 bb2 ~ eb3 bb2 ~ bb2@2",
L: "f2 ~ eb3 ~@2 eb3 f2 ~ eb3 f2 ~ eb3 f2 ~ eb2@2, ~@14 eb3 ~",
M: "f2 ~ eb3 ~@2 eb3 f2 ~ eb3 f2 ~ eb3 f2 ~ f2@2, ~@14 eb3 ~", N: "ab2 ~ eb3 ~@2 eb3 ab2 ~ eb3 ab2 ~ eb3 ab2 ~ ab2@2",
O: "bb2 ~ eb3 ~@2 eb3 bb2 ~ eb3 bb2 ~ eb3 bb2 ~ bb2@2, ~@14 eb3 ~",
P: "eb2 ~ eb3 ~@2 eb3 eb2 ~ eb3 eb2 ~ eb3 eb2 ~ db2@2, ~@14 eb3 ~",
Q: "ab2 ~ eb3 ~@2 eb3 ab2 ~ eb3 ab2 ~ eb3 ab2 ~ gb2@2",
R: "ab2 ~ eb3 ~@2 eb3 ab2 ~ eb3 ab2 ~ eb3 ab2 ~ ab2@2, ~@14 eb3 ~",
S: "~@2 bb2 a2 bb2 a2 bb2 a2 bb2@2 g2@2 ~@2 bb2 a2", T: "bb2 a2 bb2 a2 bb2@2 g2@2 ~@8",
})).s("gm_baritone_sax").gain(0.44).pan(0.4)
// drums · kick
const kick = s("bd").struct("<~@33 A ~ B@16 ~@4 B@14 A ~ A ~ A ~ A ~ A ~ B@8 ~@4 B@14 C@10 B@8 A ~@7>".pickRestart({
A: "x", B: "x!4", C: "~@3 x!2 ~@3",
})).gain(0.75)
// drums · rim
const rim = s("rim").struct(`<
~@35 A@16 ~@4 A@8 B@8 ~ C ~ C ~ C ~@2 A@8 ~@4 A@8 B D@2 B D B E F ~@8 B@8 ~@8
>`.pickRestart({
A: "~ x ~ x", B: "~ x!3 ~ x!2 ~", C: "~@3 x", D: "~ x!3 ~@2 x ~", E: "~ x ~@3 x ~ x", F: "~@3 x ~ x ~ x",
})).gain(0.6)
// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@63 A@8 ~@28 A B@2 A B A C D ~@8 A@8 ~@8>".pickRestart({
A: "~@7 x ~@8", B: "~@7 x ~@2 x ~@5", C: "~@6 x!2 ~@7 x", D: "~@2 x ~@4 x ~@7 x",
})).gain(0.3)
// drums · clap
const clap = s("cp").struct("<~@43 [~ x ~ x]!28 ~@8 [~ x ~ x]!26 ~@10 [~ x ~ x]!8 ~@8>").gain(0.45)
// drums · hihat
const hihat = s("hh").struct("<~@33 A@10 ~@8 A@20 ~@8 A@28 ~@8 A@8 ~@8>".pickRestart({
A: "~@2 x!3 ~ x!2 ~@2 x!3 ~ x!2",
})).gain(0.38)
// drums · open hat
const open_hat = s("oh").struct("<~@33 [x!2]!38 ~@8 [x!2]!44 ~@8>").gain(0.3)
// drums · crash
const crash = s("cr").struct(`<
~@33 A ~ A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@7 A ~@5 A ~ A ~@7 A ~@7 A ~@5 A ~
>`.pickRestart({
A: "x",
})).gain(0.45)
// drums · tambourine
const tambourine = s("tb").struct("<~@17 A ~@15 A ~@9 B@28 C@2 D C D C D C B@44 ~@8>".pickRestart({
A: "x", B: "x!2 ~ x!3 ~ x", C: "~@4 x!2 ~@2", D: "x ~@3 x!2 ~@2",
})).gain(0.3)
// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@16 [~@6 x!10] [~ x!11 ~@4] ~@14 [~@6 x!10] ~@98>").gain(0.08)
// drums · congas
const congas = s("conga:13").struct("<~@33 A@21 B A@16 ~@8 A@11 B A@32 ~@8>".pickRestart({
A: "~ x ~@3 x ~@2", B: "~ x ~@6",
})).gain(0.96)
// drums · congas
const congas_2 = s("conga:18").struct("<~@33 A@21 B A@16 C D E D C D E D A@11 B A@32 ~@8>".pickRestart({
A: "x ~@5 x!3 ~@5 x!2", B: "x", C: "~@7 x", D: "x ~@2 x ~@2 x ~@9", E: "~@14 x!2",
})).gain(0.96)
// drums · congas
const congas_3 = s("conga:33").struct("<~@72 A ~ A ~ A ~ A ~@52>".pickRestart({
A: "~@8 x ~@2 x ~@2 x ~",
})).gain(0.96)
// drums · ht
const ht = s("ht").struct("<~@78 [x ~ x!14] ~@52>").gain(0.38)
// drums · mt
const mt = s("mt").struct("<~@54 [~@7 x!9] ~@35 [~@2 x!14] ~@40>").gain(0.45)
// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
~@33 A B A B C A ~ D E ~ A F G H ~ I E ~ A F G A@2 F G H ~ I E ~ A F G H ~ I E ~ A F G H ~ I E ~ A F G H ~ I E ~ A F G
A@2 F G H ~ I E ~ A F G H ~ I E ~ A F G H ~ I E ~ A F G H ~ I E ~ A F G H ~ I ~@2
>`.pickRestart({
A: "x!16", B: "x!4 ~@12", C: "~@9 x!7", D: "~@5 x!11", E: "x!9 ~@7", F: "x!5 ~@11", G: "~@10 x!6", H: "x!15 ~",
I: "~@4 x!12",
})).gain(0.76)
// drums · shaker
const shaker = s("sh").struct(`<
~@34 A ~ A B ~ C D E C ~ F G H C I E C ~ F G ~@2 F G H C I E C ~ F G H C I E C ~ F G H C I E C ~ F G H C I E C ~ F G
~@2 F G H C I E C ~ F G H C I E C ~ F G H C I E C ~ F G H C I E C ~ F G H C I ~@2
>`.pickRestart({
A: "~@4 x!12", B: "x!9 ~@7", C: "x!16", D: "x!5 ~@11", E: "~@9 x!7", F: "~@5 x!11", G: "x!10 ~@6", H: "~@15 x",
I: "x!4 ~@12",
})).gain(0.08)
stack(
bass, piano, synth_strings_1, rock_organ, brass_section, brass_section_soft, baritone_sax, kick, rim, rim_soft, clap,
hihat, open_hat, crash, tambourine, tambourine_soft, congas, congas_2, congas_3, ht, mt, cabasa, shaker
)
More by D:Ream
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.