STILL CODING / NOTES
Web Audio 개발 노트
Web Audio
여러 앱에서 Web Audio을(를) 다루며 남긴 노트 6편입니다.
-
샘플 없이 기타 소리 만들기 — 줄을 계산해서 강철과 나일론을 구별하기
Guitar Auto-Strum은 녹음된 기타 음원 없이 코드 계산만으로 기타 줄 소리를 만듭니다. 사인파 일곱 개를 더하던 방식이 강철과 나일론을 구별하지 못한 이유, Karplus-Strong 도파관으로 바꾼 구조, 음이 어긋나지 않게 지연을 맞춘 방법, 소리를 Node에서 측정하는 테스트를 정리합니다.
-
정확한 박자는 기계처럼 들린다 — 스윙과 사람 같은 어긋남, 그리고 '랜덤이 랜덤이면 안 되는' 이유
Guitar Auto-Strum의 스윙과 휴머나이즈 기능이 어떻게 박자를 일부러 흔드는지 정리합니다. 뒷박을 늦추는 스윙 비율, 타이밍·세기·스트럼 속도의 미세한 변화, 그리고 난수 대신 '스트로크 번호와 시드로 정해지는 값'을 쓴 이유를 코드로 설명합니다.
-
박자가 흔들리지 않는 자동 반주 — 타이머는 흔들리고 오디오 시계는 흔들리지 않는다
브라우저의 setInterval로 음을 직접 울리면 박자가 흔들립니다. Guitar Auto-Strum이 오디오 시계 위에 음을 미리 예약하는 look-ahead 스케줄러로 박자를 지키고, 코드 변경과 마디 경계에서 생기는 문제를 다룬 방법을 코드로 정리합니다.
-
마이크는 켜는 것보다 끄는 것이 어렵다 — Vocal Check의 마이크 수명 관리
Vocal Check의 마이크 요청 번호와 종료 경로를 따라갑니다. 늦게 도착한 권한 응답, 탭 이탈, 장치 분리와 오류 안내를 다루고, 측정 화면에서 광고를 제외하는 앱 자체 규칙을 설명합니다.
-
텍스트로 쓰는 악보 ABC 표기법과, 샘플 없이 피아노 소리 만들기
Songnote(Piano Play)가 쓰는 ABC 악보 표기법의 기본 문법을 예제로 익히고, 오디오 샘플 없이 Web Audio 가산 합성으로 피아노 계열 소리를 만드는 방법을 설명합니다.
-
브라우저에서 목소리 음정 읽기 — Vocal Check의 YIN 피치 검출
마이크 소리에서 음이름과 센트를 계산하는 과정을 Vocal Check의 실제 코드로 설명합니다. YIN 차이 함수, 누적 평균 정규화, 포물선 보간, 중앙값 필터까지.