真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JAVA聲音技術(shù)(轉(zhuǎn))

聲音可以創(chuàng)造意境,觸發(fā)遐想,當(dāng)與虛擬圖像相結(jié)合時(shí),更加可以讓整個(gè)世界充滿幻覺(jué)。聲音是多媒體技術(shù)的基礎(chǔ)。這就是Sun公司的JAVA媒體技術(shù)開發(fā)小組忙于準(zhǔn)備Java Sound 1.0 API并將其包含于下一版本的JAVA開發(fā)工具庫(kù)中的原因。
  在JAVA2平臺(tái)出現(xiàn)之前,JAVA語(yǔ)言只能處理電話音質(zhì)的聲音,以單聲道8KHZ的采樣頻率存儲(chǔ)為μ-law AU文件。JAVA2平臺(tái)增加了對(duì)AIFF,WAV以及三種MIDI文件類型的支持。所支持的三種MIDI文件格式為MIDI文件類型0、MIDI文件類型1、以及RMF。
  應(yīng)用程序接口API1.0版提供了一個(gè)易于使用的工具集,使程序員可以訪問(wèn)底層的合成與演奏引擎,從而擴(kuò)展了JAVA聲音的應(yīng)用。其中兩個(gè)重要的領(lǐng)域是創(chuàng)建數(shù)字化音頻以及樂(lè)器指令數(shù)字化接口MIDI。由于提供了大量的底層支持功能,所以程序員能輸入輸出聲音,控制MIDI設(shè)備,并能查詢系統(tǒng)運(yùn)作情況。

  聲音文件類型簡(jiǎn)介

  主要的聲音文件類型如下:

  AU - (擴(kuò)展名為AU或SND)適用于短的聲音文件,為Solaris和下一代機(jī)器的通用文件格式,也是JAVA平臺(tái)的標(biāo)準(zhǔn)的音頻格式。AU類型文件使用的三種典型音頻格式為: 8位μ-law類型(通常采樣頻率為8kHz), 8位線性類型,以及16位線性類型。
  WAV - (擴(kuò)展名為WAV)由 Microsoft和 IBM共同開發(fā),對(duì)WAV的支持已經(jīng)被加進(jìn)Windows 95并且被延伸到Windows 98. WAV文件能存儲(chǔ)各種格式包括μ-law,a-law和 PCM (線性)數(shù)據(jù)。他們幾乎能被所有支持聲音的Windows應(yīng)用程序播放。

  AIFF - (擴(kuò)展名為AIF或IEF)音頻互換文件格式是為Macintosh計(jì)算機(jī)和Silicon Graphics (SGI)計(jì)算機(jī)所共用的標(biāo)準(zhǔn)音頻文件格式。AIFF和 AIFF-C幾乎是相同的,除了后者支持例如μ-law和 IMA ADPCM類型的壓縮。

  MIDI - (擴(kuò)展名為MID)樂(lè)器數(shù)字接口MIDI是為音樂(lè)制造業(yè)所認(rèn)可的標(biāo)準(zhǔn),主要用于控制諸如合成器和聲卡之類的設(shè)備。

  MIDI文件不包含數(shù)字音頻采樣,而是包括一系列指令,這些指令控制把來(lái)自不同樂(lè)器上的音符序列合成樂(lè)曲。一些MIDI文件包含附加指令來(lái)為各種合成設(shè)置進(jìn)行編程。

  大多數(shù)合成器支持MIDI標(biāo)準(zhǔn),所以在一個(gè)合成器上制作的音樂(lè)能夠在另一個(gè)上播放。 有 MIDI接口的計(jì)算機(jī)能操縱 MIDI數(shù)據(jù)以產(chǎn)生新音樂(lè)或音響效果。例如,一個(gè)完整的音樂(lè)作品可以通過(guò)一個(gè)軟件驅(qū)動(dòng)的命令轉(zhuǎn)換成全新的形式。

  JAVA聲音引擎支持兩種MIDI文件類型:

  MIDI類型0文件-包含僅僅一個(gè)序列,所有相關(guān)的樂(lè)器部分被包含在同一個(gè)邏輯 "磁道"上。

  MIDI類型1文件-包含多重的 "磁道"使得不同的樂(lè)器被邏輯地分開,從而使對(duì)聲音的操作和重組更加容易。

  RMF - (擴(kuò)展名為RMF)混合音樂(lè)格式是由Beatnik設(shè)計(jì)出來(lái)的混合文件類型,通過(guò)交互式設(shè)定將MIDI和音頻采樣封裝在一起。RMF好比是一個(gè)所有音樂(lè)相關(guān)文件的容器。RMF也包含對(duì)有關(guān)版權(quán)的詳細(xì)文件說(shuō)明的支持。RMF文件可以包含多個(gè)由不同藝術(shù)家創(chuàng)作的存儲(chǔ)為MIDI類型或音頻采樣類型的作品,每個(gè)都關(guān)聯(lián)著相關(guān)的版權(quán)信息。

對(duì)聲音引擎的選擇

  在1997年,SUN的JAVA媒體開發(fā)組試圖找到一種方法,以增強(qiáng)聲音的處理能力并為將來(lái)提供一個(gè)堅(jiān)實(shí)的平臺(tái)。根據(jù)JAVA媒體開發(fā)組經(jīng)理Michael Bundschuh所說(shuō),
"我們想要非常高質(zhì)量的播放引擎以處理所有的從八位μ-law級(jí)直到 CD質(zhì)量聲音的每一件操作。 我們希望輕松跨越所有平臺(tái),諸如Solaris平臺(tái), Windows, Mac以及其他。我們也想要高度發(fā)展了的能夠跨越不同平臺(tái)的MIDI能力。為上述目的,合理的選擇是Beatnik的音頻引擎(從前是Headspace。)"
SUN取得了Beatnik的音頻引擎使用許可,把它當(dāng)作JAVA聲音應(yīng)用程序接口API的基礎(chǔ)。

  Thomas Dolby Robertson-Beatnik簡(jiǎn)介

  在90年代初之前,Thomas Dolby Robertson的職業(yè)完全在音樂(lè)方面。他1982推出的"她用科學(xué)照亮了我"是一部早期的MTV巨作。整個(gè)80年代,他都在不斷地作曲和錄音,使用一種非結(jié)構(gòu)化音樂(lè)制作軟件。但是在 1990,通過(guò)一次為Guggenheim博物館演示虛擬現(xiàn)實(shí)的合作,他開始思考能否做一些提高音樂(lè)制作能力的工作。

  "我當(dāng)時(shí)正伏在 C程序員的肩上,并且我突然認(rèn)識(shí)到為做記錄做了大量的工作,可是沒(méi)有為演奏時(shí)的交互做任何事情。"有了這樣的想法,Robertson在1992年建立了Headspace,雇用月光作曲組來(lái)幫助實(shí)現(xiàn)他的觀點(diǎn)。Headspace于1996年成為公司,現(xiàn)在被稱為Beatnik。

  JAVA聲音音頻引擎

  JAVA聲音引擎為多媒體創(chuàng)建,同時(shí)考慮了游戲設(shè)計(jì)和發(fā)布WEB內(nèi)容。用標(biāo)準(zhǔn)的 MIDI文件、RMF文件、并且/或來(lái)自任何源的采樣,該引擎將播放音樂(lè)或制造音響效果,同時(shí)盡可能少用CPU。它提供完全的播放控制,具有混合音響的能力并可實(shí)時(shí)地回應(yīng)用戶的輸入。

  JAVA聲音引擎是軟件 MIDI合成器,采樣播放設(shè)備,以及16位立體混聲器。它支持混合直到64位的立體MIDI聲音和音頻采樣。它直接支持MIDI類型0和類型1文件以及從8位設(shè)備到16位樂(lè)器的波表合成。該引擎支持所有通用的 MIDI控制器并且包含象回聲處理, LFO (控制過(guò)濾器或立體聲設(shè)備)之類的特性,以及ADSR信封 (播放時(shí)整形采樣)。

  即使用上所有的功能,JAVA聲音引擎在一個(gè)90Mhz的奔騰計(jì)算機(jī)上也占用不超過(guò)30%的CPU時(shí)間。它還能通過(guò)有選擇地禁用不需要的特性,使其變得更加高效一些。另外,它發(fā)布了存儲(chǔ)在壓縮的RMF音樂(lè)文件中的豐富的內(nèi)容。Thomas Dolby Robertson的"她用科學(xué)照亮了我",一首7分21秒的歌曲,如存儲(chǔ)為CD音質(zhì)的文件足足占用70M字節(jié)空間。如果以RMF格式存儲(chǔ)只需大約636 KB,是120:1的減少,同時(shí)絲毫不減音質(zhì)。
