java真是无所不能,居然还能演奏音乐。今天要介绍的是一个用java写的演奏播放mid音乐的类库,名字叫
jfugue。这个类库的优点是方便写曲谱,使得不懂java sound api的人也能写出程序来演奏mid音乐。
环境:
JDK1.7.0_72 64bit (理论上JDK1.5以上都可以)
当然电脑声卡,音响耳机,客官记得自备。
1.下载
先要到
官网下载jfugue,本文写作时最新版是jfugue-4.0.3.jar。把这个jar包下载下来,加到classpath下就能用了。
2.第一个程序
Player player = new Player();
player.play("C D E F G A B");
没错,就2行代码,就可以演奏出“哆来咪发索拉西”这7个音了!把耳机戴上,听到了吗?
3.进阶,《两只老虎》
Player player = new Player();
//两只老虎
Pattern pattern1 = new Pattern("I[40] C5q D5q E5q C5q");
//跑得快
Pattern pattern2 = new Pattern("E5q F5q G5h");
//一只没有眼睛
Pattern pattern3 = new Pattern("G5i A5i G5i F5i E5q C5q");
//真奇怪
Pattern pattern4 = new Pattern("C5q G4q C5h");
// Put all of the patters together to form the song
Pattern song = new Pattern();
song.add(pattern1, 2); // Adds 'pattern1' to 'song' twice
song.add(pattern2, 2); // Adds 'pattern2' to 'song' twice
song.add(pattern3, 2); // Adds 'pattern3' to 'song' twice
song.add(pattern4, 2); // Adds 'pattern4' to 'song' twice
// Play the song!
player.play(song);
看不懂的话下面解释一下。
4.名词理论
4.1 音符
note 音符
rest 休止符
chord 和弦
jfugue里用MusicString来表示曲谱。
CDEFGAB分别代表:哆来咪发索拉西
R代表 :休止符
sharp 升音符 用#表示
flat 降音符 用b表示
4.2 音阶
octave 八度音阶
如上图所示,一般常用的7个音在红色区域的第5阶。
而MusicString里不写的话默认就为第5阶,比如《两只老虎》基本都是第5阶,只有1个音是第4阶。
4.3 音长
duration 音长
whole | w |
half | h |
quarter | q |
eighth | i |
sixteenth | s |
thirty-second | t |
sixty-fourth | x |
one-twenty-eighth | o |
《两只老虎》里面基本都是q,表示四分之一音长,最后有个h表示二分之一音长。你可以对比上面的乐谱和代码,就能明白了。
4.4 Pattern的运用
Pattern其实就是为了避免重复的乐谱复制粘贴,《两只老虎》里面每段乐谱都重复2遍。所以用了4个Pattern来简化代码。
4.5 乐器
instrument 乐器
默认: Piano
这个是MIDI的一个规范
MIDI定义了128种乐器,用来表现不同的音色。
我这里不复制粘贴了,请自行去维基百科上查阅
General MIDI里面的 旋律音色(Melodic sounds) 这一章节。
要使用乐器,在MusicString里用I[]表示,其中中括号中是乐器的号码,不过和维基百科上的有一点不一样,它是从0开始编号的,所以是0~127
如此便能解释《两只老虎》开头的那个I[40]了,查维基百科上的表可知41号乐器是小提琴。
至此,你应该对《两只老虎》这首曲子的谱写方法完全明白了吧。
5. mid转谱工具
如果懒的话,有一个mid转谱工具可以用,而不用自己一个个把谱敲进去。
这个工具jfugue自带,类名是org.jfugue.extras.Midi2JFugue
比如我们已经在网上下载了一个《卡农》,文件名是canon.mid
执行以下命令,便可以转为乐谱,存到canon.txt里
java -cp jfugue-4.0.3.jar org.jfugue.extras.Midi2JFugue 11 canon.mid canon.txt
这个命令里面的11没有任何意义,只是一个占位符,因为官方这个工具有点小bug,多了一个无用参数。。。
OK,转好,最后用程序播放曲谱,试验下是否ok。(代码见music.7z里的Canon.java,文末自己找下载)
在卡农的乐曲声中,这次对jfugue的介绍就到此结束了。
- 大小: 26.6 KB
- 大小: 11.1 KB
分享到:
相关推荐
JFugue是一个用于音乐作曲的Java API。和其它的音乐API不同,它能够让您用数据字符串来指定音符、乐器、和弦,以及其它音乐数据...您可以在Java应用程序正在运行的时候用JFugue来演奏音乐,或者把音乐保存为MIDI文件。
总的来说,这个“MID音乐包下载.zip”提供了丰富的音乐资源,适合音乐爱好者、作曲家以及任何想欣赏或利用MIDI格式音乐的人。用户不仅可以欣赏到多样的音乐,还可以利用这些文件进行音乐创作、学习或研究,充分发掘...
jfugue还允许使用“T”来设置速度,以及使用“V”和“I”来分别切换不同的通道和乐器。例如,“T[Allegro]”表示将速度设置为快板,“V0I0G6qA5qV1A5qG6q”表示在通道0上用钢琴演奏G6、A5等音符,在通道1上再次用...
从描述中提到的“JAMMING WITH JAVA™ TECHNOLOGY: MAKING MUSIC WITH JFUGUE AND JFRETS”,我们可以推断出文档中包含了如何使用JFugue和另一个相关的库JFrets来制作音乐。文档内容可能会覆盖JFugue的以下方面: 1...
MID文件的工作原理是通过MIDI协议来传输音乐数据,它定义了一套标准的指令集,即MIDI消息,用来控制音乐合成器或者其他音乐设备。例如,MIDI消息可以告诉乐器何时启动一个音符、音高是多少、力度如何以及何时结束。...
- 这个特定的“PC喇叭演奏音乐的控件”可能提供一系列方法来播放不同的音符、节奏和旋律,以及控制播放速度和音量。 - 控件可能还包括事件,如音乐播放开始、结束或暂停时触发,以允许与其他应用程序组件进行交互...
标题“MID背景音乐素材打包下载 很多时候都用得到吧”表明这是一份包含MIDI格式的背景音乐素材集合,可供用户下载使用。MIDI(Musical Instrument Digital Interface)是一种数字音乐标准,它允许电子乐器、计算机和...
尽管如此,mid音乐仍然在某些场景下被使用,比如复古风格的游戏,或是为了节省资源的轻量化游戏。 在本压缩包中,包含的mid文件很可能是手机游戏中的背景音乐或配乐。开发者可能将这些资源用于创建游戏的音乐库,...
· 使用普通的电脑键盘进行演奏,左右手分别独立操作,就像弹钢琴一样。 · 使用自带的大容量音色库,音色逼真,在任何机器上都能保持一致的音色! · 即使是在板载声卡(电脑主板集成的声卡)上也可以实现无延迟...
Matlab的sound函数演奏音乐 视频教程查看bilibili,av46176249 用到一个sound函数,还有十二平均律的乐理知识 生成的中大校歌的谱子参照本科生手册,当然最难的果然还是扒谱了 配的和弦是C F G7 更新了一个新的...
【标题】: "mp3转mid音乐" 是一个关于音频转换技术的话题,特别是涉及将MP3格式的音频文件转换为MIDI(Musical Instrument Digital Interface)格式。MP3是一种广泛使用的有损音频压缩格式,它能提供高质量的声音,...
该文档包含了微机原理课程设计音乐演奏的全部设计过程内容,讲述了汇编语言实现音乐演奏的基本原理和相关的程序。 该文档可以供大家参考,有不足之处,希望能指点迷津。 音乐演奏涉及到的硬件部分有8255A和8253芯片...
在这个“汇编语言程序设计音乐演奏”的项目中,我们看到一个有趣的示例,它将编程与音乐相结合,创建了一个简单的音乐播放器。这个程序通过响应用户的键盘输入来播放不同的乐曲,提供了互动式的音乐体验。 首先,...
汇编语言 演奏音乐 程序 汇编语言 演奏音乐 程序 汇编语言 演奏音乐 程序
在这个主题中,我们将深入探讨如何利用51单片机来演奏音乐。 首先,我们需要了解音乐在51单片机中的实现方式。音乐的演奏通常基于定时器中断,通过改变定时器的中断频率来控制发声芯片或扬声器的振动频率,进而产生...
总的来说,“基于FPGA梁祝音乐演奏仿真”项目不仅展示了FPGA在数字音频处理领域的应用,也为学习者提供了一个融合音乐、电子工程和编程技术的综合性实践案例。通过这个项目,我们可以看到科技如何赋予传统文化新的...
MID音乐文件切割工具是一款专为处理MIDI(Musical Instrument Digital Interface)格式音乐文件而设计的应用程序。在深入探讨这个工具之前,我们先来了解一下MIDI文件的基础知识。 MIDI是一种数字音频标准,它不...
单片机演奏是一种将音乐与微控制器技术相结合的创新方式,它利用单片机的处理能力和编程能力来生成和播放音乐。单片机,又称单片微控制器,是集成了CPU、内存、定时器/计数器、输入/输出接口等组件在单一芯片上的...
单片机步进电机演奏MIDI音乐是一种将数字音乐与硬件控制技术结合的创新实践,主要涉及以下几个核心知识点: 1. **步进电机**:步进电机是一种将电脉冲信号转换为角位移的执行元件,每个脉冲电机转过一个固定的角度...