Domanda

Voglio fare costruire una piccola applicazione che crea suoni MIDI. Non ho mai avuto a che fare con il suono in programmazione quindi mi piacerebbe iniziare con qualcosa che è semplice e ha una buona documentazione. Io voglio restare con Python dal momento che sono il più comodo con esso e non voglio sopraffare me stesso, inizialmente.

Il mio tempo è diviso circa 50/50 tra Windows e Ubuntu in modo da qualcosa che "funziona" su entrambe le piattaforme sarebbe davvero utile.

Qualche suggerimento?

È stato utile?

Soluzione

Il MIDIUtil Biblioteca (ospitato qui su Google Code) non ciò che si vuole: scrive MIDI I file da una libreria Python puro. Una volta cosa bella di esso (e full disclosure: Sono l'autore) è che non c'è bisogno di tenere traccia degli eventi di medio livello inferiore, come note-on e note-off:. li gestisce per voi

A titolo di esempio per scrivere un messaggio, si potrebbe fare qualcosa di simile:

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

Spero che questo aiuti

Altri suggerimenti

Ero alla ricerca di una libreria pura-Python per generare un file MIDI, libreria Python MIDI di MXM è esattamente questo.

questo DZone frammento , c'è una versione singolo file della libreria di cui sopra , smidi.py ( gist'd qui per i posteri)

L'uso è molto semplice:

>>> 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()

funziona Presumibilmente su Windows (come l'esempio originale utilizza C:\out.mid come il nome del file di output), e l'ho testato su OS X

pyPortMidi è un involucro di pitone PortMidi, che viene descritto come un "una libreria C cross-platform per il controllo MIDI in tempo reale". Non ho usato io stesso, ma sembra molto promettente. menzione esplicita di essere in grado di inviare i dati MIDI in tempo reale.

Se avete solo bisogno di generare file Midi o un processo midi, prova a Mingus , E 'un grande pacchetto e permette anche le astrazioni molto più elevate, quali accordi, progressioni di accordi, scale e così via.

Ho provato otto pacchetti elencati sul wiki http://wiki.python.org/moin/PythonInMusic . Ho scoperto che quello che music21 ( http://web.mit.edu/music21/ ) è stato

  • il più completo
  • il miglior tutorial
  • più facile da installare su Windows

ma come alla vostra richiesta per semplicità, penso che non è la più semplice. Ma non ho potuto ottenere uno qualsiasi degli altri programmi per leggere i file midi in modo robusto (ho una varietà di formati di file midi strane e meravigliose che stanno intorno)

Supporto Midi (in e out) è stato aggiunto a pygame 1.9, anche se è soprattutto nella fase di sviluppo e non è molto ben documentato ancora, ma funziona.

supporto Midi si sviluppa anche nel successore Pygame, pgreloaded (o pygame2).

Si noti inoltre che anche se Pygame ha 'gioco' nel titolo, i suoi usi allungare ben oltre la semplice game design.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top