I use aWake!Gently for my alarm. It doesn't offer songs from your tunes library, but it does offer several natural sounds (and artificial, but I don't use them) that fade in from anywhere between 1 - 15 minutes depending on your preference, and independent alarm time / sound / snooze settings for every day of the week, which I think is pretty cool.
I have managed to turn it off by making a call at night before and forgetting to start the app again, so I woke up late for work, but ever since then I've had my old horrible "makes-me-angry-and-irritable-with-its-stupid-aggressive-bleeping-sound" alarm set for the latest possible time I could get up, which is set to be about 5 minutes after my snooze ends.. just in case..
Is that horribly complex for an alarm system? ... Probably 🙂