BaseAudioContext: phương thức createChannelSplitter()
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.
Phương thức createChannelSplitter() của giao diện BaseAudioContext được dùng để tạo một ChannelSplitterNode,
node này được dùng để truy cập từng kênh riêng lẻ của một luồng âm thanh và xử lý chúng riêng biệt.
Note:
Hàm dựng ChannelSplitterNode()
là cách được khuyến nghị để tạo một ChannelSplitterNode; xem
Tạo một AudioNode.
Cú pháp
createChannelSplitter(numberOfOutputs)
Tham số
numberOfOutputs-
Số kênh trong luồng âm thanh đầu vào mà bạn muốn xuất riêng rẽ; mặc định là 6 nếu tham số này không được chỉ định.
Giá trị trả về
Một ChannelSplitterNode.
Ví dụ
Ví dụ đơn giản sau cho thấy cách bạn có thể tách một track stereo (chẳng hạn một bản nhạc) và xử lý khác nhau cho kênh trái và kênh phải. Để dùng được chúng, bạn cần sử dụng tham số thứ hai và thứ ba của phương thức AudioNode.connect(AudioNode), cho phép bạn chỉ định chỉ mục của kênh nguồn để kết nối từ đó và chỉ mục của kênh đích để kết nối tới đó.
const ac = new AudioContext();
ac.decodeAudioData(someStereoBuffer, (data) => {
const source = ac.createBufferSource();
source.buffer = data;
const splitter = ac.createChannelSplitter(2);
source.connect(splitter);
const merger = ac.createChannelMerger(2);
// Chỉ giảm âm lượng của kênh trái
const gainNode = ac.createGain();
gainNode.gain.setValueAtTime(0.5, ac.currentTime);
splitter.connect(gainNode, 0);
// Kết nối splitter ngược lại vào đầu vào thứ hai của merger: ở đây
// chúng ta thực chất đang hoán đổi các kênh, đảo ảnh stereo.
gainNode.connect(merger, 0, 1);
splitter.connect(merger, 1, 0);
const dest = ac.createMediaStreamDestination();
// Vì đã dùng ChannelMergerNode, giờ chúng ta có một MediaStream stereo
// có thể dùng để đưa đồ thị Web Audio tới WebRTC,
// MediaRecorder, v.v.
merger.connect(dest);
});
Thông số kỹ thuật
| Specification |
|---|
| Web Audio API> # dom-baseaudiocontext-createchannelsplitter> |