La norme Midi et JavaSound



Documents pareils
Les normes MIDI et MIDIFiles

V corr Jacques Ferber. LIRMM - Université Montpellier II 161 rue Ada Montpellier Cedex 5

Introduction. Contenu de la boîte. Caractéristiques du produit. Prise en charge des messages MIDI. Configuration minimale. A propos de ce manuel

Prise en main. Prise en main - 0

LECTEUR DE COMPACT DISC CDJ-400

TubeOhm. ALPHA-RAY synthétiseur virtuel analogique. Manuel de l utilisateur V 1.0

Mode d emploi. Mode d emploi (ce document)

Owner s Manual Mode d emploi

MainStage 3 Manuel de l utilisateur. Pour OS X

Ordinateurs, Structure et Applications

MODE D EMPLOI Consignes de sécurité

Isadora. Photo jpeg qualité 50% %, 320X240. Prérequis

NOVA System. Mode d emploi

Conception et réalisation d'une pédale MIDI

Qui ont toujours à mon côté pour me soutenir et me guider au long de ce projet.

Mise en œuvre matérielle GX UX1 UX2 KB37 DI UX8. GearBox Éléments de base Utilisation autonome. À lire!

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Roots Reggae Dub Band

DMX MASTER I. Notice d utilisation. Lisez soigneusement la notice d utilisation avant d utiliser l appareil! Version 1.

À Libre Ouvert : «Faites de la Musique» Conférence du 9 juin 2012 à la Médiathèque Jacques-Ellul de Pessac. par Philippe Bousquet <darken33@free.

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2

remotebox Application pour la commande à distance du XDJ-R1 Mode d emploi

Périphériques et Fonctions MIDI

MANUEL D'INSTALLATION

TP1 : Initiation à Java et Eclipse

Scarlett Plug-in Suite

Spider IV 15 Manuel de pilotage

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

MiniBrute SE Connection logiciel de configuration 1.0.3

DI-1. Mode d'emploi. Direct Box

COMMUTEL PRO VM3 INTERFACE GSM VOIX POUR EMULATION DE LIGNE RTC ET TRANSMETTEUR DE SMS D ALERTES ET TECHNIQUES.

Transmissions série et parallèle

/ / / Système de distribution audio A44/A88 Logiciel PC

Annexe : La Programmation Informatique

Mode d emploi. Comment obtenir un PDF du mode d emploi

FICHES TECHNIQUES. tel:

Université de La Rochelle. Réseaux TD n 6

GUIDE DE PRODUCTION DES STEMS

DPW 100 Piano droit numérique

Approche Contract First

deejay lecteurs 449 ttc* 499 ttc* 169 ttc* 109 ttc* 199 ttc* 19 ttc* Plus d infos sur 306

TuxGuitar 1.1. TuxGuitar

Projet MDMA - Rapport L2

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Master d'informatique 1ère année Réseaux et protocoles. Couche physique

Réseau Global MIDI Note applicative

contrôleurs lumière

SOMe2100 MANUEL D UTILISATION. TRANSMETTEUR GSM/GPRS - M-Bus Master D INSTALLATION. Montage sur rail DIN. Notice simplifiée du module SOMe2100

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

Boîtier de contrôle et de commande avec EV 3/2 voies intégrée

INITIATION AU LANGAGE JAVA

Remote Method Invocation (RMI)

Les liaisons SPI et I2C

Spécifications détaillées

Manuel de l utilisateur

Appendice. Le dialogue du pilote (PC- Version, Win 2000 / XP) Wave Setup MIDI Setup Powermanagement. Commandes de clavier (Hotkeys)

Tutoriel sur l enregistrement en classe Janvier Jean-Claude Boudet (académie de Bordeaux) 1. Le matériel

2 Raccordement d une imprimante, d un terminal ou d un ordinateur au DULCOMARIN

USING THE UNIT SAFELY

Marketing Update. Enabler / ENABLER aqua / Maestro II

RMX-500 TABLE DE REMIXAGE. Mode d emploi

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Machine virtuelle Java pour Palm TX

