Strudelify

Sous le vent (feat. Celine Dion)

Celine Dion

KeyF♯ majorTempo71 bpm
0:00/0:00
// Sous le vent (feat. Celine Dion) — Celine Dion
// 71 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Distortion Guitar.
setcpm(71/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 · acoustic guitar steel · "Steel Str.Guitar"
const acoustic_guitar_steel = note(`<
  ~@2 A B A C D E A C D E F G H I F G H J K L M N K L M N O P Q R O P Q S T U V W X Y Z AA X Y Z AB X Y Z AA X Y Z AC
  ~@5
>`.pickRestart({
  A: "[c#3,f#3,a3,c#4,f#4]@3 ~@3 [c#3,f#3]@2 [d3,f#3,a3,d4,f#4]@5 ~ [a3,d4]@2, ~@3 [c#3,f#3]@3 ~@7 [d3,f#3]@3, ~ [a3,c#4,f#4] ~@2", // F#m F#5 D D5 F#5 D F#m
  B: "[a2,c#3,e3,a3,c#4]@4 ~@3 [e3,a3] [a2,c#3,e3,a3]@8, ~@2 [a2,c#3]!2 ~@4, ~@5 [e3,a3]@2 ~@9", // A A5 A A5
  C: "[e3,a3,c#4]@3 ~ [a3,c#4]@3 e3 [a2,e3,a3,c#4]@3 e3 [g#2,e3,a3,c#4]@3 e3, ~@3 e3@4 ~@9", // A Amaj7
  D: "[c#3,f#3,a3,c#4,f#4]@3 ~@3 [c#3,f#3]@2 [d3,f#3,a3,d4,f#4]@5 ~ [a3,d4]@2, f#2@7 ~ d2@8, ~@3 [c#3,f#3]@3 ~@7 [d3,f#3]@3, ~ [a3,c#4,f#4] ~@2", // F#m F#5 D D5 F#5 D F#m
  E: "[e3,a3,c#4]@3 ~ [a3,c#4]@3 e3 [e2,e3,g#3,b3,e4]@8, a2@7 ~@9, ~@3 e3@4 ~@9", // A E
  F: "[b2,f#3,b3,d4]@3 ~@3 b2@2 [b2,f#3,b3,d4]@4 [c#3,e3,a3,c#4]@4, ~@3 b2@3 ~@10, ~ [f#3,b3,d4] ~@2", // Bm A Bm
  G: "[d3,f#3,a3,d4]@3 ~@3 d3@2 [d3,f#3,a3,d4]@4 [g#2,b2,e3,g#3,b3]@4, ~@3 d3@3 ~@10, ~ [f#3,a3,d4] ~@2", // D E D
  H: "a2 ~@3 a2!2 [c#3,e3,a3,c#4]@2, [e3,a3,c#4]@4 [e3,a3,c#4]@3 e3@5 ~@4, ~ a2@2 a2 [a3,c#4]@2 ~@2", // A
  I: "e3@2 ~@6 e3@2 e3@2 ~@2 d3 c#3, [g#3,b3,e4]@4 [g#3,b3,e4]@3 g#3@5 [e3,g#3,b3,e4]@4, ~ e3@2 e3 [b3,e4]@2 ~@2", // E E5
  J: "e3@2 ~@6 [e3,b3,e4]@7 ~, [g#3,b3,e4]@4 [g#3,b3,e4]@3 g#3@8 ~, ~ e3@2 e3 ~@4", // E5 E
  K: "[d#3,g#3,b3,d#4,g#4]@3 ~@3 [d#3,g#3]@2 [e3,g#3,b3,e4,g#4]@5 ~ [b3,e4]@2, ~@3 [d#3,g#3]@3 ~@7 [e3,g#3]@3, ~ [b3,d#4,g#4] ~@2", // G#m G#5 E E5 G#5 E G#m
  L: "[f#3,b3,d#4]@3 ~ [b3,d#4]@3 f#3 [b2,f#3,b3,d#4]@3 f#3 [a#2,f#3,b3,d#4]@3 f#3, ~@3 f#3@4 ~@9", // B Bmaj7
  M: "[d#3,g#3,b3,d#4,g#4]@3 ~@3 [d#3,g#3]@2 [e3,g#3,b3,e4,g#4]@5 ~ [b3,e4]@2, g#2@7 ~ e2@8, ~@3 [d#3,g#3]@3 ~@7 [e3,g#3]@3, ~ [b3,d#4,g#4] ~@2", // G#m G#5 E E5 G#5 E G#m
  N: "[f#3,b3,d#4]@3 ~ [b3,d#4]@3 f#3 [f#2,f#3,a#3,c#4,f#4]@8, b2@7 ~@9, ~@3 f#3@4 ~@9", // B F#
  O: "[c#3,g#3,c#4,e4]@3 ~@3 c#3@2 [c#3,g#3,c#4,e4]@4 [d#3,f#3,b3,d#4]@4, ~@3 c#3@3 ~@10, ~ [g#3,c#4,e4] ~@2", // C#m B C#m
  P: "[e3,g#3,b3,e4]@3 ~@3 e3@2 [e3,g#3,b3,e4]@4 [a#2,c#3,f#3,a#3,c#4]@4, ~@3 e3@3 ~@10, ~ [g#3,b3,e4] ~@2", // E F# E
  Q: "b2 ~@3 b2!2 [d#3,f#3,b3,d#4]@2, [f#3,b3,d#4]@4 [f#3,b3,d#4]@3 f#3@5 ~@4, ~ b2@2 b2 [b3,d#4]@2 ~@2", // B
  R: "f#3@2 ~@6 f#3@2 f#3@2 ~@2 e3 d#3, [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@3 a#3@5 [f#3,a#3,c#4,f#4]@4, ~ f#3@2 f#3 [c#4,f#4]@2 ~@2", // F# F#5
  S: "f#3@2 ~@6 [f#3,c#4,f#4]@7 ~, [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@3 a#3@8 ~, ~ f#3@2 f#3 ~@4", // F#5 F#
  T: "[f3,a#3,c#4,f4,a#4]@3 ~@3 [f3,a#3]@2 [f#3,a#3,c#4,f#4,a#4]@5 ~ [c#4,f#4]@2, ~@3 [f3,a#3]@3 ~@7 [f#3,a#3]@3, ~ [c#4,f4,a#4] ~@2", // A#m A#5 F# F#5 A#5 F# A#m
  U: "[g#3,c#4,f4]@3 ~ [c#4,f4]@3 g#3 [c#3,g#3,c#4,f4]@3 g#3 [c3,g#3,c#4,f4]@3 g#3, ~@3 g#3@4 ~@9", // C# C#maj7
  V: "[f3,a#3,c#4,f4,a#4]@3 ~@3 [f3,a#3]@2 [f#3,a#3,c#4,f#4,a#4]@5 ~ [c#4,f#4]@2, a#2@7 ~ f#2@8, ~@3 [f3,a#3]@3 ~@7 [f#3,a#3]@3, ~ [c#4,f4,a#4] ~@2", // A#m A#5 F# F#5 A#5 F# A#m
  W: "[g#3,c#4,f4]@3 ~ [c#4,f4]@3 g#3 [g#2,g#3,c4,d#4,g#4]@8, c#3@7 ~@9, ~@3 g#3@4 ~@9", // C# G#
  X: "[d#3,a#3,d#4,f#4]@3 ~@3 d#3@2 [d#3,a#3,d#4,f#4]@4 [f3,g#3,c#4,f4]@4, ~@3 d#3@3 ~@10, ~ [a#3,d#4,f#4] ~@2", // D#m C# D#m
  Y: "[f#3,a#3,c#4,f#4]@3 ~@3 f#3@2 [f#3,a#3,c#4,f#4]@4 [c3,d#3,g#3,c4,d#4]@4, ~@3 f#3@3 ~@10, ~ [a#3,c#4,f#4] ~@2", // F# G# F#
  Z: "c#3 ~@3 c#3!2 [f3,g#3,c#4,f4]@2, [g#3,c#4,f4]@4 [g#3,c#4,f4]@3 g#3@5 ~@4, ~ c#3@2 c#3 [c#4,f4]@2 ~@2", // C#
  AA: "g#3@2 ~@6 g#3@2 g#3@2 ~@2 f#3 f3, [c4,d#4,g#4]@4 [c4,d#4,g#4]@3 c4@5 [g#3,c4,d#4,g#4]@4, ~ g#3@2 g#3 [d#4,g#4]@2 ~@2", // G# G#5
  AB: "g#3 ~@2 g#3!2 ~@2 g#3, [c4,d#4,g#4]!4, ~ g#3@2 ~@2 g#3@2 ~", // G#
  AC: "g#3 ~@2 g#3 [g#3,c4,d#4,g#4]@4, [c4,d#4,g#4]!2 ~@2, ~ g#3@2 ~@5", // G#
})).s("gm_acoustic_guitar_steel").gain(0.29)

// bass · acoustic bass · "Fretless Bass"
const bass = note(`<
  ~@12 A B C D E F G H I J I K I J I L M N O P M N O Q R S R T U V W X U V W Y U V W X U V W Z ~@5
>`.pickRestart({
  A: "b1@3 c#2", B: "d2@3 g#2", C: "a2@3 c#3", D: "e3@14 d3 c#3", E: "b2@3 c#3", F: "d3@3 g#2", G: "a2@3 c#2",
  H: "e2@13 ~@3", I: "g#1 e1", J: "b1@8 b1 ~ b1@4 a#1@2", K: "b1@6 b1 d#2 f#2@5 d#2 c#2 b1",
  L: "b1@6 b1 d#2 f#2@5 c#2 g#1 b1", M: "c#2@7 g#1 c#2@4 d#2@4", N: "e2@7 b1 e2@4 a#1@3 ~", O: "b1@7 f#1 b1@4 d#2@4",
  P: "f#2@7 g#2 f#2@3 d#2 ~ d#2@3", Q: "f#2@7 g#2 f#2@3 ~ g#1@4", R: "a#1 f#1", S: "c#2@8 c#2 ~ c#2@4 c2@2",
  T: "c#2@6 c#2 f2 g#2@5 f2 d#2 c#2", U: "d#2@7 a#1 d#2@4 f2@4", V: "f#2@7 c#2 f#2@4 c2@3 ~", W: "c#2@7 g#1 c#2@4 f2@4",
  X: "g#2@7 a#2 g#2@3 f2 ~ f2@3", Y: "g#2@7 a#2 g#2@3 ~ a#1@4", Z: "g#2!2 ~ g#2 ~ g#2 ~ d#2 g#2@8",
})).s("gm_acoustic_bass").gain(0.54)

// chords · acoustic guitar nylon · "Nylon Str.Guitar"
const acoustic_guitar_nylon = note(`<
  ~@12 A B C D A B C D ~@8 E F G H E F G H ~@4 I J K L I J K L I J K L I J K L ~@5
>`.pickRestart({
  A: "~@3 a4, b4@3 ~, ~ b3@7, ~@3 d4@13", B: "~@3 d4@9 g#4@3 ~, a4@11 ~@5, ~ a3@5 ~@2",
  C: "a4@2 ~ c#4@2 [a4,c#5,e5]@7 ~@4, ~ a3@2 ~@5", D: "~@3 e4@2 b4@2 ~ b4@8, b4@4 ~@3 e4@9, ~ b3@7",
  E: "~@3 b4, c#5@3 ~, ~ c#4@7, ~@3 e4@13", F: "~@3 e4@9 a#4@3 ~, b4@11 ~@5, ~ b3@5 ~@2",
  G: "b4@2 ~ d#4@2 [b4,d#5,f#5]@7 ~@4, ~ b3@2 ~@5", H: "~@3 f#4@2 c#5@2 ~ c#5@8, c#5@4 ~@3 f#4@9, ~ c#4@7",
  I: "~@3 c#5, d#5@3 ~, ~ d#4@7, ~@3 f#4@13", J: "~@3 f#4@9 c5@3 ~, c#5@11 ~@5, ~ c#4@5 ~@2",
  K: "c#5@2 ~ f4@2 [c#5,f5,g#5]@7 ~@4, ~ c#4@2 ~@5", L: "~@3 g#4@2 d#5@2 ~ d#5@8, d#5@4 ~@3 g#4@9, ~ d#4@7",
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.8)

// chords · pad warm · "Warm Pad"
const pad_warm = note("<A@3 ~@53 B C@4>".pickRestart({
  A: "[e5@6 a4@7 b4@6 ~@5 f#2@17 ~@7, ~@19 e5@17 ~@12]/3", B: "~ [a#3,c#4,f4]@8 [a#3,c#4,f#4]@7",
  C: "[~ [g#3,c#4,f4]@8 [g#3,c4,d#4]@12 ~@6 [a#2,a#3,c#4,f4,g#4]@22 ~@15]/4", // C# G# A#m7
})).s("gm_pad_warm").gain(0.2)

// chords · electric guitar jazz · "Jazz Guitar"
const electric_guitar_jazz = note("<~@2 A B C ~@23 D E F@2 D E F@2 ~@20 G H I ~@2>".pickRestart({
  A: "f#4!2 ~ f#4!3 g#4 a4 d4!2 ~ d4 a4!2 ~ a4", B: "e4!2 ~ e4!3 ~ e4!2 ~ c#4 b3 a3!2 ~ a3", C: "a3 ~@15",
  D: "~@3 g#3@5, e4, ~@3 b3@13", E: "~@3 b3, b3@3 ~, ~@3 e4@13, ~@3 g#4@5",
  F: "[~@3 b3@6 ~@3 c#4@4, f#3@9 f#3@7, ~@3 c#4@15 ~ c#4@4 f#4@9, ~@21 g#4@11]/2",
  G: "~ a#3 ~ a#3!2 ~@2 c4 c#4 f#3 ~ f#3 ~ c#4 ~ c#4", H: "~ g#3 ~ g#3!3 ~@10", I: "~@11 [a#3,f4] ~ [a#3,f4]!3",
})).s("gm_electric_guitar_jazz").gain(0.17)

// chords · electric guitar jazz · "Jazz Guitar" · soft notes
const electric_guitar_jazz_2 = note("<~@3 A B ~@51 C D E F ~>".pickRestart({
  A: "~@9 e4 ~@6", B: "~ a3 ~ a3 ~@12", C: "~@5 a#3 ~ a#3 ~@4 f#3 ~@3", D: "c#4 ~@6 g#3!3 ~ g#3!3 ~ g#3",
  E: "g#3!2 ~ g#3 ~@12", F: "~ [a#3,f4]!3 ~ [a#3,f4]!3 ~ [a#3,f4]!3 ~ [a#3,f4] ~@2",
})).s("gm_electric_guitar_jazz").gain(0.06)

// chords · synth strings 1 · "Syn.Strings 1"
const synth_strings_1 = note(`<
  ~@8 A B A C D E B F D E B F G H G I G H G I J K H L J K H L M N M O P Q N R P Q N R P Q N R P Q N R ~@5
>`.pickRestart({
  A: "[f#3,a3,c#4] [f#3,a3,d4]", B: "[e3,a3,c#4]", C: "[e3,a3,c#4] [e3,g#3,b3]", D: "[f#3,b3,d4]@3 [e3,a3,c#4]",
  E: "[f#3,a3,d4]@3 [e3,g#3,b3]", F: "[g#3,b3,e4]", G: "[g#3,b3,d#4] [g#3,b3,e4]", H: "[f#3,b3,d#4]",
  I: "[f#3,b3,d#4] [f#3,a#3,c#4]", J: "[g#3,c#4,e4]@3 [f#3,b3,d#4]", K: "[g#3,b3,e4]@3 [f#3,a#3,c#4]",
  L: "[a#3,c#4,f#4]", M: "[a#3,c#4,f4] [a#3,c#4,f#4]", N: "[g#3,c#4,f4]", O: "[g#3,c#4,f4] [c4,d#4,g#4]",
  P: "[a#3,d#4,f#4]@3 [g#3,c#4,f4]", Q: "[a#3,c#4,f#4]@3 [g#3,c4,d#4]", R: "[c4,d#4,g#4]",
})).s("gm_synth_strings_1").gain(0.24)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  ~@12 A B C@2 A B C@2 ~@8 D@3 E D@3 E ~@4 F@3 G F@3 G F@3 G F@3 G ~@5
>`.pickRestart({
  A: "~@3 f#3@5, d4, ~@3 a3@13", B: "~@3 a3, a3@3 ~, ~@3 d4@13, ~@3 f#4@5",
  C: "[~@3 a3@6 ~@3 b3@4, e3@9 e3@7, ~@3 b3@15 ~ b3@4 e4@9, ~@21 f#4@11]/2",
  D: "[~@5 b4@2 ~ b4@8 ~@5 b4@2 ~ b4@8 ~@5 b4@2 ~ b4@8, b4@5 ~@11 b4@5 ~@11 b4@5 ~@11, ~@2 b3@5 b3@11 b3@5 b3@11 b3@5 b3@9, ~@3 e4@15 ~ e4@15 ~ d#4@5 ~@8]/3",
  E: "~@5 a#4@3 [c#4,f#4,a#4]@8, a#4@5 ~@11, ~ c#4@3 ~@4, ~@3 f#4@5 ~@8", // F#
  F: "[~@5 c#5@2 ~ c#5@8 ~@5 c#5@2 ~ c#5@8 ~@5 c#5@2 ~ c#5@8, c#5@5 ~@11 c#5@5 ~@11 c#5@5 ~@11, ~@2 c#4@5 c#4@11 c#4@5 c#4@11 c#4@5 c#4@9, ~@3 f#4@15 ~ f#4@15 ~ f4@5 ~@8]/3",
  G: "~@5 c5@3 [d#4,g#4,c5]@8, c5@5 ~@11, ~ d#4@3 ~@4, ~@3 g#4@5 ~@8", // G#
})).s("gm_electric_guitar_clean").gain(0.32)

// chords · distortion guitar · A#m F# C# A#m F# C# G#
const distortion_guitar = note(`<
  ~@36
  [[a#3,c#4,f4] [a#3,c#4,f#4]]
  [[g#3,c#4,f4]]
  [[a#3,c#4,f4] [a#3,c#4,f#4]]
  [[g#3,c#4,f4] [c4,d#4,g#4]]
  ~@21
>`).s("gm_distortion_guitar").gain(0.18)

// other · distortion guitar
const distortion_guitar_2 = note("<~@37 A@2 B C ~@20>".pickRestart({
  A: "[~@8 c#4@6 g#3 a#3@8 ~@9]/2", B: "~@10 g#4 a#4@2 a#4 g#4@2", C: "d#4 ~",
})).s("gm_distortion_guitar").gain(0.32)

// drums · kick
const kick = s("bd").struct("<~@20 A@3 B C A@2 D A@2 C D C@3 E C A C E A@2 C F C A C G A@2 C F C A C ~@6>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@3 x!2 ~ x", C: "x ~@6 x!2 ~ x ~@5", D: "x ~@6 x!2 ~ x ~@2 x ~@2", E: "x", F: "x!2",
  G: "x ~@2 x ~@4",
})).gain(0.72)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@21 A ~@3 A@2 ~@2 A ~@7 A ~@3 A ~@7 A ~@11>".pickRestart({
  A: "~@7 x ~@8",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@20 [~ x ~ x]!15 [~ x ~@2] ~@25>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@35 A B@3 C B@3 C B@3 D B@3 C B@3 E ~@5>".pickRestart({
  A: "~ x", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~@3", D: "~@4 x ~@2 x ~ x!3 ~@4", E: "x",
})).gain(0.8)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@35 A ~@4 A ~@4 A ~@2 A ~@4 A ~@7>".pickRestart({
  A: "~@7 x ~@8",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@35 A ~@3 B ~@3 C ~@3 D ~@3 C ~@3 E ~@5>".pickRestart({
  A: "~@9 x ~@3 x!3", B: "~@15 x", C: "~@14 x!2", D: "~@13 x!3", E: "~@3 x ~ x!3 ~@8",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@20 A B A C A C A C A@3 D A@3 E ~@25>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2",
  D: "x ~ x ~ x ~ x ~ x!3 ~ x!2 ~@2", E: "x ~ x ~ x ~ x!2 ~@8",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@20 A B A C A C A C A@3 B A@3 ~@26>".pickRestart({
  A: "~@7 x ~ x ~@5 x", B: "~@7 x ~@8", C: "~@7 x ~ x ~@6",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@35 A ~@3 B ~@3 C ~@3 D ~@3 C ~@3 E ~@5>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~ x ~@5 x ~ x!2 ~@2 x!2 ~", C: "~@9 x ~@3 x ~@2", D: "~ x ~@10 x ~@3", E: "~ x ~@14",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@23 A ~ A ~ A ~@3 A ~@29>".pickRestart({
  A: "~@7 x",
})).gain(0.72)

// drums · ride bell
const ride_bell = s("rd").struct("<~@36 [x!8]!19 [x!5 ~@3] ~@5>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@20 x ~@15 x ~@24>").gain(0.56)

stack(
  acoustic_guitar_steel, bass, acoustic_guitar_nylon, pad_warm, electric_guitar_jazz, electric_guitar_jazz_2,
  synth_strings_1, electric_guitar_clean, distortion_guitar, distortion_guitar_2, kick, kick_soft, rim, snare,
  snare_soft, low_tom, hihat, hihat_soft, mid_tom, open_hat, ride_bell, crash
)

More by Celine Dion