1. 程式人生 > >Android下音訊的測試程式tinyalsa(錄音,放音,檢視音效卡資訊)

Android下音訊的測試程式tinyalsa(錄音,放音,檢視音效卡資訊)

目前Linux中主流的音訊體系結構是ALSA(Advanced Linux Sound Architecture),ALSA在核心驅動層提供了alsa-driver,在應用層提供了alsa-lib,應用程式只需要呼叫alsa-lib提供的API就可以完成對底層硬體的操作。說的這麼好,但是Android中沒有使用標準的ALSA,而是一個ALSA的簡化版叫做tinyalsa。Android中使用tinyalsa控制管理所有模式的音訊通路,我們也可以使用tinyalsa提供的工具進行檢視、除錯。

編譯tinyalsa後生成四個小工具:

  1. tinymix  
  2. tinyplay  
  3. tinycap  
  4. tinypcminfo  

編譯命令:

  1. mmm external/tinyalsa/  


下面依次演示一下四個小工具的使用:(以下使用聯芯科技的LC1860平臺配合LC1160電源+音訊晶片,截圖及演示效果均來自M7301P5測試機)

1,  tinypcminfo

tinypcminfo用於檢視pcm通道的相關資訊

輸入:

  1. tinypcminfo -D /proc/asound/cards  

結果如下:


從上面獲得的資訊中可以知道PCM的取樣率,通道個數,取樣點數等資訊。

其中 –D 後邊跟的引數為音效卡檔案,一般位於/proc/asound/cards。可以使用
  1. cat /proc/asound/cards  
檢視當前音效卡

2,  tinymix

如下圖所示,直接輸入tinymix可以得到音訊通路相關的各項配置引數。也可以通過新增引數修改其中的配置,如希望提高ADC1 Gain值到110,輸入tinymix 12 110即可。


單獨檢視上述資訊比較難以梳理,配合音訊通路圖會更加清晰。


上圖中紅色字型標明瞭LC1160與麥克風、耳機等硬體裝置的連線關係。(注:M73xx專案由於內部ClassD不滿足要求,喇叭連在了AUX通路上)

各個通路上的增益調節部分使用綠色字型標出了與tinymix中選項的對應關係。

圖中加號與Mux是通路選擇開關,對應tinymix中的其它的選項,用於在各種模式下切換音訊通道。此部分比較多沒有在圖中一一標出,但根據已知的通路名是比較容易對應的。

圖中黃色箭頭標出的是通話時下行音訊資料流,從PCM介面進入到LC1160,然後經過MonoDAC進行數模轉化後送到聽筒。

圖中紫色箭頭標出的是通話時上行音訊資料流,從主MIC採集聲音後,經過ADC1進行模數轉換後由PMC的DO線送出

3,  tinyplay

tinyplay是一個簡易的音樂播放器,一般用於播放測試。tinyplay只能播放wav原始格式的音樂,不能進行Mp3等格式的解碼,支援44.1kHz,48kHz取樣率的wav音樂。

在呼叫tinyplay播放音樂之前需要先使用tinymix切換好音訊通路:

  1. tinymix 0 I2SR      //選擇Stereo DACR的音源為i2s
  2. tinymix 1 I2SL      //選擇Stereo DACL的音源為i2s
  3. tinymix 200//將Stereo DAC左右聲道的mute關閉
  4. tinymix 241//開啟喇叭的外部PA晶片
  5. tinymix 401//將Stereo DACR的聲音路由到AUX口輸出(因為實驗機器喇叭掛載AUX介面上)
  6. tinymix 411//將Stereo DACR的聲音路由到AUX口輸出(因為實驗機器喇叭掛載AUX介面上)
  7. tinyplay z.wav

4,  tinycap

tinycap是一個簡易的錄音軟體,一般用於錄音測試。

