audioPlayerRecorder

同时播放和使用音频设备录制

描述

audioPlayerRecorder系统对象™读取和写入使用计算机的音频设备的音频采样。要使用audioPlayerRecorder,你必须有一个音频设备和驱动程序能够同时播放和录制的。

看到音频I / O:缓冲,延迟时间和吞吐量用于该数据流的一个详细的解释。

同时播放和记录:

  1. 创建audioPlayerRecorder对象并设置其属性。

  2. 调用带参数的对象,就好像它是一个功能。

要了解更多有关系统对象的方式工作,请参阅什么是系统对象?(MATLAB)。

创建

描述

playRec= audioPlayerRecorder返回系统对象,playRec,播放音频样本从同一音频设备的音频设备和记录样品,实时。

playRec= audioPlayerRecorder(sampleRateValue设置采样率属性sampleRateValue

playRec= audioPlayerRecorder(___名称,值设置每个属性名称到指定的。未指定的属性具有默认值。

例:playRec = audioPlayerRecorder(48000, '位深度', '8位整数')创建一个系统对象,playRec,即工作在48kHz采样率和一个8位的整数位深度。

属性

展开全部

除非另有说明,性质nontunable,这意味着调用对象后,你不能改变它们的值。对象锁,当你打电话给他们,和释放功能解锁他们。

如果属性可调,你可以在任何时候改变它的值。

有关更改属性值的更多信息,请参阅使用系统对象的系统设计在MATLAB(MATLAB)。

设备用于播放和录制的音频数据,指定为矢量字符或字符串。该对象支持仅用于同时重万博1manbetx放和记录(全双工模式)功能的装置。用getAudioDevices列出可用的设备。

万博1manbetx支持的驱动程序audioPlayerRecorder是特定于平台的:

  • 视窗®- ASIO™

  • 苹果电脑- CoreAudio的

  • Linux的®- ALSA

注意

默认音频设备是您的计算机的默认设备仅支持全双工模式。万博1manbetx如果你的机器的默认音频设备不支持全双工模式,万博1manbetxaudioPlayerRecorder指定为默认装置检测到第一个可用的装置,其能够进行全双工模式。使用信息方法来获取设备名称与相关的audioPlayerRecorder目的。

数据类型:烧焦|

使用设备来记录和播放音频数据,在赫兹的采样速率,指定为一个正整数。范围采样率取决于你的音频硬件。

数据类型:|

由设备所使用的数据类型,指定为字符向量或字符串。

数据类型:烧焦|

选项,以支持可变帧大万博1manbetx小,指定为要么真正

  • - 如果audioPlayerRecorder对象被锁定时,输入必须在每个呼叫的相同的帧大小。音频装置的缓冲器大小是相同的输入帧大小。如果您在Windows上使用对象,打开ASIO UI设置声卡缓冲区帧大小值。

  • 真正- 如果audioPlayerRecorder对象被锁定,输入帧大小可以在每个呼叫而改变。您的音频设备的缓冲区大小是通过指定缓冲区大小属性。

为了尽量减少等待时间,集万博1manbetxSupportVariableSize。如果大小可变的输入您的音响系统,一组被要求万博1manbetxSupportVariableSize真正

数据类型:合乎逻辑

的音频设备的缓冲区大小,指定为一个正整数。

注意

如果您使用的是Windows机器,使用对象asiosettings设置声卡缓冲区大小的缓冲区大小价值的audioPlayerRecorder系统对象。

依赖

要启用这个特性,集万博1manbetxSupportVariableSize真正

数据类型:||INT8|INT16|INT32|Int64的|UINT8|UINT16|UINT32|UINT64

播放数据和输出装置的信道的列之间的映射,指定为一个标量或作为有效信道索引的向量。此属性的默认值是[]的,这意味着缺省信道的映射被使用。

数据类型:||INT8|INT16|INT32|Int64的|UINT8|UINT16|UINT32|UINT64

音频设备的信道和记录的数据,指定为一个标量或作为有效信道索引的向量的列之间的映射。默认值是1的,这意味着在设备上的第一记录信道用于采集数据和被映射到一个单一的列的矩阵。

数据类型:||INT8|INT16|INT32|Int64的|UINT8|UINT16|UINT32|UINT64

用法

描述

audioFromDevice= playRec(audioToDevice写入音频样本的一帧,audioToDevice到所选择的音频设备,并且返回一帧音频,audioFromDevice

[audioFromDevicenumUnderrun] = playRec(audioToDevice因为到最后调用返回超限样本数量playRec

[audioFromDevicenumUnderrunnumOverrun] = playRec(audioToDevice因为到最后调用返回的样本数量溢playRec

注意:当调用audioPlayerRecorder系统对象,音频装置指定由设备财产被锁定。音频设备可仅通过一个被锁定audioPlayerRecorder在一个时间。要释放的音频设备,通话释放audioPlayerRecorder系统对象。

输入参数

展开全部

音频信号写入装置,指定为矩阵。矩阵的列被视为独立的音频通道。

数据类型:||INT8|INT16|INT32|UINT8

输出参数

展开全部

从设备中读取的音频信号,返回作为基质相同的大小和数据类型如audioToDevice

数据类型:||INT16|INT32|UINT8

样品数由玩家排队是因为最后的呼叫溢playRec欠载是指输出信号的沉默。输出信号沉默如果设备缓冲器是空的时,它是时间的数字 - 模拟转换发生。这个结果时,在MATLAB处理循环不会在速率供应样品声卡的需求。

数据类型:UINT32

样品数由记录队列中,因为最后调用超限playRec超限是指输入信号的下降。当处理级不保持与采集样品的速度输入信号滴发生。

数据类型:UINT32

对象函数

使用对象函数,指定系统对象作为第一个输入参数。例如,为了释放一个名为System对象的系统资源OBJ,使用此语法:

释放(OBJ)

展开全部

getAudioDevices 列出可用的音频设备
信息 获取音频设备信息
克隆 创建副本系统对象
锁住了 确定系统对象在使用
释放 释放资源,并允许更改系统对象属性值和输入特性
重启 复位的内部状态系统对象
系统对象算法
建立 一次性设置任务系统对象

例子

全部收缩

同步重放和记录使用单个音频设备。如果同步丢失,有关样本打印信息删除。

创建对象来读取和写入的音频文件。创建audioPlayerRecorder反对播放从您的设备的音频信号到您的设备,并同时录制音频。

的FileReader = dsp.AudioFileReader('计数-16-44p1单 -  15secs.wav'...'SamplesPerFrame',512);FS = fileReader.SampleRate;的FileWriter = dsp.AudioFileWriter('计数-PlaybackRecorded.wav'...'采样率',FS);APR = audioPlayerRecorder('采样率',FS);

在基于帧的循环:

  1. 阅读您的文件的音频信号。

  2. 播放音频信号,您的设备,同时记录从您的设备中的音频。使用可选nUnderrunsnOverruns输出参数来跟踪同步的任何损失。

  3. 写下您录制的音频到文件中。

一旦循环完成,释放对象免费设备和资源。

〜isDone(的FileReader)audioToPlay =的FileReader();[audioRecorded,nUnderruns,nOverruns] = APR(audioToPlay);的FileWriter(audioRecorded)如果nUnderruns> 0 fprintf中(“音频播放器队列被%d样本数据不足。\ n”,nUnderruns);结束如果nOverruns> 0 fprintf中(“音频记录器队列被%d样本溢出。\ N”,nOverruns);结束结束
音频播放队列由512个样本数据不足。
发布(的FileReader)发布(的FileWriter)释放(APR)

audioPlayerRecorder系统对象™允许您指定音频设备的渠道,发送和接收的音频设备接收到的数据之间的非默认的映射。要运行这个例子,您的音频设备必须至少有两个通道,并能够全双工模式。

使用默认设置

创建audioPlayerRecorder使用默认设置的对象。该audioPlayerRecorder自动配置为兼容设备和驱动程序。

APR = audioPlayerRecorder;

audioPlayerRecorder联合收割机从您的设备阅读和在一个单一的电话写您的设备:audioFromDevice = APR(audioToDevice)。调用audioPlayerRecorder使用默认设置:

  • 的地图列audioToDevice到设备的输出通道

  • 映射到列设备的输入通道audioFromDevice

默认,audioFromDevice是对应于音频设备的信道1的一列的矩阵。要查看设备的输入和输出信道的最大数,使用信息方法。

aPRInfo =信息(APR);

aPRInfo返回为含约所选驱动器,音频设备,和输入和输出通道的配置中的最大数目的信息的字段的结构。

调用audioPlayerRecorder具有两列的矩阵。默认情况下,第1列被映射到输出通道1和列2被映射到输出通道2。audioPlayerRecorder返回一列矩阵相同的行数为的audioToDevice矩阵。

highToneGenerator = audioOscillator('频率',600,'SamplesPerFrame',256);lowToneGenerator = audioOscillator('频率',200,'SamplesPerFrame',256);对于I = 1:250 C = highToneGenerator();d = lowToneGenerator();audioToDevice = [C,d];audioFromDevice = APR(audioToDevice);结束

非默认通道映射的音频输出

指定您的音频输出的非默认信道映射。指定的该列1audioToDevice映射到信道2,并且该列2的audioToDevice映射到通道1要修改信道映射,该audioPlayerRecorder对象必须被解锁。

跑过audioPlayerRecorder目的。如果您在使用耳机或立体声扬声器,公告称,高频和低频音调皆已扬声器。

释放(APR)aPR.PlayerChannelMapping = [2,1];对于I = 1:250 C = highToneGenerator();d = lowToneGenerator();audioToDevice = [C,d];audioFromDevice = APR(audioToDevice);结束

非默认通道映射为音频输入

指定您的音频输入非默认信道映射。从设备的唯一通道的两个记录数据。在这种情况下,信道2被映射到一列矩阵。用尺寸验证audioFromDevice是一个256×1矩阵。

释放(APR)aPR.RecorderChannelMapping = 2;audioFromDevice = APR(audioToDevice);[行,列] =尺寸(audioFromDevice)
行= 256列= 1

作为最佳实践,释放你的音频设备一旦完成。

释放(APR)

扩展功能

介绍了在R2017a