BaseAudioContext: phương thức createWaveShaper()

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 createWaveShaper() của giao diện BaseAudioContext tạo một WaveShaperNode, biểu diễn một dạng méo phi tuyến. Nó được dùng để áp dụng các hiệu ứng méo lên âm thanh của bạn.

Note: Hàm dựng WaveShaperNode() là cách được khuyến nghị để tạo một WaveShaperNode; xem Tạo một AudioNode.

Cú pháp

js
createWaveShaper()

Tham số

Không có.

Giá trị trả về

Một WaveShaperNode.

Ví dụ

Ví dụ sau cho thấy cách dùng cơ bản một AudioContext để tạo một wave shaper node. Để xem ví dụ/thông tin ứng dụng đầy đủ hơn, hãy xem bản demo Voice-change-O-matic của chúng tôi (xem app.js để biết phần mã liên quan).

Note: Các hàm sigmoid thường được dùng cho đường cong méo vì những đặc tính tự nhiên của chúng. Ví dụ, hình chữ S của chúng giúp tạo ra kết quả nghe mượt hơn. Chúng tôi tìm thấy đoạn mã đường cong méo bên dưới trên Stack Overflow.

js
const audioCtx = new AudioContext();
const distortion = audioCtx.createWaveShaper();

// …

function makeDistortionCurve(amount) {
  const k = typeof amount === "number" ? amount : 50;
  const numSamples = 44100;
  const curve = new Float32Array(numSamples);
  const deg = Math.PI / 180;

  for (let i = 0; i < numSamples; i++) {
    const x = (i * 2) / numSamples - 1;
    curve[i] = ((3 + k) * x * 20 * deg) / (Math.PI + k * Math.abs(x));
  }
  return curve;
}

// …

distortion.curve = makeDistortionCurve(400);
distortion.oversample = "4x";

Thông số kỹ thuật

Specification
Web Audio API
# dom-baseaudiocontext-createwaveshaper

Khả năng tương thích với trình duyệt

Xem thêm