使用 ALSA API 播放唱名笔记?
Posted
技术标签:
【中文标题】使用 ALSA API 播放唱名笔记?【英文标题】:Playing the solfege notes with the ALSA API? 【发布时间】:2011-09-01 19:14:59 【问题描述】:我正在使用 Alsa API,我想知道应该将哪些参数传递给函数 snd_pcm_writei 以简单地播放 solfège 音节/音符(A-G / do re mi fa sol la si do)。
谢谢
【问题讨论】:
【参考方案1】:如果您真的想使用该功能,请在缓冲区中生成波形。三角波听起来可能不会太糟糕,而且应该很容易生成。
基础“la”(A) 为 440Hz,即每秒 440 个周期您选择的波形。
对于高于/低于此基本频率的每个半音,可以通过乘以/除以 2^(1/12) (1.05946309
) 获得其他音符。您需要知道输出设备的设置频率(这可能是另一个 ALSA 函数的参数)。如果设备频率为 44100 Hz,并且您想播放基本的“la”,则波形的每个周期应占用 44100 / 440 或大约 100 个样本。还要注意样本宽度和设备配置的通道数。
解释:一个八度有12个半音,一个八度正好是频率的一半(低音)或两倍(高音)。将 12 次乘以 2^(1/12) 后,乘以 2,因此每个半色调比前一个半色调高 2^(1/12)。
【讨论】:
【参考方案2】:听起来你想要的是 midi,而不是 ALSA。 ALSA 处理采样音频(例如来自 CD、wav、mp3 等的数字波形)。它不是一个声音合成程序。
【讨论】:
以上是关于使用 ALSA API 播放唱名笔记?的主要内容,如果未能解决你的问题,请参考以下文章
A40i使用笔记:使用QT调用aplay播放wav音频/混音
嵌入式Bluetooth应用开发笔记第三篇:初探BLUE ALSA应用开发
RK3588平台开发系列讲解(AUDIO篇)基于alsa api的音频播放/录制流程