Groupe Eyrolles, 2004 ISBN :

DP-33 piano numérique

GPA770 Microélectronique appliquée Exercices série A

Itium XP. Guide Utilisateur

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Projet Active Object

Introduction aux systèmes temps réel. Iulian Ober IRIT

Services Réseaux - Couche Application. TODARO Cédric

Eclipse atelier Java

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

LOGICIEL DC4D MONITOR

Enregistreur de Température pour PC DALLAS 1820

Caractéristiques principales

Contrôleur DMX 192 canaux avec joystick ET USB PILOT - 192PRO GUIDE DE L UTILISATEUR

PocketNet SNMP/Modbus

Network musical jammin

CARACTÉRISTIQUES TECHNIQUES THE ARTIST CINE-CONCERT LIVE

ADSL. Étude d une LiveBox. 1. Environnement de la LiveBox TMRIM 2 EME TRIMESTRE LP CHATEAU BLANC CHALETTE/LOING NIVEAU :

Description d'une liaison

CONVERTISSEUR RS 232/485 NOTICE

DTS MOBATime's Distributed Time System

VX442. Panneau de Contrôle pour Windows 98 SE, ME, 2000 et XP et Mac OS 9 & 10

& THE SKYRIDERS LAURENT ROBIN FICHE TECHNIQUE

Plan du cours. Historique du langage Nouveautés de Java 7

Si vous utilisez Hercules DJControl Jogvision pour la première fois : - Insérez le CD-ROM dans le lecteur de votre ordinateur.

Système de vidéosurveillance pour Pocket PC

Initiation à JAVA et à la programmation objet.

Master e-secure. VoIP. RTP et RTCP

Mode d. Version 1.7.4

TABLE DES MATIÈRES. 1. INTRODUCTION Spécifications techniques Configuration requise INSTALLATION MATÉRIELLE...

AiR. MUSIQUE Pianos numériques, Claviers arrangeurs et Synthétiseurs. Acoustic and intelligent Resonator*

ASSISTANCE TECHNIQUE INTERACTIVE TC

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

CONTROLE D ACCES A TRANSPONDEUR LECTEUR DE BADGE SANS CONTACT ST

fullprotect inside EOLE SPEie RS E-SPEie V-0.6A-RS 1.0 revision Protection environnement Datasheet édition française

La carte à puce. Jean-Philippe Babau

Transcription:

La norme Midi et JavaSound V 1.0-14.2.2006 (update Fev. 07) Jacques Ferber LIRMM - Université Montpellier II 161 rue Ada 34292 Montpellier Cedex 5 Email: ferber@lirmm.fr Home page: www.lirmm.fr/~ferber

La norme M.I.D.I. Le Musical Instrument Digital Interface est conçu initialement comme un protocole de communication entre équipements musicaux. Origine: 1983. L information Midi qui circule entre 2 appareils est une suite de messages codées en quelques octets Jacques Ferber - LIRMM 2

Eléments de départ Les connexions M.I.D.I. Des câbles Midi relient les différentes prises des appareils Les prises Midi sont généralement au nombre de trois: Midi In, Midi Out, Midi Thru Le standard Midi utilise un mode de transmission série asynchrone L information circule à 31,25kbauds. Configuration standard d un équipement midi Jacques Ferber - LIRMM 3

Principe Des événements ont lieu sur le clavier Ces événements sont transmis aux expandeurs et/ou enregistrés (à une certaine vitesse/tempo) dans le séquenceur Le séquenceur peut rejouer ces événements (à une vitesse quelconque) comme s il s agissait du musicien qui jouait en direct. Les principaux événements midi Note on: une touche est enfoncée avec une certaine vitesse Note off: une touche est relâchée Aftertouch: pression sur une touche Program change: sélection d un son sur un synthé (128 sons maxi) Control change: modification de paramètres sonores d un synthé: volume, pan, sustain, brillance, résonance, etc.. Midi clock: horloge de synchronisation entre 2 séquenceurs midi System Exclusifs (SysEx): code propre à chaque constructeur permettant des codage en profondeur des synthés et notamment sert au chargement de banques de son Jacques Ferber - LIRMM 4

