view nonExposed/getBackground.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 786f7138a2d5
children
line wrap: on
line source
function [sceneSchedule,sceneObjects,score]=getBackground(inputPath,score,eventInfo,sr,noiseLevel,noiseFiltMaxFreq,noiseFiltOrder)

% 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/>.

if isfield(score,'backgrounds')
    
    for i=1:length(score.backgrounds)
        sceneObjects(i) = getSampleInfo(score.backgrounds{i}{1},score.backgrounds{i}{2},'background',inputPath,score.sceneDuration,eventInfo,sr);
        sceneSchedule(i).classId=i;
        sceneSchedule(i).classLabel=score.backgrounds{i}{2};
        sceneSchedule(i).position=0;
        sceneSchedule(i).instance=1;
        sceneSchedule(i).isBackground = 1;
        sceneSchedule(i).duration = score.sceneDuration;
        if (i==1)
            sceneSchedule(i).ebr=1;
        else
            sceneSchedule(i).ebr= score.backgrounds{i}{3};
        end
    end
    
else
    
    noise=randn(1,sr*score.sceneDuration);
    noise=noise./max(abs(noise));
    
    if noiseFiltMaxFreq
        noise=filter(fir1(noiseFiltOrder,noiseFiltMaxFreq/sr/2),1,noise);
    end
    
    noise=noise.*power(noiseLevel/20);
    
    sceneObjects(1).isBackground = 1;
    sceneObjects(1).classLabel = 'noise';
    sceneObjects(1).startTimes = 0;
    sceneObjects(1).endTimes = score.sceneDuration;
    sceneObjects(1).names={'noise'};
    sceneObjects(1).query= 'noise';
    sceneObjects(1).trackLength=score.sceneDuration;
    
    sceneSchedule(1).classId=1;
    sceneSchedule(1).classLabel='noise';
    sceneSchedule(1).position=0;
    sceneSchedule(1).instance=1;
    sceneSchedule(1).isBackground = 1;
    sceneSchedule(1).duration = score.sceneDuration;
    
    score.backgrounds{1}{1}='noise';
    score.backgrounds{1}{2}=noise;
end
end