Library for DMX and MIDI protocol

Dependents:   Arts_DMX512_carteV3_MIDI Arts_DMX512_carteV3_MIDI_nRF

Committer:
villemejane
Date:
Sun Dec 12 12:41:49 2021 +0000
Revision:
0:9cf6898e6b66
Library for DMX and MIDI protocol

Who changed what in which revision?

UserRevisionLine numberNew contents of line
villemejane 0:9cf6898e6b66 1 /****************************************************************************/
villemejane 0:9cf6898e6b66 2 /* DMX_MIDI module library */
villemejane 0:9cf6898e6b66 3 /****************************************************************************/
villemejane 0:9cf6898e6b66 4 /* LEnsE / Julien VILLEMEJANE / Institut d'Optique Graduate School */
villemejane 0:9cf6898e6b66 5 /****************************************************************************/
villemejane 0:9cf6898e6b66 6 /* Library - DMX_MIDI.h file */
villemejane 0:9cf6898e6b66 7 /****************************************************************************/
villemejane 0:9cf6898e6b66 8 /* Tested on Nucleo-L476RG / 11th nov 2021 */
villemejane 0:9cf6898e6b66 9 /****************************************************************************/
villemejane 0:9cf6898e6b66 10
villemejane 0:9cf6898e6b66 11 #ifndef DMX_MIDI_H_INCLUDED
villemejane 0:9cf6898e6b66 12 #define DMX_MIDI_H_INCLUDED
villemejane 0:9cf6898e6b66 13 #include "projecteurs.h"
villemejane 0:9cf6898e6b66 14 #include "preset.h"
villemejane 0:9cf6898e6b66 15 #include "projecteurs.h"
villemejane 0:9cf6898e6b66 16 #include "controleurs.h"
villemejane 0:9cf6898e6b66 17
villemejane 0:9cf6898e6b66 18 #define SAMPLES 512
villemejane 0:9cf6898e6b66 19
villemejane 0:9cf6898e6b66 20 #define MIDI_NOTE_ON 0x90
villemejane 0:9cf6898e6b66 21 #define MIDI_NOTE_OFF 0x80
villemejane 0:9cf6898e6b66 22 #define MIDI_CC 0xB0
villemejane 0:9cf6898e6b66 23
villemejane 0:9cf6898e6b66 24 #include "mbed.h"
villemejane 0:9cf6898e6b66 25
villemejane 0:9cf6898e6b66 26 /* Entrées - Sorties */
villemejane 0:9cf6898e6b66 27 extern Serial debug_pc;
villemejane 0:9cf6898e6b66 28 extern DigitalOut debug_out;
villemejane 0:9cf6898e6b66 29
villemejane 0:9cf6898e6b66 30 extern Serial dmx;
villemejane 0:9cf6898e6b66 31 extern DigitalOut out_tx;
villemejane 0:9cf6898e6b66 32 extern DigitalOut start; //envoie des données
villemejane 0:9cf6898e6b66 33 extern DigitalOut enableDMX;
villemejane 0:9cf6898e6b66 34 extern AnalogIn CV_volume;
villemejane 0:9cf6898e6b66 35 extern AnalogIn CV_pitch;
villemejane 0:9cf6898e6b66 36
villemejane 0:9cf6898e6b66 37 extern AnalogIn variationR;
villemejane 0:9cf6898e6b66 38 extern AnalogIn variationG;
villemejane 0:9cf6898e6b66 39 extern AnalogIn variationB;
villemejane 0:9cf6898e6b66 40
villemejane 0:9cf6898e6b66 41 /* Variables globales */
villemejane 0:9cf6898e6b66 42 extern const uint8_t vague[];
villemejane 0:9cf6898e6b66 43 extern char dmx_data[];
villemejane 0:9cf6898e6b66 44 extern int rgb;
villemejane 0:9cf6898e6b66 45 extern char cpt_midi;
villemejane 0:9cf6898e6b66 46 extern char new_data_midi, new_note_midi;
villemejane 0:9cf6898e6b66 47 extern char midi_data[], note_data, velocity_data;
villemejane 0:9cf6898e6b66 48 extern char control_ch, control_value;
villemejane 0:9cf6898e6b66 49
villemejane 0:9cf6898e6b66 50 /* Fonctions */
villemejane 0:9cf6898e6b66 51 /* Fonction d'initialisation de la liaison DMX */
villemejane 0:9cf6898e6b66 52 void initDMX(void);
villemejane 0:9cf6898e6b66 53 /* Fonction de mise à jour de la sortie DMX */
villemejane 0:9cf6898e6b66 54 void updateDMX();
villemejane 0:9cf6898e6b66 55
villemejane 0:9cf6898e6b66 56 /* Fonction d'initialisation de la liaison MIDI */
villemejane 0:9cf6898e6b66 57 void initMIDI(void);
villemejane 0:9cf6898e6b66 58 /* Fonction d'initialisation de la liaison MIDI - version beta */
villemejane 0:9cf6898e6b66 59 void initMIDI2(void);
villemejane 0:9cf6898e6b66 60 /* Detection d'une note reçue en MIDI */
villemejane 0:9cf6898e6b66 61 bool isNoteMIDIdetected(void);
villemejane 0:9cf6898e6b66 62 /* Note reçue en MIDI traitée */
villemejane 0:9cf6898e6b66 63 void resetNoteMIDI(void);
villemejane 0:9cf6898e6b66 64 /* Renvoie la note reçue sur la liaison MIDI */
villemejane 0:9cf6898e6b66 65 void resendNoteMIDI(void);
villemejane 0:9cf6898e6b66 66 /* Renvoie la note reçue sur la liaison MIDI - version beta */
villemejane 0:9cf6898e6b66 67 void resendNoteMIDI2(void);
villemejane 0:9cf6898e6b66 68 /* Joue une note sur la liaison MIDI */
villemejane 0:9cf6898e6b66 69 void playNoteMIDI(char note, char velocity);
villemejane 0:9cf6898e6b66 70 /* Joue une note sur la liaison MIDI - version beta */
villemejane 0:9cf6898e6b66 71 void playNoteMIDI2(char note, char velocity);
villemejane 0:9cf6898e6b66 72 /* Stoppe une note sur la liaison MIDI */
villemejane 0:9cf6898e6b66 73 void stopNoteMIDI(char note, char velocity);
villemejane 0:9cf6898e6b66 74
villemejane 0:9cf6898e6b66 75 /* Detection d'un controle reçu en MIDI */
villemejane 0:9cf6898e6b66 76 bool isCCMIDIdetected(void);
villemejane 0:9cf6898e6b66 77 /* Controle reçu en MIDI traité */
villemejane 0:9cf6898e6b66 78 void resetCCMIDI(void);
villemejane 0:9cf6898e6b66 79
villemejane 0:9cf6898e6b66 80 /* Fonction d'appel à une variation de lumière en fonction d'un angle
villemejane 0:9cf6898e6b66 81 @out : R G B au format 24 bits
villemejane 0:9cf6898e6b66 82 */
villemejane 0:9cf6898e6b66 83 int sineLED(int angle);
villemejane 0:9cf6898e6b66 84
villemejane 0:9cf6898e6b66 85 /* Fonction d'interruption sur MIDI */
villemejane 0:9cf6898e6b66 86 void ISR_midi_in(void);
villemejane 0:9cf6898e6b66 87 /* Fonction d'interruption sur MIDI - version beta */
villemejane 0:9cf6898e6b66 88 void ISR_midi_in2(void);
villemejane 0:9cf6898e6b66 89
villemejane 0:9cf6898e6b66 90 #endif