diff --git a/src/AnuragEnchanceTarget.m b/src/AnuragEnchanceTarget.m new file mode 100644 index 0000000..a43ebfe --- /dev/null +++ b/src/AnuragEnchanceTarget.m @@ -0,0 +1,54 @@ +function output_x = AnuragEnhanceTarget(x, Fs,LOW, MID, HIGH) +%Amplify a range of frequencies a percentage around the target frequency +%Also damnpen the other frequencies so that the target is easier to hear +%percentage is expressed as a number between 0 and 1. +%target is the midpoint of the frequency range to amplify +%x and Fs are the signal and frequency +% CONTRIBUTORS: +% Anurag Jadhav: function creator + +% Detailed explanation goes here + TARGET = MID; + AreaPercentage = 0.15; + [dim,len] = size(x); %get length of the input + F = Fs * ((-len/2) : ((len/2) - 1)) / len; + lenf = length(F); + Mod_Freq = ifft(fft(x)); %Fourier Transform of the input signal + output = zeros([1,lenf]); % zero array of size Mod_freq + if(dim == 2) %check for dual channel audio + F = [F;F]; + output = [output;output]; + end + %set the bounds + lowerBound = (1-AreaPercentage) * TARGET; + upperBound = (1+AreaPercentage) * TARGET; +%% Amplify the target frequencies and dampen the others + if(dim == 2) %iterate through both channels if track is dual channel + for n = 1:lenf + if ((lowerBound < abs(F(1,n))) && abs(F(1,n)) < upperBound) + output(1,n) = 2; + else + output(1,n) = 0.75; + end + end + for n = 1:lenf + if ((lowerBound < abs(F(2,n))) && abs(F(2,n)) < upperBound) + output(2,n) = 2; + else + output(2,n) = 0.75; + end + end + else %iterate onnly once for monochannel + for n = 1:lenf + if ((lowerBound < abs(F(n))) && abs(F(n)) < upperBound) + output(n) = 2; + else + output(n) = 0.75; + end + end + end +%%Filter the original signal and transform + filtered_Mod_Freq = fftshift(Mod_Freq .* output); + output_x = real(ifft(filtered_Mod_Freq)); + +end \ No newline at end of file diff --git a/src/Filter/AnuragEnchanceTarget.m b/src/Filter/AnuragEnhanceTarget.m similarity index 100% rename from src/Filter/AnuragEnchanceTarget.m rename to src/Filter/AnuragEnhanceTarget.m diff --git a/src/Select/FilterSelect.m b/src/Select/FilterSelect.m index 659a0d1..6e5c61c 100644 --- a/src/Select/FilterSelect.m +++ b/src/Select/FilterSelect.m @@ -19,6 +19,10 @@ function output = FilterSelect(input,Fs,LOW,MED,HIGH,number) output = seperate_prevalent_schluep(input, Fs, LOW, MED, HIGH); elseif(number == "Option 6") output = bandreject_filter(input, Fs, LOW, HIGH); + elseif(number == "Option 7") + output = AnuragEnhanceTarget(input, Fs, LOW,MID, HIGH); + elseif(number == "Option 8") + output = AnuragDampenTarget(input, Fs, LOW,MID, HIGH); else output = input; end