Mikrofondaten einlesen und als Sound verarbeiten

Hi

Ich habe zur Zeit eine sehr wichtige Aufgabe auf der Arbeit am laufen.

Kurzform: Mikrofone nehmen Geräusche auf, diese werden mit einem Analog/Digital-Wandler in long bzw. double (je nach Wandlertyp) Werte umgewandelt und grafisch ausgegeben (In Form von „Wellen und Zacken“ usw.).

Ich soll es möglich machen, dass man diese Daten hörbar macht. Ich habe also als Grundlage einen Datenstrom aus long bzw. double Werten und muss daraus „Sound schaffen“ (Zum Testen benutze ich eine Textdatei mit entsprechenden Messdaten einer 5 minütigen Messung)

Ich habe hierfür als ersten Anstoß die BASS-Library (www.un4seen.com) gefunden. Leider ist der Support eher mau und die Dokumentation auch relativ dürftig, sodass ich zwar weiß das das wohl irgendwie damit gehen sollte, mir aber keiner bis jetzt gesagt hat wie ich das bewerkstelligen soll.

Kennt jemand diese Library und hat schon Erfahrungen mit ihr gemacht? Oder hat jemand von euch eine bessere Idee oder ein ähnliches Problem bereits auf andere Weise gelöst?
Wenn mir jemand ein paar theoretische Grundlagen ztur Behandlung dieses Problems vermitteln könnte wäre ich ebenfalls dankbar. Ich will ja auch wissen was ich tue und nicht einfach irgendwas wo rein kopieren und es läuft.

Hoffe hier kann mir jemand helfen (Ich bin in 4 verschiedenen Foren bis jetzt komplett antwortlos verblieben :frowning: )

Gruß
Patrick

Hallo Patrick

Kurzform: Mikrofone nehmen Geräusche auf, diese werden mit
einem Analog/Digital-Wandler in long bzw. double (je nach
Wandlertyp) Werte umgewandelt

…und dann in eine Datei geschrieben, s.u., richtig?
Ist mir neu, das mit doubles, seltsame Wandler sind das. Für 16-Bit-Wandler genügt ein Integer, bei 24 Bit eben ein long.

und grafisch ausgegeben (In Form
von „Wellen und Zacken“ usw.).

Falls *Du* das machen sollst: für Grafik gibt es so ca. 300 Libs im Netz, die meisten gratis und quelloffen, oder man schreibt sich selbst eine.

Ich soll es möglich machen, dass man diese Daten hörbar macht.
Ich habe also als Grundlage einen Datenstrom aus long bzw.
double Werten und muss daraus „Sound schaffen“ (Zum Testen
benutze ich eine Textdatei mit entsprechenden Messdaten einer
5 minütigen Messung)

Dann werte ich die Datei mit ifstream oder C-maessig mit fscanf() aus, und schicke die Daten an den Audioausgang.

Ich habe hierfür als ersten Anstoß die BASS-Library
(www.un4seen.com) gefunden.

Die ist scheinbar nicht quelloffen, daher nicht so attraktiv.
Ich kenne da aber jemanden, der war mit dem hier hoch zufrieden:
http://www.portaudio.com/

Wenn mir jemand ein paar theoretische Grundlagen ztur
Behandlung dieses Problems vermitteln könnte wäre ich
ebenfalls dankbar.

Da würde ich zuerst mal Wikipedia bemühen, suche nach „Audiosignal“
http://de.wikipedia.org/wiki/WAV_(Format)
http://de.wikipedia.org/wiki/Schwingung
Das suchen im Web mit den Fachausdrücken hat schon so Manchem weitergeholfen, ein gutes Buch wäre von Bernd Enders: „Lexikon Musikelektronik“, und ist nicht mal teuer.
Natürlich gibt es auch andere Bücher über Tontechnik.

Ich will ja auch wissen was ich tue

Da redet der Control-Freak. Dann müsstest Du selbst die WIN-API „knacken“, dann suchst du im MSDN unter „WaveOutOpen“, „WaveOutWrite“, „WaveOutClose“ und verwandten Funktionen. Das kann nun zwar gut in Arbeit ausarten - aber Du weisst dann, was du tust, und was da abläuft.

und nicht einfach irgendwas wo rein kopieren und es läuft.

So ist das, wenn man fremde Libs benutzt: irgendwo was rein kopieren und es läuft.

Hoffe hier kann mir jemand helfen (Ich bin in 4 verschiedenen
Foren bis jetzt komplett antwortlos verblieben :frowning: )

Hoffe ich auch, dass ich Dir helfen konnte, :wink:
lG
Martin B

Testprogramme ausführen
Hi

Erstmal dickes danke für Antwort (4 Foren keine Antwort, wer-weiss-was: Antwort innerhalb von 24h)

Habe mir die Portaudio library mal heruntergeladen. Problem ist nun: wie bekomme ich die Testprogramme zum Laufen?

Habe in den Projekteigenschaften als Include-Pfad den Pfad zum Includeordner im PortAudio-Verzeichnis eingetragen.

Außerdem habe ich nirgends eine Lib oder Dll gefunden, die ich einbinden kann.

Das „Tutorial“ welches erklären soll wie das geht ist komisch…zumindest haut das alles nicht hin was die da sagen.

Ich benutze Borland C+±Builder.

Habe mir schonmal testweise die „portaudio_x86.lib“ runtergeladen. Diese funktionierte aber nicht (Fehler: „Invalid OMF Record“)

Habe versucht sie passende DLL mit einem Converter in die passende Lib zu konvertieren, gleicher Fehler („Unresolved External…“) wie zuvor.

Die Daten grafisch darstellen soll ich übrigens nicht, das gibts es schon.

Gruß
Patrick

Hallo Patrick

Erstmal dickes danke für Antwort (4 Foren keine Antwort,
wer-weiss-was: Antwort innerhalb von 24h)

Danke sehr. Wie man das allerdings zum Laufen kriegt, kann ich nicht sagen, ich verwende es selbst nicht. Ich habe es hier aber schon mal empfohlen, der war echt zufrieden.
Vielleicht haben die ein eigenes Forum für PortAudio, die wissen dann über bekannte Probleme Bescheid (oder googeln).

Außerdem habe ich nirgends eine Lib oder Dll gefunden, die ich
einbinden kann.

Braucht Du *nicht notwendig*. Du hast ja die Quellen.

Habe mir schonmal testweise die „portaudio_x86.lib“
runtergeladen. Diese funktionierte aber nicht (Fehler:
„Invalid OMF Record“)

Vorkompilierte Binaries passen immer nur „für eine System-Version mit dem einen Compiler in der einen Version von diesem“. Ansonsten ist das blosse Lotterie, das anzukriegen.

lG
Martin B