Baseline Widely available
decodeAudioData()
㯠BaseAudioContext
ã®ã¡ã½ããã§ã ArrayBuffer
ã«æ¸ãè¾¼ã¾ããé³å£°ãã¡ã¤ã«ãã¼ã¿ãéåæã«ãã³ã¼ãããããã«ä½¿ç¨ããã¾ãããã®å ´åãArrayBuffer
㯠fetch()
ãXMLHttpRequest
ãFileReader
ãªã©ããèªã¿è¾¼ã¾ãã¾ãããã³ã¼ãããã AudioBuffer
㯠AudioContext
ã®ãµã³ããªã³ã°ã¬ã¼ãã«ãªãµã³ããªã³ã°ãããã³ã¼ã«ããã¯ããããã¹ã«æ¸¡ããã¾ãã
ãã®æ¹æ³ã¯ããªã¼ãã£ãªãã©ãã¯ããã¦ã§ããªã¼ãã£ãª API ç¨ã®ãªã¼ãã£ãªã½ã¼ã¹ã使ããéã«æ¨å¥¨ãããæ¹æ³ã§ãããã®æ¹æ³ã¯ãé³å£°ãã¡ã¤ã«ã®æççãªãã¼ã¿ã§ã¯ãªããå®å ¨ãªãã¡ã¤ã«ãã¼ã¿ã«å¯¾ãã¦ã®ã¿åä½ãã¾ãã
ãã®é¢æ°ã¯ãé³å£°ãã¼ã¿ãã¨ã©ã¼ã¡ãã»ã¼ã¸ãéåæã«è¿ã 2 ã¤ã®æ¹æ³ãå®è£
ãã¦ãã¾ããé³å£°ãã¼ã¿ã§å±¥è¡ããã Promise
ãè¿ããæåã失æãå¦çããã³ã¼ã«ããã¯å¼æ°ãåãå
¥ãã¾ãããã®é¢æ°ã¨ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ä¸»ãªã¡ã½ãã㯠Promise ã®è¿å¤ã§ãã³ã¼ã«ããã¯å¼æ°ã¯å¤ãçç±ããæå®ããããã®ã§ãã
// å¤ãã³ã¼ã«ããã¯ã®æ§æ:
decodeAudioData(arrayBuffer)
// æ°ãããããã¹ãã¼ã¹ã®æ§æ:
decodeAudioData(arrayBuffer, successCallback)
decodeAudioData(arrayBuffer, successCallback, errorCallback)
弿°
arrayBuffer
ãã³ã¼ãããé³å£°ãã¼ã¿ãå
¥ã£ã ArrayBuffer ã§ããé常㯠fetch()
ãXMLHttpRequest
ãFileReader
ããåå¾ãã¾ãã
successCallback
çç¥å¯
ãã³ã¼ããå®äºããã¨å¼ã³åºãããã³ã¼ã«ããã¯é¢æ°ã§ãããã®ã³ã¼ã«ããã¯ã®å¼æ°ã¯ 1 ã¤ã§ã AudioBuffer
ã§ãã decodedData ï¼ãã³ã¼ãããã PCM é³å£°ãã¼ã¿ï¼ã表ãã¾ããé常ã¯ããã³ã¼ãããããã¼ã¿ã AudioBufferSourceNode
ã«å
¥ãã¦ãããããåçãããã好ããªããã«æä½ããããããã¨ãã§ãã¾ãã
errorCallback
çç¥å¯
ä»»æã®ã¨ã©ã¼ã³ã¼ã«ããã¯ã§ãé³å£°ãã¼ã¿ã®ãã³ã¼ãã§ã¨ã©ã¼ãçºçããã¨å¼ã³åºããã¾ãã
decodedData ã§å±¥è¡ããã Promise
ãªãã¸ã§ã¯ãã§ããXHR æ§æãç¨ããå ´åã¯ããã®è¿å¤ãç¡è¦ãã代ããã«ã³ã¼ã«ããã¯é¢æ°ã使ç¨ãã¦ãã ããã
ããã§ã¯æåã«ãããã¹ãã¼ã¹ã®æ§æããæ¬¡ã«ã³ã¼ã«ããã¯ã®æ§æãåãä¸ãã¾ãã
ãããã¹ãã¼ã¹ã®æ§æãã®ä¾ã§ã¯ã loadAudio()
㯠fetch()
ã使ç¨ãã¦é³å£°ãã¡ã¤ã«ãåå¾ããããã AudioBuffer
ã«ãã³ã¼ããã¾ããããã¦ãå¾ã§åçã§ããããã« audioBuffer
ãã°ãã¼ãã«å¤æ° buffer
ã«ãã£ãã·ã¥ãã¾ãã
ã¡ã¢: å®å ¨ãªä¾ãã©ã¤ãã§å®è¡ããããã½ã¼ã¹ã表示ããããããã¨ãã§ãã¾ãã
let audioCtx;
let buffer;
let source;
async function loadAudio() {
try {
// Load an audio file
const response = await fetch("viper.mp3");
// Decode it
buffer = await audioCtx.decodeAudioData(await response.arrayBuffer());
} catch (err) {
console.error(`Unable to fetch the audio file. Error: ${err.message}`);
}
}
ã³ã¼ã«ããã¯ã®æ§æ
ãã®ä¾ã§ã¯ loadAudio()
㯠fetch()
ãç¨ãã¦é³å£°ãã¡ã¤ã«ãåå¾ããã³ã¼ã«ããã¯ãã¼ã¹ã® decodeAudioData()
ãç¨ã㦠AudioBuffer
ã«ãã³ã¼ããã¾ããã³ã¼ã«ããã¯ã§ã¯ããã³ã¼ããããããã¡ã¼ãåçããã¾ãã
ã¡ã¢: å®å ¨ãªä¾ãã©ã¤ãã§å®è¡ããããã½ã¼ã¹ã表示ããããããã¨ãã§ãã¾ãã
let audioCtx;
let source;
function playBuffer(buffer) {
source = audioCtx.createBufferSource();
source.buffer = buffer;
source.connect(audioCtx.destination);
source.loop = true;
source.start();
}
async function loadAudio() {
try {
// Load an audio file
const response = await fetch("viper.mp3");
// Decode it
audioCtx.decodeAudioData(await response.arrayBuffer(), playBuffer);
} catch (err) {
console.error(`Unable to fetch the audio file. Error: ${err.message}`);
}
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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