Quiero hacer construir una pequeña aplicación que crea sonidos MIDI. Nunca he tratado con el sonido en la programación así que me gustaría empezar con algo que es básico y tiene una buena documentación. Quiero meter con Python ya estoy más cómodo con él y no quiero abrumar a mí mismo, inicialmente.

Mi tiempo se divide aproximadamente 50/50 entre Windows y Ubuntu, por lo tanto, algo que «simplemente funciona» en ambas plataformas, sería realmente útil.

Alguna sugerencia?

  • Relacionados: stackoverflow.com/questions/507227/…
  • ¿Por qué no de marcar la pregunta como respondida!?
  • Tu pregunta no es muy clara. Usted no puede «crear sonidos MIDI». MIDI no almacenar o transmitir el sonido, sólo el control de datos MIDI compatible con el equipo y/o software. Supongo que quieren de a) hablar con otros dispositivos MIDI/software en tiempo real usando la interfaz MIDI de su ordenador o b) leer y escribir archivos MIDI estándar (SMF). Estos son dos requisitos diferentes (a pesar de que muchas aplicaciones tienen ambos) y hay diferentes bibliotecas a sugerir para ambas tareas
InformationsquelleAutor Cristian | 2009-02-20

7 Comentarios

  1. 34

    La MIDIUtil Biblioteca (alojado aquí en Google Code) hace lo que quiere: escribir Archivos MIDI de una pura biblioteca de Python. Una vez que la cosa agradable sobre él (y la divulgación completa: soy el autor) es que usted no tiene que seguir la pista del bajo nivel de MEDIADOS de eventos como en la nota y nota: se encarga por usted.

    Como un ejemplo para escribir una nota, deberías hacer algo como:

    MyMIDI = MIDIFile(1)
    track = 0
    channel = 0
    pitch = 60
    time = 0
    duration = 1
    volume = 100
    MyMIDI.addNote(track,channel,pitch,time,duration,volume)

    Espero que esto ayude

    • Muy tarde para publicar esto, pero puede manejar los acordes? Yo podría ser la implementación de esta en el software de mi, si es que puede…
    • Eso es muy útil, gracias!
    • usted puede definir fácilmente los acordes, a la derecha? for pitch in pitches: midi.addNote(.., pitch, ...)
    • Puede leer archivos midi con esto?
  2. 10

    Yo estaba buscando un puro-biblioteca de Python para generar un archivo MIDI, mxm Python biblioteca MIDI es exactamente eso.

    De este fragmento de dzone, hay un archivo de una sola versión de la anterior biblioteca, smidi.py (gist había aquí para la posteridad)

    Uso es bastante simple:

    >>> import smidi
    >>> m = smidi.MidiOutFile('out.mid')
    >>> m.header()
    >>> m.start_of_track()
    >>> m.update_time(0)
    >>> m.note_on(note=0x40)  # single note
    >>> m.update_time(192)
    >>> m.note_off(note=0x40) # stop it after 192
    >>> m.update_time(0)
    >>> m.end_of_track()
    >>> m.eof()

    De suponer que trabaja en Windows (como el ejemplo original utiliza C:\out.mid como el nombre de archivo de salida), y lo he probado en OS X

  3. 8

    pyPortMidi es un wrapper) de Python de PortMidi, que se describe como «una cruz-plataforma de la biblioteca C de tiempo real de control MIDI». No lo he utilizado yo, pero se ve muy prometedor. La mención explícita de ser capaz de enviar datos MIDI en tiempo real.

    • Para las personas que encontrar esta página a través de Google: tenga en cuenta que pyPortMidi fue actualizado por última vez el 15 de Marzo de 2005. Yo sospecho que ha sido abandonado.
    • Hay un poco más de la versión actualizada de pyPortMidi incluido en pyGame, que he utilizado con éxito.
    • ni siquiera pueden enviar tono curvas sin escribir en raw formato hex? player.write_short(0xE0, 0x00, 0x60) :/
  4. 7

    Si usted sólo necesita generar Midi o proceso, los archivos midi, intente mingus,
    Es un gran paquete y permite, además, mucho más altas abstracciones tales como los acordes, progresiones, escalas y así sucesivamente.

  5. 5

    Traté de ocho paquetes listados en la wiki http://wiki.python.org/moin/PythonInMusic.
    He encontrado que el que music21 (http://web.mit.edu/music21/) fue

    • la más completa
    • el mejor tutorial
    • más fáciles de instalar en windows

    pero en cuanto a su solicitud de simplicidad, creo que no es la más simple. Pero no pude conseguir ninguno de los otros programas para leer archivos midi de una manera robusta (tengo una variedad de extrañas y maravillosas midi formatos de archivo que cuelga alrededor)

  6. 4

    Soporte Midi (in y out) ha sido añadido a pyGame 1.9, aunque principalmente en la etapa de desarrollo y no está muy bien documentado, pero funciona.

    Soporte Midi, también se está desarrollando en la pyGame sucesor, pgreloaded (o pygame2).

    También tenga en cuenta que aunque pyGame ha ‘juego’ en el título, sus usos se extienden mucho más allá del diseño del juego.

    • Soporte MIDI en PyGame se basa en la misma base de código pyPortMidi (ver @descansar de la respuesta) y el pyPortMidi código en el PyGame repositorio es actualmente el más actualizado y utilizable versión. Descargo de responsabilidad: yo soy el autor de un parche a PyGame del pyPortMidi versión, que limpia el código mucho y correcciones de graves errores. El parche es aún no aplicada en el portmidi repositorio, donde el pyPortMidi código está viviendo ahora. Hay varios otros pyPortMidi repositorios en la red que no están actualizados.

Dejar respuesta

Please enter your comment!
Please enter your name here