Communication Midi dans Schwartzpeter

Cet apport des controles midi est là non pour se substituer à une console classique ( quoi que...), mais pour apporter d'autres façons, plus souples, d'agir en lumière. 

Le module est fonctionnel même avec un tout petit clavier et une seule roue en Control-Change, comme il est fonctionnel avec des surfaces de contrôle sophistiquées ou des capteurs ( êtes vous allé sur le site des Interfaces-Z ?).

Schwartzpeter peut aussi recevoir des infos midi via le network, en serveur.

La voie est ouverte donc pour un interfaçage manuel plus aisé, mais aussi aux installations utilisant des capteurs midi ou s'appuyant sur des logiciels tels pure data, vvvv ou encore Max-VNSP.

Les fonctionnalités d'appels midi sont donc écrites en laissant ouvertes le plus de portes possibles aux utilisateurs:

    -interfaçage manuel de type live comme sur une console

    -remote des fonctions de crossfade, d'affectation de temps et de déclenchements d'évènements ( Go, Fx, Masters)

    -main sur les sélections et les groupes

    -une attention à ne pas limiter à un seul cas de figure en termes de matériel ( les masters sont par exemples utilisables de 3 

    manières)

(0.6d) sont traités ici:

            A/ l'interfacage midi  sur l'ordinateur recevant schwartzpeter

                1. CONFIGURER MIDISHARE 

                    -a/avec hardware

                    -b/avec une application de type max/vnsp ou pure data

                2. Tester

            B/ adressage midi sous schwartzpeter        

                        3. Affecter dans schwartzpeter   

            C/ l'interfacage midi distant, via le network

La communication midi avec schwartzpeter est basée sur la librairie open-source MidiShare.
Je tiens à remercier Christian Pierredon qui m'a orienté vers cette bibliothèque. Merci à toi, monsieur, de tes conseils et de ta gentillesse !!!
Et merci à Stéphane Letz de Grame, qui m'a permis de résoudre un petit souci de méthode...

Christoph Guillermet




>>>>>A/a/ INTERFACAGE  MIDI EN ENTREE DIRECTE SUR L'ORDI RECEVANT SCHWARTZPETER

>>>>>>>>>> 1. CONFIGURER MIDISHARE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


Schwartzpeter reçoit des infos midi via le driver Midi share. Toute la communication se fait via ce dernier.

Midi share hors communication réseau n'a pas besoin d'être installé sur votre ordi. Cette librairie est utilisée de manière statique.
Donc pour recevoir des messages midi entrant il vous faut d'apport paramétrer les entrées de midishareDrivers via msDrivers.exe avant d'utiliser schwartzpeter avec du midi.

msDrivers comprend 256 ports possibles.

