daniele@182: %% AUDIO OBJECT CLASS daniele@182: % Class designed to analyse and process audio signals daniele@182: %% daniele@160: classdef audio daniele@182: properties (SetAccess = protected) daniele@182: s %vector containing the audio signal daniele@182: fs %sampling frequency daniele@182: nBits %number of bits per sample daniele@182: name %string containing the name of the audio file daniele@182: format %string containing the format of the audio file daniele@182: bufferOperator %struct containing the parameters of the buffer operator daniele@182: S %matrix containing frames of audio daniele@166: end daniele@166: daniele@166: methods daniele@166: %% Constructor daniele@166: function obj = audio(varargin) daniele@182: %%% obj = audio(varargin) daniele@182: % Audio object constructor. daniele@182: % INPUT: either a path to an audio file, or the following daniele@182: % arguments. daniele@182: % - s: vector containing the audio samples daniele@182: % - fs: sampling frequency daniele@182: % - nBits: number of bits per sample daniele@182: % - name: name of the audio object daniele@182: % - format: format of the audio object daniele@182: % 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@182: % if a file is specified, read it from disk 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@182: % if properties are specified, set them to input values 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