struct

(**

Liste de claviers testés

  1. Roland A-800PRO
Détection sous FreeBSD :
ugen1.2: <Roland> at usbus1
uaudio0: <Roland A-PRO, class 0/0, rev 1.10/1.20, addr 2> on usbus1
uaudio0: No playback.
uaudio0: No recording.
uaudio0: MIDI sequencer.
uaudio0: No HID volume keys found.

Dans "USB settings" il faut sélectionner "advanced driver mode" "OFF" (mode d'emploi page 65). À ce moment là les messages midi sont envoyés comme suit : les notes sur "/dev/umidi0.1", les boutons de réglage sur "/dev/umidi0.2".

Dans "Keyboard/pad" il faut sélectionner "kbd port set" "port 1+2" (ou bien "port 2" : mode d'emploi page 61). À ce moment-là tout sort sur "/dev/umidi0.2".

Dans "System settings" il faut sélectionner "OMNI" "ON" (mode d'emploi page 42) de façon que le canal MIDI soit celui choisi par l'encodeur rotatif (par défaut : le premier).

On peut aussi tout récupérer à ce moment-là sur "/dev/umidi0.1".

Il est alors impossible d'envoyer avec les coussinets percussifs (pads) une note sur un autre canal MIDI que celui des touches.

L'utilisation des contrôleurs est incompatible avec celle des pads.

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 = "CLAVIERr" ;;

let tenue = false ;;

let curseur_1 = 0x49 ;;
let curseur_2 = 0x4B ;;
let curseur_3 = 0x48 ;;
let curseur_4 = 0x5B ;;
let curseur_5 = 0x5C ;;
let curseur_6 = 0x5D ;;
let curseur_7 = 0x5E ;;
let curseur_8 = 0x5F ;;
let curseur_9 = 0x07 ;;

let bouton1 = 0x4A ;;
let bouton2 = 0x47 ;;
let bouton3 = 0x41 ;;
let bouton4 = 0x02 ;;
let bouton5 = 0x05 ;;
let bouton6 = 0x4C ;;
let bouton7 = 0x4D ;;
let bouton8 = 0x4E ;;
let bouton9 = 0x0A ;;

let bouton_1 = bouton1 ;;
let bouton_2 = bouton2 ;;
let bouton_3 = bouton3 ;;
let bouton_4 = bouton4 ;;
let bouton_5 = bouton5 ;;
let bouton_6 = bouton6 ;;
let bouton_7 = bouton7 ;;
let bouton_8 = bouton8 ;;
let bouton_8bis = bouton9 ;;

let alter_swell = 0x0B ;;
let alter_modulation = 0x01 ;;

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


let poussoir_debut = 0x15 ;;
let poussoir_rembobine = 0x16 ;;
let poussoir_avance_rapide = 0x17 ;;
let poussoir_fin = 0x18
let poussoir_arret = 0x19 ;;
let poussoir_lecture = 0x1A ;;
let poussoir_pause = 0x1B ;;
let poussoir_enregistrement = 0x1C ;;
let poussoir_boucle = poussoir_pause ;;

(** Boutons-poussoirs spécifiques. Les messages sont envoyés à l'enfoncement seulement. La valeur est alternativement 127 et 0. *)


let poussoir_1 = 0x50 ;;
let poussoir_2 = 0x51 ;;
let poussoir_3 = 0x52 ;;
let poussoir_4 = 0x53 ;;

(** Valeurs absentes *)


let curseur_0 = 0xFF ;;
let bouton_p1 = 0xFF ;;
let bouton_p2 = 0xFF ;;
let bouton_p3 = 0xFF ;;
let bouton_p4 = 0xFF ;;
let bouton_p5 = 0xFF ;;
let bouton_p6 = 0xFF ;;
let bouton_p7 = 0xFF ;;
let bouton_p8 = 0xFF ;;
let bouton_p9 = 0xFF ;;
let bouton_p10 = 0xFF ;;
let poussoir_5 = 0xFF ;;
let poussoir_6 = 0xFF ;;
let poussoir_7 = 0xFF ;;
let poussoir_8 = 0xFF ;;
let poussoir_9 = 0xFF ;;
let poussoir_10 = 0xFF ;;
let poussoir_11 = 0xFF ;;
let poussoir_12 = 0xFF ;;
let vers_instru = 0xFF ;;
let pad_5 = 0xFF ;;
let pad_6 = 0xFF ;;
let pad_7 = 0xFF ;;
let pad_8 = 0xFF ;;


(** Coussinets percussifs. Ce sont des notes envoyées sur le canal MIDI 0x00. *)


let pad1 = 0x24 ;;
let pad2 = 0x26 ;;
let pad3 = 0x2a ;;
let pad4 = 0x2e ;;
let pad5 = 0x2b ;;
let pad6 = 0x2d ;;
let pad7 = 0x33 ;;
let pad8 = 0x31 ;;

end