我有一个带有麦克风和扬声器的音频session设备。麦克风和扬声器都具有相同的采样率,由snd_pcm_hw_params_set_rate_near()设置为8000Hz。我是否需要为两者设置相同的周期大小和周期数(对于两个这样的设备相互通信)?或者我可以为扬声器选择不同于为麦克风配置的周期/周期大小吗?我如何决定使用哪个周期和周期大小?我正在使用snd_pcm_hw_params_set_period_size_near()和snd_pcm_hw_params_set_periods_near()API来设置扬声器和麦克风的周期大小和周期。(我是ALSA的新手)。
ALSA中有几个“高分辨率”时间戳函数:snd_pcm_status_get_trigger_htstampsnd_pcm_status_get_audio_htstampsnd_pcm_status_get_driver_htstampsnd_pcm_status_get_htstamp我想了解结果函数代表的时间点。我目前的理解是trigger_htstamp表示流开始/停止/暂停的时间。snd_pcm_status_get_trigger_htstamp返回一个常量值,当我将audio_htstamp添加到该值时,结果非常接近当前系统时间。audio_htstamp在我的系统上似乎
如何在默认声卡上监听主channel的音量变化?我希望通过dbus或回调或其他方式收到音量已更改的通知。我已经尝试查看ALSA和PulseAudioAPI,它们似乎只允许您设置和获取音量,但不能收听音量变化。任何编程语言都可以。 最佳答案 编辑:在第二个示例中,当音量低于5%或高于100%时,不会为我生成事件。据我所知,第一个示例运行完美。pactlsubscribe将在音量变化时打印出有关接收器的数据。我现在正在做的是将输出通过管道传输到一个将运行脚本的小型C程序。运行.sh:pactlsubscribe|grep--line-b
我使用ALSA来播放PCM样本。我用这个函数打开PCM流:intsnd_pcm_open(snd_pcm_t**pcmp,constchar*name,snd_pcm_stream_tstream,intmode);我目前使用“默认”作为名称参数。我希望能够选择其他设备。我无法理解的是如何确定其他可用设备的名称。我将一个USB麦克风连接到我的系统,播放器和混音器似乎检测到新设备。我如何确定该设备的名称?是否有任何ALSA函数可以获取可用设备及其各自名称的列表? 最佳答案 我想你可以使用snd_device_name_hint用于枚举
有谁知道在Linux上获取MIDISysEx数据双向转储的好方法?(在YamahaPSR-E413MIDI键盘和YamahaMusicSoftDownloader在Wine中运行的副本之间)我想对用于将MIDI文件复制到键盘内部存储器或从键盘内部存储器复制MIDI文件的协议(protocol)进行逆向工程,为此,我需要对两者之间的有效交换进行一些记录。该实用程序在Wine(withalittlenudging)中确实有效,但我不想在可以使用FUSE文件系统时依赖Wine中廉价的、不可编写脚本的应用程序。这是目前的情况:我的键盘通过内置的USB-MIDI桥连接到我的电脑。USB转储器/窥
目前Debian中的/usr/sbin/alsa知道使用声卡的进程的方式如下:echo$(\lsof+D/dev-Frt\|awk'/^p/{pid=$1}/^t/{type=$1}/^r0x(74|e)..$/&&type=="tCHR"{printpid}'\|cut-c2-\|uniq\)这是相当难看的,取决于lsof。我正在寻找不使用lsof的POSIX解决方案,可能使用/proc。timeforiin/proc/*/fd/*;doreadlink$i|grep-q/dev/snd/pcm&&echo$i|awk-F'/''{print$3}';done|uniq不幸的是,它花
我有2个RaspberryPi,其中1个将音频数据的UDP帧传输到另一个RaspberryPi。收到的UDP数据包每个为160字节。传输RaspberryPi正在发送8KHz8位单声道样本。接收端RaspberryPi使用带有QUDPSocket的Qt5.4.0并尝试使用ALSA播放接收到的数据。代码如下。每次当字节到达接收RaspberryPi时触发“readyRead”信号,缓冲区被写入ALSA。我从接收Pi上的耳机插孔中传出非常断断续续的声音-但它是可识别的。所以它正在工作,但听起来很糟糕。我下面的ALSA配置有什么明显的错误吗?我应该如何使用snd_pcm_writei将接收到
我是音频编程的新手。我想创建能够播放并提供音量控制的小型应用程序。我正在使用alsa-lib。我想知道开关(例如主播放开关)的用途是什么,混音器元素中的枚举以及我应该为这些开关设置什么值。请给我一些关于调音台设置和alsa编程的教程。 最佳答案 只是在这里收集一些,有示例代码:ALSAProgrammingHOWTOv.1.0.0[alsamodular.sourceforge.net]AtutorialonusingtheALSAAudioAPI[equalarea.com]2002AcloselookatALSA[volkers
我在Linux上使用ALSA和音频应用程序,我发现很棒的文档解释了如何使用它:1和thisone.虽然我有一些问题要理解这部分设置:/*Setnumberofperiods.Periodsusedtobecalledfragments.*/if(snd_pcm_hw_params_set_periods(pcm_handle,hwparams,periods,0)当我使用PLAYBACK模式时设置一个周期数是什么意思和:/*Setbuffersize(inframes).Theresultinglatencyisgivenby*//*latency=periodsize*periods
在系统/dev/snd下可查看注册成功的声卡信息,如下所示。ubuntu@ubuntu:~$ls-l/dev/sndtotal0drwxr-xr-x2rootroot604月709:22by-pathcrw-rw----+1rootaudio116,24月709:22controlC0//通路控制crw-rw----+1rootaudio116,44月709:23pcmC0D0c//录音设备0crw-rw----+1rootaudio116,34月709:23pcmC0D0p//播放设备crw-rw----+1rootaudio116,54月709:22pcmC0D1c//录音设备1crw-r