為更多有關(guān)Beatnik的信息,請(qǐng)看Beatnik的WEB站點(diǎn)。

JAVA平臺(tái)聲音的簡(jiǎn)要?dú)v史

  在JDK 1.0.x及JDK 1.1.x下, AudioClip接口提供下列機(jī)能:

  l AudioClip接口
    播放
    循環(huán)
    停止

  恢復(fù)和播放聲音最簡(jiǎn)單的方法是通過(guò)Applet類的play()方法。調(diào)用play()方法有如下二種方式:

  play()-帶有一個(gè)參數(shù),一個(gè) URL對(duì)象,裝載并演奏儲(chǔ)存在 URL處的聲音片斷。

  play()-帶有二個(gè)參數(shù),基本 URL和文件夾路徑名,裝載并演奏聲音文件。第一參數(shù)經(jīng)常是對(duì)getCodeBase()或 getDocumentBase()的調(diào)用。

  下列代碼片斷舉例說(shuō)明了直接播放 hello.au的方法。AU文件與小應(yīng)用程序位于相同文件夾或目錄。

play(getCodeBase(), "hello.au");

  play()一旦被調(diào)用立刻開始恢復(fù)和播放聲音。如果聲音文件不能被查找,將不會(huì)有出錯(cuò)信息,僅僅是沉默。
  啟動(dòng)和停止聲音文件,或循環(huán)播放,你必須用 applet的 getAudioClip方法把它裝載進(jìn)入 AudioClip對(duì)象,類似上面play()方法的參數(shù),getAudioClip方法要用一個(gè)或兩個(gè)參數(shù),當(dāng)作播放的指示。 第一個(gè)或唯一的一個(gè)參數(shù)是 URL參數(shù),用來(lái)指示聲音文件的位置,第二參數(shù)是文件夾路徑指針。

  下列代碼行舉例說(shuō)明加載聲音文件進(jìn)入剪貼對(duì)象:

AudioClip co = getAudioClip(getCodeBase(), "horns.wav");

  getAudioClip()方法僅僅能被applet內(nèi)調(diào)用。隨著JAVA2的引入,應(yīng)用程序也能用Applet類的newAudioClip方法裝入聲音文件。前一例子可以改寫如下以用于Java應(yīng)用程序:

AudioClip co = newAudioClip("horns.wav");

  在你已創(chuàng)建 AudioClip對(duì)象之后,你能用該對(duì)象調(diào)用play()、loop()以及stop()方法。如果 getAudioClip或 newAudioClip方法不能找到指定的聲音文件, AudioClip對(duì)象的值將是空的。試著播放空對(duì)象會(huì)導(dǎo)致出錯(cuò),所以標(biāo)準(zhǔn)的過(guò)程首先是對(duì)該條件進(jìn)行檢測(cè)。
接下來(lái)是一個(gè)完整的程序設(shè)計(jì)示例,該程序?qū)a(chǎn)生一個(gè)applet,當(dāng)鼠標(biāo)在該小應(yīng)用程序applet范圍內(nèi)按下時(shí)會(huì)播放 flute+hrn+mrmba.au音樂(lè)樣本。此AU示例文件與applet在相同目錄或文件夾下的。

import java.applet.*;
import java.awt.event.*;

public class PlayAudio extends Applet
implements MouseListener {
AudioClip audio;

public void init() {
audio = getAudioClip(getDocumentBase(),
"flute+hrn+mrmba.au");
addMouseListener(this);
}

public void mousePressed(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技術(shù)書籍中,mouseDown()方法確實(shí)是JAVA 1.0事件模型的一部分。使用該方法會(huì)有一定的危險(xiǎn),因?yàn)樵摲椒ㄔ趯?lái)可能不會(huì)被支持。在JAVA2平臺(tái)下將MouseListener與mousePressed結(jié)合使用是優(yōu)先的選擇。

