afjl
最低版本要求为1.15(schedule clear限制)

之前我弄过一个(2018年弄的,已经锁帖,初始版输入都是数字),最近闲得没事干,想起了这个,就又弄了一个升级版,支持多种音色
一共用了大概8小时
先看看效果
BrainiacManiac-MC.zip (1.34 MB, 下载次数: 5)
后缀名限制差评

用MC播放,然后其他软件录制
(中间好像卡了一下)

下面是原理:
先做一个音符列表,把音符按时间排序,为每个时间点生成一个函数,时间相同或接近(量化后在同一个tick内,下面具体说明)的音符在同一个函数内
在每个函数内用playsound播放音符,并利用schedule的定时功能,将下一个时间点的音符放入计划,就可以播放下一个音符
这样就生成了一个类似链表的东西,就能在MC里播放给出的音符列表,也就是音乐
播放时,调用第一个音符对应的函数就行,也可以调用其它函数从而从中间开始播放
停止时,理论上找到在计划中的那个函数就可以,但MC没有相应功能,所以我直接把所有音符都clear了一遍

实际实现中有一些问题:
1.MC的游戏刻是0.05s,也就是音符间的时间差必须是0.05的整数倍,而一般音乐的bpm可能是68、132之类的数,导致音符实际时长不是0.05s的整数倍
解决方法就是量化,把每个音符到音乐开始的时间差求出来,乘以20再取整,就能得到音符所在的tick数

2.播放音符时音量和在游戏中播放的位置难以控制
音量比较好解决,设一个足够大的数就会使音量变成固定值(当玩家在一定区域内时)
播放位置还没有解决,应该可以通过修改生成器来解决
3.如果MC发生卡顿,那么播放就会不连贯
解决方法就是避免卡顿,播放音乐时关闭不必要的程序,并让MC窗口置顶
4.音色和音域有限制
这个锅只能MOJANG背,可以通过尝试找出最合适的音色,或者配合资源包导入其它音色。音域可以换其它乐器,如果卡在边界可以尝试混水摸鱼用最近的音高代替
5.生成器的代码和音符列表很难写

生成器以及作品:
Music.zip (539.75 KB, 下载次数: 5)
默认播放函数为music:music2,停止函数为music:music2_end

将压缩文件解压放在<世界>\datapacks里,然后执行/reload或重进世界,就能使用
生成器也在压缩包里
如果只是听音乐,也可以不解压,把压缩包放在相同位置即可

mrhaha
这个可以啊,支持下哈哈哈,类似电台mod

3252236846
额,有点蒙,我再仔细研究研究把,寻思着弄首歌

不忘吃心
。。。。。。下载了  可以在MC里玩音游吗

MC_you_lin
弄上爆炸效果的音乐给朋友会...

66666@@@
一夜之间变成音乐大师

第一页 上一页 下一页 最后一页