A figure folder that holds album folders instead of audio can play any of them, up to six, in folder order (depth-first, alphabetical). Each is its own album, titled "Fuchs - <folder>" and of the figure's kind. Putting the figure down plays the album it played last, or the first, straight away; another figure placed in between forgets the position in that album, not the album itself. Meanwhile the ring offers all of them: one section per album from a fixed palette, edges shifting towards the neighbours' hue, the selected one bright and wobbling. The knob moves the selection one section per detent and wraps; pressing plays the selected album, and left alone for 8 s the picker fades into the figure's colours and the music carries on. While open, the device hands the knob to the picker (`capture_knob`): turns do not change the volume and the press is not published to Home Assistant. A tick per step and a confirm "pling" go with it. The firmware only draws: one new ring effect, LED_WHEEL_EFFECT_SEGMENT_SELECT (23), re-sent on every detent with the section to glide from. The look is tunable through a temporary `general.figure_selection` config section until the right values become constants. Every UI sound - the screen's blubb, the parents' timer, the picker - now follows the music volume with a floor, times a new parent-mode "Effekt-Lautstärke" (`general.effects_volume`). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
436 B
C++
28 lines
436 B
C++
#pragma once
|
|
|
|
enum class EffectId
|
|
{
|
|
STATIC,
|
|
CIRCULAR,
|
|
ALEXA_SWIPE,
|
|
RANDOM_TWO_COLOR_INTERPOLATION,
|
|
SWIPE_AND_CHANGE, // combination of ALEXA_SWIPE and RANDOM_TWO_COLOR_INTERPOLATION
|
|
REVERSE_SWIPE,
|
|
STATIC_DETAILED,
|
|
SEGMENT_SELECT,
|
|
};
|
|
|
|
template <EffectId id>
|
|
struct EffectIdToConfig
|
|
{
|
|
};
|
|
|
|
template <typename EffectConfig>
|
|
struct EffectConfigToId
|
|
{
|
|
};
|
|
|
|
template <EffectId id, typename TLedStrip>
|
|
struct EffectIdToClass
|
|
{
|
|
}; |