0:00/0:00
// Beds Are Burning — Midnight Oil
// 120 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 6 Fr Horn 2 -> french horn
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 125 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.
// other · brass section
const brass_section = note("<A B ~@26 C D ~@47 E@2 ~@42 F ~ G@2>".pickRestart({
A: "~@16 [eb3,eb4]@8 ~ gb3@7, ~@3 gb4", B: "[ab3,ab4]@11 ~@21", C: "~@19 eb3@7 [gb3,gb4]@6",
D: "~@2 [ab3,ab4]@11 ~@19", E: "[~@10 [eb3,eb4]@8 [gb3,gb4]@8 [ab3,ab4]@11 ~@27]/2",
F: "~@5 eb3@7 [gb3,gb4]@8 [ab3,ab4]@7 ~@5, ~@4 eb4@9 ~@19", // Gb Ab
G: "[~@3 eb3 eb3@7 [gb3,gb4]@8 [ab3,ab4]@21 ~@24, ~@3 eb4@9 ~@52]/2", // Gb Ab
})).s("gm_brass_section").gain(0.48)
// chords · epiano2
const epiano2 = note("<~@12 A B@2 C@2 D@2 E@2 F@2 G@2 H@2 ~@35 I@6 J@8 ~@49>".pickRestart({
A: "~@26 [eb4,g4,bb4]@3 ~@3", B: "[~@6 [eb4,g4,bb4]@42 ~ [eb4,g4,bb4]@3 ~@5 [g4,bb4,db5]@3 ~@4]/2",
C: "[~@5 [g4,bb4,db5]@41 ~@2 [g4,bb4,db5]@4 ~@4 [eb4,c5]@3 ~@5]/2", // Gdim Cm
D: "[~@4 [eb4,c5]@43 [eb4,c5]@4 ~@4 [eb4,g4,bb4]@3 ~@6]/2", E: "[~@3 [eb4,g4,bb4]@45 ~@6 [eb4,g4,bb4]@4 ~@6]/2",
F: "[~@2 [eb4,g4,bb4]@43 [eb4,g4,bb4]@4 ~@5 db5@3 ~@7, ~@53 [g4,bb4]@3 ~@8]/2", // Eb Gm
G: "[~ [g4,bb4,db5]@43 ~ db5@4 ~@4 [eb4,c5]@3 ~@8, ~@11 [g4,bb4] ~@4]/2", H: "[[eb4,c5]@19 ~@13]/2",
I: "[~@17 [eb4,g4,bb4]@3 ~@9 [eb4,g4,bb4]@43 ~ [eb4,g4,bb4]@3 ~@5 [g4,bb4,db5]@3 ~@9 [g4,db5]@42 [g4,bb4,db5]@4 ~@4 [eb4,c5]@4 ~@9 eb4@36, ~@92 bb4@42 ~@21 c5@37]/6", // Eb Gdim Cm
J: "[~@6 [eb4,c5]@4 ~@5 [eb4,g4,bb4]@4 ~@7 [eb4,g4,bb4]@44 ~@8 [eb4,g4,bb4]@4 ~@8 [eb4,g4,bb4]@42 [eb4,g4,bb4]@4 ~@5 [g4,bb4,db5]@3 ~@9 [g4,bb4,db5]@42 ~ [g4,bb4,db5]@4 ~@4 [eb4,c5]@3 ~@9 [eb4,c5]@40]/8", // Cm Eb Gdim Cm
})).s("gm_epiano2").gain(0.38)
// chords · woodblock · Abdim
const woodblock = note(`<
~@121
[~@20 [ab4,d5] ~@3 d5@2 ~@2 d5@2 ~@2, ~@28 ab4 ~@3]
[d5 ~@3 ab4@2 ~@2 d5 ~@3 ab4@2 ~@2 d5 ~@3 [ab4,d5]@2 ~ d5 ~@3 ab4@2 ~@2 d5, ~@4 d5 ~@7 d5 ~@14 d5 ~@4]
~@2
>`).s("gm_woodblock").gain(0.25)
// chords · synth strings 1
const synth_strings_1 = note("<~@30 A@4 B@5 C@8 D@4 ~@28 E@8 F@8 G@7 H@4 I@8 J K@4 L@3 ~@3>".pickRestart({
A: "[~@34 b3@25 ~@5 [bb4,db5]@59 ~@5, ~ bb4@27 ~@100, ~@2 [eb4,gb4]@58 ~ gb4@62 ~@5]/4", // Bbm Ebm
B: "[eb4@30 ~ [b3,eb4]@25 ~@2 db4@3 ~ db4@47 ~ d4@14 ~@2 bb4@27 ~@4 b3@3, gb4@31 f4@32 eb4@17, bb4@24 ~@38 ab4@61 ~ gb4@36]/5", // B
C: "[~@29 db5@58 ~@5 [eb4,gb4]@30 ~ gb4@31 ~ db4@46 ~ d4@12 ~@35 b3@7, ~@24 gb4@63 ~@36 b3@28 ~@4 ab4@59 ~@3 bb4@27 ~@12, ~@26 bb4@61 ~@5 bb4@25 ~@6 eb4@24 ~@8 f4@63 [eb4,gb4]@38]/8", // Ebm
D: "[~@23 [bb4,db5]@27 ~@7 ab4@60 ~@11, ~@19 gb4@32 ~@5 [db4,f4]@61 ~@11]/4", // Bbm Db
E: "[~@57 b3@24 ~@6 [bb4,db5]@58 ~@6 [eb4,gb4]@30 ~ [b3,eb4,gb4]@27 ~@5 [db4,f4,ab4]@42, ~@25 gb4@57 ~@2 gb4@61 ~@111, ~@25 bb4@26 ~@99 bb4@24 ~@82, ~@26 eb4@55 ~@175]/8", // Bbm Ebm B Db
F: "[~@5 [d4,ab4]@14 ~@33 b3@24 ~@7 db5@60 ~@4 [eb4,gb4]@30 ~ [b3,eb4]@26 ~@6 [db4,f4,ab4]@46, ~@20 gb4@57 ~@2 gb4@64 ~@35 gb4@32 ~@46, ~@21 bb4@27 ~@34 bb4@61 ~@4 bb4@25 ~@84, ~@11 eb4@27 ~@90]/8", // Ddim Ebm B Db
G: "[~ d4@13 ~@3 bb4@27 ~@5 b3@23 ~@8 db5@25 ~@6 [db4,f4,ab4]@31 ~ bb4@26 ~@6 b3@24 ~@7 db5@18, ~@16 gb4@57 ~@2 gb4@32 ~@36 [eb4,gb4]@58 ~ gb4@22, ~@17 eb4@55 ~@5 bb4@28 ~@100 bb4@19]/7", // Db Ebm
H: "[~@14 [db4,f4,ab4]@62 ~@2 eb4@29 ~ [b3,eb4]@20, ~@19 gb4@13, ~@39 bb4@13 ~@12]/4", // Db B
I: "[~@11 db5@59 ~@4 bb4@25 ~@7 b3@26 ~@5 db4@48 d4@14 ~@2 [eb4,bb4]@31 ~ b3@23, ~@7 gb4@63 ~@4 gb4@63 f4@64 ~@31 eb4@24, ~@10 bb4@60 ~@4 eb4@53 ~@10 ab4@61 ~@2 gb4@56]/8", // Eb5
J: "~ [bb4,db5]@3, ~@5 gb4@27", // Bbm
K: "[~@8 ab4@29 ~@2 eb5@32 b3@25 ~@6 [bb4,db5]@26, ~@7 [db4,f4]@31 gb4@59 ~@2 gb4@29, ~@39 eb4@57 ~@32, ~@39 bb4@28 ~@61]/4", // Bbm Db
L: "[~@5 [db4,f4,ab4,db5]@61 ~@30]/3", // Db
})).s("gm_synth_strings_1").gain(0.16)
// other · french horn
const french_horn = note("<~@36 A@2 ~@6 B@2 ~@40 C@2 ~@6 D@2 ~@14 E@3 F G@3 H@3 ~@5>".pickRestart({
A: "[~@7 db4@23 ~@2]/2", B: "[~@11 db4@48 ~@5]/2", C: "[~@6 db4@41 ~@17]/2", D: "[~@2 db4@41 ~@21]/2",
E: "[~@25 db4@46 ~@25]/3", F: "~@8 gb4@4 eb4@7 ~ db4@12", G: "[~@8 bb4@4 ab4@7 gb4@20 eb4@7 db4@25 ~@25]/3",
H: "[~@6 gb4@4 eb4@8 db4@19 ~ bb4@3 ab4@9 gb4@20 ~@26]/3",
})).s("gm_french_horn").gain(0.27)
// chords · trumpet
const trumpet = note("<~@50 A@5 ~@70>".pickRestart({
A: "[~@27 [bb3,eb4] ~ [bb3,eb4] ~ eb4@111 ~@18, ~@15 bb3@56 ~@9]/5", // Eb5
})).s("gm_trumpet").gain(0.48)
// bass · electric bass finger
const bass = note(`<
A B C@3 D E F G H I@7 J K@5 L M N O@3 P Q R S T U@4 V W X Y Z@3 AA AB AC AD AE AF@5 L AG N AH@3 AI AJ AK AL AM AN@3 AO
AP AQ AR AS AT@3 AU@2 AV AW AX AY@3 AZ BA BB BC BD BE@3 BF BG BH BI BJ BK@3 BL BM BN BO BP BQ@3 BR BS BT BU BV BW@3 BX
BY BZ CA CB ~ CC ~
>`.pickRestart({
A: "~@17 eb1@8 gb1@7", B: "ab1@25 ~@7",
C: "[~@31 eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 eb1@2 ~@6 gb1@4 f1@3 ~ eb1@2, ~@83 eb1@5 ~@8]/3",
D: "~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2",
E: "~@2 eb1@4 gb1@4 ab1@3 eb1@2 ~@6 gb1@4 f1@3 ~ eb1@2 ~, ~@18 eb1@5 ~@9",
F: "~ eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~",
G: "~ eb1@4 gb1@4 ab1@3 eb1@2 ~@6 gb1@4 f1@3 ~ eb1@2 ~@2, ~@17 eb1@5 ~@10",
H: "eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2",
I: "[eb1@4 gb1@4 ab1@3 eb1@2 ~@6 gb1@4 f1@3 ~ eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@5 gb1@4 f1@3 ~ eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@5 gb1@4 f1@3 ~ eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@5 gb1@4 f1@3 ~ eb1@2 ~@2 eb1@4, ~@16 eb1@5 ~@58 eb1@5 ~@58 eb1@5 ~@58 eb1@5 ~@14]/7",
J: "a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4",
K: "[gb1@4 ab1@3 ~ eb1@2 ~@5 gb1@5 f1@3 eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@5 gb1@5 f1@3 eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@3 eb1@2 ~@2 eb1@4 a1@3, ~@12 eb1@5 ~@58 eb1@5 ~@80]/5",
L: "~ bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@3",
M: "~ ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@3 eb1@2 ~@2 eb1@4 a1@4",
N: "bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4",
O: "[ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@3 ~ f1@2 ~ f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 eb1@8 gb1@5]/3",
P: "~@2 ab1@15 ~@15", Q: "~@2 eb1@3 ~ eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2 eb1@2 ~ eb1@3",
R: "~ b1@2 ~@2 b1@2 ~@3 b1@2 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~",
S: "~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2",
T: "gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~",
U: "[eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@3 ~ eb1@2 ~@2 eb1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@4 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~ db2@2 ~@3 db2@2 ~ db2@2 ~@3 db2@2 ~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@3 ~ eb1@2]/4",
V: "~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@2 ~@2 eb1@2 ~@3 eb1@3 ~ b1@2",
W: "~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 gb1@2 ~",
X: "~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~",
Y: "~ gb1@2 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 eb1@2 ~@2",
Z: "[eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@2 ~@3 eb1@2 ~ eb1@4 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~ b1@2 ~@2 b1@2 ~@2 b1@4 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~ db2@2 ~@3 db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2]/3",
AA: "~@2 db2@2 ~@2 db2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@3 ~ eb1@2 ~@2 eb1@2",
AB: "~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 b1@2 ~@2 b1@2 ~",
AC: "~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@4 gb1@2 ~@2 gb1@2 ~",
AD: "~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~ gb1@2 ~@3 gb1@2 ~@2 gb1@3 ~ db2@2 ~@2 db2@2 ~",
AE: "~ db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2",
AF: "[db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@5 eb1@3 ~ eb1@4 a1@4 bb1@4 eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~ eb1@2 ~@2 eb1@4 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~ eb1@2 ~@2 eb1@4 a1@3]/5",
AG: "~ ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~ eb1@2 ~@6 a1@4, ~@25 eb1@5 ~@2",
AH: "[ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~ eb1@2 ~@6 a1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~ eb1@2 ~@6 a1@4 bb1@2, ~@24 eb1@5 ~@58 eb1@5 ~@4]/3",
AI: "~@2 eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@2",
AJ: "~@2 eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@5 a1@4 bb1@3, ~@22 eb1@5 ~@5",
AK: "~ eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3",
AL: "~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@5 a1@4 bb1@3 ~, ~@21 eb1@5 ~@6",
AM: "eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~",
AN: "[eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@5 a1@4 ~ bb1@3 eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@5 a1@4 ~ bb1@3 eb1@2, ~@20 eb1@5 ~@58 eb1@5 ~@8]/3",
AO: "~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2",
AP: "~@2 eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@5 a1@4 ~ bb1@3 eb1@2 ~, ~@18 eb1@5 ~@9",
AQ: "~ eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~",
AR: "~ eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@2 eb1@4 a1@4 bb1@3 eb1@2 ~@2",
AS: "eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2",
AT: "[eb1@4 gb1@4 f1@2 ~@2 eb1@2 ~@2 eb1@4 a1@4 bb1@3 eb1@2 ~@2 eb1@4 ab1@4 bb1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 ab1@3 ~ eb1@2 ~@2 eb1@4 gb1@4 bb1@2 ~@23]/3",
AU: "[~@10 eb1@8 ~ gb1@7 ab1@11 ~@27]/2", AV: "~@25 eb1@2 ~@2 eb1@2 ~",
AW: "~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 b1@3 ~ b1@2 ~@2",
AX: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@4 gb1@3 ~ gb1@2 ~@2",
AY: "[gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ b1@2 ~ b1@2 ~@2 b1@2]/3",
AZ: "~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 db2 ~ db2 ~ db2",
BA: "~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2 ~",
BB: "~ db2@2 ~@2 d2@3 ~ d2@2 ~@2 d2@2 ~@2 d2@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~",
BC: "~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@4 b1@3 b1@2 ~@2 b1@2 ~@2",
BD: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@4 gb1@3 ~ gb1@2 ~@2 gb1@2 ~@2",
BE: "[gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ b1@2 ~ b1@2 ~@2 b1@2 ~@2 b1@2]/3",
BF: "~ b1 ~ b1 ~ b1 ~ b1@2 db2 ~ db2 ~ db2 ~ db2",
BG: "~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2 ~@2 db2@2 ~",
BH: "~ d2@3 ~ d2@2 ~@2 d2@2 ~@2 d2@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~",
BI: "~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ b1@2 ~@2 b1@2 ~ b1@2 ~@2 b1@2 ~@2",
BJ: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@3 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2",
BK: "[gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~ db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@3 ~ eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~ b1@2 ~@2 b1@2]/3",
BL: "~@2 b1@2 ~@2 b1@2 ~@2 b1@3 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2",
BM: "~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2 ~",
BN: "~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~",
BO: "~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@2 ~@2 eb1@2 ~@2",
BP: "eb1@2 ~@2 eb1@2 ~@2 eb1@4 b1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
BQ: "[b1@2 ~@2 b1@2 ~@2 b1@4 gb1@3 ~ gb1@2 ~@2 gb1@2 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@2 ~@2 eb1@2]/3",
BR: "~@2 eb1@2 ~@2 eb1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2",
BS: "~@2 b1@2 ~@2 b1@4 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~ db2@2 ~@2 db2@2 ~",
BT: "~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 d2@3 ~ d2@2 ~",
BU: "~ d2@2 ~@2 d2@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@2 ~@2",
BV: "eb1@2 ~@2 eb1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
BW: "[b1@2 ~@2 b1@3 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@3 ~ eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~ eb1@2 ~@2 eb1@2]/3",
BX: "~@2 eb1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2",
BY: "~@2 b1@3 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~ gb1@2 ~@2 gb1@2 ~",
BZ: "~ gb1@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~",
CA: "~ db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2 ~@3 db2@2 ~@2 db2@2 ~ db2 ~@3", CB: "~@5 eb1@8 gb1@7 ab1@9 ~@3",
CC: "~@3 eb1@8 ~ gb1@8 ab1@9 ~@3",
})).s("gm_electric_bass_finger").gain(0.3)
// bass · piano
const bass_2 = note(`<
~@2 A B C D E F G H I J K L M N O P Q R S@2 T@2 U@2 V ~@2 W X Y Z AA AB B C D E F G H I J K L M N O ~ R@2 AC S AD T AE
U AF AG AH AI X Y Z AA AB B C D E F G H I J AJ ~ AK AL N P AM R AC S AD T AE U AF AG AH AI X Y Z AA AB B C D E F@2 H@2
J@2 L@2 N@2 P AM R AC S AD ~ AN ~@4
>`.pickRestart({
A: "~@23 e2!2 ~@7", B: "~@7 e2 ~@15 e2 ~@8", C: "~@7 e2 ~@14 e2 ~@9", D: "~@6 e2 ~@15 e2 ~@9",
E: "~@6 e2 ~@14 e2 ~@10", F: "~@5 e2 ~@15 e2 ~@10", G: "~@5 e2 ~@14 e2 ~@11", H: "~@4 e2 ~@15 e2 ~@11",
I: "~@4 e2 ~@14 e2 ~@12", J: "~@3 e2 ~@15 e2 ~@12", K: "~@3 e2 ~@14 e2 ~@13", L: "~@2 e2 ~@15 e2 ~@13",
M: "~@2 e2 ~@14 e2 ~@14", N: "~ e2 ~@15 e2 ~@14", O: "~ e2 ~@14 e2 ~@15", P: "e2 ~@15 e2 ~@15",
Q: "e2 ~@14 e2 ~@15 e2", R: "~@15 e2 ~@15 e2", S: "~@14 e2 ~@15 e2 ~", T: "~@13 e2 ~@15 e2 ~@2",
U: "~@12 e2 ~@15 e2 ~@3", V: "~@12 e2 ~@19", W: "~@26 e2 ~@5", X: "~@10 e2 ~@14 e2 ~@6", Y: "~@9 e2 ~@15 e2 ~@6",
Z: "~@9 e2 ~@14 e2 ~@7", AA: "~@8 e2 ~@15 e2 ~@7", AB: "~@8 e2 ~@14 e2 ~@8", AC: "~@15 e2 ~@14 e2 ~",
AD: "~@14 e2 ~@14 e2 ~@2", AE: "~@13 e2 ~@14 e2 ~@3", AF: "~@12 e2 ~@14 e2 ~@4", AG: "~@11 e2 ~@15 e2 ~@4",
AH: "~@11 e2 ~@14 e2 ~@5", AI: "~@10 e2 ~@15 e2 ~@5", AJ: "~@3 e2 ~@28", AK: "~@2 e2 ~@15 e2 ~@6 e2 ~@6",
AL: "~@17 e2 ~@14", AM: "e2 ~@15 e2 ~@14 e2", AN: "~@28 e2 ~@3",
})).s("gm_piano").gain(0.2)
// drums · kick
const kick = s("bd").struct(`<
A B C D E@2 F@2 G@2 H@2 I@2 J@2 K L M N O P Q R S T U V W X Y Z AA AB AC D E@2 AD F AE G AF H AG I AH J K AI AJ N O P
Q R S T AK AL AM AN Y Z AA AB AC D AO E AD F AE G AF H ~ AP AQ AR K L M N O P Q R@2 T@2 AL@2 AN@2 Z@2 AB AS D AO E AD
F AT G AF H AG I AH J K L M N O P@2 AU AV AW ~ AX ~
>`.pickRestart({
A: "~@2 x!2", B: "x", C: "~@19 x ~@11 x", D: "~@15 x ~@15 x", E: "~@7 x ~@7 x", F: "~@13 x ~@15 x ~@2",
G: "~@3 x ~@3 x", H: "~@11 x ~@15 x ~@4", I: "~@5 x ~@7 x ~@2", J: "~@9 x ~@15 x ~@6", K: "~@9 x ~@14 x ~@7",
L: "~ x ~ x", M: "~@8 x ~@14 x ~@8", N: "~@7 x ~@15 x ~@8", O: "~@7 x ~@14 x ~@9", P: "~@3 x ~@7 x ~@4",
Q: "~@6 x ~@14 x ~@10", R: "~@5 x ~@15 x ~@10", S: "~@5 x ~@14 x ~@11", T: "~ x ~@3 x ~@2",
U: "~@4 x ~@14 x ~@3 x ~@3 x ~@3 x", V: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
W: "~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@7 x ~@5", X: "~ x ~@7 x ~ x!2 ~@3", Y: "~@2 x ~@14 x ~@14", Z: "~ x ~@15 x ~@14",
AA: "~ x ~@14 x ~@15", AB: "x!2", AC: "x ~@14 x ~@15 x", AD: "~@14 x ~@14 x ~@2", AE: "~@13 x ~@14 x ~@3",
AF: "~@12 x ~@14 x ~@4", AG: "~@11 x ~@14 x ~@5", AH: "~@10 x ~@14 x ~@6", AI: "x!4", AJ: "x ~@7 x ~@3 x ~@10 x ~@8",
AK: "~@4 x ~@14 x ~@12", AL: "~@3 x ~@15 x ~@12", AM: "~@3 x ~@14 x ~@13", AN: "~ x ~@7 x ~@6", AO: "~@15 x ~@14 x ~",
AP: "~@5 x ~@3 x ~@3 x ~@2", AQ: "~@10 x ~@3 x ~ x ~@8 x ~ x ~@3 x", AR: "~@3 x ~@3 x ~@5 x ~@11 x ~@6",
AS: "x ~@15 x ~@14 x", AT: "~ x ~ x ~@9 x ~@14 x ~@3", AU: "~@5 x ~@7 x ~@7 x ~@7 x ~@2",
AV: "~@5 x ~@7 x ~@7 x ~@2 x ~ x ~@5", AW: "~ x ~ x ~ x ~@2", AX: "~@3 x ~@7 x ~@7 x ~@12",
})).gain(0.31)
// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
~@3 A B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M ~@3 N@2 O@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 ~@3 I J@2 K@2 L@2 M@3 P@2
Q@2 R@2 S@2 T@2 U@2 V@2 W ~@4 H@2 I@2 J@3 K@2 L@2 M@2 P@2 Q@2 R@2 S@2 T@2 U ~ V@2 W@2 X@2 Y@2 Z@2 AA@2 AB@2 AC ~@5
>`.pickRestart({
A: "~@27 x ~@4", B: "~@13 x ~@2", C: "~@25 x ~@6", D: "~@3 x", E: "~@23 x ~@8", F: "~@11 x ~@4", G: "~@21 x ~@10",
H: "~@5 x ~@2", I: "~@19 x ~@12", J: "~@9 x ~@6", K: "~@17 x ~@14", L: "~ x", M: "~@15 x ~@16", N: "~@29 x ~@2",
O: "~@7 x", P: "~@7 x ~@8", Q: "~@13 x ~@18", R: "~@3 x ~@4", S: "~@11 x ~@20", T: "~@5 x ~@10", U: "~@9 x ~@22",
V: "~ x ~@2", W: "~@7 x ~@24", X: "~@3 x ~@12", Y: "~@5 x ~@26", Z: "~ x ~@6", AA: "~@3 x ~@28", AB: "~ x ~@14",
AC: "~ x ~@30",
// … 86 more lines
More by
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.