Java Sound Programmer‘s Guide

原文:https://docs.oracle.com/javase/8/docs/technotes/guides/sound/programmer_guide/contents.html

前言

* 本指南的目标读者

本指南适用于三类读者:

  • 应用程序开发人员:希望使用音频或 MIDI 编写 Java 应用程序或小程序的软件程序员。大多数读者都属于这一类。
  • 服务提供者:扩展 Java Sound 应用程序编程接口 (API) 实现功能的软件模块开发人员。例如,供应商可能会提供新的音频混音器或 MIDI 合成器,或者提供读写新文件格式的能力。 Java Sound API 旨在让程序自动访问特定系统上可用的所有此类“插件”模块。
  • API 实现者:开发人员创建 Java Sound API 的新实现。

假定读者具有 Java 语言编程的基本知识。熟悉音频和 MIDI 会有所帮助,但不是假设。

* 本指南描述的内容

这是对 Java Sound API 的主要概念性描述,其中包含一些代码片段作为编程示例。 Java Sound API 指定了一个软件层,允许应用程序与音频和 MIDI 引擎进行通信。 Java Sound API 是 Java 平台标准版 (Java SE) 版本 1.3 的一部分,该版本是本指南所描述的版本。Sound API 包含在 Java 开发工具包 (JDK) 和 Java 运行时环境标准版 (JRE) 中。 Java Sound API 的早期实现是作为单独的产品提供的,它们的编程接口与此处描述的不同。

本指南不是对 Java Sound API 的任何特定实现的描述。例如,您不会在此处找到参考实现中确切支持哪些声音文件格式的列表。 (因为 Java Sound API 使“插件”服务成为可能,API 实现者和/或第三方可以添加对新格式、具有特殊功能的端口等的支持。)一般而言,本指南忽略了独特的功能、扩展、限制、或特定实现的错误。为了方便开发人员,它确实记录了参考实现的一些当前限制。如果您遇到问题,强烈建议您咨询:

1、Java Sound API 简介

1.1、设计目标

Java Sound API 是一个低级 API,用于影响和控制声音媒体的输入和输出,包括音频和乐器数字接口 (MIDI) 数据。 Java Sound API 在一个促进可扩展性和灵活性的框架中提供了对声音输入和输出通常所需功能的显式控制。

1.1.1、Java Sound API 适用于谁?

因为声音是如此基础,Java Sound API 满足了广泛的应用程序开发人员的需求。潜在的应用领域包括:

  • 通信框架,例如会议和电话;
  • 最终用户内容交付系统,例如使用流媒体内容的媒体播放器和音乐;
  • 交互式应用程序,例如使用动态内容的游戏和网站;
  • 内容创建和编辑;
  • 工具、工具包和实用程序。

1.1.2、Java Sound 如何与其他接口相关联?

Java Sound API 提供 Java 平台上最低级别的声音支持。它为应用程序提供了对声音操作的大量控制,并且具有可扩展性。例如,Java Sound API 提供了用于安装、访问和操作系统资源的机制,例如混音器、MIDI 合成器、其他音频或 MIDI 设备、文件读取器和写入器以及声音格式转换器。 Java Sound API 不包括复杂的声音编辑器或图形工具,但它提供了构建此类程序的能力。它强调超出最终用户通常预期的低级控制。

1.2、包(Package)

1.3、采样音频(Sampled Audio)

1.3.1、什么是采样音频?

1.3.2、音频配置

1.4、MIDI

1.4.1、什么是MIDI?

1.4.2、MIDI配置

1.5、服务提供者接口

2、采样包(Sampled Package)概述

2.1、设计目标

2.1.1、专注于数据传输(Data Transport)

2.1.2、音频的缓冲(Buffered)和非缓冲(Unbuffered)处理

2.2、要点:格式(Format)、混音器(Mixer)和线路(Line)

2.2.1、什么是格式化音频数据(Formatted Audio Data)?

2.2.2、什么是混音器(Mixer)?

2.2.3、什么是线路(Line)?

2.2.4、音频输出(Audio-output)配置中的线路

2.2.5、音频输入(Audio-input)配置中的线路

2.2.6、线路接口层次结构

3、访问音频系统资源

3.1、音频系统(AudioSystem)类

3.2、信息对象

3.3、获得混音器Mixer

3.4、获得所需类型的Line

3.4.1、直接从AudioSystem获取线路

3.4.2、从混音器Mixer中获取一条线路

3.5、选择输入和输出端口

