Le MIDI tout cru

Rapidement, un petit exemple très (trop ?) primaire d'utilisation du MIDI à partir d'un langage de script. C'est du Python, et on suppose que le périphérique est sur le canal 1. En tout cas, ça marche bien sur ma tx81z. C'est vraiment du quick'n'dirty, mais ça montre clairement les bases.

#!/usr/bin/env python

import time

def note_on(note):
        tx.write("%c%c%c" % (0x90, note, 100))
        tx.flush()
def note_off(note):
        tx.write("%c%c%c" % (0x90, note, 0))
        tx.flush()
def progchange(prog):
        tx.write("%c%c" % (0xc0, prog))
        tx.flush()

tx = open("/dev/midi", "w")
for valeur in range(30,90):
        progchange(valeur)
        note_on(valeur)
        time.sleep(1)
        note_off(valeur)
        time.sleep(1)

tx.close()

Les deux fois où on voit apparaitre le nombre magique 0x90 dans ce bout de code doivent être lues comme (0x90 | n), avec 0x90 qui est la commande pour note on et n, le numéro du canal MIDI visé, entre 1 et 16, donc traduit par [0..15] en numérotation interne. D'autre part, les flux d'io sont bufferisés dans Python, c'est pour ça qu'il faut méthodiquement (ah, ah) faire un flush(). Pour plus de détails sur la syntaxe des commandes MIDI, il faut fouiller un peu le grand Ternet mondial.