From 6c7aa76b62f806106eb18a82c94540beb44512a9 Mon Sep 17 00:00:00 2001 From: Darell Chua Yun Da Date: Thu, 2 Dec 2021 13:44:57 +0800 Subject: [PATCH] Continuous Replay and Filter Continuous Replay and Filter. Added a test main for people to easily test their filters. --- DarellsAnnex/DarellbandpassFilter.m | 20 ++++++++++++++++++++ src/Main_test.m | 25 +++++++++++++++++++++++++ src/play_continuous.m | 9 +++++++++ 3 files changed, 54 insertions(+) create mode 100644 DarellsAnnex/DarellbandpassFilter.m create mode 100644 src/Main_test.m create mode 100644 src/play_continuous.m diff --git a/DarellsAnnex/DarellbandpassFilter.m b/DarellsAnnex/DarellbandpassFilter.m new file mode 100644 index 0000000..918358a --- /dev/null +++ b/DarellsAnnex/DarellbandpassFilter.m @@ -0,0 +1,20 @@ +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/src/Main_test.m b/src/Main_test.m new file mode 100644 index 0000000..034d0f6 --- /dev/null +++ b/src/Main_test.m @@ -0,0 +1,25 @@ +%Basic Example test +%Written by Darell +amplitude = 1; +frequency = 200; +phase = 0; +fs = 44800; +duration = 1; +duty = 0; + +%example Sine Generation +x = generate_sine(amplitude, frequency, phase, fs, duration, duty); +x = x + generate_sine(amplitude, (frequency+5), phase, fs, duration, duty); + +%play over 5 counts, should hear both frequencies, 5 beats between the 2 frequencies +playtime = 5; +play_continuous(x, fs, playtime) + +LOW = 0; +HIGH = frequency + 1; +MED = "unused"; +x = DarellbandpassFilter(x,fs,LOW,MED,HIGH); + +%play over 5 counts, should only hear 200hz +playtime = 5; +play_continuous(x, fs, playtime) \ No newline at end of file diff --git a/src/play_continuous.m b/src/play_continuous.m new file mode 100644 index 0000000..9b2828b --- /dev/null +++ b/src/play_continuous.m @@ -0,0 +1,9 @@ +function play_continuous(wave, fs, time) +%play_continuous: Darell Continuously Playing + soundfile = audioplayer(wave,fs); + countmax = time / (length(wave) / fs); + for count = 0:1:countmax %change to counts/while play button active + playblocking(soundfile); + end +end +