主要内容

audioPlayerRecorder

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

描述

audioPlayerRecorder系统对象™读写音频样本使用你的电脑的音频设备。使用audioPlayerRecorder,你必须有一个音频设备和驱动程序能够同时播放和记录。

看到音频I / O:缓冲、延迟和吞吐量数据流的详细解释。

同时播放和记录:

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

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

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

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

playRec= audioPlayerRecorder (sampleRateValue)设置SampleRate财产sampleRateValue

playRec= audioPlayerRecorder (___,名称,值)每个属性集的名字到指定的价值。未指定的属性有默认值。

例子:“BitDepth”playRec = audioPlayerRecorder(48000年,8位整数)创建一个系统对象,playRec,在48千赫采样率和一个8位整数位深度。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

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

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

设备用于播放和记录音频数据,指定为一个字符或字符串向量。的对象只支持设备启用同金宝app步播放和记录(全双工模式)。使用getAudioDevices列出可用的设备。

金宝app支持驱动程序audioPlayerRecorder是特定于平台的:

  • 窗户®——ASIO™

  • Mac——CoreAudio

  • Linux®——ALSA

请注意

默认的音频设备是您的机器的默认设备只有在它支持全双工模式。金宝app如果您的机器默认的音频设备不支持全双工模式下,金宝appaudioPlayerRecorder指定为默认设备第一个可用的设备检测,能够全双工模式。使用信息方法来获取与你相关的设备名称audioPlayerRecorder对象。

数据类型:字符|字符串

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

数据类型:|

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

数据类型:字符|字符串

选择支持可变帧大小,金宝app指定为真正的

  • ——如果audioPlayerRecorder对象被锁定,输入必须具有相同的帧大小在每个调用。音频设备的缓冲区大小是一样的输入帧大小。如果您使用的是Windows上的对象,打开ASIO UI设置声卡缓冲帧尺寸值。

  • 真正的——如果audioPlayerRecorder对象被锁定,输入帧尺寸可以改变在每个调用。您的音频设备指定的缓冲区大小BufferSize财产。

减少延迟,集金宝appSupportVariableSize。如果需要适应输入你的音频系统,集金宝appSupportVariableSize真正的

数据类型:逻辑

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

请注意

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

依赖关系

要启用这个特性,设置金宝appSupportVariableSize真正的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

之间的映射的列数据和通道的输出设备,指定为一个标量或矢量的有效通道指数。此属性的默认值[],这意味着默认使用通道映射。

请注意

以确保单声道输出只有一个频道的音响设备,使用默认值PlayerChannelMapping设置和提供一个立体声信号通道都是零。

例子:outputLeftOnly = [x(: 1) 0(大小(x, 1), 1)];

例子:outputRightOnly =[0(大小(x, 1), 1) x (: 1)];

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

通道的音频设备之间的映射和记录数据的列,指定为一个标量或矢量的有效通道指数。默认值是1,这意味着设备上的第一个记录频道是用于获取数据,映射到一个单列矩阵。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

使用

描述

例子

audioFromDevice= playRec (audioToDevice)写一帧音频样本,audioToDevice选中的音频设备,并返回一个框架的音频,audioFromDevice

例子

(audioFromDevice,numUnderrun)= playRec (audioToDevice)返回样品溢出自从上次调用的数量playRec

例子

(audioFromDevice,numUnderrun,numOverrun)= playRec (audioToDevice)返回的数量样品暗流自从上次打电话playRec

注意:当你打电话给audioPlayerRecorder系统对象,指定的音频设备设备属性是锁着的。一个音频设备可以被只有一个锁audioPlayerRecorder在一个时间。发布音频设备,电话释放audioPlayerRecorder系统对象。

输入参数

全部展开

音频信号写入设备,指定为一个矩阵。矩阵的列被视为独立的音频通道。

数据类型:||int8|int16|int32|uint8

输出参数

全部展开

音频信号从设备读取,返回矩阵相同的大小和数据类型audioToDevice

数据类型:||int16|int32|uint8