API 1.0-質(zhì)的飛躍

  注意:下列備注是以JAVA API的早期版本0.86為基礎(chǔ)的。雖然目前這里討論的大多數(shù)對(duì)象和概念與過(guò)去保持一致,但由于該API版本已經(jīng)終止,出現(xiàn)某些改變的可能是存在的。

  JAVA聲音 1.0 API為JAVA平臺(tái)定義了一整套的基本的底層音頻處理功能。它提供如下接口為:

  音頻捕獲和播放

  IDI合成及序列化
  這兩個(gè)主要的功能模塊在各自的程序包中提供。

javax.media.sound.sampled-該程序包明確地說(shuō)明了捕獲、混合以及回播數(shù)字采樣音頻的界面。

javax.media.sound.MIDI-該程序包提供MIDI合成、序列化以及事件傳送的界面。

  JAVA 1.0 API具備如下特性:

  數(shù)字音頻


 頻捕獲-從輸入源例如麥克風(fēng)進(jìn)行數(shù)據(jù)捕獲。  
 音和重播-將各種輸入源的聲音混合并重播。  
 制與編碼-調(diào)整增益、定位、回音處理等等,以及進(jìn)行格式轉(zhuǎn)換。
 態(tài)及其提示-當(dāng)重播開始和結(jié)束、設(shè)備打開或關(guān)閉以及其他相關(guān)事件發(fā)生時(shí)接收事件。

  對(duì)MIDI的支持
  
 MIDI消息-交換消息(打開音符,關(guān)閉音符,諸如此類)   
 合成-從MIDI數(shù)據(jù)裝入樂(lè)器并產(chǎn)生聲音。   
 序列化-裝入一個(gè)MIDI序列,開始和停止播放,以及調(diào)整節(jié)奏。</li>

  工具
  
 件輸入輸出-讀寫通用音頻文件例如WAV,AIFF及MIDI  
 置-查詢系統(tǒng)來(lái)獲得組件和設(shè)備的信息;安裝或取消編碼、文件分析器和設(shè)備等。
數(shù)字化音頻

  通道

  Kara Kytle, JAVA聲音 API主管工程師和系統(tǒng)設(shè)計(jì)師說(shuō):"Channel是音頻管道中的基本功能部件"。實(shí)現(xiàn)Channel界面的類代表著該"管道"的一個(gè)元素,例如硬件設(shè)備,一個(gè)聲音合成器,或者是一個(gè)單音頻流。

  InputChannel和 OutputChannel繼承了Channel,分別用于讀入被捕獲的數(shù)據(jù)和為播放寫數(shù)據(jù)。子界面Clip支持對(duì)預(yù)裝入的音頻數(shù)據(jù)循環(huán)播放和重新定位。Device表示任何用于捕獲、播放或混和音頻的硬件或軟件設(shè)備。

  該界面的層次結(jié)構(gòu)如下圖所示。參考包javax.media.sound.sampled。

  


  當(dāng)一個(gè)Channel打開時(shí),它為自己保留了系統(tǒng)資源 ,并且當(dāng)它結(jié)束時(shí),這些資源被釋放給其他的應(yīng)用程序和對(duì)象使用。用isOpen()方法可以查詢Channel是打開還是關(guān)閉的。數(shù)據(jù)的處理通常由子界面方法比如read()方法來(lái)啟動(dòng),這部分在InputChannel界面說(shuō)明描述 (請(qǐng)看JAVA聲音 API的說(shuō)明書)。

  處理方法使Channel處于負(fù)責(zé)輸入或輸出音頻數(shù)據(jù)的狀態(tài)。用isActive方法可以識(shí)別Channel是否處于這種狀態(tài)。通過(guò)調(diào)用pause()方法可以使通道處于暫停狀態(tài),此狀態(tài)可以通過(guò)isPaused()方法判別。當(dāng)通道被暫停時(shí),有三種選擇:保留數(shù)據(jù)(缺省),用flush()方法丟棄內(nèi)部緩沖器中的數(shù)據(jù),或用drain()方法使內(nèi)部緩存中的數(shù)據(jù)被立即處理。

  對(duì)象事先可以注冊(cè),這樣每當(dāng)通道狀態(tài)改變時(shí)它都可以收到通告信息。該注冊(cè)對(duì)象必須實(shí)現(xiàn)Channel.Listener界面,該界面僅包含一個(gè)方法update()。當(dāng)Channel打開、結(jié)束、啟動(dòng)、及停止時(shí),該方法都將被調(diào)用。當(dāng)Channel開始或停止活動(dòng)以及開始或停止捕獲數(shù)據(jù)時(shí),會(huì)產(chǎn)生start或stop事件。

  輸入通道

  InputChannel是被捕獲的音頻數(shù)據(jù)的源頭。該界面提供了方法,可從 InputChannel緩沖器讀取被捕獲的數(shù)據(jù),并判斷當(dāng)前可讀的數(shù)據(jù)量。如果應(yīng)用程序試圖讀過(guò)多的數(shù)據(jù),該讀方法阻塞,直到所需讀取數(shù)據(jù)達(dá)到為止。

  輸出通道

  OutputChannel接收用于播放的音頻數(shù)據(jù)。這接口提供方法,將要播放的數(shù)據(jù)寫入OutputChannel的緩沖區(qū),并能判斷該通道不間斷可接收的數(shù)據(jù)量。如果應(yīng)用程序試圖寫過(guò)量的數(shù)據(jù),該讀方法阻塞,直到有足夠數(shù)據(jù)為止。

  剪貼

  Clip接口表示一個(gè)特殊的通道,它可以在播放之前先裝入音頻數(shù)據(jù)。由于數(shù)據(jù)是預(yù)裝入的,而不是流入的,所以clip可以支持持續(xù)查詢、循環(huán)播放、以及重新定位播放。

