본문 바로가기
programming language/MATLAB

MATLAB 으로 음계 재생

by 남성 2015. 6. 15.

오늘은 MATLAB 을 사용하여 계이름을 재생하는 방법에 대해 알아보려 합니다.

 

일단 음계에 대한 특징을 알아야 하는데요. 음성은 주파수에 따라 음계가 달라지고~ 음성의 크기는 신호의 크기에 영향을 받습니다.

 

즉 위상에 따른 음성의 차이가 없다는 거죠.

 

우리가 알고 있는 도레미파솔라시도~~ 는 다음과 같은 주파수를 갖습니다.

 

260 Hz

294 Hz

330 Hz

349 Hz

392 Hz

440 Hz

495 Hz

524 Hz

 

이제 간단하게 MATLAB 을 사용하여 위 사실이 맞는지 테스트 해보죠.

 

테스트를 위한 코드는 다음과 같습니다.

Sample rate 는 CD 음질인 44.1 k 로 했고 주파수, 위상, 크기 에 따른 시뮬레이션을 해 보시길 바랍니다.

 

위 코드에서 A 라는 변수가 Amplitude 이며 phaseV 값이 위상 for 문 안의 fc 가 주파수 입니다.

 

A 를 변화 시켜 보면 소기라 커지고 작아지고 한다는 것을 느끼실 테고~

 

phaseV =0 인 경우와 phaseV =20 인 경우를 비교해보면 아래 그림과 같이 위상은 달라졌지만 소리를 들어보면 차이가 없다는 것을 느낄 수 있을 겁니다.

 

 


댓글2

  • 학생1 2017.10.11 13:50

    글 잘 보았습니다. 혹시 궁금한게 있는데, Fs을 44.1k가 아니고, 음계-도 를 듣을때, sound(y,600~1000)의 값으로, 즉 Fs을 도의 주파수의 2배 이상으로만 해도 그 소리를 들을수 있는거 아닌가요? 소리를 들을려고 하는데, Fs=44.1k을때와 다르게 1000hz로 주면 소리가 안나오는데 이유가 무엇인가요?
    답글