recursal/MDN huggingface dataset:
MediaStreamTrack.clone()
========================

`MediaStreamTrack` 인터페이스의 **`clone()`** 메서드는 `MediaStreamTrack` 객체의 사본을 반환합니다. 사본은 새로운 `id`를 제외하면 모든 값이 원본과 동일합니다.

구문
--


```js
const newTrack = track.clone();
```

### 반환 값

`clone()`을 호출한 `MediaStreamTrack`에서 `id`를 제외하면 똑같은 새로운 `MediaStreamTrack`.

명세
--

| Specification |
| --- |
| Media Capture and Streams # dom-mediastreamtrack-clone |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
MediaStreamTrack.getSettings()
==============================

`MediaStreamTrack` 인터페이스의 **`getSettings()`** 메서드는 트랙의 각 제약 속성에 지금 적용된 값을 담은 `MediaTrackSettings` (en-US) 객체를 반환합니다. 기능, 제약, 설정 (en-US) 문서에서 제약 속성 사용법에 대해 자세히 알아보세요.

구문
--


```js
const settings = track.getSettings();
```

### 반환 값

트랙의 현재 제약 속성 설정을 설명하는 `MediaTrackSettings` (en-US) 객체.

**참고:** 반환하는 객체는 모든 제약 속성을 포함하며, 사이트 코드에서 수정하지 않은 플랫폼 기본값 역시 들어있습니다. 사이트 코드에서 제일 최근에 적용한 제약 속성만 필요한 경우, `getConstraints()` 메서드를 사용하세요.

명세
--

| Specification |
| --- |
| Media Capture and Streams # dom-mediastreamtrack-getsettings |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
MediaStreamTrack.stop()
=======================

**`MediaStreamTrack.stop()`** 메서드는 트랙을 정지합니다.

구문
--


```js
track.stop();
```

설명
--

`stop()` 메서드를 호출하면 사용자 에이전트에게 `MediaStreamTrack`이 소스(파일, 네트워크 스트림, 장치 카메라와 마이크...)를 더는 필요로 하지 않음을 표현합니다. 두 개의 탭이 장치의 마이크에 접근하고 있는 경우처럼, 다수의 트랙이 하나의 소스를 사용하고 있을 수도 있으므로 소스 자체는 즉시 멈추지 않을 수도 있으며, 대신 트랙과 소스를 즉시 분리합니다. 아무런 미디어 트랙도 소스를 사용하지 않는 상태가 되면 그때 소스가 완전히 정지합니다.

`stop()`을 호출함과 동시에 `readyState` 속성은 `ended`로 바뀝니다.

예제
--

### 비디오 스트림 정지

이번 예제는 주어진 `<video>` 요소의 모든 트랙에서 `stop()`을 호출해 비디오 스트림을 정지하는 함수입니다.


```js
function stopStreamedVideo(videoElem) {
  const stream = videoElem.srcObject;
  const tracks = stream.getTracks();

  tracks.forEach(function (track) {
    track.stop();
  });

  videoElem.srcObject = null;
}
```


우선 비디오 요소에서 `srcObject` 속성을 사용해 스트림을 가져오는 것부터 시작합니다. 그다음으로는 `getTracks()` (en-US) 메서드를 사용해 스트림의 트랙 목록을 가져오고, 이제 `forEach()`로 각 트랙의 `stop()` 메서드를 호출합니다.

마지막으로, `srcObject`를 `null`로 설정해서 `MediaStream` (en-US)과의 연결을 끊어, 객체를 해제할 수 있도록 합니다.

명세
--

| Specification |
| --- |
| Media Capture and Streams # dom-mediastreamtrack-stop |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* 메서드가 속한 `MediaStreamTrack` 인터페이스
* `MediaStreamTrack.readyState`
* `ended (en-US)`
MediaStreamTrack.readyState
===========================

**`MediaStreamTrack.readyState`** 읽기 전용 속성은 트랙의 상태를 나타내는 열거형 값을 반환합니다.

구문
--


```js
const state = track.readyState;
```

### 값

다음의 두 값 중 하나입니다.

