Learning by mimicking real songs

Is this a good way to learn?

There are numerous piano tutorials out there which can be converted but I am unsure how to get started.

For example, how could I translate what is being taught in this YouTube video on how to play Heathens on Piano.

I came up with something like this:

Clock.bpm=120
Root.default.set("C")
Scale.default.set("major")
p1 >> piano([0,9,4,4], dur=[4,4,1,1])
p2 >> piano([11,0,11,7,11,0,11,7,4], dur=1)

But evidently I am not understanding. Maybe there are some music fundamentals I can learn somewhere first?

I thought according to Tutorial 8: Scales

0 is C
2 is D
4 is E
5 is F
7 is G
9 is A
11 is B

Any help would be much appreciated.

hi dnk8n,

if you are in major scale with C as root:
C D E F G A B == 0 1 2 3 4 5 6

in chromatic scale :
C D E F G A B == 0 2 4 5 7 9 11

It’s good to learn some music fundamentals to understand this, I don’t have any good recommandations but on the abelton website there are some good basic lessons on how to write music (more electronic music).
https://learningmusic.ableton.com/notes-and-scales/notes-and-scales.html

Thanks, that helped. I now have this for the first bit:

Clock.bpm=160
Root.default.set("C")
Scale.default.set("major")

C = 0
D = 1
E = 2
F = 3
G = 4
A = 5
B = 6

p1 >> piano(
    [B,C,B,G,B,C,B,G,E],
    dur=[1,1,1,1,1,1,1,1,8],
    oct=[4,5,4,4,4,5,4,4,4]
)
p2 >> piano(
    [C,A,E,E],
    dur=[4,4,4,4],
    oct=3
)

I also found a more intuitive demonstration video on Youtube.

One thing I do now know how to do, how can I change the last duration of p1 to 6 (from 8) but with a 2 second pause so that it remains in time with the other instrument?

you can add a rest for a note with a dur=rest(2), the note is not played.

so in your example :

p1 >> piano(
[B,C,B,G,B,C,B,G,E,E],
dur=[1,1,1,1,1,1,1,1,6,rest(2)],
oct=[4,5,4,4,4,5,4,4,4,4]
)

Incredible, thanks! This has been quite exciting to tinker with.

Another option would be to set the sustain using sus or use the blur keyword to modulate the sustain. So to modify your original piano line, you could use blur like so to set the last note to have a sustain of 6 beats (3/4 the duration):

p1 >> piano(
    [B,C,B,G,B,C,B,G,E],
    dur=[1,1,1,1,1,1,1,1,8],
    oct=[4,5,4,4,4,5,4,4,4],
    blur=[1,1,1,1,1,1,1,1,3/4]
)

Going one step further, you can use the PStep function (docs here) to generate these lists a bit easier:

p1 >> piano(
    [B,C,B,G,B,C,B,G,E],
    dur=PStep(9, 8, 1),
    oct=[4,5,4,4,4,5,4,4,4],
    blur=PStep(9, 3/4, 1)
)

That will generate a list of length 9, with the last item having the value of 3/4 with the other values being 1. You could go even another step further and use a TimeVar to set the blur to 3/4 only for the last 8 beats, so if you add shorter notes in your dur array, you don’t have to compensate but updating the blur or sus arrays:

p1 >> piano(
    [B,C,B,G,B,C,B,G,E],
    dur=[1,1,1,1,1,1,1,1,8],
    oct=[4,5,4,4,4,5,4,4,4],
    blur=var([1, 3/4], 8)
)

Hope this isn’t overloading you with information, but there’s usually a few different ways to achieve similar effects in FoxDot depending on how you want to structure your music. This all being said, the rest(2) might be the most simple option - especially in this instance :rofl: