Tone.js Tone.BufferSource:未设置或未加载缓冲区

时间:2018-11-07 08:55:04

标签: javascript html5-audio web-audio-api tone.js

Tone.BufferSource:缓冲区未设置或未加载。在try / catch块中发生此错误。仅当我不断或有时随机触发更新功能时才会发生。 发生此错误时,我的音频会暂时关闭。

我的代码背后的逻辑。当程序启动时,创建函数会在创建Tone.sequence的构造函数中调用创建函数,稍后当我更改/更新轨道参数时,我会调用update fution, 这会使用新的/更新的轨道调用循环处理器。但是当我触发触发循环处理器功能的更新时,它会运行到tone.sourcebuffer要么没有设置ir加载。我该如何解决这个问题? 我的代码:

def access():
   l =[]
   conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\GOBOTIX\Desktop\Try.mdb;')
   cursor = conn.cursor()
   cursor.execute('select * from Try')


   for row in cursor.fetchall():
     l.append(row)

1 个答案:

答案 0 :(得分:0)

我最近遇到了这个问题,并找到了适合我情况的解决方案。

当您在函数内部初始化音频缓冲区时,Tone.js不喜欢它(在循环处理器内调用new Tone.Players时的操作)。

要在代码顶部解决此问题,请为所需的每个URL声明一个新的全局变量buffer1 = new Tone.Buffer(url1)。 https://tonejs.github.io/docs/r13/Buffer

然后在循环处理器内部,只需用每个缓冲区和一个名称标签替换url,就不会有任何问题。因此,新的Tone.Players({“ name1”:buffer1,“ name2”:buffer2,...})