Strudelify

legend of zelda wind waker - outset island

Koji Kondo

KeyD♭ majorTempo120 bpm
0:00/0:00
// legend of zelda wind waker - outset island — Koji Kondo
// 120 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/114183; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. 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 · flute
const flute = note("<~@5 A B C D E ~@12 F G H I ~@10 J K L M ~@8 F G H I ~@10 J K L M ~@8 F G H I ~@4>".pickRestart({
  A: "~@14 ab5 ~", B: "f5 ~@5 eb5 ~ f5 ~@5 ab5 ~", C: "f5 ~@5 eb5 ~ f5 ~@5 ab5@2", D: "c6@3 bb5 ab5@3 gb5",
  E: "f5@3 db5 eb5@3 ~", F: "~@2 eb6 ~ eb6 ~@5 c6 ~ c6 ~@3", G: "~@2 db6 ~ db6 ~@5 bb5 ~ bb5 ~@3",
  H: "~@2 c6 ~ c6 ~@5 ab5 ~ ab5 ~@3", I: "~@2 bb5 ~ bb5 ~@5 gb5 ~ gb5 ~@3", J: "ab5 ~ db6 ~ ab5 ~ f5 ~ db5 ~@5 db5 eb5",
  K: "f5 ~ db5 ~ db5 ~ eb5@2 gb5 [f5,gb5] f5@2 eb5 ~@3", L: "ab5 ~ bb5 ~ ab5 ~ f5 ~ db5 ~@5 db5 eb5",
  M: "f5 ~ f5 ~ f5 ~ gb5@2 f5@4 eb5 ~@3",
})).s("gm_flute").gain(0.4)

// chords · string ensemble 1 · "Violins 1"
const string_ensemble_1 = note(`<
  A B C@2 ~@2 D E F G H I J K L M N O P E Q R S Q T U V W X Y ~@2 D E F Z D E AA AB N O N O AC AD AE@2 S Q T AF AG AH AI
  AJ ~@2 D E F Z D E AA AB N O N O AC AD AE@2 S Q T AF AG AH AI AJ
>`.pickRestart({
  A: "[ab4,db5] ~ [db5,f5] ~ [ab4,db5] ~ [f4,ab4] ~ [db4,f4]@4 ~@4", // Db5 Db Db5 Fm Db
  B: "~ [gb4,bb4] [ab4,c5] [bb4,db5] [c5,eb5] [bb4,db5] [c5,eb5] [db5,f5]", C: "[eb5,gb5]/2",
  D: "~ [db4,f4]!2 ~@2 [f4,ab4]!2 ~", E: "~ [gb4,bb4]!2 ~@2 [ab4,c5]!2 ~", F: "~ [f4,ab4]!2 ~@2 [db4,f4]!2 ~",
  G: "~@2 [db4,gb4]@2 [db4,gb4]@2 [db4,gb4]@2 [db4,f4]@4 [c4,eb4]@2 ab5 ~", // Gb5 Db Cm
  H: "f5 ~ [db4,f4]@2 [db4,f4]@2 eb5 ~ f5 ~ [f4,ab4]@2 [f4,ab4]@2 ab5 ~", // Db Fm
  I: "f5 ~ [gb4,bb4]@2 [gb4,bb4]@2 eb5 ~ f5 ~ [ab4,c5]@2 [ab4,c5]@2 ab5@2", // Gb Ab
  J: "~ [f4,ab4]!2 bb5 ~ [bb4,db5]!2 db6, c6@3 ~ db6@3 ~", K: "~ gb4!2 bb5 [ab4,c5,ab5]@2 [gb4,bb4] ~, ab5@3 ~@3 gb5@2",
  L: "~@8 [ab5,bb5] ~ [ab5,bb5] ~ [ab5,bb5] ~ [ab5,bb5] ~", M: "[ab5,bb5] ~@15", N: "~@8 ab5 ~ ab5 ~ ab5 ~ ab5 ~",
  O: "ab5 ~@15", P: "~ [eb4,gb4]!2 ~@2 [f4,ab4]!2 ~", Q: "~ [bb4,db5]!2 ~@2 [gb4,bb4]!2 ~",
  R: "~ [ab4,c5]!2 ~ [db5,f5]@2 [c5,eb5] ~", S: "~ [c5,eb5]!2 ~@2 [ab4,c5]!2 ~", T: "~ [ab4,c5]!2 ~@2 [f4,ab4]!2 ~",
  U: "~ [gb4,bb4]!2 ~@2 [eb4,gb4]!2 ab5", V: "f5@3 eb5, [db4,f4]", W: "f5@3 ab5, [c4,eb4]", X: "f5@3 eb5, [bb3,db4]",
  Y: "[ab3,c4,f5]", Z: "~ [db4,gb4]!3 [db4,f4]@2 [c4,eb4] ~",
  AA: "~@2 [f4,ab4]@2 [f4,ab4]@2 ~@4 [bb4,db5]@2 [bb4,db5]@2 f5 gb5", // Fm Bbm
  AB: "ab5 ~ gb4@2 gb4@2 bb5@2 [ab4,c5,ab5]@4 [gb4,bb4,gb5] ~@3, ~@2 ab5 ~ ab5 ~@11", // Ab Gb
  AC: "ab5@2 [eb4,gb4]@2 [eb4,gb4]@2 f5 ~ eb5@2 ~@2 [f4,ab4]@2 gb5@2, ~@2 db6 ~ ab5 ~@5 [f4,ab4]@2 ~@4, ~@11 f5@3 ~@2", // Ebm Fm
  AD: "[ab5,bb5] bb5 [gb4,bb4]@2 [gb4,bb4]@2 [gb5,ab5] ab5 ~@2 [ab4,c5]@2 [ab4,c5]@2 eb5 ~, ~@2 ab5@4 ~@2 gb5@4 f5 ~@3", // Absus2 Gb Gbsus2 Ab
  AE: "[f5 ~ db5@2 bb4@2 ~@4 [gb4,bb4]@2 [gb4,bb4]@2 ~@4 [ab4,c5]@2 [ab4,c5]@2 ~@2 f5@4 [c5,eb5]@2 ~@2, ~@2 bb4 ~ db5@20 db5@8]/2", // Gb Ab Cm
  AF: "~ [gb4,bb4]!2 ~@2 [eb4,gb4]!2 ~", AG: "[db4,f4]", AH: "[c4,eb4]", AI: "[bb3,db4]", AJ: "[ab3,c4,eb4]",
})).s("gm_string_ensemble_1").gain(0.25)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  A B@3 C@3 D E F C D E F G H I J K L M N C@10 O P E F O P E F G H I J Q@2 R N C@4 S T U@2 C@2 O P E F O P E F G H I J
  Q@2 R N C@4 S T U@2
