CSound 和 Python 通信

Posted

技术标签:

【中文标题】CSound 和 Python 通信【英文标题】:CSound and Python communication 【发布时间】:2011-11-21 15:41:18 【问题描述】:

我目前正在从事一个使用进化算法模拟吉他效果的专业项目,并希望使用 Python 和 CSound 来做到这一点。

想法是在我的算法中用 Python 生成效果参数,将它们发送到 CSound 并对音频文件应用过滤器,然后将新的音频文件发送回 Python 进行频率分析,以便与目标音频文件进行比较(这将在一个循环中完成,直到音频文件与目标音频文件足够相似,因此 CSound 和 Python 之间的发送/接收将完成很多)。

简而言之,如何让 Python 将数据发送到 CSound(.csd 文件),如何读取 .csd 文件中的数据,以及如何将 .wav 文件从 CSound 发送到 Python?在满足音频文件的标准之前,它还可以自行动态工作。

提前致谢

【问题讨论】:

Csound 不能为您做分析吗?看来这篇文章是关于它的:Tools for Real-time Spectral Processing (pvs opcodes) 【参考方案1】:

您可以使用 Csound 的 python API,因此您可以在 python 中运行 Csound 并使用软件总线传递值。参见 csound.h。您可能还想使用 csPerfThread 包装类,它可以在 Csound 运行时安排与 Csound 往来的消息。所有功能都可以从 python 获得。

【讨论】:

我已经对 Python API 进行了一些研究,所以我认为我可以将参数发送到 CSound 而不会有太多麻烦。但是我还没有找到将音频文件从 CSound 发送到 Python 的方法,它似乎没有任何简单的内置函数(如果我错了,请纠正我,我可能忽略了它)。跨度> 【参考方案2】:

可以使用 osc 协议将参数值从 python 发送到 csound

将音频从 csound 发送到 python 可以通过在两个应用程序之间路由插孔通道来完成

【讨论】:

我会看一下osc协议,虽然我不熟悉两个应用程序之间的路由插孔通道。 如果你在linux系统上,最简单的方法是使用qjackctl并简单地在too应用程序之间建立一个连接 我在 Windows 7 下工作,短期内不会切换到 linux 系统。 qjackctl 和 jackd 也被移植到 windows 在 csoundjournal 中有一篇文章展示了如何使用 jack csounds.com/journal/issue14/csoundlivecsound.html 将 csound 连接到ableton-live

以上是关于CSound 和 Python 通信的主要内容,如果未能解决你的问题,请参考以下文章

无法为 Csound 的 python API 导入 csnd6

CSound 乐器的补丁存储

python基础(21)-线程通信

有人会 用python的 pySerial 进行串口通信的吗

python进程间通信

如何用python写个串口通信的程序