Mercurial > hg > simscene-py
view nonExposed/getSampleInfo.m @ 44:b7b1672b3c3b
Reading and writing of files now is done by soundfile since there seems to be a bug with writing .wav files with librosa (mplayer would play them as rubbish). Added soundfile as a requirement.
author | Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk> |
---|---|
date | Mon, 09 Oct 2017 11:55:03 +0100 |
parents | 92f73423eb37 |
children |
line wrap: on
line source
function [o] = getSampleInfo(label,query,sampleType,inputData,trackLength,eventInfo,sr) % This program was written by Mathias Rossignol & Grégoire Lafay % is Copyright (C) 2015 IRCAM <http://www.ircam.fr> % % 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/>. o.isBackground = strcmp(sampleType,'background'); o.classLabel = label; o.startTimes = []; o.endTimes = []; o.names={}; o.query= query; o.trackLength=trackLength; path = [inputData sampleType '/']; if any(strcmp(query,{eventInfo.query})) o.startTimes=eventInfo(strcmp(query,{eventInfo.query})).startTimes; o.endTimes=eventInfo(strcmp(query,{eventInfo.query})).endTimes; o.names=eventInfo(strcmp(query,{eventInfo.query})).names; else if ~exist(path, 'dir') error(['Could not find local dir ',path,'\n']); end samples = dir([path '*wav']); samplesInd = find(cellfun('isempty',regexpi({samples.name},query,'match'))==0); for ii=1:length(samplesInd) samplesInfo=audioinfo([path,'/',samples(samplesInd(ii)).name]); if sr~=samplesInfo.SampleRate error('Sample Rate must be 44100') end o.startTimes(end+1) = 0; o.endTimes(end+1) = samplesInfo.TotalSamples/samplesInfo.SampleRate; o.names{end+1}=samples(samplesInd(ii)).name; end end