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

news2024/12/24 8:11:54

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

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

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源码地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac端口被占用解决方法

通常情况下:lsof -i:#{port} 就可以找到对应的进程的pid kill -9 #{pid} 直接终结 kill -15 #{pid} 等待正在进行的任务完成再终结 本次纪要 问题出现: 当我想要使用docker启动mysql的时候报错:Error response from daemon: Ports are not…

【项目实战】g-sensor输出的gyro数据值没有变化

项目场景: GR5515 sensor hub SDK 与 master 展锐W307(UWS6130E)通过串口通讯。 问题描述 量产的设备,概率性出现以下问题:G-SENSOR 输出的gyro数据值没有变化,始终是一组一样的值。G-SENSOR型号为icm-42670-p。规格书已上传。 正常的设备是有变化的。参考下图, 对比异…

10.10 工作笔记

需要做的事: 修改文件名:资金曲线_BTC-USDT_1INCH-USDT_24H.csv为 BTC-1INCH_24H.csv整理代码订正数据正确性 1 涨跌幅 4.10第一个涨跌幅为none 正确 4.12涨跌幅 第一个和最后一个着重看看 正确 2 资金曲线 3 总体资金曲线 4 总体涨跌幅 5 总体资金曲线…

bclinux安装minio和mc

下载MinIO服务器二进制文件 访问MinIO的官方网站或使用wget、curl等工具直接从MinIO的官方GitHub存储库下载最新版本的MinIO服务器二进制文件。例如,使用以下命令: 下载命令:wget https://dl.min.io/server/minio/release/linux-amd64/ 授…

PCL 将点云投影到拟合直线

PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 该代码通过拟合直线模型,将点云投影到该直线上,并输出投影后的点云。 1.1原理 点云投影到直线的过程主要包括以下…

nacos源码修改持久化到postgreSQL数据库

很多业务场景,业务功能必须用pg数据库,这时候注册中心如果用mysql的话,显得浪费资源,基于此,nacos源码修改持久化到postgreSQL数据库是一个必然需求,此处我们修改为只支持pg数据库,2.4版本的源码…

文献阅读Prov-GigaPath模型--相关知识点罗列

文章链接:A whole-slide foundation model for digital pathology from real-world data | NatureDigital pathology poses unique computational challenges, as a standard gigapixel slide may comprise tens of thousands of image tiles1–3. Prior models hav…

联软安全助手卸载 UniAccess Agent,最简单的方法,两步解决!!!

背景: 前段时间因为业务需要安装了这个可恶的安全助手,然后发现卸载不掉,找了网上很多的方法,比如经典的方案一、方案二那个文章,禁用服务根本禁不掉,过两三秒他自己就会把禁用状态改为自动状态&#xff0…

OpenCSG传神社区月度功能更新

9月社区ReleaseNote 在9月的社区更新中,我们继续秉持开放与创新的精神,推出了一系列新功能和技术升级。这些更新不仅扩展了社区的技术支持范围,还为用户提供了更多资源,助力其在人工智能、大数据处理和推理加速等领域的创新。通过…

老男孩mysql系列 1_Mysql 8.0常规安装

1. MySQL安装准备 选择安装的MySQL版本首先判断是否要和公司其他已经安装好的MySQL保持版本一致如果没有上述要求,则一般会安装最新版本(目前是5.7)如果不是实验新功能性质,则不要选择development release,而要安装Gen…

nuScenes里的目标物体的速度是如何获取的

nuScenes的那些标注文件里并没有标注记录物体的速度数据,而是读取标注数据后根据sample_annotation.json里目标在前后帧里的translation数据相减除以时间差获得x、y、z方向的三个速度分量(Vx,Vy,Vz)的,一版只使用了Vx和Vy,具体实现代码在nusc…

20241007给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Buildroot时使用ADB

20241007给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Buildroot时使用ADB 2024/10/7 17:35 缘起:由于荣品RD-RK3588-AHD开发板使用的是9针的USB-A口,没有使用EVB4默认的type C口。 因此需要拿掉fusb302的驱动/DTS配置部分。 同时,为了简单起见…

腾讯云实时音视频 SDK(TRTC SDK)相关

实时音视频 SDK(TRTC SDK) 的 RoomID 是什么?取值区间值是多少? RoomID 即房间号,用于唯一标识一个房间。房间号取值区间为1 - 4294967295,由开发者自行维护和分配。 实时音视频 SDK(TRTC SDK…

国产工具链GCKontrol-GCAir助力控制律开发快速验证

前言 随着航空领域技术的不断发展,飞机的飞行品质评估和优化成为了航空领域的一个重要任务,为了确保飞行器在各种复杂条件下的稳定性,控制律设计过程中的模型和数据验证需要大量仿真和测试。 本文将探讨基于世冠科技的国产软件工具链GCKont…

Java面试宝典-Java集合01

Java面试宝典-Java集合01 目录 Java面试宝典-Java集合01 1、Java中常用的集合有哪些? 2、Collection 和 Collections 有什么区别? 3、为什么集合类没有实现 Cloneable 和 Serializable 接口? 4、数组和集合有什么本质区别? 5、数组…

flutter 一段长文本实现检索功能,检索的文本加粗标红

先来看效果 做这个功能的原因,因为日志比较长,内容很多,找起来非常不方便 只是简单的加粗标红的话,用TextSpan自己也可以做,主要日志还涉及选择复制,涉及的东西很多,想到了 extended_text&…

基于Python的摄影平台交流系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

美团Java一面

美团Java一面 9.24一面,已经寄了 收到的第一个面试,表现很不好 spring bean生命周期 作用域(忘完了) 为什么用redis缓存 redis和数据库的缓存一致性问题 redis集群下缓存更新不一致问题 aop说一下 arraylist和linkedlist 数据库的…

H264重点笔记记录

H264格式 目前视频中的H.264流行的NALU包装方式有两种,一种叫做annexB,一种叫做avcC。对于这两种格式,不同的厂商支持程度也不太一样,例如,Android硬解码MediaCodec只接受annexB格式的数据,而Apple的Video…

AI绘画,AI生成图片

分享一个可以免费使用的AI生成图片的网站: https://openart.aihttps://openart.ai/create 1、登陆后点击右上角create 2、在创建页面左侧输入描述文案,下面调整生成图片张数,点击create,右边即可生成 我这里输入了在吃麦当劳的超…