Filter and Pitch Envelope
Updated Main_test.m
This commit is contained in:
parent
6c7aa76b62
commit
beb9feafc9
BIN
src/.DS_Store
vendored
Normal file
BIN
src/.DS_Store
vendored
Normal file
Binary file not shown.
37
src/DarellPitchEnvelope.m
Normal file
37
src/DarellPitchEnvelope.m
Normal file
@ -0,0 +1,37 @@
|
||||
function output = DarellPitchEnvelope(input, Fs, attack,decay,sustain,release) %percentages for attack, decay, sustain, release
|
||||
len = length(input);
|
||||
T = (len-1)/Fs;
|
||||
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
|
||||
output = y;%create zero array of output 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
|
||||
|
||||
for counter = 1:1:len
|
||||
output(counter) = y(counter) * input(counter);
|
||||
end
|
||||
|
||||
end
|
@ -23,3 +23,13 @@ x = DarellbandpassFilter(x,fs,LOW,MED,HIGH);
|
||||
%play over 5 counts, should only hear 200hz
|
||||
playtime = 5;
|
||||
play_continuous(x, fs, playtime)
|
||||
|
||||
attack = 0.2;
|
||||
decay = 0.2;
|
||||
sustain = 0.2;
|
||||
release = 0.1;
|
||||
|
||||
x = DarellPitchEnvelope(x, fs, attack,decay,sustain,release); %output new sound in time domain
|
||||
%play over 5 counts, should only hear 200hz
|
||||
playtime = 5;
|
||||
play_continuous(x, fs, playtime)
|
||||
|
Reference in New Issue
Block a user