Strudelify

Ole In The USA

C'est Tout

KeyA majorTempo85 bpm
0:00/0:00
// Ole In The USA — C'est Tout
// 85 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B C A@2 B C A@2 B C A@2 B D A@2 B E ~ A B C A@2 B C A F B F G A B C A@2 B D A@2 B C H A B C A@2 B C A I J K L F B
  F G A B C A@2 B C A C A C ~
>`.pickRestart({
  A: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~", // A
  B: "~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~", // E
  C: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~", // D E
  D: "d1@2 [a3,d4,f#4] ~@3 [d1,d2,a3,d4,f#4] ~ [e1,e2] ~ [b3,e4,g#4] ~@3 [e1,e2,b3,e4,g#4] ~, d2 ~@15", // D E
  E: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [b3,e4,g#4] ~@7", // D E
  F: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", G: "~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@9",
  H: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@9", I: "a1 ~ [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~",
  J: "e1 ~ [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~", K: "[d1,f#3,a3,d4] ~@7 [e1,g#3,b3,e4] ~@7",
  L: "[a1,a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@9", // A
})).s("gm_piano").gain(0.64)

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~ A B C D A B C D A B C D A B C D E ~@3 A B C D A B C D F G H I A B C D A B C D A B C J A B C D A B C D K ~ L M F G H
  I A B C D A B C D C D C N
>`.pickRestart({
  A: "a1@2 ~ e1 a1 e1 [a1,b1] ~ a1@2 ~ e1 a1 ~ a1@2", B: "e1@2 ~ e1!4 ~ e1@2 ~ e1!2 ~ e1@2",
  C: "d1@2 ~ d1!4 ~ e1@2 ~@2 e1 ~ e1@2", D: "a1@2 ~ e1 a1 e1 a1 ~ a1 e1 a1 ~ a1 e1 g#1 ~", E: "a1!2 f#1 a1@2 ~@11",
  F: "d1@2 ~ d1 a1 f#1 d1 ~@4 d1 a1 f#1 d1 ~", G: "e1@2 ~ e1 b1 g#1 e1 ~@4 e1 b1 g#1 e1 ~",
  H: "d1@3 d1 a1 f#1 d1 ~@4 d1 a1 f#1 d1 ~", I: "e1@2 ~ e1 b1 g#1 e1 ~@9", J: "a1@2 ~ e1 a1 e1 a1 ~ a1 ~@7",
  K: "a1 ~@3", L: "d1 ~@3 e1 ~@3", M: "a1 ~@2 a1 ~@2 a1 ~@5 a1@3 ~", N: "a1@3 ~@5",
})).s("gm_synth_bass_2").gain(0.56)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C A@2 B C A ~@12 A B C A@2 B C A ~ D E F ~@12 A B C A@2 B C A ~@2 G H ~ D E F A B C A@2 B C A I A I ~
>`.pickRestart({
  A: "~@7 a3!2 e3 ~ a3 e3 ~@3", B: "~@6 e3 ~@4 e3!4 ~", C: "d3 ~ d3!5 ~ e3 ~@2 e3!4 ~", D: "~@12 b2 ~ e2 b2",
  E: "d2@2 ~ d2 ~@7 d2 ~@4", F: "~@3 e2 ~@12", G: "[d3,f#3,a3] ~@7 [e3,g#3,b3] ~@7",
  H: "~@2 [e3,a3,c#4] ~@3 [e3,a3,c#4] a3!2 e3 ~ a3 e3 ~@3", I: "~@2 d3!5 ~ e3 ~@2 e3!4 ~",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.6)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@2 A ~@3 A ~@15 A ~@3 A ~@2 B C D E ~@13 A ~@3 A ~@6 B C D E ~ A ~@3 A ~@6
>`.pickRestart({
  A: "~@2 e3 ~@13", B: "d2@2 ~ d2 a2 f#2 d2 ~@4 d2 a2 f#2 d2 ~", C: "e2@2 ~ e2 b2 g#2 e2 ~@4 e2 ~ g#2 ~@2",
  D: "~@4 a2 f#2 d2 ~@5 a2 f#2 d2 ~", E: "e2@2 ~@2 b2 g#2 e2 ~@9",
})).s("gm_electric_guitar_muted").gain(0.24).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B C D A B C D A B C A@2 B C A@2 B E F A B C D A B C D G B G H A B C D A B C A@2 B C I A B C D A B C D A B J K G B
  G H A B C D A B C D C D C L