* `"live"`는 입력이 연결됐으며 트랙이 실시간 데이터를 받는 중임을 나타냅니다. 이 때, 데이터 출력은 `MediaStreamTrack.enabled` 속성을 사용해 켜거나 끌 수 있습니다.
* `"ended"`는 입력이 더 이상 데이터를 제공하지 않으며 앞으로도 새로운 데이터를 제공하지 않을 것임을 나타냅니다.
명세
--

| Specification |
| --- |
| Media Capture and Streams # dom-mediastreamtrack-readystate |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* WebRTC
* `MediaStreamTrack.onended` (en-US)
MediaStreamTrack.muted
======================

`MediaStreamTrack` 인터페이스의 **`muted`** 읽기 전용 속성은 트랙이 현재 미디어 출력을 제공할 수 없는 상태인지를 나타내는 `Boolean`을 반환합니다.

**참고:** 사용자가 트랙을 음소거할 수 있는 기능을 구현하려면 `enabled` 속성을 사용하세요. `enabled`를 `false`로 바꿔 트랙을 비활성하면 빈 프레임(모든 샘플이 0인 오디오 프레임, 모든 픽셀이 검은색인 비디오 프레임)만 생성합니다.

구문
--


```js
const mutedFlag = track.muted;
```

### 값

트랙이 중단된 상태면 `true`, 아니면 `false`.

**참고:** 되도록이면 트랙의 중단 상태를 알기 위해 `muted`를 폴링 하는 것보다는 `mute`와 `unmute` 이벤트를 수신하세요.

예제
--

다음 예제 코드는 `MediaStreamTrack` 배열에서 중단된 트랙의 수를 셉니다.


```js
let mutedCount = 0;

trackList.forEach((track) => {
  if (track.muted) {
    mutedCount += 1;
  }
});
```

명세
--

| Specification |
| --- |
| Media Capture and Streams # dom-mediastreamtrack-muted |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
AudioWorkletGlobalScope.registerProcessor
=========================================

`AudioWorkletGlobalScope` 인터페이스의 **`registerProcessor`** 메서드는 명시된 *name* 아래에서 `AudioWorkletProcessor` 인터페이스로부터 파생된 클래스 생성자를 등록합니다.

구문
--


```js
AudioWorkletGlobalScope.registerProcessor(name, processorCtor);
```

### 매개변수

`name`

프로세서가 등록될 이름을 나타내는 문자열.

`processorCtor`

`AudioWorkletProcessor`로부터 파생된 클래스의 생성자.



**참고:** 프로세서가 한 번 등록되고 나면
 `AudioWorkletGlobalScope`에서
 키-값 쌍 `{ name: constructor }` 가 내부적으로 저장됩니다.
 *name* 은 등록된 프로세서를 기반으로 한 `AudioWorkletNode`를 생성할 때 참조됩니다.
 주어진 이름의 새로운 프로세서는 내부적으로 생성되고 새로운 노드와 연관됩니다.


### 반환 값

`undefined`### 예외

`NotSupportedError` `DOMException` (en-US)

다음의 조건 아래서 발생됩니다:

* *name* 이 빈 문자열입니다.
* 주어진 *name* 아래의 생성자가 이미 등록되었습니다. 같은 이름을 두 번 등록하는 것은 허용되지 않습니다.

`TypeError` `DOMException` (en-US)

다음의 조건 아래서 발생됩니다:

* *processorCtor* 이 호출 가능한 생성자가 아닙니다.
* 생성자의 `parameterDescriptors` 속성이 존재하고 `AudioParamDescriptor` 기반의 객체의 배열을 반환하지 않습니다.

예제
--

이 예제에서 우리는 아무 소리도 출력하지 않는 사용자 정의 `AudioWorkletNode` 를 생성할 것입니다.

우선, 우리는 사용자 정의 `AudioWorkletProcessor`를 정의하고 등록할 필요가 있습니다. 이 작업은 별도의 파일에서 이루어져야 함에 주의하세요.


