Duration of generated sound not correct
Show older comments
Hello,
I need to create 25ms ramped sounds with different frequencies. I was successful in creating the ramp, but something is not right with the duration as it is always longer than what is inserted. I think it is related to the sampling rate but I cant figure out the exact problem:
Amp = 0.5; %amplitude
Freq = 1000; %Frequency of the sound
Fsam = 44100; %Sampling rate
Dur = 2; %Duration of the sound in seconds
dt = 1/Fsam
Time = 0: dt :Dur-dt;
y = Amp*sin(2*pi*Freq*Time);
plot (y);
xlabel('Time (ms)');
ylabel('Amplitude');
%% Ramp the sound
y = Amp*sin(2*pi*Freq*Time);
RampDur = 0.01;
NsamRamp = round(RampDur/dt);
OnRamp = linspace(0,1,NsamRamp);
OffRamp = fliplr(OnRamp);
y(1:NsamRamp) = OnRamp.*y(1:NsamRamp);
y(end-NsamRamp+1:end) = OffRamp.*y(end-NsamRamp+1:end);
plot(Time, y);
xlim ([0 Dur]);
sound(y)
Thanks for your support!
Accepted Answer
More Answers (1)
Mathieu NOE
on 25 Mar 2022
hello
some minor modifications and suggestion
Amp = 0.5; %amplitude
Freq = 1000; %Frequency of the sound
Fsam = 44100; %Sampling rate
Dur = 2; %Duration of the sound in seconds
dt = 1/Fsam;
% Time = 0: dt :Dur-dt; % no
Time = 0: dt :Dur; % yes
y = Amp*sin(2*pi*Freq*Time);
plot (y);
%xlabel('Time (ms)'); % no
xlabel('Time (s)'); % yes
ylabel('Amplitude');
%% Ramp the sound
y = Amp*sin(2*pi*Freq*Time);
RampDur = 0.01; % 25 ms ??
NsamRamp = round(RampDur/dt);
window = ones(size(y)); % init window to 1
window(1:NsamRamp) = linspace(0,1,NsamRamp); % ramp up section
window(end-NsamRamp+1:end) = linspace(1,0,NsamRamp); % ramp down section
y = window.*y;
plot(Time, y);
% xlim ([0 Dur]); % not needed
still I don't understand where the 25ms should apply (the ramp duration ? so why define RampDur = 0.01 ? )
the code does generated a 2 seconds long signal as you requested - there is no big surprise here ; what is your issue ?
Categories
Find more on Audio and Video Data 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!