AudioWorkletNode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note:
Mặc dù giao diện này khả dụng bên ngoài secure contexts, thuộc tính BaseAudioContext.audioWorklet thì không; do đó không thể định nghĩa các AudioWorkletProcessor tùy chỉnh bên ngoài các ngữ cảnh đó.
Giao diện AudioWorkletNode của Web Audio API biểu diễn một lớp cơ sở cho AudioNode do người dùng định nghĩa, có thể được kết nối vào một đồ thị định tuyến âm thanh cùng với các nút khác. Nó có một AudioWorkletProcessor liên kết, thành phần thực hiện việc xử lý âm thanh thực tế trong một luồng dựng hình Web Audio.
Hàm tạo
AudioWorkletNode()-
Tạo một thể hiện mới của đối tượng
AudioWorkletNode.
Thuộc tính thể hiện
Cũng kế thừa các thuộc tính từ giao diện cha của nó, AudioNode.
AudioWorkletNode.portRead only-
Trả về một
MessagePortdùng cho giao tiếp hai chiều giữa nút vàAudioWorkletProcessorliên kết của nó. Đầu còn lại có sẵn qua thuộc tínhportcủa processor. AudioWorkletNode.parametersRead only-
Trả về một
AudioParamMap— một tập hợp các đối tượngAudioParam. Chúng được khởi tạo trong quá trình tạoAudioWorkletProcessorcơ sở. NếuAudioWorkletProcessorcó getter tĩnhparameterDescriptors, mảngAudioParamDescriptortrả về từ getter đó sẽ được dùng để tạo các đối tượngAudioParamtrênAudioWorkletNode. Cơ chế này cho phép bạn đưa các đối tượngAudioParamtùy chỉnh của riêng mình ra để truy cập từAudioWorkletNode. Sau đó, bạn có thể dùng các giá trị của chúng trongAudioWorkletProcessorliên kết.
Sự kiện
processorerror-
Kích hoạt khi có lỗi được ném ra trong
AudioWorkletProcessorliên kết. Sau khi sự kiện này xảy ra, processor và do đó cả nút sẽ xuất ra sự im lặng trong suốt vòng đời của nó.
Phương thức thể hiện
Cũng kế thừa các phương thức từ giao diện cha của nó, AudioNode.
Giao diện AudioWorkletNode không tự định nghĩa phương thức nào.
Ví dụ
Trong ví dụ này, chúng ta tạo một AudioWorkletNode tùy chỉnh tạo ra nhiễu ngẫu nhiên.
Trước tiên, chúng ta cần định nghĩa một AudioWorkletProcessor tùy chỉnh có nhiệm vụ xuất ra nhiễu ngẫu nhiên và đăng ký nó. Lưu ý rằng việc này nên được thực hiện trong một tệp riêng.
// random-noise-processor.js
class RandomNoiseProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
const output = outputs[0];
output.forEach((channel) => {
for (let i = 0; i < channel.length; i++) {
channel[i] = Math.random() * 2 - 1;
}
});
return true;
}
}
registerProcessor("random-noise-processor", RandomNoiseProcessor);
Tiếp theo, trong tệp kịch bản chính, chúng ta sẽ tải processor, tạo một thể hiện AudioWorkletNode bằng cách truyền vào tên của processor, rồi kết nối nút này vào một đồ thị âm thanh.
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("random-noise-processor.js");
const randomNoiseNode = new AudioWorkletNode(
audioContext,
"random-noise-processor",
);
randomNoiseNode.connect(audioContext.destination);
Thông số kỹ thuật
| Specification |
|---|
| Web Audio API> # AudioWorkletNode> |