3.6、使用音频资源的权限

4、播放音频

4.1、使用剪辑(Clip)

4.1.1、设置播放剪辑

4.1.2、开始和停止播放

4.2、使用SourceDataLine

4.2.1、为播放设置SourceDataLine

4.2.2、开始和停止播放

4.3、监控Line的状态

4.4、多个Line的同步播放

4.5、处理传出音频(Outgoing Audio)

5、捕获音频

5.1、设置TargetDataLine

5.2、从TargetDataLine读取数据

5.3、监控Line的状态

5.4、处理传入的音频

6、使用控件处理音频

6.1、控件简介

6.2、获得具有所需控件的Line

6.3、从Line获取控件

6.4、使用控件更改音频信号

6.4.1、控制Line的静音状态(Mute State)

6.4.2、更改Line的音量(Volume)

6.4.3、在各种混响预设(Reverberation Presets)中进行选择

6.5、直接操作音频数据

7、使用文件和格式转换器

7.1、读取声音文件

7.2、编写声音文件

7.3、转换文件和数据格式

7.3.1、从一种文件格式转换为另一种文件格式

7.3.2、在不同数据格式之间转换音频

7.3.3、了解可用的转换

8、MIDI包概述

8.1、MIDI Refresher:Wires 和 Files

8.1.1、在 MIDI Wire 协议中流式传输数据

8.1.2、标准MIDI文件中的排序数据

8.2、Java Sound API 的 MIDI 数据表示

8.2.1、MIDI 信息

8.2.2、MIDI 事件

8.2.3、序列(Sequences)和轨道(Tracks)

8.3、Java Sound API 对 MIDI 设备的表示

8.3.1、MidiDevice 接口

8.3.2、发射器(Transmitters)和接收器(Receivers)

8.3.3、定序器(Sequencers)

8.3.4、合成器(Synthesizers)

9、访问MIDI系统资源

9.1、MidiSystem类

9.2、获取默认设备

9.3、了解安装了哪些设备

9.4、获取所需设备

9.5、打开设备

10、发送和接收MIDI信息

10.1、了解设备、发射器和接收器

10.2、不使用发射器向接收器发送消息

10.3、了解时间戳

10.3.1、发送到设备的消息的时间戳

10.4、将发射器连接到接收器

10.4.1、连接到单个设备

10.4.2、连接到多个设备

10.4.3、关闭连接

11、播放、录制和编辑MIDI序列

11.1、音序器(Sequencers)简介

11.1.1、何时使用音序器

11.2、了解序列数据(Sequence Data)

11.2.3、序列(Sequences)和轨道(Tracks)

11.2.4、MidiEvents和Ticks

11.3、音序器方法概述

11.4、获取音序器

11.5、加载序列

11.6、播放序列

11.7、记录和保存序列

11.8、编辑序列

11.9、使用高级音序器功能

11.9.1、移动到序列中的任意位置

11.9.2、更改播放速度

11.9.3、静音(Mute)或独奏(Solo)

11.9.4、序列中的轨道

11.9.5、与其他MIDI设备同步

11.9.6、指定特殊事件监听器

12、合成声音

12.1、了解MIDI合成

12.1.1、乐器(Instruments)

12.1.2、通道(Channels)

12.1.3、音库(Soundbanks)和补丁(Patches)

12.1.4、声音(Voices)

12.2、管理乐器和音库

12.2.1、了解加载了哪些乐器

12.2.2、加载不同的乐器

12.2.3、卸载乐器

12.2.4、访问音库资源

12.3、查询合成器的能力(Capabilities)和当前状态(Current State)

12.4、使用通道(Channel)

12.4.1、无需控制合成器

12.4.2、使用音序器(Sequencer)

12.4.3、获取通道的当前状态

12.4.4、静音和独奏通道

12.5、播放合成声音的权限

13、服务提供者接口简介

13.1、什么是服务?

13.2、服务如何运作?

13.3、提供商如何准备新服务?

13.4、用户如何安装新服务?

14、提供采样音频服务

14.1、介绍

14.2、提供音频文件编写服务

14.3、提供音频文件阅读服务

14.4、提供格式转换服务

14.5、提供新型混音器

15、提供MIDI服务

15.1、介绍

15.2、提供MIDI文件写入服务

15.3、提供MIDI文件读取服务

15.4、提供特定的MIDI设备

15.5、提供Soundbank文件读取服务

猜你喜欢

转载自blog.csdn.net/weixin_44623055/article/details/129435772