struct

(**

Liste de claviers testés

  1. Arturia keylab61
    Détection sous FreeBSD :
    ugen0.2: <Arturia> at usbus0
    uaudio0: <Arturia KeyLab 61, class 0/0, rev 2.00/0.01, addr 1> on usbus0
    uaudio0: No playback.
    uaudio0: No recording.
    uaudio0: MIDI sequencer.
    uaudio0: No HID volume keys found.
Copyright Stéphane Grognet
IREM des Pays de la Loire - Université de Nantes
Laboratoire de mathématiques Jean Leray UMR 6629 CNRS
version 0.8
@version 0.8 @author Stéphane Grognet @since 2014 *)


let nom_clavier = "CLAVIERa" ;;

let tenue = true ;;

let curseur_1 = 0x49 ;;
let curseur_2 = 0x4B ;;
let curseur_3 = 0x4F ;;
let curseur_4 = 0x48 ;;
let curseur_5 = 0x50 ;;
let curseur_6 = 0x51 ;;
let curseur_7 = 0x52 ;;
let curseur_8 = 0x53 ;;
let curseur_9 = 0x55 ;;

let bouton1 = 0x4A ;;
let bouton2 = 0x47 ;;
let bouton3 = 0x4C ;;
let bouton4 = 0x4D ;;
let bouton5 = 0x5D ;;
let bouton6 = 0x12 ;;
let bouton7 = 0x13 ;;
let bouton8 = 0x10 ;;
let bouton9 = 0x11 ;;
let boutonA = 0x5B ;;

let bouton_p1 = bouton1 ;;
let bouton_p2 = bouton2 ;;
let bouton_p3 = bouton3 ;;
let bouton_p4 = bouton4 ;;
let bouton_p5 = bouton5 ;;
let bouton_p6 = bouton6 ;;
let bouton_p7 = bouton7 ;;
let bouton_p8 = bouton8 ;;
let bouton_p9 = bouton9 ;;
let bouton_p10 = boutonA ;;

let alter_swell = 0x07 ;;
let alter_modulation = 0x01 ;;

(** Les valeurs des boutons-poussoirs prennent les valeurs 127 à l'enfoncement et 0 au relâchement. *)


let poussoir_boucle = 0x37 ;;
let poussoir_rembobine = 0x35 ;;
let poussoir_avance_rapide = 0x34 ;;
let poussoir_arret = 0x33 ;;
let poussoir_lecture = 0x36 ;;
let poussoir_enregistrement = 0x32 ;;

(** Boutons-poussoirs spécifiques *)


let sound = 0x76 ;;
let multi = 0x77 ;;
let bank_1 = 0x2f ;;
let bank_2 = 0x2e ;;
let prog_chng = 0x16 ;;
let recall = 0x17 ;;
let store = 0x18 ;;
let global = 0x19 ;;
let curve = 0X1A ;;
let mode = 0x1B ;;
let midi_ch = 0x1C ;;
let cc = 0x1D ;;
let min_lsb = 0x1E ;;
let max_msb = 0x1F ;;

let poussoir_debut = sound ;;
let poussoir_fin = multi ;;

(** Pads considérés comme des contrôleurs. Le problème est qu'ils envoient des trains de messages interminables. Il faut isoler le mot qui contient la valeur 0. Apparemment, il y en a exactement un par manipulation du bouton (au relâchement ?). *)


let pad_5 = 0x28 ;;
let pad_6 = 0x29 ;;
let pad_7 = 0x2a ;;
let pad_8 = 0x2b ;;
let pad_9 = 0x38 ;;
let pad_10 = 0x39 ;;
let pad_11 = 0x3a ;;
let pad_12 = 0x3b ;;
let pad_13 = 0x3c ;;
let pad_14 = 0x3d ;;
let pad_15 = 0x3e ;;
let pad_16 = 0x3f ;;

(** Poussoirs numérotés *)


let poussoir_1 = prog_chng ;;
let poussoir_2 = recall ;;
let poussoir_3 = store ;;
let poussoir_4 = global ;;
let poussoir_5 = curve ;;
let poussoir_6 = mode ;;
let poussoir_7 = midi_ch ;;
let poussoir_8 = cc ;;
let poussoir_9 = min_lsb ;;
let poussoir_10 = max_msb ;;
let poussoir_11 = bank_1 ;;
let poussoir_12 = bank_2 ;;

(** Valeurs absentes *)


let curseur_0 = 0xFF ;;
let bouton_8bis = 0xFF ;;
let bouton_1 = 0xFF ;;
let bouton_2 = 0xFF ;;
let bouton_3 = 0xFF ;;
let bouton_4 = 0xFF ;;
let bouton_5 = 0xFF ;;
let bouton_6 = 0xFF ;;
let bouton_7 = 0xFF ;;
let bouton_8 = 0xFF ;;
let vers_instru = 0xFF ;;

(** Coussinets percussifs. Par défaut ce sont des notes envoyées sur le canal MIDI 0x09. *)


let pad1 = 0x7c ;;
let pad2 = 0x7d ;;
let pad3 = 0x7e ;;
let pad4 = 0x7f ;;

(** Valeurs absentes *)


let pad5 = 0xFF ;;
let pad6 = 0xFF ;;
let pad7 = 0xFF ;;
let pad8 = 0xFF ;;


end