```js
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
  process(inputs, outputs, parameters) {
    return true;
  }
}

registerProcessor("test-processor", TestProcessor);
```


다음으로, 메인 스크립트 파일에서 우리는 프로세서를 로드하고, `AudioWorkletNode` 에 우리가 `registerProcessor` 를 호출할 때 사용했던 프로세서 이름을 전달하며 `AudioWorkletNode` 의 인스턴스를 생성하고, 이것을 오디오 그래프에 연결할 것입니다.


```js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const node = new AudioWorkletNode(audioContext, "test-processor");
node.connect(audioContext.destination);
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioworkletglobalscope-registerprocessor |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.minValue
===================

`AudioParam` 인터페이스의 읽기 전용 **`minValue`** 속성은 파라미터의 명목상의 (효과적인) 범위에 대한 최소로 가능한 값을 나타냅니다.

구문
--


```js
var minVal = audioParam.minValue;
```

### 값

파라미터의 명목상의 범위에 대해 허용되는 최소 값을 나타내는 부동점 `Number`.

`minValue` 의 기본 값은 최소 음수 단일 정밀도 부동점 값(-340,282,346,638,528,859,811,704,183,484,516,925,440)입니다.

예제
--


```js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
console.log(gainNode.gain.minValue); // -3.4028234663852886e38
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-minvalue |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `AudioParam.maxValue`
AudioParam.maxValue
===================

`AudioParam` 인터페이스의 읽기 전용 **`maxValue`** 속성은 파라미터의 명목상의 (효과적인) 범위에 대해 최대로 가능한 값을 나타냅니다.

구문
--


```js
var maxVal = audioParam.maxValue;
```

### 값

매개변수의 명목상의 범위에 대해 허용되는 최대 값을 나타내는 부동점 `Number`.

`maxValue` 의 기본 값은 최대 양수 단일 정밀도 부동점 값(+340,282,346,638,528,859,811,704,183,484,516,925,440)입니다.

예제
--


```js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
console.log(gainNode.gain.maxValue); // 3.4028234663852886e38
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-maxvalue |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* `AudioParam.minValue`
AudioParam.linearRampToValueAtTime()
====================================

`AudioParam` 인터페이스의 `linearRampToValueAtTime()` 메서드는 `AudioParam` 의 값에 점진적인 선형 변화를 예정합니다. 변화는 *previous* 이벤트에 명시된 시간에 시작해, 선형적인 ramp를 따라 `value` 매개변수에 주어진 새로운 값으로 향하고, `endTime` 매개변수에 주어진 시간에 새로운 값에 도달합니다.

구문
--


```js
var AudioParam = AudioParam.linearRampToValueAtTime(value, endTime);
```

### 매개변수

value

`AudioParam` 이 주어진 시간까지 ramp할 값을 나타내는 부동점 number.

endTime

ramping이 시작된 이후 값의 변화가 멈출 정확한 시간 (초로 표현됨) 을 나타내는 double.

### 반환

이 `AudioParam` 객체에 대한 참조. 몇몇 브라우저에서 이 인터페이스의 오래된 구현은 void를 반환합니다.

예제
--

이 예제에는 두 개의 제어 버튼을 가진 미디어 소스가 있습니다 (소스 코드는 audio-param
repo에서 볼 수 있고, 작동 예제도 볼 수 있습니다). 이 버튼들이 눌렸을 때, `linearRampToValueAtTime()` 가 사용되어 각각 gain 값을 1.0까지, 그리고 0까지 서서히 사라지게(fade) 합니다. 비록 종종 `AudioParam.exponentialRampToValueAtTime()`가 좀 더 자연스럽다고 여겨지긴 하지만 이것은 페이드 인/페이드 아웃 이펙트에 아주 유용합니다.


```js
// 오디오 컨텍스트를 생성합니다
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

// 예제를 위한 기본 변수를 설정합니다
var myAudio = document.querySelector("audio");
var pre = document.querySelector("pre");
var myScript = document.querySelector("script");

pre.innerHTML = myScript.innerHTML;

var linearRampPlus = document.querySelector(".linear-ramp-plus");
var linearRampMinus = document.querySelector(".linear-ramp-minus");

