Strudelify

Amarillo

CHRISTIE,TONY

KeyG majorTempo138 bpm
0:00/0:00
// Amarillo — CHRISTIE,TONY
// 138 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(138/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B A C B A C@4 A@3 B A C A B A C D E D E D E F C A B A C A B G A@2 B A C A B G A@2 B A C B A C A@2 B A C A B A C D E
  D E D E F C A B A C A B G A@2 B A C A B G A@2 B A C B A C A F C F H C F H F@2 C F H C F H F H F H F I
>`.pickRestart({
  A: "g1!16", B: "c2!16", C: "d2!16", D: "d#2!16", E: "a#1!16", F: "a1!16", G: "g1!8 d2!8", H: "e2!16", I: "a1@3 ~",
})).s("gm_electric_bass_finger").gain(0.4).pan(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B A C D E F@2 G H I ~@10 J ~ K@2 L@2 M N O P Q R O S T@2 O P Q R O S U A B A C D E V W ~@9 J ~ K@2 L@2 M N O P Q R O
  S T@2 O P Q R O S U A B A C D E V W X Y X Z AA AB AC AD X Y X Z AA AB AE@2 AF@2 AG@2 AH
>`.pickRestart({
  A: "[g4,b4,d5]@3 ~@13", B: "~@12 [g4,c5,e5]@3 ~", C: "~@12 [f#4,a4,d5]@3 ~", D: "[e4,g4,c5]@3 ~@13",
  E: "~@10 g2 ~ f#2 ~ e2 ~", F: "[~@26 [g2,g4] ~ [f#2,f#4] ~ [e2,e4] ~, d2@15 ~, ~@8 d3@7 ~]/2",
  G: "d4@3 ~ [d4,f#4] ~ d4@2 [d4,f#4]@3 ~ [d4,f#4,a4] ~ [d4,f#4,a4]@2, d2@8 f#2@7 ~, ~@6 f#4 ~@9", // D
  H: "~@2 [d4,f#4,a4,c5] ~ [d4,f#4,a4,c5]@3 ~ [d4,f#4,a4,d5] ~@3 [d4,f#4,a4,d5] ~@3, a2@8 c3@7 ~", // D7 D
  I: "[g4,b4,d5,g5] ~@15, g2 ~@7", J: "~@4 c4 a#3 g3 a#3, ~@7 a#3@2 ~@7", K: "[~@3 a#3 c4 a#3 g3 a#3@2 ~@7]/2",
  L: "[~@3 a#3 c4 a#3 g3 a3@4 ~@5]/2", M: "~@10 [a3,d4,f#4] ~ [a3,d4,f#4]@3 ~", N: "[b3,d4,g4]@3 ~@13",
  O: "~@10 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", P: "~ [b3,d4,g4]@2 ~@13",
  Q: "~@11 [a3,d4,f#4] ~ a3@3, ~@12 [d4,f#4]@3 ~", R: "~ [b3,d4,g4]@3 ~@12", S: "[b3,d4,g4] ~@7",
  T: "[~@10 [g3,g4,g5]@2 [e3,e4,e5]@2 d3@2 [b3,g4]@3 ~@13, ~@14 d5@5 ~@13, ~@14 d4 ~ d4 ~@15]/2", // G E Em
  U: "~@5 [g3,g4,g5] [e3,e4,e5] [d3,d5], ~@14 d4 ~", V: "d2@3 ~",
  W: "~@8 [g3,g4,g5] ~ [g3,g4,g5] ~ [g3,g4,g5] ~ [g3,g4,g5] ~", X: "[a4,c#5,e5]@3 ~@13", Y: "~@12 [a4,d5,f#5]@3 ~",
  Z: "~@12 [g#4,b4,e5]@3 ~", AA: "[f#4,a4,d5]@3 ~@13", AB: "~@10 a2 ~ g#2 ~ f#2 ~", AC: "e2@3 ~",
  AD: "~@8 [a3,a4,a5] ~ [a3,a4,a5] ~ [a3,a4,a5] ~ [a3,a4,a5] ~", // A
  AE: "[~@4 [d4,d5] ~ [d4,d5]@2 [c#4,c#5]@3 ~ b3@2 [b3,b4]@4 [a3,a4]@2 [a3,a4]@3 ~@3 a2 ~ g#2 ~ f#2 ~, e2@12 b4 ~@19]/2", // D C# B A
  AF: "[~@4 d4@2 d4@2 [c#4,c#5]@3 ~ b3@2 [b3,b4]@4 [a3,a4]@2 [a3,a4]@3 ~@3 a2 ~ g#2 ~ f#2 ~, e2@3 ~@5, ~@4 d5 ~ d5 ~@5 b4 ~@19]/2", // C# B A
  AG: "[~@4 [d4,d5] ~ [d4,d5]@2 [c#4,c#5]@4 [b3,b4] ~ [b3,b4]@4 [a3,a4]@2 [a3,a4]@3 ~ [a3,a4,a5] ~ [a3,a4,a5] ~ [a3,a4,a5] ~ [a3,a4,a5] ~, e2@3 ~@5]/2", // D C# B A
  AH: "[a2,a3,a4] ~@3", // A
})).s("gm_string_ensemble_1").gain(0.33).pan(0.6)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@12 A B A C A B A C D E D E D E F G ~@24 A B A C A B A C D E D E D E F G ~@24 F G F H I F H F@2 G F H I F H F H F H J
  K
