出處:個人站 | 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...