网络音频启动和停止振荡器然后再次启动

2023-11-27

我正在尝试启动和停止声音。那行得通。但我无法再次启动声音。

我真的需要再次制作另一个振荡器吗?这看起来非常不直观。一定会有更好的办法。

这就是我所拥有的一切:

oscillator1.noteOn(0);
oscillator1.noteOff(0);

再次调用 note On 不会执行任何操作。为什么?超出了我的范围。

我还尝试将音量或网络音频人员的“增益”设置为零。但由于某种原因,零增益会发出声音。多大的增益不会发出任何声音?

伙计,我不敢相信这有多困难:/


实际上,是的,您必须创建一个新的振荡器节点。 API 经过设计和优化以适应该模式。

道家代码中的断开模式基本上是一种创建新振荡器的复杂方式(每次运行 oscOn 时都会这样做)。它从未在断开连接的旧振荡器上显式调用 noteOff,因此它可能仍在后台运行(不确定网络音频如何处理此问题),但由于它与音频链断开连接所以听不到它的声音。因此,它可能会在后台堆叠正在运行并耗尽 CPU 的振荡器。

Here's the same code, though using noteOff() properly. http://codepen.io/Theodeus/pen/afgqk

Here's the same code, though adapted using the gain node to control the oscillator and thus only using the same oscillator all the time (though this is not recommended, better to create a new oscillator for each note, I think) http://codepen.io/Theodeus/pen/aKFje

2015年4月编辑
由于代码示例似乎在网络空间中丢失,因此这是我编写的关于振荡器的教程,其中包含显示振荡器一次性性质的代码示例。它与上面引用的代码并不完全相同,但它显示了相同的概念。http://codepen.io/Theodeus/blog/web-audio-synth-part-1-generate-sound- 其要点是这样的:

//This won't work. Can't call play twice.
var context = new AudioContext(),
    oscillator = context.createOscillator();

oscillator.connect(context.destination);
oscillator.start(context.currentTime);
oscillator.stop(context.currentTime + 0.5);
oscillator.start(context.currentTime + 1);
oscillator.stop(context.currentTime + 1.5);


//this will work!
var context = new AudioContext(),
    oscillator;

function playOscillator(startTime, endTime) {
    oscillator = context.createOscillator();
    oscillator.connect(context.destination);
    oscillator.start(startTime);
    oscillator.stop(endTime);
}

playOscillator(context.currentTime, context.currentTime + 0.5);
playOscillator(context.currentTime + 1, context.currentTime + 1.5);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络音频启动和停止振荡器然后再次启动 的相关文章

