Skip to main content

PXUA216MB-DL2-M上位机例程

概要

PXUA216MB-DL2-M是通过UAC 2.0(USB Audio Class 2.0)协议把多路音轨传输到操作系统(下文简称为"host主机"),host主机需要相应的上位机实时解析UAC 2.0的音频流。

评估板各路麦克风为独立音轨,并且保持高一致性,极小的相位差。用户根据自行的声学研究,把例程相关代码添加进入到上位机工程中使用,例程仅实现到UAC 2.0实时解析和存储,不做其他处理。

例程包含了Windows,Linux和Android系统的例程,根据项目需求自行选择,下文主要以下windows例程为例做简单讲解,其他平台简单提示。

Windows平台

在附件中 app_demo/windows 目录下,Pawpaw_16mic_cap_demo文件夹为例程工程,请使用 Microsoft Visual Studio 打开,打开后显示如下界面:

打开后,例程的主函数在pa_devs.c文件中,直接点击运行即可得到下图的执行和界面

信息

注意此份代码使用是portaudio开源库实现,在使用该代码前,务必自行了解一下portaudio的使用(这很重要),此采集框架是开源代码。

代码工程生成的app tool会自动扫描出PXUA216MB-DL2-M评估板声卡设备,然后选择对应的输入和输出设备ID号。 设备进入测试过程,这个时候如果PXUA216MB-DL2-M评估板的Line-out接了喇叭音箱,喇叭音箱会播放冰雨这首歌。同时也可通过命令行对音乐进行播放和暂停。同时在代码的跟目录下会生成前4个通道的声音并保存为文件.

pawpaw_record1.pcm
pawpaw_record2.pcm
pawpaw_record3.pcm
pawpaw_record4.pcm

这里几个录音文件为演示作用,下面重点说明一下,portaudio的录音的回调函数。在record.c文件中

for(i=0; i<framesPerBuffer; i++)
{
#if (DATA_TEST == 1)
for(j =0; j < 18; j++)
{
data->input_data[j] = *rptr++;
}
fwrite(&(data->input_data[0]), 1, sizeof(short), file[0]);
fwrite(&(data->input_data[1]), 1, sizeof(short), file[1]);
fwrite(&(data->input_data[2]), 1, sizeof(short), file[2]);
fwrite(&(data->input_data[3]), 1, sizeof(short), file[3]);
#endif
}

该部分代码是获得实际的录音数据的实现代码,详细的数据框架方式和相应的说明在代码中都有注释,由于篇幅的限制,请用户一定要先了解portaudio此开源代码的使用。

如果更新了固件或者改变了通道数,采样率等音频格式信息,在audioConfig.h进行修改现有的定义

#define SAMPLE_RATE        (16000)            // 采样率设置
#define FRAMES_PER_BUFFER (256) // buffer框架设计

/************************************************************************************************
* 此处根据实际的选择设备的通道数目,进行定义,在这里以XMOS的板子来看
* 输入10通道,输出2通道
************************************************************************************************/
#define INPUTCHANNEL (18) // 输入设备的通道数目
#define OUTPUTCHANNEL (2) // 输出设备的通道数目

Linux平台

评估板可直接连接上Linux平台,Linux平台下已经自带了UAC2.0 驱动,并不需要额外安装UAC 2驱动,且自带了UAC 2.0解析工具,这里以Ubuntu 14.04操作系统进行说明。评估板板子连上Linux系统后,首先需要查看声卡设备,用来确定声卡的ID号。采集代码在附件中。

编译方式如下图显示,生成的xmoscap直接运行,即可直接生成一个18通道的.wav文件。 Linux平台下直接采用自带的tinyalsa开源库即可解析多路麦克风原始信号,无需借助第三方开源库,关于linux的tinyasla请自行熟悉和使用。

安卓平台

评估板可直接连接上Android平台,查看app_demo/windows 目录下的安卓支持代码如下图

Hint

注意Android平台下并不需要安装UAC 2.0驱动(这个取决于系统),默认情况下一般能够直接支持,如果不能支持请自行询问主板厂商,如何支持USB Audio Classs 2.0的驱动。

另外, 在部署安卓例程时, 代码需要放置在jni目录下,并使用NDK编译,如果需要配合APK使用,需要使用jni调用。