Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在寻找一个可以在五秒钟内在.wav文件上创建淡入/淡出功能的函数。
我在MATLAB论坛上找到了这段代码,但是尽管有正确的想法,但似乎实现起来还是有一点错误。它是用于300ms的.WAV文件以及10ms淡入/淡出的: tenmssamples = length(soundfile)*10/300; fade1 = linspace(0,1,tenmssamples); fadedsound = soundfile .* ... [fade1, ones(1,length(soundfile)-2*tenmssamples), fliplr(fade1)]; tenmssamples = length(soundfile)*10/300; fade2 = sin(linspace(0,2*pi/4,tenmssamples)); fadedsound2 = soundfile .* ... [fade2, ones(1,length(soundfile)-2*tenmssamples), fliplr(fade2)]; 我可以尝试通过使用linspace缩放由递增函数读取的波形的前10个样本来了解他的尝试,但是我尝试进行修补和修改,但无法使其正常工作。 请问有人有什么建议吗?谢谢。 回答: 我不确定您遇到的问题是什么,但是我会这样做: Fs = 1000; % sampling rate of signal FADE_LEN = 5; % 5 second fade sig = randn(15.*Fs,1); % generate 15 s signal fade_samples = round(FADE_LEN.*Fs); % figure out how many samples fade is over fade_scale = linspace(0,1,fade_samples)'; % create fade sig_faded = sig; sig_faded(1:fade_samples) = sig(1:fade_samples).*fade_scale; % apply fade subplot(211) plot(sig) subplot(212) plot(sig_faded) 当然,您可以用诸如S形之类的东西代替linspace,并使用相同的想法进行淡出... 编辑:做淡出,尝试 sig_faded(end-fade_samples+1:end) = sig(end-fade_samples+1:end).*fade_scale(end:-1:1); 更多&回答... |
![]() |
![]() |