网络音频 api 以不同的速率播放嘟嘟声、嘟嘟声、...嘟嘟声

2023-12-19

我试图根据浏览器窗口内的一些传感器读数以不同的速率播放“嘟嘟”声。

这个想法是当传感器读数高时更快地“嘟嘟,嘟嘟,嘟……嘟”,当传感器读数低时更慢地“嘟,……嘟”,所有这些都是实时的。

传感器读数通过 socket.io 输入浏览器。我已经可以控制进度条上下移动了。音频反馈是一项额外功能。

经过一番谷歌搜索后,我正在考虑使用网络音频 api,创建一个正弦波振荡器,并通过增益节点连接/断开来打开/关闭它。

我的问题是如何以正确的方式控制计时,假设我试图以 1 Hz 到 20 Hz 的频率范围发出蜂鸣声,并且能够动态更改频率。


我最特别的是不会通过连接和断开振荡器来打开和关闭它 - 你必须从主线程执行此操作,因此不是超级可预测的。

实际上,您可以使用调制低频振荡器来做到这一点:查看以下代码:

var context = new AudioContext();

//defaults to A440Hz, sine wave
var src = context.createOscillator();

// Now let's create a modulator to turn beeps on and off
var mod = context.createOscillator();
mod.type="square";
mod.frequency.value = "2";  // Start at 2Hz

var gain = context.createGain();
var scaler = context.createGain();

src.connect(gain);
gain.connect(context.destination);

mod.connect(scaler); // Mod signal is [-1,1]
scaler.gain.value = 0.5; // we need it to be [-0.5,0.5]
gain.gain.value = 0.5; // then it's summed with 0.5, so [0,1]
scaler.connect(gain.gain);

//start it up
src.start(0);
mod.start(0);

// to change rate, change mod.frequency.value to desired frequency
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络音频 api 以不同的速率播放嘟嘟声、嘟嘟声、...嘟嘟声 的相关文章

随机推荐

  • 使用 Sed 将旧时间戳替换为当前时间戳

    我想使用 Sed 在 template php 文件中查找 JS 文件名称的 unix 时间戳部分 并将其替换为当前时间戳 旧时间戳会有所不同 因此我需要一个正则表达式来匹配数字 这是我到目前为止所拥有的 TimPeterson curre
  • C# 中修饰符的顺序有约定吗?

    如果我要使用多个修饰符关键字 我应该按什么顺序使用 例如 public private protected virtual abstract override new static internal sealed 以及我忘记的任何其他人 我
  • 为什么 OpenXML 读取行两次

    我计算两个工作表中的行数 如下所示 foreach WorksheetPart worksheetPart in workbookPart WorksheetParts OpenXmlPartReader reader new OpenXm
  • 当 selectedItem 为 null 时,在 Combobox 中显示“选择一项”

    我有一个绑定到 viewModel 对象列表的 WPF 组合框 最初 SelectedItem 为空 因此组合框显示为空白 当所选项目为空时 我希望组合框显示 选择项目 以引导用户从组合框中选择某些内容 有点像这样 一些文本框包含灰色文本
  • Flexbox 中的行换行中心对齐

    目前 我正在尝试使用 Flexbox 将列居中 但当我调整浏览器大小时 它会粘在左侧 我尝试过调整内容中心和对齐项目中心 但我可能没有将它们放在正确的位置 如果有人知道如何解决这个问题 将不胜感激 谢谢你 wrap display flex
  • 无法完成交付

    我在尝试完成已发布的交付时收到以下错误 我可以从目标网站做些什么吗 cleartool Error Unable to check out vobs amit sumit lost found pcs i ltf odfc set sftp
  • 如何使用 javaparser 获取类级别变量声明?

    我只想获取类级别的变量声明 如何使用 javaparser 获取声明 public class Login private Keyword browser private String pageTitle Login 使用javaparse
  • 为 GridView 添加捏缩放功能

    我需要为该 gridview 添加捏缩放 我没有找到任何有关在 gridview 中添加捏缩放的示例 到目前为止 我的布局如下所示 我需要向该 gridview 添加捏缩放 活动 main xml
  • 张量流中的CUDA_ERROR_OUT_OF_MEMORY

    当我开始训练一些神经网络时 它满足了CUDA ERROR OUT OF MEMORY但训练可以继续进行 不会出现错误 因为我想根据实际需要使用GPU内存 所以我设置了gpu options allow growth True 日志如下 I
  • 如何超链接到 .ppt 文件的特定幻灯片?

    我想链接到在线 PowerPoint 文件中的特定幻灯片 例如http www example com hello ppt 但我想要的是 当人们点击我的链接时 它会直接转到第 n 张幻灯片 这可能吗 Link to http www wha
  • html2canvas 不渲染 CDN 图像

    我正在尝试使用 html2canvas 获取屏幕截图 它对于文本工作正常 但它不渲染 CDN 图像 如果我在服务器中托管图像 它工作正常 但如果尝试从 CDN 链接加载图像 则这些图像不会渲染 我的代码是 索引 php div img sr
  • 从 Android 应用程序共享图像

    我正在尝试分享我的 Android 应用程序中的图像 我正在尝试将其作为电子邮件附件以及 WhatsApp 上的照片发送 代码是 String imageUrl Path to image eg sdcard pictures image1
  • 在 Django 数据库中存储整数数组

    在 django 数据库中存储整数数组的最佳方法是什么 我正在使用数组字段 https docs djangoproject com en 2 1 ref contrib postgres fields querying arrayfiel
  • Python,argparse:如何使 nargs=2 与 type=str 和 type=int

    我花了一些时间在 argparse 文档上 但我仍然在为我的程序中的一个选项使用这个模块而苦苦挣扎 parser add argument r rmsd dest rmsd nargs 2 help extract the poses th
  • Vagrant 配置错误 - “必须指定一个框。”

    盒子工作得很好 然后我停止了其中一个 当时唯一一个正在运行的 现在我无法让它们中的任何一个恢复 Running vagrant up name 给我以下错误 无论我选择哪个或是否将其保留在vagrant up让他们俩都出现 There ar
  • 头文件中的 Lambda 错误

    在我的一堂课上 我尝试使用std priority queue与指定的 lambda 进行比较 pragma once include
  • 将变量注入回调函数作用域

    是否可以将变量添加到回调范围 我想要实现的是 Foo prototype bar function fn var baz baz fn call this Foo bar function console log baz gives baz
  • 如何异步使用“WinHttp.WinHttpRequest.5.1”?

    代码 var WinHttpReq OleVariant procedure TForm1 Button1Click Sender TObject begin WinHttpReq CreateOleObject WinHttp WinHt
  • 在wxPython中查找文本大小的正确方法

    我正在使用 wxPython 开发一个应用程序 该应用程序的一部分在网格中创建大量 TextCtrl 以便为任意大的人员列表输入一周中的每一天的四字母代码 我已经设法让它发挥作用 但我不得不做一些笨拙的事情 具体来说 我还没有找到一种好的方
  • 网络音频 api 以不同的速率播放嘟嘟声、嘟嘟声、...嘟嘟声

    我试图根据浏览器窗口内的一些传感器读数以不同的速率播放 嘟嘟 声 这个想法是当传感器读数高时更快地 嘟嘟 嘟嘟 嘟 嘟 当传感器读数低时更慢地 嘟 嘟 所有这些都是实时的 传感器读数通过 socket io 输入浏览器 我已经可以控制进度条