AI prompts
base on A demo of playing notes written in Java # MySound
### 介绍
自定义乐谱解释器
### 安装教程
1. 下载源码到本地
2. 用IDEA打开,其他的(如eclipse)需要自己调试
3. 运行MyPlayer中的main方法即可
4. 不需要任何第三方库,装了java就可以玩
## 重要!!!
1. 不要过度研究当下版本,可以当玩具研究下.目前设计上还有很多缺陷,后续会大改
近期没时间,有时间会继续完善
2. 还有,java的就业方向以web开发为主,还在上学的小伙伴一定要研究好再选择,切
不可因一时好玩草率选择编程语言
3. 着急研究midi相关api的小伙伴可移步[Oracle官方demo]
4. 着急用音乐编程达到更好效果的小伙伴可以搜索关键字 JFugue, abc4j(太老了)这些项目
开源且成熟,能快速实现一个乐队(前提你懂乐理)
5. 着急编曲的小伙伴请搜索引擎自行搜索 打谱软件 会找到你想要的
[Oracle官方demo]:https://www.oracle.com/java/technologies/java-sound-demo.html
#### 使用说明
| 符号 | 示例 | 说明 |
|:----:|:---------|:-----------------------------------|
| 单纯数字 | 1 | 表示四分音符 |
| - | -3 | 表示八分音符 |
| -- | --3 | 表示十六分音符,后边依此类推 |
| \+ | 3\+ | 表示延长一个四分音符长度 |
| \+\+ | 3\+\+ | 表示延长二个四分音符长度,后边依此类推 |
| l | 3l | 表示低一个八度(l:low的简写) |
| ll | 3ll | 表示低二个八度,后边依此类推 |
| h | 3h | 表示高一个八度(h:high的简写) |
| hh | 3hh | 表示高二个八度,后边依此类推 |
| : | 3:2 | 表示同时按下3和2 |
| : | 1:2:3 | 表示同时按下1,2和3 |
| u | 3u | 升符号(up),表示升3 |
| b | 3b | 降符号(blow),表示降3 |
| . | 3. | 表示延长本音节原有长度的一半(3.的音长是3的1.5倍) |
| ^ | ^3 | 表示本音节符号不发音 |
| \> | 3\> | 顿音符号,表示本音符发音时长占音符时长的1/4 |
| < | 3<2 | 倚音符号,音节时长由后边的音符决定,前边音符发音占本音节时长的1/16 |
| 关键字 | 示例 | 说明 |
|:----------:|:----------:|:-------------------|
| major | major:c | 声明简谱是C调的,简谱中可变换多次 |
| PPQ | PPQ:3/4 | 声明简谱是4分音符为一拍,没小节3拍 |
| BPM | BPM:155 | 声明简谱每分钟155拍 |
| rightStart | rightStart | 右手轨道开始 |
| leftStart | leftStart | 左手轨道开始 |
| rightEnd | rightEnd | 右手轨道结束 |
| leftEnd | leftEnd | 左手轨道结束 |
| // | //注释 | 本行为注释内容 |
### 规则
1. 指令行每一行为一个指令,如生明major,PPQ等
2. 乐符为每一行一个小节,乐符之间以空格分开
3. 乐符录入前要先声明是左手还是右手rightStart,leftStart
4. 乐符左右手部分结束后需要声明结束
5. 左右手不可同时开启
6. 左右手声明结束后可以再次声明开始,从第一个节拍开始录,不会覆盖前边
---
#### 说明:
````
目前本项目以钢琴为,只实现了部分钢琴技法,主要是针对简谱,
后续会增加五线谱以及JFugue以及xmlmusic的解析,以上只是设想,
目前没空,有空还能想起来的话,再写吧
````
", Assign "at most 3 tags" to the expected json: {"id":"5113","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"