2010-08-18 6 views
3

5 초 동안 .wav 파일에서 페이드 인/페이드 아웃 기능을 만들 수있는 기능을 만들려고합니다.MATLAB에서 페이드 인/페이드 아웃 기능 만들기?

이 코드는 MATLAB 포럼에서 발견되었지만 올바른 아이디어가 있지만 구현이 약간 잘못된 것처럼 보입니다.

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)]; 

내가 사용 증가 함수에 의해 판독 된 파형의 처음 10 개 샘플을 확장 할 시도하여 그가가 시도되었다 볼 수 있습니다 : 그것은 10ms의 페이드 인/아웃과 함께이 300ms의 .WAV 파일을이었다 linspace,하지만 그것을 고치려고 노력했지만 그것을 작동시킬 수 없습니다.

아무에게도 제안 사항이 있으십니까? 고맙습니다.

답변

5

나는 당신이 발생하는 문제가 무엇인지 모르겠지만, 이런 걸 할 것이다 : 당신이 다른 S 자형 같은 것을하여 linspace를 대체 할 수 물론

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) 

을, 및이를 사용 나는 wavread/wavrwite를 사용하여 기능을 구현하는 시도했지만 방정식이 불균형했다

sig_faded(end-fade_samples+1:end) = sig(end-fade_samples+1:end).*fade_scale(end:-1:1); 
+0

시도 페이드를 할 수있는 : 생각은 ...

편집을 페이드 아웃 할 수 있습니다. 지금 당장 MATLAB을 다시 볼 시간이 없지만 귀하의 회신에 감사 드리며 나중에 다시 확인하겠습니다! – Velocity

+0

감사합니다. 나는 처음 5 초 동안 페이드 작업을 할 수 있었지만 클립의 마지막 5 초를 선택하는 방법을 모르겠습니다. 나는 그것이 fade_samples : something과 같을 것이라고 생각했지만, 그것이 끝났다고 확신하지 못합니까? – Velocity

+0

페이드 아웃 제안 추가; 관련 MATLAB 튜토리얼 및 도움말은 http://www.mathworks.com/access/helpdesk/help/techdoc/math/f1-85462.html을 참조하십시오. –