設(shè)備

  Device界面為表示音頻設(shè)備的類提供方法。音頻設(shè)備可以是共享的也可是獨(dú)占的系統(tǒng)資源,它可以是基于硬件的,也可基于軟件的,還可是同時(shí)基于兩者的。它能被重復(fù)地打開和關(guān)閉,它能時(shí)常說(shuō)明它的內(nèi)在特性及支持的音頻格式。同時(shí),它也提供信息對(duì)象來(lái)描述設(shè)備。

  JAVA聲音 API進(jìn)一步描述三種設(shè)備子界面:

InputDevice
InputDevice界面提供一個(gè)方法getInputChannel來(lái)獲得一個(gè)InputChannel對(duì)象,從中捕獲可讀的音頻數(shù)據(jù)。

OutputDevice
OutputDevice界面提供一個(gè)方法getOutputChannel來(lái)獲得一個(gè)OutputChannel對(duì)象,音頻數(shù)據(jù)可以寫入該輸出通道,并予播放。

Mixer
Mixer支持多個(gè)InputChannel和/或Clip。 另外,它提供了查詢方法,從中可得到它所支持的通道數(shù)量,它也提供了支持同步暫停和喚醒多個(gè)通道播放的方法。

  控件

  通道和音頻端口 (比如揚(yáng)聲器和麥克風(fēng))一般能支持一組控件比如增益和定位。通過(guò)將它的類作為參數(shù)傳給getControl()方法,JAVA聲音 API的通道對(duì)象和端口對(duì)象可以獲得一個(gè)特別的控件。

  編碼器
  Codecs可以對(duì)音頻數(shù)據(jù)編碼和解碼,允許在不同格式和編碼之間轉(zhuǎn)換。JAVA聲音 API通過(guò)AudioSystem類中的方法為這些轉(zhuǎn)換提供了高級(jí)接口。如果給了一個(gè)特殊的音頻流,應(yīng)用程序會(huì)查詢音頻系統(tǒng)來(lái)找到相應(yīng)的轉(zhuǎn)換,從而得到指定格式的音頻流。

  文件和流

  音頻流是與音頻數(shù)據(jù)格式和數(shù)據(jù)長(zhǎng)度相關(guān)的輸入流,文件流是與文件類型和數(shù)據(jù)長(zhǎng)度相關(guān)的輸入流。JAVA聲音 API在AudioSystem類中為音頻文件和音頻流之間的轉(zhuǎn)換提供了接口。

  查詢和訪問(wèn)安裝組件

  AudioSystem類充當(dāng)?shù)讲蓸右纛l系統(tǒng)資源入口的角色。該類允許程序員查詢和訪問(wèn)輸入設(shè)備、輸出設(shè)備以及安裝好的混音設(shè)備。另外,AudioSystem包含許多在不同音頻數(shù)據(jù)格式間轉(zhuǎn)換的方法。它也提供一些方法,使得在不需要對(duì)設(shè)備直接操作的情況下,直接獲得輸入通道或輸出通道。

