iPhone/iPad 2012/05/14 take care of Audio Unit

iPhone/iPad开发札记2012/03/05 1. conference编译错误,如下: *min/max macro related.  /Developer325/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/usr/include/c++/4.2.1/bits/locale_facets.tcc:610:34: error 阅读详情

1. something could be done: 

* check volume code. 

* double check stream format 

* try moving buf code outside of render callback

* double check sample rate code 

* double check audio session ( like ioBuffer related issue )


2. check volume code ( MixerHost ) 

终于找到了MixerHost不工作的原因:设置音量的代码与Audio Graph启动的顺序。


    [audioMixer startAUGraph]; 

    [audioMixer enableMixerInput:0 isOn:1];

    [audioMixer enableMixerInput:1 isOn:1];

    [audioMixer setMixerInput:0 gain:10];

    [audioMixer setMixerInput:1 gain:10];    

    [audioMixer setMixerOutputGain:10];



注1:要先启动startAUGraph

注2:音量不能设1.0,太小。


1. something could be done: 

* check volume code. 

* double check stream format 

* try moving buf code outside of render callback

* double check sample rate code 

* double check audio session ( like ioBuffer related issue )


2. check volume code ( MixerHost ) 

终于找到了MixerHost不工作的原因:设置音量的代码与Audio Graph启动的顺序。

    [audioMixer startAUGraph]; 

    [audioMixer enableMixerInput:0 isOn:1];

    [audioMixer enableMixerInput:1 isOn:1];

    [audioMixer setMixerInput:0 gain:10];

    [audioMixer setMixerInput:1 gain:10];    

    [audioMixer setMixerOutputGain:10];


注1:要先启动startAUGraph  ( double check,与顺序无关,只和音量有关,原始音量 太小?)

注2:音量不能设1.0,太小。


3. 直接使用IO Unit,注意以下问题:

* 音量如何控制? ( 直接把 sample * N ???)

* 使用voip unit ?

 * Audio Session的IO Buffer控制?


4. 做一些确认实验(MixerHost)


5. IO Unit


* 音量倍数

音量:直接*10看结果。

10倍,听不见

30/100倍,能听见了,但音量偏小。

Q:如何在API上设音量 ?

300倍 ,音量可观,但音质仍不好,有破响,估计与inNumberFrames=186(readAudioData count = 160)有关。


* 传数据的长度

for (int i=0; i<audioPacketCount; i++) {        

outSamplesChannelLeft[i] = ((AudioUnitSampleType) (*samplePtr)) *300;   // 300 times volume

samplePtr ++; 

}


audioPacketCount = inNumberFrames,出现啸叫。


* 尝试设置Audio Session ioBuffer 

相关资料:

setPreferredIOBufferDuration:error:

Sets the preferred audio I/O buffer duration, in seconds.

- (BOOL)setPreferredIOBufferDuration:(NSTimeInterval) duration error:( NSError **) outError
Parameters
duration

The audio I/O buffer duration, in seconds, that you want to use. The available range for I/O buffer duration is 0.005 through 0.093 s, corresponding to a range of 256 through 4,096 sample frames at 44.1 kHz.

outError

Pass in the address of a nil-initialized NSError object. If an error occurs, upon return the NSError object describes the error. If you do not want error information, pass in NULL.

Return Value

Returns YES on success or NO on failure.

Discussion

The audio I/O buffer duration is the number of seconds for a single audio input/output cycle. For example, with an I/O buffer duration of 0.005 s, on each audio I/O cycle:

  • You receive 0.005 s of audio if obtaining input.

  • You must provide 0.005 s of audio if providing output.

To obtain the actual I/O buffer duration, call the AudioSessionGetProperty function using thekAudioSessionProperty_CurrentHardwareIOBufferDuration key as its inID parameter.


注:改成10ms后,callback的inFrameNumbers仍为186,没有变化。


6. 做一个类,专门处理data的read,及产生186个AudioSampleType的frame

@interface AudioBufferHandler : NSObject {

    int reamainedNumberFrames;   // frame number in queue

    

    

}


- (void) putAudioDataBytes:(unsigned char *)data; 

- (BOOL) needMoreAudioData; 

- (void) getAudioDataAudioSampleType:(AudioUnitSampleType *)data;


@end


注:这里需要一个3*186大小的一个queue,内容是short ( 从RT库里来的一个音频sample)




科技中介服务机构如何高效完成技术成果的筛选与匹配服务?.docx 科技中介服务机构如何高效完成技术成果的筛选与匹配服务? 立即下载

相关推荐

coppeliasim+gym+sac机械臂到位实验

urdf文件

iphone/iPad 搞定Audio Unit 2012/05/13

1. 研究MixherHost  * render callback呼叫duration = 11 ms  2012-05-13 09:27:32.884 MixerHost[1576:7c03] into render callback: bus no = 0 2012-05-13 09:27:32.884 MixerHost[1576:7c03] into render callba

printf1998的专栏 4056

产业园区如何通过数智工具精准识别企业技术需求,提高服务匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

