280 likes | 1.59k Vues
2012_2 선형대수학 TermProject. Matlab 을 이용한 전자 기타 연주. Team Member 200711432 방호균 200711463 이준 하 200711465 이홍재 200811437 여종훈. 2 / 45. Index. Motivation Theory Materialization MATLAB Code Demo Program. F a n t a s t i c !. < Dr. Choi >. 3 / 45. Motivation.
E N D
2012_2 선형대수학 TermProject Matlab을 이용한 전자 기타 연주 Team Member 200711432 방호균 200711463 이준하 200711465 이홍재 200811437 여종훈
2 / 45 Index • Motivation • Theory • Materialization • MATLAB Code • Demo Program F a n t a s t i c ! < Dr. Choi >
3 / 45 Motivation • 이름 : 전자 기타 연주 프로그램 • 동기 • 멀티미디어 공학개론 (3-2) • 음악, 사진, 영상 • 실 세계에 존재하는 것들을 모델링, 디지털화 • 피타고라스가 대장간에서 울리는 망치소리를 영감으로 (2 : 3 비율로써 화음을 발견해냄; 솔 : 도) 12음계를 만들어냄. • 실 세계의 악기 중 가장 쉽게 접할 수 있는 기타를 선택 기타음을 컴퓨터로?
4 / 45 Theory(파동) 소리도 파동현상의 일종이고, 파동의 모든 성질을 가지고 있다.
5 / 45 Theory (파동) 기타의 소리를 디지털화 하기 위해서? 파형 2. 주파수 3. 진폭
Theory (각 음계 주파수) 주파수(f) x 2
Theory (기타&피아노 음역대) <피아노로 표현할 수 있는 음역대> <기타로 표현할 수 있는 음역대> 통상적으로 피아노가 표현할 수 있는 음역대가 통기타로 표현할 수 있는 음역대 보다 2배 정도 넓다.
Theory (기타의 운지법) <해당 음계의 기타 운지법> Demo Program을 제작할 UI에 기초가 됨
9 / 45 Theory (음계의 구성 & 푸리에 급수) Add Sinusoids with Fourier Analysis : 모든 주기적인 파형은 두 개 이상의 고조파들 (harmonic frequencies)의 합으로 표현 가능 소리 또한 파동의 한 종류로써 정현파들의 합으로 표현 가능하다! 소리의 파형을 분석해서 수식으로 나타낼 수 있다!
Materialization S u c c e s s!! • 구현 내용 • Matlab 을 통해 .wma 확장자의 파일을 불러와서, 프로그램 run-time동안 재생 가능하다. • Matlab을 통해실제 악기 소리를 수식화 ( Fourier Analysis : 모든주기적인 파형은 두 개 이상의 고조파들의 합으로 표현 가능 ) 하여 Digital화 된 소리가 재생 가능하다. • Matlab에서 제공하는 GUI를 통해 콘솔환경 탈피 • Matlab의 .m 확장자로작성된 파일을 .c 소스코드로 바꿔서 .exe 실행파일형태로 바꿔냄 • Matlab에서 제공하는 serial network 기능을 통해 PC환경 뿐만 아니라 Bluetooth통신을통해 원격으로 실행 프로그램을 제어할 수 있도록 하는 스마트폰 어플리케이션을 개발 S u c c e s s!!
11 / 45 Matlab Code • MATLAB에서 직접 음원 파일을 불러오기 - 기타 소리를 재생 • [w,fs] 배열 • soundsc(w, fs) ※ clear playsnd; ※ wavplay(w, fs)
12 / 45 1. 샘플링 주파수(Hz) 시간 벡터(x축) 진폭 벡터(y축) 각각의 음계에 대한 주파수 계산 Matlab Code 4. Sound 들의 tone들이 amplitude 에 의존Sin파들의 합성을 통해서 피아노 소리와 가장 비슷하게 소리를 내준다. 2. 저주파 대역 계산부 3. 고주파 대역 계산부 5. 각 tone들을 최종 합성 해서 soundsc() 를 통해 음 재생
13 / 45 Matlab GUI Code • MATLAB 에서 GUI 환경구축을 하면, 다른 함수들과 마찬가지로 .m파일 생성 • 코드가 실제로 어떻게 구현되었는지 확인할 수 있다. (간단함) <MENU.fig에 대한 MENU.m>
14 / 45 Matlab Compile Code File – Development Project에서 컴파일, 컴파일할 파일과 디렉토리를 설정 후, MCRInsaller를 설치하면 MATLAB 없이 .exe 파일로 실행할 수 있다.
15 / 45 Matlab GU Code Matlab Compile Code <MATLAB .m 파일 컴파일 후 생성된 .c 소스 파일>
16 / 45 Matlab - Bluetooth 연동, JAVA Code • Bluetooth로 연동된 기기에서 음계버튼을 눌렀을 때, Button 클래스가 실행이 되고, 음계버튼에 해당하는 번호 (1~18) 실행! • String 타입의 message 변수에 입력 받은 Button이 저장된다. 그 다음에 byte[] send 배열에 Button 값을 저장한 다음 mControlService.write() method로 보내주게 된다.
17 / 45 Demo 프로그램 (PC) <기타 도(C4_do음) 연주 화면> <피아노(C4_la#) 연주 화면> 악기에 대한 사용자의 이해를 돕기 위해 해당하는 음을 재생하면서 image형태로 출력 해줍니다.
18 / 45 Demo 프로그램 (Mobile) <Bluetooth와 통신할 PC 선택> <Connect> <Disconnect>
Q & A 수고하셨습니다!