Question

Je veux faire construire une petite application qui crée des sons MIDI. Je ne l'ai jamais eu affaire avec le son dans la programmation donc je voudrais commencer par quelque chose qui est simple et a une bonne documentation. Je veux rester avec Python depuis que je suis le plus à l'aise et ne veux pas me submerger, d'abord.

Mon temps est divisé 50/50 entre Windows et Ubuntu donc quelque chose qui « fonctionne » sur les deux plates-formes serait vraiment utile.

Toutes les suggestions?

Était-ce utile?

La solution

La bibliothèque MIDIUtil (hébergé sur Google Code) fait ce que vous voulez: écrire MIDI Les fichiers d'une bibliothèque pure Python. Une fois belle chose au sujet (et la divulgation complète: Je suis l'auteur) est que vous ne devez pas garder trace des événements MID-bas niveau tels que note-on et note-off. Il les gère pour vous

À titre d'exemple d'écrire une note, vous feriez quelque chose comme:

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

Hope this helps

Autres conseils

Je cherchais une bibliothèque pure Python pour générer un fichier MIDI, bibliothèque MIDI Python MXM est exactement cela.

De ce DZone extrait , il existe une version unique fichier de la bibliothèque ci-dessus , smidi.py ( gist'd ici pour la postérité)

L'utilisation est assez 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()

On peut supposer que fonctionne sous Windows (comme l'exemple d'origine utilise C:\out.mid comme le nom du fichier de sortie), et je l'ai testé sur OS X

pyPortMidi est une enveloppe de python de PortMidi, qui est décrit comme un « une bibliothèque multi-plateforme C pour le contrôle MIDI en temps réel ». Je ne l'ai pas utilisé moi-même, mais il semble très prometteur. mention explicite de pouvoir envoyer des données MIDI en temps réel.

Si vous ne devez générer Midi ou de traiter des fichiers MIDI, essayez Mingus , Il est un grand paquet et il permet aussi des abstractions beaucoup plus élevées tels que les accords, les progressions d'accords, des échelles et ainsi de suite.

J'ai essayé huit paquets listés sur le wiki http://wiki.python.org/moin/PythonInMusic . Je trouve que celui qui music21 ( http://web.mit.edu/music21/ ) était

  • le plus complet
  • le meilleur tutoriel
  • plus facile à installer sur les fenêtres

mais à votre demande de simplicité, je pense que ce n'est pas le plus simple. Mais je ne pouvais pas obtenir l'une des autres programmes pour lire les fichiers MIDI d'une manière robuste (j'ai une variété de formats de fichiers midi étranges et merveilleux qui traînaient)

Midi soutien (dans et hors) a été ajouté à PyGame 1.9, mais il est surtout dans la phase de développement et ne sont pas très bien documenté encore, mais cela fonctionne.

Midi support est également développé dans le successeur pygame, pgreloaded (ou pygame2).

Notez également que même si PyGame a « jeu » dans le titre, ses utilisations s'étirer bien au-delà de la conception juste jeu.

Regardez cSounds .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top