Articles of audio

ALSA:防止扬声器不足的方法

我正在以非交错模式播放单声道audio。 当我将aduio数据写入扬声器时,我正在运行ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred 这是我写的: printf("%d",snd_pcm_avail (spkhandle)); ret = snd_pcm_writen(spkhandle, pSpeakerBuf , framesIn18Millisec); if(ret < 0) { snd_pcm_recover(spkhandle, ret, 0); } 什么是不同的方式/参数configuration来防止运行ALSA? (我正在使用Linux 3.0,ARM) 编辑:这是一个使用snd_pcm_avail()API的缓冲区度量 snd_pcm_avail = 2304 << snd_pcm_writen call 1 success snd_pcm_avail = 2160 << snd_pcm_writen call 2 success snd_pcm_avail = 2016 << snd_pcm_writen call 3 success snd_pcm_writen error -32 Broken […]

使用本地系统调用在C ++中播放声音?

所以在Windows中,您可以使用PlaySound函数在C ++应用程序中播放MP3文件。 Mac OS X / Linux中有哪些类似的function可用? 如果你可以链接到一些示例Hello-Worldtypes的程序来演示这个,我也会很感激。

如何从Haskell代码跨平台播放audio文件

我正在编写一个在Linux,Windows和OS X上运行的Haskell命令行应用程序。我现在必须从中播放audio文件( .wav , .ogg和.mp3 )。 我将如何去实现一个function playAudioFile :: FilePath -> IO () 甚至更好 playAudio :: ByteString -> IO () 这只是在所有系统上工作? (我很乐意引用常用的命令行工具,也不介意将它们捆绑在Windows发行版上。)

模拟麦克风(虚拟麦克风)

我有一个问题,我需要“模拟”麦克风输出。 数据将通过networking传输,解码为PCM,基本上需要写入麦克风 – 然后其他程序可以读取/logging/不pipe。 我一直在读alsa,但是信息很稀less。 该文件插件貌似很有前途 – 我正在考虑将一个命名pipe道作为“infile”,然后我可以从我的应用程序传递数据。 我不能得到它的工作(VLC /大胆只是段错误)。 pcm.testing { type file slave { pcm { type hw card 0 device 0 } } infile "/dev/urandom" format "raw" } 有没有更好的方法来做到这一点? 对alsa插件(特别是文件插件)的任何build议?

PHP中的MP3和OGG标签

除了http://us3.php.net/manual/en/book.ktaglib.php和http://getid3.sourceforge.net/没有人知道任何其他方式从PHP与audio文件标签工作? 我需要读写它们,而KTagLib似乎对于这个工作来说有点太多了,而且也没有真正的获取文档,并且get3似乎只写了ID3v1标签。

如何在Python中播放声音而不中断播放音乐/其他声音

我正在python的计时器上工作,当等待时间结束时,这个计时器响起。 我使用下面的代码: from wave import open as wave_open from ossaudiodev import open as oss_open def _play_chime(): """ Play a sound file once. """ sound_file = wave_open('chime.wav','rb') (nc,sw,fr,nf,comptype, compname) = sound_file.getparams( ) dsp = oss_open('/dev/dsp','w') try: from ossaudiodev import AFMT_S16_NE except ImportError: if byteorder == "little": AFMT_S16_NE = ossaudiodev.AFMT_S16_LE else: AFMT_S16_NE = ossaudiodev.AFMT_S16_BE dsp.setparameters(AFMT_S16_NE, nc, fr) […]

从ALSA录制 – 了解内存映射

Im试图使用ALSA从USBaudio设备获取input,并将其作为一系列有signed short值写入磁盘。 我所得到的结果是看起来是有效的数据块散布与大块零。 我猜我有我的缓冲区安装不正确,没有正确使用内存映射。 我正在尝试: 采样率:8K(这是由设备强制) 缓冲区大小:2048 期限大小:512 一个频道 该设备似乎打开正确,并接受各种参数。 经过一些设置后,循环运行如下: snd_pcm_avail_update snd_pcm_mmap_begin memcpy data from mmap buffer to array of short snd_pcm_mmap_commit memcpy是一个指向short的数组的指针,并且每次传递返回的帧数都是递增的。 在这个logging几秒钟之后,我把它closures,并把随后的缓冲区写入磁盘,作为每一行的一个简单值。 我期望的是在1200和2300赫兹之间变化的一秒或两秒的PCM数据。 我得到的是一些有很多零的数据。 我想知道的是:我的缓冲区和期限值是否合理? 有没有人成功地使用ALSA的内存映射输出? 编辑:一些代码 const snd_pcm_channel_area_t *areas; snd_pcm_uframes_t offset, frames, size; short* pCID = (short*)malloc( 50000 * sizeof( short )); short* ppCID = pCID; while( size > 0 ) […]

如何在Linux中使用PC扬声器?

如何在Linux中使用PC扬声器进行c / c ++编程? 我能控制哔哔声和频率吗?

如何使用PulseAudio从audio输出redirect到麦克风input?

我正在为Maemo / MeeGo开发移动应用程序,Maemo使用PulseAudio。 我想播放一个MP3给来电(并取消了麦克风时,这样做,而不是监听来电,一切都应该在后台完成),要做到这一点,我必须redirectaudio输出从一定(如果不可能,所有)应用程序,假装它作为一个input,并使电话应用程序使用它。 在我的Ubuntu PC上,我用pavucontrol做了。 我创build了一个NULL接收器,然后: Audio Output (from Amarok) –> to NULL Output Skype Input <– NULL Output Skype Output –> NULL 它的工作原理是,Amarok播放音乐,它stream到Skype,没有播放给我,我什么都没有听到任何过程。 问题在于; a)Maemo没有pavucontrol。 b)甚至如果它(或如果我打包)它不会有什么好处,因为它是一个唯一的graphics用户界面的应用程序,我必须在背景上做所有这些东西,没有任何用户input。 (意思是:CLI或API) 在Freenode #pulseaudio上被问到这个问题时,一位有帮助的人说:“通过pactl或者pacmd可以做到这一点,你需要的命令是move-sink-input和move-source-output,但是你需要知道设备和stream索引“。 所以它看起来像pavucontrol只是一个GUI,pactl和pacmd是真正的交易,最重要的是,他们是CLI应用程序。 我真的很感谢他,但是我对“pactl”,“pacmd”,“move-sink-input”或者“device / stream indexes”一无所知,所以我需要一个非常简化的手册页,类似的应用程序,一个单行命令(两个?整页的命令?,只是给我他们!^^)或有足够的耐心的人解释这个东西给我。

ALSA教程需要

我是audio编程的新手。我想创build一个能够播放和控制音量的小应用程序。 我正在使用alsa-lib。 我想知道什么是开关(ex.Master回放开关)的目的,在混音器元素枚举和我应该设置什么值给那些开关。 请教我一些混音器设置的教程以及alsa编程。