鿍奍;: ãã®æ©è½ã¯éæ¨å¥¨ã«ãªãã¾ãããã¾ã 対å¿ãã¦ãããã©ã¦ã¶ã¼ãããããããã¾ãããããã§ã«é¢é£ããã¦ã§ãæ¨æºããåé¤ããã¦ããããåé¤ã®æç¶ãä¸ã§ããããäºææ§ã®ããã ãã«æ®ããã¦ããå¯è½æ§ãããã¾ãã使ç¨ãé¿ããã§ããã°æ¢åã®ã³ã¼ãã¯æ´æ°ãã¦ãã ããããã®ãã¼ã¸ã®ä¸é¨ã«ããäºææ§ä¸è¦§è¡¨ãè¦ã¦å¤æãã¦ãã ããããã®æ©è½ã¯çªç¶åä½ããªããªãå¯è½æ§ããããã¨ã«æ³¨æãã¦ãã ããã
ScriptProcessorNode
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã® audioprocess
ã¤ãã³ãã¯ãã¹ã¯ãªããããã»ããµã¼ã®å
¥åãããã¡ã¼ãå¦çãããæºåãã§ããæçºç«ãã¾ãã
ã¡ã¢: ãã®æ©è½ã¯ AudioWorklets ããã³ AudioWorkletNode
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ç½®ãæãããã¾ããã
ãã®ã¤ãã³ãã¯ãã£ã³ã»ã«ä¸å¯ã§ãããã«ãã¾ããã
ã¤ãã³ãå ã¤ãã³ãããããã£è¦ªã® Event
ããç¶æ¿ããããããã£ãå®è£
ãã¦ãã¾ãã
playbackTime
èªåå°ç¨
é³å£°ãåçãããæéã表ã double
ã®å¤ã§ããAudioContext.currentTime
ã®æéã¨ãã¦å®ç¾©ããã¾ãã
inputBuffer
èªåå°ç¨
å¦ç対象ã®å
¥åé³å£°ãã¼ã¿ãæ ¼ç´ããããããã¡ã¼ã® AudioBuffer
ã§ãã ãã£ã³ãã«æ°ã¯ãã¡ã¯ããªã¼ã¡ã½ãã AudioContext.createScriptProcessor()
ã®å¼æ° numberOfInputChannels
ã§æå®ããæ°ã§ãã è¿ããã AudioBuffer
ã¯ã¤ãã³ããã³ãã©ã¼ã®ã¹ã³ã¼ãã§ã®ã¿æå¹ã§ãããã¨ã«æ³¨æãã¦ãã ããã
outputBuffer
èªåå°ç¨
åºåé³å£°ãã¼ã¿ãæ ¼ç´ããå
ã§ãããããã¡ã¼ã® AudioBuffer
ã§ãã ãã£ã³ãã«æ°ã¯ãã¡ã¯ããªã¼ã¡ã½ãã AudioContext.createScriptProcessor()
ã®å¼æ° numberOfOutputChannels
ã§æå®ããæ°ã§ãã è¿ããã AudioBuffer
ã¯ã¤ãã³ããã³ãã©ã¼ã®ã¹ã³ã¼ãã§ã®ã¿æå¹ã§ãããã¨ã«æ³¨æãã¦ãã ããã
scriptNode.addEventListener("audioprocess", (audioProcessingEvent) => {
// å
¥åãããã¡ã¼ã¯ãåã«èªã¿è¾¼ãã æã§ã
const inputBuffer = audioProcessingEvent.inputBuffer;
// åºåãããã¡ã¼ã«ã¯ã夿´ããã¦åçããããµã³ãã«ãå
¥ãã¾ã
const outputBuffer = audioProcessingEvent.outputBuffer;
// åºåã®åãã£ã³ãã«ã«ã¤ãã¦ã«ã¼ããã¾ã (ä»å㯠1 åã®ã¿)
for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
const inputData = inputBuffer.getChannelData(channel);
const outputData = outputBuffer.getChannelData(channel);
// 4096 åã®ãµã³ãã«ã«ã¤ãã¦ã«ã¼ããã¾ã
for (let sample = 0; sample < inputBuffer.length; sample++) {
// åºåãå
¥åã¨åãã«ãã¾ã
outputData[sample] = inputData[sample];
// åºåã®åãµã³ãã«ã«ãã¤ãºãå ãã¾ã
outputData[sample] += (Math.random() * 2 - 1) * 0.2;
}
}
});
ã¤ãã³ããã³ãã©ã¼ã onaudioprocess
ããããã£ãç¨ãã¦è¨å®ãããã¨ãã§ãã¾ãã
scriptNode.onaudioprocess = (audioProcessingEvent) => {
// ...
};
仿§æ¸
2014 å¹´ 8 æ 29 æ¥ã® Web Audio API specification ã®çºè¡ä»¥éããã®æ©è½ã¯éæ¨å¥¨ã«ãªãã¾ããããã®æ©è½ã¯æ¨æºåãæ¤è¨ããã¦ãã¾ããã
ãã®æ©è½ã¯ AudioWorklets ããã³ AudioWorkletNode
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ç½®ãæãããã¾ããã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4