在呼叫tinycap錄音之前需要先調整好音訊通路:

  1. tinymix 1430//mic1 volume
  2. tinymix 191//mic1 boost on
  3. tinymix 261//adc1 -> mic1
  4. tinymix 50 ADC1//i2sR out -> adc1
  5. tinymix 51 ADC1//i2sL out -> adc2
  6. echo "0xfb 0x01" >  /sys/devices/platform/comip_codec/lc1160_reg     //bias poweron
  7. echo "0xad 0x08" >  /sys/devices/platform/comip_codec/lc1160_reg //adc1 enable
  8. echo "0xac 0x01" >  /sys/devices/platform/comip_codec/lc1160_reg     //mic1 pga enable
  9. echo "0x3b 0xcc" >  /sys/devices/platform/comip_codec/lc1160_reg     //ldo
  10. echo 2 > /sys/bus/i2c/drivers/fm2018/0-0060/mode     //bypass 外部的回聲消除音訊晶片(M730x專案特有)
  11. tinycap /sdcard/Music/l.wav

錄音結束通過ctrl+C強行退出即可,之後在/sdcard/Music/路徑下檢視到l.wav音訊檔案

使用adb pull到本地電腦中,使用goldwave播放、檢視。

  1. adb pull /sdcard/Music/l.wav d:\  



另外

LC1160的暫存器是分頁的,即同一個地址上存在兩個不同含義的暫存器,通過控制0xFC暫存器中的值來切換到第二功能頁
  1. echo "0xfc 0x01" >  /sys/devices/platform/comip_codec/lc1160_reg   
  2. cat /sys/devices/platform/comip_codec/lc1160_reg  
  3. echo "0xfc 0x00" >  /sys/devices/platform/comip_codec/lc1160_reg  


相關推薦

Android音訊測試程式tinyalsa(錄音檢視音效資訊)

目前Linux中主流的音訊體系結構是ALSA(Advanced Linux Sound Architecture),ALSA在核心驅動層提供了alsa-driver,在應用層提供了alsa-lib,應用程式只需要呼叫alsa-lib提供的API就可以完成對底層硬體的操作。說的這麼好,但是Android中沒有使

Android音訊tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)--------mark詳細

Android下音訊tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo) 2017年05月29日 10:02:03 songze_lee 閱讀數:10224更多 個人分類: Android系統 轉載於:http://b

Android音訊tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)

轉載於:http://blog.csdn.net/radianceblau/article/details/64125411 audio程式碼比較複雜,除了音訊引數,我們平時客製化的地方不多。所以沒有太深入瞭解。 建議先抽空看看如下程式碼: kernel,Linux alsa 架

在windowandroid-ndk編譯android可執行程式的方法。

環境,win7,與android-ndk-r13b-windows-x86_64,把android-ndk-r13b-windows-x86_64解壓在目當中就可,不用安裝 1,只用gcc工具 D:\android-ndk\android-ndk-r13b\toolcha

android如何實現EditText顯示隱藏密碼的實現

在Google釋出了support:design:23+以後我們發現有這麼一個東西TextInputLayout,先看下效果圖: <android.support.design.widget.TextInputLayout a

Android音訊進行轉碼(一)

一. 音訊的簡介 先從音訊壓縮的原理講起, 人的聽力範圍是20hz--20khz, 而根據奈奎斯特定理, 要想不產生低頻失真,則取樣頻率至少是錄製的最高頻率的兩倍。 所以CD音質的取樣頻率是4410

Android屏保程式的開發--須知