随机推荐

  • 使用 Python xlib 在活动 X 窗口发生更改时获取通知

    我想监视运行 X 的 Linux 系统上哪个窗口处于活动状态 以及该活动窗口何时调整大小或移动 我可以监视活动窗口 它位于 NET ACTIVE WINDOW根窗口上的属性 我可以注册PropertyNotify根窗口上的事件以发现该属性何
  • javascript仅打印特定

    我尝试过javascriptwindow print 它打印整页内容 包括页面上的打印按钮 您需要创建新的样式表 print css 并设置CSS media print 例如 欲了解更多详情 使用 CSS 打印文档
  • React-Router v4:无法读取未定义的属性“路由”

    我想在按下按钮时重定向 所以我使用了withRouter获取历史道具的访问权限 但我收到错误 Uncaught TypeError Cannot read property route of undefined at Route compu
  • 查找 java.net.SocketException:没有可用的缓冲区空间

    嗨 我有一个非常丑陋的问题 java net SocketException 没有可用的缓冲区空间 已达到最大连接数 它是客户端 服务器应用程序 客户端是Windows XP SP2 32b 有两个网卡核心双核 Java 1 6 u7 应用
  • 通过相关模型 django 进行过滤

    如何通过相关模型生成query set 例如 我该怎么做 UserProfile objects filter user is active True Can t use user is active to filter 琐碎的问题 琐碎的
  • 使用 Java 8 可选的 Mapstruct

    我有这两门课 public class CustomerEntity Id GeneratedValue strategy GenerationType IDENTITY private long id private String fir
  • SQL Server 2008 R2 Varbinary 最大大小

    在 SQL Server 2008 R2 中使用 varbinary max 可以插入的文件的最大大小是多少 我试图将列中的最大值更改为超过 8 000 字节 但它不允许我这样做 所以我猜测最大值是 8 000 字节 但是从MSDN 上的这
  • launch4j exe本身没什么可说的,有人有建议吗?

    在Linux上运行 我使用launch4j来打包一个exe 我将 exe 复制到我的 Windows 7 VM 中并运行它 但什么也没发生 我用 l4j debug 运行它 但仍然没有任何反应 至少 如果有日志文件 我找不到它 我在这里缺少
  • 包不需要与 java 文件所在的子目录匹配吗?

    今天早上我正在为我的 java 认证编写一些练习程序 并注意到我输错了一个包名称 因此它与 java 文件所在的子目录不匹配 我编译了代码 预计会出现错误 但所有内容都编译了文件 甚至没有警告 我用谷歌搜索了一下 我读到的大多数页面都说包名
  • flutter web 的 http 请求被 Cors 策略阻止

    我有一个 Android Ios 和 Web 应用程序 使用 php 作为后端 所有 Api 在 android 和 ios 中都工作正常 但在 web 中抛出 CORS 错误 出现这样的错误 从源 http localhost 49168
  • Visual Studio 2013 安装 microsoft.net Framework 4.51 时出错

    我在安装 vs 2013 时遇到问题 下图显示了错误 我在 Google 上进行了大量研究 发现在 Windows 8 1 上 net Framework 4 5 1 现在已经成为操作系统的一部分 当 VS 2013 尝试安装 net Fr
  • 如何避免 nginx 在用作代理(proxy_pass)时用空格替换 %20 ?

    我使用 nginx 作为 apache 服务器的代理 这是我的配置 location subsite proxy pass http 127 0 0 1 subsite 1 query string 问题是 如果我发送带有 20 的请求 例
  • iPhone:通过本地通知增加应用程序徽章

    当应用程序未运行时 是否可以通过本地通知增加应用程序徽章 我知道如何设置徽章 但还没有找到任何方法来增加这个值 localNotification applicationIconBadgeNumber 23 Update 我找到了一个 远非
  • Oracle SQL 获取第 n 个元素正则表达式

    我正在尝试使用 Oracle 中的 SQL 获取逗号分隔字符串中的第 n 个元素 到目前为止我有以下 SELECT regexp substr 100016154 5101884LT00001 10000001089210000001265
  • WCF 自定义 Http 代理身份验证

    是否可以为 WCF 提供自定义代理地址和自定义凭据 我在 stackoverflow 上找到了这个答案 如何使用生成的 WCF 客户端的凭据设置代理 但我遇到了一个复杂的问题 我要进行身份验证的服务使用自己的身份验证 因此我必须使用两组凭据
  • Azure Ad b2c:通过邀请添加新成员用户

    我有一个Azure 广告 B2C在 Azure 上运行 我想在 B2C 中创建带有邀请的用户 我尝试创建来宾用户 但该用户无法登录 因为该用户是作为 B2B 用户创建的 我也尝试过手动添加用户 但我无法添加自己的域 例如 电子邮件受保护 但
  • Json.net 反序列化具有非字符串键类型的嵌套字典

    我正在使用 Json NET 反序列化一个对象 其中包含具有自定义 非字符串 键类型的嵌套字典 这是我正在尝试做的事情的示例 public interface IInterface String Name get set public cl
  • javascript - 比较不同格式的日期

    我有两个日期 我需要比较它们 看看其中一个是否大于另一个 但它们的格式不同 我不确定比较两个日期的最佳方法 格式为 1381308375118 这是 var futureDate 这是由创建的 var today new Date toda
  • 如何从自定义按钮调用数据表 csv 按钮

    需要从我的自定义按钮调用 csv 按钮
  • 网络音频启动和停止振荡器然后再次启动

    我正在尝试启动和停止声音 那行得通 但我无法再次启动声音 我真的需要再次制作另一个振荡器吗 这看起来非常不直观 一定会有更好的办法 这就是我所拥有的一切 oscillator1 noteOn 0 oscillator1 noteOff 0