← Back to team overview

sslug-teknik team mailing list archive

Re: test .wav fil for stereo/mono

 

Hej

Atte André Jensen wrote:
> > > Er der nogen som kender et lille program som kan tage en 2 kannals .wav
> > > og afgøre om den er stereo (højre/venstre er forskellige) eller mono
> > > (højre/venstre er ens), gerne noget som kører fra en promt...?????
> > Mednstående læser forbi header i WAV-fil.
> > Derefter er det bare at læse byte-par efter byte-par og sammenlign dem,
> > hvis du da snakker S16LE (Signed 16 Bit Little Endian). Stereo er typisk
> > interleaved byte-par efter byte-par.
> Ok, det fattede jeg ikke specielt meget at (princippet, jo - koden,
> nope)

Jeg antager, at du kan laese C-kode.

Koden som jeg sendte laeser headeren i en wav-fil. Resten af filen
er audio data. Hvis din wav-fil er 2-kanals, saa er resten af filen
organiseret saaledes

   venstre sample
   hoejre sample
   venstre sample
   hoejre sample
   venstre sample
   hoejre sample

etc.

Altsaa laeser du den foerste ventre-sample og den foerste hoejre-sample
og sammenligner dem. Derefter anden venstre-sample og anden hoejre-sample
etc.

Problemet er saa hvilket sample-format din wav-fil har. Formatet er
typisk S16LE (Signed 16 Bit Little Endian). Det betyder, at hver
sample er 2 bytes. Om den er signed eller ikke og om den er little endian
eller big endian, er i denne sammenhaeng irrellevant.

Ovenstaaende kan goeres med 2-5 linjer kode. Nedenstaaende kraever 100
gange saa meget.

> 1) splitte filen op i to mono-filer, en som indeholder venstre kanal og
> en som indeholder højre kanal.
> 
> 2) vende fasen på én af filerne
> 
> 3) mixe dem sammen
> 
> 4) måle lydstyrken; lav lydstyrke=mono, høj lydstyrke=stereo
> 
> Og med sox er det noget med:
> 
> 1)
> sox org.wav -c1 l.wav avg -l
> sox org.wav -c1 r.wav avg -r
> 
> 2)
> sox -v -1 r.wav p_r.wav
> 
> 3)
> soxmix r.wav p_r.wav mix.wav
> 
> 4)
> sox mix.wav dummy.wav stat -v
> 
> Det kan naturligvis laves smartere på mindre linjer, men dette afspejler
> lissom hvad jeg tænkte. Men problemet er bare at jeg ikke kan få
> kanal-splitningen under 1) til at virke, det er muligt der sker noget,
> det er bare meget lidt. Er der én som kan overtale sox til at gemme den
> ene side af en stereo-wave i en mono-wave?

--PMM
------------------------------------------------------------------------------
Peter Maersk-Moller
------------------------------------------------------------------------------
Ogg/Vorbis support for MPEG4IP        : http://www.maersk-moller.net/mpeg4ip/
YUV12, XviD, AVI and MP4 for libmpeg2 : http://www.maersk-moller.net/libmpeg2/
------------------------------------------------------------------------------


Follow ups

References