--- title: BaseAudioContext.createPeriodicWave() slug: Web/API/BaseAudioContext/createPeriodicWave tags: - API - Audio - AudioContext - BaseAudioContext - Media - Method - Reference - Web Audio API - createPeriodicWave browser-compat: api.BaseAudioContext.createPeriodicWave ---
{{ APIRef("Web Audio API") }}
{{ domxref("BaseAudioContext") }} 인터페이스의 createPeriodicWave()
메서드는 {{domxref("PeriodicWave")}}를 생성하기 위해 사용되는데, 이는 {{ domxref("OscillatorNode") }}의 출력을 형성하기 위해 사용될 수 있는 주기적인 파형을 정의하기 위해 사용됩니다.
var wave = AudioContext.createPeriodicWave(real, imag[, constraints]);
{{domxref("PeriodicWave")}}.
real
imag
real
과 imag
배열은 같은 길이를 가져야만 합니다. 그렇지 않으면 오류가 발생됩니다.
constraints
{{optional_inline}}disableNormalization
: 만약 true
로 설정되면, 정규화는 주기파에 대해 비활성화 됩니다. 기본값은 false
입니다.만약 정규화되면, 결과 파동은 최고 절대값(maximum absolute peak value) 1을 가지게 됩니다.
다음의 예제는 단순한 사인파를 포함하는 {{domxref("PeriodicWave")}} 객체를 생성하기 위한 createPeriodicWave()
의 간단한 사용을 보여줍니다.
var real = new Float32Array(2); var imag = new Float32Array(2); var ac = new AudioContext(); var osc = ac.createOscillator(); real[0] = 0; imag[0] = 0; real[1] = 1; imag[1] = 0; var wave = ac.createPeriodicWave(real, imag, {disableNormalization: true}); osc.setPeriodicWave(wave); osc.connect(ac.destination); osc.start(); osc.stop(2);
이는 정의에 의해 오직 기본음을 포함하는 소리가 사인파이기 때문에 작동합니다.
여기서, 우리는 두 값과 함께 PeriodicWave
를 생성합니다. 첫번째 값은 oscillator가 시작하는 값인 DC 오프셋입니다. 여기서 0은 좋은데, 왜냐하면 우리는 곡선을 [-1.0; 1.0] 범위의 중간에서 시작하기를 원하기 때문입니다.
두번째와 그 다음의 값은 사인과 코사인 요소입니다. 여러분은 이것을 시간 도메인 값으로부터 주파수 도메인 값을 얻는 푸리에 변환의 결과로 생각할 수 있습니다. 여기서, createPeriodicWave()
와 함께, 여러분은 주파수를 명시하고, 브라우저는 oscillator의 주파수에 대한 시간 도메인 버퍼를 얻기 위해 역 푸리에 변환을 수행합니다. 여기서, 우리는 오직 기본음의 전체 볼륨 (1.0)에서의 한 요소만을 설정했으므로, 우리는 사인파를 얻습니다.
푸리에 변환의 계수는 오름차순으로 주어져야만 하고 (예: etc.) 양이거나 음일 수 있습니다. 수동으로 이러한 계수들을 얻는 간단한 방법은 (최고의 방법은 아니지만) 그래프 계산기를 사용하는 것입니다.
{{Compat}}