%***************************************%
% wavファイル処理                       %
% ディレイエコー                        %
%         by Arata Kawamura (2021.06.20)%
%***************************************%
clear;
% 音声信号(s)とサンプリング周波数(Fs)を読み込む
[s, Fs] = audioread("speech.wav"); 
%************************************%
%       信号処理用変数設定           %
%************************************%
L   = 2000;                          % 初期遅延
M   = 6;                             % 繰り返し回数
a   = 0.8;                           % 初期乗算係数
x   = [ s ; zeros(Fs,1)];            % 入力信号．末尾に0を1秒追加
Len = length(x);                     % 入力信号の長さ
y   = zeros(Len, 1);                 % 出力信号
%************************************%
for n=1:Len
    y(n)=0;
    for i=0:M
        D = i*L;
        if n-D>0
            y(n)=y(n) + a^i * x(n-D);
        end
    end
end
% wavを書き出す
audiowrite("output.wav", y, Fs);