Canaux midi La plupart des événements sont envoyés sur des canaux midi (on parle de «messages canaux») Idée: chaque expandeur dispose de son canal midi Il y a 16 canal midi A la fois beaucoup et peu si l on songe que la plupart des synthés sont multi-timbres: Ex: XV5080: peut jouer 128 voix sur 32 parties.. Il fait déjà plus que la norme Midi Rajoutez quelques autres synthés: la norme midi est totalement dépassée Les messages systèmes n ont pas de canaux Midi clock (et apparentés) Start et stop + gestion des top midi.. SysEx Jacques Ferber - LIRMM 5

Les messages canaux Codage: 2 ou 3 octets 1 er octet: Bit 1: statut message (octet de statut) Bits 2 à 4: type de message Bits 5 à 8 : canal 2 ème et 3 ème octet Bit 1: statut donnée Autres: données (128 valeurs donc) Les 7 messages canaux: NoteOff: 1000 nnnn + hauteur note + vélocité (?) NoteOn: 1001 nnnn + hauteur note + vélocité Polyphonic after touch: 1010 nnnn + Hauteur note + valeur pression After touch: 1101 nnnn + valeur: variation de pression sur tout le clavier Pitch bend: 1110 nnnn + Code + Vitesse Program change: 1100 nnnn + Affectation d un instrument à un canal (=> 128 instruments seulement) Control Change: 1011 nnnn + Numéro + Valeur Jacques Ferber - LIRMM 6

Contrôleurs Midi: Control Change CC Contrôleur CC Contrôleur CC Contrôleur CC Contrôleur 0 Bank select (MSB) 32 Bank select (LSB) 64 Sustain pedal 96 1 Modulation 33 Modulation 65 Porta pedal 97 2 Breath 34 66 Sostenuto pedal 98 3 35 Aftertouch 67 Soft pedal 99 4 Foot control 36 68 Legato footswitch 100 5 Portamento 37 69 Hold pedal 2 101 6 38 70 102 7 Volume 39 71 Resonance 103 8 Balance 40 72 Release time 104 9 41 73 Attack time 105 10 Pan 42 74 LPF Cutoff 106 11 Expression 43 75 120 All Sound off 121 Reset all controls. 91 Reverb 92 Tremolo depth 93 Chorus 94 Detune Jacques Ferber - LIRMM 7

System exclusif Propre à chaque fabricant Pas de longueur défini (nécessite un fin de message) Codage: 1111 0000 (début SysEx) 0xxx xxxx : num ID constructeur. Nb octet variable, selon fabricant. (ex: Roland = 41H) Réservé: 01111 1101 contenu 1111 0111 (fin SysEx) Jacques Ferber - LIRMM 8

General Midi Codage des instruments GM1, 1991 Table d instruments de 128 instruments + 47 kits de percussions Canal 10 pour les percus. Gestion de contrôleurs midi de base Table d instrument: Ex: 1. Piano, 5 Piano electr., 13 Marimba, 25. Guitare nylon, 34. Basse electr 58 Trombone, 128 coup de feu, etc.. Existe maintenant la norme GM2, mais la plupart des fichiers midi sont encore en GM1 Fichier midi: fichier contenant des événements midi qui peuvent être joués par des instruments (généralement GM1, mais pas toujours) Jacques Ferber - LIRMM 9

Java Sound API de bas niveau permettant de contrôler l input et output d informations sonores Lire, capturer, mixer du son Packages javax.sound.sampled Gestion d informations MIDI Package javax.sound.midi On s intéressera uniquement aux aspects Midi de l implémentation Jacques Ferber - LIRMM 10

Java Sound Midi Fournit un ensemble de mécanismes permettant de créer des applications MIDI en Java Pendant longtemps, il n était pas possible de connecter à des instruments/claviers extérieurs Limitation à des exemples jouets Quelques problèmes de gestion du temps à cause d un bug dans le JDK (et pas le JRE..) Depuis la version 1.5, ces limitations ont été levées Entre-temps Tritonus a produit une implémentation efficace de JavaSound (cf. www.jsresources.org) Jacques Ferber - LIRMM 11

