All,

In save-sound-as, I am setting the data-format to mus-l24int and the
srate to 44100. But when I re-open the written file in SND (and other
editors). Neither field is correctly written.

The code is attached below.

If I start with a 48kHz file, the srate in the header remains as 48000
(and hence the file plays back transposed up... since I resampled it
down to 44100).

The data-format also seems to remain as what it was in the source file...

Am I doing something wrong? (should I set some global variable sor something?)

Etienne

-----------------------------------------------------------------
#!/usr/bin/snd -b
!#
(use-modules (ice-9 format))
; set some global variables
(set! (sinc-width) 100); set the sync width to very high to get the
smaple rate conversion as accurate as possible
(if (not (= (length (script-args)) 3)) ;
       (display "usage: decode_to_square.sh file-name")
       (begin
               (let ((name (list-ref (script-args) (+ (script-arg) 1)) ))
                       (let ((index (open-sound name)))
                               (display (format #f "header is ~a (or
~a) \n" (header-type index) (mus-header-type-name (header-type index))
))
                               (display (format #f "data-format is ~a
(or ~a) \n" (data-format index) (mus-data-format-name (data-format
index) ) ))
                               (display (format #f "Resampling from
~D to 44100 \n" (srate index)))

                               ; resample
                               (src-sound (/ (srate index) 44100) 1.0 index)

                               ; apply LADSPA plugin that converts to
4 speaker feeds in a square
                               (apply-ladspa   (list
(make-sample-reader 0 0 0)  ; W

(make-sample-reader 0 0 1)  ; X

(make-sample-reader 0 0 2)  ; Y

(make-sample-reader 0 0 3)) ; Z
                                               (list "ambis1"
"Ambisonics-square-decoder" 0 1 1.4138 2 380 2.7)
                                               (mus-sound-frames name)
                                               "ambisonic file")

                               ; now convert the 4 channels into 4
mono wav files, and write to disk
                               (do ((i 0 (1+ i)))
                                          ((= i 4))
                                       (display (format #f "writing
channel ~D\n" i))
                                       (save-sound-as (format #f "~a.~a" name
                                                               (case i

((0) "LFront.wav")

((1) "RFront.wav")

((2) "RSurround.wav")

((3) "LSurround.wav")

(else "lost")
                                                               )
                                                       )
                                                       index
                                                       :header-type
mus-riff ; (value= 3) RIFF header (for Microsoft WAVE)
                                                       :data-format
mus-l24int ; (value= 16) 24 Bit little endian int
                                                       :srate 44100 ;
the sound is already resampled, so lets set the appropriate file
header
                                                       :channel i)
                               )
                               (close-sound index)
                       )
             )
      )
)
(exit)

_______________________________________________
Cmdist mailing list
[email protected]
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

Reply via email to