Web Audio API 如何命名声音

Posted

技术标签:

【中文标题】Web Audio API 如何命名声音【英文标题】:Web Audio API how to name sounds 【发布时间】:2014-10-31 16:51:01 【问题描述】:

因此,此时将两个声音加载到缓冲区中,然后将其连接到两个源。如何将 BufferLoader 中的两个声音命名为“kick”和“hihat”,然后使用 kick.start(0) 播放它们。我知道这一定很容易,但我无法通过搜索找到任何东西。

window.onload = init;
var context = new AudioContext();
var bufferLoader;

function init() 

  bufferLoader = new BufferLoader(
    context,
    [
      'kick.wav',
      'hihat.wav',
    ],
    finishedLoading
    );

  bufferLoader.load();


function finishedLoading(bufferList) 

  var source1 = context.createBufferSource();
  var source2 = context.createBufferSource();
  source1.buffer = bufferList[0];
  source2.buffer = bufferList[1];

  source1.connect(context.destination);
  source2.connect(context.destination);
  source1.start(0);
  source2.start(0);
    

【问题讨论】:

【参考方案1】:

如果你喜欢,你可以使用我为自己写的抽象:

function audioFileLoader(fileDirectory) 
    var soundObj = ;
    soundObj.fileDirectory = fileDirectory;

    var getSound = new XMLHttpRequest();
    getSound.open("GET", soundObj.fileDirectory, true);
    getSound.responseType = "arraybuffer";
    getSound.onload = function() 
        audioContext.decodeAudioData(getSound.response, function(buffer) 
            soundObj.soundToPlay = buffer;

        );
    

    getSound.send();


    soundObj.play = function() 
        var playSound = audioContext.createBufferSource();
        playSound.buffer = soundObj.soundToPlay;
        playSound.connect(audioContext.destination)
        playSound.start(audioContext.currentTime)
    

    return soundObj;

;

var snare = audioFileLoader("snare.mp3");


snare.play()

【讨论】:

以上是关于Web Audio API 如何命名声音的主要内容,如果未能解决你的问题,请参考以下文章

暂停 Web Audio API 声音播放

如何使用 Web Audio API 移动/调制音频缓冲频率

使用 Web Audio API 为声音的开头添加静音 [关闭]

WEB AUDIO API 产生雨水噼啪声

Web Audio API:将 mp3 声音流合并到一个文件并在 <audio> 标签中播放

Web Audio API - 获取正确的频率