// MediaElementAudioSourceNode를 생성합니다
// HTMLMediaElement를 노드 내로 전달합니다
var source = audioCtx.createMediaElementSource(myAudio);

// gain 노드를 생성하고 gain 값을 0.5로 설정합니다
var gainNode = audioCtx.createGain();

// AudioBufferSourceNode를 gainNode에 연결하고
// gainNode를 destination에 연결합니다
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// onclick이 발생했을 때 무언가를 하기 위해 버튼을 설정합니다
linearRampPlus.onclick = function () {
  gainNode.gain.linearRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};

linearRampMinus.onclick = function () {
  gainNode.gain.linearRampToValueAtTime(0, audioCtx.currentTime + 2);
};
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-linearramptovalueattime |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.defaultValue
=======================

`AudioParam` 인터페이스의 읽기 전용 **`defaultValue`** 속성은 `AudioParam` 을 생성하는 특정한 `AudioNode`에 의해 정의되는 특성들의 초기 값을 나타냅니다.

구문
--


```js
var defaultVal = audioParam.defaultValue;
```

### 값

부동점 `Number`.

예제
--


```js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
const defaultVal = gainNode.gain.defaultValue;
console.log(defaultVal); // 1
console.log(defaultVal === gainNode.gain.value); // true
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-defaultvalue |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.exponentialRampToValueAtTime()
=========================================

`AudioParam` 인터페이스의 **`exponentialRampToValueAtTime()`** 메서드는 `AudioParam`의 값에 점진적인 지수적 변화를 예정합니다. 변화는 **이전** 이벤트에 명시된 시간에 시작해, 지수적 경사(ramp)를 따라 `value` 매개변수에 주어진 새로운 값으로 향하고, `endTime` 매개변수에 주어진 시간에 새로운 값에 도달합니다.

**참고:** 사람의 귀가 작동하는 방식 때문에,
 주파수나 playback rate를 변화시킬 때
 지수적 경사는 선형적 경사에 비해 더욱 유용한 것으로 여겨집니다.


구문
--


```js
var AudioParam = AudioParam.exponentialRampToValueAtTime(value, endTime);
```

### 매개변수

value

`AudioParam` 이 주어진 시간까지 변화될 값을 나타내는 부동소수점 수.

endTime

변화가 시작된 이후 값의 변화가 멈출 정확한 시간(단위: 초)을 나타내는 double.

### 반환

이 `AudioParam` 객체에 대한 참조. 몇몇 브라우저에서 이 인터페이스의 오래된 구현은 void를 반환합니다.

예제
--

이 예제에는 두 개의 제어 버튼을 가진 미디어 소스가 있습니다 (소스 코드는 audio-param
repo에서 볼 수 있고, 작동 예제도 볼 수 있습니다). 이 버튼이 눌렸을 때, `exponentialRampToValueAtTime()` 가 사용되어 각각 gain 값을 1.0까지, 그리고 0까지 서서히 사라지게(fade) 합니다. 이 메서드는 페이드 인/페이드 아웃 이펙트에 아주 유용합니다.


```js
// 오디오 컨텍스트를 생성합니다
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

// 예제를 위한 기본 변수를 설정합니다
var myAudio = document.querySelector("audio");
var pre = document.querySelector("pre");
var myScript = document.querySelector("script");

pre.innerHTML = myScript.innerHTML;

var expRampPlus = document.querySelector(".exp-ramp-plus");
var expRampMinus = document.querySelector(".exp-ramp-minus");

// MediaElementAudioSourceNode를 생성합니다
// HTMLMediaElement를 노드 내로 전달합니다
var source = audioCtx.createMediaElementSource(myAudio);

// gain 노드를 생성하고 gain 값을 0.5로 설정합니다
var gainNode = audioCtx.createGain();

// AudioBufferSourceNode를 gainNode에 연결하고
// gainNode를 destination에 연결합니다
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// onclick이 발생했을 때 무언가를 하기 위해 버튼을 설정합니다
expRampPlus.onclick = function () {
  gainNode.gain.exponentialRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};