>`.pickRestart({
  A: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G
  B: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // C
  C: "~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~", // D
  D: "~@2 [d#4,g4,a#4] ~@3 [d#4,g4,a#4] ~@3 [d#4,g4,a#4] ~@3 [d#4,g4,a#4] ~", // D#
  E: "~@2 [d4,f4,a#4] ~@3 [d4,f4,a#4] ~@3 [d4,f4,a#4] ~@3 [d4,f4,a#4] ~", // A#
  F: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // A
  G: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // D
  H: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // E
  I: "~@2 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~", // D
  J: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@2 [a3,c#4,e4]!2 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", K: "[a3,c#4,e4] ~",
})).s("gm_piano").gain(0.4).pan(0.4)

// other · pad new age · "FANTASIA"
const pad_new_age = note("<~@13 A ~ A ~ A ~ A ~@33 A ~ B ~ A ~ C ~@53>".pickRestart({
  A: "~@6 g6 ~ c7 ~ b6 ~ g6 ~ d6 ~", B: "~@6 f#6 ~ c7 ~ b6 ~ a6 ~ d6 ~", C: "~@6 f#6 ~ c7 ~ b6 ~ a6 ~ g6@2",
})).s("gm_pad_new_age").gain(0.32)

// chords · synth brass 1 · "SYNTHBRASS"
const synth_brass_1 = note(`<
  A B A C D E F@2 G H I ~@9 J@7 K@2 L M N O L M P O L M N O L M P A B A C D E Q R ~@8 J@7 K@2 L M N O L M P O L M N O L
  M P A B A C D E Q R S T S U V W X Y S T S U V W Z@2 AA@2 AB@2 AC
