Discussion:
[audacity]Raw-Import
(zu alt für eine Antwort)
Stefan Ram
2016-09-15 17:10:13 UTC
Permalink
Wenn man 32-Bit-Zahlen in eine Datei schreibt, die eine
Wellenform darstellen sollen, was ist dann der richtige
Importtyp, wenn man sie mit Audacity importieren will?

Also beispielsweise 32-Bit-Zahlen mit Vorzeichen in
Zweierkomplementdarstellung, wo dann

01111111 1111111 11111111 111111111
10000000 0000000 00000000 000000000
01111111 1111111 11111111 111111111
10000000 0000000 00000000 000000000

eine Rechteckschwingung mit maximaler Amplitude wäre.

Wie sollte die Reihenfolge der Bytes aussehen, erst das
höherwertigste?

Wäre das im Import-Dialog von Audacity "Signed 32 bit PCM"?

Und "Sample rate 44100 Hz" bedeut, daß ein Abtastwert
1/44100 Sekunden dauert?

Und bei "2 Channels (Stereo)", wie werden dann die Werte
für die beiden Känele angegeben, beide direkt hintereinander?
Also, so

01111111111111111111111111111111
01111111111111111111111111111111
10000000000000000000000000000000
10000000000000000000000000000000
01111111111111111111111111111111
01111111111111111111111111111111
10000000000000000000000000000000
10000000000000000000000000000000

für eine synchrone Rechteckschwingung auf beiden Kanälen?
Stefan Ram
2016-09-15 17:41:13 UTC
Permalink
Post by Stefan Ram
Wie sollte die Reihenfolge der Bytes aussehen, erst das
höherwertigste?
PS: Aha, wie ich sehe, kann man das in Audiacity auswählen.

(Vielleicht schreibe ich die Audiodaten doch lieber als WAV.)
Marcel Mueller
2016-12-04 09:16:53 UTC
Permalink
Post by Stefan Ram
Post by Stefan Ram
Wie sollte die Reihenfolge der Bytes aussehen, erst das
höherwertigste?
PS: Aha, wie ich sehe, kann man das in Audiacity auswählen.
(Vielleicht schreibe ich die Audiodaten doch lieber als WAV.)
Würde ich auch empfehlen.

Die 44 Bytes WAV-Header kannst Du bis auf die zwei Längenfelder hart
kodieren, wenn dein Format konstant ist.

32 Bit signed int ist allerdings ein sehr ungewöhnliches Format für
Audiodaten. Ich würde nicht einmal wetten dass alle Programme damit klar
kommen.
Üblich ist entweder 32 Bit Float (single precission) mit Werten im
Bereich [-1,1] für 0 dB FSR oder alternativ 16 oder 24 Bit singed int.


In der Sache kannst Du ein Rechteck so erzeugen, allerdings hat Rechteck
einen hässlich kleinen Crest-Faktor (den kleinstmöglichen überhaupt).
Heißt, die Maximale RMS Ausgangsleistung ist sehr hoch im Verhältnis zu
einem auf 0dB FSR normalisierten Signal.
Kurzum, man will das Signal nicht normalisieren, sondern mindestens mal
um 10-20 dB dämpfen, sonst kann man sich durchaus auch mal ungewollt die
Lautsprecher abschießen. Also bitte nicht die maximalwerte für die
Zahlen nehmen, sondern einen vernünftigen Bruchteil davon. Ich würde mit
-20 dB (10% FSR) starten.


BTDTMT. Ich habe schon oft Testsignale auf diese Weise programmatisch
erzeugt. Teilweise sogar als transienter Stream, z.B. für Raummessungen.


Marcel

Norbert Hahn
2016-09-15 22:34:18 UTC
Permalink
Post by Stefan Ram
Wenn man 32-Bit-Zahlen in eine Datei schreibt, die eine
Wellenform darstellen sollen, was ist dann der richtige
Importtyp, wenn man sie mit Audacity importieren will?
Also beispielsweise 32-Bit-Zahlen mit Vorzeichen in
Zweierkomplementdarstellung, wo dann
01111111 1111111 11111111 111111111
10000000 0000000 00000000 000000000
01111111 1111111 11111111 111111111
10000000 0000000 00000000 000000000
eine Rechteckschwingung mit maximaler Amplitude wäre.
Das ist keine Rechteckschwingung, sondern Murks! Und außerdem noch
mit der Abtastfrequenz synchronisiert und in der Phase verriegelt.

Wenn Du eine saubere Rechteckschwingung "errechnen" willst, solltest
Du mit der Grundfrequenz als sin-Schwingung beginnen dann die zweite
Oberwellen hinzufügen, dann die vierte usw., also Fourrier-Synthese der
Rechteckschwingung durchziehen:
f(t)={\frac {4h}{\pi }}\left[\sin(\omega t)+{\frac {1}{3}}\sin(3\omega
t)+{\frac {1}{5}}\sin(5\omega t)+\ldots \right]={\frac {4h}{\pi }}\sum
_{k=1}^{\infty }{\frac {\sin((2k-1)\omega t)}{2k-1}}}

Norbert
Marcel Mueller
2016-12-04 09:06:41 UTC
Permalink
Post by Norbert Hahn
Wenn Du eine saubere Rechteckschwingung "errechnen" willst, solltest
Du mit der Grundfrequenz als sin-Schwingung beginnen dann die zweite
Oberwellen hinzufügen, dann die vierte usw., also Fourrier-Synthese der
f(t)={\frac {4h}{\pi }}\left[\sin(\omega t)+{\frac {1}{3}}\sin(3\omega
t)+{\frac {1}{5}}\sin(5\omega t)+\ldots \right]={\frac {4h}{\pi }}\sum
_{k=1}^{\infty }{\frac {\sin((2k-1)\omega t)}{2k-1}}}
Man kann sich auch von Hinten durch die Brunst ins Knie schießen.

Mal ganz abgesehen von unnötigen Aufwand konvergiert das erstaunlich
schlecht.


Marcel
Loading...