问题标签 [metronome]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
62 浏览

ios - AKMetronomeSampler 延迟

我正在制作节拍器应用程序并使用AKSamplerMetronome类。我使用 Ableton 链接在设备之间进行了同步,以便它们可以一起玩。我开始播放,一段时间后设备上的声音开始延迟,几分钟后我可以清楚地听到它。

事情是节拍计数正确同步,但来自手机的声音却不是。

此错误并非在所有设备上,在其中一些设备上运行良好,没有延迟。

为了同步,我setBeatTime在开始时调用一次

有什么建议吗?

如果我创建 AKSamplerMetronome 的实例,等待几分钟然后播放,声音会立即不同步。

0 投票
1 回答
340 浏览

flutter - 在 Timer.periodic 仍在运行时加速它

我是编程和颤振的新手,我只是被困住了。

我想建立一个可以以固定间隔加速的节拍器。例如,每 5 秒,计时器每分钟加快 10 次。

我使用 Timer.periodic 编写了基本节拍器;现在,我认为使用新的 Timer.periodic 每 5 秒加速前一个计时器可以工作,实际上我不知道它是否有效。

如果我取消定时器的前一个实例,修改持续时间,并启动一个新的定时器,我可以听到间隙,然后它是异步的。有没有更简单的方法可以在它仍在运行时对其进行修改?还是有其他方法?

0 投票
1 回答
202 浏览

swift - AudioKit AKMetronome 回调时间似乎不精确或量化

我是 AudioKit 和一般数字音频的新手,所以我确信一定有我遗漏的东西。

我试图通过获取每个回调的时间戳来从 AKMetronome 获得精确的时间。不过,时间似乎以某种方式被量化了,我不知道它是什么。

示例:如果我的节拍器设置为 120,则每个回调应该恰好相隔 0.5 秒。但是,如果我计算从一个滴答声到下一个滴答声的差异,我会得到:

0.49145491666786256

0.49166241666534916

0.5104563333334227

0.4917322500004957

0.5104953749978449

0.49178879166720435

0.5103940000008151

0.4916401666669117

它始终是 2 个值之一,误差范围非常小。我希望能够计算下一个滴答声何时到来,这样我就可以提前几帧触发动画,但这很困难。我忽略了什么吗?

编辑:自从我最初发布这个问题以来,我想出了一个解决方案,但我不确定它是唯一还是最好的解决方案。

我使用将缓冲区设置为最小大小AKSettings.BufferLength.veryShort

使用最小的缓冲区,时间戳总是在一两毫秒内打开。我仍然不确定我是否做对了,或者这是否是AKCallback. 即使缓冲区更长,回调似乎也应该准时。

0 投票
1 回答
57 浏览

java - 每个 ASCII 钟声之间是否有默认间隔?

这是一个在 Bash 中使用 ASCII bell 的简单节拍器脚本。

我遇到的错误:

当速度设置为超过 60 时,节拍器脚本最初将始终以 120BPM 启动,并且只有在我通过按随机键中断它后才快速或慢速更新到正确的速度。

我也在Java中尝试过,遇到了同样的问题。

钟声之间是否设置了系统默认间隔时间?我中断线程/作业后它如何改变速度?

0 投票
0 回答
302 浏览

flutter - Flutter Audioplayers 声音播放延迟

我想使用 quiver async 中的节拍器类和 audioplayers 包在 Flutter 中编写一个节拍器应用程序。但是,来自音频播放器的点击声音总是延迟播放。有时有几个小节没有声音,然后是一个小节,所有错过的点击都会同时播放。听起来节拍器正在随机加速、减速或暂停。使用时的时机要好得多

而不是 Audioplayer(尽管声音在较高的节奏下仍然略有延迟)。

下面是 FloatingActionButton 小部件的相关代码片段(按下时,_play 函数被执行;_cacheAudio 函数被更早地执行):

我该怎么做才能使声音准确地以所需的间隔播放?

谢谢你的帮助。

0 投票
0 回答
94 浏览

ios - Swift:如何在节拍器中计算正确的调度时间

我正在我的应用程序中开发节拍器,我想实现一个功能,节拍器可以在特定时间改变它的速度。例如,以速度 = 120 bpm 播放 4 个小节,然后以速度 = 200 bpm 播放 8 个小节,然后回到 120 bpm。

我尝试使用AudioKit中的 AKMetronome 并使用DispatchQueue.main.asyncAfter更新速度。然而,节奏有点偏离并且有明显的滞后。计算错误还是我遗漏了什么?