>`.pickRestart({
  A: "[g4,b4,d5]@3 ~@13", B: "~@12 [g4,c5,e5]@3 ~", C: "~@12 [f#4,a4,d5]@3 ~", D: "[e4,g4,c5]@3 ~@13",
  E: "~@10 g2 ~ f#2 ~ e2 ~", F: "[~@26 [g2,g4] ~ [f#2,f#4] ~ [e2,e4] ~, d2@15 ~, ~@8 d3@7 ~]/2",
  G: "d4@3 ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4]@3 ~ [d4,f#4,a4] ~ [d4,f#4,a4]@2, d2@8 f#2@7 ~", // D
  H: "~@2 [d4,f#4,a4,c5] ~ [d4,f#4,a4,c5]@3 ~ [d4,f#4,a4,d5] ~@3 [d4,f#4,a4,d5] ~@3, a2@8 c3@7 ~", // D7 D
  I: "[g4,b4,d5,g5] ~@15, g2 ~@7", // G
  J: "[[d#4,g4]@15 ~@7 a#3@2 c4@2 a#3@2 g3@2 a#3@2 [d#4,g4]@16 ~@6 a#3@2 c4@2 a#3@2 g3@2 ~@2 [d#4,g4]@16 ~@6 a#3@2 c4@2 a#3@2 g3@2 ~@10 c#5@8, a#4@48 c#4@7 ~, ~@16 [d4,f4]@16 ~@16 [d4,f4]@16 ~@16 [d4,f4]@15 ~ [e4,a4]@16, ~@31 a#3@2 ~@14 a3@4 ~@5]/7", // D# Dm A5
  K: "[~@5 [d4,f#4] [a3,d4]@2 [b3,d4,g4,b4,d5,g5]@2 ~@6, [a4,d5]@15 ~@17, [d4,f#4]@10 a3 ~ f#4@8 ~@12, ~@8 f#5@7 ~@17]/2", // D D5 G D5 D
  L: "~@10 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", M: "[b3,d4,g4] ~@7", N: "~@10 [a3,d4,f#4] ~ [a3,d4,f#4]@3 ~",
  O: "[b3,d4,g4]@3 ~@13", P: "~@5 [g3,g4,g5] [e3,e4,e5] [d3,d5], ~@14 d4 ~", Q: "d2@3 ~",
  R: "[g4,g5]@4 [g4,g5]!4, [b4,d5]@3 ~, ~@8 g3 ~ g3 ~ g3 ~ g3 ~", S: "[a4,c#5,e5]@3 ~@13", T: "~@12 [a4,d5,f#5]@3 ~",
  U: "~@12 [g#4,b4,e5]@3 ~", V: "[f#4,a4,d5]@3 ~@13", W: "~@10 a2 ~ g#2 ~ f#2 ~", X: "e2@3 ~",
  Y: "[a4,a5]@4 [a4,a5]!4, [c#5,e5]@3 ~, ~@8 a3 ~ a3 ~ a3 ~ a3 ~", // A C#m
  Z: "[~@4 [d4,d5] ~ [d4,d5]@2 [c#4,c#5]@3 ~ b3@2 [b3,b4]@4 [a3,a4]@2 [a3,a4]@3 ~@3 a2 ~ g#2 ~ f#2 ~, e2@12 b4 ~@19]/2", // D C# B A
  AA: "[~@4 d4@2 d4@2 [c#4,c#5]@3 ~ b3@2 [b3,b4]@4 [a3,a4]@2 [a3,a4]@3 ~@3 a2 ~ g#2 ~ f#2 ~, e2@3 ~@5, ~@4 d5 ~ d5 ~@5 b4 ~@19]/2", // C# B A
  AB: "[~@4 [d4,d5] ~ [d4,d5]@2 [c#4,c#5]@4 [b3,b4] ~@3 a4@2 [a3,a4]@2 [a3,a4]@3 ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~, e2@6 ~ [b3,b4]@2 ~@7, ~@4 [c#5,e5]@3 ~, ~@8 a5@4 a5!4]/2", // D C# B A B C#m
  AC: "[a2,a3,a4] ~@3", // A
})).s("gm_synth_brass_1").gain(0.32).pan(0.4)

// drums · kick
const kick = s("bd").struct("<[x!2]!112 ~>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!112 ~>").gain(0.51)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!10 [~ x ~@2] ~@17 [~ x ~ x]!24 ~@16 [~ x ~ x]!28 ~@16 x>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<[x!4 ~ x!7 ~ x!3]!112 ~>").gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A ~ A ~@15 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@23 A ~@7 A ~ B ~ A ~>".pickRestart({
  A: "~@11 x!2 ~ x ~", B: "~@6 x!2",
})).gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x]!112 ~>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@9 A ~ A ~@15 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@23 A ~@7 A ~ B ~ A ~>".pickRestart({
  A: "~@8 x!2 ~@6", B: "~@8 x!2 ~ x ~@4",
})).gain(0.46)

stack(bass, string_ensemble_1, piano, pad_new_age, synth_brass_1, kick, snare, clap, hihat, mid_tom, open_hat, high_tom)

More by CHRISTIE,TONY