异星工厂吧 关注:63,493贴子:412,638
  • 9回复贴,共1

最简单的音乐播放器,蓝图放楼下。

取消只看楼主收藏回复

视频来自:百度贴吧


IP属地:江西1楼2020-06-27 14:17回复
    这种播放器太粗糙了,首先:1、每秒的拍数无法达到标准值。比如:对于一个一小节4拍的调,每拍应该都是1/4秒,但是没有一种传送带的运行速度是4格/秒,红带速度是3.75格/秒,如果每小节有8拍,需要的传送带应该8格/秒,而最快的蓝带也不过5.625格/秒,至于更高的拍数,那只能舍掉了(没错,只能这样)2、延音无法做出来。比如这段5561556,只能做成5061506,效果就是“纸-短情长-啊”而不是“纸~短情长~啊“


    IP属地:江西4楼2020-06-27 15:01
    收起回复
      2025-12-27 06:13:01
      广告
      不感兴趣
      开通SVIP免广告
      可能有人会说了,你可以让让扬声器读取连续信号啊(我这是脉冲信号),看图要做延音,必须加传送带,原理如图


      IP属地:江西5楼2020-06-27 15:25
      回复
        播放器最好是用游戏里的判断运算器、算数计算器、常量箱来做,理论上能跟现实中达到一样的水准。有人会问了,你为什么不这样做啊。我也想啊,可实力不允许啊^-^.本科专业不是编程这方面的,对于这个只能说略懂,很多都理解不了。。。学五线谱、实际钢琴键位与游戏钢琴键位对应都花了3、4个小时。


        IP属地:江西6楼2020-06-27 15:33
        回复
          独奏只要一条带子,有几种伴奏就加几条带子,加伴奏的工作量太大。一条是最简单的


          IP属地:江西7楼2020-06-27 15:48
          回复
            补充:我想了想,16分音符也能近似做到,(为什么是近似呢?因为8格蓝带从头走到尾的时间=1.42秒)16/8=2,2条蓝带,共16格,一格对应一个音。为了方便计算,下面我们假设蓝带速度为8格/秒,如果要做到一秒弹出16个音,需要两条蓝带,两条蓝带放上物品的延时为:0.125/2=0.0625秒。同理32分音符、64分音符也能按照这样做出来,增加带子、改变延时即可。(图中黑字123456为扬声器的播放顺序,且下面蓝带物品较晚出现)


            IP属地:江西9楼2020-06-27 21:07
            回复



              IP属地:江西11楼2020-06-27 23:05
              回复
                截图发楼上了,保存下来在qq里提取文字吧


                IP属地:江西12楼2020-06-27 23:07
                回复
                  2025-12-27 06:07:01
                  广告
                  不感兴趣
                  开通SVIP免广告
                  接着补充:已知游戏里的最小响应时间为1t,而1s=60t。同样把蓝带走完8格视作1s,但是要精准地用2条带子做出16个音符,必须用蓝带实际的速度,也就是5.625格/秒。上面说到上下2条传送带上物品的间隔应为0.5格,但这样对应游戏里的时间间隔为(1/5.625)*0.5*60=5.3t,而游戏里的时间无法设置5.3t,只能取整。思路继续,其实上下2带子物品间隔可取0.5+z(任一整数)格,直到时间间隔为整数为止。先取z=1,也就是说物品隔1.5格,此时对应游戏里的时间为(1/5.625)*1.5*60=16t,。好了,所以设置上下两条蓝带放置物品的时间间隔为16,扬声器响应顺序如图


                  IP属地:江西13楼2020-06-28 11:49
                  回复
                    接着补充:以上所有结论仅供参考,并不是准确的值,我的乐理知识只有2~3小时,对于拍子、小节时间间隔理解出现偏差,导致上文大部分结果出现偏差,但也能作为入门参考。。。再学了一遍乐理知识后,终于找到了答案。后续结果就不在这个帖子下说明了,有空新开个。


                    IP属地:江西14楼2020-06-29 14:46
                    回复