2008-09-20 5 views
39

Я ищу для написания маленькой драм-машины в Python для удовольствия. Я гугл некоторых и нашел питон страницу music и basic audio, а также вопрос StackOverflow на generating audio files, но то, что я ищу приличную библиотека для создания музыки. Кто-нибудь здесь пытался сделать что-то подобное раньше? Если да, то каково было ваше решение? Что, из тех, что я нашел, или чего-то, чего я не нашел, будет хорошей библиотекой для манипуляций с аудио?Музыкальная библиотека Python?

Минимально я хотел бы сделать что-то похожее на областьв пределах python, но если кто-нибудь знает библиотеку, которая может делать больше ... Я все уши.

+0

+1 mos def. Спасибо за вдохновение :) Как там прогресс? – ohnoes 2009-07-19 15:53:55

+0

потенциально полезные ресурсы можно найти также по адресу http://wiki.python.org/moin/PythonInMusic – ohnoes 2009-07-20 09:18:05

ответ

4

Существует множество музыкальных программ Python, вы можете найти каталог here.

Если вы прокрутите вниз связанную страницу, вы найдете раздел музыки Программирование в Python описывающую несколько пакетов создания музыки, включая MusicKit и PySndObj.

+0

Вы не посещали мои ссылки? – akdom 2008-09-20 18:02:27

7

Я должен был сделать это много лет назад. Я использовал pymedia. Я не уверен, что это все равно вокруг какой-то код, который я написал, когда играл с ним. Это примерно 3 года.

Edit: Пример кода играет 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' 
13

внимательно посмотреть на cSounds. Есть привязки Python, которые позволяют делать довольно гибкий цифровой синтез. Есть также довольно красивые пакеты.

См. http://www.csounds.com/node/188 для упаковки.

См. http://www.csounds.com/journal/issue6/pythonOpcodes.html для получения информации о скриптах Python в cSounds.

1

В дополнение к тому, что было упомянуто ранее, я написал простой аудиоредактор Python. http://code.google.com/p/yaalp/source/browse/#svn/trunk См. Main.py.

У него также есть манипуляции с аудио и некоторые эффекты.

Код GPL, так что это может быть отправной точкой для вас.