>`.pickRestart({
  A: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  B: "~@2 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // E
  C: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // D E
  D: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@2 [e4,a4,c#5]@4 ~ [e4,a4,c#5] ~", E: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@9",
  F: "~@8 [e4,a4,c#5]@7 ~", G: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~",
  H: "~@2 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@9", I: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@9",
  J: "[d4,f#4,a4] ~@7 [e4,g#4,b4] ~@7", K: "~@3 [e4,a4,c#5]", L: "[e4,a4,c#5]@7 ~@9",
})).s("gm_electric_guitar_clean").gain(0.48)

// other · brass section · "+BRASS 2"
const brass_section = note(`<
  ~ A B ~ C A B ~ C ~@12 A B ~ C A B ~ C D E ~ F G H I J ~@8 A B ~ C A B ~ C ~@4 D E ~ F A B ~ C A B ~ C ~ C ~@2
>`.pickRestart({
  A: "~@5 [e3,e4] [f#3,f#4] [a3,a4]@3 [f#3,f#4] ~@5", B: "~@5 [e3,e4] [f#3,f#4] [c#4,c#5]@3 [b3,b4] ~@5",
  C: "~@2 [c#3,c#5] [b2,b4] [c#3,c#5] [b2,b4] [c#3,c#5] [b2,b4] [a2,a4] ~@7", D: "~@4 [e3,e4] [f#3,f#4] ~ [a3,a4] ~@8",
  E: "~@4 e3 [c#4,c#5] ~ [b3,b4] ~@8, ~@2 e4 ~@5", F: "[e4,b4,e5] ~", G: "~@12 [c#4,c#5] ~ [d4,d5] ~",
  H: "[c#4,c#5]@3 [b3,b4]!2 ~@7 [c#4,c#5] ~ [e4,e5] ~", // C# B C# E
  I: "[a3,d4,f#4,a4,d5,f#5]@8 [e4,e5] ~ [c#4,c#5] [b3,b4] [c#4,c#5] [b3,b4] [a3,a4] [f#3,f#4]", // D E C# B C# B A F#
  J: "[a3,a4]@4 ~ [a3,a4,e5,a5] ~ [a3,a4,e5,a5] ~@8", // A A5
})).s("gm_brass_section").gain(0.48)

// other · brass section · "+BRASS 2" · soft notes
const brass_section_soft = note(`<
  ~ A B C D A B C D ~@12 A B C D A B C D ~@16 A B C D A B C D ~@8 A B C D A B C D C D ~@2
