Duration of generated sound not correct
5 views (last 30 days)
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!
0 Comments
Accepted Answer
Scott MacKenzie
on 25 Mar 2022
Edited: Scott MacKenzie
on 25 Mar 2022
Change
sound(y);
to
sound(y,Fsam);
The sound function assumes a sampling rate of 8192 Hz. If a different sampling rate is used, it must be provided as a 2nd argument.
2 Comments
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 ?
0 Comments
See Also
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!