iPhone/iPad开发札记 2012/03/09 音频

1. 后续工作 * 解决按hear钮按下后,event处理时间太长 * 解决有时听不见声音的问题 * 整理代码 * 声音采集 2. 听不见声音 error in console:  notification: Invalid mode encountered. The stream is corrupted. notification: More t

printf1998的专栏 2651

搜素引擎+p2p+电脑全域搜素+快速检索文件

快速搜索电脑内一切文件,反应超快

三相电压型PWM整流器PI双闭环控制Matlab仿真

内容概要:本文系统介绍了三相电压型PWM整流器的PI双闭环控制系统在Matlab/Simulink环境下的建模与仿真方法,重点阐述电压外环与电流内环的协同控制机制,通过PI调节器实现直流侧电压稳定控制及交流侧单位功率因数运行。内容涵盖电压定向控制(VOC)、空间矢量PWM(SVPWM)调制策略、电网不平衡条件下的功率平衡控制等关键技术,并延伸至维也纳(Vienna)整流器、中点电压平衡、滞环电流控制等多种先进拓扑与控制方法。配套提供Mathcad计算书,支持不同功率等级下的参数设计、闭环建模与工程化实现,形成从理论分析到仿真验证的完整技术链条,适用于电力电子系统科研与教学实践。; 适合人群:电气工程、电力电子及相关专业的研究生、科研人员,以及具备Matlab/Simulink仿真基础的工程技术人员。; 使用场景及目标:① 掌握三相PWM整流器双闭环PI控制系统的建模、仿真与动态性能分析;② 深入理解电压定向控制、SVPWM调制及电网不平衡工况下的先进控制策略;③ 利用Mathcad计算工具完成实际工程中整流器的参数设计与优化。; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,重点关注控制架构搭建、PI参数整定方法、系统稳定性分析及不同工况下的仿真验证,通过反复调试提升对控制性能的理解与工程应用能力。

iPhone/iPad开发札记2012/03/11 -2 Audio Unit

1. Reading  "Audio Unit Hosting Guide for iOS" /  "Audio Unit Processing Graph Service References" / - for managing the graph ( a collection of units ) "Audio Component Services Reference" / - for

printf1998的专栏 2188

基于C#的ASP.NET开发的党史学习网站课设

开展党史学习教育,就是要以史为镜、以史明志,把苦难辉煌的过去、日新月异的现在、光明宏大的未来贯通起来,在鉴往知来中砥砺前行,在乱云飞渡中把准航向,在凝心聚力中团结奋斗,共同创造新的历史伟业。登陆按钮与数据库进行连接,逻辑实现是如图3.1.3所示,自己定义一个SQL查询语句,将账号、密码放入SQL查询语句中,用sqlDataReader.HasRows语句进行逐一比较,找出结果,将用户名存入session并调用cookies,如果结果存在就关闭数据库,进行数据跳转,并弹出登陆成功的提示框,并关闭数据库。

m0_62408555的博客 974

iPhone/iPad Audio Unit 2012/05/19

1. 使用Audio Unit采集声音 (耗时2:30小时) * 似乎不推荐 There are two other main design patterns for audio units hosting. To record or analyze audio, create an input-only app with a render callback function. The cal

printf1998的专栏 2162

从原理到代码:拆解UniFormer中动态位置嵌入(DPE)的3D卷积实现

本文深入解析了UniFormer模型中动态位置嵌入(DPE)模块的3D卷积实现原理与代码。DPE通过一个轻量的3D深度可分离卷积,替代传统静态位置编码,使模型能自动学习视频数据的时空位置关系。文章对比了其与Swin Transformer相对位置偏置的优劣,并提供了PyTorch实现代码与高级定制方案,为视频理解任务提供了高效灵活的动态位置编码解决方案。

weixin_29207149的博客 309

【mysql8.0.33安装详情教程】

8、进入Account and Roles界面,输入密码,再点击next(密码随便输,自己记住就行)11、进入Apply Configuration界面,直接点Execute,等待应用成功。14、输入密码,点击check,检查是否正确。3、下图是选择安装类型,选择默认安装就可以,然后点击“next”。5、进入Product Configuration,点击next。9、进入Windows Service界面,直接点击next。15、点击Execute执行安装(完成后点击Finish)二、验证是否安装成功。

98渣渣辉的博客 2112

iPhone/iPad 2012/05/12 搞定Audio Unit

1. 总结一下 I/O Unit有两个element(bus),每一个都有input及output两个scope input element的input scope,直接与mic hardware相连,不用配置 output element的output scope,直接与speaker hardware相连,不用配置 在我的应用中,只需要配置output element的input sc

printf1998的专栏 1940

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

iPhone/iPad开发札记 2012/03/10 音频:录音与混音

1. reading my code for recording  * MyInputBufferHandler  Q: 这里有Enqueue Buffer动作,这样,这个buffer有机会重新fill    A: YES!. callback中总会有enqueue动作的,无论recording还是playback.  Q: 参数含义 voidAQRecorder

printf1998的专栏 1766

