Files
matlab/common/wr16.m
T
jens b31f3e7435 - added
git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
2021-03-22 20:28:22 +00:00

68 lines
2.3 KiB
Matlab
Executable File

function [y,Fs,Format]=wr16(wavefile)
%WAVREAD Load Microsoft Windows 3.1 .WAV format sound files.
% [y]=WAVREAD(wavefile) loads a .WAV format file specified by "wavefile",
% returning the sampled data in variable "y". The .WAV extension
% in the filename is optional.
%
% [y,Fs]=WAVREAD(wavefile) loads a .WAV format file specified by
% "wavefile", returning the sampled data in variable "y" and the
% sample rate in variable "Fs".
%
% [y,Fs,Format]=WAVREAD(wavefile) loads a .WAV format file specified by
% "wavefile",returning the sampled data in variable "y", the sample
% rate in variable "Fs", and the .WAV file format information in
% variable "Format". The format information is returned as a 6 element
% vector with the following order:
%
% Format(1) Data format (always PCM)
% Format(2) Number of channels
% Format(3) Sample Rate (Fs)
% Format(4) Average bytes per second (sampled)
% Format(5) Block alignment of data
% Format(6) Bits per sample
%
% Note: WAVREAD currently supports only 8-bit single channel data.
%
% See also WAVWRITE.
% Copyright (c) 1984-94 by The MathWorks, Inc.
if nargin~=1
error('WAVREAD takes one argument, which is the name of the .WAV file');
end
if findstr(wavefile,'.')==[ ]
wavefile=[wavefile,'.wav'];
end
fid=fopen(wavefile,'rb','l');
if fid ~= -1
% read riff chunk
header=fread(fid,4,'uchar');
header=fread(fid,1,'ulong');
header=fread(fid,4,'uchar');
% read format sub-chunk
header=fread(fid,4,'uchar');
header=fread(fid,1,'ulong');
Format(1)=fread(fid,1,'ushort'); % PCM format
Format(2)=fread(fid,1,'ushort'); % 1 channel
Fs=fread(fid,1,'ulong'); % samples per second
Format(3)=Fs;
Format(4)=fread(fid,1,'ulong'); % average bytes per second
Format(5)=fread(fid,1,'ushort'); % block alignment
Format(6)=fread(fid,1,'ushort'); % bits per sample
% read data sub-chunck
header=fread(fid,4,'uchar');
nsamples=fread(fid,1,'ulong');
y=fread(fid,nsamples,'short');
fclose(fid);
end
if fid == -1
error('Can''t open .WAV file for input!');
end;