Ergebnis 1 bis 7 von 7

Thema: Hilferuf für den monitor-2.1-mergeWinLin Branch

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Zitat Zitat von dekarl
    Hallo,

    im mergeWinLin Zweig haben Norad und ich den Linux und Windows Code zusammenzuführt. Funktioniert unter Linux mit ALSA und OSS auch wunderbar, nur unter Windows gibt es noch ein Problem mit dem Einlesen von der Soundkarte. (Die eingelesenen Daten haben viele Ausreißer im Audiosignal, quasi eine total verrauschte Aufnahme)
    Wie stellt Ihr eigentlich fest, daß die Aufnahme verrauscht ist. Schreibt Ihr das probeweise in eine Datei, die Ihr auswertet ?

    Zitat Zitat von dekarl
    * Anpassung der MSVC Projektdateien (bis jetzt kompiliere ich die Windowsversion unter Linux)
    Habe MinGW-MSYS auf meinem Win-XP installiert. Hat damit unter MSYS auch sofort geklappt zu kompilieren. Und seltsamerweise habe ich auch eine ganz vernünftige Auswertung bekommen (Wobei ich die Audiodaten über das BOSTool erzeugt habe). Werde das mal weiter testen müssen.

    ... Aber vorher mal in Eclipse/CDT integrieren :-)

  2. #2
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    So, hab' mich mit dem Problem in den letzten Stunden mal auseinandergesetzt.

    Das Ende vom Lied ist, daß es nichts mit den Aufnahmeroutinen zu tun hat, sondern mit dem Dateiformat mit dem geprüft wird.

    Es werden float-Werte als .wav File geschrieben. Da scheinen aber die floats nicht identisch definiert zu sein. Inzwischen kann ich das recht leicht reproduzieren:

    Erstelle ich den Inhalt des Aufnamespeichers manuell wie folgt, dann ist der Linke Kanal in Ordnung, der Rechte sieht aus wie Kraut-und-Rüben (i geht von 0 bis 8192)

    Code:
    audio_buffer->Left[i]  = ((float) (i%10)-5)*0.1 ;
    audio_buffer->Right[i] = sin(i*3.1415926/180.0) ;
    ändere ich dann wie folgt wird auch der Linke Kanal nicht mehr zu einer Sägezahnkurve.

    Code:
    audio_buffer->Left[i]  = ((float) (i%100)-50)*0.01 ;
    audio_buffer->Right[i] = sin(i*3.1415926/180.0) ;
    Meine Vermutung ist, daß die float Werte zwischen dem gcc und der Wave Datei nicht identisch definiert sind. Vermutlich unterschiedliche Grosse Mantissen.

    Der Beschriebene Fehler scheint also nur bei der Erstellung der .wav Datei aufzutreten. Die aufgezeichneten Daten (innerhalb des Programms) sind m.E. korrekt.

    Werde aber auch mal schauen, ob sich da noch etwas optimieren läßt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •