使用Java进行编曲

🌌 365提款多久到账 ⏱️ 2025-09-26 06:53:33 👤 admin 👁️ 4977 ⭐ 421
使用Java进行编曲

一、编曲部分

1.1一丢丢乐理知识

简单普及下乐理哈,这样便于读谱 钢琴谱一行分两个部分 上面一行用右手弹(主奏); 下面一行用左手弹奏(伴奏)。

1.2 关于节奏

(1)、主奏与伴奏中支持输入的35个音符:

倍低音: “1--” ~ “7--”,

低 音 : “1-” ~ “7-”

中 音 : “1” ~ “7”

高 音 : “1+” ~ “7+”

倍高音: “1++” ~ “7++”

(2)、分别在主奏(.note)与伴奏(.accompaniments)中输入需要自动弹奏的音符

① 每个音符之间用空格隔开(任意多个空格,推荐每个音符包括空格共占用4个占位符,以便主奏和伴奏音符对齐) ② 输入字符"0",则会使音长额外延长一倍,可以理解为停顿; ③ 输入除了上面35个音符以及“0”以外的任意字符不会对弹奏起任何作用; ④ 如果需要换行填写,则需在上一行的末尾以及下一行的开头都加上空格;

(3)、音长里输入每两个音符之间的间隔时长,单位是毫秒(ms)

建议输入整片谱子的最短的间隔,其余更长的的间隔可以利用延时加倍解决

1.3实例练习

下面是上文中片段2里的一段旋律: (1)确定最小时间间隔

5+5 67 1+2+ 3+4+ //主奏

5--0 2-0 7-0 00 //伴奏

(2)成品 将每个字符间加上空格

5+ 5 6 7 1+ 2+ 3+ 4+ //主奏

5-- 0 2- 0 7- 0 0 0 //伴奏

二、编码部分

1.创建一个maven项目。

2.pom.xml引入相关依赖

cn.hutool

hutool-all

5.4.3

com.googlecode.soundlibs

mp3spi

1.9.5.4

3.编写实现控制台输出的类

package com.zxm.play;

public class Animation extends Thread {

/**

* 音符

*/

private String[] notes;

/**

* 间隔时间(单位:毫秒)

*/

private int times;

public Animation(int times) {

this.times = times;

}

//设置音符

public Animation loadNotes(String notes) {

this.notes = notes.split(" ");

return this;

}

//进程方法

@Override

public void run() {

try {

int times = this.times;

new Audio("audio/test.mp3").start();

sleep(1000);

int no = 1;

// System.out.print(no+": ");

for (int i = 0; i < this.notes.length; i++) {

if (notes[i].length() < 1) {

continue;

}

//将【-、+】这两个字符替换成空

String n = this.notes[i].replace("+", "").replace("-", "");

if (n.equals("\n") || n.equals("\r")) {

System.out.print("\n");

no++;

// System.out.print(no+": ");

c

🛸 相关文章

歌诗图电瓶
注册office365邮箱

歌诗图电瓶

📅 07-26 👁️ 2655