Reduzierung der #defines, stattdessen Einstellungen in Web-UI

@trainbird Danke das du dran bleibst, das wird sicher ein wichtiges Feature für’s nächste Release!

Das Problem der zur Entwurfszeit festgelegten #Defines bleibt & ich hatte es auch nicht geschafft sie zur Laufzeit als Bool auszuwerten.
Mir ist da aber noch eine Idee gekommen:

Am Beispiel Mono/Stereo, aus

#define PLAY_MONO_SPEAKER

wird

const bool PLAY_MONO_SPEAKER = true // oder false

Der Code würde sich an vielen Stellen vereinfachen von z.B.

#ifdef PLAY_MONO_SPEAKER
  gPlayProperties.currentPlayMono = true;
#else
  gPlayProperties.currentPlayMono = false;
#endif

zu

gPlayProperties.currentPlayMono = gPrefsSettings.getBool("playMono", PLAY_MONO_SPEAKER);

Damit kann zur Compilezeit festgelegt werden ob Mono/Stereo und zur Laufzeit dann in der Weboberfläche umgeschaltet werden.

Einziger Nachteil hier ist ein „breaking-change“, die settings.h müssen neu eingestellt werden sofern zur Compilezeit vom Anwender gewünscht. Kann dann später eh über die Weboberfläche umgeschaltet werden. Ich halte es jetzt für vertretbar weil wir eh gerade größere Änderungen gemacht haben wie z.B. Nahendes Supportende für ESP32 ohne PSRAM

Alternativ könnte man die Compilezeit Vorgabewerte komplett entfernen, hart voreinstellen, z.B. auf Stereo

gPlayProperties.currentPlayMono = gPrefsSettings.getBool("playMono", false);

und den ESPuino dann über die Web-UI an den eigenen Geschmack anpassen.

Gibt es noch andere Vorschläge?@biologist Welche Lösung würdest du bevorzugen?