처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.12 65

기타를 스마트폰 가속도계로 튜닝한다고? 진동의 물리학을 코드로 풀어낸 실험

Hacker News 원문 보기

마이크 없이 기타를 튜닝할 수 있을까?

기타 튜닝 앱은 거의 다 비슷한 원리로 동작해요. 마이크로 소리를 받아서 주파수를 분석하고, 그게 표준 음높이(예: 6번 줄 E2 = 82.41Hz)와 얼마나 차이 나는지를 보여주는 식이죠. 그런데 한 개발자가 완전히 다른 접근을 시도했어요. 마이크 대신 스마트폰의 "가속도계(accelerometer)"를 써서 기타 튜닝을 하는 웹 페이지를 만든 거예요. 스마트폰을 기타 헤드(줄감개가 달린 부분)에 얹어두면, 줄을 튕길 때 생기는 미세한 진동을 가속도계가 감지하고, 그 진동의 주파수를 분석해서 음높이를 알려주는 방식입니다.

가속도계가 뭐기에 진동을 잡아낼까

가속도계라는 건, 한마디로 "움직임의 변화"를 측정하는 센서예요. 스마트폰을 회전시키거나 흔들면 화면이 가로/세로로 바뀌는 그 기능, 그게 바로 가속도계가 일하는 거거든요. 보통 X, Y, Z 세 축의 가속도 값을 초당 수십~수백 번씩 읽어들이죠. 기타 헤드에 스마트폰을 놓으면 줄의 진동이 기타 몸체를 타고 헤드까지 전달되는데, 이 미세한 떨림이 가속도계에는 "규칙적으로 변하는 가속도 신호"로 잡히는 거예요.

웹에서는 DeviceMotionEvent라는 자바스크립트 API로 이 가속도 값을 받아올 수 있어요. iOS 13 이후부터는 사용자에게 권한을 명시적으로 받아야 하지만, 권한만 허용하면 브라우저에서도 센서 데이터를 실시간으로 처리할 수 있죠. 신호를 받은 다음에는 FFT(고속 푸리에 변환)라는 알고리즘을 돌려서 "이 진동이 어떤 주파수 성분으로 이루어져 있는지"를 분석합니다. 푸리에 변환이 뭐냐면, 복잡한 파형을 여러 개의 단순한 사인파의 합으로 분해해주는 수학적 기법이에요. 기타 줄에서 나오는 진동도 결국 기본 주파수(fundamental frequency)와 그 배수인 배음(harmonics)의 합으로 표현되는데, FFT를 돌리면 "제일 강한 주파수가 82Hz쯤이네, 그럼 이건 6번 줄 E구나" 같은 식으로 알아낼 수 있는 거죠.

마이크 방식과 비교했을 때의 장단점

마이크 방식은 주변 소음에 약해요. 카페나 합주실처럼 잡음이 많은 곳에서는 다른 악기 소리나 사람 목소리가 섞여서 정확한 주파수를 잡기 어렵죠. 반면 가속도계 방식은 "기타 본체의 진동"만 잡기 때문에 주변 소음의 영향을 거의 안 받아요. 옆에서 누가 떠들어도, 라디오가 나와도, 내 기타가 내는 진동만 똑똑하게 골라낼 수 있는 거예요.

물론 단점도 있어요. 가속도계는 보통 샘플링 레이트가 100~200Hz 수준이라, 마이크(보통 44.1kHz)에 비하면 굉장히 낮아요. 나이퀴스트 정리(Nyquist theorem)에 따르면 측정하려는 주파수의 두 배 이상으로 샘플링해야 하니까, 200Hz 샘플링이면 이론상 100Hz 미만 음만 정확히 잡을 수 있죠. 기타 6번 줄(E2, 82Hz)이나 5번 줄(A2, 110Hz)은 어떻게든 되지만, 1번 줄(E4, 329Hz)은 좀 까다로워질 수 있어요. 이런 한계를 우회하기 위해 배음을 활용하거나, 신호처리 기법으로 보강하는 식의 트릭이 들어가게 됩니다.

브라우저 센서 API의 가능성

이 프로젝트가 흥미로운 또 다른 이유는, 웹 브라우저만으로 하드웨어 센서에 접근해서 실시간 신호처리를 했다는 점이에요. 예전엔 이런 거 만들려면 네이티브 앱을 만들어야 했거든요. 그런데 지금은 DeviceMotionEvent, DeviceOrientationEvent, Generic Sensor API 같은 표준들이 자리 잡으면서, 자이로스코프, 자기장 센서, 주변광 센서까지 웹에서 다 접근이 가능해졌어요. 게다가 Web Audio API와 결합하면 신호처리 파이프라인도 브라우저 안에서 다 처리할 수 있죠.

비슷한 사례로는 스마트폰을 만보계로 쓰는 웹 앱, 자이로스코프로 3D 뷰어를 조작하는 데모, 카메라 흔들림을 감지하는 모바일 사진 앱 등이 있어요. 이번 기타 튜너처럼 "센서를 본래 용도가 아닌 창의적인 방식으로 활용"하는 사례가 늘어나는 게 요즘 웹 개발의 재미있는 흐름 중 하나입니다.

한국 개발자에게 주는 시사점

이 프로젝트를 보면서 가장 크게 느낄 부분은 "센서 데이터 + 신호처리 + 웹"이라는 조합이 의외로 진입장벽이 낮다는 점이에요. FFT 라이브러리는 자바스크립트에도 잘 만들어진 게 많고, 가속도계 데이터를 받아오는 코드는 십수 줄이면 됩니다. 사이드 프로젝트 아이디어로 "내 스마트폰을 X로 만들기" 시리즈를 도전해볼 만하죠. 진동 기반 도어록 감지, 운동 자세 분석, 멀미 감지기, 진폭 기반 음악 시각화 등 응용 분야가 많습니다.

실무 관점에서도 헬스케어, IoT, 차량용 SW 같은 분야에서는 센서 데이터 처리 경험이 점점 중요해지고 있어요. 이런 작은 토이 프로젝트가 신호처리 감각을 익히는 데 좋은 출발점이 됩니다.

마무리

익숙한 도구를 익숙하지 않은 방식으로 쓰는 발상이 결국 좋은 사이드 프로젝트가 되는 것 같아요. 여러분은 스마트폰 센서로 만들어 보고 싶은 엉뚱한 아이디어가 있다면 어떤 게 있으세요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.