2011-06-26 38 views
10

Me gustaría tener una implementación de Python de una biblioteca de instrumentos musicales (por ejemplo, un objeto de piano) que pueda usar para convertir una lista de notas y una duración en sonido. Por ejemplo, algo como:Sintetizar notas musicales (con sonidos de piano) en Python

import Piano 

pn = Piano() 
pn.play([note, note, ..., note], duration) 

¿Existe algo así para pitón 2.7? Me gustaría implementarlo si no es así. Actualmente tengo algo que usa audiere, pero es solo ondas sinusoidales, así que suena horrible. ¿Hay alguna manera de conectar un piano midi o algo así? Estoy usando Windows 7? ¿Hay algún paso de implementación que no pueda esperar?

+0

posible duplicado de [Cómo sintetizar sonidos?] (Http://stackoverflow.com/questions/790960/how-to-synthesize-sounds) –

Respuesta

8

Un subconjunto de respuesta @Marcelos: http://code.google.com/p/mingus/

mingus es un paquete de Python utilizado por programadores, músicos, compositores e investigadores para hacer e investigar la música. En el núcleo de mingus se encuentra la teoría de la música, que incluye temas como intervalos, acordes, escalas y progresiones.

El paquete MIDI puede guardar y cargar archivos MIDI, y -último pero no menos importante- proporciona un secuenciador de propósito general para todos los contenedores y una subclase del secuenciador FluidSynth. Esto le permite reproducir todas sus estructuras de datos directamente desde Python en solo un par de líneas. La mayoría del tiempo y el código MIDI han sido eliminados para ti, dejando una API limpia y relativamente simple.

+0

Gracias, eso sí responde la pregunta. Para las partes interesadas, terminé construyendo lo que quería con [midiutil] (http://code.google.com/p/midiutil/) –

+0

Esta es una gran biblioteca. ¡Gracias por la respuesta! –

1

Echa un vistazo a here por más de lo que siempre quiso saber sobre la reproducción de música en Python.

11

Un alumno mío acaba de comenzar usando mingus para hacer precisamente esta guía así que aquí está rápida sobre cómo ponerse en marcha en linux (ubuntu):

Instalar fluidsynth y mingus si no los tiene ya :

$ sudo apt-get install fluidsynth

$ sudo easy_install mingus

Ahora usted debe estar capaz de abrir pitón y tipo:

>>> from mingus.midi import fluidsynth 
>>> fluidsynth.init('/usr/share/sounds/sf2/FluidR3_GM.sf2',"alsa") 

Esto importa la materia necesaria de Mingus y inicializa FluidSynth a jugar a través de ALSA (no jack, que es el valor por defecto). Entonces:

>>> fluidsynth.play_Note(64,0,100) 

... y usted debe escuchar una nota tocada en el piano (argumentos son: número de nota, número de canal y velocidad).

Para obtener más información, entra aquí:

https://code.google.com/p/mingus/wiki/tutorialFluidsynth

+0

+1 para el ejemplo de código! – qed