Web Audio API
Web Audio API는 웹 애플리케이션에서 오디오를 생성, 연결, 변형하고 출력하기 위한 고수준 프로그래밍 인터페이스다. JavaScript는 오디오 노드들을 그래프 형태로 연결하여 음원의 신호가 필터와 효과, 믹서 및 출력 장치까지 흐르도록 구성할 수 있다. 음악 제작 도구, 게임...
| 분류 | 웹 오디오 처리 API |
|---|---|
| 주요 기능 | 브라우저 안의 실시간 오디오 합성·처리 |
| 관련 기술 | World Wide Web, 웹 브라우저, HTTP, JavaScript |
| 관련 표준 | W3C Web Audio API |
Web Audio API는 웹 애플리케이션에서 오디오를 생성, 연결, 변형하고 출력하기 위한 고수준 프로그래밍 인터페이스다. JavaScript는 오디오 노드들을 그래프 형태로 연결하여 음원의 신호가 필터와 효과, 믹서 및 출력 장치까지 흐르도록 구성할 수 있다. 음악 제작 도구, 게임 사운드, 시각화, 음성 처리 및 합성기와 같은 응용 프로그램에서 사용된다.
Web Audio의 중심 객체인 AudioContext는 오디오 노드와 출력 환경을 관리한다. AudioBufferSourceNode와 OscillatorNode는 음원으로 사용할 수 있고 GainNode, BiquadFilterNode, AnalyserNode는 신호의 증폭과 필터링 및 분석에 이용된다. 노드의 연결 구조는 실행 중에 변경할 수 있어 동적인 오디오 처리 체인을 구성할 수 있다.
오디오 매개변수는 AudioParam을 통해 시간에 따른 자동화를 지원한다. 값의 즉각적인 변경뿐 아니라 목표 값과 곡선 형태의 변화를 예약할 수 있어 신시사이저의 엔벌로프나 효과 파라미터 제어에 활용된다. 웹 오디오 시계와 일반적인 JavaScript 이벤트 루프의 실행 시간은 서로 다르므로 정밀한 음악적 타이밍에는 예약 기반의 처리가 중요하다.
AudioWorklet은 사용자 정의 오디오 처리 코드를 별도의 오디오 렌더링 맥락에서 실행할 수 있게 한다. 처리 코드에는 시간과 계산량에 대한 제약이 있으며 오디오 끊김을 줄이기 위해 긴 블로킹 작업과 불필요한 메모리 할당을 피해야 한다. getUserMedia와 결합하면 사용자의 권한 아래 마이크 입력을 받아 효과 처리나 음성 분석에 사용할 수 있다.
웹 오디오 기능은 브라우저의 오디오 출력 권한과 자동 재생 제한, 장치 특성 및 샘플레이트 등의 영향을 받는다. 오디오 노드 그래프가 커지면 CPU 부하가 높아지고 지연이 증가할 수 있어 노드 수와 연결 변경을 관리해야 한다. W3C Web Audio API는 그래프 모델과 노드 인터페이스, 신호 처리 규칙을 규정한다.[1]