expRampMinus.onclick = function () {
  gainNode.gain.exponentialRampToValueAtTime(0.01, audioCtx.currentTime + 2);
};
```


**참고:** 마지막 함수에서 변화시킬 값으로 0이 아니라 0.01의 값이 사용되었는데,
 이는 만약 0이 사용된다면
 *invalid or illegal string* 오류가 발생되기 때문입니다 — 이 값은 양수일 필요가 있습니다.


명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-exponentialramptovalueattime |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.value
================

Web Audio API `AudioParam` 인터페이스의 **`value`** 속성은 현재 시간에서의 해당 `AudioParam`의 값을 get하거나 set합니다. 초기 값은 `AudioParam.defaultValue`으로 설정됩니다.

`value` 를 설정하는 것은 `AudioContext` 의 `currentTime` (en-US) 속성에 의해 반환된 시간과 함께 `AudioParam.setValueAtTime`를 호출하는 것과 같은 효과를 가지고 있습니다.

구문
--


```js
var curValue = audioParam.value;
audioParam.value = newValue;
```

### 값

현재 시간에서의 파라미터의 값을 나타내는 부동점 `Number`. 이 값은 `minValue`와 `maxValue` 속성에 의해 명시된 값 사이에 있을 것입니다.

사용 일람
-----

### 값 정밀도과 변화

`value` 를 저장하기 위해 내부적으로 사용되는 데이터 타입은 단일 정밀도 (32비트) 부동점 number인 반면, JavaScript는 64비트 배정밀도 부동점 number를 사용합니다. 그 결과로, `value` 속성에서 읽은 값이 항상 설정한 것과 정확히 같지 않을 수 있습니다.

아래의 예시를 고려해 보세요.


```js
const source = new AudioBufferSourceNode(...);
const rate = 5.3;
source.playbackRate.value = rate;
console.log(source.playbackRate.value === rate);
```


출력된 로그는 `false` 일 것인데, 왜냐하면 playback rate 파라미터 `rate` 는 5.3에 가장 가까운 32비트 부동점 number로 전환되고, 이 값은 5.300000190734863이기 때문입니다. 한 가지 해결 방법은 `value` 를 설정할 때 다음과 같이 `Math.fround()` 메서드를 사용하는 것인데, 이 메서드는 명시된 64비트 JavaScript 값과 같은 단일 정밀도 값을 반환합니다.


```js
const source = new AudioBufferSourceNode(...);
const rate = Math.fround(5.3);
source.playbackRate.value = rate;
console.log(source.playbackRate.value === rate);
```


이 경우, 출력된 로그는 `true` 일 것입니다.

### 시간에 따라 변화하는 속성의 값

`AudioParam` 의 `value` 는 고정되어 있을 수도 있고 시간에 따라 달라질 수도 있습니다. 이는 `value` getter에 의해 반영되는데, 이것은 오디오 렌더링 엔진의 가장 최근의 **render
quantum** , 즉 오디오 버퍼가 처리되고 갱신되는 순간에서의 파라미터의 값을 반환합니다. 오디오 버퍼를 처리하는 것에 덧붙여, 각각의 render quantum은 현재 시간과 설정된 시간 기반의 파라미터 값이 변화한다면 필요할 때 각 `AudioParam` 의 `value` 를 갱신합니다.

파라미터를 처음 생성했을 때, 파라미터의 값은 `AudioParam.defaultValue`에 의해 주어지는 기본 값으로 설정됩니다. 이것은 0.0초에서의 이 파라미터의 값이고, 값이 변경되는 첫번째 render quantum 전까지 계속 유지될 것입니다.

각 render quantum 도중에, 브라우저는 파라미터의 값을 관리하는 것에 관련된 다음의 일들을 합니다.

* 만약 `value` setter가 사용되었다면, 파라미터의 값은 주어진 값으로 변경됩니다.
* 만약 현재 시간이 `setValueAtTime()`의 이전 호출에 의해 명시된 시간과 같거나 초과한다면, `value` 는 `setValueAtTime()` 에 전달된 값으로 변경됩니다.
* 만약 graduated나 ramped 방식의 값 변경 메서드가 호출되었고 현재 시간이 graduated된 변화가 발생해야 하는 시간 범위 내에 있다면, 값은 적절한 알고리즘에 기반해 갱신됩니다. ramped나 graduated 값 변화 메서드에는 `linearRampToValueAtTime()`, `setTargetAtTime()`, `setValueCurveAtTime()`이 있습니다.

이렇게 하여, 파라미터의 `value` 는 시간에 따른 파라미터의 상태를 정밀하게 반영하도록 유지됩니다.

예제
--

이 예제는 `GainNode` (en-US)의 볼륨을 즉시 40%로 변경합니다.


```js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0.4;
// 위는 아래와 같습니다.
gainNode.gain.setValueAtTime(0.4, audioCtx.currentTime);
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-value |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