系統(tǒng)配置-服務(wù)提供者界面(SPI)

  對(duì)采樣音頻系統(tǒng)的配置是由javax.media.sound.sampled.spi包來(lái)完成的。通過(guò) AudioConfig類的方法,可以在系統(tǒng)中安裝或卸載設(shè)備,并且可以建立起缺省狀態(tài)。服務(wù)提供者可以希望提供和安裝他們自己的編碼器和分析器。這個(gè)包提供了完成這種功能的機(jī)制。

  MIDI

  javax.media.sound.MIDI程序包描述了 MIDI事件傳送、合成、以及序列化的界面。下面介紹該程序包中所用到的主要概念。

  傳送

  基本的MIDI傳送界面是 MidiDevice。所有設(shè)備為列出其所支持的模式和查詢當(dāng)前模式提供了方法。設(shè)備支持監(jiān)聽(tīng)器,可以監(jiān)聽(tīng)各種事件如打開和關(guān)閉事件,并且有一個(gè)信息對(duì)象來(lái)描述設(shè)備狀態(tài)。

  通常,設(shè)備是MIDI事件的傳送器或接收器之一。傳送器界面提供了一些方法來(lái)設(shè)置和查詢接收器,該接收器接收由該傳送器發(fā)送出的MIDI事件。接收器為接收MIDI事件提供方法。

  基本的 MidiEvent對(duì)象是通過(guò)一個(gè)消息說(shuō)明事件類型、數(shù)據(jù)長(zhǎng)度、以及狀態(tài)。它也為涉及MIDI計(jì)時(shí)的設(shè)備例如音序器提供準(zhǔn)確的計(jì)時(shí)信號(hào)。

合成器

  合成器界面是一種生成聲音的特殊類型的接收器。它也提供一些方法來(lái)管理聲音庫(kù)和樂(lè)器。另外,合成器可以支持一組全局的非-MIDI控件例如增益和定位。它也提供對(duì)一組MIDI通道的訪問(wèn),實(shí)際上,聲音就是通過(guò)這些通道產(chǎn)生的。

  MidiChannel界面提供一組方法來(lái)表達(dá)公用的MIDI聲音消息例如 noteON, noteOff以及controlChange。還支持對(duì)當(dāng)前通道狀態(tài)的查詢。

  序列化

  Sequencer界面繼承了MidiDevice,它提供了完成基本MIDI序列化操作的方法。音序器可以裝載和播放一個(gè)序列,查詢和設(shè)置節(jié)奏,并且控制主從同步方式。一個(gè)應(yīng)用程序還可以通過(guò)注冊(cè)使得音序器在處理設(shè)備單元和控制器事件時(shí)通知自己。

  文件和序列化

  序列化對(duì)象代表一個(gè)來(lái)自一個(gè)或多個(gè)磁道的MIDI序列以及相關(guān)的計(jì)時(shí)信息。一個(gè)磁道對(duì)象包含一系列加上時(shí)間標(biāo)記的MIDI事件。

  JAVA聲音 API在 MidiSystem類中為在MIDI文件和序列化對(duì)象之間轉(zhuǎn)換提供了高級(jí)的接口。

  查詢和訪問(wèn)已經(jīng)安裝了的組件

  MidiSystem類充當(dāng)MIDI音樂(lè)系統(tǒng)入口的角色。它提供相關(guān)設(shè)備的信息并對(duì)之進(jìn)行訪問(wèn),這些設(shè)備包括傳送器,接收器,合成器,以及音序器。它也提供了對(duì)SoundBank對(duì)象的訪問(wèn)。

  系統(tǒng)配置-服務(wù)提供者接口(SPI)

  MIDI系統(tǒng)的配置由javax.media.sound.midi.spi包來(lái)完成的。通過(guò)MidiConfig類的方法,設(shè)備可以安裝到系統(tǒng)中或從中卸載,并且可以建立起缺省狀態(tài)。服務(wù)提供者可以希望提供和安裝他們自己的文件和聲音庫(kù)分析器。該SPI程序包中包括了完成這種功能的機(jī)制。

  現(xiàn)在讓我們看看能用這些類和方法做什么。請(qǐng)仔細(xì)檢查一下。

  ToySynth應(yīng)用程序

  


  ToySynth應(yīng)用程序試驗(yàn)了早期對(duì)JAVA聲音 API存取的方式,主要是通過(guò)提供一系列設(shè)備設(shè)置,包括MIDI通道選擇、音量控制、立體聲定位、回聲處理、以及其他選項(xiàng)。通過(guò)敲擊鍵盤就可以演奏使用指定設(shè)備的樂(lè)曲,而這些設(shè)備又都是通過(guò)JAVA聲音引擎來(lái)實(shí)現(xiàn)的。

  完整的ToySynth.java代碼樣本。

  下載JAVA聲音 API的同時(shí)可以得到示范應(yīng)用程序及其源代碼。