>`.pickRestart({
  A: "db2@4 ~@6 f2 ~ ab2 ~ db3 ~", B: "[eb2@2 ~ eb2 ab2@20]/3", C: "db1 ~ db2 ~@3 db2 ~ db1 ~ db2 ~@3 db2 ~",
  D: "gb1 ~ gb2 ~@3 db2 ~ ab1 ~ ab2 ~@3 f1 ~", E: "f1 ~ f2 ~@3 db2 ~ bb1 ~ bb2 ~@3 bb1 ~",
  F: "eb1 ~ eb2 ~@3 eb1 ~ ab1 ~ ab2 ~@3 ab1 ~", G: "gb1 ~ gb2 ~@3 db2 ~ ab1 ~ ab2 ~@3 bb1 ~",
  H: "b0 ~ b1 ~@3 gb1 ~ b0 ~ b1 ~@3 gb1 ~", I: "f1 ~ f2 ~@3 db2 ~ f1 ~ f2 ~@3 db2 ~",
  J: "bb1 ~ bb1 ~@3 f1 ~ bb1 ~ bb1 ~@3 f1 ~", K: "eb1 ~ eb2 ~@3 bb1 ~ eb1 ~ eb2 ~@3 eb3@2, db3@8 bb2@6 bb1 ~",
  L: "eb1 ~ eb2 ~@3 bb1 ~ eb1 ~ eb2 ~@3 [bb1,ab2] bb2, db3@4 ab2@3 ~", // Bb7
  M: "ab2@2 ~@4 eb2 ~ [bb2,db3]@2 [ab2,bb2,c3] ~ [bb2,db3] ~ [eb2,db3,f3] ~, ab1 ~ ab2@6 bb1 ~@7", // Bbm Ab Bbm Db
  N: "ab1 ~ ab1 ~@3 eb1 ~ ab1 ~ ab1 ~@3 eb1 ~, [c3,eb3]@3 ab2@5", O: "db1 ~ db2 ~@3 ab1 ~ f1 ~ f2 ~@3 db2 ~",
  P: "gb1 ~ gb2 ~@3 db2 ~ ab1 ~ ab2 ~@3 gb1 ~", Q: "eb1 ~ eb2 ~@3 bb1 ~ eb1 ~ eb2 ~@3 bb1 ~",
  R: "ab1 ~ ab2 ~@3 eb2 ~ [bb2,db3]@2 [ab2,c3] ~ [bb2,db3] ~ [eb2,db3,f3] ~, ~@8 ab1 ~@7", // Bbm Ab Bbm Db
  S: "db1 ~ db2 ~ [ab2,bb2] ~ db2 ~ db1 ~ [db2,gb2,ab2] ~@3 db2 ~, ~@5 ab2@5 ~ gb2@5", // Absus2 Dbsus4
  T: "[db1,f2,gb2] ~ db2 ~@3 eb2@2 db2@2 c2@2 db2 ~ [db2,eb2] ~, ~ f2@5 db2 ~ db1 ~ db2 ~@5", // Gbmaj7 Dbsus2
  U: "[db2@2 db2@4 db2 ~ db1 ~ db2 ~@3 db2 ~ db1 ~ db2 ~@3 db2 ~ db1 ~ db2 ~@3 db2 ~, db1 ~@5 ab1@26]/2",
})).s("gm_acoustic_bass").gain(0.3)

// bass · tuba · "Bb Tuba"
const bass_2 = note(`<
  ~@4 A@3 B C D A B C D E F G H I@2 J K L@10 M N C D M N C D E F G H I@2 O K L@10 M N C D M N C D E F G H I@2 O K L@8
