Audio Datei aus I2S-Daten erstellen

OP #5890355
Lesenswert?

Wie bekommme ich aus gespeicherten Rohdaten im I²S Format (2 Kanäle á 16 
Bit, signed, left justified) eine abspielbare Audio-Datei?

Lassen sich unkompromierten Daten in einem Container (.ogg?) verpacken? 
Oder geht es nicht ohne Codec wie FLAC oder Vorbis? Gibt es evtl. 
passende Pakete für Octave oder SciLab?
Gast #5890408
Lesenswert?

Du kannst einfach ein WAV-File daraus machen. Das File-Format ist 
ziemlich einfach. Es besteht nur aus einem Header und dann den Rohdaten. 
Es gibt 8- und 16-bit, sowie Mono und Stereo. Bei Bedarf kannst Du das 
Wav-File mit einem beliebigen Kodierer in MP3 oder OGG wandeln.

BTW: Ich nehme an, es geht um dein Ultraschallprojekt. Welches Mikrophon 
verwendest du?
Gast #5890638
Lesenswert?

Hans schrieb:

> Du kannst einfach ein WAV-File daraus machen. Das File-Format ist
> ziemlich einfach. Es besteht nur aus einem Header und dann den Rohdaten.
> Es gibt 8- und 16-bit, sowie Mono und Stereo. Bei Bedarf kannst Du das
> Wav-File mit einem beliebigen Kodierer in MP3 oder OGG wandeln.

Das ist so nicht ganz richtig dargestellt. Was du hier beschreibst, ist 
PCM-Wav, also ein Spezialfall von Wav für unkomprimierte Daten. 
Sozusagen der historische Urgrund des Wav-Formats. So aber natürlich 
genau passend für das Problem des TO.

Man sollte aber auch erwähnen, dass Winzigweich schon damals im letzten 
Jahrtausend viel weitsichtiger war als viele OSS-Projekte es heute sind 
und eine Art Escape von den trivialen PCM-Daten von Anfang an vorgesehen 
hat, die FCC-ID.

D.h.: Ein Wav-Container kann im Prinzip jedes Audiozeugs beinhalten, 
auch das, was heute "High-End" ist. Theoretisch muss dazu nur die FCC-ID 
bei Microsoft registriert werden, damit es auch formal "offiziell" wird. 
Keine Ahnung, ob das entsprechende Registrierungsverfahren heute 
überhaupt noch existiert...

Aber egal, Fakt ist jedenfalls, dass es etliche offiziell registrierte 
FCC-IDs tatsächlich gibt, die eben NICHT PCM-Wav sind. Das sollte man 
beim Programmieren immer im Hinterkopf haben, wenn man mit Wav-Dateien 
hantiert...
Gast #5891153
Lesenswert?

Es ist besser, wenn Du ein Semikolon an die Zeilenenden machst, sonst 
läuft dein Output über.

Mit sound(sig,fab) kann man das Signal hörbar machen.
1
fab=19200;
2

3
t = [0:0.001:10.239];
4
figure(1);
5
plot(t,((32-e)*e.**(-t))+e+40,t,(16./(t+0.5))+40);
6
hchidx = (16./(t+0.5)).+40;
7
hchirp = cos(hchidx.*(2*pi).*t);
8
echidx = ((32-e)*e.**(-t))+e+40;
9
echirp = cos(echidx.*(2*pi).*t);
10

11
figure(2);
12
plot(t,echirp, t,hchirp);
13

14
audiowrite('eh_chirp.wav', transpose([hchirp;echirp]), fab, 'BitsPerSample', 16);
15

16
figure(3);
17
plot(t,echirp.-hchirp, t,hchirp.-echirp);
18
audiowrite('ehdelta_chirp.wav', transpose([hchirp-echirp;echirp-hchirp]), fab, 'BitsPerSample', 16);
19

20
sound(echirp,fab);
OP #5903484
Lesenswert?

c-hater schrieb:
> aus denen du beim Import frei wählen
> kannst.

... und musst. Bisher habe ich keine Möglichkeit gefunden, eine 
Defaulteinstellung für den Import vorzugeben. Die Samplingrate ist zwar 
frei wählbar, aber trotzdem steht in der Maske immer 44100Hz. Da ich mit 
50kHz oder 100kHz arbeite, muss ich dieses Feld bei jedem Import neu 
anfassen.
Gast #5906014
Lesenswert?

c-hater schrieb:
> Dafür gibt es viele Möglichkeiten, aus denen du beim Import frei wählen
> kannst.

Kann der auch ASCII lesen?

Ich hatte das auch bereits einmal probiert, komme aber nicht weiter. Hat 
wer mal ein Beispiel für ein konkretes Datenformat oder Rohdatenfile und 
der dazu passenden Einstellung des Importfilters?

Ich hätte gerne so etwas als WAV:

4564, 2342
2344,  123
... , ...

also zweireihig direkt aus Excel, gfs mit Semikolon, wenn sein muss.
Gast #5906064
Lesenswert?

Tobias N. schrieb:

> Kann der auch ASCII lesen?

Nein.

> Ich hätte gerne so etwas als WAV:
>
> 4564, 2342
> 2344,  123
> ... , ...
>
> also zweireihig direkt aus Excel, gfs mit Semikolon, wenn sein muss.

Dann musst du es aus Excel halt im Binärformat exportieren. Dazu sind 
nur sehr wenige Zeilen VBA-Code nötig. Ungefähr 5...

Mit ein paar Zeilen mehr könnte man dann allerdings auch gleich direkt 
aus Excel ein *.wav speichern...

Man muss halt einfach nur generell programmieren können und die VBA-Doku 
lesen.
OP #5907216
Lesenswert?

Jürgen S. schrieb:
> Weil der TE (angeblich) einen I2S-Datenstrom hat und der ist nicht so
> direkt zu importieren.

Warum "(angeblich)"? Ich schreibe tatsächlich den Datenstrom an den 
Codec 1:1 mit.

Soweit ich sehe, besteht Octave's audioread() auf einem Container, 
Audacity importiert auch Rohdaten.

Import mit fread() ginge sicher - aber das Handling in Audacity (z.B. 
beim Zuschneiden) ist deutlicher einfacher.
Gast #6242492
Lesenswert?

c-hater schrieb:
> Mit ein paar Zeilen mehr könnte man dann allerdings auch gleich direkt
> aus Excel ein *.wav speichern...
>
> Man muss halt einfach nur generell programmieren können und die VBA-Doku
> lesen.

Wenn man es programmieren muss, braucht es auch das VBA nicht. Ich bezog 
mich auf den scheinbar ein fachen Vorschlag von oben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren