[MATLAB]클라리넷 도~시 음 만들기
- 최초 등록일
- 2009.04.28
- 최종 저작일
- 2008.05
- 2페이지/ 한컴오피스
- 가격 2,000원
소개글
[MATLAB]클라리넷 도~시 음 만들기
목차
- 보고서 내용, 인적사항, 목차 -
Ⅰ. Source Code
Ⅱ. Screen shot
Ⅲ. Source Code(작은별)
Ⅳ. Screen shot(작은별)
Ⅴ. 고찰
- 참 고 문 헌 -
본문내용
Ⅰ. Source Code 【목차】
fsamp = 10000 ; % sampling frequency
dur=0.5; % duration(이것으로 음의 길이를 조정할수 있다)
Ts = 1 / fsamp ; % sampling 간격
[y1, y2] = woodwenv(0.1, dur, 0.05, fsamp ); %클라리넷 소리 만듦
tt = linspace(0,dur,length(y1)); % 0 ~ 0.5 범위를 y1의 개수만큼 같은간격 으로 나눠줌
I=2*y1;
k=[-9 -7 -5 -4 -2 0 2 3]; % 음계를 만들기 위한 아래 `Fo`에 각각 들어갈 수의 벡터열
Z=[];
for q=1:length(k) % q = 1 2 3 4 5 6 7 8
% 여기서 length(k)는 벡터 k의 개수를 뜻함
Fo=300*2^(k(q)/12) % 즉, 차례대로 k(1)이면 -9, k(2)이면 -7이 각각 들어간다.
Fc=2*Fo; % 기본 주파수(Fo)에 얼마를 곱해주느냐에 따라 음을 높일 수도 있고
Fm=3*Fo; % 낮힐 수도 있다.
z=y1.*cos(2*pi*Fc*tt +(I.*cos(2*pi*Fm*tt))); % FM신호
Z=[Z,z];
end
soundsc(Z,fsamp)
t=linspace(0,dur*length(k),length(Z)); % 각각의 음에 따른 변화를 더 자세히 보기위해
% 시간축의 음의 개수 만큼 늘렸다 (0.5*7)
subplot(2,1,1)
plot(t,Z)
xlabel(`time`),ylabel(`amplitude`)
subplot(2,1,2)
specgram(Z,256,fsamp)
참고 자료
[1] 김창근 저, MATLAB 사용법과 그 응용, 교우사
[2] 홍준희 역, 초보자를 위한 MATLAB, 대광서림
[3] Duane Hanselman; Bruce Littlefield, (Mastering)MATLAB 7
[4] 나상신 저, (MATLAB 기반) 디지털 신호와 시스템 실험, 브레인 코리아