Android自帶音訊均衡器MusicFx分析

2021-06-28 11:36:40 字數 2467 閱讀 3767

種種原因,我要簡單分析乙個android

中built-in

的音訊均衡器

musicfx

。重點是它的預設值的來歷。網上很少有文章講了這個的除了這篇《

com.android.musicfx設定音效流程 

-- 從

到audioflinger

》。注:android

系統版本為

4.2.2_r1。

到audiofliger

的終點是在android_media_audioeffect.cpp(之前版本在是audio_media_audioeffect.cpp)中的

這裡呼叫了audioeffect.cpp

中的getparameter().

最終進入audioflinger: 

audioflinger如何對這個命令進行的處理

android音訊系統之

audioflinger(一)

和android原始碼分析:

audioeffect

。前者呼叫到了:

status_t status = (*meffectinte***ce)->command(meffectinte***ce,

cmdcode,

cmdsize,

pcmddata,

replysize,

preplydata);

這個meffectinte***ce

是何方神聖呢?

中間出現了斷層,直接搜尋effect_cmd_get_param.

可以看到呼叫了equalizer_getparameter,這個函式的原型為:

這和應用程式中的api

就對應起來了,獲取頻段的增益是

返回了pcontext->pbundlecontext->bandgaindb[band] * 100;

來看看這個值有誰在設定。

原始碼中開啟log

,在應用上使能

equalizer

了 就會有輸出了,但是先暫停。

1) 通過檢視以audioeffect

為tag

的日誌,可以判斷是先獲取的增益引數後設定的引數。

2) 類別為normal。

上邊是乙個參考,真正直到作用是下面那個eqnb_5bandsoftprosets。

5段分別為:

50hz/230hz/910hz/4khz/14khz.

以下是將

230hz

調整為-10

的實驗截圖:

總結:研究這個musicfx

是源於裝置上揚聲器在某些頻段增益過高導致啪啪響聲(我現在還不能使用專業的語言來形容這種現象),就準備測試使用軟體

eq來解決這個問題。現在

eq的預設值也找到了,但是這終究是軟體實現的,使用軟體實現來解決硬體問題我覺得是很不妥當,不過我也藉此機會了解了整個流程和預設值的位置。

音訊EQ 均衡器

我們通常所說的人聲,歌聲以及樂聲都是乙個復合音,也就是由聲音的基音和一系列的泛音所構成的。這些泛音都是基音頻率的倍數,物理學中叫分音,電聲學中叫諧波,中則把它們稱做泛音。可以說,泛音對音色的特性有著非常重要的影響。它們的數量以及幅度的不同構成音色的頻率特性曲線。這條曲線就體現了音色的表現力。一般來說...

Android 音訊均衡器,可通過拖動調節音訊EQ

2.3之後,google 為mediaplayer 類新增了eq支援,如果你需要使用這個eq功能,有兩點需要注意,分別為如下 為了使應用程式能夠支援波段變化,我們需要重新定義乙個view物件,在ondraw 方法畫頻譜,如下 class visualizerview extends view pub...

負載均衡器

負載均衡器f5 負載均衡是高可用網路基礎架構的關鍵元件,通常用於將工作負載分布到多個伺服器來提高 應用 資料庫或其他服務的效能和可靠性。負載均衡器可以處理什麼樣的請求?負載均衡器的管理員能主要為下面四種主要型別的請求設定 規則 負載均衡器如何選擇要 的後端伺服器?負載均衡器一般根據兩個因素來決定要將...