Skip to main content

Historique: JACK-MIDI

Aperçu de cette version: 8

Cette page n'est toujours pas complète.

En commençant par répondre à une question : Pourquoi avoir créer une implémentation MIDI par JACK alors qu'il y en avait déjà par ALSA (voir ALSA-MIDI) ?

JACK MIDI a été créé entre autre parce que l'implémentation d'ALSA n'est plus développée depuis environ 10 ans, et c'est pour cela qu'on appelle ALSA parfois "legacy". Du point de vue des développeurs de JACK, un défaut d'ALSA réside dans le fait qu'il est implémenté dans l'espace kernel. En effet, vous l'avez remarqué, la couche ALSA vient sous formes de modules du kernel. Mais il y a surement d'autres raisons.
L'implémentation d'un transport de données autres qu'audio dans JACK est une alternative à ALSA qui a certains avantages et des desavantages (du moins pour l'instant).
Parmi les avantages on remarque les points suivants:
  • Une implémentation entièrement dans l'espace utilisateur de la mémoire.
  • Une implémentation plus légère et une interface logicielle moins lourde pour le développeur.
  • Une liaison très directe du timing des flux de MIDI aux flux audio passant par JACK, donc la possibilité d'associer des évênements MIDI et ondes audio générés par des synthés avec une grande précision. C'est la fameuse histoire du "sample accurate timing", qui est pourtant soumise à beaucoup de conditionnels dans le monde réel, d'où parfois quelques desaccords entre les développeurs.
  • JACK MIDI est pour l'instant la seule possibilité de gérer le MIDI des cartes son firewire à travers ffado.

Parmi les desavantages on peut citer:
  • Pour les developpeurs: Contrairement à ALSA, JACK MIDI ne possède pas de séquenceur intégré. En effet, ALSA décharge les logiciels clients de s'occuper du timing effectif des notes envoyées ou reçues par un mécanisme de pré-stockage d'évênements MIDI dans une "queue", et c'est le module ALSA lui même qui jouera l'évênement avec le timing souhaité par le logiciel. Ceci est fait avec une énorme précision. Dans JACK, comme pour l'audio, le logiciel doit lui même réagir en envoyant des données "quand c'est le temps", c'est à dire quand JACK demande le prochain block de données, elles doivent être accessibles et correcte. En réalité ceci n'est pas extrêmement compliquée non plus pour le développeur, mais nécessite quelques précautions.
  • Quand on envoie du MIDI à l'extérieur par USB, le timing du MIDI dans JACK est aussi bon que la latence de JACK, et les flux sont intérrompus de la même façon que les flux audio quand il y a des "xruns".
  • JACK MIDI ne gère actuellement pas d'évênements SYSEX permettant une communication de données avancées aux instruments réels (synthés et boites MIDI externes), comme par exemple l'échange et la sauvegarde de patches.

Dans l'ensemble les deux implémentations sont très performantes, avec une plus grande facilité pour les développeurs avec ALSA quand il s'agit de séquenceurs (grâce à la présence d'une queue de stockage) et une plus grande facilité avec JACK quand il s'agit de synthés et processeurs de données MIDI.

Pour l'instant, on a les deux à gérer sous linux, selon les choix des développeurs. Heureusement il existe un pont entre les deux systèmes ALSA MIDI et JACK MIDI. a2jmidid permet d'accéder aux clients à partir des deux cotés et de faire fonctionner les logicils ALSA MIDI et JACK MIDI entre elles.


Il faut aussi dire que dans :
  • qJackCtl, il y a 2 onglets midi :
    • l'onglet "MIDI" qui correspond au midi de JACK
    • l'onglet "ALSA" qui correspond au midi d'ALSA
  • Patchage, il y a 2 couleurs :
    • vert pour le midi d'ALSA
    • rouge pour le midi de JACK
  • LADISH, on ne voit pas le MIDI d'ALSA sauf quand on lance a2j en tant qu'application

Historique

Information Version
Samedi 24 mars 2018 19:31 olinuxx mise en page / cohérence wiki + anglicismes + coquilles + ponctuation 16
Afficher
Jeudi 27 février 2014 23:45 romain_bar Catia et Claudia pour les connexions 15
Afficher
Mercredi 19 février 2014 22:13 romain_bar Formattage 14
Afficher
Mercredi 12 février 2014 21:39 romain_bar Dossier JACK 13
Afficher
Mercredi 01 janvier 2014 12:24 romain_bar Ajout introduction (déplacée depuis Cadence) 12
Afficher
Vendredi 30 août 2013 13:59 olinuxx +1 alias 11
Afficher
Jeudi 23 août 2012 16:28 olinuxx 10
Afficher
Jeudi 23 août 2012 13:58 pianolivier +box dynamique 9
Afficher
Dimanche 10 juin 2012 11:51 dharanamrs 2 coquilles mineures 8
Afficher
Dimanche 10 juin 2012 11:45 dharanamrs petite températion... 7
Afficher
Dimanche 10 juin 2012 11:40 dharanamrs typos... 6
Afficher
Dimanche 10 juin 2012 11:35 dharanamrs Bon je voulais juste corriger un truc pour qjackctl et j'ai pondu un paragraphe :) 5
Afficher
Dimanche 10 juin 2012 11:33 dharanamrs Bon je voulais juste corriger un truc pour qjackctl et j'ai pondu un paragraphe :) 4
Afficher
Samedi 11 décembre 2010 03:00 olinuxx 3
Afficher
Samedi 11 décembre 2010 02:59 olinuxx (mode stylo rouge) 2
Afficher
Samedi 11 décembre 2010 02:25 olinuxx création de la page 1
Afficher