diff demo_degradationUnits.m @ 28:76f45f5c9afd DoP tip

- added units * adaptiveEqualizer * applyMfccMeanAdaption - added corresponding data files for presets - modified applyImpulseReponse to use the estimated average group delay to adjust the output audio and keep the timestamps as is (was vice versa before) - added new units demos, incl one for applyLowpass
author SebastianEwert
date Tue, 21 Jan 2014 18:08:28 +0000
parents 48e065a17454
children
line wrap: on
line diff
--- a/demo_degradationUnits.m	Wed Nov 13 16:51:34 2013 +0000
+++ b/demo_degradationUnits.m	Tue Jan 21 18:08:28 2014 +0000
@@ -72,137 +72,6 @@
 end
 
 %%
-for k=1:length(filenames)
-    [f_audio,samplingFreq]=wavread(filenames{k});
-    
-    parameter.snrRatio = 10; % in dB
-    parameter.loadInternalSound = 1;
-    parameter.internalSound = 'PubEnvironment1';
-    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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_02_addSound_file%d.png',k)))    
-    end
-end;
-
-%%
-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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_03_applyAliasing_file%d.png',k)))    
-    end
-end;
-
-%%
-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),[0 maxValueRangeVis(k)]); 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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_05_applyDynamicRangeCompression_file%d.png',k)))    
-    end
-end;
-
-%%
-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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_06_applyHarmonicDistortion_file%d.png',k)))    
-    end
-end;
-
-%%
-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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_07_applyMp3Compression_file%d.png',k)))    
-    end
-end;
-
-%%
-for k=1:length(filenames)
-    [f_audio,samplingFreq]=wavread(filenames{k});
-    
-    parameter.changeInPercent = +5;
-    f_audio_out = degradationUnit_applySpeedup(f_audio, samplingFreq, [], parameter);
-    
-
-    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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_08_applySpeedup_file%d.png',k)))    
-    end
-end;
-
-%%
-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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_09_applyWowResampling_file%d.png',k)))    
-    end
-end;
-
-%%
-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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_10_applyHighpassFilter_file%d.png',k)))    
-    end
-end;
-
-
-%%
 % Some degradations delay the input signal. If some timepositions are given
 % via timepositions_beforeDegr, the corresponding positions will be returned
 % in timepositions_afterDegr.
@@ -223,10 +92,197 @@
     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)));
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_02_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_11_applyImpulseResponse_file%d.png',k)))    
+        figure; imagesc(t,f,log10(abs(s)+1),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_02_applyImpulseResponse_file%d.png',k)))    
     end
 end;
 
+%%
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.snrRatio = 10; % in dB
+    parameter.loadInternalSound = 1;
+    parameter.internalSound = 'PubEnvironment1';
+    f_audio_out = degradationUnit_addSound(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_03_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_03_addSound_file%d.png',k)))    
+    end
+end;
+
+%%
+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_04_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_04_applyAliasing_file%d.png',k)))    
+    end
+end;
+
+%%
+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_05_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_05_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_06_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_06_applyDynamicRangeCompression_file%d.png',k)))    
+    end
+end;
+
+%%
+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_07_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_07_applyHarmonicDistortion_file%d.png',k)))    
+    end
+end;
+
+%%
+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_08_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_08_applyMp3Compression_file%d.png',k)))    
+    end
+end;
+
+%%
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.changeInPercent = +5;
+    f_audio_out = degradationUnit_applySpeedup(f_audio, samplingFreq, [], parameter);
+    
+
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_09_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_09_applySpeedup_file%d.png',k)))    
+    end
+end;
+
+%%
+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_10_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_10_applyWowResampling_file%d.png',k)))    
+    end
+end;
+
+%%
+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_11_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_11_applyHighpassFilter_file%d.png',k)))    
+    end
+end;
+
+%%
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    parameter.stopFrequency = 1000;
+    f_audio_out = degradationUnit_applyLowpassFilter(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_12_applyLowpassFilter_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_12_applyLowpassFilter_file%d.png',k)))    
+    end
+end;
+
+
+%%
+for k=1:length(filenames)
+    [f_audio,samplingFreq]=wavread(filenames{k});
+    
+    % There are four ways to specify the destination mean spectrum: 1. by
+    % loading example files provided with the toolbox, 2. by using specific
+    % noise "color" profiles, 3. by providing the destination mean spectrum
+    % using the parameter destMagFreqResp, 4. by providing audio data from
+    % which the destination mean spectrum is computed.
+    parameter.loadInternalMagFreqResp = 1; 
+    parameter.internalMagFreqResp = 'Beethoven_Appasionata_Rwc';
+    f_audio_out = degradationUnit_adaptiveEqualizer(f_audio, samplingFreq, [], parameter);
+    
+    wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_13_adaptiveEqualizer_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_13_adaptiveEqualizer_file%d.png',k)))
+    end
+end;
+
+%%
+if 1
+    for k=1:length(filenames)
+        [f_audio,samplingFreq]=wavread(filenames{k});
+       
+        [parameter.audioDataForDestMfcc,parameter.audioDataForDestMfcc_sf]=wavread('testdata/RWC_P009m_drum.wav');
+
+        % After this unit, the mean MFCC vector of f_audio_out is almost identical to
+        % the one of RWC_P009m_drum.wav
+        parameter.visualizations = createSpectrograms;
+        f_audio_out = degradationUnit_applyMfccMeanAdaption(f_audio, samplingFreq, [], parameter);
+              
+        wavwrite(f_audio_out,samplingFreq,16,fullfile(pathOutputDemo,sprintf('Unit_14_applyMfccMeanAdaption_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),[0 maxValueRangeVis(k)]); axis xy; colormap(hot); ylim([0,8000]); colorbar; print('-dpng', fullfile(pathOutputDemo,sprintf('Unit_14_applyMfccMeanAdaption_file%d.png',k)))
+        end
+    end
+end
+
+
+