diff demo_degradationUnits.m @ 4:053a55a91d20

- pimped the demos - re-added some missing degradation data
author SebastianEwert
date Tue, 20 Aug 2013 16:35:54 +0100
parents 9d682f5e3927
children a4173509bc43
line wrap: on
line diff
--- a/demo_degradationUnits.m	Tue Aug 20 12:31:29 2013 +0100
+++ b/demo_degradationUnits.m	Tue Aug 20 16:35:54 2013 +0100
@@ -3,7 +3,7 @@
 %
 % Centre for Digital Music, Queen Mary University of London.
 % This file copyright 2013 Sebastian Ewert, Matthias Mauch and QMUL.
-%    
+%
 % 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 2 of the
@@ -20,153 +20,209 @@
 %%
 
 clear
+close all
 
 addpath(fullfile(pwd,'AudioDegradationToolbox'));
 
 pathOutputDemo = 'demoOutput/';
 if ~exist(pathOutputDemo,'dir'), mkdir(pathOutputDemo); end
 
-%%
-filename = 'testdata/472TNA3M_snippet.wav';
-[f_audio,samplingFreq]=wavread(filename);
+filenames = {
+    'testdata/RWC_G39.wav';
+    'testdata/RWC_G72.wav';
+    'testdata/RWC_G84.wav';
+    'testdata/RWC_P009m_drum.wav';
+    'testdata/RWC-C08.wav';
+    };
 
