Salut à tous,
Je suis en train de faire un simple player video. Rien de plus simple, ouvrir une video et la jouer.
Particularité, il me faut pouvoir déclencher à un moment donné de la vidéo un projecteur à LED controlé par une GrandMA. Toute la lumière est cablée en artnet et toutes nos installations sont sur réseau ethernet.
De prime abord je m'étais dit que j'enverrai donc une commande artnet sur le réseau. Mais notre régisseur lumière me dit que ce serait plus simple en MIDI.
Question donc : la console GrandMA et le macmini qui est censé envoyer la commande grace au player oF sont sur le même réseau. Comment envoyer une commande MIDI à travers le réseau ?
Est-il nécessaire de passer par un soft qui transforme les paquets UDP en MIDI ?
J'ai un peu cherché des addons MIDI mais je crois pas être tombé sur des choses concluantes.
Merci à vous
Hors ligne
Le MIDI pour être balancé sur le réseau devra forcement subir des transformations.
plusieurs solutions :
http://jackaudio.org/
sinon passe par du OSC (sous couche UDP) avec des passerelles OSC <-> MIDI (beaucoup de soft existent)
autre solution possible avec des objets max MIDI <-> UDP.
Hors ligne
hummm... ouais je crois que la solution sera de passer directement en Artnet ou si utilisation du midi, créer un message midi et l'envoyer sur le réseau en l'empaquetant dans une trame UDP...
si quelqu'un à déja réalisé un truc du genre je suis preneur de toute info.
PS : Je sais que c'est facilement réalisable avec puredata ou max, mais je souhaites vraiment passer par de l'openFrameworks et éviter tout autre type d'interface...
Hors ligne
Le MIDI est codé sur 7bit (0-127), ce qui est une résolution très basse, tu vas devoir utiliser plusieurs canaux MIDI pour chaque canal lumière. Passes directement par un protocole réseau, quel qu'il soit.
Hors ligne
Pas un hasard si le DMX512 a été initié dans les années 80 . Maintenant je comprends pas bien la demande de midi (même si çà n'est que pour une commande simple) vu que selon ce que je lis tout les système est relié ethernet en protocole artnet .
Hors ligne
@Sakramh : J'avoue n'avoir pas saisi toute la subtilité du besoin du midi. Je crois que c'est historique, il y a deja eu pas mal d'installations pour lesquelles ils utilisaient des patchs envoyant du midi (le gars ayant fait ces installations ne connaissant pas Artnet c'était plus facile pour lui).
@Adèle Scott : pas besoin d'une grande résolution, il s'agit juste de ON / OFF qui déclenchent des executors, le reste c'est la GrandMA qui gère.
Je pense que je vais essayer de passer sur du Artnet. Y a t-il des librairies efficaces pour cela sur oF ?
Je suis tombé sur celle-ci : https://github.com/tobiasebsen/ofxArtNet
Par contre je vais voir avec le lighteux pour qu'il m'explique le principe du Artnet, mais concrètement je ne vois pas ce que je doit envoyer comme donnée ! dans la librairie ci dessus il y a une méthode :
void sendDmx(int port, void* data, int size);
Mais du coup elle ressemble à quoi cette donnée !?
Dernière modification par Marty (2013-06-21 10:26:44)
Hors ligne
d'après la méthode çà a l'air d'être du DMX512 justement . Ce qui est Logique pour du light . Tu trouveras facilement les spécifications du protocole . (de mémoire c'est pas loin de OSC )
Dernière modification par sakramh (2013-06-21 15:33:27)
Hors ligne
hummm...
J'ai vraiment du mal avec ce protocole et cette librairie ! et le fait qu'il n'y ait pas d'exemple avec cette librairie me perd complètement.
J'ai épluché les spécifications Artnet sur ce document : http://www.artisticlicence.com/WebSiteM … rt-net.pdf
Je n'arrive pas à comprendre comment est formatée la donnée à envoyer...
pour info je joint le .h de cette librairie artnet :
typedef void* artnet_node; enum artnetNodeType { ARTNET_TYPE_SERVER, /**< An ArtNet server (transmitts DMX data) */ ARTNET_TYPE_NODE, /**< An ArtNet node (dmx reciever) */ ARTNET_TYPE_MEDIA, /**< A Media Server */ ARTNET_TYPE_ROUTE, /**< No Effect currently */ ARTNET_TYPE_BACKUP, /**< No Effect currently */ ARTNET_TYPE_RAW /**< Raw Node - used for diagnostics */ }; enum artnetPortIO { ARTNET_PORT_ENABLE_INPUT = 0x40, /**< Enables the input for this port */ ARTNET_PORT_ENABLE_OUTPUT = 0x80 /**< Enables the output for this port */ }; enum artnetPortData { ARTNET_DATA_DMX = 0x00, /**< Data is DMX-512 */ ARTNET_DATA_MIDI = 0x01, /**< Data is MIDI */ ARTNET_DATA_AVAB = 0x02, /**< Data is Avab */ ARTNET_DATA_CMX = 0x03, /**< Data is Colortran CMX */ ARTNET_DATA_ADB = 0x04, /**< Data is ABD 62.5 */ ARTNET_DATA_ARTNET = 0x05 /**< Data is ArtNet */ }; enum artnetPortType { ARTNET_PORT_INPUT = 1, /**< The input port */ ARTNET_PORT_OUTPUT, /**< The output port */ }; class ofxArtNet : private ofThread { public: vector<ofxArtNetInterface>& getInterfaces(); void init(string ip = "", bool verbose = false); void setOEM(uint8 high, uint8 low); void setNodeType(artnetNodeType nodeType); void setShortName(string shortName); void setLongName(string longName); void setSubNet(int subNet); void setBroadcastLimit(int bcastlimit); void setPortType(int port, artnetPortIO io, artnetPortData data); void setPortAddress(int port, artnetPortType portType, uint8_t address); void start(); void stop(); void close(); void sendPoll(string ip = ""); void sendDmx(int port, void* data, int size); void sendDmx(ofxArtNetDmxData& dmx); void sendDmxRaw(int universe, void* data, int size); void sendAddress(ofxArtNetNodeEntry* entry); int getNodeCount(); ofxArtNetNodeEntry* getNode(int n); ofEvent<ofxArtNetNodeEntry*> pollReply; ofEvent<ofxArtNetDmxData> dmxData; private: void threadedFunction(); int static reply_handler(artnet_node n, void *pp, void *d); int static dmx_handler(artnet_node n, int port, void *d); artnet_node node; vector<ofxArtNetNodeEntry*> nodes; vector<ofxArtNetInterface> interfaces; };
Si quelqu'un connais Artnet et / ou l'a déja utilisé je serais très intéressé.
Si j'ai à peut près compris ce que j'ai lu je dois avoir les spécifications suivantes :
- La GrandMA (node) à l'adresse 2.168.14.52 (donc mode switch off)
- le port doit être standard, soit 6454 en décimal (0x1936 en hexadécimal)
L'idée serait d'envoyer la valeur 255 à un fader situé sur l'adresse DMX 1 du subnet 16 univers 3 (si j'ai bien compris F:3 en hexadécimal)
La ou je bloque c'est sur les définitions Port, address etc... qui sont des notions différentes du monde réseau.
Et du coup je décrypte à peu près tout ca, mais je ne vois toujours pas quel format à cette "data" à envoyer. Si je veux envoyer 255 dois-je envoyer 255 ? 255 + port + adresse ? ...
Merci à vous
Dernière modification par Marty (2013-06-21 18:23:51)
Hors ligne
Doit y avoir quelques outils pour osX pour "dumper" en udp . Genre wireshark ou netcat6 .... Sinon un bête patch puredata . Pour voir ce que par exemple la grand mère raconte .
Hors ligne
Pages: 1