creating the chorus effect without using a loop

조회 수: 14(최근 30일)
Damien 2022년 11월 14일
댓글: Mathieu NOE 2022년 11월 17일
okay so I made some progress but I am still lost and im not sure what sound I am suppose to hear back. There are not any helpful youtube videos about this topic.. but now I am hearing a static noise for about 3 seconds. Please if anyone can look at my updated code and help me out so I can see what I am doing wrong. Do it for a veteran :)
sound(x, Fs);
y(2:n) =x(2:n)+x(n-D);
sound(y(2:n), Fs);
  댓글 수: 2
Damien 2022년 11월 15일
Thank you, I fixed this but still no luck in obtaining the desired result.

댓글을 달려면 로그인하십시오.

채택된 답변

Mathieu NOE
Mathieu NOE 2022년 11월 15일
the chorus effect is basically a multiple echo effect ; the echo by itself is a delayed version of the original signal , added to it with a given amplitude (therefore you can tweak the delay and amount of the echo)
when you have understood the echo principle , apply it multiple times and here you have a chorus effect (like many people singing at different distance from the listening point, causing different delays and amplitudes)
the code below is for a wav file (attached if you want to try it) but you can easily modify it at your convenience
% current sample is 11kHz so 0-3 ms is 0 - 33 samples
% read the sample waveform
[x,Fs] = audioread(infile);
% normalize x to +/- 1 amplitude
x = x ./ (max(abs(x)));
samples = length(x);
nb_effects = 4; % assume we do 4 delayed versions of the signal that will be summed
% amplitude is now a vector
amp = [0.7 0.7 0.7 0.7]; % suggested coefficient from page 71 DAFX; the values apply to the 4 delayed versions of x
cur_delay = [134;248;422;13]; % fixed delay case
y = x; % init y
for i = (max_samp_delay+1):samples
% add the amp weigthed multiple delayed x values
y(i) = x(i) + sum(amp(1:nb_effects)'.*x(i-cur_delay)); % add all 4 delayed sample (in one line !)
% write output
% normalize y to +/- 1 amplitude
y = y ./ (max(abs(y)));
audiowrite(outfile, y, Fs);
hold on
title('Chorus and Original Signal');
  댓글 수: 10
Mathieu NOE
Mathieu NOE 2022년 11월 17일
as always, my pleasure !

댓글을 달려면 로그인하십시오.

추가 답변(1개)

jibrahim 2022년 11월 15일
Damien, Audio Toolbox has a Chorus object that might be helpful. See audiopluginexample.Chorus here.
It is used in this example.
  댓글 수: 1
Damien 2022년 11월 15일
Thank you I understand the concept now and what I am suppose to hear, still working how to process the audio vector x and generate a new vector

댓글을 달려면 로그인하십시오.


Find more on Audio I/O and Waveform Generation in Help Center and File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by