function amtstart()
%AMTSTART Start the Auditory Modelling Toolbox
% Usage: amtstart;
%
% AMTSTART starts the Auditory Modelling toolbox. This command must be
% run before using any of the function in the toolbox.
%
% The auditory modelling toolbox depends on the Linear Time Frequency
% Analysis Toolbox (LTFAT) to properly function. Therefore, you must issue
% the ltfatstart command before you start AMT.
%
% To configure default options for functions, you can use the
% ltfatsetdefaults function in your startup script. A typical startup
% file could look like:
%
% addpath('/path/to/my/work/ltfat');
% addpath('/path/to/my/work/amtoolbox');
% ltfatstart;
% amtstart;
% ltfatsetdefaults('audspecgram','classic');
%
% The last command wil configure AUDSPECGRAM to display a classic
% auditory spectrogram by default.
%
% See also: amthelp
%
% References:
% P. L. Soendergaard, B. Torresani, and P. Balazs. The Linear Time
% Frequency Analysis Toolbox. International Journal of Wavelets,
% Multiresolution Analysis and Information Processing, 10(4), 2012.
%
%
% Url: http://amtoolbox.sourceforge.net/amt-0.9.5/doc/amtstart.php
% Copyright (C) 2009-2014 Peter L. Søndergaard.
% This file is part of AMToolbox version 1.0.0
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
% AUTHOR : Peter L. Søndergaard.
%% LTFAT package
% Search for LTAFT package
basepath=which('amtstart');
basepath=basepath(1:end-11);
if ~exist('ltfatstart','file')
ltfatpath=fullfile(basepath,'thirdparty','ltfat');
if exist(ltfatpath,'dir')
addpath(ltfatpath);
end
end
% Start LTFAT
disp('*** Starting LTFAT ***');
if exist('ltfatstart','file')
ltfatstart;
else
error(['LTFAT package could not be found. Unable to continue.' 10 ...
'Download LTFAT from http://ltfat.sourceforge.net ' 10 ...
'and copy to amtoolbox/thirdparty/ltfat.']);
end
% Check for the correct version.
s=ltfathelp('version');
s_r='1.0.9'; % set the required version
v=sscanf(s,'%d.%d.%d'); v(4)=0;
v_r=sscanf(s_r,'%d.%d.%d');
if ~(v(1)>v_r(1) || (v(1)>=v_r(1) && v(2)>v_r(2)) || (v(1)>=v_r(1) && v(2)>=v_r(2) && v(3)>=v_r(3)) ),
error(['You need LTFAT >= ' s_r ' to work with AMT. ' ...
'Please update your package from http://ltfat.sourceforge.net ']);
end
%% SOFA package
% Search for SOFA package
basepath=which('amtstart');
basepath=basepath(1:end-11);
if ~exist('SOFAstart','file')
sofapath=fullfile(basepath,'thirdparty','SOFA','API_MO');
if exist(sofapath,'dir')
addpath(sofapath);
end
end
% Start SOFA
disp('*** Starting SOFA ***');
if exist('SOFAstart','file')
SOFAdbPath(fullfile(basepath,'hrtf'));
SOFAdbURL('http://www.sofacoustics.org/data/amt');
SOFAstart;
else
disp(['SOFA package could not be found. Continue without SOFA support.']);
disp(['For SOFA support please download the package ' ...
'from http://sofacoustics.sourceforge.net ' ...
'and copy to amtoolbox/thirdparty/SOFA.']);
end
%% SFS package
% Search for the package
basepath=which('amtstart');
basepath=basepath(1:end-11);
if ~exist('SFS_start','file')
sfspath=fullfile(basepath,'thirdparty','SFS');
if exist(sfspath,'dir')
addpath(sfspath);
end
end
% Start
disp('*** Starting SFS ***');
if exist('SFS_start','file')
SFS_start;
s=SFS_version; s_r='0.2.4'; % set the required version
disp(['SFS, version ' s]);
v=sscanf(s,'%d.%d.%d'); v(4)=0;
v_r=sscanf(s_r,'%d.%d.%d');
if ~(v(1)>v_r(1) || (v(1)>=v_r(1) && v(2)>v_r(2)) || (v(1)>=v_r(1) && v(2)>=v_r(2) && v(3)>=v_r(3)) ),
error(['You need SFS >= ' s_r ' to work with AMT. ' ...
'Please update your package from https://github.com/sfstoolbox/sfs ']);
end
else
disp(['SFS package could not be found. Continue without SFS support.']);
disp(['For SFS support please download the package ' ...
'from https://github.com/sfstoolbox/sfs ' ...
'and copy to amtoolbox/thirdparty/SFS.']);
end
%% Start AMT
disp('*** Starting AMT ***');
% --- general settings ---
% Print the banner at startup?
printbanner=1;
% Get the basepath as the directory this function resides in.
% The 'which' solution below is more portable than 'mfilename'
% becase old versions of Matlab does not have "mfilename('fullpath')"
basepath=which('amtstart');
basepath=basepath(1:end-11);
if exist('addpath','var')>0
addpath(basepath);
else
path(path,basepath);
end
bp=[basepath,filesep];
% Load the version number
[FID, MSG] = fopen ([bp,'amtoolbox_version'],'r');
if FID == -1
error(MSG);
else
amt_version = fgetl (FID);
fclose(FID);
end
% ----------- install the modules -----------------
modules={};
nplug=0;
% List all files in base directory
d=dir(basepath);
for ii=1:length(d)
if d(ii).isdir
if ~(d(ii).name(1)=='.')
name=d(ii).name;
% The file is a directory and it does not start with '.' This could
% be a module
if exist([bp,name,filesep,name,'init.m'],'file')
% Set 'status' to zero if the module forgets to define it.
status=0;
module_version=amt_version;
addpath([bp,name]);
eval([name,'init']);
if status>0
if status==1
nplug=nplug+1;
modules{nplug}.name=name;
modules{nplug}.version=module_version;
end;
else
rmpath([bp,name]);
end;
end;
end;
end;
end;
% Check if Octave was called using 'silent'
%if isoctave
% args=argv;
% for ii=1:numel(args)
% s=lower(args{ii});
% if strcmp(s,'--silent') || strcmp(s,'-q')
% printbanner=0;
% end;
% end;
%end;
if printbanner
disp(['AMT version ',amt_version,'. Copyright 2009 - 2014 Peter L. Søndergaard. For help, please type "amthelp".'])
end;
%% ---------- load information into ltfathelp ------------
% As comp is now in the path, we can call ltfatarghelper
ltfatsetdefaults('amthelp','versiondata',amt_version,...
'modulesdata',modules);