當前位置:首頁 » 安卓系統 » android波形繪制

android波形繪制

發布時間: 2024-10-26 17:35:56

❶ Android Audio System 之一:AudioTrack如何與AudioFlinger交換

引子Android Framework的音頻子系統中,每一個音頻流對應著一個AudioTrack類的一個實例,每個AudioTrack會在創建時注冊到 AudioFlinger中,由AudioFlinger把所有的AudioTrack進行混合(Mixer),然後輸送到AudioHardware中 進行播放,目前Android的Froyo版本設定了同時最多可以創建32個音頻流,也就是說,Mixer最多會同時處理32個AudioTrack的數 據流。如何使用AudioTrackAudioTrack的主要代碼位於 frameworks/base/media/libmedia/audiotrack.cpp中。現在先通過一個例子來了解一下如何使用 AudioTrack,ToneGenerator是android中產生電話撥號音和其他音調波形的一個實現,我們就以它為例子:ToneGenerator的初始化函數:bool ToneGenerator::initAudioTrack() { // Open audio track in mono, PCM 16bit//, default sampling rate, default buffer size mpAudioTrack = new AudioTrack(); mpAudioTrack->set(mStreamType, 0, AudioSystem::PCM_16_BIT, AudioSystem::CHANNEL_OUT_MONO, 0, 0, audioCallback, this, 0, 0, mThreadCanCalljava); if (mpAudioTrack->initCheck() != NO_ERROR) { LOGE("AudioTrack->initCheck failed"); goto initAudioTrack_exit; } mpAudioTrack->setVolume(mVolume, mVolume); mState = TONE_INIT; ...... } 可見,創建步驟很簡單,先new一個AudioTrack的實例,然後調用set成員函數完成參數的設置並注冊到AudioFlinger中,然後可以調 用其他諸如設置音量等函數進一步設置音頻參數。其中,一個重要的參數是audioCallback,audioCallback是一個回調函數,負責響應 AudioTrack的通知,例如填充數據、循環播放、播放位置觸發等等。回調函數的寫法通常像這樣:void ToneGenerator::audioCallback(int event, void* user, void *info) { if (event != AudioTrack::EVENT_MORE_DATA) return; AudioTrack::Buffer *buffer = static_cast<AudioTrack::Buffer *>(info); ToneGenerator *lpToneGen = static_cast<ToneGenerator *>(user); short *lpOut = buffer->i16; unsigned int lNumSmp = buffer->size/sizeof(short); const ToneDescriptor *lpToneDesc = lpToneGen->mpToneDesc; if (buffer->size == 0) return; // Clear output buffer: WaveGenerator accumulates into lpOut buffer memset(lpOut, 0, buffer->size); ...... // 以下是產生音調數據的代碼,略.... } 該函數首先判斷事件的類型是否是EVENT_MORE_DATA,如果是,則後續的代碼會填充相應的音頻數據後返回,當然你可以處理其他事件,以下是可用的事件類型:enum event_type { EVENT_MORE_DATA = 0,// Request to write more data to PCM buffer. EVENT_UNDERRUN = 1,// PCM buffer underrun occured. EVENT_LOOP_END = 2,// Sample loop end was reached; playback restarted from loop start if loop count was not 0. EVENT_MARKER = 3,// Playback head is at the specified marker position (See setMarkerPosition()). EVENT_NEW_POS = 4,// Playback head is at a new position (See setPositionUpdatePeriod()). EVENT_BUFFER_END = 5// Playback head is at the end of the buffer. }; 開始播放:mpAudioTrack->start(); 停止播放:mpAudioTrack->stop(); 只要簡單地調用成員函數start()和stop()即可。AudioTrack和AudioFlinger的通信機制通常,AudioTrack和AudioFlinger並不在同一個進程中,它們通過android中的binder機制建立聯系。AudioFlinger是android中的一個service,在android啟動時就已經被載入。下面這張圖展示了他們兩個的關系:圖一AudioTrack和AudioFlinger的關系我們可以這樣理解這張圖的含義:audio_track_cblk_t實現了一個環形FIFO;AudioTrack是FIFO的數據生產者;AudioFlinger是FIFO的數據消費者。建立聯系的過程下面的序列圖展示了AudioTrack和AudioFlinger建立聯系的過程:圖二AudioTrack和AudioFlinger建立聯系解釋一下過程:Framework或者Java層通過JNI,new AudioTrack();根據StreamType等參數,通過一系列的調用getOutput();如有必要,AudioFlinger根據StreamType打開不同硬體設備;AudioFlinger為該輸出設備創建混音線程: MixerThread(),並把該線程的id作為getOutput()的返回值返回給AudioTrack;AudioTrack通過binder機制調用AudioFlinger的createTrack();AudioFlinger注冊該AudioTrack到MixerThread中;AudioFlinger創建一個用於控制的TrackHandle,並以IAudioTrack這一介面作為createTrack()的返回值;AudioTrack通過IAudioTrack介面,得到在AudioFlinger中創建的FIFO(audio_track_cblk_t);AudioTrack創建自己的監控線程:AudioTrackThread;自此,AudioTrack建立了和AudioFlinger的全部聯系工作,接下來,AudioTrack可以:通過IAudioTrack介面控制該音軌的狀態,例如start,stop,pause等等;通過對FIFO的寫入,實現連續的音頻播放;監控線程監控事件的發生,並通過audioCallback回調函數與用戶程序進行交互;FIFO的管理 audio_track_cblk_taudio_track_cblk_t這個結構是FIFO實現的關鍵,該結構是在createTrack的時候,由AudioFlinger申請相 應的內存,然後通過IMemory介面返回AudioTrack的,這樣AudioTrack和AudioFlinger管理著同一個 audio_track_cblk_t,通過它實現了環形FIFO,AudioTrack向FIFO中寫入音頻數據,AudioFlinger從FIFO 中讀取音頻數據,經Mixer後送給AudioHardware進行播放。audio_track_cblk_t的主要數據成員: user -- AudioTrack當前的寫位置的偏移 userBase -- AudioTrack寫偏移的基準位置,結合user的值方可確定真實的FIFO地址指針 server -- AudioFlinger當前的讀位置的偏移 serverBase -- AudioFlinger讀偏移的基準位置,結合server的值方可確定真實的FIFO地址指針 frameCount -- FIFO的大小,以音頻數據的幀為單位,16bit的音頻每幀的大小是2位元組 buffers -- 指向FIFO的起始地址 out -- 音頻流的方向,對於AudioTrack,out=1,對於AudioRecord,out=0audio_track_cblk_t的主要成員函數:framesAvailable_l()和framesAvailable()用於獲取FIFO中可寫的空閑空間的大小,只是加鎖和不加鎖的區別。uint32_t audio_track_cblk_t::framesAvailable_l() { uint32_t u = this->user; uint32_t s = this->server; if (out) { uint32_t limit = (s < loopStart) ? s : loopStart; return limit + frameCount - u; } else { return frameCount + u - s; } } framesReady()用於獲取FIFO中可讀取的空間大小。uint32_t audio_track_cblk_t::framesReady() { uint32_t u = this->user; uint32_t s = this->server; if (out) { if (u < loopEnd) { return u - s; } else { Mutex::Autolock _l(lock); if (loopCount >= 0) { return (loopEnd - loopStart)*loopCount + u - s; } else { return UINT_MAX; } } } else { return s - u; } } 我們看看下面的示意圖: _____________________________________________ ^ ^ ^ ^ buffer_start server(s) user(u) buffer_end 很明顯,frameReady = u - s,frameAvalible = frameCount - frameReady = frameCount - u + s 可能有人會問,應為這是一個環形的buffer,一旦user越過了buffer_end以後,應該會發生下面的情況: _____________________________________________ ^ ^ ^ ^ buffer_start user(u) server(s) buffer_end這時候u在s的前面,用上面的公式計算就會錯誤,但是android使用了一些技巧,保證了上述公式一直成立。我們先看完下面三個函數的代碼再分析:uint32_t audio_track_cblk_t::stepUser(uint32_t frameCount) { uint32_t u = this->user; u += frameCount; ...... if (u >= userBase + this->frameCount) { userBase += this->frameCount; } this->user = u; ...... return u; } bool audio_track_cblk_t::stepServer(uint32_t frameCount) { // the code below simulates lock-with-timeout // we MUST do this to protect the AudioFlinger server // as this lock is shared with the client. status_t err; err = lock.tryLock(); if (err == -EBUSY) { // just wait a bit usleep(1000); err = lock.tryLock(); } if (err != NO_ERROR) { // probably, the client just died. return false; } uint32_t s = this->server; s += frameCount; // 省略部分代碼 // ...... if (s >= serverBase + this->frameCount) { serverBase += this->frameCount; } this->server = s; cv.signal(); lock.unlock(); return true; } void* audio_track_cblk_t::buffer(uint32_t offset) const { return (int8_t *)this->buffers + (offset - userBase) * this->frameSize; } stepUser()和stepServer的作用是調整當前偏移的位置,可以看到,他們僅僅是把成員變數user或server的值加上需要移動 的數量,user和server的值並不考慮FIFO的邊界問題,隨著數據的不停寫入和讀出,user和server的值不斷增加,只要處理得 當,user總是出現在server的後面,因此frameAvalible()和frameReady()中的演算法才會一直成立。根據這種算 法,user和server的值都可能大於FIFO的大小:framCount,那麼,如何確定真正的寫指針的位置呢?這里需要用到userBase這一 成員變數,在stepUser()中,每當user的值越過(userBase+frameCount),userBase就會增加 frameCount,這樣,映射到FIFO中的偏移總是可以通過(user-userBase)獲得。因此,獲得當前FIFO的寫地址指針可以通過成員 函數buffer()返回:p = mClbk->buffer(mclbk->user);在AudioTrack中,封裝了兩個函數:obtainBuffer()和releaseBuffer()操作 FIFO,obtainBuffer()獲得當前可寫的數量和寫指針的位置,releaseBuffer()則在寫入數據後被調用,它其實就是簡單地調用 stepUser()來調整偏移的位置。IMemory介面在createTrack的過程中,AudioFlinger會根據傳入的frameCount參數,申請一塊內存,AudioTrack可以通過 IAudioTrack介面的getCblk()函數獲得指向該內存塊的IMemory介面,然後AudioTrack通過該IMemory介面的 pointer()函數獲得指向該內存塊的指針,這塊內存的開始部分就是audio_track_cblk_t結構,緊接著是大小為frameSize的 FIFO內存。IMemory->pointer() ---->|_______________________________________________________ |__audio_track_cblk_t__|_______buffer of FIFO(size==frameCount)____|看看AudioTrack的createTrack()的代碼就明白了:sp<IAudioTrack> track = audioFlinger->createTrack(getpid(), streamType, sampleRate, format, channelCount, frameCount, ((uint16_t)flags) << 16, sharedBuffer, output, &status); // 得到IMemory介面 sp<IMemory> cblk = track->getCblk(); mAudioTrack.clear(); mAudioTrack = track; mCblkMemory.clear(); mCblkMemory = cblk; // 得到audio_track_cblk_t結構 mCblk = static_cast<audio_track_cblk_t*>(cblk->pointer()); // 該FIFO用於輸出 mCblk->out = 1; // Update buffer size in case it has been limited by AudioFlinger ring track creation mFrameCount = mCblk->frameCount; if (sharedBuffer == 0) { // 給FIFO的起始地址賦值 mCblk->buffers = (char*)mCblk + sizeof(audio_track_cblk_t); } else { .......... } (DroidPhone)

❷ android藍牙數據

你的APP接到的是什麼數據?要做什麼樣的波形圖?BLE設備返回的是位元組數組。java的位元組是有符號的(-128~127),你首先要把有符號的變成無符號的數據(0~255)

❸ viper4android的功能詳解

FX功能詳解
<菜單欄詳解>
1、切換到 導航/分頁 瀏覽。兩種不同的用戶操作界面
2、鎖定效果模式。將處理模式鎖。
3、顯示/隱藏 通知欄圖標。是否在通知欄中顯示固定的V4A通知。
4、載入音效配置。載入已有的音效配置文件。
5、保存音效配置。保存當前的音效配置到儲存。
6、界面控制級別。簡單/復雜/專家 三個不同的調整界面。
7、音效兼容模式。使音效更好的在自帶與第三方播放器中產生效果。
8、安裝/卸載 驅動。驅動程序的安裝與卸載。9、驅動程序狀態。可以了解驅動程序的版本,運行狀態,采樣率等狀態。
10、更新日誌。V4A的版本更新日誌。
11、檢查更新。檢查V4A的最新版本。12、幫助和關於。V4A的一些簡單介紹與說明。
<耳機效果>
注意:藍牙與USB和音頻低座設置方案與耳機效果一致
1、效果總開關。該選項定義了是否啟用V4A的耳機音效,是總開關。
2、回放增益控制回放增益控制主要用於動態控制音頻的音量,放大或衰減。(1)、啟用。是否啟用該效果。(2)、效果強度。效果強度代表音量放大或衰減的速度,越強則速度越快,最終音量也越大,越弱則速度越慢,最終音量越接近音頻原始音量。推薦中等。(3)、最大增益倍數。當音頻的音量過小時,回放增益為了將音量放大到設定的水準,可能會有非常大的放大倍數。該值越大則音量越大,太大時也會將歌曲內的噪音放大。推薦4倍。(4)、最大音量。該值定義了從回放增益出來的聲音的最大音量分貝值,值越大音量越大,0分貝代表數字信號的最大值。為了使聲音更柔和,推薦-1.9分貝。3、VIPER-DDC
(1)、啟用。是否啟用該效果。(2)、監聽設備。選擇自己的耳機型號。
注意:VIPER-DDC是一個用於耳機校準的HIFI音效,VIPER-DDC已支持近500款耳機的校準,而且也將繼續更新支持更多的耳機。所以,如果你不能在列表中找到自己的型號,請暫時關閉本功能或者嘗試其他耳機。
4、頻譜擴展
(1)、啟用。是否啟用該效果。(2)、強度。選擇擴展強度。
注意:頻譜擴展是一個用於擴展有損壓縮的頻譜的HIFI音效。如果您經常播放有損壓縮的音樂(如:mp3,ogg和aac等),本功能可以給您一個接近無損的聽感。但如果您播放無損音樂,我們則建議您關閉當前功能。
5、FIR均衡器10段511階FIR線性均衡器。(1)、啟用。是否啟用該效果。(2)、選擇預設。在這里可以選擇程序中預設的幾種均衡器效果。當選擇自定義時將採用手動調節圖形均衡器的設置。(3)、圖形均衡器手動調節。當觸摸圖形均衡器時將會彈出圖形均衡較調的界面,可以分別自定義調節10個頻段的增益的衰減。6、脈沖反饋效果脈沖反饋效果的作用是當給定一個樣本文件後,播放器的音樂便會呈現出與該樣本一模一樣的聲音特徵,如均衡、混響、環繞、耳機、熱膽機等。首先需要確保SD卡根目錄下存在ViPER4Android/Kernel目錄,樣本文件均存在於該目錄下。若沒有,可以下載最新包,並提取SDCard_V4A.zip。(1)、啟用。是否啟用該效果。(2)、選擇脈沖反饋樣本。這里可以選擇ViPER4Android/Kernel目錄下的脈沖文件。7、場環繞場環繞是指針對聲場進行環繞效果作業。聲場可以理解為水平面音場或立體聲場。(1)、啟用。是否啟用該效果。(2)、場環繞強度。該值定義了場環繞效果的強弱。越強則會讓聲音的立體聲感覺越明顯,聲音將會從耳朵左右兩邊過來。建議中等。(3)、中央強度。該值定義了中央人聲的強度。越強人聲越清晰,越弱聲音越飄渺。8、差分環繞(1)、啟用。是否使用該效果。(2)、選擇延遲時間。調整差分延遲。
9、耳機環繞核擎+
耳機環繞核擎+用來模擬耳機的環繞立體聲(1)、啟用。是否啟用該效果。(2)、選擇效果質量。用於調整環繞的效果強度。高質量消耗更多CPU。
(3)、CPU不支持32位浮點運算的手機無法開啟此項。10、數字混響數字混響是指使用數學的方法模擬一個設定的環境內的聲音聽感。比如一首歌可以獲得聽起來像在大禮堂、客廳、浴室等等裡面的感覺。(1)、啟用。是否啟用該效果。(2)、房間大小。該值設定了虛擬環境的場地面積。該值越大,聲音聽起來則越空曠,迴音越多。(3)、聲場大小。該值設定了上面所定房間的寬度,單位是米。假定上面設定房間大小為100平米,此處設定寬度為14米,那麼房間的另一長度就是7.14米。也就說房間大小和聲場大小定義了這個虛擬環境的面積和長寬比。該值越大聲音聽起來從兩邊傳來的感覺越明顯。(4)、水汽含量。該值定義了上述環境的空氣的潮濕度,空氣中的水汽會強烈的吸收迴音,因此該值越大迴音越少。(5)、混響信號比例。該值定義了模擬的環境聲音的音量。(6)、原始信號比例。該值定義了原始聲音的音量。對於模擬客廳、大禮堂等室內無大量水分的環境時,可使用房間大小和聲場大小來定義環境的面積,水汽含量取值0~20,混響信號比例取值20~50,原始信號比例取值50左右。對於模式浴室等室內含有大量水分的環境時,可使用房間大小和聲場大小來定義環境的面積,水汽含量取值50~100,混響信號比例取值40~80,原始信號比例取值50左右。11、動態系統動態系統在V4A中扮演的角色是處理聲音的動態范圍。通俗的說就是低音、高音、限幅等。(1)、啟用。是否啟用該效果。(2)、監聽設備。該值用於設定耳機插孔接駁的耳機類型。如果在所有設備中調不出自己喜歡的低音,那就選擇耳塞。耳塞是個通用的選擇。建議耳塞。(3)、動態低音。該值定義了動態低音的平均水平,越大則低音越強。建議33%。12、電子管模擬器(6N1J)。
該選項定義了是否啟用電子管模擬器效果。V4A中的電子管模擬器是一個簡化的使用數學方法模擬電子管聲音的效果。開啟後將會大量削弱高頻的奇次諧波失真,增加電子管特有的偶次諧波失真。13、保真控制讓您擁有更好的低音體驗以及更好的音質享受。(1)、啟用VIPER低音。是否啟用該效果。(2)、低音處理模式。選擇低音處理的模式。分為自然低音和醇低音+模式。(3)、選擇低音頻點。用於調整低音頻點。(4)、選擇低音增益。用於調整低音強度。(5)、啟用VIPER清晰度。是否啟用該效果。(6)、選擇清晰度處理模式。分為自然處理,醇氧+和XHIFI模式。(7)、選擇清晰度。用於調整細節還原度。14、聽覺保護通過對音頻進行一些特殊處理來減少人耳個聽覺/分析神經的工作壓力,以起到保護聽覺系統和優化聆聽體驗的目的。(1)、啟用。是否啟用Cure技術(2)、選擇交叉反饋強度。用於調整過濾的強度。15、總輸出門這個選項就是V4A的輸出限幅器,用於防止音量過大造成削波失真。(1)、輸出增益。選擇增加減少的分貝數。
(2)、聲道平衡。用於調整部分用戶左右耳朵聽力偏差。
(3)、限制級別。該值定義了限幅器限制的波形幅度最大級別,0分貝是數字信號的最大值。該值越小則越容易出現音頻被壓縮的聽感(音量也越小),會損失聲音細節,但可以有效控制最終輸出的音量。建議0分貝。
<揚聲器效果>
1、效果總開關。該選項定義了是否啟用V4A的揚聲器音效,是總開關。2、FIR均衡器。同耳機的均衡器。
3、脈沖反饋處理。同耳機說明。
4、數字混響。同耳機的數字混響。
5、揚聲器優化。
6、eXtra Loud
eXtra Loud是一種在軟體層面進一步放大外放聲音的效果,但受限於對揚聲器的保護,不會將音量放的太大。(1)、啟用。是否啟用該效果。(2)、效果強度。效果強度代表音量放大或衰減的速度,越強則速度越快,最終音量也越大,越弱則速度越慢,最終音量越接近音頻原始音量。推薦中等。(3)、最大增益倍數。當音頻的音量過小時,EL為了將音量放大到設定的水準,可能會有非常大的放大倍數。該值越大則音量越大,推薦無窮大。(4)、最大音量。該值定義了從EL出來的聲音的最大音量分貝值,值越大音量越大,0分貝代表數字信號的最大值。推薦0分貝。7、總輸出門
這個選項就是V4A的輸出限幅器,用於防止音量過大造成削波失真。(1)、限制級別。該值定義了限幅器限制的波形幅度最大級別,0分貝是數字信號的最大值。該值越小則越容易出現音頻被壓縮的聽感(音量也越小),會損失聲音細節,但可以有效控制最終輸出的音量。建議0分貝。
XHiFi功能詳解
1、效果總開關。該選項定義了是否啟用V4A的耳機/藍牙音效,是總開關。
2、回放增益控制。同FX版中耳機的回放增益。
3、FIR均衡器
XHiFi的FIR均衡器採用10段2047階線性FIR均衡器,質量遠高於FX版的均衡器。
調節方法同FX版中耳機的FIR均衡器。
4、音頻重整
音頻重整是XHiFi版的核心內容,主要用於對MP3等有損音樂進行細節和高音補償。(1)、啟動。是否啟用該效果。(2)、細節解析度。該值定義了還原多少百分比的細節和高音,值越大則聲音的細節越多,高音也越強。對於一般耳塞,現階段不建議開啟該功能,可能會出現高頻刺耳。對於魔音/飛利浦/僵屍/森海/白牙/AKG等好一些的耳塞,該值建議30~50。對於高檔頭戴式耳機,需要根據耳機線長來設置該值,基數為40,線每長80公分值增加10。對於手機後接駁前級放大器/耳放等,基數為60,耳機線每長80公分值增加10。若接駁電子管放大器,則直接使用100。(3)、低音輪廓。該值定義了重建低音的輪廓佔到總頻帶的百分比,該值越大則低音越強,但中音和細節會稍微丟失。對於耳塞建議使用50~70,頭戴式耳機使用20~30。
CURE+技術詳解
該技術的中文名稱叫做「聽覺保護和優化系統」,主要作用是通過對音頻進行一些特殊的處理來減少人耳和聽覺/分析神經的工作壓力,以起到保護聽覺系統和優化聆聽體驗的目的。實際中,在超過連續2個小時的聽音後可以明顯改善疲勞、耳痛、眩暈、心煩等情況。Cure+是一項專為耳機設計的音頻體驗技術,可以用於頭戴耳機、耳塞和入耳式耳塞。Cure+包含如下技術:一個基於人頭模型的Crossfeed(人頭Crossfeed)。一個奇次諧波抑制器。一個群延遲相位調節器。一個瞬態調節器。一個高低通濾波器。首先,Cure+會使用Crossfeed將聲音處理為類似從音箱中出來的,然後經過人頭模型會讓你正前方的聲音變得更加逼真,就好像演唱者面對面為你而唱一樣,聲音中的主要細節將毫無保留的向你撲來,無需你多動腦筋去思考。這一步將緩解長時間聽歌帶來的疲勞感,同時優化聽音體驗。其次,Cure+會使用群延遲相位調節器將聲音波形中每一個頻段的相位做一個調整。人的聽覺心理是這樣的,無論聲音多麼的復雜,首先到達耳朵里的聲音將會給你帶來最明顯的體驗(即便先後時差可能只有幾十到幾百微秒[一微秒是十萬分之一秒]),而同時達到耳朵的高頻和低頻波形會出現高頻被低音掩蓋的情況。當你聽到一段低音鼓蓋過高音或者轟隆隆的聲音時,雖然你可能不知道,但你的大腦卻在努力的將這段聲音進行分頻,盡最大努力的將每一個細節分離出來,時間一長就會出現疲勞感。Cure+中的群延遲相位調節器會將聲音進行分頻,然後適度的調節每一段頻率的延遲,盡量做到讓高頻先被聽到,然後是中頻,最後是低頻。這樣一來大腦就不需要過多的分頻,疲勞感自然而然的被緩解。接下去,Cure+使用瞬態調節器來適當減小聲音的瞬間動態。輕音樂可以使人放鬆,DJ可以振奮精神(就如咖啡一般)。瞬態調節器就是使用了這個原理。當然,Cure+不會在你的聽感中讓DJ變成輕音樂,而是讓你的大腦適度放鬆。音樂要靜心聆聽欣賞,才可以明白真諦。再然後,Cure+使用奇次諧波抑制器將聲音中的奇次諧波進行有度的抑制。你是否有過這種體驗,在某個地方,聽到某個聲音後,會覺得耳朵異常難受,心裡煩躁?這就是奇次諧波對人類聽覺系統的害處,人耳喜歡偶次諧波(膽機的聲音)卻很討厭奇次諧波。然後有的時候,有些奇次諧波是音樂的必需品,比如吉他的撥弦聲,葫蘆絲的共鳴音等。因此Cure+只是針對一些特定的頻率將部分奇次諧波進行適度的抑制。最後,Cure+使用一個高低通濾波器將聲音中人耳聽不到的或是造成渾濁的聲音濾掉(當然,這里不是完全的過濾,只是一種特殊手段而已)。有些聲音人耳聽不到,但不代表大腦也「聽」不到。著名的電子蚊香器,在配有高檔音響時確實有效,但你是否發現在蚊子被驅趕的同時,你也會覺得煩躁和疲勞?就如讓你在很暗的房間里尋找一把鑰匙,可能你看不清房間里的任何物體,但你的大腦卻在強行將僅有的可見光進行分離。不久之後你就會感到頭重腳輕,異常疲勞。
聽覺校準詳解
由於每個人的聽覺系統都是不一樣的,有些人存在左右耳聽力差別,有些人存在高頻恐懼症,……,每個人對聲場的概念均有不同等。「聽覺校準」即為此而生,通過一個簡單的向導,即可針對您的耳朵調整V4A系統的基準參數,「聽覺校準」功能將努力讓每一位用戶體驗到統一極致的基礎效果。

❹ 安卓viper4android fx手機里 怎麼設置

關於V4A的設置(轉):
V4A FX版主要針對音頻效果的渲染,通過調節各個參數以達到音頻效果調整的目的。
<耳機效果>
1、效果總開關。該選項定義了是否啟用V4A的耳機音效,是總開關。
2、回放增益控制
回放增益控制主要用於動態控制音頻的音量,放大或衰減。
(1)、啟用。是否啟用該效果。
(2)、效果強度。效果強度代表音量放大或衰減的速度,越強則速度越快,最終音量也越大,越弱則速度越慢,最終音量越接近音頻原始音量。推薦中等。
(3)、最大增益倍數。當音頻的音量過小時,回放增益為了將音量放大到設定的水準,可能會有非常大的放大倍數。該值越大則音量越大,太大時也會將歌曲內的噪音放大。推薦4倍。
(4)、最大音量。該值定義了從回放增益出來的聲音的最大音量分貝值,值越大音量越大,0分貝代表數字信號的最大值。為了使聲音更柔和,推薦-1.9分貝。
3、FIR均衡器
(1)、啟用。是否啟用該效果。
(2)、選擇預設。在這里可以選擇程序中預設的幾種均衡器效果。當選擇自定義時將採用手動調節圖形均衡器的設置。
(3)、圖形均衡器手動調節。當觸摸圖形均衡器時將會彈出圖形均衡較調的界面,可以分別自定義調節10個頻段的增益的衰減。
4、場環繞
場環繞是指針對聲場進行環繞效果作業。聲場可以理解為水平面音場或立體聲場。
(1)、啟用。是否啟用該效果。
(2)、場環繞強度。該值定義了場環繞效果的強弱。越強則會讓聲音的立體聲感覺越明顯,聲音將會從耳朵左右兩邊過來。建議中等。
5、數字混響
數字混響是指使用數學的方法模擬一個設定的環境內的聲音聽感。比如一首歌可以獲得聽起來像在大禮堂、客廳、浴室等等裡面的感覺。
(1)、啟用。是否啟用該效果。
(2)、房間大小。該值設定了虛擬環境的場地面積。該值越大,聲音聽起來則越空曠,迴音越多。
(3)、聲場大小。該值設定了上面所定房間的寬度,單位是米。假定上面設定房間大小為100平米,此處設定寬度為14米,那麼房間的另一長度就是7.14米。也就說房間大小和聲場大小定義了這個虛擬環境的面積和長寬比。該值越大聲音聽起來從兩邊傳來的感覺越明顯。
(4)、水汽含量。該值定義了上述環境的空氣的潮濕度,空氣中的水汽會強烈的吸收迴音,因此該值越大迴音越少。
(5)、混響信號比例。該值定義了模擬的環境聲音的音量。
(6)、原始信號比例。該值定義了原始聲音的音量。
6、動態系統
動態系統在V4A中扮演的角色是處理聲音的動態范圍。通俗的說就是低音、高音、限幅等。
(1)、啟用。是否啟用該效果。
(2)、監聽設備。該值用於設定耳機插孔接駁的耳機類型。如果在所有設備中調不出自己喜歡的低音,那就選擇耳塞。耳塞是個通用的選擇。建議耳塞。
(3)、動態低音。該值定義了動態低音的平均水平,越大則低音越強。建議33%。
(4)、電子管模擬器。該選項定義了是否啟用電子管模擬器效果。V4A中的電子管模擬器是一個簡化的使用數學方法模擬電子管聲音的效果。開啟後將會大量削弱
高頻的奇次諧波失真,增加電子管特有的偶次諧波失真。
7、總輸出門
這個選項就是V4A的輸出限幅器,用於防止音量過大造成削波失真。
(1)、限制級別。該值定義了限幅器限制的波形幅度最大級別,0分貝是數字信號的最大值。該值越小則越容易出現音頻被壓縮的聽感(音量也越小),會損失聲音細節,但可以有效控制最終輸出的音量。建議0分貝。

❺ viper4android fx脈沖反饋樣本是什麼

脈沖反饋效果的作用是當給定一個樣本文件後,播放器的音樂便會呈現出與該樣本一模一樣的聲音特徵,如均衡、混響、環繞、耳機、熱膽機等。

脈沖信號:脈沖信號是一種離散信號,形狀多種多樣,與普通模擬信號(如正弦波)相比,波形之間在時間軸不連續(波形與波形之間有明顯的間隔)但具有一定的周期性是它的特點。最常見的脈沖波是矩形波(也就是方波)。脈沖信號可以用來表示信息,也可以用來作為載波,比如脈沖調制中的脈沖編碼調制(PCM),脈沖寬度調制(PWM)等等,還可以作為各種數字電路、高性能晶元的時鍾信號。

熱點內容
linux內核視頻 發布:2024-10-26 19:30:16 瀏覽:293
微信猜拳演算法 發布:2024-10-26 19:23:35 瀏覽:390
android編譯第三方庫 發布:2024-10-26 19:14:20 瀏覽:615
蘋果手機怎麼用藍牙傳照片給安卓 發布:2024-10-26 18:57:40 瀏覽:615
ios8程序加密 發布:2024-10-26 18:30:27 瀏覽:533
密碼門鎖沒電了用什麼數據線 發布:2024-10-26 18:21:11 瀏覽:855
linuxloop 發布:2024-10-26 18:20:46 瀏覽:932
linuxvg查看 發布:2024-10-26 18:09:51 瀏覽:585
圖標是鑰匙的加密軟體 發布:2024-10-26 18:07:31 瀏覽:625
vip七九寶琉璃怎麼配置魂環 發布:2024-10-26 17:51:17 瀏覽:571