多功能点击器(文末附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源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cici_ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值