0 投票
1 回答
201 浏览

python - 有哪些方法可以改进我用 Python 编写的节拍器?

我正在尝试使用 librosa 和 sounddevice 编写一个基于 python 的节拍器,但我遇到了一些准确性问题。这是代码:

首先,正常运作的节拍器的上限似乎在 180bpm 左右——如果你将 bpm 设置为高于 200bpm,那么就不会产生声音。在较慢的节奏中,我可以听到节拍器与咔嗒声之间的间距不太一致。我已经运行了这个主题的脚本,与这个答案的作者相比,我的结果相当糟糕(它使用“旧的单核 32 位 2GHz 机器”而不是我的六核 3.9GHz 64 位 Windows 运行):

所以我想知道我的节拍器问题是否与这些糟糕的结果有关,以及我能做些什么来解决它。我遇到的第二个问题是节拍器关闭的方式 - 我希望它一直运行到用户输入特定按钮,或者在我的情况下(无 GUI)从键盘输入特定值 -让我们说空格键。所以你现在可以看到它只适用于 ctrl + c,但我不知道如何用指定的键实现中断。

0 投票
1 回答
90 浏览

audio - 在哪里可以找到编写体面的节拍器应用程序的资源?

最近我一直在试图弄清楚如何编写节拍器应用程序,但是我在操作系统时间控制(例如调用函数)或显着不准确的起始检测算法(我使用过 librosa)方面遇到了许多困难,而且似乎是一个相当复杂的话题。然而由于某种原因,我对专业节拍器应用程序源代码/教程/书籍等主题的研究没有成功......网络似乎充满了不符合现代节拍器应用程序的业余示例和解决方案(例如 Frozenapes iOS Tempo 应用程序)标准。例如,当调用某个速度时使用预先录制的 .wav 样本的节拍器(因此应用程序中存储了 30 到 300 bpm 之间的所有速度)。如果用户想在节拍器工作时改变速度,这种解决方案似乎有点死胡同。总而言之-我正在寻找任何带有代码/文本/whatev的专业资源,这不是面向数学毕业生的2000页信号处理书籍,并且可以帮助我设计具有一些录音功能的体面节拍器。

0 投票
2 回答
249 浏览

swift - 计时问题:节拍器使用 AVAudioEngine scheduleBuffer 的完成处理程序

我想使用具有以下功能的 AVAudioEngine 构建一个简单的节拍器应用程序:

  • 可靠的时机(我知道,我知道,我应该使用音频单元,但我仍在为核心音频的东西/Obj-C 包装器等而苦苦挣扎)
  • 小节的“1”和节拍“2”/“3”/“4”上有两种不同的声音。
  • 某种需要与音频同步的视觉反馈(至少是当前节拍的显示)。

所以我创建了两个短点击声音(26ms / 1150 个样本 @ 16 位 / 44,1 kHz / 立体声 wav 文件)并将它们加载到 2 个缓冲区中。它们的长度将设置为代表一个时期。

我的 UI 设置很简单:一个切换开始/暂停的按钮和一个显示当前节拍的标签(我的“计数器”变量)。

当使用 scheduleBuffer 的循环属性时,时间是可以的,但是因为我需要有 2 种不同的声音和一种在循环点击时同步/更新我的 UI 的方法,所以我不能使用它。我想出使用 completionHandler 来代替它重新启动我的 playClickLoop() 函数 - 请参阅下面附上的我的代码。

不幸的是,在实现这一点时,我并没有真正测量时间的准确性。事实证明,将 bpm 设置为 120 时,它仅以大约 117.5 bpm 的速度播放循环 - 相当稳定但仍然太慢。当 bpm 设置为 180 时,我的应用程序以大约 172.3 bpm 的速度播放。

这里发生了什么?这种延迟是通过使用 completionHandler 引入的吗?有什么办法可以改善时间吗?还是我的整个方法都错了?

提前致谢!亚历克斯

0 投票
0 回答
12 浏览

dcos - 如何在节拍器中获取作业的运行日志或输出?

使用 DC/OS Metronome,我们正在运行一些作业。当它们失败时,它们会报告失败,但不提供退出代码、日志或任何输出来调试它们。我在这里检查了这个Rest API,但没有看到获取日志或输出的方法。是否有可能找出我的工作发生了什么?

我试过了:

但是通过其 ID 获取该作业“运行”不会返回任何内容。