设备
Device界面为表示音频设备的类提供方法。音频设备可以是共享的也可是独占的系统资源,它可以是基于硬件的,也可基于软件的,还可是同时基于两者的。它能被重复地打开和关闭,它能时常说明它的内在特性及支持的音频格式。同时,它也提供信息对象来描述设备。
JAVA声音 API进一步描述三种设备子界面:
InputDevice
InputDevice界面提供一个方法getInputChannel来获得一个InputChannel对象,从中捕获可读的音频数据。
OutputDevice
OutputDevice界面提供一个方法getOutputChannel来获得一个OutputChannel对象,音频数据可以写入该输出通道,并予播放。
Mixer
Mixer支持多个InputChannel和/或Clip。 另外,它提供了查询方法,从中可得到它所支持的通道数量,它也提供了支持同步暂停和唤醒多个通道播放的方法。
控件
通道和音频端口 (比如扬声器和麦克风)一般能支持一组控件比如增益和定位。通过将它的类作为参数传给getControl()方法,JAVA声音 API的通道对象和端口对象可以获得一个特别的控件。
编码器
Codecs可以对音频数据编码和解码,允许在不同格式和编码之间转换。JAVA声音 API通过AudioSystem类中的方法为这些转换提供了高级接口。如果给了一个特殊的音频流,应用程序会查询音频系统来找到相应的转换,从而得到指定格式的音频流。
文件和流
音频流是与音频数据格式和数据长度相关的输入流,文件流是与文件类型和数据长度相关的输入流。JAVA声音 API在AudioSystem类中为音频文件和音频流之间的转换提供了接口。
查询和访问安装组件
AudioSystem类充当到采样音频系统资源入口的角色。该类允许程序员查询和访问输入设备、输出设备以及安装好的混音设备。另外,AudioSystem包含许多在不同音频数据格式间转换的方法。它也提供一些方法,使得在不需要对设备直接操作的情况下,直接获得输入通道或输出通道。
系统配置-服务提供者界面(SPI)
对采样音频系统的配置是由
javax.media.sound.sampled.spi包来完成的。通过 AudioConfig类的方法,可以在系统中安装或卸载设备,并且可以建立起缺省状态。服务提供者可以希望提供和安装他们自己的编码器和分析器。这个包提供了完成这种功能的机制。
MIDI
javax.media.sound.MIDI程序包描述了 MIDI事件传送、合成、以及序列化的界面。下面介绍该程序包中所用到的主要概念。
传送
基本的MIDI传送界面是 MidiDevice。所有设备为列出其所支持的模式和查询当前模式提供了方法。设备支持监听器,可以监听各种事件如打开和关闭事件,并且有一个信息对象来描述设备状态。
通常,设备是MIDI事件的传送器或接收器之一。传送器界面提供了一些方法来设置和查询接收器,该接收器接收由该传送器发送出的MIDI事件。接收器为接收MIDI事件提供方法。
基本的 MidiEvent对象是通过一个消息说明事件类型、数据长度、以及状态。它也为涉及MIDI计时的设备例如音序器提供准确的计时信号。
合成器
合成器界面是一种生成声音的特殊类型的接收器。它也提供一些方法来管理声音库和乐器。另外,合成器可以支持一组全局的非-MIDI控件例如增益和定位。它也提供对一组MIDI通道的访问,实际上,声音就是通过这些通道产生的。
MidiChannel界面提供一组方法来表达公用的MIDI声音消息例如 noteON, noteOff以及controlChange。还支持对当前通道状态的查询。
序列化
Sequencer界面继承了MidiDevice,它提供了完成基本MIDI序列化操作的方法。音序器可以装载和播放一个序列,查询和设置节奏,并且控制主从同步方式。一个应用程序还可以通过注册使得音序器在处理设备单元和控制器事件时通知自己。
文件和序列化
序列化对象代表一个来自一个或多个磁道的MIDI序列以及相关的计时信息。一个磁道对象包含一系列加上时间标记的MIDI事件。
JAVA声音 API在 MidiSystem类中为在MIDI文件和序列化对象之间转换提供了高级的接口。
查询和访问已经安装了的组件
MidiSystem类充当MIDI音乐系统入口的角色。它提供相关设备的信息并对之进行访问,这些设备包括传送器,接收器,合成器,以及音序器。它也提供了对SoundBank对象的访问。
系统配置-服务提供者接口(SPI)
MIDI系统的配置由
javax.media.sound.midi.spi包来完成的。通过MidiConfig类的方法,设备可以安装到系统中或从中卸载,并且可以建立起缺省状态。服务提供者可以希望提供和安装他们自己的文件和声音库分析器。该SPI程序包中包括了完成这种功能的机制。
JAVA声音 API的市场目标
JAVA声音 API为各种各样的应用程序提供了声音支持。下面列举一些可能的应用。
通信框架
通过计算机召开远程会议
在计算机上实现电话功能
内容发布系统
音乐
信息流
媒体传播
交互式应用程序
游戏
WEB站点
产生动态内容
工具集
内容产生
各种工具
在此基础上
我们能做什么?
JAVA 2通过 AudioClip界面来访问JAVA声音音频引擎。随着1.0 API的发布,
我们所曾经探索的应用领域,就将提供给各地的开发人员使用。
"现在,
我们通过在JAVA2平台中加入真实声音的支持,启动了计算机桌面多媒体市场。以后,
我们将看见
我们的JAVA声音API技术广泛应用于专业人员、普通用户以及国际互连网上的音频应用", Michael Bundschuh说。
电影和录音带公司通过使用JAVA声音 API技术可以获得专业质量音频效果。在JAVA声音引擎中实现支持24位音频和多通道配置将鼓励专业人员开发出高级的声音编辑和播放应用程序。
根据 Kara Kytle所说,对更多的音频数据类型例如MP3的支持已经被提到议事日程。"另一个议程是从外部设备对MIDI数据进行捕获。这将很快实现。"她说。
"JAVA声音 API技术已经可以很好地适用于通过WEB的音频播放。"Bundschuh说。"但是
我们总是跟踪最新的技术,并且开发象MP3这样的技术,同时还要保护音乐文件的安全传送。
我们计划在JAVA声音 API今后的版本中提供对上述技术的支持"。
随着最近市场的发展,象播放基于WEB音乐上的竞争策略一样,大家都已经把发展数字化声音放在中心的位置。新的媒体技术不断涌现,声音将扮演核心的角色。JAVA声音 1.0 API将适时地加入到新的关键应用程序开发行列中来。