Lorsque l'on lance msDrivers.exe cette fenêtre s'affiche.
Sur cet ordi, seul un clavier UF apparait en entrée ( pas d'autres périphériques branchés sur le système)
msvide

Sélection du périphérique UF MIDI ( chaque étape est un click de souris):

clicker le périphérique souhaité:                                Clicker le slot du port pour qu il devienne rouge:
ms1    ms2

re-valider IN en reclickant sur le nom du périphérique:  Clicker la petite icone d'attribution et du logo msDrivers
ms3    ms4

Voilà, vous venez de paramétrer la dll modulable de midishare.


Mais attention ! la logique de windows et son attribution des ports usb ( par chronologie) fait qu'une déconnexion-reconnexion à un autre endroit fera planter msDrivers  et donc schwartzpeter à son lancement: msDrivers ne trouvera pas le périphérique MIDI sur le port paramétré.
Celà veut dire qu il vous faudra RECONFIGURER MSDRIVERS. Je m'en suis rendu compte au débranchement-rebranchement sauvage d'un périphérique midi.


>>>>>A/b/ INTERFACAGE  MIDI VENANT D'UN LOGICIEL SUR LA MEME MACHINE 

            QUE SCHWARTZPETER

Si vous utilisez un logiciel pour produire vos signaux midi, il vous faut pour l'interfacer avec midishare installer midi-yoke sur votre ordinateur. Ce petit logiciel installe des drivers virtuels reconnus par midishare.
Donc pour récupérer une sortie midi de Max/VNSP, brancher sa sortie sur le port midi Yoke.
Puis configuer msDrivers en utilisant le port midi-yoke désiré, comme décrit au dessus.

Merci à Patrick pour ce midi-tester sou MAX en stand alone !

A noter que si vous désirez tricher les signaux ( transformer le type de message, etc...), qu'ils viennent d'un périphérique physique ou virtuel,  préférer la suite Midi-Ox, plus complète.

>>>>>>>>>>>>> 2. Tester>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

si vous voulez tester à part, hors schwartzpeter:
utiliser Test_midishare.exe.

Ce petit utilitaire NE FILTRE PAS LES ENTREES MIDI.

Sous schwarzpeter, et schwz_midi_sender3 les fonctions midi sont filtrées, ne laissant passer que les messages de type Key-On, Key-Off, Ctr Change et Pitch Wheel. ( Faire des essais si vous êtes novices en midi).

testmidishare


>>>>>B/ ADRESSAGE DES FONCTIONS MIDI DANS SCHWARTZPETER


>>>>>>>>>>>>> 3. Affecter dans schwartzpeter>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Ok, passé le plus important, dans schwartzpeter clicker l'icone de midi config menu en haut à gauche de l'écran:

ic_midi

Vous arrivez dans le menu de configuration de l'interfaçage midi.

Le paramétrage midi est un paramétrage spécifique à chaque spectacle.


Les signaux utilisés dans Schwartzpeter sont de deux  types:
*Key On , Key Off ( ou Key On Vel 0 fonction des matériels midi),
*et Control Change exprimé en valeur ( data 2) de 0 à 127.

IMPORTANT: Un filtre dans schwartzpeter ( ce filtre n est pas activé dans test_midishare.exe) ne laisse voire et apparaitre QUE les signaux de type Key On/Off , Ctrl-Change et Pitch Wheel.

Il y a donc des évènements qui se font en type On – Off ( 0/1) , et d'autres des asservissements via potards ou rotatifs ( val de 0 – 127).


Les pages 0, 1 et 2 ( fond blanc) comprennent les évènements pilotés par un Key On- Off.

Schwartzpeter analyse le signal <Type> il ne fera rien si vous assignez un controleur 0-127 à un ON/OFF.


La page 3 ( fond jaune) comprend les évènements assujettissables à des Contrôleurs donnant un Data 2 avec des informations de 0 à 127. Attention un Key ON est affectable mais ne déclenchera rien!!! Le type doit être Ctrl-Change pour fonctionner.


La page 4 concerne les procédures « dangereusement utiles ».


Schwartzpeter compare le type d'information ( Key On, Key Off, Ctrl Change) , le Port midishare, le Canal, et enfin la Note ( allias Pitch), si toutes les infos correspondent à un cas de figure paramétré il exécute l'action voulue.


Donc sur toutes les pages, on voit dans la fenêtre en haut les informations midi reçues:
Type     Port midishare    Canal    Note    et Vélocité ( c'est à dire le toucher)




Le monitoring de l'entrée midi directement sur la machine recevant schwartzpeter se voit aussi ici, en ROSE:



Pour affecter les commandes midi dans schwartzpeter, c'est très simple:

Frappez la touche ou bougez le contrôleur que vous voulez affecter, puis clickez gauche dans la case d'action voulue.

Apparaissent alors le Port, le Canal , et le Pitch qui déclencheront l'évènement.

Toute action déclenchée par le midi apparaît en bas de l'écran:


Ici la sélection du groupe 2.



>>>>>>>>>>>>>>>>>>>>>>>> KEY-ON-OFF PAGES 0 1 et 2 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>








PAGE 0                KEY ON KEY OFF

*TOGGLE CALL:

une touche on-off pour choisir le mode lors de l'appel d'évènements de type Key On Key Of :
                        -selection   
                        -flash à 100%
                        -flash avec pour info de niveau la transposition de la véolicité ( plsu on tape fort et plus le niveau est élevé)
                        -4eme mode à faire, un shadow mode. A voir, quand on est sur que tout le reste marche...

Le Toggle CALL ne concerne pas la page 4 ( mémoires en Key ON). Il concerne uniquement les pages blanches.

un iindicateur coloré et clickable vous permet de basculer de mode sans être sous la page de midi_config.


*APPEL DES GROUPES : les 10 groupes

*SELECTION DE CIRCUITS: <ESC> <ALL> <INVERTED>

*CONTROLE DE PLAYLIST : GO, GO BACK, et mode F9 ( toggles stage/preset)


PAGE 1                KEY ON KEY OFF

Suite du contrôle DE PLAYLIST:

*W/X navigation cut en arrière en avant


*L'envoi du Timer en ON/OFF et son affectation en F8 F4 F5 sur le crossfade à venir


des actions pour le Live:

*L'action Freeze ( clicker d'abord la case Freeze mode pour qu'il soit effectif)


*Le ON/OFF des masters Fx 1 2 3 4 ( attention, clicker d'abord la case Chaser/Fx , et s'assurer que les masters sont biens chargés avec un chaser, sinon la commande ne sera pas envoyée.


PAGE 2                 KEY ON KEY OFF

*LEVEL + et LEVEL - : quand un circuit est sélectionné, ou un master, ou le grand master, ou un Fx, ( voir tout à la fois) : permet d'augmenter comme avec les flèches de la valeur du default step level les niveaux de ces derniers.

*APPEL DES SUBS EN SELECTIONS, ET DU GRAND MASTER. Quand un master est sélectionné en Key ON laissée appuyée, on peut le manipuler soit par les LEVEL + LEVEL – MIDI, soit par la roue de niveau polyvalente ( page 3)


PAGE 3            CONTROL CHANGE ordres avec en data 2 ( nommé VEL) un niveau allant de 0 à 127

*LEVEL est en fait une molette pour tout. C'est à dire, que si vous avez juste un petit clavier avec une roue qui envoie un signal de type Ctrl Change ( pas PITCH BEND!!!) , vous pouvez affecter le niveau de cette roue aux éléments sélectionnés en pressant KEY ON ( circuits, master, submasters, masterfx)
 
ATTENTION: le dernier signal reçu prend le pas !!!! donc si vous avez des circuits ou des masters à une intensité donnée, il vous faut d'abord mettre le Contrôleur qui gère LEVEL au niveau voulu. Lors de l'utilisation de ce controleur, son niveau apparait quand il est activé, à coté de l'icone midi_conf.

*GRAND MASTER, SUB1 à 6, MAIN SUB, les 4 MASTERS FX peuvent se faire assigner un contrôleur. Attention: si vous les avez monté à la souris, ces contrôleurs agissent en direct. Ils reprennent donc la main directement sur les niveaux de ces masters.

*Le CROSSFADE manuel se fait comme sur la Velleman, avec un potard X1 et un autre X2, qu'il faut recharger.


page3 


>>>>>>>>>>>>>>PAGE 4 APPEL DES MEMOIRES>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

depuis la version 0.6d


.

Les mémoires de 499 à 499.9 sont appelables via le MIDI

Cet appel peut se faire de deux manières:

-soit par l'affectation d'un Key On , dont la Vélocité affectera le niveau des circuits enregistrés dans cette mémoire et restitués sur scène
-soit par l'affectation d'un Control Change, permettant ainsi d'avoir sous portards ou rotatifs 20 mémoires. 

Le Toggle Call ( selection / flash / level_is_velocity) de la page 0 n est pas actif sur cette page. L'information Type de signal n'est en fait pas prise en compte  : un Ctrl Change Port 0 Ch 1 Pitch 40 aura la même action qu'un Key On Port 0 Ch 1 Pitch 40. La vélocité ( Data 2) est récupérée directement comme indication de niveau.

KEY_ON: A préciser que pour éteindre un circuit issu d'une mémoire en Key On, la vélocité d'entrée ou de sortie doit être de 0-1. Il s'agit donc d'une histoire de doigté... 

Tant que le niveau midi est enclenché ( sup à 0), il prend la main sur les états de circuits dans les mémoires et à l'appel clavier. Pour débrayer il faut que la vélocité soit nulle.

>>>>>>>>>>>>>>PAGE 5 URGENCES && SENSIBLE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>



Ok, Pourquoi y a t il la ré affectation des Commands Ports ?

C'est que dans le cas d'un trash de midishare ( périphérique midi pas sur le bon port usb, etc...) le numéro de port midi share change.

Donc tout le paramétrage ne réagira plus car un commande attendue de Port 1, Canal 1, Pitch 7 arrivera peut être comme Port 256, Canal 1, Pitch 7.
Comme il serait fastidieux de tout reaffecter ( surtout en performance) , vous pouvez ré-affecter UNIQUEMENT le port .

Pour ce, utiliser un Key On, et clickez sur ré affecter. Les contrôles de Canal et Pitch restent les mêmes dans toutes les affectations, mais le port est changé.

Le reset, c'est si vous ne vous en sortez plus... il remet tout à ZERO pour les attributions de commandes midi.

D'autre part une petite case reload permet de recharger la conf midi du spectacle depuis le fichier midi du spectacle, sur le disque dur, si ce dernier a été sauvé.

Une config midi est différente pour chaque spectacle.

Partie SERVEUR: voir juste ici:

>>>>>C/ L' INTERFACAGE  MIDI VIA LE NETWORK

Le serveur attend des infos, le client émet. Le client va se connecter à l'adresse IP et au port demandé ( faire attention à ses antivirus, qui peuvent bloquer le programme en émission et réception). 

A partir de la version 0.6d schwartzpeter devient un serveur. 


SERVEUR:

    Au démarrage il ouvre un port, prêt à y recevoir des informations.

    Sur ce port il va attendre des informations qu'il s'appliquera comme étant MIDI.

    Dans la page 5, l'adresse IP de l'ordinateur est indiquée. 

    Le port UDP que schwartzpeter va écouter est paramétrable ( taper un chiffre puis click gauche sur la zone Listen Port).

    Le serveur est lancé au démarrage de schwartzpeter. Pour permettre l'écoute du port et la réception d'info, activer Allow receiving     from network.

    Une re initialisation du serveur est possible aussi.

    On peut dire à schwartzpeter qu'il doit ou non automatiquement écouter le port au démarrage en allant dans:        
        C://schwartzpeter/user/last_config.txt.
        Changer " receive_udp= 0 " en " receive_udp= 1"

L'information midi arrivant par le réseau est visble ici : ( noir sur fond blanc lorsque pas de signal , blanc sur fond noir si signal)

Enfin, il est à noter que l'entrée midi peut être simultanée ( UDP / Midi direct).



CLIENT:

Le client MIDI fournit avec schwartzpeter se nomme schwz_midi_sender3.exe. Il se trouve dans le dossier schwartzpeter, dans son dossier schwz_midi_client. Ce dossier peut être copié directement dans l'ordinateur distant, sans besoin d'installation si ce n'est les drivers de votre matériel midi. N'oubliez pas de faire un lien vers le msdriver.exe qui s'y trouve.
Il suffit de paramétrer comme nous l'avons vu  plus haut midishare avec le hardware ou du logiciel. Puis lancer le client.
Attention ne sont acceptés que les évènements de type Key-On, Key-Off, Ctrl-Change et PitchWheel.
Si vous avez besoin de tricher ce filtre, utiliser midi-ox pour convertir les signaux reçus.



Le client reçoit les évènements MIDI. Une visualisation est possible...

Pour dire à quelle IP se connecter:
clicker gauche "sending to: " et taper l'adresse IP de l'ordinateur hébergeant schwartzpeter.
Cette adresse est visible en midi page 5 ( 192.168.1.12). Taper enter pour valider.
Configurer le port pour qu'il soit le même sur lequel on envoie des données que celui que schwartzpeter écoute. D'abord click gauche sur port puis taper le chiffre puis enter.

Vous pouvez sauver ces paramètres en clickant SAVE IP/PORT.

Voilà !

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Pour ceux qui développent des applications dans d'autres languages, un client enverra les infos de la manière suivante: 

char traindinfo[10]. Seulement les premieres cases du tableau sont utilisées, le reste étant réservé au cas où à d'autres développements.

dans ce traindinfo :

traindinfo[0]=portmidi

traindinfo[1]=type de signal , en numéro standard ( cf  InitTblLibEv() de Midishare)

midi traindinfo[2]= channel 

traindinfo[3]= note 

traindinfo[4]= vélocité

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.