Strudelify

Re:birth day (Game Version)

elements garden

KeyG majorTempo170 bpm
0:00/0:00
// Re:birth day (Game Version) — Elements Garden
// 170 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5820401; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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 · church organ · "Organ"
const church_organ = note("<~ A@2 B@2 ~@20 C D E F C D E F ~@55>".pickRestart({
  A: "[e4,e5]/2", B: "[e4,e5,g5]/2", C: "[c4,e4,g4]", D: "[d4,f#4,a4]@3 [c4,e4,g4]@3 [b3,d4,f#4]@2", E: "[g3,b3,d4]",
  F: "[d4,f#4,a4]@3 [f#4,a4,c5]@3 [e4,g4,b4]@2", // D F#dim Em
})).s("gm_church_organ").gain(0.1)

// chords · slap bass 1 · "Atmosphere Synthesizer"
const slap_bass_1 = note(`<
  ~@3 A@2 ~@28 B C B C ~@6 D E D F D E D E G H G H G H G H I J I J I J I J D E D F K L ~@8 D E D M ~@3
>`.pickRestart({
  A: "[g5@3 f#5@3 d5@6 a4@4]/2", B: "d6 b6 a6 g6", C: "d6 b6 g6 e6", D: "d6@2 ~ a5@2 ~ g5@2, ~ d6@3, ~@5 a5@3",
  E: "~ d5@2 ~@3 a5@2, g5!2, ~@3 d5@5", F: "~ f#5@2 ~@3 a5@2, g5!2, ~@3 f#5@5",
  G: "d6 ~@2 d6, ~ d6@2 ~, ~@3 g5@5, ~@5 d5@3", H: "~@7 g5, d6!2, ~ g5@6 ~, ~@3 d5@5, ~@3 a5",
  I: "d6 a5 g5 d6 a5 f#5 d6 a5", J: "g5 d6 a5 g5 d6 a5 g5 d5", K: "g5", L: "a5 ~",
  M: "~ f#5@2 ~ g5@2 g5@2, g5 ~, ~@3 f#5@5",
})).s("gm_slap_bass_1").gain(0.13)

// bass · fretless bass · "Brightness Synthesizer"
const bass = note(`<
  ~@3 A@2 B C D E B C D@2 F G H@2 I J K L I M K N B O P Q B@2 D R S T U V W X Y@2 Z@2 AA AB AA AC AD AE AD AF AG AH AI
  AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB B C D E B C D@2 BC@7
>`.pickRestart({
  A: "[g5@3 f#5@3 d5@6 a4@4]/2", B: "c2!8", C: "c2 d2!7", D: "e2!8", E: "e2 d2!7",
  F: "c2@12 [c2,c#2] [d2,d#2,e2] [f2,f#2,g2] [g#2,a2,a#2]", G: "c3, b2 ~@15", H: "[c3@6 g3@6 c3@12 d2!5 ~@3]/2",
  I: "c2!4 ~@4", J: "~ c2!4 b1 g1@2", K: "e1!4 ~@4", L: "~ e2 d2 e2 d2!4", M: "~ c2!7",
  N: "~@2 [c2,c#2] [d2,d#2,e2,f2] g2@2 c2@2 e2@2 e2@2 d2@2 d2@2, ~@4 f#2 ~@11", // C#maj7
  O: "c2@2 c2@2 c2@2 c2@2 c2@2 c2@2 c2@2 c2 [c#2,d2]", P: "e2!8, d#2 ~@15", Q: "e2!7 d2", R: "d2!8",
  S: "d5 b5 a5 g5, b1", T: "d5 ~ g5 [c2,e5], c2@3 g2@3 ~@2, ~ b5 ~@2", U: "d5 b5 a5 g5, d2", V: "d5 b5 g5 e5, e2",
  W: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", X: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  Y: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", Z: "[d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3@6 ~@12]/2",
  AA: "g2!8, d6 d6@3, ~@3 a5@2 a5@3, ~@3 g5", AB: "g2!8, g5!2, ~ d5@2 d5@5, ~@3 a5",
  AC: "g2!3 ~ f#2!4, g5!2, ~ f#5@2 [g2,f#5]@5, ~@3 a5", AD: "e2!8, d6 d6@3, ~@3 a5@2 a5@3, ~@3 g5",
  AE: "e2!8, g5!2, ~ d5@2 d5@5, ~@3 a5", AF: "e2!3 ~ d2!4, g5!2, ~ d5@2 [e2,d5]@5, ~@3 a5",
  AG: "c2!8, d6 d6@2 d6, ~@3 g5@5, ~@5 d5@3", AH: "c2!7 [c2,g5], d6!2, ~ g5@6 ~, ~@3 d5@5, ~@3 a5",
  AI: "b1!8, d6 d6@2 d6, ~@3 g5@5, ~@5 d5@3", AJ: "b1!7 [b1,g5], d6!2, ~ g5@6 ~, ~@3 d5@5, ~@3 a5",
  AK: "a1!8, d6 d6@2 d6, ~@3 g5@5, ~@5 d5@3", AL: "a1!7 [a1,g5], d6!2, ~ g5@6 ~, ~@3 d5@5, ~@3 a5",
  AM: "d6 ~@2 [d2,d6], d2@3 g5@5, ~ d6@2 ~, ~@3 d2@3 ~@2, ~@5 d5@3", // D
  AN: "~@4 d2!3 [d2,g5], d6!2, ~ g5@6 ~, ~ d2@3 ~@2 a5@2, ~@3 d5@5", // G5
  AO: "[e2,d6] [e2,a5] [e2,g5] [e2,d6] [e2,a5] [e2,f#5] [e2,d6] [e2,a5]", // E7 A5 Em E7 A5 Esus2 E7 A5
  AP: "[e2,g5] [e2,d6] [e2,a5] [e2,g5] [e2,d6] [e2,a5] [e2,g5] [e2,d5]", // Em E7 A5 Em E7 A5 Em E7
  AQ: "[d#2,d6] [d#2,a5] [d#2,g5] [d#2,d6] [d#2,a5] [d#2,f#5] [d#2,d6] [d#2,a5]", // D#maj7 D#dim D# D#maj7 D#dim D#m D#maj7 D#dim
  AR: "[d#2,g5] [d#2,d6] [d#2,a5] [d#2,g5] [d#2,d6] [d#2,a5] [d#2,g5] [d#2,d5]", // D# D#maj7 D#dim D# D#maj7 D#dim D# D#maj7
  AS: "[d2,d6] [d2,a5] [d2,g5] [d2,d6] [d2,a5] [d2,f#5] [d2,d6] [d2,a5]", // D D5 G5 D D5 D D5
  AT: "[d2,g5] [d2,d6] [d2,a5] [d2,g5] [d2,d6] [d2,a5] [d2,g5] [d2,d5]", // G5 D D5 G5 D D5 G5 D
  AU: "[c#2,d6] [c#2,a5] [c#2,g5] [c#2,d6] [c#2,a5] [c#2,f#5] [c#2,d6] [c#2,a5]", // Dmaj7 F#m C#dim Dmaj7 F#m F#5 Dmaj7 F#m
  AV: "[c#2,g5] [c#2,d6] [c#2,a5] [c#2,g5] [c#2,d6] [c#2,a5] [c#2,g5] [c#2,d5]", // C#dim Dmaj7 F#m C#dim Dmaj7 F#m C#dim Dmaj7
  AW: "c2!8, d6 d6@3, ~@3 a5@2 a5@3, ~@3 g5", AX: "c2!8, g5!2, ~ d5@2 d5@5, ~@3 a5",
  AY: "b1!8, d6 d6@3, ~@3 a5@2 a5@3, ~@3 g5", AZ: "e2!8, g5!2, ~ f#5@2 f#5@5, ~@3 a5", BA: "[c2,g5]", BB: "[d2,a5] ~",
  BC: "[d6@2 ~ a5@2 ~ g5@2 ~ d5@2 ~@3 a5@2 d6@2 ~ a5@2 ~ g5@2 ~ f#5@2 ~ g5@2 g5@2 ~@24, c2, ~@2 d6@6 ~@3 d5@5 ~@5 a5@3 g5@4 ~@28, ~@5 a5@3 g5@4 g5@4 ~@2 d6@6 ~@3 f#5@5 ~@24]/7",
})).s("gm_fretless_bass").gain(0.13)

// other · lead 1 square · "Sine Synthesizer"
const lead_1_square = note(`<
  ~@2
  [d5 g5 f#5 d5 g5 f#5 d5 g5]
  [f#5 d5 g5 f#5 d5 g5 f#5 d5]
  [g5 f#5 d5 g5 f#5 d5 b4 g4]
  ~@83
>`).s("gm_lead_1_square").gain(0.14)

// other · lead 1 square · "Sine Synthesizer" · soft notes
const lead_1_square_soft = note("<~ [g5 f#5 d5 g5 f#5 d5 g5 f#5] ~@86>").s("gm_lead_1_square").gain(0.07)

// other · string ensemble 1 · "String Synthesizer"
const string_ensemble_1 = note(`<
  ~@4 A B@3 C D@2 E@2 ~@30 F G H I F G H I J K L J M@2 N O P@2 H I Q@2 R S K T U V K W K@2 X C Y Z E@2 ~@7
>`.pickRestart({
  A: "~@12 [a4,a5] [b4,b5] [d5,d6] [f#5,f#6]", B: "[[g5,g6]@3 [d5,d6]]/3", C: "[c5,c6] [b4,b5] [a4,a5]@10 [b4,b5]@4",
  D: "[[g4,g5]@3 [f#4,f#5]]/2", E: "[g4,g5]/2", F: "[g5,g6]@14 [f#5,f#6] [g5,g6]", G: "[a5,a6]@14 [g5,g6] [a5,a6]",
  H: "[c6,c7]", I: "[b5,b6] [a5,a6]", J: "[d6,d7]", K: "[g5,g6]", L: "[b5,b6]",
  M: "[[e5,e6]@10 [f#5,f#6]@2 [g5,g6] [a5,a6]@3]/2", N: "d6 f#6 a6 d6 f#6 a6 d6 f#6", O: "a6 d6 f#6 a6 d6 f#6 g6 a6",
  P: "[[g5,g6]@3 [a5,a6]]/2", Q: "[g5,g6]/2", R: "[a5,a6]@3 [b5,b6]", S: "[g5,g6] [d5,d6]",
  T: "[b5,b6]@6 [a5,a6] [g5,g6]", U: "[g5,g6] [a5,a6]", V: "[g5,g6]@4 [c6,c7] [b5,b6] [a5,a6] [g5,g6]", W: "[a5,a6] ~",
  X: "[g5,g6] [d5,d6]@3", Y: "[g4,g5]", Z: "[g4,g5] [f#4,f#5]",
})).s("gm_string_ensemble_1").gain(0.11)

// chords · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
  ~@5 A B C D A B C@2 E@4 F G H I F J H K L@2 M@2 L@2 M N O P Q R S T U@2 V@2 W@3 X Y@3 Z AA@2 AB@2 AC@2 AD AE AF@2 AG@2
  AH@2 AI@2 AA@2 AJ Y AK AL A B C D A B C@2 AM@7
>`.pickRestart({
  A: "[c2,g2,c3,g3]!8", B: "[c2,g2,c3,g3] [d2,a2,d3,a3]!7", C: "[e2,b2,e3,b3]!8", D: "[e2,b2,e3,b3] [d2,a2,d3,a3]!7",
  E: "[~@32 g4@6 c4@6 g3@12 d2!5 ~@3, [c2,g2,c3]@7 ~, g3@11 ~@5]/4", F: "[c3,g3]!4 ~ [c3,c4]!3",
  G: "[c3,c4] [d3,d4]!4 [e3,e4] [e3,e4]@2", H: "[e2,b2]!4 ~ [g3,g4]!3", I: "[g3,g4] [f#3,f#4]!4 [d3,d4]!3",
  J: "[f#3,f#4] [g3,g4] ~ [f#3,f#4]@2 [d3,d4]!3", // F# G F# D
  K: "[g3,g4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [b3,b4]@2 [b3,b4]@2 [b3,b4]!4", // G A B
  L: "[c3,g3] ~ [c3,g3] ~ [c3,g3]@2 [c3,g3] ~ [c3,g3]@2 [c3,g3] ~ [c3,g3] ~ [c3,g3]@2", // C5
  M: "[e2,b2] ~ [e2,b2] ~ [e2,b2]@2 [e2,b2] ~ [e2,b2]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2]@2", // E5
  N: "[d2,a2] ~ [d2,a2] ~ [d2,a2]@2 [d2,a2] ~ [d2,a2]@2 [d2,a2] ~ [d2,a2] ~ [d2,a2]@2", // D5
  O: "b3@3 ~@3 [g3,g4]@2, b2, ~@3 [b3,b4]@5", P: "c4@3 ~@3 [g3,g4]@2, c3, ~@3 [c4,c5]@5",
  Q: "d4@3 ~@3 [g3,g4]@2, d3, ~@3 [d4,d5]@5", R: "~@3 [d3,d4], [e3,e4], ~@3 [g4,g5]@5",
  S: "[a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~ [a1,e2,a2,e3] ~", // A5
  T: "[b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~ [b1,f#2,b2,f#3] ~", // B5
  U: "[c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~ [c2,g2,c3,g3] ~", // C5
  V: "[[d2,a2,d3,a3]@2 [d2,a2,d3,a3] ~ [d2,a2,d3,a3] ~ [d2,a2,d3,a3]@2 [d2,a2,d3,a3] ~ [d2,a2,d3,a3] ~ [d2,a2,d3,a3] ~ [d2,a2,d3,a3]@6 ~@12]/2", // D5
  W: "[g2,d3]!8", X: "[g2,d3]!4 [f#2,d3]!4", Y: "[e2,b2]!8", Z: "[e2,b2]!4 [d2,a2]!4", AA: "[c3,g3]!8", AB: "[b2,g3]!8",
  AC: "[a2,e3]!8", AD: "[d3,a3]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3]@2 [d3,a3] ~",
  AE: "[d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3]@2", AF: "[e3,b3]!8",
  AG: "[d#3,b3]!8", AH: "[d3,a3]!8", AI: "[c#3,a3]!8", AJ: "[b2,f#3]!8", AK: "[c3,g3]", AL: "[d3,a3] ~",
  AM: "[~@11 g3@17, [c2,g2,c3], g3@11 ~@17, ~@2 g4 ~@4, ~@19 c4@5 ~@32]/7", // C5
})).s("gm_overdriven_guitar").gain(0.13).pan(1)

// chords · tubular bells · "Chimes"
const tubular_bells = note(`<
  ~ A@2 B@2 ~@28 C D E F G H I@2 J@2 K L K M K L K L N O N O N O N O P Q P Q P Q P Q K L K M R S ~@8 K L K T ~@3
>`.pickRestart({
  A: "[e4,e5]/2", B: "[[g4,g5]@3 [f#4,f#5]@3 [d4,d5]@10]/2", C: "b4@3 b4@3 g4@2", D: "c5@3 c5@3 g4@2",
  E: "d5@3 d5@3 g4@2", F: "d5@3 c5@3 b4@2", G: "a4@3 a4@3 a4@2", H: "b4@3 b4@3 b4@2", I: "[c5@3 c5@3 c5@3 c5@3 c5@4]/2",
  J: "[d5@3 d5@3 d5 d5@3 ~@6]/2", K: "d5@2 ~ a4@2 ~ g4@2, ~ d5@3, ~@5 a4@3", L: "~ d4@2 ~@3 a4@2, g4!2, ~@3 d4@5",
  M: "~ f#4@2 ~@3 a4@2, g4!2, ~@3 f#4@5", N: "d5 ~@2 d5, ~ d5@2 ~, ~@3 g4@5, ~@5 d4@3",
  O: "~@7 g4, d5!2, ~ g4@6 ~, ~@3 d4@5, ~@3 a4", P: "d5 a4 g4 d5 a4 f#4 d5 a4", Q: "g4 d5 a4 g4 d5 a4 g4 d4", R: "g4",
  S: "a4 ~", T: "~ f#4@2 ~ g4@2 g4@2, g4 ~, ~@3 f#4@5",
})).s("gm_tubular_bells").gain(0.08)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C D E D E D E D F G ~@2 H I J I J I J I J K@7 L M@4 K@4 N ~ O@7 P Q J Q J Q J D F R S R T R S R U Q J Q V W ~
  D E D E D E X U G ~@6
>`.pickRestart({
  A: "x ~@4 x ~@2", B: "x ~@7 x ~@2 x ~@4", C: "x ~@7 x!8", D: "~ x!2 ~ x!2 ~ x", E: "x ~@3 x ~ x ~@3 x ~@3 x!2",
  F: "x ~ x!2 ~@4", G: "x", H: "~@3 x", I: "x ~@3 x!2 ~@2", J: "~ x ~@2 x!2 ~@2", K: "x!4", L: "x!2 ~@2 x ~ x ~",
  M: "x ~@6 x", N: "~@7 x", O: "x!8", P: "x ~ x ~ x ~ x!3 ~@3 x ~@3", Q: "x ~@3 x!2 ~ x", R: "x!2 ~ x ~@2 x!2",
  S: "x ~@5 x ~@5 x ~ x!2", T: "x ~@2 x ~@4", U: "x ~@2 x ~ x ~@2", V: "~ x ~@6", W: "x ~@13 x!2", X: "x ~@2 x ~@2 x ~",
})).gain(0.17)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B A B A B A C ~@2 D E F G F G F G F H G@7 I ~@8 J ~ K@7 L G@6 A C K C K C K C K M G@3 N ~ O A B A P A B Q R ~@7
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~ x ~@2 x ~ x ~", C: "~ x ~@2 x ~@3", D: "~@4 x ~@3 x!5 ~ x ~", E: "~@2 x ~ x ~@3 x!4 ~@4",
  F: "~@2 x ~@4 x", G: "~ x ~ x", H: "~@4 x ~@5 x ~ x!4", I: "~@4 x ~ x!4 ~@6", J: "x!2 ~@4 x!2 ~@4 x!2 ~@2", K: "~ x",
  L: "~@10 x!6", M: "~@2 x ~@5 x ~@3 x!4", N: "~@4 x ~ x!3 ~@7", O: "x", P: "~@2 x ~@5 x!2 ~@6",
  Q: "~@2 x!4 ~@2 x!4 ~@4", R: "~@8 x!2 ~@2 x!4",
})).gain(0.17)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ [~ x ~ x]!3 [~ x ~@2] ~@8 [x!5 ~@3 x!5 ~ x ~] [~@2 x ~ x!9 ~@3] [x!4 ~@12] ~@72>")
  .gain(0.08)

