diff --git a/.DS_Store b/.DS_Store index 9c2f11d..ca1e61b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/DarellsAnnex/.DS_Store b/App/.DS_Store similarity index 100% rename from DarellsAnnex/.DS_Store rename to App/.DS_Store diff --git a/DarellsAnnex/app.mlapp b/App/app.mlapp similarity index 69% rename from DarellsAnnex/app.mlapp rename to App/app.mlapp index 16dd027..60f0bbc 100644 Binary files a/DarellsAnnex/app.mlapp and b/App/app.mlapp differ diff --git a/DarellsAnnex/DarellbandpassFilter.m b/DarellsAnnex/DarellbandpassFilter.m deleted file mode 100644 index 918358a..0000000 --- a/DarellsAnnex/DarellbandpassFilter.m +++ /dev/null @@ -1,20 +0,0 @@ -function output_y = DarellbandpassFilter(y,Fs,LOW,MED,HIGH) - Len = length(y); - F = Fs * (-Len/2 : (Len/2 - 1))/Len ; - Mod_Freq = fftshift(fft(y)); - lenf = length(F); - output = 0 .* Mod_Freq; % zero array of len f - - for n = 1:lenf - if ((LOW < abs(F(n))) && HIGH > abs(F(n))) - output(n) = 1; - else - output(n) = 0; - end - end - - filtered_Mod_Freq = fftshift(Mod_Freq .* output); - - output_y = real(ifft(filtered_Mod_Freq)); - -end \ No newline at end of file diff --git a/DarellsAnnex/Synthtest.m b/DarellsAnnex/Synthtest.m deleted file mode 100644 index c7101aa..0000000 --- a/DarellsAnnex/Synthtest.m +++ /dev/null @@ -1,165 +0,0 @@ - -filename = '/Users/DarellCHUA/OneDrive - UC San Diego/FA2021/ECE 45/SynthesizerProject/Be Epic.mp3'; -[y,Fs] = audioread(filename); - -lengthy = length(y); -new_y = zeros(1,lengthy); -for n = 1:lengthy - new_y(n) = y(n,1) + y(n,2); -end - -y = new_y; - -Time = (length(y)-1)/Fs; - - -Freq = 200; %Hz -Time = 20; - -LFO = 1; %Hz - -RangeFs = [20 22050]; -Fs = 2*RangeFs(2); %should be 44.1 khz - - -x = 0:1/Fs:Time; -Len = length(x); - -y = sin(Freq*2*pi*x); %sin wave - -beats = 1; -y = y + sin((Freq+beats)*2*pi*x); %adding beats based on superposition -y = y + sin((2*Freq)*2*pi*x); -y = y + sin((2*Freq+beats)*2*pi*x); -y = y + sin((2*Freq+5)*2*pi*x); -y = y + sin((2*Freq+beats+5)*2*pi*x); -y = y + sin((3*Freq)*2*pi*x); -y = y + sin((3*Freq+beats)*2*pi*x); -y = y + sin((3*Freq+5)*2*pi*x); -y = y + sin((3*Freq+beats+5)*2*pi*x); -y = y + 5*sin((10)*2*pi*x); -y = y + sin((10*Freq+5)*2*pi*x); - -y = y + square(Freq*2*pi*x); %square wave -y = y + square((Freq+beats)*2*pi*x); -y = y + square(Freq*2*pi*x); %square wave -y = y + square((Freq+beats)*2*pi*x); - -T = 4; -overlay = Envelope(0.2,0.1,0.5,0.3,T,Fs); -y = overlayAmp(x,y,overlay,T,Fs); - -f = Fs * (-Len/2 : (Len/2 - 1))/Len ; -Mod_Freq = fft(y); -figure(1) -plot(f, abs(fftshift(Mod_Freq))); - -y = bandpassFilter(f,y,0,22000); -Mod_Freq = fft(y); -figure(2) -plot(f, abs(fftshift(Mod_Freq))); - -T = 2; -overlayPitch = Envelope(0.4,0.1,0.9,0.3,T,Fs); -y = PitchEnvelope(f,y,1,overlayPitch,T,Fs,Time); -sound(y,Fs); - - - -function output = bandpassFilter(F,y,LOW,HIGH) - Mod_Freq = fftshift(fft(y)); - Mod_f = fftshift(fft(F)); - lenf = length(F); - output = 0 .* Mod_f; % zero array of len f - - for n = 1:lenf - if ((LOW < abs(F(n))) && HIGH > abs(F(n))) - output(n) = 1; - else - output(n) = 0; - end - end - - filtered_Mod_Freq = fftshift(Mod_Freq .* output); - - output = real(ifft(filtered_Mod_Freq)); - -end - -function output = PitchEnvelope(f,y,percentile,shift,T,Fs,Time) %just need to change percentile to a graph - - x = 0:1/Fs:Time; - leny = length(y); %create zero array of y of len x - lengthxol = T * Fs; - shift = 1 - shift; - for n = 1:leny - y(n) = y(n)*cos(shift(mod(n,lengthxol)+1)*2*pi*x(n)); - end - - Mod_Freq = fftshift(fft(y)); - Mod_f = fftshift(fft(f)); - lenf = length(f); - output = 0 .* Mod_f; % zero array of len f - midpoint = round(lenf/2); - - Filtered_Signal = fftshift(fft(bandpassFilter(f,y,0,22000))); - filtered_Signal = real(ifft(Filtered_Signal)); - - demod_Signal = filtered_Signal .* 0; %create zero array of y of len filtersignal - - for n = 1:leny - demod_Signal(n) = 2* filtered_Signal(n) *cos(shift(mod(n,lengthxol)+1)*2*pi*x(n)); - end - - - Message = fftshift(fft(bandpassFilter(f,demod_Signal,-5000,5000))); - message = real(ifft(Message)); - output = y; - -end -function output = overlayAmp(x,y,overlay,T,Fs) - counter = 1; - lengthx = length(x); - lengthxol = T * Fs; - while counter < lengthx - y(counter) = y(counter) * overlay(mod(counter,lengthxol)+1); - counter = counter+1; - end - output = y; -end - - -function output = Envelope(attack,decay,sustain,release,T,Fs) %percentages for attack, decay, sustain, release - attacktime = attack * T * Fs; - decaytime = attacktime + decay * T * Fs; - sustaintime = (T - (release * T))* Fs; - - x = 0:1/Fs:T; - y = 0 .* x; %create zero array of y of len x - - tcounter = 1; - %attack phase - - while tcounter <= attacktime - y(tcounter) = (1/attacktime) * tcounter; - tcounter = tcounter+1; - end - istart = tcounter; - while tcounter<= decaytime - y(tcounter) = 1 - (((1-sustain)/(decay * T * Fs)) * (tcounter - istart)); - tcounter = tcounter+1; - end - - while tcounter<= sustaintime - y(tcounter) = sustain; - tcounter = tcounter+1; - end - istart = tcounter; - while tcounter < (T * Fs) - y(tcounter) = sustain - ((sustain/(release * T * Fs)) * (tcounter - istart)); - tcounter = tcounter+1; - end - - plot(x,y) - output = y; -end \ No newline at end of file