Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

Mididings est un routeur/processeur d'évènements MIDI basé sur l'écriture de scripts python.




Informations


Site web officiel : http://das.nasophon.de/mididings/ Image .
Version actuelle : 20120419 du 2012 04 19.
Support : AlsaM, JackM, OSC.
Développeur : Dominic Sacré.
Licence : GNU GPL.


Description


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.



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 qui est donc un frontend à mididings. Attention, il dialogue en OSC avec mididings, donc il faut l'ajouter dans votre script : http://das.nasophon.de/mididings/doc/livedings.html .
  • 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

[+]

Utilisation


Voir le tutoriel : Script mididings pour Seq64 dans Carla.


Écrire et utiliser un patch


Une documentation en anglais existe ici : http://das.nasophon.de/mididings/doc/index.html Image .

L'exemple qui va suivre permet de contourner un problème. Imaginons que nous ayons une application comme Harmonyseq et qu'en sortie nous voulions utiliser plusieurs instances de fluidsynth-dssi pour pouvoir mettre à chacun d'eux des effets différents. On sait que Harmonyseq fonctionne avec les canaux midi, mais le problème c'est que l'on ne peut pas affecter un canal en entré dans un plugin. On est donc coincé. Cela dit on peut ouvrir plusieurs instances du plugin lv2 midifilter mais cela nous oblige à uitiliser au plus 16 fois la même instance, c'est gourmand et puis il faut lier à chaque fois tout le bazard (harmonyseq ne peut pas utiliser (ladish).
La seule solution est donc d'utiliser mididings qui va nous créer une seul instance avec les 16 canaux en sortie.cool
Voici un exemple avec Qjackctl :
Image
et un autre avec Catia:
Image
Dans notre fichier Exemple.py on commence à mettre la bibliothèque de mididings
entête
from mididings import *

Puis on va créer nos ports de sortie:
sorties
config(
out_ports = ['ch01',
             'ch02', 
             'ch03',
             'ch04',
             'ch05',
             'ch06',
             'ch07',
             'ch08',
             'ch09',
             'ch10',
             'ch11',
             'ch12',
             'ch13',
             'ch14',
             'ch15',
             'ch16']
)

Ensuite nous allons créer nos variables à utiliser dans le cœur de notre programme:
variables
canal01 = ChannelFilter(1) >> Output('ch01', 1)
canal02 = ChannelFilter(2) >> Output('ch02', 2)
canal03 = ChannelFilter(3) >> Output('ch03', 3)
canal04 = ChannelFilter(4) >> Output('ch04', 4)
canal05 = ChannelFilter(5) >> Output('ch05', 5)
canal06 = ChannelFilter(6) >> Output('ch06', 6)
canal07 = ChannelFilter(7) >> Output('ch07', 7)
canal08 = ChannelFilter(8) >> Output('ch08', 8)
canal09 = ChannelFilter(9) >> Output('ch09', 9)
canal10 = ChannelFilter(10) >> Output('ch10', 10)
canal11 = ChannelFilter(11) >> Output('ch11', 11)
canal12 = ChannelFilter(12) >> Output('ch12', 12)
canal13 = ChannelFilter(13) >> Output('ch13', 13)
canal14 = ChannelFilter(14) >> Output('ch14', 14)
canal15 = ChannelFilter(15) >> Output('ch15', 15)
canal16 = ChannelFilter(16) >> Output('ch16', 16)

ChannelFilter() est une fonction qui filtre le canal, on branche au moyen de '>>' celui ci dans une des sorties que nous avons créé par l'intermédiaire de la fonction Output() qui doit avoir au moins deux arguments :
  1. Le nom du port de sortie
  2. Le canal affilié à ce port
Enfin on crée le cœur de notre programme avec la fonction run(). Les variables sont appelées de manière parallèle, grâce à l'utilisation des crochets:
Cœur
run(
 [canal01 , 
  canal02 , 
  canal03 , 
  canal04 , 
  canal05 , 
  canal06 , 
  canal07 ,
  canal08 ,
  canal09 ,
  canal10 ,
  canal11 ,
  canal12 ,
  canal13 ,
  canal14 ,
  canal15 ,
  canal16]
)

Il ne vous reste plus qu'à sauvegarder votre fichier, puis à ouvrir un terminal dans votre dossier puis tapper la commande:
Go !
python Exemple.py

Vous avez le programme qui vous donne 1 entrée pour votre logiciel maître et 16 sorties pour vos plugins comme dans les images précédentes.
Pour quitter le programme, il faut utiliser Ctrl+C


Exemples de patchs


Visualiser des évènements MIDI

[+]

modifier des évènements MIDI

[+]

filtrer des évènements MIDI

[+]

lancer des scripts avec un contrôleur MIDI

[+]

utiliser OSC avec un contrôleur MIDI

[+]

fonctions avancées

[+]

Divers


applications proposant certaines fonctions similaires :


Changelog

[+]

Liens



Tuto lié : Enregistrer son clavier maitre.


Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

calixtus06, 18:51, lun. 28 Oct 2024: Bonjour et bienvenue à dawaninja :-)
olinuxx, 08:39, dim. 27 Oct 2024: Bonjour et bienvenue à dangoodboy cool
olinuxx, 13:50, sam. 26 Oct 2024: Bonjour et bienvenue à ladipon cool
allany, 18:33, lun. 07 Oct 2024: Phénoménal, c'est l'éditorial ! [Lien]
calixtus06, 13:16, ven. 27 Sep 2024: Bonjour et bienvenue à tigny :-)
olinuxx, 13:05, dim. 22 Sep 2024: [ANNONCE] Les nouvelles des 7 derniers mois de LibraZiK : [Lien]
olinuxx, 18:46, ven. 20 Sep 2024: Bonjour et bienvenue à manaoxygen cool
calixtus06, 11:24, mar. 17 Sep 2024: Bonjour et bienvenue à PAuf :-)
olinuxx, 21:36, ven. 13 Sep 2024: Bonjour et bienvenue à jearos cool
calixtus06, 18:28, mer. 11 Sep 2024: Bonjour et bienvenue à Fred2024 :-)
allany, 18:33, jeu. 05 Sep 2024: Semi-automnal, cet éditorial ! [Lien]
olinuxx, 22:00, dim. 01 Sep 2024: Bonjour et bienvenue à bo cool