안드로이드 개발 질문/답변
(글 수 2,584)
앱을 만들고 있구요 마이크 센서로 어떤 소리든지 입력받고 MP3파일 형태로 저장해서 그 신호를 주파수로 바꾸고
그 대역대에 맞는 음계를 표시 하려고 합니다. 근데 문제가 있는게 단일 음계일 경우는 잘되겠지만, 화음이나 여러가지 악기가
복합적으로 있을 때는 어떻게 되나요?? 저의 얕은 지식으로는 여러 음계를 들려줘도 하나로 형성되는 주파수를 나눠서, 어차피
음계마다 고유의 hz는 다르니까요, 퓨리에 변환하면 여차저차 될것도 같은데.. 이게 지금 안되는 건가요??
지금 이게 실현 가능하다 아니다 를 두고 사람들과 말을많이 하는데요,. 뭐 맨날 코딩만 하다가 갑자기
주파수 나오고 신호나오고,, 한번도 접해본적이 없는데.. 기초공부부터 해야하지만 일단 가능한지 아닌지가 궁금합니다.
개발자도 아니지만, 그나마 조금 아는 내용이 질문으로 올라온 것 같아서 댓글 달아봅니다.
제 지식은 전문가적인 수준은 아니므로, 좀더 깊이있는 댓글이 더 달리길 기대하면서, 그래도 질문 올리신 분의 답답함을 약간이나마 해소해드릴 수 있을까 싶어서 씁니다.
첫째. 파동(음파)과 mp3 의 관계
소리라는 것은 공기의 진동입니다. 이 진동 파형을 디지털화하여 기록한 것이 WAV, LPCM 인 것이고, 이 정보를 푸리에 변환하면 주파수 대역별로 스펙트럼을 얻게 됩니다. 이렇게 얻은 스펙트럼(주파수별 분포)은, 실제로 사람 귀가 구분하기 어려운 정보(주로 고주파 영역과 저주파 영역이겠죠 아마?)까지 담게 되는데, 이런(사람귀에 불필요한) 정보들을 제거함으로써 압축의 효과를 얻는다고 알고 있습니다. 이런 방식으로 데이터를 압축한 포맷이 mp3 라고 알고 있습니다.
둘째. 주파수와 음계
흔히 음악 쪽에서 기준으로 삼는 음계가 '라' 음으로서, 440 Hz 의 주파수를 갖는다고 합니다. 그런데, 같은 '라' 음계를 피아노, 바이올린, 클라리넷, 그리고 사람 목소리.. 등으로 내면, 사람은 그 소리들을 모두 구분하면서도.. 같은 '라' 음계라고 판단합니다.
같은 '라' 음계이면서도 모두 구분되는 이유를.. 파형(WAV) 관점에서는 '파형이 다르다' 고 표현합니다. 오실로스코프로 찍어보면 보이죠. 그리고, 같은 얘기를 스펙트럼(주파수 분포) 관점에서는.. '스펙트럼이 다르다' 고 표현합니다. 특정 악기로 '라' 음계를 연주했지만, 거기에는 440 Hz 만 있는게 아니라 880 Hz 도 섞여있고, 1320 Hz 도 섞여있고.. 그렇습니다. 220 Hz 도 약간 섞여있을 겁니다.
더 깊은 내용으로 들어가기에는 저도 내공이 딸리니깐.. 방금 검색해서 찾아본 내용 링크하나 달아드립니다.
http://www.docstoc.com/docs/30996058/Audio-Spectrum-of-Musical-Instruments