JavaSound API Midi Idée: connecter des appareils virtuels comme s il s agissait d une configuration matérielle Jacques Ferber - LIRMM 12

Concepts MidiMessage, MidiEvent Les messages Midi de base: données midi + longueur des données MidiEvent: contient des messages midi avec une date en «ticks» en plus MidiDevice (interface) Sequencer l'interface de base pour tous les appareils Midi Les modules de base sont: Sequencer, Synthesizer, et éventuellement d autres Pour le manipuler il faut lui adjoindre des «receiver» et des «transmitter» qui font office ports d entrée-sortie. Un sequencer est un appareil (device) qui sait enregistrer et lire une séquence (sequence) Une séquence est composée d un ensemble de pistes (track) Un track comprend un ensemble de MidiEvent Synthesizer Produit du son On peut définir des «soundbank» et jouer des sons particuliers.. Quelques bugs: l implémentation de 1.3/1.4 considère que les sequencers sont aussi des synthétiseurs. A disparu (semble-t-il avec la version 1.5) Jacques Ferber - LIRMM 13

MidiMessage MidiMessage Classe abstraite: Représentation d un message de base Midi ShortMessage: note on, off, cc, program change, etc.. MetaMessage: pour être utilisé par un séquenceur, ou autre.. MidiMessage ShortMessage MetaMessage SysExMessage Jacques Ferber - LIRMM 14

MidiSystem La plaque tournante pour obtenir les ressources du système Toutes les méthodes sont static public static MidiDevice.Info[] getmidideviceinfo() retourne un tableau d infos sur les appareils (device) en cours: 0 OUT Mappeur MIDI Microsoft, Unknown vendor, 5.0, Windows MIDI_MAPPER 1 OUT Synthétiseur logiciel Microsoft, Unknown vendor, 5.10, Internal software synthesizer 2 IN OUT Real Time Sequencer, Sun Microsystems, Version 1.0, Software sequencer 3 OUT Java Sound Synthesizer, Sun Microsystems, Version 1.0, Software wavetable synthesizer and receiver MidiDevice getmididevice(mididevice.info info) Récupère l appareil à partir de son nom.. ATTENTION: c est le seul moyen pour récupérer des devices qui ne sont pas par défaut Synthesizer getsynthesizer() Retourne le synthétiseur par défaut Sequencer getsequencer() Retourne le séquenceur par défaut Sequence getsequence(file file) Retourne une séquence à partir du fichier MIDI Jacques Ferber - LIRMM 15

Connexion d appareilsd Connecte les devices par leur connecteurs Deux types de connecteurs: Receiver (input) et Transmitter (out) On peut associer un Transmitter à un Receiver Sequencer T R Synthesizer Receiver synthreceiver = monsynthe.getreceiver(); Transmitter seqtransmitter = monseq.gettransmitter(); seqtransmitter.setreceiver(synthreceiver); Jacques Ferber - LIRMM 16

Sequencer Lire, arrêter une séquence start(), stop() Placer une séquence: setsequence(sequence sequence) isrunning: indique si le séquencer est en route settrackmute(int track, boolean mute), gettrackmute(int track) settracksolo(int track, boolean solo) Enregistrement recordenable(track track, int channel): prépare la piste en question qui est prêt à recevoir des événements midi recorddisable(track track) startrecording(), isrecording() Tempo Plus: settempo(float bpm), gettempo(float bpm) Opérations de bouclage (loop) de parties de séquences Synchronisations (master, slave) avec la midi clock (interne ou externe, dépendant du SyncMode du sequencer..) Positionnement en tick dans la séquence (dépend du tempo et de la résolution du tick) Jacques Ferber - LIRMM 17

Synthesizer Produit du son Gestion des canaux: MidiChannel[] getchannels() On peut charger des Soundbank (banque de sons) Soundbank getdefaultsoundbank() Instrument[] getavailableinstruments() Instrument[] getloadedinstruments() Jacques Ferber - LIRMM 18