전 직장 다닐때 그렇게 해결이 안되서 삽질하다가 결국 포기했던 FFT 그래프 그리는 문제가 드디어 풀렸음
갑님은 Labview로 작성된 FPGA 기기에서 뽑힌 데이터를 C랑 java로 핸폰 앱이랑 pc용 앱을 만드는 일이였는데 당시 PCM에 대한 지식도 없고 주파수 스펙트럼 이런거에 대한 지식이 전혀 없는 상태에서 시작함.
1년인가 2년정도 했던 플젝이고 첨부터 끝까지 다 만든 앱이라 그런지 나름 애착(?)이 갔던 플젝이었는데
거기서 끝끝내 해결하지 못한 문제가 하나 있었음.
갑님은 FFT 그래프라 불렀고 갑님측에서 제작된 SW에선 Power Spectrum이라고만 써 있었음.
그걸 토대로 java나 c용 소스를 구했는데 희안하게도 인터넷에 돌아다니는 유명한 소스를 쓰면 절대 저 그래프가 안나왔옴 당시엔 이것저것 해보다가 결국 못해서 갑님 장비에서 아예 fft그래프 데이터를 받아서 작도만 해주는 걸로 마무릴 지었는데
그게 문득 생각나서 인터넷 검색하다가 http://som-itsolutions.blogspot.kr/2012/01/fft-based-simple-spectrum-analyzer.html 이 사이트를 발견하고 소스를 받아서 돌려봄.
그리고 마침 JNI 이런저런 삽질 해보고 있는 상황이라 여기서 연산 부하가 많이 걸리는 부분을 JNI로 옮겨보기로 했음.
FFT연산에 대해 정말 이것저것 많이 찾아 봤음 그중 http://ghebook.blogspot.kr/2012/08/fourier-transform.html 사이트를 보면
[경고] 아래 글을 읽지 않고 “푸리에 변환”을 보면 바보로 느껴질 수 있습니다. 라고 써 있던데
솔직히 아랫글도 봤는데 아랫글 자체에서도 바보로 느껴지고 그걸 다 읽고 푸리에 변환을 읽어도 뭔소리인지 하나도 모르겠음 -_-;
결국 FFT는 잘 퍼다가 쓰고 애플리케이션 껍데기 틀만 새로 만들었는데
갑님이 원한 그래프는 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말
안나오는거다.
플젝할때도 그렇고 최근에 삽질한것만 해도 그렇고 인터넷에서 파워스펙트럼이라고 나온 소스는 다 퍼다가 테스트 해본거 같은데 저게 안나오는거다
그렇게 이건 정말 포기해야 하는건가 하고 있었는데
어떤분이 대학강의인지 pdf랑 파워포인트 자료 그리고 스샷 올려놓은게 있어서 봤는데 거기 버튼중에 이런게 있었음.
파워스펙트럼, 파워스펙트럼디비
파워 스펙트럼이랑 파워스펙트럼db가 다른건가?
혹시나 해서 pcm raw값을 데시벨로 바꾸는 공식 찾아서 넣어봄.
http://stackoverflow.com/questions/2917762/android-pcm-bytes
그랬더니 드디어 나옴..
아하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하하
근데 뭔가 잘못한건지.. 다른 앱은 -20dB뭐 이렇게 나오는데 난 -200으로 나오네
저 대학강의 같은거 읽어보면 마이크 스펙에 따라 뭘 곱하냐 나누냐 하는거 같은데
PCM이나 사운드에 대한 기본 이론 부족으로 정확히는 모르겠음.
뭔가 이론을 더 파야 제대로 정확한 수치값이 나올거 같은데 슬슬 귀찮아지네 그만할까나
답글 남기기