ubuntuusers.de

Rauschgenerator (weiß / rosa)

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6509

Wohnort: Hamburg

Ich suche nach einer Möglichkeit weißes oder rosa Rauschen zu erzeugen. Ich benötige das zur Simulation eines gestörten Funkkanals.

Bisher hatte ich dafür ein einfaches rückgekoppeltes Schieberegister verwendet. Seit kurzer Zeit bin ich auch in der Lage die erzeugten Signale auch als Frequenzspektrum (Spektrogramm / Wasserfalldiagramm) darzustellen. Dabei habe ich festgestellt, das niedrige Frequenzen irgendwie unterrepräsentiert sind, zumindest im Vergleich mit normalen Audiodateien. Der Grad der Unterrepräsentation ist dabei auch von der Abtastrate abhängig, was irgendwie auch verständlich ist, da ich für alle Abtastraten dasselbe Schieberegister verwende, womit die Bitfolge für alle Abtastraten gleich ist.

Im Anhang mal einige Beispiele.

  • Anhang 1: Abtastrate 8000 Hz, Frequenzbereich 0 - 4000 Hz, Nutzsignal 800Hz.

  • Anhang 2: Abtastrate 44100 Hz, Frequenzbereich 0 - 22050 Hz, Nutzsignal 800Hz.

  • Anhang 3: Abtastrate 44100 Hz, Frequenzbereich 0 - 22050 Hz, Nutzsignal Musik.

Beim Vergleich fällt auf, das bei real erzeugten Signalen niedrige Frequenzen deutlich stärker vertreten sind als bei meinen per Software erzeugten Signalen. Die meisten Media Player zeigen beim Abspielen von Audiodateien eine ähnliche Energieverteilung, was mich vermuten lässt, das mein Rauschspektrum nicht der Realität entspricht.

Wie kann ich eine realistischere Energieverteilung erreichen?

p.s. Wenn die Hauptenergie der Störsignale zu weit weg vom Nutzsignal ist, kann man die Wirksamkeit von Auswertemethoden schlecht auf die Realität übertragen.

Bilder

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Dakuan schrieb:

Ich suche nach einer Möglichkeit weißes oder rosa Rauschen zu erzeugen.

Du suchst speaker-test, vermute ich mal ...? - (für den Algorithmus kannst Du Dir ja die Quelle dafür ansehen)
Das liefert beim Standardaufruf bereits ein rosa Rauschen in Hifi-Qualität.

Oder geht Deine Frage ausdrücklich in Richtung einer theoretischen Betrachtung ?
(Dann fändest Du evt. hier einen grundsätzlichen und hier einen praktischen Einstieg)

LG,

track

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hi.

Audacity kann beliebiges Rauschen erstellen in beliebigen Audioformaten und Längen.

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

play aus dem sox-Paket kann div. Rauschen erzeugen (10 sec hier im Beispiel)

play -n synth 00:00:10 pinknoise
play -n synth 00:00:10 whitenoise
play -n synth 00:00:10 brownnoise

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6509

Wohnort: Hamburg

Ich habe mal die beiden letzten Links von track verfolgt und danach scheint es tatsächlich nicht ganz trivial zu sein. Was mein Scheiberegister erzeugt entspricht ziemlich genau dem blauen Rauschen in einem der beiden Links, allerdings mit sowas wie einer Sättigung bei hohen Frequenzen.

Das Rauschen mit einen externen Programm zu erzeugen wäre nur eine Notlösung, weil das bedeutet das mein Programm zusätzlich Daten aus einer externen Quelle zum eigenen Signal hinzumischen muss.

HiFi Qualität ist übrigens nicht erforderlich. Ich will ja eine Kurzwellen Funkstrecke simulieren und da ist bereits bei ca. 3kHz Schluss. Deshalb bevorzuge ich auch eine Abtastrate von nur 8kHz.

Ich werd mich nacher mal weiter durch die Links beissen. Was ich da bisher gesehen habe sieht kompliziert aus, da war sogar etwas Assemblercode dabei, was oft ein Hinweis auf einen tiefen Griff in die Trickkiste ist.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ah, ok, es geht Dir um einen Algorithmus ...!
Dann würde es im Prinzip ja schon reichen, wenn Du mit voller Datenrate /dev/urandom ausliest und an Deinen Tonkanal schickst. (was weißes Rauschen ergeben sollte)

Vergleich doch einfach mal die Ausgabe von urandom mit dem, was Dein Schieberegister liefert. → guck Dir die Spektren an, mit einer Fourier-Transformation} !

Hinweise, wie man das Rauschen dann rosa bekommt, stehen ja auf meinem 2. Link. Das einfachste wird die Geschichte mit den nach Oktaven gestaffelten weißen Generatoren sein, der letzte Vorschlag auf dem Link. Was effektiv nur bedeutet, pro Abtastpunkt 2x urandom zu lesen, den alten Wert zu subtrahieren und den neuen (gewertet) dazu zu addieren.
In jedem Fall solltest Du Dir das Ergebnis jeweils im gewöhnlichen Frequenzplot ansehen ...

p.s.: ... oder, wie ich oben schon vorschlug, Du übernimmst den Code von speaker-test (aus den alsa-utils), konkret den Teil speaker-test/pink.c, der Dir fix und fertig genau diese "Gardner-McCartney-Methode" liefert. 😉 - (ist nicht mal viel Code, nur ± 50 Zeilen )

LG,

track

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6509

Wohnort: Hamburg

Danke für den Hinweis. Habs sofort gefunden. Der Programmkopf sieht dem einen verlinkten Dokument sehr ähnlich.

guck Dir die Spektren an, mit einer Fourier-Transformation

FFTW muss man dafür nicht installieren. Audacity reicht völlig aus. Allerdings bringt das erst etwas, wenn man eine Vorstellung davon hat wie es richtig aussehen soll und darüber hatte ich bisher nicht nachgedacht. Den Code für die FFT habe ich übrigens bei Dr.Dobbs abgeschrieben, nachdem sich 2 andere Quellen als fehlerhaft erwiesen hatten.

Ich werd das heute Abend mal ausprobieren.

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6509

Wohnort: Hamburg

Es funktioniert! und das (fast) auf Anhieb. Schon in der Wellendarstellung bei Audacity sieht es deutlich anders aus. Man könnte denken, jemand hätte die Nulllinie verbogen, was ein deutlicher Hinweis auf sehr niedrige Frequenzen ist. Das Frequenzspektrum sieht aus, wie im Bilderbuch.

Antworten |