>`.pickRestart({
  A: "[a3,a4]@5 ~@11", B: "[e3,e4]@5 ~@11", C: "[f#3,a3,d4]@8 [g#3,b3,e4]@7 ~", D: "[e3,a3,c#4]@3 ~@13",
})).s("gm_brass_section").gain(0.24)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@13 A@4 B@2 ~ C ~@16 A@4 B@2 ~@30>".pickRestart({
  A: "~@7 [a2,a3] ~@8", B: "~@6 e2 f#2 g2!2 f#2 ~ e2@2 ~@2", C: "~@4 a3 ~@2 a3 ~ a3 ~@6",
})).s("gm_lead_2_sawtooth").gain(0.56).pan(0.4)

// other · lead 2 sawtooth · "SAW WAVE" · soft notes
const lead_2_sawtooth_soft = note("<~@13 A B A B ~@20 A B A B ~@32>".pickRestart({
  A: "~@9 [a2,a3] ~ [a2,a3] ~@4", B: "~@9 [a2,a3] ~ a3 ~@4",
})).s("gm_lead_2_sawtooth").gain(0.24).pan(0.4)

// other · melodic tom · "+MELO TOM2"
const melodic_tom = note("<~@19 [c8 ~@2 g7 ~@2 d7 ~@9] ~@53>").s("gm_melodic_tom").gain(0.64)

// bass · lead 1 square · "+SINE WAVE"
const bass_2 = note("<~@19 [~ e1] ~@53>").s("gm_lead_1_square").gain(0.4).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<~ A@18 B ~ A@11 B A@4 ~@4 A@3 B A@10 ~@2 A@3 B A@11 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.72)

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

// drums · clap
const clap = s("cp").struct("<~ A@18 B ~ A@11 B A@4 ~@4 A@3 B A@10 ~@2 A@3 B A@11 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B A@3 B A@3 B A@3 B C A D E A@3 B A@3 B A@3 D A@3 B A@3 B A@3 D A@3 B A@3 B A@2 ~ F A@3 D A@3 B A@3 B A B A ~
>`.pickRestart({
  A: "x!16", B: "x!14 ~@2", C: "x ~ x ~ x!12", D: "x!8 ~@8", E: "x!9 ~@7", F: "x ~@3 x ~@2 x!2 ~ x ~ x ~@3",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@2 B ~@4 A ~@3 A ~@7 A ~@3 A ~@7 A ~@3 A ~@2 C D ~@7 A ~@3 A ~ A ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@9 x ~@6", C: "~ x ~@6", D: "~ x ~ x ~@4",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@7 B A@7 B A@2 C ~ A@7 B A@3 ~ A@3 B A@3 B A@3 ~ A@7 B A@2 D ~ A@3 ~ A@7 B A B A ~
>`.pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~ x", D: "x!2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@2 B A ~@2 B ~@8 C ~@2 D A ~@2 B A ~@2 B C ~@2 D A ~@2 B ~@4 C ~@2 D A ~@2 B A ~@2 E A ~ A B A ~@3 A ~@2 B C B ~
  B ~ B F A
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2", D: "~ x", E: "~@12 x ~@2 x", F: "~@15 x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@16 B A C D A@11 E A@8 B A@2 C A@10 F G A@3 E A@11 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x!3", B: "~@5 x ~ x ~ x ~ x ~ x!3", C: "~ x ~ x ~ x ~ x ~@8", D: "x!8 ~@8",
  E: "~ x ~ x ~ x ~ x!2 ~@7", F: "x!2", G: "x ~ x!5 ~ x!5 ~@3",
})).gain(0.24)

// drums · ht
const ht = s("ht").struct("<~@16 A ~@3 B ~@19 A ~@3 C ~@15 C ~@12>".pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "~@8 x!6 ~ x", C: "~@9 x!5 ~ x",
})).gain(0.56)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@34 [~@9 x ~@6] ~ [~@3 x ~@2 x ~@4 x!3 ~ x] ~@17 [~@9 x ~@6] ~@18>")
  .gain(0.7)

// drums · shaker
const shaker = s("sh").struct("<~ A@16 B A C ~ A@11 C A@8 B A@2 C A@10 ~ D A@3 C A@11 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~@5 x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~@8",
  D: "~@3 x ~ x ~ x ~ x ~ x ~@4",
})).gain(0.4)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~ A@16 B A C ~ A@11 C A@8 B A@2 C A@10 ~ D A@3 C A@11 ~>".pickRestart({
  A: "x!2 ~ x", B: "~ x ~ x", C: "x!2 ~@2", D: "~@5 x ~@2",
})).gain(0.16)

stack(
  piano, bass, electric_guitar_muted, electric_guitar_muted_2, electric_guitar_clean, brass_section, brass_section_soft,
  lead_2_sawtooth, lead_2_sawtooth_soft, melodic_tom, bass_2, kick, rim, snare, clap, hihat, hihat_soft, open_hat,
  crash, tambourine, ht, woodblocks, shaker, shaker_soft
)

More by C'est Tout