Generate acoustic signal with difference rise time and fall time
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
BoWen Han
el 11 de Mzo. de 2022
Comentada: Scott MacKenzie
el 15 de Mzo. de 2022
Hi
Can someone help me for this one? I would like to plot a signal that can be similair with acoustic emission signal with difference rise time and fall time. There is not specific parameters but I just want to know if there's a way to generate?
Thanks
2 comentarios
Scott MacKenzie
el 11 de Mzo. de 2022
Just to clarify, by "rise time and fall time", do you mean adding an envelope to an existing signal so the amplitude rises from 0 to max over some period time at the beginning of the signal and falls from max to 0 over some period of time at the end of the signal?
Respuesta aceptada
Scott MacKenzie
el 14 de Mzo. de 2022
Editada: Scott MacKenzie
el 14 de Mzo. de 2022
Here's a simple approach that provides separate control for the rise or attack time (n1), the sustain time (n2), and the decay or fall time (n3):
f = 440; % Hz (cycles per second)
duration = 2; % seconds
sRate = 8192; % default
sInterval = 1/sRate;
% vector for values of t at each sample point
t = 0:sInterval:duration;
n = length(t);
% build the waveform vector
y = sin(2*pi * f * t);
% build envelope (tweak as desired)
n1 = 100; % attack
n2 = 200; % sustain
n3 = 500; % decay
n4 = n - (n1 + n2 + n3); % off
attack = linspace(0,1,n1);
sustain = ones(1,n2);
decay = linspace(1,0,n3);
off = zeros(1,n4);
envelope = [attack sustain decay off];
% apply envelope to signal
y = y .* envelope;
% play it
soundsc(y, sRate); % NOTE: sRate not needed if 8192 (default)
% plot the first few cycles of the waveform
plot(y(1:1000));
set(gca, 'ylim', [-1.5 1.5]);
title('Envelope Demonstration');
xlabel('Time'); ylabel('Amplitude');
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Audio I/O and Waveform Generation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!