Python 3, 113 110 bytes
l='C Db D Eb E F Gb G Ab A Bb B'.split()
def f(a):c,*a=l.index(a),a,a;I=[l[c-7]];return a*2+I*2+a+[l[c-5]]+I+a
Doesn't accept #
ones. Uses flats only.
Thanks to @ovs and @l4m2 for -23 bytes.
Python 3, 129 bytes
l='C Db D Eb E F Gb G Ab A Bb B'.split()
def f(a):b="#"in a;c,*a=l.index(a[:~b+3])+b,a,a;I=[l[c-7]];return a*2+I*2+a+[l[c-5]]+I+a
This version accepts #
keys. Additional 19 bytes :(