2008-09-20 9 views
39

Ich schreibe eine kleine Drum Machine in Python zum Spaß. Ich habe einige googeln und fand die Python-Seiten auf music und basic audio sowie eine Frage Stackoverflow auf generating audio files, aber was ich suche ist eine anständige Bibliothek für Musikproduktion. Hat jemand hier versucht, so etwas zu tun? Wenn ja, was war Ihre Lösung? Was, eines von denen, die ich gefunden habe, oder etwas, das ich nicht gefunden habe, wäre eine anständige Bibliothek für Audio-Manipulation?Python-Musikbibliothek?

Minimal möchte ich in der Lage sein, etwas Ähnliches wie Audacity's Bereich in Python zu tun, aber wenn jemand weiß von einer Bibliothek, die mehr tun kann ... Ich bin ganz Ohr.

+0

+1 mos def. Danke für die Inspiration :) Wie ist der Fortschritt dort? – ohnoes

+0

potenziell nützliche Ressourcen finden Sie auch unter http://wiki.python.org/moin/PythonInMusic – ohnoes

Antwort

4

Es gibt eine Vielzahl von Python-Musik-Software, Sie können einen Katalog here finden.

Wenn Sie die verknüpfte Seite nach unten scrollen, finden Sie einen Abschnitt über Musik-Programmierung in Python beschreibt mehrere Musikerstellung Pakete einschließlich MusicKit und PySndObj.

+0

Haben Sie meine Links nicht besucht? – akdom

+0

Haben Sie mit einer dieser Funktionen gearbeitet oder lesen Sie gerade aus der Funktionsliste? – akdom

7

Ich musste das vor Jahren tun. Ich habe Pymedia benutzt. Ich bin mir nicht sicher, ob es immer noch irgendwo ist, hier ist ein Testcode, den ich geschrieben habe, als ich damit gespielt habe. Es ist jedoch ungefähr 3 Jahre alt.

Edit: Der Beispielcode spielt eine MP3-Datei

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' 
+1

PyMedia ist in der Tat immer noch da. Spielt dieses Beispiel eine bestimmte mp3-Datei? Es könnte gut sein zu bemerken, was es tut, nur um die Antwort ein wenig zu klären. – akdom