"Alarm Clock for Heavy Sleepers" also known as AMDroid Alarm clock.
Yes it can shuffle music.
https://play.google.com/store/apps/details?id=com.amdroidalarmclock.amdroid
Downsides; Not FoSS and not free, however it is a cheap one time purchase, no subscriptions. free version ads are just unobtrusive banners. I have Netgaurd blocking WiFi and cell with no issues.
Features: (no idea what's paid and not)
- Incredibly customizable, I never knew there could be so many alarm options - but there are.
- you can make different alarm profiles, so you only have to set up each "type" of alarm you want once. From there, you just set a time and pick a profile with your settings. Everything from this point on is profile specific.
- pick any sounds on device (or a folder for random picks), set volume, vibrate, ingnore do not disturb, ignore headphones plugged in, etc.
- Calandar integration. If you have a schedule that varies, you can set it up to follow that instead of set-days and times.
- One time skip and one time adjust buttons. Need to wake up an hour early one day, got tomorrow off? Just use these to make the adjustment, next day the alarm will back to normal.
- optional post alarm "are you awake?" notifications. Dismiss the alarm but fell back asleep? After a few minutes (user set time) it will ask if your awake. With no response, after some time the alarm will go again. (With a different sound or volume if you like)
- snooze timmer can decrease each time you use it. First snooze 10 min, next is 8, then 6 and so on.
- various optional challenges that I don't use. Easy things like type out this text, to the WiFi signal must be higher than X (go stand next your router to shut off alarm).
- location based settings - for example, morning alarms only go off at hone, break alarms only go off at work.
- the list continues for some time, but I'll stop here.