|
Comprendre - Apprendre
Maîtriser
Développer
|
routeur/processeur d'évènements MIDI
(Dans l'antémémoire)
Mididings est un routeur/processeur d'évènements MIDI basé sur python. Il permet de :
- Filtrer des évènements MIDI en fonction de leur type, canal, numéro de note, vélocité, etc., et de les router vers un nombre arbitraire de ports d'entrées/sorties MIDI
- Modifier et convertir des évènements MIDI, par exemple transposer des notes, appliquer des courbes de vélocité, changer les valeurs et champs d'application de contrôleurs MIDI, convertir un type d'évènement en un autre.
- passer d'un patch a un autre à tout moment et librement, chaque patch contenant ses propres règles de routage et de traitement des données, ceci n'affecte pas les notes déjà enfoncées.
- visualiser des évènements MIDI, imprimés dans la console, pour vérifier le bon fonctionnement des patchs ou configurer vos appareils MIDI.
- démarrer des commande externes, qu'elles soit des commandes shell, des messages OSC ou dbus.
Mididings est :
- Basé sur des scripts Python éditables dans n'importe quel éditeur de texte et sur des patchs pré-programmés qui sont eux même de simple objets Python, ce qui permet de programmer des commandes complexes avec juste quelques lignes de code
- conçu pour fonctionner en temps réel. Il utilise jack et est écrit en C++, ce qui permet d'éviter les problèmes de vitesse souvent associés aux langages de scripts comme Python.
Table des matières
Site web officiel : http://das.nasophon.de/mididings/ .
Version actuelle : 20100413 du 13 avril 2010.
Compatible Alsa, Jack.
développeur : Dominic Sacré
Logiciel fourni sous licence GNU GPL.
Pourquoi utiliser Mididings ?
L'introduction du haut de page vous donne un aperçu des fonctionnalités de mididings, mais si cela ne vous suffit pas, voici quelques exemples concrets qui montrent d'une manière non exhaustive à quoi peut bien servir cette diablerie :
- Visualisation d'évènements MIDI dans la console ou dans l'interface livedings.
- Transposition, modification de la vélocité d'une ou plusieurs notes ou de n'importe quel autre message MIDI.
- Conversion de messages MIDI (d'un "changement de programme" en "note" ou inversement par exemple).
- Filtrage par note/canal/PC/vélocité... et renvoi sur des canaux MIDI séparés.
un exemple de filtre pour utiliser plusieurs instances de yoshimi sur les même canaux est fourni plus bas
- Lancement d'applications ou de scripts bash.
un exemple pour éteindre son pc avec un clavier MIDI est fourni plus bas
- Interaction avec des applications capables de recevoir/envoyer des messages OSC ou dbus
un exemple pour changer le tempo du métronome klick est fourni plus bas
- Modification de messages MIDI par des règles de calcul personnalisées
L'utilisation de mididings étant basée sur l'écriture de scripts python, ses capacités sont presque infinies !
Il ne tient qu'à vous d'inventer de nouvelles manières de l'utiliser, soyez créatif !
Installation[+]Écrire et utiliser un patch
bientôt...
Exemples de patchs
Visualiser des évènements MIDI[+]
impression d'évènements MIDI dans la console :
utilisation de livedings :
modifier des évènements MIDI[+]
utiliser une commande à la place de deux pour le contrôle d' aeolus :
filtrer des évènements MIDI[+]
simplifier le routage MIDI sur plusieurs synthés/échantillonneurs et envoyer des changements de programmes :
utiliser plusieurs instances de yoshimi sur les mêmes canaux # ce patch permet d'utiliser deux instances de yoshimi connectées sur le même
# port MIDI sans avoir à refaire les branchements à chaque fois. En entrée, il
# utilise les "changements de programme" (PC) sur le canal 15
# pour passer d'un canal à l'autre sur l'une ou l'autre des instances du synthétiseur
# Il assume que yoshimi est démarré par deux fois avec l'option -a (alsa_midi)
# http://yoshimi.sourceforge.net/
# pianolivier chez gmail point com
from mididings import *
config(
# utilise alsa_midi
backend='alsa',
# nom du client alsa_midi
client_name='yoshiswitch',
# nom du port d'entrée
in_ports = ['in'],
# noms des deux ports de sortie
out_ports = ['out1', 'out2'],
# reçoit des données MIDI de 1 à 128
data_offset = 1,
)
# la fonction output() renvoie les données reçues sur le port / canal spécifié
# cette liste correspond aux réglages effectué dans yoshimi, par exemple :
# dans la première instance du synthétiseur, un son de vibraphone est chargé
# sur le canal 1, un son de xylophone est chargé sur le canal 2, et ainsi de suite...
# chaque ligne est une fonction python et doit commencer par un nom unique
# port "out1", canaux 1 à 16
vibra = Output('out1', 1)
xylo = Output('out1', 2)
tremlead = Output('out1', 3)
fantasia = Output('out1', 4)
fullstring = Output('out1', 5)
slowsring = Output('out1', 6)
multisynth = Output('out1', 7)
fretlessbass = Output('out1', 8)
steelbass = Output('out1', 9)
distobass = Output('out1', 10)
greatorgan = Output('out1', 11)
sines = Output('out1', 12)
sweepmatrix = Output('out1', 13)
sweeppad = Output('out1', 14)
brightrushpipe = Output('out1', 15)
echochoir = Output('out1', 16)
# instruments définis dans la 2eme instance de yoshimi
# port "out2", canaux 1 à 16
slowmorphchoir = Output('out2', 1)
seq1 = Output('out2', 2)
seq2 = Output('out2', 3)
arpeggio1 = Output('out2', 4)
sharpdeep = Output('out2', 5)
farreed = Output('out2', 6)
bassoon = Output('out2', 7)
eeoow = Output('out2', 8)
yaooww = Output('out2', 9)
overdrive1 = Output('out2', 10)
overdrive2 = Output('out2', 11)
overdrive3 = Output('out2', 12)
powerguitar1 = Output('out2', 13)
powerguitar2 = Output('out2', 14)
panpipe32 = Output('out2', 15)
hypermatrix = Output('out2', 16)
run(
# scènes numérotées de 97 à 128 correspondant à des PC de 96 à 127
# chaque scène ici renvoi à une des fonctions définie plus haut
scenes = {
97: vibra,
98: xylo,
99: tremlead,
100: fantasia,
101: fullstring,
102: slowsring,
103: multisynth,
104: fretlessbass,
105: steelbass,
106: distobass,
107: greatorgan,
108: sines,
109: sweepmatrix,
110: sweeppad,
111: brightrushpipe,
112: echochoir,
113: slowmorphchoir,
114: seq1,
115: seq2,
116: arpeggio1,
117: sharpdeep,
118: farreed,
119: bassoon,
120: eeoow,
121: yaooww,
122: overdrive1,
123: overdrive2,
124: overdrive3,
125: powerguitar1,
126: powerguitar2,
127: panpipe32,
128: hypermatrix,
},
# passage d'une scène à l'autre : utilise les PC sur le canal 15
control = Filter(PROGRAM) >> ChannelFilter(15) >> SceneSwitch(),
# pré-traitement des données envoyées aux synthétiseurs :
# ignore les messages en dehors du canal 1 et les PC
pre = ChannelFilter(15) >> ~Filter(PROGRAM),
)
lancer des scripts avec un contrôleur MIDI[+]
exemples a venir...
utiliser OSC avec un contrôleur MIDI[+]
démarrer/arrêter ou changer le tempo du métronome klick :
fonctions avancées[+]
utilisation de fonctions avancées :
(utilisation d' OSC, redémarrage automatique et la mémorisation des paramètres)
Du même auteur...
Dominic Sacré est un gros contributeur de logiciels audio sous Linux, il est aussi le développeur de :
- klick : un métronome avancé en ligne de commande pour jack.
- gtklick : un métronome simple avec interface GTK.
- jack_oscrolloscope : Un visualiseur de formes d'onde pour jack en temps réel.
Collaborateur(s) de cette page: olinuxx
et
pianolivier
.
Page modifiée dernièrement le Dimanche 15 Août 2010 17:20:28 par olinuxx .
Le contenu de cette page est licencié sous les termes licence.
|
Recherche
Connexion
Utilisateurs connectés
Liens utiles
|