Mercurial > hg > simscene-py
view nonExposed/timeDomainVisualization.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 | 39399de892ef |
children |
line wrap: on
line source
function status = timeDomainVisualization(tracks,figNum,settingFigure,figuresOption,fileName) % 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/>. % Producing a time domain visualization step=0.5; % seconds wStep = round(step*settingFigure.sr); wSize = wStep*2; for t=1:size(tracks,1) for i=0:floor((size(tracks,2)-wSize)/wStep) % Not really power, but more nicely additive, better suited for % this representation I think powers(i+1,t) = norm(tracks(t,i*wStep+1:min(size(tracks,2), i*wStep+wSize))); end end powers(powers<max(powers(:))/500) = 0; powers = gaussianSmoothing(powers', 15)'; switch figuresOption case 1 f=figure('Visible', 'off'); case 2 f=figure(figNum); end clf; h = area(powers,'LineWidth', 2, 'EdgeColor', [.2, .2, .2]); for t=1:size(tracks,1) h(t).FaceColor = settingFigure.cmap(t, :); end xlim([0 size(powers,1)]) xtick=0:round(20/step):size(powers,1); % every 20 sec set(gca,'YTick', [],'YTicklabel', [],'xtick',xtick,'xticklabel',xtick*step); xlabel('time (sec)') % ylabel('amplitude') set(findall(f,'-property','FontSize'),'FontSize',settingFigure.FontSize) set(findall(f,'-property','FontName'),'FontName','Arial') box off %// remove outer border set(gca,'ycolor', [1 1 1]); ax1 = gca; yruler = ax1.YRuler; yruler.Axle.Visible = 'off'; if figuresOption == 1 set(f,'PaperUnits','centimeters') set(f,'PaperPositionMode','manual') set(f,'papersize',[settingFigure.width,settingFigure.height]) set(f,'paperposition',[0,0,settingFigure.width,settingFigure.height]) set(gca,'ycolor', [1 1 1]); print(f,fileName,'-dpng') end function as = gaussianSmoothing(as, factor) if ~exist('factor', 'var'), factor = 200; end % gaussian filtering for smooth display g = gausswin(ceil(size(as, 2)/factor)); % shall adapt the size to the length of the file g = g/sum(g); for k=1:size(as, 1) as(k, :) = conv(as(k, :), g, 'same'); end