www.gusucode.com > 声音的处理有:LPC,FFT,共振峰,频谱源码程序 > siganlandsystemusingMatlab/SSUM/library/play_audiodata.m
function play_audiodata(audiodata, varargin) if nargin > 1, button_handle = varargin{1}; end %if (size(audiodata.data,2) > 1) % tempbox = msgbox({'Sound is larger than 1 channel.', ... % 'Converting to mono.'}, 'Soundplay'); % audiodata.data = to_mono(audiodata.data); % %close(tempbox); %end if (exist('button_handle') & length(audiodata.data)/audiodata.Fs > 2) if (strncmp(get(button_handle,'String'),'Play',4)) % Take care of audio cutting off in UNIX flavors if (isunix) audiodata.data(length(audiodata.data):(length(audiodata.data) + ... floor(audiodata.Fs/2))) = 0; end if str2num(version('-release')) > 12.1 handles.p = handle(com.mathworks.toolbox.audio.JavaAudioPlayer(... audiodata.data, audiodata.Fs, 16)); ud.hButton = button_handle; set(handles.p, 'UserData', ud); set(handles.p, 'StopFcn', @play_Ended); handles.p.play; set(button_handle,'String','Stop'); else sound(audiodata.data, audiodata.Fs, 16); end else % This causes MATLAB to halt on UNIX if (~isunix) handles.p.stop; end end else if str2num(version('-release')) > 12.1 audiodata.data(length(audiodata.data):(length(audiodata.data) + ... floor(audiodata.Fs/2))) = 0; handles.p = handle(com.mathworks.toolbox.audio.JavaAudioPlayer(... audiodata.data, audiodata.Fs, 16)); handles.p.play; else sound(audiodata.data, audiodata.Fs, 16); end end function play_Ended(hObject, event) ud = get(hObject, 'UserData'); set(ud(1).hButton,'String','Play');