V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
est
V2EX  ›  分享创造

js 写的节拍器

  •  
  •   est ·
    est · 20 天前 · 2040 次点击

    https://lab.est.im/metronome/

    主要特色是计时准,操作简单,无广告。

    前因后果写了个 blog

    欢迎大家使用+吐槽

    第 1 条附言  ·  20 天前
    14 条回复    2024-09-30 11:26:02 +08:00
    colatin
        1
    colatin  
       20 天前   ❤️ 1
    也来一个
    https://bpm.blue/
    shadowyue
        2
    shadowyue  
       20 天前
    点赞。
    作为卖点的 计时准 怎么理解?
    est
        3
    est  
    OP
       20 天前   ❤️ 1
    @shadowyue 博客里写了一点。

    setInterval 是有时间抖动( jitter )的。 这位做过实验 https://meowni.ca/posts/metronomes

    要想不抖,得放到 service worker 里。不如我这个版本简单
    murmur
        4
    murmur  
       20 天前
    没有强和次强的区别吗
    est
        5
    est  
    OP
       20 天前
    @murmur 你说的是。特强 - 强 - 中 这样的对比吗?下次一定 。。。
    murmur
        6
    murmur  
       20 天前
    @est 比如说锦鲤抄 浮夸 这些歌,说是 2/4 ,实际上记谱用 6/8 更简单,而且谱子也是 1 xx 2xx 1xx 2xx 这样的节奏

    还有锦鲤抄的速度是 87.5 ,我也不知道为啥带小数,就这个数字特别深刻
    est
        7
    est  
    OP
       20 天前
    @murmur 我大概明白你的意思。下一步设想是允许用户加减 beat 。然后每个 beat 音色自定义

    87.5 这个速度。。。有必要如此精确么。。实在不行我看放个 input 让用户自己输入好了。。。
    tyrone2333
        8
    tyrone2333  
       20 天前
    计时准 这个是怎么实现的, 我用 flutter 写过, 前后改了好几版, 做不到准确
    est
        9
    est  
    OP
       20 天前
    @tyrone2333 直接不间断给 WebAudio 喂指令~~~~还得在上一个播放完成之前提前喂到嘴里,这样就是最精确的
    tyrone2333
        10
    tyrone2333  
       20 天前
    @est #9 我试过这个方案还是有很大误差, while 也会差几毫秒, 要是挂后台差的更多. 高 bpm 的时候音效没播完就到下一个, 很明显
    est
        11
    est  
    OP
       20 天前
    @tyrone2333 啊。这么拉垮吗?你怎么测试的呢?我那个 demo 也差么
    est
        12
    est  
    OP
       20 天前
    @tyrone2333 我大概想到怎么优化了。高 bpm 的时候不能单靠一个 beat 去提前。得把多个 beat 都提前喂给 AudioContext 。
    tyrone2333
        13
    tyrone2333  
       20 天前
    @est #12 看了下我的代码是搞了 3 个实例, 两个用于播放 soundType2,另外一个用于 soundType1
    est
        14
    est  
    OP
       20 天前
    @tyrone2333 你试试我这个版本嗯?我找了个 200bpm 的视频一起听,没听出来明显卡顿。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2437 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:55 · PVG 11:55 · LAX 20:55 · JFK 23:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.