首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone BPM节奏按钮

iphone BPM节奏按钮
EN

Stack Overflow用户
提问于 2009-11-19 13:54:11
回答 2查看 996关注 0票数 1

我想创建一个按钮,允许用户点击它,从而设置每分钟的节拍。我也会在它上面上下移动触摸,以调整更快和更慢。(我已经解决了这一点)。

有什么适当的方法来获得用户点击按钮的时间,从而获得按下按钮之间的平均时间,从而计算出节奏。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-19 15:06:59

总体上

  1. 你最好使用time.h中的time()而不是NSDate。按照节拍的速度,创建NSDate的开销可能会导致严重的精度损失。

我相信time_t的精确度是双倍的,因此在整个屏幕上使用time()difftime().

  • Use是安全的,而不是只给用户一个小按钮。

两个想法

后处理

  1. 将所有时间存储在数组中。
  2. 裁剪结果。从平均值中删除起点和终点中超过阈值的元素。
  3. 从剩余的值中获取平均值。这就是你的速度。
  4. 如果它接近一个常见值,就使用它。

自适应

  1. 使用2个变量。一个称为speed,另一个为error.
  2. After前两个节拍计算估计速度,将speed.
  3. After设置为speed error

queue = Fifo(5) #先进先出队列。尝试#不同的长度值currentBeat = now - timeOflastBeat currentError =| currentError - currentBeat| # adapt error = (error + currentError) /2#你必须试验#currentError应该有多少queue.push(currentBeat) #将最新的速度推入队列#自动删除最早的速度= average(queue)

  • As一旦error小于某个阈值,你就可以停下来告诉用户你已经确定了速度。

  • 为这个界面疯狂。每当用户点击时,使屏幕闪烁。对于与预期时间几乎相同的轻击,会产生额外的火花。

使背景颜色与错误相对应。误差越小,颜色越亮。

票数 3
EN

Stack Overflow用户

发布于 2009-11-19 13:58:02

每次按下按钮时,存储当前日期/时间(使用[NSDate date])。然后,下一次按下它时,您可以使用-[previousDate timeIntervalSinceNow]计算差值(负数,因为它从上一个日期中减去当前日期),这将得到秒数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1761171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档