daniele@160: classdef audio daniele@166: %% Audio object daniele@166: properties daniele@166: s %vector containing the audio signal daniele@166: S %matrix containing frames of audio for subsequent processing daniele@166: fs %sampling frequency daniele@166: nBits %number of bits per sample daniele@166: name %string containing the name of the audio file daniele@166: format %string containing the format of the audio file daniele@166: bufferOperator %struct containing the parameters of the buffer operator (used by unbuffer to invert it) daniele@166: end daniele@166: daniele@166: methods daniele@166: %% Constructor daniele@166: function obj = audio(varargin) daniele@166: % if no arguments are specified, prompt for the choice of an daniele@166: % audio file daniele@166: if ~nargin daniele@166: [fileName,pathname] = uigetfile({'*.wav; *.aiff;'},'Select an audio file'); daniele@166: varargin{1} = strcat(pathname,filesep,fileName); daniele@166: end daniele@166: if ischar(varargin{1}) daniele@166: [~, obj.name obj.format] = fileparts(varargin{1}); daniele@166: switch obj.format daniele@166: case '.wav' daniele@166: [obj.s obj.fs obj.nBits] = wavread(varargin{1}); daniele@166: otherwise daniele@166: error('Unsupported audio format') daniele@166: end daniele@166: else daniele@166: obj.s = varargin{1}; daniele@166: if nargin>1, obj.fs = varargin{2}; else obj.fs = []; end daniele@166: if nargin>2, obj.nBits = varargin{3}; else obj.nBits = []; end daniele@166: if nargin>3, obj.name = varargin{4}; else obj.name = []; end daniele@166: if nargin>4, obj.format = varargin{5}; else obj.format = []; end daniele@166: end daniele@166: obj.S = []; daniele@166: obj.bufferOperator = []; daniele@166: end daniele@166: daniele@166: %% Playback functions daniele@166: function player = play(obj, player) daniele@166: if ~exist('player','var') || isempty(player) daniele@166: player = audioplayer(obj.s,obj.fs); daniele@166: end daniele@166: play(player); daniele@166: end daniele@166: daniele@166: function player = stop(obj, player) daniele@166: if ~exist('player','var') || isempty(player) daniele@166: player = audioplayer(obj.s,obj.fs); daniele@166: end daniele@166: stop(player) daniele@166: end daniele@166: daniele@166: function player = pause(obj, player) daniele@166: if ~exist('player','var') || isempty(player) daniele@166: player = audioplayer(obj.s,obj.fs); daniele@166: end daniele@166: pause(player) daniele@166: end daniele@166: end daniele@160: end