Ich hab ein testprogramm dass über I2S audio einliest und auch über I2S gleich wieder rausschreibt. Das funktioniert mit (16 bit) 180 samples buffer auch bestens. Ich brauche aber 540 samples lange buffer und das verursacht häufiges knacken im audio. Der speicherverbrauch ist 2 kanäle a 4 buffer von 2x540 bytes, etwa 9kbytes. Hat der esp32 da probleme mit ram oder ist das ein dma problem, und wie kann ich das lösen? Audiochip ist der ES8388.
:
Bearbeitet durch User
Pepe T. schrieb: > Ich brauche aber 540 samples lange buffer Warum? Irgendwie finde ich binäre Zweierpotenzen wie ... 256, 512, 1024 ... für einen binären Rechenknecht immer viel handlicher. > das verursacht häufiges knacken im audio. "Häufig" im Sinne von wie oft? Ich würde da mal einen Sinus oder ein Dreieck durchschicken und anschauen, wo es denn "knackt" und was dann fehlt...
:
Bearbeitet durch Moderator
Bei 44100 Hz braucht man 245 Sample-Buffer/pro Sekunde. Das wäre also nicht ein Knacken, sondern ein Ton von 245 Hz, wenn es da immer beim Neufüllen Probleme gibt. Was ist ein 'Knacken'?
Das läuft mit 8000 samples/sek. Das knacken kommt unregelmässig, etwa 3 mal pro sekunde. Unangenehm laut. Die 540 samples braucht der codec. Da der codec ziemlich zeitintensiv ist klappt das "3 mal 180 samples einsammeln" und dann codec laufenlassen nicht so einfach.
Pepe T. schrieb: > Das läuft mit 8000 samples/sek. Das knacken kommt unregelmässig, etwa 3 > mal pro sekunde. Unangenehm laut. Ich tippe auf ein Softwareproblem bei der Bufferumschaltung.
Pepe T. schrieb: > Die 540 samples braucht der codec. Welcher Codec denn? Oben hieß es über I2S rein und gleich wieder raus. Das was man in der Hardware als CODEC bezeichnet, wurde oben als Audiochip bezeichnet. Warum der CODEC (HW) irgendwelche Puffergrößen haben sollte, wäre mir schleierhaft, normalerweise erwarten die kontinuierlich Takt und Daten. Bitte eine weitere Salamischeibe... Vermutlich gibt es einfach alle 16k samples einen underrun oder overflow in dem ominösen Codec.
mm schrieb: > Welcher Codec denn? Melpe1200. Der kommt aber erst dazu wenn audio in-out fehlerfrei läuft. Der wünscht einen stream aus 540 sample chunks :)
:
Bearbeitet durch User
So einen Effekt kenne ich wenn der Sender LeftJustified steht der Empfänger aber auf I2S (oder umgekehrt). Das passiert dann vorzugsweise bei höheren Pegeln. Sind FS1 Clock und FS64 Clock stabil und Synchron?
Hab's kontrolliert, steht alles auf I2S, nix leftjustified. Was FS1 und FS64 Clock sind weiss ich nicht. Hab den driver von "schreibfaul" auf git geklaut. Da der code mit 180 sample buffer problemlos läuft denke ich das problem ist nicht beim hardware interface.
Pepe T. schrieb: > Was FS1 und FS64 Clock sind weiss ich nicht. FS1 Clock wird auch als LR Clock bezeichnet. FS64 als Bitclock. Sender steht auf Master? Empfänger auf Slave? Wenn das alles ok ist ist dein FIFO Buffer wohl nicht 100% ok.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.