0:00/0:00
// Ashitaka and San — Joe Hisaishi
// 80 bpm, 4/4, key Db 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 (4/4 at bar 1, 2/4 at bar 38, 4/4 at bar 38, 2/4 at bar 74, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 2 "Flute 1" named as a pipe, played on flute (its tremolo strings patch is not one); ch 4 "Oboe" named as a reed, played on oboe (its pizzicato strings patch is not one); ch 5 "B♭ Clarinet" named as a reed, played on clarinet (its tremolo strings patch is not one); ch 6 "Bassoon" named as a reed, played on bassoon (its cello patch is not one); ch 13 "Horn in F" named as a brass, played on brass section (its violin patch is not one); ch 1 "B♭ Trumpet" named as a brass, played on trumpet (its pizzicato strings patch is not one); ch 11 "Trombone" named as a brass, played on trombone (its acoustic bass patch is not one); ch 8 "Tuba" named as a brass, played on tuba (its tremolo strings patch is not one); ch 3 "Glockenspiel" named as a mallet, played on glockenspiel (its viola patch is not one); ch 12 "Piano" named as a piano, played on piano (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5556641; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · flute · "Flute 1"
const flute = note("<~@24 A B ~@11 C D@2 E@3 ~@5 F@4 G@2 H@2 I J@2 K@3 L M@5 N O@4 ~@12>".pickRestart({
A: "~@12 bb5@11 ~ ab5@11 ~ gb5@6 f5@6", B: "eb5@11 ~@37", C: "~@24 gb5@13 ~ f5@10",
D: "[~@3 eb5@26 ~@2 f5@13 ~ eb5@13 db5@26 ~@2 eb5@10]/2", E: "[~@3 db5@13 ~ b4@13 ~ bb4@13 ~ c5@52 ~@47]/3",
F: "[~@15 ab4@5 ~ db5@5 db5@38 ~@2 eb5@5 ~ eb5@5 ~ f5@5 f5@27 ~@2 f5@5 ~ ab5@11 eb5@22 ~ db5@5 ~ eb5@5 f5@22 ~@7]/4",
G: "[~@6 f5@5 ab5@5 ~ db6@16 ~ db6@5 ~ db6@5 ~ c6@5 f5@5 ~ ab5@5 ~ bb5@11 ab5@5 ~ gb5@5 ~ ab5@10]/2",
H: "[~ db5@5 ~ eb5@5 ~ f5@11 bb4@5 ~ db5@5 eb5@5 ~ f5@5 ~ eb5@5 ~ db5@5 db5@33 ~@5]/2",
I: "~@2 db5@5 ~ gb5@5 ~ f5@5 eb5@5 ~ db5@5 ~ eb5@11 ab5@5 ~",
J: "[f5@5 ~ eb5@33 ~@7 eb5@5 gb5@5 ~ f5@5 ~ eb5@5 ~ db5@5 eb5@11 ~ ab5@5 bb5@5]/2",
K: "[~ ab5@22 ~@7 f5@5 ab5@5 ~ f5@5 ~ eb5@22 ~@6 f5@5 ~ ab5@5 ~ f5@5 ~ db5@22 ~@6 db6@5 ~ c6@5 ~ bb5@5 db6@5 ~]/3",
L: "eb6@5 ~ eb6@33 ~@9",
M: "[~@3 f5@11 ~ gb5@11 bb5@11 ~ ab5@22 ~@6 ab5@5 ~ db6@5 ~ eb6@5 eb6@5 ~ f6@5 ~ db6@5 ~ c6@5 db6@16 ~ db6@5 ~ db6@5 ~ eb6@5 ~ c6@5 bb5@5 ~ a5@5 ~ b5@5 ab5@5 ~ gb5@5 ~ ab5@22 ~@6 f5@5 ~ gb5@5 ~ bb5@5 ~ ab5@19]/5",
N: "~@9 ab5@5 ~ db6@5 ~ eb6@5 eb6@5 ~ f6@5 ~ db6@5 c6@5",
O: "[~ db6@16 ~ f5@5 ~ c6@16 ~ f5@5 ~ bb5@22 ~@6 bb5@5 ~ ab5@5 ~ gb5@5 ~ ab5@11 db5@5 ~ ab5@5 ab5@11 ~ gb5@11 f5@11 ~@43]/4",
})).s("gm_flute").gain(0.4)
// other · flute · "Flute 1" · soft notes
const flute_soft = note("<~@72 A@2 ~@2 B@8 ~>".pickRestart({
A: "[~@6 bb4@5 f5@5 ~ f5@16 ~ eb5@5 ~ db5@22 ~@34]/2", B: "[~@17 f5@130 ~@7 gb5@13 ~ ab5@104 ~@6 f5@104 ~@2]/8",
})).s("gm_flute").gain(0.15)
// other · oboe
const oboe = note("<~@24 A B ~@11 C@5 ~@6 D@4 E@2 F@2 G H@2 I@3 J K@6 L@5 M@4 N@7>".pickRestart({
A: "~@2 bb5@2 ab5@2 gb5 f5", B: "eb5 ~@3",
C: "[~@24 gb5@14 f5@13 eb5@14 c5@14 f5@14 eb5@13 db5@14 bb4@14 eb5@13 db5@14 b4@14 bb4@14 c5@27 a4@24]/5",
D: "[~@15 ab4@6 db5@5 db5@40 eb5@6 eb5@6 f5@5 f5@29 f5@6 ab5@11 eb5@23 db5@6 eb5@5 f5@23 ~@6]/4",
E: "[~@6 f5@5 ab5@6 db6@17 db6@6 db6@6 c6@5 f5@6 ab5@6 bb5@11 ab5@6 gb5@6 ab5@10]/2",
F: "[~ db5@6 eb5@6 f5@11 bb4@6 db5@5 eb5@6 f5@6 eb5@6 db5@5 db5@34 ~@4]/2",
G: "~@2 db5@6 gb5@6 f5@5 eb5@6 db5@6 eb5@11 ab5@6",
H: "[f5@6 eb5@34 ~@6 eb5@5 gb5@6 f5@6 eb5@6 db5@5 eb5@11 ~ ab5@5 bb5@5]/2",
I: "[~ ab5@23 ~@6 f5@5 ab5@6 f5@6 eb5@23 ~@5 f5@6 ab5@6 f5@6 db5@23 ~@5 db6@6 c6@6 bb5@5 db6@6]/3",
J: "eb6@3 eb6@17 ~@4",
K: "[~@3 f5@11 ~ gb5@11 bb5@11 ~ ab5@23 ~@5 ab4@6 db5@6 eb5@5 eb5@6 f5@6 db5@6 c5@5 db5@17 db5@6 db5@6 eb5@6 c5@5 bb4@6 a4@6 b4@5 ab4@6 gb4@6 ab4@23 ~@5 f4@6 gb4@6 bb4@6 ab4@23 ~@5 ab4@6 db5@6 eb5@5 eb5@6 f5@6 db5@5 c5@5]/6",
L: "[~ db5@17 f4@6 c5@17 f4@6 bb4@23 ~@5 bb4@6 ab4@6 gb4@6 ab4@11 db4@6 ab4@5 ab4@11 ~ gb4@11 f4@11 ~ bb3@5 f4@6 f4@17 eb4@6 db4@23 ~@33]/5",
M: "[~@45 ab5@41 gb5@13 f5@55 eb5@38]/4", N: "[~@3 bb4@7 eb5@7 f5@41 gb5@14 ab5@110 f5@110 ~@44]/7",
})).s("gm_oboe").gain(0.35)
// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@24 A B ~@11 C@5 ~@6 D@4 E@2 F@2 G H@2 I@3 J K@6 L@4 ~@12>".pickRestart({
A: "~@2 gb5@2 f5@2 eb5 db5", B: "c5 ~@3",
C: "[~@24 eb5@14 db5@13 c5@27 ~ db5@14 c5@13 bb4@27 ~ b4@13 bb4@14 ab4@14 gb4@14 f4@27 ~@24]/5",
D: "[~@15 ab4@6 db5@5 db5@40 eb5@6 eb5@6 f5@5 f5@29 f5@6 ab5@11 eb5@23 db5@6 eb5@5 f5@23 ~@6]/4",
E: "[~@6 f5@5 ab5@6 db6@17 db6@6 db6@6 c6@5 f5@6 ab5@6 bb5@11 ab5@6 gb5@6 ab5@10]/2",
F: "[~ db5@6 eb5@6 f5@11 bb4@6 db5@5 eb5@6 f5@6 eb5@6 db5@5 db5@34 ~@4]/2",
G: "~@2 db5@6 gb5@6 f5@5 eb5@6 db5@6 eb5@11 ab5@6",
H: "[f5@6 eb5@34 ~@6 eb5@5 gb5@6 f5@6 eb5@6 db5@5 eb5@11 ~ ab5@5 bb5@5]/2",
I: "[~ ab5@23 ~@6 f5@5 ab5@6 f5@6 eb5@23 ~@5 f5@6 ab5@6 f5@6 db5@23 ~@5 db6@6 c6@6 bb5@5 db6@6]/3",
J: "eb6@3 eb6@17 ~@4",
K: "[~@3 db5@11 ~ db5@11 gb5@11 ~ f5@23 ~@5 f5@6 bb5@6 c6@5 c6@6 db6@6 bb5@6 a5@5 bb5@17 bb5@6 bb5@6 c6@6 ab5@5 gb5@6 gb5@6 ab5@5 f5@6 eb5@6 gb5@23 ~@5 db5@6 db5@6 gb5@6 f5@23 ~@5 f5@6 bb5@6 c6@5 c6@6 db6@6 bb5@5 a5@5]/6",
L: "[~ bb5@17 a4@6 f5@17 f4@6 db5@23 ~@5 db5@6 db5@6 db5@6 db5@11 db5@6 ab5@5 eb5@11 ~ gb5@11 c5@11 ~@43]/4",
})).s("gm_clarinet").gain(0.4)
// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@72 A@2 ~@2 B@8 ~>".pickRestart({
A: "[~@6 bb4@5 f5@6 gb4@17 gb4@6 bb4@23 ~@33]/2", B: "[~@17 bb4@41 c5@96 db5@14 f5@110 db5@106]/8",
})).s("gm_clarinet").gain(0.15)
// chords · bassoon
const bassoon = note(`<
~@10 A@2 B C D E F G@2 H I B F D J K L M N O P Q R S T U ~ V@3 W@2 X@2 Y@2 Z@2 AA@4 AB@2 AC@3 AD@2 AE@3 AF AG@6 AH@6
~@4 AI@6
>`.pickRestart({
A: "db3/2", B: "ab3", C: "db3", D: "f3", E: "gb3 f3", F: "bb3 c4", G: "db4", H: "c4", I: "bb3",
J: "~@2 gb4@2 f4@2 eb4 db4, b2", K: "c4 f3 gb3 bb3", L: "ab3@4 ~ f3 bb3 c4", M: "c4 db4 bb3 a3 bb3@3 gb3",
N: "gb3 eb3 c3 bb2 db3 b2 ab2 gb2", O: "eb3@4 ~ bb2!2 eb3", P: "db3@4 ~ c3 f3 gb3", Q: "gb3 ab3 f3 eb3 f3@3 f2",
R: "f3@3 f2 db3@4", S: "~ db3!3 db3@2 db3 ab3", T: "db3@2 gb3@2 ab2@2 bb2 f3", U: "gb2@3 gb2 bb2@4",
V: "[~@24 bb2@41 c3@55 bb2@24]/3", W: "[~@3 db3@14 b2@14 bb2@14 c3@27 a2@24]/2", X: "[~@3 bb3@27 ~ c4@27 c4@38]/2",
Y: "[~@3 bb3@14 b3@14 bb3@14 ab3@13 gb3@14 f3@24]/2", Z: "[~@3 a3@27 ~ db3@46 ~@19]/2",
AA: "[~@15 ab3@6 db4@5 db2@6 ab2@6 f3@5 ab3@6 bb3@6 ab3@6 db4@5 [bb3,c4]@6 [db2,c4]@6 [ab2,db4]@5 f3@6 ab3@6 bb3@6 ab3@5 db4@6 bb3@6 db2@5 ab2@6 eb3@6 gb3@6 ab3@5 gb3@6 bb3@6 [ab3,c4]@5 db2@6 ab2@6 f3@6 ab3@5 bb3@6, ~@26 db4@35 ~@22 db4@23 ~@12 eb4@11 bb3@23 ~@11 db4@23 ~@6]/4", // Bbsus2 Dbmaj7 Db5 Ab
AB: "[ab3@6 [f3,db4]@5 [ab3,bb3]@6 bb2@6 f3@6 ab3@5 [db4,f4]@6 [ab3,f4]@6 [f3,f4]@5 [ab3,db4]@6 [ab3,c4]@6 gb2@6 db3@5 [bb3,db4]@6 [db3,db4]@6 f2@5 db3@5, ~@17 f4@17 ~@29 gb4@11 ~@12 eb4@10]/2", // Db Absus2 Db F Db5 Ab Bbm Db
AC: "[~ [ab3,bb3]@6 [db3,c4]@6 eb2@5 bb2@6 [gb3,bb3]@6 [bb2,db4]@5 [ab2,c4]@6 [eb3,f4]@6 [gb3,eb4]@6 [ab3,db4]@5 db2@6 ab2@6 f3@5 ab3@6 bb3@6 ab3@6 db4@5 bb3@6 [gb2,eb4]@6 [db3,db4]@5 [f3,c4]@6 [gb3,bb3]@6 ab3@6 gb3@5 [bb3,f4]@6, ~@13 db4@11 ~@34 ab3@17 ~@52 c4@11 ~@6]/3", // Absus2 Dbmaj7 Gb Bbm Ab Ebsus2 Ebm Db5 …
AD: "[[ab3,db4]@6 ab2@5 eb3@6 f3@6 gb3@6 ab3@5 gb3@6 bb3@6 [ab3,bb3]@5 [gb2,eb4]@6 [db3,db4]@6 [f3,c4]@6 [gb3,bb3]@5 ab3@6 gb3@6 [c4,f4]@5 [ab3,gb4]@5, ~@6 c4@34 ~@34 c4@11 ~@11]/2", // Db5 Absus2 Ebm Db F5 Gb F5 Ab7
AE: "[~ f2@6 c3@6 f3@5 ab3@6 c4@6 ab3@5 [c4,eb4]@6 [ab3,c4]@6 gb2@6 db3@5 bb3@6 db3@6 ab2@5 [eb3,ab3]@6 c4@6 [eb3,ab3]@6 [bb2,f3]@5 f3@6 db4@6 bb3@5 c4@6 [bb3,f4]@6 [ab3,eb4]@6 [gb3,db4]@5 [b2,f4]@6, ~ f4@23 ~@23 gb3@23 ~@74]/3", // Cm Ab Ab5 Bb5 Ab5 Gb5 Bdim
AF: "[gb3,gb4]@6 eb4@5 gb3@6 db4@6 gb3@6 b3@5 bb3@6 ab3@8, ~@3 gb4@17 ~@4", // Gb
AG: "[~@3 bb2@11 ~ bb2@11 eb3@11 ~ db3@23 ~@5 f3@6 bb3@6 c4@5 c4@6 db4@6 bb3@6 a3@5 bb3@17 gb3@6 gb3@6 eb3@6 c3@5 bb2@6 db3@6 b2@5 ab2@6 gb2@6 eb3@23 ~@5 bb2@6 bb2@6 eb3@6 ~@28 c3@6 f3@6 gb3@5 gb3@6 ab3@6 f3@5 eb3@5, ~@38 db2@45 f2@23 gb2@23 eb2@23 gb2@17 ~@6 ab2@46 db3@45 eb4@22]/6",
AH: "[~ f3@17 f2@6 f3@17 f2@6 db3@23 ~@5 db3@6 db3@6 db3@6 db3@11 db3@6 ab3@5 [db3,gb3]@12 gb3@11 ab2@11 ~ bb2@5 f3@6 ab3@11 ~@6 gb2@6 [bb2,bb3]@23 ~@23 f3@55 ~@3, ~ bb3@23 ab3@23 bb3@46 ab3@17 ~@51 gb2@17 ~@110, ~@173 a3@11 ~@104]/6", // Gb5 Bb
AI: "[~@12 db3@55 db3@55 ~@22]/6",
})).s("gm_bassoon").gain(0.25)
// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@24 A B ~@3 C ~@33 D@6 E@5 ~@5 F@6>".pickRestart({
A: "~@2 bb4@2 ab4@2 gb4 f4", B: "eb4 ~@3", C: "~ ab3 eb4 bb4 ab4@4",
D: "[~@3 f4@11 ~ gb4@11 bb4@11 ~ ab4@23 ~@5 ab4@6 db5@6 eb5@5 eb5@6 f5@6 db5@6 c5@5 db5@17 db5@6 db5@6 eb5@6 c5@5 bb4@6 a4@6 b4@5 ab4@6 gb4@6 ab4@23 ~@5 f4@6 gb4@6 bb4@6 ab4@23 ~@5 ab4@6 db5@6 eb5@5 eb5@6 f5@6 db5@5 c5@5]/6",
E: "[~ db5@23 c5@23 bb4@23 ~@5 bb4@6 ab4@6 gb4@6 ab4@11 db4@6 ab4@5 ab4@11 ~ gb4@11 f4@11 ~ bb3@5 f4@6 f4@17 eb4@6 db4@23 ~@33]/5",
F: "[~@45 ab4@6 ab5@27 ~ f5@55 ab4@110 ~@44]/6",
})).s("gm_trumpet").gain(0.35)
// other · trombone
const trombone = note("<~@24 A B C ~@10 D E@3 ~@21 F ~@3 G H ~@11 I@3 ~@3>".pickRestart({
A: "b2", B: "~ f3 gb3 bb3", C: "ab3 ~", D: "~ db3", E: "[~@3 eb3@27 ~ a3@27 bb3@27 ~ b3@27 ~@31]/3",
F: "~@6 db4@11 c4@11 ~ bb3@5 ab3@6 ab3@8", G: "~@37 ab3@5 eb4@6", H: "bb4@6 ab4@23 ~@19",
I: "[~@45 ab3@6 ab4@27 ~ f4@55 ~@10]/3",
})).s("gm_trombone").gain(0.25)
// other · trombone · soft notes
const trombone_soft = note("<~@40 A@3 ~@5 B@8 ~@29>".pickRestart({
A: "[~@17 eb4@27 ~ c4@55 ~@44]/3", B: "[~@26 f3@46 f3@46 ab3@45 bb3@23 ab3@23 bb3@46 gb4@46 eb4@45 f4@38]/8",
})).s("gm_trombone").gain(0.15)
// bass · tuba
const bass = note(`<
~@11 A@2 B C D E B F G F H I C J K L M N O B P Q@2 R S@3 T@5 ~@5 U@8 ~ V@2 W@4 X@4 Y@2 Z@5 ~@5 AA@6
>`.pickRestart({
A: "db3/2", B: "db3", C: "bb3", D: "gb3 f3", E: "eb3 ab3", F: "gb3", G: "ab3", H: "f3", I: "gb3 ab3", J: "b2",
K: "ab2 ~@3", L: "db2", M: "f2 gb2", N: "eb2 gb2", O: "ab2!2", P: "f2 bb2", Q: "[ab2 gb2@2 f2]/2", R: "eb2 ab2",
S: "[ab2 a2 bb2@4 db3@4 gb3@2]/3", T: "[~@3 ab3@27 ~ a3@27 bb3@27 ~ b3@27 eb4@27 ~ c4@55 ~@44]/5",
U: "[~@26 ab2@46 ab2@46 bb2@45 f3@46 db3@46 gb3@46 f3@45 db3@38]/8", V: "[~@6 ab2@45 gb2@23 ab2@22]/2",
W: "[~ f2@23 c3@23 gb2@23 ab2@23 bb2@22 c3@23 b2@23 db3@23 eb3@8]/4",
X: "[~@38 db2@45 f2@23 gb2@23 eb2@23 gb2@23 ~@6 ab2@5 eb3@6]/4", Y: "[bb3@6 ab3@23 db2@45 gb2@11 ~ f2@10]/2",
Z: "[~ db2@46 gb2@46 f2@22 eb2@46 ab2@11 ~ a2@11 bb2@23 ~@33]/5", AA: "[~@45 db3@6 db4@27 ~ ab3@55 db3@110 ~@44]/6",
})).s("gm_tuba").gain(0.2)
// other · glockenspiel
const glockenspiel = note(`<
~@9 A B C D E F E G E H I H I G C J K L M N O P Q R S T U ~@6 V@4 W@2 X Y@3 Z@2 AA@3 AB@2 AC@3 AD ~@3 AE AF AG AH@6
~@4 AI@6
>`.pickRestart({
A: "~ eb3", B: "f3", C: "ab3", D: "db4@2 c4 bb3", E: "bb3 ab3", F: "bb3", G: "gb3 ab3", H: "eb4 db4", I: "c4",
J: "gb3", K: "~ db4!2 gb4", L: "db5@4 ~ ab4 db5 eb5", M: "eb5 f5 db5 c5 db5@3 db5", N: "db5 eb5 c5 bb4 a4 b4 ab4 gb4",
O: "ab4@4 ~ f4 gb4 bb4", P: "ab4@4 ~ ab4 db5 eb5", Q: "eb5 f5 db5 c5 db5@3 f4", R: "c5@3 f4 bb4@4",
S: "~ bb4 ab4 gb4 ab4@2 db4 ab4", T: "ab4@2 gb4@2 f4@2 bb3 f4", U: "f4@3 eb4 db4@4",
V: "[~@45 c4@54 bb3@27 ~ db4@14 b3@13 bb3@14 c4@24]/4", W: "[~@3 a3@27 ~ ab3@46 ~@19]/2",
X: "~@26 db3@6 ab3@6 f4@5 ab4@5",
Y: "[~ bb4@6 ab4@6 db5@5 bb4@6 db3@6 ab3@5 f4@6 ab4@6 bb4@6 ab4@5 db5@6 bb4@6 db3@5 ab3@6 eb4@6 gb4@6 ab4@5 gb4@6 bb4@6 ab4@5 db3@6 ab3@6 f4@6 ab4@5 bb4@6]/3",
Z: "[ab4@6 db5@5 bb4@6 bb3@6 f4@6 ab4@5 db5@6 ab4@6 f4@5 db5@6 ab4@6 gb3@6 db4@5 bb4@6 db4@6 f3@5 db4@5]/2",
AA: "[~ ab4@6 db4@6 eb3@5 bb3@6 gb4@6 bb3@5 ab3@6 eb4@6 gb4@6 ab4@5 db3@6 f6 ~@2 f6 ~@2 db7 ~@2 db7 ~ ab6 ~@2 ab6 ~@2 bb4@6 f6 ~@2 f6 ~@2 db7 ~ db7 ~@2 ab6 ~@2 ab6 ~@2 gb3@6 db4@5 f4@6 gb4@6 ab4@6 gb4@5 bb4@6, ~@64 ab3@6 f4@5 ab4@6 ~@6 ab4@6 db5@5 bb4@6 ~@40]/3",
AB: "[ab4@6 ab3@5 eb4@6 f4@6 gb4@6 ab4@5 gb4@6 bb4@6 ab4@5 gb3@6 db4@6 f4@6 gb4@5 ab4@6 gb4@6 c5@5 ab4@5]/2",
AC: "[~ f3@6 c4@6 f4@5 ab4@6 c5@6 ab4@5 eb5@6 c5@6 gb3@6 db4@5 bb4@6 db4@6 ab3@5 eb4@6 c5@6 eb4@6 bb3@5 f4@6 db5@6 bb4@5 c5@6 [bb4,db7]@6 [ab4,c7]@6 [gb4,bb6]@5 [b3,db7]@6]/3", // Bbm Ab Gb Bsus2
AD: "[gb4,eb7]@6 eb5@5 gb4@6 db5@6 gb4@6 b4@5 bb4@6 ab4@8, ~@6 eb7@11 ~@31", AE: "~@37 ab6@5 eb7@6",
AF: "bb7@6 ab7@11 ~@31", AG: "~@26 eb4@6 f4@6 db4@5 c4@5",
AH: "[~ db4@11 ~ eb4@5 f4@6 f4@11 eb4@6 f4@6 f4@6 eb4@5 db4@6 c4@6 bb3@23 db4@68 c5@23 ~@6 bb4@5 ab4@6 gb4@6 f4@11 eb4@11 ~ ab3@55 ~@3]/6",
AI: "[~@45 ab6@6 ab7@27 ~ f7@55 ~@154, ~@8 ab3@73 ~@15]/6",
})).s("gm_glockenspiel").gain(0.25)
// chords · piano
const piano = note(`<
A B C D E F G H I J C D E F G H K L M N O P Q R S T U V W X U Y Z AA AB AC AD@2 ~@25 AE ~@21
>`.pickRestart({
A: "db2 ab2 f3 ab3 bb3 ab3 db4 bb3", B: "db2 ab2 f3 ab3 bb3 ab3 [db4,ab4] [bb3,db5]",
C: "db2 ab2 f3 ab3 bb3 ab3 db4 [bb3,c5,eb5], db5@5 ~", // Cm7
D: "[db2,c5,eb5] [ab2,db5,f5] f3 ab3 bb3 ab3 db4 [bb3,bb4,f5], ~@3 [db5,f5]@7 ~@2", // Cm Db Bb5 Db
E: "~ ab2 eb3 gb3 ab3 gb3 [bb3,db5] [ab3,eb5], bb4@12 [bb4,eb5]@23 ~@13, db2 ~@7, ~ eb5@11 ~@36, ~ ab5@5 ~@18", // Bbm Ab5 Eb5
F: "db2 ab2 f3 ab3 bb3 ab3 [db4,f4,f5] [bb3,ab4,ab5], [ab4,db5,f5]@23 ~@25", // Db Bb7 Db
G: "~ f3 ab3 [db4,db5,f5,ab5,db6] [ab3,db5,f5,ab5,db6] [f3,c5,c6] [db4,f4,f5] [ab3,ab4,ab5], db5@3 ~@5, bb2 db6@5 ~@10, ~ f5@17 ~@30, ~ ab5@8 ~@15", // Db F5 Db Ab
H: "~ db3 [bb3,ab4,ab5] [db3,gb4,gb5] ~ db3 [ab3,db4,db5] [db3,eb4,eb5], bb4 ~ ab4 ~, gb2@3 bb5@9 ~@14 eb5@10 ~@12, ~ db5@11 ~@12 f2@3 ab5@9 ~@12, ~@2 gb5@10 ~@13 db5@11 ~@12", // Bb7 Gb5 Db5 Dbsus2
I: "~ bb2 [g3,bb4] [bb2,db5] ~ bb2 [gb3,eb5] [bb2,db5], f4 ~ f4 ~, eb2@3 f5@9 ~@14 db5@10 ~@12, ~ bb4@11 ~@12 eb2@3 f5@9 ~@12, ~@2 db5@10 ~@13 bb4@11 ~@12", // Gm Bbm Ebm Bbm
J: "~ eb3 gb3 bb3 ~ c4 [ab3,ab4] [gb3,db5], eb4@2 eb4 ~, ab2 eb5@11 ~@4, ~ gb4@35 ~@12, ~ bb4@17 ~@6", // Ab Gb5
K: "~ bb2 [gb3,bb4] [bb2,db5] [ab2,eb5] [eb3,f5] gb3 ab3, f4@12 ~@12 [gb4,bb4]@23 ~, eb2@3 f5@9 ~@24 eb5@11 ~, ~ bb4@11 ~@36, ~ db5@5 ~@18", // Gb Bbm Ab5 Ebsus2 Gb
L: "~ ab2 f3 ab3 bb3 ab3 db4 [bb3,db5], f4@3 ~, db2 db5@11 ~@4, ~ ab4@35 ~@12, ~ bb4@17 ~@6", // Bbm
M: "~ gb5@2 [db3,f5]@3 [f3,eb5]@3 [gb3,db5]@3 ab3@3 gb3@3 [bb3,ab5]@3 [ab3,f5]@3, [gb2,bb4] ~@7, ~ db5@5 ~@18 eb5@11 ~@13", // Db F7 Gb5 Bb7 Db Gb
N: "ab2 eb3 f3 gb3 ab3 gb3 bb3 ab3, [ab4,c5,eb5]@17 ~@7", // Ab
O: "~ gb5@2 [db3,f5]@3 [f3,eb5]@3 [gb3,db5]@3 ab3@3 gb3@3 [c4,ab4,ab5]@3 [ab3,bb4,bb5]@3, [gb2,bb4] ~@7, ~ db5@5 ~@18 eb5@11 ~@13", // Db F7 Gb5 Fm Absus2 Gb
P: "f2 c3 f3 ab3 c4 [ab3,f4,f5] [eb4,ab4,ab5] [c4,f4,f5], [ab4,c5,f5,ab5]@23 ~@25", // Db Ab5 F5 Fm
Q: "gb2 db3 bb3 db3 ab2 [eb3,f4,f5] [c4,ab4,ab5] [eb3,f4,f5], [eb4,gb4,bb4,eb5]@23 ~@25", // Ebsus2 Fm Ebsus2 Ebm
R: "~ f3 ab3 db4 ab3 [f3,db5,db6] [db4,c5,c6] [bb3,bb4,bb5], f4 ~, bb2 db5@7 ~@8, ~ ab4@23 ~@24, ~ bb4@11 ~@12", // Db Dbmaj7 Bb
S: "[b2,db5,db6] [gb3,eb5,eb6] eb4 gb3 db4 gb3 b3 bb3, ~@6 [eb5,eb6]@17 ~", // Bsus2 Ebm Eb
T: "[ab1,ab2,ab3,ab4]@11 ~ [f3,gb3,bb3,db4,f4,bb4,db5,f5]@12 [gb3,bb3,db4,gb4,bb4,db5,gb5]@12 [gb3,bb3,c4,eb4,bb4,eb5,gb5,bb5]@12", // Ab Gbmaj7 Gb Cm7b5
U: "db2 ab2 f3 ab3 bb3 [ab3,ab4,ab5] [db4,db5,db6] [bb3,eb5,eb6], [ab4,db5,f5,ab5]@23 ~@25", // Ab Db Eb5 Db
V: "[f2,eb5,eb6] [db3,f5,f6] [a3,db5,db6] [eb4,c5,c6] ~ db3 bb3 [gb3,db5,gb5,bb5,db6], ~@4 db5@3 ~, ~@8 gb2 db6@5 ~@2, ~@25 gb5@17 ~@6, ~@13 bb5@8 ~@3", // F7 Db A Cm Gb
W: "[eb2,db5,gb5,bb5,db6] [gb3,eb5,eb6] [bb3,c5,c6] [eb3,bb4,bb5] [gb2,a4,a5] [a3,b4,b5] [db4,ab4,ab5] [a3,gb4,gb5]", // Ebm7 Ebm Bbsus2 Eb5 Gbm Asus2 Db5 D
X: "~ eb3 ab3 c4 ~ [f4,bb4,db5,f5] ~ [bb4,eb5,gb5,bb5], ab4@24 [ab1,ab2]@11 ~ eb3@12, ab2@3 ab5@21 ~@13 [bb4,db5] ab3@10, ~ eb5@23 ~@12 gb4@2 gb5 c4@9, ~@2 gb5@22 ~@13 gb3@11", // Bbm Ebm Ab Bbm
Y: "[f2,eb5,eb6] [f3,f5,f6] [a3,db5,db6] [eb4,c5,c6] ~ f3 db4 [f3,f4,f5], ~@4 db5@3 ~, ~@8 bb2 db6@5 ~@2, ~@25 f5@17 ~@6, ~@13 ab5@8 ~@3", // F7 F A Cm F
Z: "~ f3 c4 [f3,f4,f5] ~ db3 bb3 db3, c5@3 ~ bb4@4, ab2@2 ~@6 gb2 bb5@7, ~ f5@17 ~@7 db5@23, ~ c6@8 ~@4 gb5@11", // F
AA: "ab3 [db3,bb4,bb5] [gb3,ab4,ab5] [db3,gb4,gb5] ~ db3 [ab3,db5] [db3,ab5], ~@2 ab4 ~, ~@8 f2 ab5@3 ~@4, ~@25 db5@11 ~@12, ~@13 eb5@5 ~@6", // Gb Gbsus2 Gb5 Db5
AB: "~ bb2 gb3 bb2 ab2 eb3 [gb3,bb4] [bb3,f5], ab4@12 ~@12 [ab4,bb4,c5,f5]@11 ~@13, eb2@3 ab5@9 gb5@11 ~@25, ~ db5@11 ~@36, ~ eb5@5 ~@18", // Gb Bb5 Fm
AC: "[ab2,c3,ab3,gb4,f5]@11 ~ [a2,c3,a3,gb4,eb5]@11 ~ bb2@6 [gb3,db4]@6 [ab3,gb4]@6 [db4,ab4]@6, ~@24 db5@23 ~", // Fm Adim Gb5 Ab7 Db5
AD: "[[gb3,db5] [ab3,ab4] [db4,gb4] [ab3,db4] db2 ab2 f3 ab3 bb3 ab3 ~ bb3 ~@4, ~@12 [eb4,f4,ab4]@23 ~@13, ~@12 db4@18 db4@5 ~@13]/2", // Gb5 Ab Gb5 Db5 Fm7
AE: "~@3 [f3,gb3,bb3,db4,f4,bb4,db5,f5]@11 ~ [gb3,bb3,db4,gb4,bb4,db5,gb5]@11 [gb3,bb3,c4,eb4,bb4,eb5,gb5,bb5]@11 ~@11", // Gbmaj7 Gb Cm7b5
})).s("gm_piano").gain(0.3)
// chords · piano · soft notes
const piano_soft = note("<~@46 A@3 ~@13 B C D@3 E@2 F@3 G@4 H@6 ~@3>".pickRestart({
A: "[~@37 ab2@5 f3@5 ~ ab3@5 ~ bb3@5 ab3@5 ~ db4@5 ~ bb3@5 ~ db2@5 ab2@5 ~ f3@5 ~ ab3@5 bb3@5 ~ ab3@5 ~ db4@5 ~ bb3@5 ~@22, ~@31 [ab4,db5]@89 ~@24, ~@31 db2@5 ~@108, ~@4 [eb5,ab5]@11 ~@3]/3", // Db5 Ab5
B: "~@5 [ab1,ab2,ab3,ab4]", C: "~@38 db2@5 ab2@5",
D: "[~ f3@5 ~ ab3@5 ~ bb3@5 ab3@5 ~ db4@5 ~ bb3@5 f2@5 ~ db3@5 ~ a3@5 ~ eb4@5 gb2@5 ~ db3@5 ~ bb3@5 gb3@5 ~ eb2@5 ~ gb3@5 ~ bb3@5 eb3@5 ~ gb2@5 ~ a3@5 db4@5 ~ a3@5 ~ ab2@5 ~ eb3@5 ab3@5 ~]/3",
E: "[c4@5 ~ [ab2,ab3]@11 ~@3 c4@8 ~ db2@5 ab2@5 ~ f3@5 ~ ab3@5 bb3@5 ~ ab3@5 ~ db4@5 ~ bb3@5 f3@5 ~ a3@5 ~ db4@5 c4@5, ~@17 eb3@11 ~@68, ~@9 gb3@5 ~@34, ~@19 ab3@9 ~@68]/2", // Ab
F: "[~ bb2@5 ~ f3@5 ~ db4@5 f3@5 ~ ab2@5 ~ f3@5 c4@5 ~ f3@5 ~ gb2@5 ~ db3@5 bb3@5 ~ db3@5 ~ ab3@5 db3@5 ~ gb3@5 ~ db3@5 ~ f2@5 db3@5 ~ ab3@5 ~ db3@5 eb2@5 ~ bb2@5 ~ gb3@5 ~ bb2@5 ab2@5 ~]/3",
G: "[eb3@5 ~ gb3@5 bb3@5 ~ [ab2,c3,ab3]@11 ~ [a2,c3,a3]@11 [bb2,db3,bb3]@22 ~@24 db2@6 ~ ab2@6 f3@6 ~ ab3@6 ~ bb3@6 ~ ab3@6 ~ db4@6 ~ bb3@6 ~ gb3@6 eb4@6 ~ f4@6 ~ gb4@6 ~ bb4@13 ~@11]/4", // Ab Am Bbm
H: "[~@21 f5@37 gb3@6 ~ db4@6 ~ f4@6 ~ c5@6 ~ bb4@6 ~ f5@13 ~@7 ab3@6 ~ eb4@6 ~ f4@6 ~ c5@6 ~ bb4@6 f5@20 ~@8 ab2@6 ~ f3@6 ~ ab3@6 bb3@6 ~ ab3@6 ~ db4@6 ~ bb3@6 ~ db2@6 ~ ab2@6 ~ f3@6 ab3@6 ~ bb3@6 ~ ab3@6 ~ db4@6 ~ ab3@6 ~@11, ~@17 gb4@41 ~@110 ab4@55 ~@65, ~@18 bb4@40 ~@110 db2@3 ab5@52 ~@65, ~@19 db5@39 ~@111 db5@54 ~@65, ~@20 eb5@38 ~@112 eb5@53 ~@65]/6",
})).s("gm_piano").gain(0.2)
// other · violin · "Violin 2"
const violin = note("<~@25 A B C D E B F G H I J ~@6 K@5 ~@13 L@2 M N O@2 P Q R S@5 ~@11>".pickRestart({
A: "~@2 gb4 bb4", B: "f4@4 ~ f4 bb4 c5", C: "c5 db5 bb4 a4 bb4@3 bb4", D: "bb4 c5 ab4 gb4!2 ab4 f4 eb4",
E: "gb4@4 ~ db4!2 gb4", F: "c5 db5 bb4 a4 bb4@3 a4", G: "f5@3 f4 db5@4", H: "~ db4!3 db4@2 db4 ab4",
I: "eb4@2 gb4@2 c4@2 bb3 f4", J: "ab4 a4 bb4@2",
K: "[~@3 gb4@14 f4@14 eb4@27 f4@14 eb4@14 db4@27 eb4@14 db4@14 b3@13 bb3@14 c4@55 ~@17]/5",
// … 35 more lines
More by Joe Hisaishi
a town with an ocean viewA major · 90 bpmEl meu veí Totoro (Tonari no Totoro) per 2 acordionsF major · 130 bpmFriendsC major · 80 bpmKiki's Delivery Service - On a Clear DayE♭ major · 120 bpmMerry-Go-Round of LifeB♭ major · 144 bpmMononoke HimeE♭ major · 72 bpmMy Neighbor TotoroE♭ major · 120 bpmRondo Of The Sunflower HouseE♭ major · 87 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.