Java的声音处理介绍

合集下载

Java应用中的音视频处理技术

Java应用中的音视频处理技术

Java应用中的音视频处理技术在Java应用中,音视频处理技术的应用已经变得越来越广泛。

音视频是人们日常生活中不可或缺的重要元素,并且随着通信技术的发展,人们对音视频处理的需求也越来越高。

本文将介绍Java应用中的音视频处理技术,并探讨其在不同领域中的应用。

一、音视频处理技术概述音视频处理技术是一种将音频和视频进行编码、解码、编辑和处理的技术。

它可以对音频和视频进行格式转换、音频合成、视频剪辑、特效添加等操作。

在Java应用中,音视频处理技术可以通过使用各种开源库和框架来实现。

二、音频处理技术1. 音频编解码音频编解码是音频处理的基础。

Java应用中可以使用开源库如FFmpeg和JAVE进行音频编解码,通过对音频流进行解码、处理、再编码,可以实现音频格式转换、音频质量优化等功能。

2. 音频合成音频合成是将多个音频文件合并为一个音频文件。

Java应用中可以使用开源库如Beaglebuddy和Java Sound API来实现音频合成,通过合并不同音频片段,可以实现音频剪辑、声音混合等效果。

3. 声音处理声音处理技术可以对音频进行降噪、增益、均衡器调整等操作,可以改善音频的质量和效果。

Java应用中可以使用开源库如JDK提供的Java Sound API和Google开发的WebRTC来实现声音处理,通过对音频数据进行实时处理,可以提高音频的清晰度和逼真度。

三、视频处理技术1. 视频编解码视频编解码是视频处理的基础。

Java应用中可以使用开源库如Xuggler和FFmpeg来实现视频编解码,通过对视频流进行解码、处理、再编码,可以实现视频格式转换、视频质量优化等功能。

2. 视频剪辑视频剪辑可以对视频进行切割、拼接、删除无用片段等操作。

Java应用中可以使用开源库如JCodec和Xuggler来实现视频剪辑,通过对视频帧进行处理,可以实现视频的快进、慢放、倒放等效果。

3. 视频特效视频特效可以给视频添加滤镜、动画、字幕等效果,提升视觉效果。

Java中解析wav音频文件信息:音频声道数,采样频率,采样位数、声音尺寸

Java中解析wav音频文件信息:音频声道数,采样频率,采样位数、声音尺寸

