BaseAudioContext: createBufferSource() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2021å¹´4æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
createBufferSource() 㯠BaseAudioContext ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ãæ°ãã AudioBufferSourceNode ã使ããããã«ä½¿ç¨ãã¾ãããã㯠AudioBuffer ãªãã¸ã§ã¯ãã«å«ã¾ããé³å£°ãã¼ã¿ãåçããããã«ä½¿ç¨ããã¾ãã AudioBuffer 㯠BaseAudioContext.createBuffer ã§çæããããããé³å£°ãã©ãã¯ã®ãã³ã¼ãã«æåããã¨ãã« BaseAudioContext.decodeAudioData ããè¿ãããããã¾ãã
ã¡ã¢:
AudioBufferSourceNode() ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ã AudioBufferSourceNode ã使ããããã®æ¨å¥¨ãããæ¹æ³ã§ãã AudioNode ã®ä½æãåç
§ãã¦ãã ããã
æ§æ
createBufferSource()
弿°
ãªãã
è¿å¤
AudioBufferSourceNode ã§ãã
ä¾
ãã®ä¾ã§ã¯ã 2 ç§éã®ãããã¡ã¼ã使ãã¦ãã¯ã¤ããã¤ãºã§æºããã AudioBufferSourceNode ã§åçãã¦ãã¾ããã³ã¡ã³ãã§ã¯ãä½ãèµ·ãã£ã¦ããã®ããç°¡åã«èª¬æãã¦ãã¾ãã
ã¡ã¢: ã³ã¼ããã©ã¤ãã§å®è¡ããããã½ã¼ã¹ãé²è¦§ããããããã¨ãã§ãã¾ãã
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
const button = document.querySelector("button");
const pre = document.querySelector("pre");
const myScript = document.querySelector("script");
pre.innerHTML = myScript.innerHTML;
// ã¹ãã¬ãª
const channels = 2;
// AudioContext ã®ãµã³ããªã³ã°ã¬ã¼ãã§ 2 ç§éã®
// 空ã®ã¹ãã¬ãªãããã¡ã¼ãçæãã
const frameCount = audioCtx.sampleRate * 2.0;
const myArrayBuffer = audioCtx.createBuffer(
channels,
frameCount,
audioCtx.sampleRate,
);
button.onclick = () => {
// ãããã¡ã¼ã«ãã¯ã¤ããã¤ãºãæ¸ãè¾¼ã
// -1.0 ãã 1.0 ã®éã®ä¹±æ°ã®å¤
for (let channel = 0; channel < channels; channel++) {
// å®éã®ãã¼ã¿ã®é
åãå¾ã
const nowBuffering = myArrayBuffer.getChannelData(channel);
for (let i = 0; i < frameCount; i++) {
// Math.random() 㯠[0; 1.0] ã§ãã
// é³å£°ã¯ [-1.0; 1.0] ã§ããå¿
è¦ããã
nowBuffering[i] = Math.random() * 2 - 1;
}
}
// AudioBufferSourceNode ãå¾ã
// ãã㯠AudioBuffer ãåçããã¨ãã«ä½¿ã AudioNode ã§ãã
const source = audioCtx.createBufferSource();
// AudioBufferSourceNode ã«ãããã¡ã¼ãè¨å®ãã
source.buffer = myArrayBuffer;
// AudioBufferSourceNode ãåºåå
ã«æ¥ç¶ããã¨
// é³å£°ãèãããããã«ãªã
source.connect(audioCtx.destination);
// 鳿ºã®åçãå§ãã
source.start();
};
仿§æ¸
| 仿§æ¸ |
|---|
| Web Audio API > # dom-baseaudiocontext-createbuffersource > |