0:00/0:00
// Magic — Olivia Newton-John
// 106 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 8 "Staff-7" celesta (copy of ch 6 "Staff-5" piano)
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(106/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 pick · "Staff-2"
const bass = note(`<
A B A B A B C D E F E G A B C D E F E H A I J K@2 J@2 K@2 L M N O P Q R P A S R P A B A B A B C D E F E G A B C D E F
E H A I J K@2 J@2 K@2 L M N O P Q R P A S R P A B A B T J K@2 J@2 K@2 L M N O P Q R P A S R P A B A B U
>`.pickRestart({
A: "d2@2 ~ c2 d2@2 ~ c2", B: "d2 gb2 d2@2 ~ a1 c2 a1", C: "d2@2 ~ d2@2 d2@2 e2", D: "gb2@2 ~ a2@3 gb2@2",
E: "e2@3 e2@3 e2@2", F: "a2@3 a2 a2@2 a2 b2", G: "a2@3 a2!2 b2 a2@2", H: "a2@3 a2!2 c3 a2@2",
I: "d2@2 gb2@2 d2@4 ~ d2 d3@4 a2@2", J: "d2!8", K: "bb1!8", L: "a1@3 a1 a1@4", M: "d2@3 d2 d2@2 d2@2",
N: "g2@3 g2 g2@4", O: "bb1@3 bb1 bb1@4", P: "a2@3 a2@5", Q: "d2@3 d2 d2@4", R: "e2@3 e2 e2@2 bb2@2",
S: "d2 gb2 ~@3 d3 a2@2, ~ d2@3", T: "d2 d3!6 a2", U: "d2",
})).s("gm_electric_bass_pick").gain(0.72).pan(0.6)
// chords · epiano2 · "Staff-3"
const epiano2 = note(`<
A@6 B C D E D F A@2 B C D E D F A@2 ~@3 G ~@3 H I J K L M N O A P N O A@6 B C D E D F A@2 B C D E D F A@2 ~@3 G ~@3 H
I J K L M N O A P N O A@5 ~@3 G ~@3 H I J K L M N O A P N O A@4 Q
>`.pickRestart({
A: "[gb3,a3,d4]@3 [gb3,ab3,c4]@5", B: "[e3,a3,db4]@3 [gb3,a3,d4]@5", C: "[gb3,a3,db4]@3 [e3,a3,c4]@5",
D: "[e3,g3,b3]@3 [e3,g3,b3] [e3,g3,b3]@4", E: "[a2,e3] [e3,g3,a3,c4]", F: "[a2,e3,g3]@3 [a2,e3,g3]@5",
G: "d3!2 f3 d3@5", H: "[e3,g3]", I: "[d3,a3,c4]@3 [d3,a3,c4]@5", J: "[d3,g3]@3 [g2,d3]", K: "[bb2,f3]@3 [bb2,f3]@5",
L: "[gb2,a2]@3 [gb2,a2]@5", M: "[d2,a2]@3 [d2,a2]@5", N: "e3", O: "gb3", P: "[d3,gb3,a3]", Q: "[d3,a3]",
})).s("gm_epiano2").gain(0.72).pan(0.8)
// chords · synth strings 1 · "Staff-4"
const synth_strings_1 = note(`<
~@22 A B@2 C A B@2 D@3 E F@2 G@2 F@2 G@2 H@4 ~@18 A B@2 C A B@2 D@3 E F@2 G@2 F@2 G@2 I@5 A B@2 C A B@2 D@3 E F@2 G@2
F@2 G@2 I@5
>`.pickRestart({
A: "[f4,a4,d5]@3 [g4,b4,d5]@3 [f4,a4,d5]@2", B: "[f4,bb4,d5]@3 [g4,c5,e5]@5", C: "[a4,d5]",
D: "[[e4,c5] gb4 [g4,bb4], a4@2 ~, ~ d5@2]/3", E: "[f4,bb4]", F: "[d4,gb4,a4]/2", G: "[[d4,bb4] [bb3,e4,g4]@3]/2",
H: "[d4,gb4,a4]/4", I: "[d4,gb4,a4]/5",
})).s("gm_synth_strings_1").gain(0.48).pan(0.4)
// chords · celesta · "Staff-6"
const celesta = note(`<
~@9 A ~@7 A ~@4 B C D E B C D F G H I J@2 K@2 ~@2 K@2 ~@9 A ~@7 A ~@4 B C D E B C D F G H I J@2 K@2 ~@2 K@2 ~@5 B C D
E B C D F G H I J@2 K@2 ~@2 K@2 ~@4 L
>`.pickRestart({
A: "a3 c4 e4 a4 b4@4", B: "[a3,d4]!2 [c4,f4] [d4,g4]@3 [c4,f4] [a3,d4]", C: "[d4,f4]@3 [c4,e4,g4]@5",
D: "[f4,bb4,d5]@3 [g4,c5,e5]@5", E: "[a3,d4]!2 [c4,f4] [a3,d4]@5", F: "[c4,e4,a4]@3 [c4,e4,a4]@5",
G: "[gb4,d5]@3 [gb4,d5]@5", H: "[d4,g4,bb4]", I: "[f4,bb4]", J: "[d4,gb4,a4]/2",
K: "[[d4,bb4]@3 [d4,bb4] [e4,g4]@5 g4 bb4 [db4,e4,bb4]@5]/2", L: "[gb4,a4,d5]",
})).s("gm_celesta").gain(0.48).pan(0.8)
// other · vibraphone · "Staff-8"
const vibraphone = note(`<
A@4 ~@15 B@2 A ~@15 A ~@2 B@2 A@3 ~@15 B@2 A ~@15 A ~@2 B@2 A@4 ~@15 A ~@2 B@2 A@4
>`.pickRestart({
A: "d5", B: "[~@7 d5@9]/2",
})).s("gm_vibraphone").gain(0.56).pan(0.2)
// drums · kick
const kick = s("bd").struct("<[x ~ x!3 ~ x ~]!86 [x!8] [x ~ x!3 ~ x ~]!23 x>").gain(0.72)
// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!21 [~ x ~@2] [~ x ~ x]!40 [~ x ~@2] [~ x ~ x]!23 [~@2 x!6] [~ x ~ x]!23 ~>")
.gain(0.72)
// drums · hihat
const hihat = s("hh").struct(`<
A B C@17 B C B D@8 A B A B@6 A B A B C B C@15 B C B D@8 A B A B@6 A B A B C B E D@8 A B A B@6 A B A B C B F
>`.pickRestart({
A: "x ~ x!5 ~@5 x ~@3", B: "x ~ x!3 ~ x ~@5 x!2 ~@2", C: "x ~ x!3 ~ x ~@5 x ~@3", D: "x ~@3 x ~ x!3 ~@3 x ~ x ~",
E: "x!8", F: "x",
})).gain(0.4)
// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@17 B ~@3 C ~@3 D ~@32 B ~@3 C ~@3 D ~@15 A ~@3 C ~@3 D ~@16>".pickRestart({
A: "~@7 x", B: "~@13 x!2 ~", C: "~@12 x!3 ~", D: "~@3 x",
})).gain(0.72)
// drums · open hat
const open_hat = s("oh").struct(`<
A@2 B A B A B A B A B A B A B A B A B A B A C@8 A@13 B A B A B A B A B A B A B A B A B A B A C@8 A@13 B A ~ C@8 A@13 B
A ~
>`.pickRestart({
A: "~@5 x ~ x", B: "~@7 x", C: "~@2 x ~@7 x ~@4 x",
})).gain(0.4)
// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@17 B ~@3 B ~@3 B ~@32 B ~@3 B ~@3 B ~@15 B ~@3 B ~@3 B ~@16>".pickRestart({
A: "~@12 x!2 ~@2", B: "~@5 x!2 ~",
})).gain(0.72)
// drums · crash
const crash = s("cr").struct(`<
A ~@3 A ~@14 B ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 A B ~@4 A ~@14 B ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 A B ~@4 A@2 ~ A ~
A ~ A ~ A ~ A ~ A ~@4 A B ~@4 A
>`.pickRestart({
A: "x", B: "~@7 x",
})).gain(0.4)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<A@86 B A@4 B A@4 B A@4 B A@4 B A@3 ~>".pickRestart({
A: "~@2 x!5 ~ x ~@3 x!4", B: "x!8",
})).gain(2.03)
stack(
bass, epiano2, synth_strings_1, celesta, vibraphone, kick, snare, hihat, mid_tom, open_hat, high_tom, crash, cabasa
)
More by Olivia Newton-John
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.