样本数量的球员队列是暗流自从上次打电话playRec暗流沉默是指输出信号。输出信号发生沉默如果设备缓冲区为空时是数模转换的时候了。这个结果在MATLAB处理循环不供应样品在声卡率的要求。

数据类型:uint32

样本数量的录音机队列溢出自从上次调用playRec泛滥是指输入信号下降。输入信号下降发生在加工阶段不跟上样本的采集。

数据类型:uint32

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

getAudioDevices 可用的音频设备列表
信息 获取音频设备信息
克隆 创建重复的系统对象
isLocked 确定系统对象在使用
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象
一步 运行系统对象算法
设置 一次性设置任务系统对象

例子

全部折叠

使用一个音频设备同步播放和录制。如果失去同步,打印信息样本了。

创建对象读取和写入一个音频文件。创建一个audioPlayerRecorder对象扮演一个音频信号到你的设备,同时从你的设备记录音频。

fileReader = dsp.AudioFileReader (“Counting-16-44p1-mono-15secs.wav”,“SamplesPerFrame”,512);fs = fileReader.SampleRate;fileWriter = dsp.AudioFileWriter (“Counting-PlaybackRecorded.wav”,“SampleRate”fs);4月= audioPlayerRecorder (“SampleRate”fs);

在框架循环:

  1. 从文件读取一个音频信号。

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

  3. 写下你的记录的音频文件。

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

~结束(fileReader) audioToPlay = fileReader ();[audioRecorded, nUnderruns nOverruns] = 4月(audioToPlay);fileWriter (audioRecorded)如果nUnderruns > 0流(的音频播放器队列被暗流% d样本。\ n ',nUnderruns);结束如果nOverruns > 0流(占领的录音机队列% d样本。\ n ',nOverruns);结束结束
音频播放器队列是由512个样本暗流。
发行版(fileReader)发布(fileWriter)发布(4月)

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

使用默认设置

创建一个audioPlayerRecorder对象的默认设置。的audioPlayerRecorder是一个兼容的设备和驱动程序自动配置。

4月= audioPlayerRecorder;

audioPlayerRecorder从你的阅读设备和写作结合你的设备在一个叫:4月(audioToDevice audioFromDevice =)。调用audioPlayerRecorder默认设置:

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

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

默认情况下,audioFromDevice是一个列矩阵对应通道1你的音频设备。查看输入和输出通道的最大数量的设备,使用信息方法。

aPRInfo =信息(4月);

aPRInfo返回的结构包含信息的字段选择司机,音频设备,最大数量的输入和输出通道配置。

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

highToneGenerator = audioOscillator (“频率”,600,“SamplesPerFrame”,256);lowToneGenerator = audioOscillator (“频率”,200,“SamplesPerFrame”,256);我=摘要C = highToneGenerator ();D = lowToneGenerator ();audioToDevice = (C, D);audioFromDevice = 4月(audioToDevice);结束

默认的音频输出通道映射

指定一个默认的音频输出通道映射。指定列的1audioToDevice映射到通道2,第2列audioToDevice映射到1频道。修改通道映射audioPlayerRecorder对象必须是开着的。

运行audioPlayerRecorder对象。如果您正在使用耳机或音箱注意,高频和低频调了扬声器。

发行版(aPR) aPR.PlayerChannelMapping = (2, 1);我=摘要C = highToneGenerator ();D = lowToneGenerator ();audioToDevice = (C, D);audioFromDevice = 4月(audioToDevice);结束

默认的音频输入通道映射

指定一个默认的音频输入通道映射。记录的数据只频道两个你的设备。在这种情况下,通道2被映射到一个列矩阵。使用大小来验证audioFromDevice是由- 256 - 1矩阵。

释放(aPR) aPR.RecorderChannelMapping = 2;audioFromDevice = 4月(audioToDevice);(行,坳)=大小(audioFromDevice)
行= 256坳= 1

作为一项最佳实践,释放您的音频设备完成后。

发行版(4月)

扩展功能

版本历史

介绍了R2017a