# webmusic
**Repository Path**: hanxiaowen/webmusic
## Basic Information
- **Project Name**: webmusic
- **Description**: 音乐描述格式(musicxml)、电子五线谱绘制及其自动播放系统 、MIDI乐器接口 等音乐编程性基础套件。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 8
- **Created**: 2022-03-16
- **Last Updated**: 2022-03-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 可编程式音乐描述集合(computer programming of music description toolkit,mdt)
```
目录
1、musicxml数字乐谱描述
2、musiccode乐谱可编程性
3、player乐谱播放器
4、musicscore乐谱绘图
5、GUI用户界面
6、MIDI和其它
```
### 一、musicxml数字乐谱描述套件
在musicxml中,ScorePartwise是数字乐谱的顶层数据结构,其语法必须符合W3C规范:
```
package musicxml.example;
import musicxml.ScorePartwise;
import musicxml.part.Part;
import musicxml.part.measure.Measure;
import musicxml.part.measure.attributes.Attributes;
import musicxml.part.measure.attributes.Division;
import musicxml.part.measure.attributes.clef.Clef;
import musicxml.part.measure.attributes.key.Key;
import musicxml.part.measure.attributes.time.Time;
import musicxml.part.measure.note.Duration;
import musicxml.part.measure.note.Note;
import musicxml.part.measure.note.Staff;
import musicxml.part.measure.note.Type;
import musicxml.part.measure.note.pitch.Alter;
import musicxml.part.measure.note.pitch.Octave;
import musicxml.part.measure.note.pitch.Pitch;
import musicxml.part.measure.note.pitch.Step;
public class Music_1 {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
//创建乐谱
ScorePartwise scorePartwise = new ScorePartwise("music1");
//设置分谱和乐器名字
scorePartwise.addScorePart("p1", "piano");
//分谱
Part part = scorePartwise.getPart("p1");
//小节
Measure measure = new Measure(1);
Attributes attributes = new Attributes();
//division要最先设置
attributes.addDivision(Division.D256()).addKey(Key.MajorInC()).addTime(Time.Beat44());
attributes.addStaves(2).addClef(Clef.G(1)).addClef(Clef.F(2));
measure.addAttributes(attributes);
part.addMeasure(measure);
//音符
Note note = new Note();
note.addPitch(new Step("C"), new Alter(0), new Octave(4));
note.addDuration(1024);
note.addType(Type.TYPE_whole);
note.addStaff(1);
measure.addNote(note);
//转换到xml格式
String s = scorePartwise.toXML();
scorePartwise.toFile("music1.xml");
System.out.println(s);
}
}
```
生成的音乐描述文件musicxml格式文件如下:
```
music1
piano
256
0
major
2
G
2
C
4
C
0
4
1024
whole
1
```
用musescore软件渲染结果如下:

### 二、musiccode乐谱可编程性套件
```
# 可编程式音乐描述语言(computer programming of music description language,mdl)
work="测试"
part name=piano
# 片段
staff id=1
c--- # 一个全音符为一行
d- d- # 二分音符
d d d d # 四分音符
-fd -fc -fs -sdf # 八分音符
--aaaaaaaa # 十六分音符
---bbbbbb # 三十二分音符
[cdf] d [fewd] d d w d 1 # 和弦
[---kdf]
C #C和弦,等价于[135]
Cm #小C和弦,等价于[1b35]
end
staff id=2
end
end
```
三、player乐谱播放器套件
四、musicscore乐谱绘图套件
五、GUI套件
六、midi和其它套件