`GainNode` (en-US)의 gain 값을 변경할 때, 버전 64 (2018년 1월) 이전의 Google Chrome은 dezippering을 방지하기 위해 부드러운 보간(interpolation)을 수행할 것입니다. 버전 64부터, Web Audio 명세서와 일치하도록 값은 즉시 변경됩니다. 자세한 정보를 보려면 Chrome Platform
Status를 참고하세요.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.cancelAndHoldAtTime()
================================

`AudioParam` 인터페이스의 **`cancelAndHoldAtTime()`** 속성은 `AudioParam` 에 예정된 모든 미래의 변화를 취소하지만 다른 메서드를 사용하여 추가적인 변화가 만들어지기 전까지 주어진 시간에서 `AudioParam` 의 값을 유지합니다.

구문
--


```js
var audioParam = AudioParam.cancelAndHoldAtTime(cancelTime);
```

### 매개변수

cancelTime

`AudioContext` 가 처음 생성된 이후 모든 예정된 변화가 취소될 시간 (초 단위로 표현됨) 을 나타내는 double.

### 반환 값

이 메서드가 호출된 `AudioParam`에 대한 참조.

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-cancelandholdattime |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
AudioParam.cancelScheduledValues()
==================================

`AudioParam` 인터페이스의 `cancelScheduledValues()` 메서드는 `AudioParam` 에 예정된 모든 미래의 변화를 취소합니다.

구문
--


```js
var AudioParam = AudioParam.cancelScheduledValues(startTime);
```

### 매개변수

startTime

`AudioContext`가 처음 생성된 이후 모든 예정된 변화가 취소될 시간 (초 단위로 표현됨) 을 나타내는 double.

### 반환

이 `AudioParam` 객체에 대한 참조. 몇몇 오래된 구현에서 이 메서드는 void를 반환합니다.

예제
--


```js
var gainNode = audioCtx.createGain();
gainNode.gain.setValueCurveAtTime(waveArray, audioCtx.currentTime, 2); // 'gain' 이 AudioParam입니다.
gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-cancelscheduledvalues |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.setValueAtTime()
===========================

`AudioParam` 인터페이스의 `setValueAtTime()` 메서드는 `AudioContext.currentTime` (en-US)으로 측정된 정밀한 시간에 `AudioParam` 값의 즉각적인 변화를 예정합니다. 새로운 값은 value 매개변수에 주어집니다.

구문
--


```js
var AudioParam = AudioParam.setValueAtTime(value, startTime);
```

### 매개변수

value

AudioParam이 주어진 시간에 변화시킬 값을 나타내는 부동점 number.

startTime

`AudioContext`가 처음 생성된 이후 값의 변화가 발생할 시간 (초로 표현함) 을 나타내는 double. 만약 이 값이 음수라면 `TypeError`가 발생합니다.

### 반환

이 `AudioParam` 객체에 대한 참조. 몇몇 브라우저에서 이 인터페이스의 오래된 구현은 void를 반환합니다.

예제
--

이 간단한 예제는 두 개의 제어 버튼을 가진 미디어 요소 소스 기능을 갖추고 있습니다 (소스 코드는 webaudio-examples
repo에서 볼 수 있고, 작동 예제도 볼 수 있습니다). 버튼이 눌렸을 때, `currGain` 변수는 0.25만큼 증가하거나 감소하고, 그리고 나서 `setValueAtTime()` 메서드가 사용되어 지금으로부터 1초 후에 (`audioCtx.currentTime + 1`) gain 값을 `currGain` 과 같게 설정합니다.


```js
// 오디오 컨텍스트를 생성합니다
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

