Android輸出正弦波音訊訊號 左右聲道對稱

2021-07-22 05:17:39 字數 1937 閱讀 3708

出處:個人站 | csdn

需求:左右聲道分別輸出不同的音訊資料,波形要是乙個正弦波,左右聲道還要對稱!

對硬體不是很了解,說是要通過音波避障。

之前已經介紹了如何在左右聲道輸出不同的音訊資料。

那麼這裡主要介紹如何模擬出波形是正弦波的音訊資料。

/**

* 模擬正弦波音訊資料

*@param isleft 左右聲道

*@return 音訊資料

*/private

short initdata(boolean isleft) else

phase += phaseincrement;

log.i(tag, "initdata: isleft = " + isleft + " buffer[" + i + "] = " + data[i]);

}return data;

}

主要引數

// 單聲道

private

int mchannelconfig = audioformat.channel_out_mono;

// 頻率

private

int mfrequency = 19000;

// 取樣率

private

int msamplerateinhz = 44100;

import android.annotation.targetapi;

import android.media.audioformat;

import android.media.audiomanager;

import android.media.audiotrack;

import android.os.build;

import android.util.log;

/** * created by kqw on 2016/8/29.

*/public

class

channelthread

extends

thread else

}@override

public

void

run()

}log.i(tag, "run: end");

} catch (exception e)

}/**

* 釋放audiotrack

*/public

void

releaseaudiotrack() }}

mleftchannelthread = new channelthread(mchannelconfig, msamplerateinhz, mdataleft, buffersize, true);

mrightchannelthread = new channelthread(mchannelconfig, msamplerateinhz, mdataright, buffersize, false);

mleftchannelthread.start();

mrightchannelthread.start();

if (null != mleftchannelthread) 

if (null != mrightchannelthread)

在程式中模擬音訊資料有乙個缺點,就是不能保證兩個執行緒完完全全的同步,即便是同時開啟兩個執行緒也有一先一后,在頻率很高的時候,難免會有一點誤差!像下面這樣:

另外,這個波形和硬體有很大關係,越是低配裝置,誤差可能會越大,相同的趨勢,但是波動的幅度會比較大(線很粗),可能和裝置本身的噪音有關係。

快速計算正弦波

快速計算正弦波 在dsp運用中,經常需要產生正弦波。如果直接用c的數學函式sin,當然可以產生正弦波,但是由於sin函式本身的效率很低,產生正弦波所需要的mips就會占去dsp處理能力的相當大的一部分。本章介用遞推數列算正弦波的方法,先介紹原理,推導出遞推公式,然後用浮點小數實現計算,再用定點小數進...

正弦波振盪器

高頻電子線路課程設計 正弦波振盪器 1.振盪電路部分 本實驗要求是產生10.7mhz的 波形,選用西勒電路。在西勒電路中,c4與l併聯,所以它的變化不會改變迴路的接入係數,可是可以通過調節它來改變電路的振盪頻率。根據上式以及實驗要求的振盪頻率,可以計算得 選用 l 30pf,選用了100pf 的可變...

關於正弦波的演算法

剛剛來到了乙個新的公司工作,以前是做bs專案的,而這個公司則是做cs專案,於是各種凌亂。最要命的是需要寫各種演算法,這讓咱這個數學成績極度可恥的人各種鬱悶。在專案中的正弦波演算法咱就鬱悶了好久,後來才發現如此的簡單。為了防止咱再次忘掉,果然還是記下來為好。list pointx new list l...