I implemented the fade function. It can be used in different ways, depending on the following settings:
Alarm action: Will playback be started or stopped?
Alarm volume: Will volume increase or decrease? (In case playback has already started)
I ended up with 4 types of fading:
Fade-in (Stop->Play transition)
Playback starts at volume 0 and increases till the configured volume is reached. A fade-in reaches the configured volume at the configured time, to make sure you wake up in time.
Fade-out (Play->Stop transition)
Playback is active at an initial volume and decreases till volume 0 is reached, at that time playback is stopped and the initial volume is restored. A fade-out starts at the configured time.
Fade-up (Volume transition)
Playback is active at an initial volume and increases till the configured volume is reached. A fade-up reaches the configured volume at the configured time.
Fade-down (Volume transition)
Playback is active at an initial volume and decreases till the configured volume is reached. A fade-down starts at the configured time.
Notes:
- All fade types extend the playing time. I choose to give priority to playback, the safe option for an alarm clock.
- Following this priority approach, a volume increase has priority over a volume decrease. This takes care of the case that two alarms are competing each other, or it can be used to terminate a fade by manually increasing the volume.
- You don’t configure a fade type, it results from the alarm action and volume in combination with the playing mode at the time the alarm expires.