Merge pull request #61 from ltcptgeneral/lance_functions

This commit is contained in:
Lance Z 2021-12-12 16:39:02 -08:00 committed by GitHub
commit d096e4987a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

44
src/NotWorking/flanger.m Normal file
View File

@ -0,0 +1,44 @@
function output = flanger(input, time_delay, osc_freq, amp, Fs)
% DOCUMENTATION:
% FLANGER combines a single oscillating delayed signal with the original signal
% Interference between original and delayed signals create "flanging" effect
% Rocommedned delay time: 0-15 ms
% Recommended oscilating fequency: 0.1 - 5 Hz
% input: 1D array containing audio signal
% time_delay: maxinum value of the oscillating signal
% osc_freq: frequence of oscillation
% amp: amplitude of output signal
% fs: sampling frequency
% CONTRIBUTORS:
% Lance Zhu: Function Author
% SOURCES:
% Code inspired by information provided in:
% https://users.cs.cf.ac.uk/Dave.Marshall/CM0268/PDF/10_CM0268_Audio_FX.pdf
% create index array
len=length(input);
index=1:len;
% create reference wave to create oscillation
% taking only absoluted value for the reference wave
osc_wave = abs(sin(2*pi*index*(osc_freq/Fs)));
% convert delay in time to delay in samples
sample_delay=round(time_delay*Fs);
% create empty output array
output = zeros(len,1);
% Generating delay for each sample from reference oscillation wave
% start loop at sample_delay to make sure delayed sample is from t>=0
for i=sample_delay:len
% i_delay: delay for current sample
i_delay=round(osc_wave(i)*sample_delay);
% combine delayed sample with original sample
output(i) = (amp*input(i))+amp*(input(i-i_delay));
end