>`.pickRestart({
  A: "db2 ~ db3 ~@3 db3 ~ db2 ~ db3 ~@3 db3 ~", B: "gb2 ~ gb3 ~@3 db3 ~ ab2 ~ ab3 ~@3 f2 ~",
  C: "f2 ~ f3 ~@3 db3 ~ bb2 ~ bb3 ~@3 bb2 ~", D: "eb2 ~ eb3 ~@3 eb2 ~ ab2 ~ ab3 ~@3 ab2 ~",
  E: "gb2 ~ gb3 ~@3 db3 ~ ab2 ~ ab3 ~@3 bb2 ~", F: "b1 ~ b2 ~@3 gb2 ~ b1 ~ b2 ~@3 gb2 ~",
  G: "f2 ~ f3 ~@3 db3 ~ f2 ~ f3 ~@3 db3 ~", H: "bb1 ~ bb2 ~@3 f2 ~ bb1 ~ bb2 ~@3 f2 ~",
  I: "eb2 ~ eb3 ~@3 bb2 ~ eb2 ~ eb3 ~@3 bb2 ~", J: "ab2 ~ ab3 ~@3 eb3 ~ bb2 ~ bb3 ~@3 eb3 ~",
  K: "ab1 ~ ab2 ~@3 eb2 ~ ab1 ~ ab2 ~@3 eb2 ~", L: "db2 ~ db3 ~@3 ab2 ~ db2 ~ db3 ~@3 ab2 ~",
  M: "db2 ~ db3 ~@3 ab2 ~ f2 ~ f3 ~@3 db3 ~", N: "gb2 ~ gb3 ~@3 db3 ~ ab2 ~ ab3 ~@3 gb2 ~",
  O: "ab2 ~ ab3 ~@3 eb3 ~ ab2 ~ ab3 ~@3 eb3 ~",
})).s("gm_tuba").gain(0.3)

// other · orchestral harp · "Harp"
const orchestral_harp = note("<~@2 A B ~@10 C D C D ~@22 C D C D ~@22 C D C D ~@12>".pickRestart({
  A: "ab3 c4 [eb4,gb4] ab4 c4 eb4 [gb4,ab4] c5 gb4 ab4 [c5,eb5] gb5 c5 eb5 [gb5,ab5] c6", B: "eb6 ab6@15",
  C: "~@10 db4 ~ ab4 ~ db5 ~", D: "[f4,f5] ~ [f4,db5] ~ [f4,ab4] ~ f4 ~ db4 ~@7",
})).s("gm_orchestral_harp").gain(0.15)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 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 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 A B
>`.pickRestart({
  A: "~@2 x!3 ~@5 x ~ x ~@3", B: "~ x!2 ~@2 x!2 ~",
})).gain(0.3)

stack(flute, string_ensemble_1, bass, bass_2, orchestral_harp, tambourine)

More by Koji Kondo