AudioParam

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Giao diện AudioParam của Web Audio API biểu diễn một tham số liên quan đến âm thanh, thường là tham số của một AudioNode (chẳng hạn như GainNode.gain).

Một AudioParam có thể được đặt thành một giá trị cụ thể hoặc một thay đổi giá trị, và có thể được lên lịch để xảy ra vào một thời điểm xác định theo một mẫu xác định.

Mỗi AudioParam có một danh sách sự kiện, ban đầu rỗng, xác định khi nào và bằng cách nào các giá trị thay đổi. Khi danh sách này không rỗng, các thay đổi bằng thuộc tính AudioParam.value sẽ bị bỏ qua. Danh sách sự kiện này cho phép chúng ta lên lịch các thay đổi cần diễn ra ở những thời điểm cực kỳ chính xác, bằng cách dùng các đường cong tự động hóa dựa trên dòng thời gian tùy ý. Thời gian được dùng là thời gian được định nghĩa trong AudioContext.currentTime.

Các loại AudioParam

Có hai kiểu AudioParam: tham số a-ratek-rate. Mỗi AudioNode định nghĩa trong đặc tả tham số nào của nó là a-rate hoặc k-rate.

a-rate

Một AudioParam a-rate lấy giá trị tham số âm thanh hiện tại cho từng khung mẫu của tín hiệu âm thanh.

k-rate

Một AudioParam k-rate dùng cùng một giá trị tham số âm thanh ban đầu cho toàn bộ khối đang được xử lý; tức là 128 khung mẫu. Nói cách khác, cùng một giá trị được áp dụng cho mọi khung âm thanh khi nút xử lý chúng.

Thuộc tính thể hiện

AudioParam.defaultValue Read only

Biểu diễn giá trị ban đầu của thuộc tính như được định nghĩa bởi AudioNode cụ thể đã tạo ra AudioParam.

AudioParam.maxValue Read only

Biểu diễn giá trị lớn nhất có thể có đối với phạm vi danh nghĩa (hiệu dụng) của tham số.

AudioParam.minValue Read only

Biểu diễn giá trị nhỏ nhất có thể có đối với phạm vi danh nghĩa (hiệu dụng) của tham số.

AudioParam.value

Biểu diễn giá trị hiện tại của tham số tại thời điểm hiện tại; ban đầu được đặt bằng giá trị của defaultValue.

Phương thức thể hiện

AudioParam.setValueAtTime()

Lên lịch một thay đổi tức thời đối với giá trị của AudioParam tại một thời điểm chính xác, được đo dựa trên AudioContext.currentTime. Giá trị mới được cung cấp bởi tham số value.

AudioParam.linearRampToValueAtTime()

Lên lịch một thay đổi tuyến tính dần dần cho giá trị của AudioParam. Thay đổi bắt đầu tại thời điểm được chỉ định cho sự kiện trước đó, đi theo một đường dốc tuyến tính đến giá trị mới được cung cấp trong tham số value, và đạt đến giá trị mới tại thời điểm được chỉ định bởi tham số endTime.

AudioParam.exponentialRampToValueAtTime()

Lên lịch một thay đổi hàm mũ dần dần cho giá trị của AudioParam. Thay đổi bắt đầu tại thời điểm được chỉ định cho sự kiện trước đó, đi theo một đường dốc hàm mũ đến giá trị mới được cung cấp trong tham số value, và đạt đến giá trị mới tại thời điểm được chỉ định bởi tham số endTime.

AudioParam.setTargetAtTime()

Lên lịch bắt đầu một thay đổi đối với giá trị của AudioParam. Thay đổi bắt đầu tại thời điểm được chỉ định trong startTime và di chuyển theo hàm mũ về phía giá trị được cung cấp bởi tham số target. Tốc độ suy giảm theo hàm mũ được xác định bởi tham số timeConstant, là một khoảng thời gian tính bằng giây.

AudioParam.setValueCurveAtTime()

Lên lịch để các giá trị của AudioParam đi theo một tập các giá trị, được định nghĩa bằng một mảng số thực dấu chấm động được co giãn để khớp vào khoảng đã cho, bắt đầu tại một thời điểm bắt đầu xác định và kéo dài trong một khoảng thời gian xác định.

AudioParam.cancelScheduledValues()

Hủy mọi thay đổi trong tương lai đã được lên lịch cho AudioParam.

AudioParam.cancelAndHoldAtTime()

Hủy mọi thay đổi trong tương lai đã được lên lịch cho AudioParam nhưng giữ nguyên giá trị của nó tại một thời điểm nhất định cho đến khi có thay đổi tiếp theo bằng các phương thức khác.

Ví dụ

Đầu tiên là một ví dụ cơ bản cho thấy một GainNode được đặt giá trị gain. gain là một ví dụ về AudioParam a-rate, vì giá trị này có thể được đặt khác nhau cho từng khung mẫu của âm thanh.

js
const audioCtx = new AudioContext();

const gainNode = audioCtx.createGain();
gainNode.gain.value = 0;

Tiếp theo là một ví dụ cho thấy một DynamicsCompressorNode có một số giá trị tham số được thao tác. Đây là các ví dụ về kiểu AudioParam k-rate, vì các giá trị được đặt cho toàn bộ khối âm thanh cùng một lúc.

js
const compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.setValueAtTime(-50, audioCtx.currentTime);
compressor.knee.setValueAtTime(40, audioCtx.currentTime);
compressor.ratio.setValueAtTime(12, audioCtx.currentTime);
compressor.attack.setValueAtTime(0, audioCtx.currentTime);
compressor.release.setValueAtTime(0.25, audioCtx.currentTime);

Thông số kỹ thuật

Specification
Web Audio API
# AudioParam

Tương thích trình duyệt

Xem thêm