Spulen im Titel

Nein, die Abspielgeschwindigkeit kann man leider nicht ändern. Ich hatte es so implementiert, aber es stellte sich heraus, dass die Audiolib an der Stelle nix macht. @Wolle hat ersatzweise eine Sprungfunktion bereitgestellt, die ich nun implementiert habe. Mit der alten Funktion gab es Probleme, aber das kann er sicher besser erklären als ich :grin:

Bisschen offtopic, aber da ja @Wolle hier nun voll im gange ist, will ich kurz fragen.
Hatte mal bei github gefragt ob deine library auch um FLAC support erweitert werden kann?
Hab leider damals keine Reaktion erhalten.

Ist der Prozessor zu schwach dafür, oder gibt es andere Gründe?
(„brauch ich nicht, deswegen wird keine zeit dafür verschwendet“ ist natürlich voll in ordnung :wink: )

Ich habe entweder meine Entwicklungsumgebung geschrottet, oder sonst irgendwas.
Ich bekomme auf einmal die Meldung:

src/main.cpp: In function ‚void playAudio(void*)‘:
src/main.cpp:1788:27: error: ‚class Audio‘ has no member named ‚setTimeOffset‘
if (audio.setTimeOffset(jumpOffset)) {

Kann mir jemand sagen, ob das zusammen hängt oder ich an anderer Stelle suchen muss?

Hi, die Methode setTimeOffset() gibt es noch nicht so lange, vielleicht hast Du eine ältere Version der audio Library?

1 „Gefällt mir“

@barni FLAC wir noch kommen. Ich habe etwas vorgearbeitet, die Metadaten ind die Rohdaten werden bereits jetzt verarbeitet und die Schnittstelle zum Einhängen des FLAC Dekoders existiert auch schon. Es gibt bei xiph.org/flac eine gute Dokumentation über FLAC. Den auf github von xiph veröffentlichten Dekoder möchte ich wegen den vielen Callbacks im Original nicht benutzen. Und das Umschreiben dauert noch etwas.
vG Wolle

Heute nochmals kompiliert und alles ist wieder gut :thinking:

Rockbox hat damals (2005!!!) den code von ffmpeg genommen:
https://git.rockbox.org/cgit/rockbox.git/tree/lib/rbcodec/codecs/libffmpegFLAC

Ich kenne mich nicht so gut mit codecs aus, aber eventuell ist die Datei README.rockbox interessant:

It was also changed to provide output as 32-bit integers (with the
data left-shifted to 28 bit accuracy).  The original flac.c provided
16-bit output.

In order to minimise memory usage, a small number of hard-coded limits
are present in decoder.h - mainly limiting the supported blocksize
(number of samples in a frame) to 4608.  This is the default value
used by the reference FLAC encoder at all standard compression
settings.

Das ist saugeil. Ich freue mich. Danke schon mal!

@tyllmoritz ich habe mir den Code von Rockbox angesehen. Mit den Problemen, die ich sehe kämpft er auch. FLAC ist zwar schnell bein Dekodieren benötigt aber für ESP32-Verhältnisse extrem viel Speicher . Und der ESPuino spart auch nicht mit SRAM. Koexistenz funktioniert nur wenn der Speicher des FLAC-Dekoders in den PSRAM verlagert wird. Leider, das geht nicht anders. Ich habe meinen FLAC Dekoder, den ich damals programmiert habe, eingehängt. Der Klang ist super. Zur Zeit läuft nur das Abspielen von SD. Für den Betrieb im ESPuino sind also zwei Sachen erforderlich:

  • PSRAM muss aktiviert werden
  • der Dateityp .flac muss in der SW freigegeben werden

P.S. ohne PSRAM stürzt der ESP32 beim Initialisieren der FLAC Dekoders wegen Mangel an SRAM ab, das wird mit der nächsten Version bereinigt.

vG Wolle

1 „Gefällt mir“

Dateityp freigeben ist schnell gemacht.
Wenn es dafür psram braucht, dann ist es halt so 🤷

Hallo zusammen,

nachdem hier bereits über Spulen im Titel berichtet wurde, hoffe ich, dass ich mich hier an die richtigen Leute wende.

Nachdem ich das neue 4L PCB in Betrieb genommen habe, bekomme ich beim Spulen (egal ob vorwärts oder rückwärts) in mp3/aac Dateien immer folgende Meldung im Terminal:

[ 253359 ] 30 Sekunden nach vorne gesprungen
[E][Audio.cpp:2766] processLocalFile(): audioHeader reading timeout

und der ESP geht in den Wartezustand (4 weiße LED, die sich im Kreis drehen).
Habe es bei mehreren mp3, wie auch aac Dateien ausprobiert - immer das selbe.

Hat das auch schon mal jemand beobachtet oder kann sich das erklären?

Ich glaube das Verhalten hatte ich mal mit einer anderen bestimmte SD Karte. Hast du zu Testzwecken noch eine andere SD Karte?

Danke für die Rückmeldung.

Ich hab es mit 3 SD Cards versucht:

  • 32GB SanDisk Ultra
  • 128GB SanDisk Ultra
  • 16GB Transcend Premium

Leider jedes Mal das selbe Ergebnis.

Schade, dass das nicht geklappt hat. Mehr Ideen, woran das liegen könnte, habe ich leider nicht.

Trotzdem vielen Dank für den Hinweis.
Mein Problem tritt scheinbar nur sehr selten auf, sonst wäre das hier sicherlich schon öfter ein Thema gewesen.

Bevor ich die HW bekam, hatte ich Deinen Artikel hier bereits gelesen und mich voll gefreut, dass das Spulen wohl endlich (im Vergleich zum Tonuino) geht.

Naja, vielleicht finde ich noch eine 4. SD-Card und kann dann über einen Erfolg berichten :wink:

Das spulen geht schon…man springt um 30Sekunden nach vorn und hinten (die Sprungweite ist ein einstellbar)

Ich hab leider nur das Problem, dass das Spulen bei mir während des Abspielens einer MP3 Datei immer diesen Fehler hier auswirft

[E][Audio.cpp:2766] processLocalFile(): audioHeader reading timeout

und danach dann plötzlich die vier weißen LEDs im Neopixel sich „drehen“ und somit auch die Wiedergabe gestoppt wird.

Versteh ich…
Das Problem mit den weißen LEDs hatte ich auch aber da war die andere SD-Karte die Lösung.
Welche Version verwendest du?
Ich habe einen ca. 1Monat alten Master-Abzug und das Spulen habe ich auf Lange-Drücken der Vor- oder Zurücktaste gelegt und das funktioniert hier. Ich mache später mal ein Update, vielleicht ist es ja als Begleiterscheinung durch etwas anderes gestorben.

Ich glaube das Spulen im Titel nutzen nicht viele und dann auch nur selten :wink:

Bin auf origin/master (Commit c578f88a).
Ich schau mir das ganze aber morgen Abend noch mal genau an.

Aber vielen Dank für den Hinweis.

Hmmm…ich bekomme den Fehler jetzt auch, egal ob vbr oder normale MP3 - das lief aber schon mal

[E][Audio.cpp:2766] processLocalFile(): audioHeader reading timeout

ich bin jetzt auf

[ 1134 ] Software-revision: 20230214-1
[ 1138 ] Git-revision: c578f88-dirty

Da muss ich mal probieren