Java中解析wav⾳频⽂件信息:⾳频声道数,采样频率,采样位数、声⾳尺⼨前⾔:请各⼤⽹友尊重本⼈原创知识分享,谨记本⼈博客:⾳频解析⽅法:1public static int toInt(byte[] b) {2return ((b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0] << 0));3 }45public static short toShort(byte[] b) {6return (short)((b[1] << 8) + (b[0] << 0));7 }8910public static byte[] read(RandomAccessFile rdf, int pos, int length) throws IOException {11 rdf.seek(pos);12byte result[] = new byte[length];13for (int i = 0; i < length; i++) {14 result[i] = rdf.readByte();15 }16return result;17 }⾳频解析⽅法调⽤:1public static void main(String[] args) throws IOException {2 File f = new File("E:/zmj-3011-32779/audio.wav");3 RandomAccessFile rdf = null;4 rdf = new RandomAccessFile(f,"r");56 System.out.println("声⾳尺⼨: " + toInt(read(rdf, 4, 4))); // 声⾳尺⼨78 System.out.println("⾳频格式: " + toShort(read(rdf, 20, 2))); // ⾳频格式 1 = PCM910 System.out.println("声道数: " + toShort(read(rdf, 22, 2))); // 1 单声道 2 双声道1112 System.out.println("采样率: " + toInt(read(rdf, 24, 4))); // 采样率、⾳频采样级别 8000 = 8KHz1314 System.out.println("波形的数据量: " + toInt(read(rdf, 28, 4))); // 每秒波形的数据量1516 System.out.println("采样帧: " + toShort(read(rdf, 32, 2))); // 采样帧的⼤⼩1718 System.out.println("采样位数: " + toShort(read(rdf, 34, 2))); // 采样位数1920 rdf.close();212223 }控制台打印结果:总语我是记录点滴每天成长⼀点点,学习是永⽆⽌境的!转载请附原⽂链接。

毕业设计(论文)-基于java的mp3播放器jmplayer[管理资料]

毕业设计(论文)-基于java的mp3播放器jmplayer[管理资料]

基于JA V A的Mp3播放器JMPlayer作者姓名专业计算机科学与技术指导教师姓名专业技术职务讲师山东轻工业学院本科毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业论文,是本人在指导教师的指导下独立研究、撰写的成果。

论文中引用他人的文献、数据、图件、资料,均已在论文中加以说明,除此之外,本论文不含任何其他个人或集体已经发表或撰写的成果作品。

对本文研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示了谢意。

本声明的法律结果由本人承担。

毕业论文作者签名:年月日山东轻工业学院关于毕业设计(论文)使用授权的说明本毕业论文作者完全了解学校有关保留、使用毕业论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅和借阅,学校可以公布设计论文的全部或部分内容,可以采用影印、扫描等复制手段保存本论文。

指导教师签名:毕业设计(论文)作者签名:年月日年月日目录摘要 (III)ABSTRACT (IV)第一章引言 (1)课题研究背景及意义 (1)音乐播发器的发展及历史 (1)系统开发目标 (2)本文的主要内容和结构 (2)第二章相关工具及技术介绍 (1)Eclipse简介 (3)Java Thread简介 (4)JavaSound简介 (5)Java Swing简介 (6)Java Properties简介 (7)第三章需求分析 (9)工作流程分析 (9)评价具体需求分析 (9)系统功能结构图 (9)功能详细描述 (10)Mp3播放 (10)播放控制 (10)播放信息控制 (10)Mp3列表管理 (11)歌词 (11)其他 (11)第四章总体设计 (12)系统要求 (12)系统功能描述 (12)系统运行环境 (13)系统设计思想 (13)总体流程设计 (13)Mp3播放设计 (14)播放模式设计 (15)Mp3文件列表管理设计 (15)歌词设计 (16)皮肤切换设计 (17)显示模式设计 (18)第五章详细设计 (19)界面设计 (19)系统关键类设计 (20)系统类结构 (22)第六章软件功能实现 (23)播放Mp3实现 (23)Mp3文件解析实现 (23)Mp3列表控制类实现 (23)Mp3歌词解析及显示控制实现 (23)结束语 (25)参考文献 (24)致谢 (27)摘要随着java 语言的出现,软件的跨平台性已经能被更进一步的解决和处理,随着Internet的发展,软件的跨平台性又被提高到另一个新的要求。

Java语音技术之FreeTTS

Java语音技术之FreeTTS

Java语音技术之FreeTTSJava提供了语音API技术用于支持应用程序或Web页面中的人机语音交互,其核心技术包括语音合成和语音识别。

FreeTTS是Java语音合成技术的实现手段之一,以创建电话号码朗读程序为例, 探讨了基于该技术的Java语音API实现方法及相关问题。

计算机技术的快速发展同时也推动了多媒体技术的广泛应用, 人机语音交互已经不再是纯粹的理论研究, 其应用在日常生活中越来越普遍: 如移动终端、通信、信息系统服务、家庭娱乐等。

作为流行的编程语言, Java 提供了语音A P I 技术用于实现应用程序或者Web 页面中的人机语音交互, 包括语音合成和语音识别两部分核心技术,但官方并未提供其实现工具。

FreeTTS 属于第三方免费语音合成java组件, 由Speech Interat ion Group of Sun Micro systemsLaboratiories 和来自IBM的Speech for Java两公司合作开发。

本文探讨了基于FreeTTS的语音朗读程序设计与实现, 为工业应用中相关系统的开发提供一个技术参考。

1.FreeTTS 的获得、安装与配置FreeTTS属于免费的开源java组件, 其官方网站是: ,用户可以在该网站上免费下载。

目前最新的版本是11211,下载后的文件名与格式是: freetts-1.2.2-bin.zip。

基于java的特点,该组件是跨平台的,安装方法与普通java 应用程序或者组件的方法类似, 将文件解压至特定目录并设置环境变量即可, 具体过程可以参考其安装说明。

2.语音合成功能实现以一个例子来说明FreeTTS 的应用。

该程序最终实现的效果如图1所示。

用户在下拉菜单中可选择“张三”、“王五”、“赵七”三个名字,三人依次对应电话号码。

选择人名后点击“读出号码”,系统即可发出声音,将对应的电话号码读出。

该程序的设计包括以下过程:①导入Java 语音API包主要代码:Import javax.speech.* ;Import javax.speech.synthesis.* ;其中javax1speech中的类和接口用来支持音频连通性;javax1speech.synthesis中的类和接口用来支持语音合成。

使用Java分离音频左右声道

使用Java分离音频左右声道

使⽤Java分离⾳频左右声道使⽤Java分离⾳频左右声道1.⾳频属性相关⾳频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、采样位数、时长。

1.1.声道记录声⾳时,如果每次⽣成⼀个声波数据,称为单声道;每次⽣成两个声波数据,称为双声道(⽴体声)。

单声道的声⾳只能使⽤⼀个喇叭发声,双声道的PCM可以使两个喇叭同时发声(⼀般左右声道有分⼯),更能感受到空间效果。

1.2.采样率单位时间内采集的样本数,即:采样周期的倒数,指两个采样之间的时间间隔。

采样频率越⾼,声⾳质量越好,但同时占⽤的带宽越⼤。

⼀般情况下,22KHz相当于普通FM的⾳质,44KHz相当于CD⾳质,⽬前的常⽤采样频率都不超过48KHz。

1.3.采样位数表⽰⼀个样本的⼆进制位数,即:每个采样点⽤多少⽐特表⽰。

计算机中⾳频的量化深度⼀般为4、8、16、32位(bit)等。

例如:采样位数为8 bit时,每个采样点可以表⽰256个不同的采样值,⽽采样位数为16 bit时,每个采样点可以表⽰65536个不同的采样值。

采样位数的⼤⼩影响声⾳的质量,采样位数越多,量化后的波形越接近原始波形,声⾳的质量越⾼,⽽需要的存储空间也越多;位数越少,声⾳的质量越低,需要的存储空间越少。

⼀般情况下,CD⾳质的采样位数是16 bit,移动通信是8 bit。

1.4.帧⾳频在量化得到⼆进制的码字后,需要进⾏变换,⽽变换(MDCT)是以块为单位(block)进⾏的,⼀个块由多个(120或128)样本组成。

⽽⼀帧内会包含⼀个或者多个块。

帧的常见⼤⼩有960、1024、2048、4096等。

⼀帧记录了⼀个声⾳单元,它的长度是样本长度和声道数的乘积。

FFmpeg中 AVFrame 结构体中的 nb_samples 代表的就是⼀帧中单个声道的⾳频样本数量。

数字⾳频⽂件⼤⼩(Byte) = 采样频率(Hz)× 采样时长(S)×(采样位数 / 8)× 声道数(单声道为1,⽴体声为2)2.FFmpeg介绍FFmpeg 是⼀个专业的多媒体框架,能够解码、编码、转码、复⽤、解复⽤、流式传输、过滤和播放⼏乎所有格式的媒体⽂件。

艺术编程知识点总结大全

艺术编程知识点总结大全

艺术编程知识点总结大全艺术编程是一种将编程与艺术相结合的创新领域,通过编程语言和技术创造出视觉和声音艺术作品。

艺术编程通常涉及计算机图形学、音频处理、交互设计和其他数字艺术领域的知识。

下面将总结艺术编程的一些重要知识点,包括编程语言、艺术作品的创作过程、技术应用等方面。

一、编程语言1. ProcessingProcessing是一种基于Java语言的编程语言,专门用于创作视觉艺术作品。

它提供了丰富的绘图和交互设计功能,能够让艺术家和设计师创造出各种动态和静态的艺术作品。

另外,Processing还有一个强大的社区支持,有大量的示例代码和教程可供学习。

2. p5.jsp5.js是一个基于JavaScript的艺术编程工具,类似于Processing,但更适合于在Web环境下进行艺术创作。

它提供了丰富的绘图和动画功能,可以结合HTML和CSS,创建出各种视觉效果。

3. Max/MSPMax/MSP是一种流行的可视化编程语言,主要用于创作音频艺术作品。

它可以创建出各种音频合成、效果处理和交互设计的功能,广泛应用于音乐和声音艺术领域。

4. CinderCinder是一个基于C++的创意编程工具,主要用于艺术家和设计师在计算机图形学领域的创作。

它提供了丰富的图形和视觉效果的功能,可以创建出各种精美的艺术作品。

5. OpenFrameworksOpenFrameworks也是一个基于C++的可视化编程工具,类似于Cinder,广泛应用于计算机图形学和交互设计领域。

二、艺术作品创作1. 视觉艺术作品在艺术编程中,视觉艺术作品是一种常见的创作形式,可以通过编程语言和技术,创造出各种静态和动态的视觉效果。

艺术家可以利用各种绘图和动画功能,生成艺术作品,展现出不同的创作理念和审美观念。

2. 音频艺术作品音频艺术作品是另一种常见的创作形式,在艺术编程中,艺术家可以利用音频合成、效果处理和交互设计功能,创造出各种独特的声音艺术作品。

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

⼿把⼿教你⽤JAVA实现“声⾳复刻”功能(复刻你的声⾳)标贝科技⼿把⼿教你⽤JAVA实现“声⾳复刻”功能(复刻你的声⾳)标贝科技前⾔什么是声⾳复刻?使⽤少量的⽤户声⾳,短时间内快速为⽤户量⾝打造个⼈定制⾳⾊⼀、内容太长不愿意看,直接使⽤系列声⾳复刻分为两步(1)定制模型:参数要求:⽀持⾳频⽂件的编码格式及⽂件名的后缀: wav,pcm⽀持⾳频⽂件的采样率: 16000Hz⽀持⾳频⽂件的位深:16bits⽀持的语⾔:中⽂⾳频有效时长:不⼩于3分钟⾳频的⾳质、⾳量均对模型效果有直接影响,请保证⾳频的录⾳环境相对安静、⾳频⼈声⾳量不能太⼩。

(2)定制声⾳合成:参数要求:⽀持设置合成⾳频的格式: pcm,wav,mp3,alaw,ulaw⽀持设置合成⾳频的采样率: 16000Hz⽀持设置⾳量、语速、语调⽀持语⾔: 中⽂(zh)⽀持声⾳模型类型:普通⾳质、精品⾳质确认⽆误后,直接执⾏ 2.2获取权限+2.3.6完整代码⽰例⼆、⽤JAVA调⽤标贝科技“声⾳复刻”接⼝使⽤流程2.1.环境准备java2.2.获取权限2.1.1.登录点击上⽅地址登录,⽀持短信、密码、微信三种登录⽅式。

2.1.2.创建应⽤登录后,点击创建应⽤,填写相关信息(未实名认证只能创建⼀个应⽤)(注:实名认证后可获得创建多个应⽤的权限)进⼊应⽤,其中包含的技术产品有:语⾳识别、语⾳合成、声⾳复刻、声⾳转换页⾯中功能主要包括:服务⽤量管理、购买服务量管理、开发者⽂档、授权管理、套餐管理2.1.3.获取token点击声⾳复刻--->授权管理--->显⽰--->获取APISecret--->()2.3.代码实现2.3.1.获取token/*** 授权:需要在开放平台获取【https:///#/?source=qaz123】*/private static final String clientSecret = "输⼊你的clientsecret";/*** 获取token的地址信息*/public static String tokenUrl = "https:///oauth/2.0/token?grant_type=client_credentials&client_secret=%s&client_id=%s"; public static String getAccessToken() {String accessToken = "";OkHttpClient client = new OkHttpClient();// request 默认是get请求String url = String.format(tokenUrl, clientSecret, clientId);Request request = new Request.Builder().url(url).build();JSONObject jsonObject;try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {// 解析String resultJson = response.body().string();jsonObject = JSON.parseObject(resultJson);accessToken = jsonObject.getString("access_token");}} catch (Exception e) {e.printStackTrace();}return accessToken;}2.3.2.定制模型--提交复刻任务参数说明:access_token:鉴权tokenoriginFiles:⾳频⽂件集合mobile:⼿机号(⽤于模型训练之后短信提醒)notifyUrl:回调urlprivate static void doSoundReproduction(String accessToken, List<File> originFiles, String mobile, String notifyUrl) {//创建连接OkHttpClient client = new OkHttpClient();//构建requestBody,传⼊参数MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);for (File file : originFiles) {RequestBody body = RequestBody.create(file, MediaType.parse("multipart/form-data"));String filename = file.getName();requestBody.addFormDataPart("originFiles", filename, body);}requestBody.addFormDataPart("access_token", accessToken);requestBody.addFormDataPart("mobile", mobile);requestBody.addFormDataPart("notifyUrl", notifyUrl);//构造requestRequest request = new Request.Builder().url(soundReproductionUrl).method("POST", requestBody.build()).build();try {Response response = client.newCall(request).execute();if (response.isSuccessful()) {System.out.println("调⽤成功,返回结果:" + response.body().string());} else {System.out.println("调⽤失败,返回结果:" + response.body().string());}} catch (Exception e) {e.printStackTrace();}}2.3.3.定制模型-回调代码@ApiOperation(value = "测试⽤回调接⼝", notes = "该链接由参数notifyUrl设置,如果链接⽆法访问,将⽆法接收到回调的push信息。

Java Sound API心得

Java Sound API心得

Java Sound API是javaSE平台提供底层的(low-level)处理声音接口。

例外,java也提供了简单的实用的高层媒体接口(higher-level) -JMF(Java Media Framework)。

Java Sound API 将需要处理的数字音频分为:simpled-audio和midi,分别提供Package来处理它们:javax.sound.simpledjavax.sound.midi同时SOUND API还提供了第三方的扩展接口:javax.sound.simpled.spijavax.sound.midi.spi*注:spi : service provider interfaceSampled Audio采样音频(simpled-audio)不仅包含从模拟信号采样来的数字音频,还包括电脑合成的。

称作digital-audio更为合适。

为了能够让设备播放采样声音,程序需要处理audio input, output device, audio data buffers。

还有混音处理(mix multiple streams of audio into one stream)。

SOUND API 可以使用3种方式传输声音数据:stream, buffered fashion, in-memory unbuffered fashion。

第三种方式适合数据量不大,能够一次载入的所有数据的情形。

这样,声音的响应较快,循环和随机定位也会很简单。

使用SOUND API播放声音至少需要3样东西:l formatted audio data,l a mixer,l a line.Mixer调音台technically the Mixer itself is also a kind of LineLine音频数据管道。

Clip extends Line将需要播放的音频数据装载进来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java的声音处理介绍声音可以创造意境,触发遐想,当与虚拟图像相结合时,更加可以让整个世界布满幻觉。

声音是多媒体技术的基础。

这就是Sun公司的java媒体技术开发小组忙于预备Java Sound 1.0 API并将其包含于下一版本的JAVA开发工具库中的原因。

在JAVA2平台出现之前,JAVA语言只能处理电话音质的声音,以单声道8KHZ的采样频率存储为μ-law AU文件。

JAVA2平台增加了对AIFF,WAV以及三种MIDI文件类型的支持。

所支持的三种MIDI文件格式为MIDI文件类型0、MIDI文件类型1、以及RMF。

应用程序接口API1.0版提供了一个易于使用的工具集,使程序员可以访问底层的合成与演奏引擎,从而扩展了 JAVA声音的应用。

其中两个重要的领域是创建数字化音频以及乐器指令数字化接口MIDI。

由于提供了大量的底层支持功能,所以程序员能输入输出声音,控制MIDI设备,并能查询系统运作情况。

声音文件类型简介主要的声音文件类型如下:AU - (扩展名为AU或SND)适用于短的声音文件,为Solaris和下一代机器的通用文件格式,也是JAVA平台的标准的音频格式。

AU类型文件使用的三种典型音频格式为: 8位μ-law类型(通常采样频率为8kHz), 8位线性类型,以及16位线性类型。

WAV - (扩展名为WAV)由 Microsoft和 IBM共同开发,对WAV的支持已经被加进Windows 95并且被延伸到Windows 98. WAV文件能存储各种格式包括μ-law,a-law 和 PCM (线性)数据。

他们几乎能被所有支持声音的Windows应用程序播放。

AIFF - (扩展名为AIF或IEF)音频互换文件格式是为Macintosh计算机和Silicon Graphics (SGI)计算机所共用的标准音频文件格式。

AIFF和 AIFF-C几乎是相同的,除了后者支持例如μ-law和 IMA ADPCM类型的压缩。

MIDI - (扩展名为MID)乐器数字接口MIDI是为音乐制造业所认可的标准,主要用于控制诸如合成器和声卡之类的设备。

MIDI文件不包含数字音频采样,而是包括一系列指令,这些指令控制把来自不同乐器上的音符序列合成乐曲。

一些MIDI文件包含附加指令来为各种合成设置进行编程。

大多数合成器支持MIDI标准,所以在一个合成器上制作的音乐能够在另一个上播放。

有 MIDI接口的计算机能操纵 MIDI数据以产生新音乐或音响效果。

例如,一个完整的音乐作品可以通过一个软件驱动的命令转换成全新的形式。

JAVA声音引擎支持两种MIDI文件类型:MIDI类型0文件-包含仅仅一个序列,所有相关的乐器部分被包含在同一个逻辑 "磁道"上。

MIDI类型1文件-包含多重的 "磁道"使得不同的乐器被逻辑地分开,从而使对声音的操作和重组更加轻易。

RMF - (扩展名为RMF)混合音乐格式是由Beatnik设计出来的混合文件类型,通过交互式设定将MIDI和音频采样封装在一起。

RMF好比是一个所有音乐相关文件的容器。

RMF也包含对有关版权的具体文件说明的支持。

RMF文件可以包含多个由不同艺术家创作的存储为MIDI类型或音频采样类型的作品,每个都关联着相关的版权信息。

对声音引擎的选择在1997年,SUN的JAVA媒体开发组试图找到一种方法,以增强声音的处理能力并为将来提供一个坚实的平台。

根据JAVA媒体开发组经理Michael Bundschuh所说, "我们想要非常高质量的播放引擎以处理所有的从八位μ-law级直到 CD质量声音的每一件操作。

我们希望轻松跨越所有平台,诸如Solaris平台, Windows, Mac以及其他。

我们也想要高度发展了的能够跨越不同平台的MIDI能力。

为上述目的,合理的选择是Beatnik的音频引擎(从前是 Headspace。

)"SUN取得了Beatnik的音频引擎使用许可,把它当作JAVA声音应用程序接口API的基础。

Thomas Dolby Robertson-Beatnik简介在90年代初之前,Thomas Dolby Robertson的职业完全在音乐方面。

他1982推出的"她用科学照亮了我"是一部早期的MTV巨作。

整个80年代,他都在不断地作曲和录音,使用一种非结构化音乐制作软件。

但是在 1990,通过一次为Guggenheim 博物馆演示虚拟现实的合作,他开始思考能否做一些提高音乐制作能力的工作。

"我当时正伏在 C程序员的肩上,并且我忽然熟悉到为做记录做了大量的工作,可是没有为演奏时的交互做任何事情。

"有了这样的想法,Robertson在1992年建立了 Headspace,雇用月光作曲组来帮助实现他的观点。

Headspace于1996年成为公司,现在被称为Beatnik。

JAVA声音音频引擎JAVA声音引擎为多媒体创建,同时考虑了游戏设计和发布WEB内容。

用标准的MIDI文件、RMF文件、并且/或来自任何源的采样,该引擎将播放音乐或制造音响效果,同时尽可能少用CPU。

它提供完全的播放控制,具有混合音响的能力并可实时地回应用户的输入。

JAVA声音引擎是软件 MIDI合成器,采样播放设备,以及16位立体混声器。

它支持混合直到64位的立体MIDI声音和音频采样。

它直接支持MIDI类型0和类型1文件以及从 8位设备到16位乐器的波表合成。

该引擎支持所有通用的 MIDI控制器并且包含象回声处理, LFO (控制过滤器或立体声设备)之类的特性,以及ADSR信封 (播放时整形采样)。

即使用上所有的功能,JAVA声音引擎在一个 90Mhz的奔腾计算机上也占用不超过30%的CPU时间。

它还能通过有选择地禁用不需要的特性,使其变得更加高效一些。

另外,它发布了存储在压缩的 RMF音乐文件中的丰富的内容。

Thomas Dolby Robertson 的"她用科学照亮了我",一首7分21秒的歌曲,如存储为CD音质的文件足足占用70M 字节空间。

假如以RMF格式存储只需大约636 KB,是120:1的减少,同时丝毫不减音质。

JAVA平台声音的简要历史在JDK 1.0.x及JDK 1.1.x下, AudioCl ip接口提供下列机能:l AudioClip接口播放循环停止恢复和播放声音最简单的方法是通过Applet类的play()方法。

调用play()方法有如下二种方式:play()-带有一个参数,一个 URL对象,装载并演奏储存在 URL处的声音片断。

play()-带有二个参数,基本 URL和文件夹路径名,装载并演奏声音文件。

第一参数经常是对getCodeBase()或 getDocumentBase()的调用。

下列代码片断举例说明了直接播放 hello.au的方法。

AU文件与小应用程序位于相同文件夹或目录。

play(getCodeBase(), "hello.au");play()一旦被调用马上开始恢复和播放声音。

假如声音文件不能被查找,将不会有出错信息,仅仅是沉默。

启动和停止声音文件,或循环播放,你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象,类似上面play()方法的参数,getAudioClip方法要用一个或两个参数,当作播放的指示。

第一个或唯一的一个参数是 URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。

下列代码行举例说明加载声音文件进入剪贴对象:AudioClip co = getAudioClip(getCodeBase(), "horns.wav");getAudioClip()方法仅仅能被applet内调用。

随着JAVA2的引入,应用程序也能用Applet类的newAudioClip方法装入声音文件。

前一例子可以改写如下以用于Java应用程序:AudioClip co = newAudioClip("horns.wav");在你已创建 AudioClip对象之后,你能用该对象调用play()、loop()以及stop()方法。

假如 getAudioClip或 newAudioClip方法不能找到指定的声音文件, AudioClip对象的值将是空的。

试着播放空对象会导致出错,所以标准的过程首先是对该条件进行检测。

接下来是一个完整的程序设计示例,该程序将产生一个applet,当鼠标在该小应用程序applet范围内按下时会播放 flute+hrn+mrmba.au音乐样本。

此AU示例文件与applet在相同目录或文件夹下的。

import java.applet.*;import java.awt.event.*;public class PlayAudio extends Appletimplements MouseListener {AudioClip audio;public void init() {audio = getAudioClip(getDocumentBase(),"flute+hrn+mrmba.au");addMouseListener(this);}public void mouse PR essed(MouseEvent evt) {if (audio != null) audio.play();}public void mouseEntered (MouseEvent me) {}public void mouseExited (MouseEvent me) {}public void mouseClicked (MouseEvent me) {public void mouseReleased(MouseEvent me) {}}注重:在许多JAVA2技术书籍中,mouseDown()方法确实是JAVA 1.0事件模型的一部分。

使用该方法会有一定的危险,因为该方法在将来可能不会被支持。

在JAVA2平台下将MouseListener与 mousePressed结合使用是优先的选择。

API 1.0-质的飞跃注重:下列备注是以JAVA API的早期版本0.86为基础的。

虽然目前这里讨论的大多数对象和概念与过去保持一致,但由于该API版本已经终止,出现某些改变的可能是存在的。

JAVA声音 1.0 API为JAVA平台定义了一整套的基本的底层音频处理功能。

它提供如下接口为:音频捕捉和播放IDI合成及序列化这两个主要的功能模块在各自的程序包中提供。

javax.media.sound.sampled-该程序包明确地说明了捕捉、混合以及回播数字采样音频的界面。

相关文档
最新文档