Un OscillatorNode produce quattro forme d'onda predefinite, e ognuna ha un carattere sonoro diverso.

osc.type = "sine";     // pulito, dolce (flauto)
osc.type = "square";   // cavo, retro (chiptune 8-bit)
osc.type = "sawtooth"; // ricco, tagliente (bassi e lead)
osc.type = "triangle"; // morbido ma corposo

Il motivo è nella fisica: la sinusoide è una frequenza pura, mentre square e sawtooth contengono molte armoniche sovrapposte. Più armoniche significa timbro più ricco da scolpire poi con i filtri.

Vuoi un basso acido? Parti da sawtooth e togli le alte con un filtro passa-basso. Vuoi un suono da Game Boy? square e sei a casa. La sintesi sottrattiva è tutta qui: parti da un'onda ricca e togli ciò che non serve.