0


多功能点击器(文末附Gitee源码)——光遇自动弹奏

之前提到的多功能点击器,使用场景比较多,之前玩光遇喜欢在里面弹琴,想到用这个点击器也能自动弹琴,跟别的自动弹琴脚本不一样,这个比较简单容易操作。

借这个光遇自动弹琴使用教程再讲解一下这个多功能点击头的使用方法。

1.粘触控头

打开你的光遇乐器,把15个点击头依次粘在相应位置上

2.改谱子

需要将简谱改写为对应的接头谱

以《最后的电影》这个乐谱为例(流行歌曲的简谱基本各大网站都有)

ps:不是音乐方面的专业人士,只是演示一下作参考~

该简谱每小节分为8拍,每拍占一秒(每个音符按下抬起总共占一秒)

把你需要的简谱对照图片,改成接口号的谱子

下面是我改的,可以不按照我这个形式,只要下面能把脚本修改好也是一样的

3.改脚本代码

针对改好的谱子上面的顺序来编辑代码

import serial
import time

SERIALOBJ = None

#'@'工作模式字典
type2Pins = {1:['0','1'],2:['2','3'],3:['4','5'],4:['6','7'],5:['8','9'],6:['a','b'],7:['c','d'],8:['e','f'],9:['g','h'],10:['i','j'],11:['k','l'],12:['m','n'],13:['o','p'],14:['q','r'],15:['s','t'],16:['u','v']}

def sendcmd(t,cmd):
    sendstr = cmd
    print(sendstr)
    s = t.write(sendstr.encode())
    t.flush()

def touch(p):
    global SERIALOBJ
    pstr = type2Pins[p][0]
    sendcmd(SERIALOBJ, pstr)

def untouch(p):
    global SERIALOBJ
    pstr = type2Pins[p][1]
    sendcmd(SERIALOBJ, pstr)

def touchpin(n):
    if n == 0:
        n = 10
    touch(n)
    time.sleep(0.5)
    untouch(n)
    time.sleep(0.5)
def main():
    global SERIALOBJ
    t = serial.Serial('com12',115200,timeout=1)
    SERIALOBJ = t
    if t:
        print(t.name)               #串口名
        print(t.port)               #串口号
        print(t.baudrate)           #波特率
        print('-'*10)
        time.sleep(1)
        sendcmd(t, '@')
        #谱子脚本
            

        t.close()
    else:
        print('串口不存在')

if __name__ == '__main__':
    main()

主要参数

触控头分为抬起untouch(p)和放下touch(p)两个动作。

一次点击行为:放下——抬起

这里也定义了这个行为

def touchpin(n):
    if n == 0:
        n = 10
    touch(n)
    time.sleep(0.45)
    untouch(n)
    time.sleep(0.45)

time.sleep()可以控制点击动作的间隔时间,单位秒

示范

以下我只写了一部分乐谱,做示范。

import serial
import time

SERIALOBJ = None

#'@'工作模式字典
type2Pins = {1:['0','1'],2:['2','3'],3:['4','5'],4:['6','7'],5:['8','9'],6:['a','b'],7:['c','d'],8:['e','f'],9:['g','h'],10:['i','j'],11:['k','l'],12:['m','n'],13:['o','p'],14:['q','r'],15:['s','t'],16:['u','v']}

def sendcmd(t,cmd):
    sendstr = cmd
    print(sendstr)
    s = t.write(sendstr.encode())
    t.flush()

def touch(p):
    global SERIALOBJ
    pstr = type2Pins[p][0]
    sendcmd(SERIALOBJ, pstr)

def untouch(p):
    global SERIALOBJ
    pstr = type2Pins[p][1]
    sendcmd(SERIALOBJ, pstr)

def touchpin(n):
    if n == 0:
        n = 10
    touch(n)
    time.sleep(0.5)
    untouch(n)
    time.sleep(0.5)
def main():
    global SERIALOBJ
    t = serial.Serial('com12',115200,timeout=1)
    SERIALOBJ = t
    if t:
        print(t.name)               #串口名
        print(t.port)               #串口号
        print(t.baudrate)           #波特率
        print('-'*10)
        time.sleep(1)
        sendcmd(t, '@')
        for i in range(1):
            

            #第一小节
            touchpin(8)
            time.sleep(1)
            touchpin(9)
            time.sleep(1)
    
            #第二小节
            #同时11,5,1
            touch(11)
            touch(5)
            touch(1)
            time.sleep(0.45)            
            untouch(11)
            untouch(5)
            untouch(1)
            time.sleep(0.45)

            time.sleep(1) 
            touchpin(10)
            touchpin(10)
            #同时5,1
            touch(5)
            touch(1)
            time.sleep(0.45)            
            untouch(5)
            untouch(1)
            time.sleep(0.45)

            time.sleep(3)

    
        t.close()
    else:
        print('串口不存在')

if __name__ == '__main__':
    main()

如果你想单独把谱子写到一个文件里,再调用(beat.py)这个文件也可以,这样就能把你想要的脚本都写好保存后,运行的时候直接改这个地方代码调用不同的脚本文件。

脚本写好,插上板子连接你的手机/pad

参数配置

修改你的main文件中的端口号

如何查看端口号?

此电脑——右键——属性

这里串口com3

所以代码那个地方com12就应该改成com3

修改完成后,保存,运行代码。

触控头就会根据你的脚本内容,在游戏中自动演奏你想要的乐谱了。

代码内容可以根据自己需要来优化,这里不做过多说明。

点击进入: Gitee源码地址


本文转载自: https://blog.csdn.net/lonelyxxyo/article/details/142823081
版权归原作者 Cici_ovo 所有, 如有侵权,请联系我们删除。

“多功能点击器(文末附Gitee源码)——光遇自动弹奏”的评论:

还没有评论