
如果谱子可以写进去,那么剩下要考虑的就是如何让PS4接收到控制信号。
我目前有四种思路:
第一种,单片机驱动电磁铁去打按键,这个成本很低,但是需要定制或者3D打印模具,要学的很多;
第二种,也借助单片机,但把手柄拆开,飞两根线把随便哪两个按键引出来,然后用单片机给电平触发就可以,红蓝note用PS4系统内部的按键映射map过去就行。最简单的是L3和R3,这俩按键的引脚是通孔焊接,很好弄,我可能下一步会试试这个;
第三种,单片机或者PC,纯软件的方式虚拟一个DS4,然后把谱子用按键数据包的格式发给PS4,通讯协议上次大佬贴了,不过我大概读了读,对USB协议本身要学的东西很多,也是比较耗时,但应该可行,毕竟山寨DS4早就满天飞了,也就是说这件事必然有人做成了;
第四种,就是我这次介绍的,成本较高,这个转接器要几百块,但是你买来之后只要简单写个脚本就可以了,DS4接上,这边给个信号一触发,自动开打。
程序本身难点不多。主要集中在三部分。
第一部分,是要读懂wiki上的太鼓谱子,要结合BPM的数值去把每个音符之间的时间间隔算出来;
第二部分,学会这个编程器的IDE,属实比较反人类,类似于C但是很多语法根本不支持,但堪堪能用就是了。比较蛋疼的是这个编程器的性能捉鸡,板载内存只有4k,也就是说编译后的代码要控制在4kB之内(新款支持32kB了)。这个编程器有个论坛,上面有很多写好的脚本,我看了下还真有个太鼓相关的,但那兄弟只发了一半,而且代码风格极度Brute Force,半首歌编译出来就29kB大,我这个老款编程器根本装不下,所以我是重头用简单的逻辑写了一遍。
第三部分,这部分最耗时,就是对谱子的微调,因为譬如说【红】这首歌,它的BPM是恒定的156.3,算出来十六分音符的间隔是95.9693ms,但通常单片机的延时都是以ms为单位,所以只能写成96ms,那么这个时间间隔的误差就会不断累积,要在适当的时候进行补正。这只是其中的一个问题,总之当你去调的时候你会发现很多细节问题,如果想把谱子调成全良的话这个工作量相当不小就是了。
我目前也没有搞定全良,但全连是写出来了,刚把10000combo的杯拿了。
其实魔王999combo对我来说也没啥难度,但你要真让我10000combo不断连我感觉心理素质跟不上,而且折腾折腾逃课方法也挺有意思的。
大概就是这样,程序我有空再改改,可能会发出来。
剩下几个思路我有空折腾好了再跟大家分享。
以上。
我目前有四种思路:
第一种,单片机驱动电磁铁去打按键,这个成本很低,但是需要定制或者3D打印模具,要学的很多;
第二种,也借助单片机,但把手柄拆开,飞两根线把随便哪两个按键引出来,然后用单片机给电平触发就可以,红蓝note用PS4系统内部的按键映射map过去就行。最简单的是L3和R3,这俩按键的引脚是通孔焊接,很好弄,我可能下一步会试试这个;
第三种,单片机或者PC,纯软件的方式虚拟一个DS4,然后把谱子用按键数据包的格式发给PS4,通讯协议上次大佬贴了,不过我大概读了读,对USB协议本身要学的东西很多,也是比较耗时,但应该可行,毕竟山寨DS4早就满天飞了,也就是说这件事必然有人做成了;
第四种,就是我这次介绍的,成本较高,这个转接器要几百块,但是你买来之后只要简单写个脚本就可以了,DS4接上,这边给个信号一触发,自动开打。
程序本身难点不多。主要集中在三部分。
第一部分,是要读懂wiki上的太鼓谱子,要结合BPM的数值去把每个音符之间的时间间隔算出来;
第二部分,学会这个编程器的IDE,属实比较反人类,类似于C但是很多语法根本不支持,但堪堪能用就是了。比较蛋疼的是这个编程器的性能捉鸡,板载内存只有4k,也就是说编译后的代码要控制在4kB之内(新款支持32kB了)。这个编程器有个论坛,上面有很多写好的脚本,我看了下还真有个太鼓相关的,但那兄弟只发了一半,而且代码风格极度Brute Force,半首歌编译出来就29kB大,我这个老款编程器根本装不下,所以我是重头用简单的逻辑写了一遍。
第三部分,这部分最耗时,就是对谱子的微调,因为譬如说【红】这首歌,它的BPM是恒定的156.3,算出来十六分音符的间隔是95.9693ms,但通常单片机的延时都是以ms为单位,所以只能写成96ms,那么这个时间间隔的误差就会不断累积,要在适当的时候进行补正。这只是其中的一个问题,总之当你去调的时候你会发现很多细节问题,如果想把谱子调成全良的话这个工作量相当不小就是了。
我目前也没有搞定全良,但全连是写出来了,刚把10000combo的杯拿了。
其实魔王999combo对我来说也没啥难度,但你要真让我10000combo不断连我感觉心理素质跟不上,而且折腾折腾逃课方法也挺有意思的。
大概就是这样,程序我有空再改改,可能会发出来。
剩下几个思路我有空折腾好了再跟大家分享。
以上。