我正在开发一个将吉他和弦转换为班卓琴和弦的应用程序,当我正在构建对象时,我还想制作一种音频“打印声明”,它可以快速播放我已经选中/写入的和弦 .
我发现自己很惊讶如何使用Python同时播放多个声音而不需要某种混合工作,或者包含所有的pygame,或者写入文件 .
我正在寻找的东西可以......
-
取频率 - 像440一样产生A,880产生一个八度音程 - 作为一个可迭代的
-
无需写入磁盘即可播放,也许可以通过midi乐器播放 .
我有适当的功能,可以从音品转换为频率,给定乐器调音,并基于这些,我想说:
fretboard.play([440, 880])
并听到音调 . 或者,如果我可以指定时间......
fretboard.play([(440,1), (880,1)])
同时听到每一个 .
简单地获得这种声音的最佳方法是什么,并且希望以某种方式让我按顺序排列其中几种,如果我想创建一些原始的旋律?
另外,如果这只是一种完全不同的编程,如果看起来我的问题很幼稚(“嘿mittenchops,你需要了解更多有关 Channels 的信息!”),请告诉我,特别是如果你可以指导我学习资源 .
2 回答
在寻找Python之前的声音分析时,我偶然发现了这个网站PythonInMusic,它有一堆用于Python的音乐软件链接 .
再回过头来看,我认为我尝试用实时输出midi音符的第一件事叫做PyFluidSynth . 它是python的midi合成器 . 以下是他们网站的一些示例代码:
希望有助于指出你正确的方向!
如果你在Windows上,你可以使用旧游戏机上使用的方法同时播放多个音符,而不是同时播放C,E和G,然后播放C然后播放E G非常快,可能在最后的音符(最好是补品)上保持一定程度 . 这会产生和弦的效果,但是如果你想要演示吉他或班卓琴声中的不同和弦(包括演奏同一个和弦的不同方式之间的差异),它可能不够好 . 但是,这种方法是可行的(至少在Windows上),而不使用标准库外部的任何东西 .
示例代码: