写在前面
这几天正在读head first系列的书籍,现在正好读的是java。这本书讲的深入浅出,环环相扣,非常精彩,不妨安利给大家,顺便把我学习过程中的一些心得体会已经实例分享出来。

1.一个最简单音乐播放器的需求

我们需要四样东西:
(1)播放器–Sequencer(实际上播放音乐的控件,可将其想象为一个CD player);
(2)被播放的音乐–Sequence(想象它是一张CD,但是在我们的程序里它只包含一首歌曲);
(3)音乐存储的信息–Track(Sequence中用来存储音乐信息的那一部分)
(4)实际的音乐信息–MidiEvent(包含播放时长,播放记录等)

2.一个最简单音乐播放器的五步骤实现

(1)创造一个Sequencer并打开:

Sequencer player = MidiSystem.getSequencer();
player.open();

(2)创造一个新的Sequence:

Sequence seq = new Sequence(timing, 4);

(3)在这个Sequence中得到一个新Track:

Track track = seq.createTrack();

(4)用MidiEvents来填充Track并将该Sequence放入到Sequencer中:

track.add(myMidiEvent1);
player.setSequence(seq);

(5)开始播放:

player.start();

3.其他需要考虑的要素

(1)需导入专门的包——javax.soud.midi.*
(2)异常处理 try–catch
注:可能存在异常错误MidiUnavailableException,必须捕获或声明以便抛出

4.实例代码

import javax.sound.midi.*; // The midi package is necessarypublic class MiniMusicApp {public static void main(String[] args) {MiniMusicApp mini = new MiniMusicApp();mini.play();}public void play() {try {// Get a sequencer and open itSequencer player = MidiSystem.getSequencer();player.open();Sequence seq = new Sequence(Sequence.PPQ, 4); //Treat the arguments as Ready-bake argumentsTrack track = seq.createTrack(); // Ask the sequence for a track// Put some MidiEvents into the Track, the setMessage() method is what we should really careShortMessage a = new ShortMessage();a.setMessage(144, 1, 44, 100);MidiEvent noteOn = new MidiEvent(a, 1);track.add(noteOn);ShortMessage b = new ShortMessage();b.setMessage(128, 1, 44, 100);MidiEvent noteOff = new MidiEvent(b, 16);track.add(noteOff); player.setSequence(seq); // Give the sequence to the Sequencer// like pushing a CD to a CD playerplayer.start();  // Start the sequencer like pushing PLAY}catch(Exception ex) {ex.printStackTrace();}}  // Close play
} // Close class

至此,一个最最简单的音乐播放器就完成了。当然,因为用的是非常简单的MidiEvent,所以运行程序大家只能听到一个四秒钟左右的叮——声。

后续还会继续对音乐播放器进行完善,大家可以阅读后文,或者直接移步参阅书籍 Head First Java 中的第十一章到十四章。

一个简单音乐播放器的java实现(一)相关推荐

  1. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  2. java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  3. java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...

  4. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  5. 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

  6. 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...

  7. php实现音乐播放器功能,实现一个简单音乐播放器

    做的一个简单的半成品播放器 一.需求分析 1.写静态页面 2.通过getMusicList函数用Ajax获取歌曲数据列表musiclist 3.通过loadMusic函数实现歌曲的播放功能 4.根据获 ...

  8. C/C++简单音乐播放器系统

    C/C++简单音乐播放器系统 程序设计题 1:简单音乐播放器系统 出题人:吴敏 面向专业:计算机科学与技术 难度等级:4 1 问题描述 编写一个简单音乐播放器软件,实现歌单文件的浏览,点歌,加入收藏夹 ...

  9. 简单音乐播放器的设计与实现

    简单音乐播放器的设计与实现 本文将介绍如何在Andriod Studio设计制作一个简单音乐播放器 功能说明 ​ 第二次安卓开发,所以要求相对上次而言难度稍微加大了一点.该程序实现的主要功能有上一曲, ...

最新文章

  1. MFC中显示 .bmp格式的位图
  2. 【Python学习】使用Pyinstaller将py文件导出为exe文件
  3. mybaits三:全局配置文件(全面)
  4. Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
  5. 如何做Teams Bot的测试覆盖
  6. Jirasearch 2.0狗粮:使用Lucene查找我们的Jira问题
  7. 2017.10.10 狼和羊的故事 思考记录
  8. Qt Creator怎样更改默认构建目录
  9. 阿里云Link Security为企业级区块链提供易用性安全解决方案
  10. [UE]EpicGames Launcher 添加/识别本地已有编辑器版本
  11. maya镜头批渲染插件 v1.0.8 更新下载及教程
  12. python 自动化发送邮件_Python自动化必备发送邮件报告脚本详解
  13. 2019 HZNU Winter Training Day 15 Comprehensive Training
  14. 【英语】maintext2-Emotional Mastery译文
  15. css3实现的僵尸走路动画
  16. html四舍五入函数,Javascript四舍五入(Math.round()与Math.pow())
  17. 二维数组 string[,]
  18. MySQL中的describe关键字
  19. 理解用户模式和内核模式(译)
  20. Xxe漏洞 php,PhpSpreadsheet 1.5.0 XXE漏洞复现及分析

热门文章

  1. 开放银行赋能供应链金融,连接企业生态场景
  2. 【读书札记】《北大授课》中华文化四十七讲 余秋雨
  3. 2021年3月12日 星期五 植树节 霾
  4. java 奶牛生子,奶牛镇的小时光npc怎么结婚?结婚生子攻略
  5. SDN:简述对各类SDN控制器的认识
  6. 科学数学工程工具MATLAB软件2023a中文版下载安装,MATLAB特色
  7. 各种表格扫描件OCR识别为电子表格的技术
  8. Modesim仿真出现vlog-2388问题
  9. 手算梯度下降法,详解神经网络迭代训练过程
  10. 分治算法解决问题(c语言)