-% with default settings:
-f_audio_out = degradationUnit_addNoise(f_audio, samplingFreq);
-
-% adjusting some parameters:
-parameter.snrRatio = 10; % in dB
-parameter.noiseColor = 'pink';  % convenient access to several noise types 
-f_audio_out = degradationUnit_addNoise(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio01_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio01_out.wav'));
-
+createSpectrograms = 0;
 
 %%
-filename = 'testdata/472TNA3M_snippet.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.snrRatio = 20; % in dB
-parameter.loadInternalSound = 1;
-parameter.internalSound = 'OldDustyRecording';
-f_audio_out = degradationUnit_addSound(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio02_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio02_out.wav'));
+% just copying original files to the demo folder
+for k=1:length(filenames)
+    copyfile(filenames{k}, fullfile(pathOutputDemo,sprintf('00_Original_file%d.wav',k)))
+    if createSpectrograms
+        [f_audio,samplingFreq]=wavread(filenames{k});
+        [s,f,t] = spectrogram(f_audio,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('00_Original_file%d.png',k)))
+    end
+end
 
 %%
-filename = 'testdata/clarinet.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.dsFrequency = 8000;
-f_audio_out = degradationUnit_applyAliasing(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio03_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio03_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    % with default settings:
+    %f_audio_out = degradationUnit_addNoise(f_audio, samplingFreq);
+    
+    % adjusting some parameters:
+    parameter.snrRatio = 10; % in dB
+    parameter.noiseColor = 'pink';  % convenient access to several noise types
+    f_audio_out = degradationUnit_addNoise(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_01_addNoise_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_01_addNoise_file%d.png',k)))    
+    end
+end
 
 %%
-filename = 'testdata/472TNA3M_snippet.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.preNormalization = -5; % 95% quantile will be at this dB level
-f_audio_out = degradationUnit_applyClipping(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio04_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio04_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.snrRatio = 10; % in dB
+    parameter.loadInternalSound = 1;
+    parameter.internalSound = 'OldDustyRecording';
+    f_audio_out = degradationUnit_addSound(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_02_addSound_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_02_addSound_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/472TNA3M_snippet.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.percentOfSamples = 5;  % signal is scaled so that n% of samples clip  
-f_audio_out = degradationUnit_applyClippingAlternative(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio05_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio05_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.dsFrequency = 4000;
+    f_audio_out = degradationUnit_applyAliasing(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_03_applyAliasing_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_03_applyAliasing_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/RWC-C08.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.compressorSlope = 0.9;
-parameter.normalizeOutputAudio = 1;
-f_audio_out = degradationUnit_applyDynamicRangeCompression(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio06_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio06_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.percentOfSamples = 10;  % signal is scaled so that n% of samples clip
+    f_audio_out = degradationUnit_applyClippingAlternative(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_04_applyClipping_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_04_applyClipping_file%d.png',k)))    
+    end
+end;
+%%
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.compressorSlope = 0.9;
+    parameter.normalizeOutputAudio = 1;
+    f_audio_out = degradationUnit_applyDynamicRangeCompression(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_05_applyDynamicRangeCompression_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_05_applyDynamicRangeCompression_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/clarinet.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.nApplications = 3;
-f_audio_out = degradationUnit_applyHarmonicDistortion(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio07_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio07_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.nApplications = 5;
+    f_audio_out = degradationUnit_applyHarmonicDistortion(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_06_applyHarmonicDistortion_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_06_applyHarmonicDistortion_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/p009m_drum.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.LameOptions = '--preset cbr 128';
-f_audio_out = degradationUnit_applyMp3Compression(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio08_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio08_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.LameOptions = '--preset cbr 32';
+    f_audio_out = degradationUnit_applyMp3Compression(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_07_applyMp3Compression_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_07_applyMp3Compression_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/clarinet.wav';
-[f_audio,samplingFreq]=wavread(filename);
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.changeInPercent = +5;
+    f_audio_out = degradationUnit_applySpeedup(f_audio, samplingFreq, [], parameter);
+    
 
-parameter.changeInPercent = +3;
-f_audio_out = degradationUnit_applySpeedup(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio09_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio09_out.wav'));
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_08_applySpeedup_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_08_applySpeedup_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/RWC-C08.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.intensityOfChange = 1.5;
-parameter.frequencyOfChange = 0.5;
-f_audio_out = degradationUnit_applyWowResampling(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio10_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio10_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.intensityOfChange = 3;
+    parameter.frequencyOfChange = 0.5;
+    f_audio_out = degradationUnit_applyWowResampling(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_09_applyWowResampling_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_09_applyWowResampling_file%d.png',k)))    
+    end
+end;
 
 %%
-filename = 'testdata/RWC-C08.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
-parameter.stopFrequency = 100;
-f_audio_out = degradationUnit_applyHighpassFilter(f_audio, samplingFreq, [], parameter);
-
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio11_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio11_out.wav'));
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.stopFrequency = 1000;
+    f_audio_out = degradationUnit_applyHighpassFilter(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_10_applyHighpassFilter_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_10_applyHighpassFilter_file%d.png',k)))    
+    end
+end;
 
 
 %%
-filename = 'testdata/472TNA3M_snippet.wav';
-[f_audio,samplingFreq]=wavread(filename);
-
 % Some degradations delay the input signal. If some timepositions are given
 % via timepositions_beforeDegr, the corresponding positions will be returned
-% in timepositions_afterDegr. 
+% in timepositions_afterDegr.
 timepositions_beforeDegr = [2, 3];
 
 % Processing the time positions even works without processing the audio data (f_audio_out is empty afterwards)
+parameter.loadInternalIR = 0;
+parameter.impulseResponse = [1 -1 1 -1 1 -1 ] / 6;  % some impulse response
+parameter.impulseResponseSampFreq = samplingFreq;
 parameter.normalizeOutputAudio = 1;
-parameter.impulseResponse = [0.5 -0.5 0.5 -0.5 0.5 -0.5 ];
-parameter.impulseResponseSampFreq = samplingFreq;
 [f_audio_out,timepositions_afterDegr] = degradationUnit_applyImpulseResponse([], [], timepositions_beforeDegr, parameter);
 
-% time positions and audio can also be processed at the same time:
-[f_audio_out,timepositions_afterDegr] = degradationUnit_applyImpulseResponse(f_audio, samplingFreq, timepositions_beforeDegr, parameter);
-fprintf('degradation_applyFirFilter: adjusting time positions\n');
-for k=1:length(timepositions_afterDegr) fprintf('%g -> %g\n',timepositions_beforeDegr(k),timepositions_afterDegr(k)); end
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    % time positions and audio can also be processed at the same time:
+    [f_audio_out,timepositions_afterDegr] = degradationUnit_applyImpulseResponse(f_audio, samplingFreq, timepositions_beforeDegr, parameter);
+    fprintf('degradation_applyFirFilter: adjusting time positions\n');
+    for m=1:length(timepositions_afterDegr) fprintf('%g -> %g\n',timepositions_beforeDegr(m),timepositions_afterDegr(m)); end
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_11_applyImpulseResponse_file%d.wav',k)));
+    if createSpectrograms
+        [s,f,t] = spectrogram(f_audio_out,hamming(round(samplingFreq*0.093)),round(samplingFreq*0.093/2),[],samplingFreq);
+        figure; imagesc(t,f,log10(abs(s)+1)); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_11_applyImpulseResponse_file%d.png',k)))    
+    end
+end;
 
-wavwrite(f_audio,samplingFreq,16,fullfile(pathOutputDemo,'audio12_in.wav'));
-wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,'audio12_out.wav'));
-