Sau Bài 2 tạo ra âm sắc, bài này thêm 3 loại node xử lý tín hiệu kinh điển: BiquadFilterNode lọc tần số, DelayNode tạo tiếng vọng, và ConvolverNode mô phỏng không gian vang (reverb) — 3 công cụ nền tảng của mọi bàn trộn âm thanh, từ phòng thu tới pedal guitar.

1. BiquadFilterNode: Lọc Tần Số

BiquadFilterNode loại bỏ hoặc nhấn mạnh 1 dải tần số cụ thể. 2 tham số quan trọng nhất: frequency (tần số cắt) và Q (độ cộng hưởng — Q càng cao, đỉnh cộng hưởng ngay tại tần số cắt càng nhọn, thậm chí có thể tự dao động ở Q rất cao).

Loại filter Hiệu ứng Cảm giác nghe
lowpass Cho tần số thấp hơn frequency đi qua, cắt tần số cao Nghe "bí"/trầm, giống âm thanh qua tường
highpass Cho tần số cao hơn frequency đi qua, cắt tần số thấp Nghe mỏng/the thé, giống loa điện thoại nhỏ
bandpass Chỉ cho 1 dải hẹp quanh frequency đi qua Nghe như phát qua radio cũ/điện thoại bàn

2. DelayNode: Tiếng Vọng (Echo)

DelayNode trì hoãn tín hiệu 1 khoảng thời gian (giây). Để tạo tiếng vọng lặp lại nhiều lần (không chỉ 1 lần trễ), nối đầu ra của delay quay ngược lại chính đầu vào của nó qua 1 GainNode (hệ số feedback) — mỗi vòng lặp tín hiệu bị nhân với hệ số này, dần nhỏ đi tới khi tắt hẳn.

🕳️ Cạm bẫy thường gặp: feedback ≥ 1.0 gây tiếng vọng chạy mãi/hú rít
Mỗi lần tín hiệu đi qua vòng lặp feedback, biên độ bị nhân với hệ số gain đó. Nếu hệ số ≥ 1.0, biên độ không giảm dần mà giữ nguyên hoặc tăng lên mỗi vòng — tạo tiếng vọng kéo dài vô hạn hoặc âm lượng "hú rít" mất kiểm soát (feedback runaway) thay vì tắt dần tự nhiên. Luôn giữ hệ số feedback trong khoảng 0 – 0.9.

3. ConvolverNode: Mô Phỏng Không Gian Vang (Reverb)

Reverb thật (tiếng vang trong 1 căn phòng) là hàng ngàn phản xạ âm thanh chồng lên nhau từ tường, trần, sàn. ConvolverNode mô phỏng điều này bằng phép toán tích chập (convolution) giữa tín hiệu khô (dry) và 1 buffer gọi là impulse response — về cơ bản là "chữ ký âm thanh" của 1 không gian, ghi lại cách nó phản xạ 1 xung âm thanh cực ngắn.

🔬 Đào sâu: tạo impulse response giả lập bằng noise giảm dần
Không cần file âm thanh thu sẵn, có thể tạo 1 impulse response tổng hợp đơn giản: 1 buffer chứa nhiễu trắng (random) với biên độ giảm dần theo hàm mũ. Khi convolve tín hiệu khô với buffer này, kết quả nghe giống hàng loạt phản xạ ngẫu nhiên tắt dần — xấp xỉ khá tốt cảm giác "vang trong phòng" mà không cần bất kỳ file audio nào từ bên ngoài.
ℹ️ Q càng cao, đỉnh cộng hưởng của filter càng nhọn
Q mặc định của BiquadFilterNode là 1 (gần như phẳng quanh tần số cắt). Kéo Q lên cao (10-20+) tạo 1 đỉnh cộng hưởng rõ rệt ngay tại frequency — hiệu ứng "wah" hoặc âm sắc synth analog kinh điển, và ở giá trị cực cao filter có thể gần như tự phát ra 1 tần số riêng dù tín hiệu đầu vào không có tần số đó.
💡 Mẹo: trộn dry/wet bằng GainNode song song, không nối tiếp
Hầu hết hiệu ứng thật không thay thế hoàn toàn tín hiệu gốc — chúng chia tín hiệu ra nhiều nhánh song song (dry không xử lý, wet qua delay, wet qua reverb...), mỗi nhánh qua 1 GainNode riêng rồi cộng lại ở destination. Đây là lý do Web Audio tự động cộng dồn (sum) mọi tín hiệu nối vào cùng 1 input — không cần node "mixer" đặc biệt nào cả.

Sân chơi tương tác: Bàn Trộn Hiệu Ứng

Bấm "Phát" để nghe 1 tone liên tục, rồi kéo slider filter/delay/reverb — nghe thay đổi ngay lập tức trên cùng 1 đồ thị đang chạy, không cần dừng/phát lại.

🎛️ Sân chơi tương tác: Bàn Trộn Hiệu Ứng
Filter
Delay / Echo
Reverb
Dry

Nhật ký

audio-gain-filter-effects-live.js

Trắc nghiệm ôn tập

Câu 1: Vì sao phải giữ hệ số feedback của delay trong khoảng nhỏ hơn 1.0?

Trắc nghiệm ôn tập

Câu 2: Q của BiquadFilterNode càng cao thì điều gì xảy ra tại tần số cắt (frequency)?

Trắc nghiệm ôn tập

Câu 3: ConvolverNode tạo hiệu ứng reverb bằng cách nào?

📖 Tài liệu tham khảo / References

Bài viết liên quan trong series

Bài 4: AnalyserNode & FFT Bài 2: Oscillator & Synthesis Quay lại Lộ trình Series Web Audio API