// drums · low tom
const low_tom = s("lt").struct("<[~@14 x!2] ~@87>").gain(0.17)

// drums · hihat
const hihat = s("hh").struct("<~@36 [~@12 x!2 ~@2] [~ x!3] [x!4] ~@49>").gain(0.11)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 A ~@19 B ~@8 C ~@16 D ~@3 D ~@7 D ~@5 E ~@2 F G ~@7>".pickRestart({
  A: "~@14 x!2", B: "~@5 x!3", C: "~@4 x!2 ~@4 x!2 ~@4", D: "~@6 x!2", E: "~@12 x!3 ~", F: "~@15 x", G: "x ~ x!4 ~@10",
})).gain(0.17)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@16 A B C B C B C B D E@7 F ~@3 G ~@2 C@2 ~@10 B C B C B C ~@2 B C@3 B C@2 D B C B H ~ H ~@15
>`.pickRestart({
  A: "~@3 x", B: "~ x!3", C: "x!4", D: "x!2 ~@2", E: "~ x ~ x ~ x ~ x", F: "~ x ~@6", G: "~@7 x", H: "x",
})).gain(0.17)

// drums · high tom
const high_tom = s("ht").struct("<~@12 A ~@28 B ~@16 C ~@3 C ~@7 C ~@5 D ~@2 E F ~@7>".pickRestart({
  A: "~@10 x!3 ~@3", B: "~@2 x!2 ~@4 x!2 ~@6", C: "~@5 x ~@2", D: "~@10 x!2 ~@4", E: "x ~@2 x ~@2 x!2",
  F: "~@3 x ~ x ~@2",
})).gain(0.17)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A B A B A B A C D ~@3 D ~ D ~ D ~ D E D ~@3 D ~@2 F D ~@3 D ~@3 G ~ H@7 I D ~ D ~ D ~ A C D ~@3 D ~@2 E D ~ D F D
  ~ A B A J A B ~@2 D ~@6
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~ x ~@2 x ~ x ~", C: "~ x ~@2 x ~@3", D: "x", E: "~ x", F: "~ x ~@2", G: "~@7 x", H: "x!4",
  I: "x!3 ~", J: "~ x ~@6",
})).gain(0.17)

// drums · ride
const ride = s("rd").struct("<~@33 [~ x!3] [x!4]!2 [x!3 ~] ~@51>").gain(0.11)

stack(
  church_organ, slap_bass_1, bass, lead_1_square, lead_1_square_soft, string_ensemble_1, overdriven_guitar,
  tubular_bells, kick, snare, snare_soft, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by elements garden