GithubHelp home page GithubHelp logo

genshin-lyre-midi-player's Introduction

原神midi自动演奏器

基于安卓无障碍服务的原神midi自动演奏器(自动弹琴)

image

现已适配简体中文、繁体中文、英语

使用方法

选择midi文件并打开,第一次运行软件需配置坐标,可在开发者选项中打开指针位置显示坐标,填写完毕并保存。因为许多屏幕的分辨率都不相同,所以需要自己标出原神琴的按键所对应屏幕坐标以确定按键位置。填写完保存后,后面进来就无需再填写。

之后就按照midi音乐的情况,调整“选择钢琴按键对应原神键位的范围”以及“原神没有半音(黑键),请选择处理方式”这两个选项。
建议配合“完美钢琴”这款软件使用,这是一款不错的midi预览器。

将所有参数填写完毕后,点击启动悬浮窗并授予相关权限,此时屏幕上出现个悬浮窗,进入游戏拿起琴然后点击悬浮窗上的“▶”即可开始演奏,“■”终止演奏。由于是操作您的屏幕,所以不支持拖动进度条以及暂停

详细教程:https://www.bilibili.com/video/BV1rL4y1q7FY
https://www.youtube.com/watch?v=7-_jsjF2hYc

关于移调

如果midi文件中的半音(黑键)过多,使用取左取右的笨方法演奏听起来感觉怪怪的,那么你可以尝试移调!移调就是将音符向左右平移,这样只会改变整首音乐的音调,不会改变旋律等,但可以减少半音的出现,大幅改善演奏效果。什么原理可以自己研究(坏笑)。

使用的开源库

https://github.com/kshoji/javax.sound.midi-for-Android 提供的javax.sound.midi移植包(已弃用,因为某些midi打开报错,但是其他软件可正常读取)
https://github.com/LeffelMania/android-midi-lib(还是弃用了,因为读取某些midi会把noteOff一并识别为noteOn) v5.0.0版本,亲自移植jdk17中javax.sound.midi库。读取midi,以上问题全无

更新日志

-v1.0 风花节末完成脚本制作,基于auto.js -v2.0 修复一些bug

(1.0与2.0不加到本压缩包的历史版本中,且不多介绍,详见https://www.bilibili.com/video/BV1GB4y1A7GQ

-v3.0.0 软件正式发布,单独apk,从头开始写。可自行读取midi文件,无需依赖midi voyger free转换成文本等麻烦操作 内置自助移调功能

-v3.1.0 修复不同字体下悬浮窗显示异常的bug 修复坐标输入框不对其按键的bug

-v3.2.0 删除愚蠢的代码 修复了使用其他文件管理器打开文件无法读取的bug 修复部分机型无法读取midi文件的bug(有的是报文件数据损坏,有的是一直转圈圈)

-v3.3.0 目标API支持到Android13(API32),但又退回了安卓11,原因是支持到安卓13之后,安卓12无法安装,但11及以下7及以上的却可以安装。尝试把目标API设置为安卓12,安卓12依然无法安装!结果设置为安卓11就行了[笑哭]。这叫做“请不适配安卓12以适配安卓12” 修复授权存储字符串无法支持繁体中文(没有加到strings.xml中)。因为没有美国人用我的软件,新增加的字符串懒得翻译成英语了,繁体中文照样翻译。 文件数据已损坏报错增加提示文件头信息 修复没有选择文件后返回软件导致出错,甚至会弄崩无障碍的bug 增加选择文件帮助 添加“用其他应用打开此文件”,可在QQ里直接打开下载的midi文件(安卓11也可免授权访问Android/data/*目录),或者是各文件浏览器、网页浏览器直接打开文件。

-v3.4.0 添加暂停功能 修复时间不同步的bug 修复进度条蠕动问题 修复没播放过音乐关闭悬浮窗导致程序崩溃(连带无障碍一起崩溃)的bug 修复大部分播放相关bug 隆重添加悬浮窗切歌功能,往浮窗音乐列表里添加音乐需要先打开midi文件按照设定处理并保存。下次选歌也可以直接到主页去列表选择音乐直接打开悬浮窗。

-v3.4.1 修复上个版本遗留bug:保存到浮窗播放列表一直转圈圈,但其实乐曲已保存。

-v4.0.0 发布在线曲库功能……

……更多版本更新信息详见 Release

关于我历史版本没有在github上传

第一次直接使用网页版github直接上传文件,不知道git版本控制工具,然后想在GitHub更新版本的时候就一脸懵逼。索性不用GitHub直接在分享链接(https://drive.google.com/drive/folders/1jeid9DADcRj_d_5eYT4rdy_QIbDXgti_ )里放源码压缩包与relase安装包。
学会使用git工具后就继续在github更新。

genshin-lyre-midi-player's People

Contributors

weixiansen574 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

genshin-lyre-midi-player's Issues

在MIUI14下打开在线曲库时闪退

机型:红米k40s
系统版本:14.0.22.12.8dev
报错信息:因应用自身空指针异常,造成闪退
日志
java.lang.NullPointerException: Attempt java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Integer com.alibaba.fastjson.JSONObject.getInteger(java.lang.String)' on a null object reference
at top.weixiansen574.LyrePlayer.SelecFromServerActivity$6.success(SelecFromServerActivity.java:290)
at top.weixiansen574.LyrePlayer.util.HttpUtil$1$2.run(HttpUtil.java:68)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8116)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
invoke virtual method 'java.lang.Integer com.alibaba.fastjson.JSONObject.getInteger(java.lang.String)' on a null object reference
at top.weixiansen574.LyrePlayer.SelecFromServerActivity$6.success(SelecFromServerActivity.java:290)
at top.weixiansen574.LyrePlayer.util.HttpUtil$1$2.run(HttpUtil.java:68)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8116)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

自定义按键映射坐标

大佬你好 关于您的midi自动演奏,可否自定义每个按键映射坐标?这样就可以适配其他21键的游戏了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.