// 예제를 위한 기본 변수를 설정합니다
var myAudio = document.querySelector("audio");
var pre = document.querySelector("pre");
var myScript = document.querySelector("script");

pre.innerHTML = myScript.innerHTML;

var targetAtTimePlus = document.querySelector(".set-target-at-time-plus");
var targetAtTimeMinus = document.querySelector(".set-target-at-time-minus");

// MediaElementAudioSourceNode를 생성합니다
// HTMLMediaElement를 노드 내로 전달합니다
var source = audioCtx.createMediaElementSource(myAudio);

// gain 노드를 생성하고 gain 값을 0.5로 설정합니다
var gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
var currGain = gainNode.gain.value;

// AudioBufferSourceNode를 gainNode에 연결하고
// gainNode를 destination에 연결합니다
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// onclick이 발생했을 때 무언가를 하기 위해 버튼을 설정합니다
targetAtTimePlus.onclick = function () {
  currGain += 0.25;
  gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};

targetAtTimeMinus.onclick = function () {
  currGain -= 0.25;
  gainNode.gain.setValueAtTime(currGain, audioCtx.currentTime + 1);
};
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-setvalueattime |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* Web Audio API 사용하기
AudioParam.setValueCurveAtTime()
================================

`AudioParam` 인터페이스의 **`setValueCurveAtTime()`** 메서드는 파라미터의 값이 값들의 리스트에 의해 정의되는 커브를 따라 변화하도록 예정합니다.

이 커브는 부동점 값들의 배열에서 정의되는 연속되는 값들 사이의 선형 보간인데, 이는 `startTime` 에 시작하는 주어진 구간과 특정한 기간에 맞도록 조정됩니다.

구문
--


```js
var paramRef = param.setValueCurveAtTime(values, startTime, duration);
```

### 매개변수

`values`

명시된 `duration` 을 따라 `AudioParam`이 변화할 값 커브를 나타내는 부동점 number들의 배열. 이 배열에 있는 모든 값은 반드시 유한한 숫자여야 합니다. 만약 값이 `NaN`, `Infinity`, `-Infinity` 라면, `TypeError` 예외가 발생합니다.

`startTime`

`AudioContext`가 처음 생성된 이후 값의 변화가 일어날 시간 (초 단위로 표현됨) 을 나타내는 double. 만약 이 값이 `AudioContext.currentTime` (en-US)보다 작다면, 이 값은 `currentTime` 으로 맞춰집니다.

`duration`

파라미터의 `value` 가 명시된 커브를 따라 변화하는 총 시간 (초 단위로 표현됨) 을 나타내는 double. 명시된 값들은 이 기간을 따라 동일하게 간격이 맞춰집니다.

### 반환 값

이 `AudioParam` 객체에 대한 참조. 이 인터페이스의 몇몇 오래된 브라우저 구현은 `undefined` 를 반환합니다.

### 예외

`InvalidStateError` `DOMException` (en-US)

`values` 의 명시된 배열이 원소를 2개보다 적게 가지고 있을 때 발생됩니다.

`RangeError` `DOMException` (en-US)

명시된 `startTime` 이 음수 혹은 유한하지 않은 값이거나, `duration` 이 유한하지 않고 정확히 양수인 수가 아니면 발생됩니다.

`TypeError` `DOMException` (en-US)

`values` 배열에 있는 값들 중 한 개 이상의 값이 유한하지 않으면 발생됩니다. 유한하지 않은 값이란 `NaN`, `Infinity`, `-Infinity` 입니다.

사용 일람
-----

