Strudelify

Sunrise (Jazz Fusion Composition)

kgom

KeyB minorTempo80 bpm
0:00/0:00
// Sunrise (Jazz Fusion Composition) — kgom
// 80 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5462903; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 24 bars on a 16-step grid, each part at one level. 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.

// chords · epiano1 · "ピアノ"
const epiano1 = note("<A B C D E F G H I@2 J K L M N@2 A B C D E F O P>".pickRestart({
  A: "[g#3,b3,c#4,e4]@15 ~", B: "[a#3,b3,d#4,f#4]@2 ~ [a#3,b3,d#4,f#4] ~@2 [f3,a#3,b3,d#4,f4]@9 ~",
  C: "[a3,c#4,e4,g#4]@8 ~ [a3,c#4,e4,g#4] ~@2 [c#4,e4,g#4,b4]@4", // Amaj7 C#m7
  D: "[b3,d4,f#4,a4]@8 ~ [b3,d4,f#4,a4] ~@2 [a3,b3,d4,f#4]@2 ~@2", // Bm7
  E: "[a3,c#4,e4,g#4]@2 [a3,c#4,e4,g#4] [c#4,e4,g#4,b4]", F: "[a#3,e4,g4,d5]@2 ~ b4, ~ [a3,d#4,g4,d5]",
  G: "[g3,b3,d4,f#4]@2 ~ [g3,b3,d4,f#4]@5 [g3,b3,d4,f#4]@2 ~ [g3,b3,d4,f#4]@5", // Gmaj7
  H: "[c#4,d4,f#4,a4]@2 ~ [c#4,d4,f#4,a4]@5 [b3,d4,f4,g#4]@2 ~ [b3,d4,f4,g#4]@5", // Dmaj7 Bdim
  I: "[b3,c4,e4,g4] ~ [b3,c4,e4,g4] ~@2 [b3,c4,e4,g4] ~@2 [b3,c4,e4,g4] ~@2 [b3,c4,e4,g4] ~@2 [b3,c4,e4,g4]@2", // Cmaj7
  J: "[b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~@2 [b3,d4,f#4,a4] ~@3 [b3,d4,f#4,a4] ~@2 [b3,d4,f#4,a4] ~ [b3,d4,f#4,a4]@2", // Bm7
  K: "[b3,d4,f#4,a4] ~ [b3,d4,f#4,a4] ~@2 [b3,d4,f#4,a4] ~@2 [b3,d4,f#4,a4] ~@2 [b3,d4,f#4,a4] ~@2 [b3,d4,f#4,a4]@2", // Bm7
  L: "[a3,a#3,d4,f4] ~ [a3,a#3,d4,f4] ~@2 [a3,a#3,d4,f4] ~@2 [a3,a#3,d4,f4] ~ [a3,a#3,d4,f4] ~@2 [a3,a#3,d4,f4] ~@2", // A#maj7
  M: "[a#3,c#4,e4,a4] ~ [a#3,c#4,e4,a4] ~@2 [a#3,c#4,e4,a4] ~@2 [a#3,c#4,e4,g#4] ~ [a#3,c#4,e4,g#4] ~@2 [a#3,c#4,e4,g#4] ~@2", // A A#m7b5
  N: "[[g3,a3,c4,e4,g4]@3 [f3,a3,c4,e4,f4] ~@4 [e3,f3,a3,c4,e4]@3 [f3,a3,c4,e4,f4] ~@2 [g#3,c4,d4,g4]@13 ~@5]/2", // Am7 Fmaj7 G#maj7
  O: "[g3,b3,d4,f#4,b4,e5]@8 [g3,b3,d4,f#4,d5,a5]@2 ~ [g3,b3,d4,f#4,b4,f#5]@5", // Gmaj7
  P: "[c#4,d4,f#4,a4,c#5,e5]@6 ~ [c#4,d4,f#4,a4,c#5,e5] ~@8", // Dmaj7
})).s("gm_epiano1").gain(0.32)

// bass · electric bass finger · "エレキベース"
const bass = note("<A B C D E F G H I@2 J K L M N@2 O B C D P Q R S>".pickRestart({
  A: "a1@2 e2 c#2", B: "g#1@2 ~ g#1 ~@2 c#2@10, ~@6 c2 ~@9", C: "f#1@8 ~ e2@3 c#2@2 a1@2", D: "g1@8 ~ g1@3 g1 d2 a2@2",
  E: "a1@3 g1 f#1@2 e2 c#2", F: "f#1@5 g1 ~ a1 b1@8", G: "e1@2 ~ b1 b1@3 f#1 e1@2 ~ b1 b1@3 ~",
  H: "e1@2 ~ b1 b1@3 f#1 e1@2 ~ b1@4 ~", I: "c2@2 ~ g2 g2@3 b1 c2@2 ~ g2 g2@3 b1",
  J: "b1@2 ~ f#2 f#2@3 a#1 b1@2 ~ f#2 f#2@3 a#1", K: "b1@2 ~ f#2 f#2@3 a#1 b1@2 ~ f#2 f#2@2 f#1@2",
  L: "g1@2 ~ d2 d2@3 f#1 g1@2 ~ d2 d2@3 c#2", M: "c2@2 ~ g2 g2@3 b1 c2@2 ~ g1 g1@2 e1@2",
  N: "[f1@3 f1 ~@4 f1@3 f1 ~@2 e1@6 e1 b1 e2@6 e1@4]/2", O: "a1@4 a2@2 e2 c#2", P: "a1@3 g1 f#1@2 e2 f2",
  Q: "f#2@5 g1 ~ a1 b1@4 d2@4", R: "e2@6 e2 [g1,b1] e1@8, d#2 ~@15", S: "e1@6 ~ e1 ~@8",
})).s("gm_electric_bass_finger").gain(0.24).pan(0.6)

stack(epiano1, bass)