我正在寻找用Python编写一个小鼓机来获得乐趣。我用Google搜索了一些,发现了music和basic audio上的python页面以及generating audio files上的StackOverflow问题,但 我正在寻找的是体面的音乐创作图书馆 。有没有人在这里尝试做过这样的事情?如果是这样,你的解决方案是什么?什么,无论是我找到的,还是我没有找到的东西,都会成为一个体面的音频处理库?
最低限度,我希望能够在python中执行与Audacity's范围类似的操作,但如果有人知道可以执行更多操作的库...我很满意。
答案 0 :(得分:14)
仔细查看cSounds。 Python绑定允许您进行非常灵活的数字合成。还有一些非常完整的包。
有关软件包,请参阅http://www.csounds.com/node/188。
有关cSounds中Python脚本的信息,请参阅http://www.csounds.com/journal/issue6/pythonOpcodes.html。
答案 1 :(得分:7)
多年前我不得不做这件事。我用过pymedia。我不确定它是否仍然存在,这是我在玩它时写的一些测试代码。它虽然大约3岁。
编辑:示例代码播放MP3文件
import pymedia
import time
demuxer = pymedia.muxer.Demuxer('mp3') #this thing decodes the multipart file i call it a demucker
f = open(r"path to \song.mp3", 'rb')
spot = f.read()
frames = demuxer.parse(spot)
print 'read it has %i frames' % len(frames)
decoder = pymedia.audio.acodec.Decoder(demuxer.streams[0]) #this thing does the actual decoding
frame = decoder.decode(spot)
print dir(frame)
#sys.exit(1)
sound = pymedia.audio.sound
print frame.bitrate, frame.sample_rate
song = sound.Output( frame.sample_rate, frame.channels, 16 ) #this thing handles playing the song
while len(spot) > 0:
try:
if frame: song.play(frame.data)
spot = f.read(512)
frame = decoder.decode(spot)
except:
pass
while song.isPlaying(): time.sleep(.05)
print 'well done'
答案 2 :(得分:4)
答案 3 :(得分:2)
答案 4 :(得分:1)
除了前面提到的,我还写了一个简单的Python音频编辑器。 http://code.google.com/p/yaalp/source/browse/#svn/trunk 见main.py。
它还具有音频处理和一些效果。
代码的GPL,所以这可能是你的起点。