파라미터의 값이 커브를 따라서 종료되었을 때, 파라미터의 값은 `values` 매개변수에서 명시된 값들의 집합의 마지막 값과 일치하도록 보장됩니다.

**참고:** Web Audio API의 몇몇 이른 구현은 이것이 사실임을
 보장하지 않는데, 이는 예기치 않은 결과를 유발합니다.


예제
--

이 예제는 하나의 버튼을 가진 미디어 소스를 가지고 있습니다 (소스 코드는 webaudio-examples
repo에서 볼 수 있고, 작동 예제도 볼 수 있습니다). 이 버튼이 눌렸을 때, `setValueCurveAtTime()` 이 사용되어 gain 값을 waveArray 배열에 포함된 값들 사이에서 변화시킵니다.


```js
// 오디오 컨텍스트를 생성합니다
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

// 예제를 위한 기본 변수를 설정합니다
var myAudio = document.querySelector("audio");
var pre = document.querySelector("pre");
var myScript = document.querySelector("script");

pre.innerHTML = myScript.innerHTML;

var valueCurve = document.querySelector(".value-curve");

// MediaElementAudioSourceNode를 생성합니다
// HTMLMediaElement를 노드 내로 전달합니다
var source = audioCtx.createMediaElementSource(myAudio);

// gain 노드를 생성하고 gain 값을 0.5로 설정합니다
var gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
var currGain = gainNode.gain.value;

// AudioBufferSourceNode를 gainNode에 연결하고
// gainNode를 destination에 연결합니다
source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// onclick이 발생했을 때 무언가를 하기 위해 버튼을 설정합니다

var waveArray = new Float32Array(9);
waveArray[0] = 0.5;
waveArray[1] = 1;
waveArray[2] = 0.5;
waveArray[3] = 0;
waveArray[4] = 0.5;
waveArray[5] = 1;
waveArray[6] = 0.5;
waveArray[7] = 0;
waveArray[8] = 0.5;

valueCurve.onclick = function () {
  gainNode.gain.setValueCurveAtTime(waveArray, audioCtx.currentTime, 2);
};
```

명세서
---

| Specification |
| --- |
| Web Audio API # dom-audioparam-setvaluecurveattime |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Chrome 46 이전 버전은 선형 보간법 대신 최근린 내삽법을 사용합니다.

같이 보기
-----

* Web Audio API 사용하기
URL.host
========

`URL` 인터페이스의 **`host`** 속성은 URL의 호스트, 즉 `hostname`와 함께, 포트가 존재하는 경우 `':'`과 그 뒤의 `port`를 포함하는 `USVString` 문자열입니다.

**참고:** 이 기능은 Web Worker에서 사용할 수 있습니다

구문
--


```js
const host = url.host;
url.host = newHost;
```

### 값

`USVString`.

예제
--


```js
let url = new URL("https://developer.mozilla.org/ko/docs/Web/API/URL/host");
console.log(url.host); // "developer.mozilla.org"

url = new URL("https://developer.mozilla.org:443/ko/docs/Web/API/URL/host");
console.log(url.host); // "developer.mozilla.org"
// The port number is not included because 443 is the scheme's default port

url = new URL("https://developer.mozilla.org:4097/ko/docs/Web/API/URL/host");
console.log(url.host); // "developer.mozilla.org:4097"
```

명세
--

| Specification |
| --- |
| URL Standard # dom-url-host |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

같이 보기
-----

* 속성이 속한 `URL` 인터페이스.
URL.toJSON()
============

`URL` 인터페이스의 **`toJSON()`** 메서드는 URL을 직렬화한 `USVString`을 반환합니다. 그러나, 사실상 `toString()`과 같습니다..

**참고:** 이 기능은 Web Worker에서 사용할 수 있습니다

구문
--


```js
const href = url.toJSON();
```

### 반환 값

`USVString`.

예제
--


```js
const url = new URL(
  "https://developer.mozilla.org/ko/docs/Web/API/URL/toString",
);
url.toJSON(); // should return the URL as a string
```

명세
--

| Specification |
| --- |
| URL Standard # dom-url-tojson |

브라우저 호환성
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.