1、註冊一個BroadcastReceiver,用於接收ACTION_SCREEN_OFF事件,當接收到這個事件時,開啟自定義的屏保畫面。 Intent.ACTION_SCREEN_OFF. IntentFilter filter = new IntentFilter(I

Linux平臺音訊測試程式

一個音訊測試程式,錄音並播放。程式碼如下: #include <unistd.h> #include <fcntl.h> #include <sys/types.h>

前端課程大集結!51cto 1024程式設計師節大通過以下連結購買可享受附加前端問題答疑服務

http://edu.51cto.com/sd/459c1 HTML5開發APP-框架MUI(仿支付寶案例)http://edu.51cto.com/sd/26227 NodeJS基礎、Express實戰視訊課程【後臺管理系統】【楊勝強老師-前端系列課程】http://edu.51cto.com/sd/a

android將給定圖片維持寬高比縮擷取正中間的正方形部分

       /**      * 將給定圖片維持寬高比縮放後,擷取正中間的正方形部分。      * @param bitmap      原圖      * @param edgeLength  希望得到的正方形部分的邊長      * @return  縮放擷取正中部

【從零開始學日文】#2 搞懂日文發音的5個特徵!濁音..etc + 日文Q&A回答初學者朋友問的問題!

片假名(片仮名 カタカナ katakana)是日文的一種,與平假名合稱"假名"。片假名在平安時代為了訓讀而產生,但片假名字形在明治時期才統一確定下來,此前一個發音往往有多個片假名對應存在。 具體發音請觀看Youtube https://www.youtube.com/wa

linux 顯示 網絡 音效 資訊檢視

各個linux版本間命令可能不同  以下僅供參考 1, 主機板資訊 .檢視主機板的序列號 -------------------------------------------------- #使用命令 dmidecode | grep -i 'serial

android 系統音訊tinyalsa調節音訊方法

目前linux中主流的音訊體系結構是ALSA(Advanced Linux Sound Architecture),ALSA在核心驅動層提供了alsa-driver,在應用層提供了alsa-lib,應用程式只需要呼叫alsa-lib提供的API就可以完成對底層硬體的操

Android studio測試程式教程(在各種環境)(上)

一、Android studio匯出apk 在android studio匯出的apk分為4種,一種是未簽名除錯版apk,一種是未簽名發行版apk,一種是已簽名除錯版apk,還有一種是已簽名發行版apk。以下將介紹這4種apk如何匯出。 (一)除錯版apk與發行版apk區

Android studio測試程式教程(在各種環境)(中)

最近用一臺紅米4高配版(6.0)以及ViVo X9(7.1)來做測試機,它是小米MIUI系統的最新版本MIUI8,我的AS是2.3版本,在網上查看了相關問題,在小米5和紅米note4x等配備了MIUI8系統的手機都遇到了相同的問題,所以我相信大家第一次用MIUI8系統手機來測

linux環境C語言實現非阻塞方式讀取字串資料的串列埠測試程式即串列埠工具的編寫

一、前言 1.1 關於串列埠測試工具,網上已經有整合好的應用程式提供大家使用,但其只提供功能介面,內部具體怎麼實現的還需要自己去探索; 1.2 關於串列埠通訊的測試程式在網上已經是數見不鮮,但也不排除很多是直接“參考”別人的(ctrl+c),而且很多程式

Windows 搭建 Appium + Android+python 自動化測試環境

細節 事情 android view package 效果 框架 比較 framework 前言 本來並不打算寫這麽一篇文章,但是實踐下來發現網上的各種教程裏大致有兩個問題。一是文章有些跟不上時代,目前android開發和測試的技術更新都比較快,內容有些過期。二是細節部分不

Androidapk安裝的過程安卓項目的目錄結構

版本 自動 過程 apk drawable 分辨 jar 程序 軟件安裝 安卓下軟件安裝的過程: 1:拷貝XXX.apk到/data/app/XXX-1.apk 2.在/data/data目錄下創建一個文件夾 文件夾名稱 當前應用程序的包名. 安卓項目的目錄結構:

shell解壓壓縮包求包所有文本的錄音時長總和

ase tdi tgz array net then arpa fun ucc #!/bin/bash#from為壓縮包批次所在目錄#basetarpath 為統計每批次總時長from=$1basetarpath=$2suffix="tgz"todir=

【小程式】分頁載入資料拉載入更多上拉重新整理

【 小程式】分頁載入資料,下拉載入更多,上拉重新整理 分頁載入的優點就不多說了,下面主要記錄一下幾個問題點。 scroll-view元件不能用在頁面根佈局中,不然觸發不了系統的onPullDownRefresh()、onReachBottom()回撥。 在Page頁