Hallo liebe Tonuino Gemeinde. Ich bin grade dabei 2 Tonuinos für meine Kids zu bauen, sie funktionieren schon. Allerdings würde ich mir eine Modifikationskarte wünschen mit der ich eine maximale Lautstärke festlegen kann. Also Karte auflegen = max Lautstärke z.b. 15.
Karte nochmal auflegen, Lautstärke wieder freigegeben.
Ich möchte nicht jedes mal in das Admin Menü um die max. Lautstärke anzupassen.
Ist das möglich?
Hintergrund ist das ich verhindern möchte das die Kiddies die Nachtruhe stören
Das würde mich auch sehr interessieren! Ich dachte eigentlich dass ich dazu schon was im Forum gelesen hätte, aber finde es nicht mehr. Ich bräuchte die Karten um die maximale Lautstärke beim Anschluss eines Kopfhörers einfach begrenzen zu können… Danke auch von mir!
Schau dir mal den FeedbackModifier an. Einzig das Zurücksetzen beim Entfernen müsste zusätzlich implementiert werden. Wenn man aber einfach den Modofier um einen destruktor erweitert, wäre das kein Problem.
Mit Integration im Adminmenü und Erstellung der MP3s ca. 30 min Arbeit.
Wenn ich gleich am PC bin, schreib ich ich mal was dazu.
Die Idee ist ja eigentlich auch, dass man das genau einmal - für seine Box abgestimmt - macht. Wenn du da ständig ran musst sind deine mp3 vielleicht sehr unterschiedlich laut? Es gibt im Forum Hilfen zur Normalisierung. Vielleicht schaust du dir das mal an.
Ja wie @pit schon erläutert, im Prinzip ja. Allerdings kann nur ein Modifikatoren zu einer Zeit aktiv sein. Ich weiß nicht ob ich das für sowas wie Lautstärke „opfern“ würde.
Ich würde ich das eher durch die Erkennung Kopfhörer drin ja/nein lösen. Nicht durch einen zusätzliche Aktion.
class LimitVolumeModifier: public Modifier {
private:
uint8_t oldVolume = 0;
uint8_t limitVolume = 0;
public:
// only allow increase of volume till limit volume
virtual bool handleVolumeUp() {
if (volume >= this->limitVolume) {
return true;
}
return false;
}
// reset volume on modifier removal
virtual ~LimitVolumeModifier()
{
volume = this->oldVolume; // restore saved volume
mp3.setVolume(volume);
}
// limitVolume will be passed during initialization (stored on modifier card)
virtual LimitVolumeModifier(uint8_t limitVolume)
{
this->oldVolume = volume; // save current volume for restore
this->limitVolume = limitVolume;
// reduce volume if to loud
if(volume > limitVolume){
volume = limitVolume;
mp3.setVolume(volume);
}
}
};
Kann es grade nicht auf einem TonUINO ausprobieren, sollte aber so funktionieren. Es fehlt jetzt nur noch Initialisierung/Entfernung und Integration ins Adminmenü.
Außerdem ist es fraglich, ob es sinnvoll ist, beim Entfernen des Modifiers die Lautstärke automatisch wieder zurückzusetzen. Es sollte eigentlich reichen, die „Limitierung“ zu entfernen. Also ggf. die Zeilen
Ich habe bei mir dafür persistente Modifier integriert, damit lassen sich einige Modifier z.B. SleepTimer oder ToddlerMode auch über das Ausschalten hinweg persistent speichern.
Es muss also der Modifier explizit wieder deaktiviert werden.
Beispiel: Wenn der Schlafmodus abgeschaltet hat und das Kind den TonUINO neustartet, schaltet er sich automatisch (nach 1 min, zum möglichen Deaktivieren) wieder aus.