annotate util/classes/@audio/audio.m @ 182:f8bc99a5470c danieleb

Added test for audio buffer function
author Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk>
date Mon, 09 Jan 2012 12:58:00 +0000
parents 1495bdfa13e9
children
rev   line source
daniele@182 1 %% AUDIO OBJECT CLASS
daniele@182 2 % Class designed to analyse and process audio signals
daniele@182 3 %%
daniele@160 4 classdef audio
daniele@182 5 properties (SetAccess = protected)
daniele@182 6 s %vector containing the audio signal
daniele@182 7 fs %sampling frequency
daniele@182 8 nBits %number of bits per sample
daniele@182 9 name %string containing the name of the audio file
daniele@182 10 format %string containing the format of the audio file
daniele@182 11 bufferOperator %struct containing the parameters of the buffer operator
daniele@182 12 S %matrix containing frames of audio
daniele@166 13 end
daniele@166 14
daniele@166 15 methods
daniele@166 16 %% Constructor
daniele@166 17 function obj = audio(varargin)
daniele@182 18 %%% obj = audio(varargin)
daniele@182 19 % Audio object constructor.
daniele@182 20 % INPUT: either a path to an audio file, or the following
daniele@182 21 % arguments.
daniele@182 22 % - s: vector containing the audio samples
daniele@182 23 % - fs: sampling frequency
daniele@182 24 % - nBits: number of bits per sample
daniele@182 25 % - name: name of the audio object
daniele@182 26 % - format: format of the audio object
daniele@182 27 %
daniele@166 28 % if no arguments are specified, prompt for the choice of an
daniele@166 29 % audio file
daniele@166 30 if ~nargin
daniele@166 31 [fileName,pathname] = uigetfile({'*.wav; *.aiff;'},'Select an audio file');
daniele@166 32 varargin{1} = strcat(pathname,filesep,fileName);
daniele@166 33 end
daniele@182 34 % if a file is specified, read it from disk
daniele@166 35 if ischar(varargin{1})
daniele@166 36 [~, obj.name obj.format] = fileparts(varargin{1});
daniele@166 37 switch obj.format
daniele@166 38 case '.wav'
daniele@166 39 [obj.s obj.fs obj.nBits] = wavread(varargin{1});
daniele@166 40 otherwise
daniele@166 41 error('Unsupported audio format')
daniele@166 42 end
daniele@182 43 % if properties are specified, set them to input values
daniele@166 44 else
daniele@166 45 obj.s = varargin{1};
daniele@166 46 if nargin>1, obj.fs = varargin{2}; else obj.fs = []; end
daniele@166 47 if nargin>2, obj.nBits = varargin{3}; else obj.nBits = []; end
daniele@166 48 if nargin>3, obj.name = varargin{4}; else obj.name = []; end
daniele@166 49 if nargin>4, obj.format = varargin{5}; else obj.format = []; end
daniele@166 50 end
daniele@166 51 obj.S = [];
daniele@166 52 obj.bufferOperator = [];
daniele@166 53 end
daniele@166 54
daniele@166 55 %% Playback functions
daniele@166 56 function player = play(obj, player)
daniele@166 57 if ~exist('player','var') || isempty(player)
daniele@166 58 player = audioplayer(obj.s,obj.fs);
daniele@166 59 end
daniele@166 60 play(player);
daniele@166 61 end
daniele@166 62
daniele@166 63 function player = stop(obj, player)
daniele@166 64 if ~exist('player','var') || isempty(player)
daniele@166 65 player = audioplayer(obj.s,obj.fs);
daniele@166 66 end
daniele@166 67 stop(player)
daniele@166 68 end
daniele@166 69
daniele@166 70 function player = pause(obj, player)
daniele@166 71 if ~exist('player','var') || isempty(player)
daniele@166 72 player = audioplayer(obj.s,obj.fs);
daniele@166 73 end
daniele@166 74 pause(player)
daniele@166 75 end
daniele@166 76 end
daniele@160 77 end