JAVA聲音 API的市場(chǎng)目標(biāo)

  JAVA聲音 API為各種各樣的應(yīng)用程序提供了聲音支持。下面列舉一些可能的應(yīng)用。

  通信框架

  通過(guò)計(jì)算機(jī)召開遠(yuǎn)程會(huì)議
  在計(jì)算機(jī)上實(shí)現(xiàn)電話功能

  內(nèi)容發(fā)布系統(tǒng)
  音樂(lè)
  信息流
  媒體傳播

  交互式應(yīng)用程序
  游戲
  WEB站點(diǎn)
  產(chǎn)生動(dòng)態(tài)內(nèi)容

  工具集
  內(nèi)容產(chǎn)生
  各種工具

  在此基礎(chǔ)上我們能做什么?

  JAVA 2通過(guò) AudioClip界面來(lái)訪問(wèn)JAVA聲音音頻引擎。隨著1.0 API的發(fā)布,我們所曾經(jīng)探索的應(yīng)用領(lǐng)域,就將提供給各地的開發(fā)人員使用。

  "現(xiàn)在,我們通過(guò)在JAVA2平臺(tái)中加入真實(shí)聲音的支持,啟動(dòng)了計(jì)算機(jī)桌面多媒體市場(chǎng)。以后,我們將看見(jiàn)我們的JAVA聲音API技術(shù)廣泛應(yīng)用于專業(yè)人員、普通用戶以及國(guó)際互連網(wǎng)上的音頻應(yīng)用", Michael Bundschuh說(shuō)。

  電影和錄音帶公司通過(guò)使用JAVA聲音 API技術(shù)可以獲得專業(yè)質(zhì)量音頻效果。在JAVA聲音引擎中實(shí)現(xiàn)支持24位音頻和多通道配置將鼓勵(lì)專業(yè)人員開發(fā)出高級(jí)的聲音編輯和播放應(yīng)用程序。
根據(jù) Kara Kytle所說(shuō),對(duì)更多的音頻數(shù)據(jù)類型例如MP3的支持已經(jīng)被提到議事日程。"另一個(gè)議程是從外部設(shè)備對(duì)MIDI數(shù)據(jù)進(jìn)行捕獲。這將很快實(shí)現(xiàn)。"她說(shuō)。

  "JAVA聲音 API技術(shù)已經(jīng)可以很好地適用于通過(guò)WEB的音頻播放。"Bundschuh說(shuō)。"但是我們總是跟蹤最新的技術(shù),并且開發(fā)象MP3這樣的技術(shù),同時(shí)還要保護(hù)音樂(lè)文件的安全傳送。我們計(jì)劃在JAVA聲音 API今后的版本中提供對(duì)上述技術(shù)的支持"。
  隨著最近市場(chǎng)的發(fā)展,象播放基于WEB音樂(lè)上的競(jìng)爭(zhēng)策略一樣,大家都已經(jīng)把發(fā)展數(shù)字化聲音放在中心的位置。新的媒體技術(shù)不斷涌現(xiàn),聲音將扮演核心的角色。JAVA聲音 1.0 API將適時(shí)地加入到新的關(guān)鍵應(yīng)用程序開發(fā)行列中來(lái)。

  現(xiàn)可以得到ToySynth.java程序代碼

  該程序通過(guò)圖形形象地表示出一個(gè)合成器的樣子,通過(guò)鼠標(biāo)去按合成器上的鍵來(lái)演奏樂(lè)曲。你可以通過(guò)聲音設(shè)置以及其他選項(xiàng)去改變聲音的基調(diào)。好好玩吧。[@more@]
網(wǎng)站名稱:JAVA聲音技術(shù)(轉(zhuǎn))
文章鏈接:http://weahome.cn/article/jpgcjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部