PreScan快速入门到精通第二十一讲驾驶员模型之驾驶员在环

请注意,操纵杆的输出角度是以度为单位的,而方向盘执行器希望其输入是以弧度为单位的。当选择一个支持的方向盘时,PreScan会自动将按钮映射到正确的功能上(如换挡),并设置轴的正确范围(如转向角度)。该系统中的所有其他组件都是为了提供正确的按钮映射,并为所选的方向盘设置正确的范围。对于每一个额外连接的控制器,它们的ID会增加一个,例如第二个控制器的设备ID为1,第三个控制器的设备ID为2,等等。由于所有的方向盘最初放在编译表上的设备ID都是0,所以用户应该先进行正确的调整,将每个控制器设置为正确的设备ID。.

小明师兄的博客 1423

北斗导航 | ILS(仪表着陆系统)、MLS(微波着陆系统)和GBAS(地基增强系统)的性能对比

最 早 的 GBAS 系 统 是 **局 域 增 强 系 统(LAAS)**,它是 1990 年由美国 Honeywell 公司 和 NASA 共 同 完 成 的 差 分 GPS(DGPS)演 变 而 来 的。1998 年,LAAS 被 ICAO 采 纳为 GBAS。2009 年 9 月 3 日 Honeywell 公 司 的GBAS 系统通过了 **CAT-I 精密进近着陆系统**的设计认证 ,而 **CAT-II 和 CAT-III 系统的研发和验证工作也正在有序的进行中**

尘世冰封的专栏 3984

iPhone/iPad开发扎记 2012/02/18

1. 几个问题: Q:从Session拿到的音频数据的格式?codec?     A:通过一个C语言库方法readAudioData(...) 2012/03/12 Q:Session如何提供多路音频的?     A: readAudioData(...)中有参数可以选择 Q:captured audio data如何传给Session?     A:通过C库s

printf1998的专栏 1562

【毕业设计】基于雷达与深度学习的摔倒检测——雷达数据集处理

雷达原始数据是时域非平稳信号,快速傅里叶变换(Fast Fourier Transformation, FFT)不能很好地提取微多普勒效应的模式特征。因此短时傅里叶变换(Short Time Fourier Transformation, STFT)被应用于雷达信号的时频谱分析。本文主要介绍雷达数据集的预处理过程,包括时频谱图的中值滤波与 SVD 分解。

洋洋Young的博客 1808

iPhone/iPad札记2012/03/11 - 1 音频,混音

1. conference音频问题总结 * 音频双向都通过,但不稳定,时好时坏(录音只成功过一次,播放曾有过连续工作20-30分钟一切正常的记录,但重启系统后就出现问题)     Q Action: to see how often the callback would be called ?         A: playing: 10 ms, recording 3ms  *

printf1998的专栏 1391

第一章 电力电子仿真软件 PLECS简介

PLECS是瑞士Plexim公司开发的电力电子仿真软件,具有快速仿真、丰富元件库和热分析功能。软件提供单机版和嵌入MATLAB的版本,支持多平台安装且流程简单。首次运行需获取授权文件,提供60分钟演示模式。界面包含模型创建、帮助文档和元件库浏览器等功能区域,操作便捷。该软件是专业高效的电力电子系统仿真工具。

495

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

iPhone/iPad开发札记 2012/03/08 音频

1. MixerHost  * setupAudioSession  这个方法可以 commented out ! Q: Why 不影响使用playing过程 ?比如sample rate/catetory之类? * understanding ASBD  /*!     @struct         AudioStreamBasicDescription

printf1998的专栏 1318

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

iPhone/iPad开发札记2012/03/12 Audio Unit

1. MixerHost  * AudioBufferList  Declaration: struct AudioBufferList {   UInt32      mNumberBuffers;   AudioBuffer mBuffers[1];}; Q:WHY AudioBuffer[1]? WHY NOT AudioBuffer *? seems the same

printf1998的专栏 1150

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

iPhone/iPad开发扎记2012/02/19

### To play *.pcm file from Jiarong  1. play system sound  * 9:50 am. can play system sound now. ( 1:30 hours )  Summary:  # must have a "-" for methods # adding a resources file ( tap.cif )

printf1998的专栏 949

iPhone/iPad搞定Audio Unit声音 2012/05/15

1. 处理样本大小由160变成186的问题 搞定!(12:30) #include using namespace std;  class AudioBufferHandler { public:     AudioBufferHandler(int intpuSize, int outputSize);     void putAudioDa

printf1998的专栏 891

iPhone/iPad开发扎记2012/02/20

在执行以下语句的时候,出现错误: int result =readAudioDataPackets(THIS->GetCurrentPacket(), &numBytes, inCompleteAQBuffer->mAudioData); GDB: Program received signal: "EXC_BAD_ACCESS".  Q: BUFFER 似乎没有分配

printf1998的专栏 768
上一篇: iphone/iPad 搞定Audio Unit 2012/05/13
下一篇: iPhone/iPad搞定Audio Unit声音 2012/05/15
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值