MATLAB Answers

Convert the wave file to a 16 bit signed binary format

34 views (last 30 days)
Nishant Prakash
Nishant Prakash on 13 Aug 2014
Edited: dpb on 17 Aug 2014
Hi, I am working with the audio codecs and I need to give an input to the encoder which mentions that the input should be 16 bit signed binary files. I have the wave files with me and am using wavread function to read it into an array. Once I read it into the array I am not sure how to convert it into signed 16 bit binary file.

Accepted Answer

dpb
dpb on 13 Aug 2014
Edited: dpb on 17 Aug 2014
Would seem simplest to just use the optional FMT input argument to wavread and set the format of the returned values...
[Y,...]=wavread(...,FMT) specifies the data type format of Y used
to represent samples read from the file.
If FMT='double', Y contains double-precision normalized samples.
If FMT='native', Y contains samples in the native data type
found in the file. Interpretation of FMT is case-insensitive,
and partial matching is supported. If omitted, FMT='double'.
...
Output Scaling
The range of values in Y depends on the data format FMT specified.
Some examples of output scaling based on typical bit-widths found
in a WAV file are given below for both 'double' and 'native' formats.
FMT='native'
#Bits MATLAB data type Data range
----- ------------------------- -------------------
8 uint8 (unsigned integer) 0 <= Y <= 255
16 int16 (signed integer) -32768 <= Y <= +32767
Presumes, of course, your .wav file is 16-bit.
Otherwise,
doc int16
which also presumes the data will fit into a 16-bit integer.
  2 Comments
dpb
dpb on 17 Aug 2014
Then should be 16-bit automagically. You can check by the result of
whos
at the command line on the variable when you read a file just to be certain -- or programmatically by
isa('int16',varname)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!