Tone.js의 아키텍처는 웹 기반 오디오 애플리케이션을 만드는 음악가와 오디오 프로그래머 모두에게 친숙한 것을 목표로합니다. 높은 수준에서 Tone은 이벤트 동기화 및 예약을위한 글로벌 전송과 같은 일반적인 DAW (디지털 오디오 워크 스테이션) 기능은 물론 사전 제작 된 신디사이저 및 효과를 제공합니다. 또한 Tone은 자체 신디사이저, 효과 및 복잡한 제어 신호를 생성 할 수있는 고성능 빌딩 블록을 제공합니다.
Tone.js 를 이용하면 웹브라우저에서 음악을 재생하는 다양한 프로그램을 만들수 있습니다.
대표적으로는 아래 '구글 크롬 뮤직랩' 의 프로그램중 하나인 '하모닉스'를 통해서 살펴보실 수 있는데요, 아래의 링크로 들어가서 현의 모양을 나타낸것 같은 아래의 그림들을 누르면 각 그림의 파장에 맞는 다양한 소리가 재생됩니다.
기본 컴포넌트에는 Osillators, Envelope, Noise, Player, Microphone, Mixer가 있으며 이 중에 몇가지를 아래에서 살펴보겠습니다.
Example > Basic > Osillators
오실레이터에는 부분 및 부분 배열의 수를 설정하여 변경할 수있는 4 가지 기본 유형이 있습니다. 오실레이터는 위상 회전, 다중 오실레이터 유형 (Oscillator.type 참조) 및 전송 동기화 (Oscillator.syncFrequency 참조)를 비롯한 여러 기능을 지원합니다.
출처: GrayArea
Example > Basic >Envelope
시간 경과에 따른 진폭, 주파수 또는 기타 매개 변수를 엔벨로프합니다. Tone.Envelope 및이를 확장하는 클래스는 ADSR 엔벨로프 유형을 구현합니다.이 유형은 램프를 공격, 감쇄, 유지, 해제의 4 가지 단계로 분할합니다.
Envelope는 ADSR 봉투 생성기입니다. Envelope는 AudioParam 또는 Tone.Signal에 연결할 수있는 신호를 출력합니다.
출처: GrayArea
Example > INSTRUMENTS >Synth
Synth는 AmplitudeEnvelope를 통해 라우팅되는 OmniOscillator로 구성됩니다.