音频处理
Raylu
专注移动互联网。
展开
-
AudioRecord实现录音
Raw Audio Manipulation in Android Tuesday, September 1, 2009 | 2:13 AM Labels: Country: EMEA, Product: Android Version 1.5 of the Android SDK introduced a bunch of cool new f转载 2011-06-09 13:49:00 · 5294 阅读 · 0 评论 -
多媒体音量调节的方法
/** * * [多媒体音量调节] * [功能详细描述] * * @param keyCode * @param event * @return * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) */原创 2011-06-27 15:24:00 · 4594 阅读 · 0 评论 -
wave文件(*.wav)格式、PCM数据格式
1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声); 22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)转载 2011-06-17 09:11:00 · 2669 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(9)
我们都知道,当播放速度改变的时候,会带来一个副作用,那就是音调也会随着播放的速度而改变。播放速度加快,声音将升调,变得尖锐,播放速度减慢,声音将降调,变得低沉,当然这是题外之话。改变音频播放速度的方法有很多,我只针对ST变速算法的核心,也就是线性插值算法的实现。对于ST的插值算法前面已经提到。 k = (y - y0)/(y1-y0)->y=(1-k) * y0+k * y1k值也就转载 2011-06-13 10:21:00 · 3476 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(8)
经过前面几个小节的介绍,各位想必已经对ST有个比较初步的认识。在往后的这些章节里,我将提出ST某些重要的算法以及实现。首先谈谈数字滤波器的实现。纵观整个ST的处理流程,仅仅在对声音样本进行重采样的时候可以通过bool bUseAAFilter的值来判断是否采用数字滤波器,具体在RateTransposer类成员函数processSamples中实现。// Transposes sample ra转载 2011-06-13 10:20:00 · 2690 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(7)
上一节说到TDStretch类成员函数processSamples,粗略分析了一下大概。至于流程是通过TDStretch类成员函数putsamples调用processSamples进行处理,我们不难联想到前面对于SoundTouch类成员函数putSamples的分析。TDStretch类成员函数putSamples实现如下: // Adds numsamples pcs of sample转载 2011-06-13 10:19:00 · 2775 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(5)
变速类RateTransposer的实现回到SoundTouch类成员函数void SoundTouch::putSamples(const SAMPLETYPE *samples, uint nSamples)。定义一个SoundTouch类变量之后,通过简单地调用这个类函数,就可以实现音频的相关处理。分析一下他的调用形式,也很简单,第一个参数SAMPLETYPE *samples,指向一个转载 2011-06-13 10:16:00 · 4009 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(4)
SoundTouch构造流程初始化的一点补充。在SoundTouch类构造函数中,我们留意到有这么一个函数calcEffectiveRateAndTempo()SoundTouch::SoundTouch(){ // Initialize rate transposer and tempo changer instances pRateTransposer = RateTranspos转载 2011-06-13 10:15:00 · 3358 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(1)
SoundTouch音频处理库的使用异常简单,经过简单的编译之后,设置编译环境,以vc为例,直接在include包含SoundTouch目录下的include路径,接着在lib添加SoundTouch目录下的lib路径,然后在代码的头文件中添加头文件以及引用的库。如下:根据_DEBUG这个宏,我们可以进行一些编译预处理,假如是以DEBUG编译就采用debug库,其他的话就采用rel转载 2011-06-13 10:08:00 · 26956 阅读 · 9 评论 -
SoundTouch音频处理库源码分析及算法提取(6)
TDStretch类的实现SoundTouch类成员函数putSamples(const SAMPLETYPE *samples, uint nSamples)实现如下,根据上篇的分析rate是一个比率,大于1表示速度加快,小于1表示速度减慢,对于播放速度减慢这种情况。……#ifndef PREVENT_CLICK_AT_RATE_CROSSOVER else if (rat转载 2011-06-13 10:18:00 · 4171 阅读 · 1 评论 -
SoundTouch音频处理库源码分析及算法提取(3)
SoundTouch音频处理库初始化流程剖析 2紧接上文《SoundTouch音频处理库初始化流程剖析》TDStretch类和基类的关系:FIFOSamplePipe -> FIFOProcessor ->TDStretchSoundTouch类成员class TDStretch *pTDStretch变量的初始化在SoundTouch的构造函数 SoundTouch::SoundTouch转载 2011-06-13 10:13:00 · 3878 阅读 · 0 评论 -
SoundTouch音频处理库源码分析及算法提取(2)
SoundTouch音频处理库初始化流程剖析定义一个变量SoundTouch m_SoundTouch; SoundTouch的派生关系FIFOSamplePipe->FIFOProcessor->SoundTouch (流程[1])因此首先构造基类FIFOSamplePipe,接着派生出FIFOProcessor,然后才以FIFOProcessor派生出SoundTouch。转载 2011-06-13 10:12:00 · 6295 阅读 · 0 评论 -
soundtouch之变调、变速、节拍
前一段日子在做变调不变速的算法,通过频域实现,谁知道到相位同步一直搞不定了,声音效果比较差。后来去偶然看到了soundtouch,这个强大的库让我为之振奋,现在已经完成,并做成了一个实时播放的demo,现把一些使用笔记简单地拿出来共享。SoundTouch是一个开源的音频处理转载 2011-08-27 11:50:20 · 18845 阅读 · 21 评论