Lecteur intégré

Le lecteur intégré dans les pages de ce site est sensé être le Windows Media Player.
Mais ... s'il est correctement installé ! car sinon cela risque d'être celui de QuickTime, nettement moins bon !
L'installation/mise à jour de QuickTime sur un PC peut provoquer ce défaut : chaque logiciel veut être le seul effectuant cette fonction sur votre PC
Si vous installez GoogleChrome et/ou Firefox en plus de Internet Explorer, chacun veut être votre navigateur par défaut !
Une sorte de guerre commerciale dans votre PC...
Il y a la même guerre entre Windows Media Player et QuickTime, au détriment de l'ergonomie et de la qualité d'écoute. Dommage...
De plus l'insertion d'un objet (le lecteur) dans une page Web se fait différemment dans les différents navigateurs.
Les lecteurs intégrés réagissent ainsi différemment selon les navigateurs.
En principe tout est OK avec Internet Explorer et avec Firefox.

Applets et Midi

(clavier virtuel, métronome, etc...)
Configuration requise, comment ça marche, détails techniques.

Prérequis

Les applets Midi proposées utilisent le moteur Java (JRE), présent de nos jours sur tous les PC.
Elles nécessitent au moins la version 1.5, le support correct des séquenceurs Midi n'étant pas assuré pour les versions précédentes.
La version actuelle du moteur Java est la version 6 (1.6). Il est recommandé d'utiliser cette version au moins.

Le moteur Java utilise une banque de sons, qui n'est pas normalement fournie avec Java. En l'absence de banque de son, des sons par défaut sont utilisés.

Comme il s'agit de fonctionnement où les temps doivent être définis précisement, un PC suffisamment puissant (= récent) est nécessaire.

Le lancement et le fonctionnement des applets sont soumis à une installation et un paramètrage corrects du navigateur.
Normalement tout est bon par défaut, mais sinon il faut plus particulièrement vérifier les points suivants :

- Installation correcte de Java, au besoin le désinstaller et le réinstaller. Voir ci-dessous.
- Le navigateur doit utiliser le JRE de Sun et pas un "Java" intégré au navigateur (options internet avancées du navigateur)
- Autoriser l'exécution des applets Java (options internet avancées du navigateur)
- Ne pas confondre Java et Javascript.

Les utilisateurs de PC sous Linux et de MacIntosh adapteront tout ceci à leur O.S. préféré.

Mise à jour de Java

Le moteur Java propose normalement sa propre mise à jour automatiquement.
Si ce n'est pas le cas, on peut installer le JRE manuellement à partir du site de Sun : Downloads

A moins que vous ne vouliez programmer vous même en Java, il est inutile d'installer le JDK (Java Developpement Kit), le JRE (Java Run time Environnemet) suffit.
Il faut les droits "administrateur" sur votre PC, et installer "pour tous".

Sous Windows 98, Java 6 ne peut pas fonctionner.
La dernière version compatible est la version 1.5 (5.0), qui n'est plus maintenue par Sun, en phase EOL, End Of Life.
On peut se procurer cette version dans leurs archives : JDK 5
Installer le Java Runtime Environment (JRE) 5.0 Update 17, un peu plus bas dans la liste.

A noter que la mise à jour automatique de Java échoue sous Windows 98, car elle cherche à mettre à jour avec la version la plus récente, à savoir la version 6 (1.6).
Si vous êtes encore en Java 1.4 (ou même moins...), il faut donc installer Java 1.5 manuellement.

Banque de sons

Les applications sur ce site utilisent des sons par défaut en l'absence de banque de son installée.
Il n'est pas ainsi obligatoire d'en installer une.
Si une banque de sons doit être installée manuellement, suivre les indications de la page de Sun. Soundbanks

Ils proposent 3 banques de son :
- mini (≈0.5 MB) (standard), suffisant.
- moyen (≈1 MB) si on veut un son de meilleure qualité
- deluxe (≈5 MB) top qualité, mais nécessite un PC plus puissant.
De toute façon, même le "deluxe" ne rivalise pas avec le son d'un véritable instrument : il s'agit d'un synthétiseur !

A noter aussi que le synthétiseur est celui du moteur Java, et non celui complètement pourri fourni avec les PC via Windows Media Player, ou pire encore QuickTime.
Par défaut, le super top synthétiseur de votre carte son SoundBlaster/Rolland de la mort n'est pas utilisé.
Mais vous verrez tout de même les fichiers Midi sous un tout autre jour !
Surtout si vous avez remplacé le haut parleur de 0.5 cm² de votre PC portable par une vraie enceinte et que vous utilisez une vraie carte son...
De toute façon cela ne peut rivaliser avec un véritable synthétiseur, ni bien sûr avec un véritable instrument !

Application autonome

Les applets proposées peuvent aussi s'exécuter en tant qu'application autonome sur votre PC. Il suffit de charger/exécuter le fichier jar correspondant.
En tant qu'application autonome, elles peuvent proposent des facilités étendues, interdites aux applets exécutées dans un navigateur.
L'utilisation simultanée de plusieurs applets et applications utilisant le séquenceur Midi échoue avec Java 1.5,
et est déconseillée sinon (perturbations de tempo et cacophonie).

Temps réel

Le temps réel n'est pas garanti par le moteur Java.
Ici la précision du tempo est suffisante, si le PC est suffisamment rapide et si on n'exécute pas d'autres applications en même temps
(penser au scan antivirus en tâche de fond par exemple, à l'autosave d'un document ouvert etc...).
Il peut arriver que le tempo soit momentanément imprécis, lors de changement de paramètres par exemple.
Une fois le système stabilisé, le tempo redevient stable.
De même si une tâche de fond monopolise momentanément le système, le tempo est alors perturbé.

Comment ça marche ? Qu'est ce que Midi ?

Midi (Musical Instruments Data Interface) est une norme d'interface entre instruments électroniques.
Parmi ces "instruments" on distingue essentiellement :

L'interface Midi définit donc comment ces instruments dialoguent entre eux, par des messages en temps réel : note à jouer à cet instant, changement du volume, etc...
Enfin ces "instruments" peuvent être virtuels (réalisés par du logiciel) ou matériels.
De même les liaisons entre ces différentes parties du système peuvent être matérialisées par des cables physiques (cables midi) ou par des échanges entre programmes d'un même ordinateur.
Une partie importante en ce qui nous concerne est l'enregistrement des séquences à jouer dans des fichiers : "fichiers midi", bien sûr.

Un système peut comporter plusieurs claviers, ou pas du tout d'ailleurs, plusieurs synthétiseurs, et même plusieurs séquenceurs.
Un même séquenceur peut ainsi piloter plusieurs synthétiseurs, chacun pouvant éventuellement générer plusieurs sons simultanément (polyphonie).
Pour s'y retrouver, chaque dispositif est généralement associé à un ou plusieurs canaux midi.

Un séquenceur a pour but donc d'émettre au bon moment des messages midi à destination des synthétiseurs du système, sur les canaux choisis.
L'ensemble de ces messages à envoyer forme une séquence
Enfin l'affectation des divers instruments à des canaux midi se reflète dans une séquence par des pistes (tracks).
Une séquence à jouer (= un fichier midi par exemple) se compose ainsi de diverses pistes, chacune constituant une partie logique de la séquence.
Par exemple une piste pour la voix de Soprano, une piste pour Alto I, une piste pour Alto II etc.
Il n'y a aucune norme pour cette affectation des pistes et des canaux, chaque morceau a ses propres règles.
En ce qui nous concerne ici (midi 1) un fichier midi décrit ainsi une séquence, composée de plusieurs pistes à jouer simultanément.
Généralement tous les messages d'une piste s'adressent au même canal (donc au même [élément de] synthétiseur), mais ce n'est pas obligatoire.
Chaque canal a des caractéristiques qui lui sont propres, par exemple son volume, l'instrument qui émet les sons, etc. et ceci peut changer à tout moment sous le contrôle des messages midi.

Application sur un PC

Généralement un PC est muni d'une carte son, éventuellement réduite à sa plus simple expression ("chipset").
Un synthétiseur dans le PC est ainsi réalisé par : Le séquenceur est toujours réalisé par logiciel ici.

Le Windows Media Player de Windows 98 sur un PC muni d'une vraie carte son (SoundBlaster par exemple) utilise le synthétiseur matériel de la carte son.
Par contre QuickTime effectue ses propres synthèses par logiciel, ignorant le synthétiseur matériel de la carte son !

La table de mixage d'une carte son (Soundblaster) :

Ces tables de mixages sont affichées par "ouvrir les commandes de volume" (click droit) de l'icone son de la barre de tâches.

Un séquenceur Java peut envoyer ses messages au choix vers divers synthétiseurs du sytème :

Les synthétiseurs par logiciels utilisent généralement des tables d'échantillons de son (sound bank) pour générer les sons.
Tous ces synthétiseurs sont caractérisés par le nombre de canaux midi qu'ils peuvent jouer simultanément, et par le nombre de sons qu'ils peuvent jouer simultanément sur chaque canal.

L'applet suivante teste votre système Midi :


Sur mon PC j'ai ainsi les dispositifs Midi suivants :
MIDI entrée Creative : Entrée Midi de la carte son (cable MIDI IN du PC)
MIDI Mapper : Windows MIDI_MAPPER, traducteur de sons de Windows
Synthétiseur MIDI Creative : Synthétiseur de la carte son
MIDI sortie Creative : sortie MIDI de la carte son (cable MIDI OUT du PC)
Real Time Sequencer : Séquenceur de Java
Java Sound Synthesizer : Synthétiseur de Java

Les dispositifs qui génèrent des sons sont des synthétiseurs ou des ports vus comme MIDI IN par Java
Le port MIDI OUT du PC est bien vu comme un dispositif relié à Java par une entrée :
Les messages midis sortent de Java, entrent dans le port et sortent du PC.
Idem pour le Midi Mapper de Windows par exemple qui est vu par Java comme un port MIDI IN

Sur cette configuration, les sons demandés par le séquenceur Java sortiront, au choix
- Par le MIDI Mapper de Windows
- Par le synthétiseur midi (matériel) de la carte son
- Par le port MIDI OUT du PC, vers un synthétiseur exterieur, qui les reçoit sur son entrée MIDI IN, et génère le son.
- Par le synthétiseur de Java, qui les génère par logiciel à destination de l'entrée "audio" du Mixer de la carte son

Par défaut le son est généré par le synthétiseur de Java, en utilsant une banque de son s'il y en a une d'installée, sinon des sons par défaut.

Informations techniques

(pour les programmeurs)

Inclusion dans des pages Web

L'inclusion d'un player Midi dans des pages Web peut se faire de différentes façons :

Choix du morceau

Le choix dynamique du morceau joué dépend du player utilisé.

Si on a un EMBED de player non défini, la modification dynamique du morceau joué indiquée dans la doc de JavaScript est fausse.
Le code Javascript document.player1.play(loop, "sound.mid") renvoie l'erreur :
"document.player1.play is not a function" avec Mozilla/Firefox
et "cet objet n'est pas une collection" avec IE.
Il faut donc générer le EMBED de façon dynamique. Voir ci-dessous.

Si c'est une applet Java, le choix est fait dans cette applet.
Il y a toutefois une restriction importante : le fichier midi doit être dans la filiation du répertoire où se trouve le fichier de l'applet.
On ne peut pas spécifier un fichier comme "../ailleurs/chant.mid"

Le player par classid sur le windows media player est plus souple sur ce point et joue des morceaux situés n'importe où sur le Web, et est pilotable directement par JavaScript, en changeant dynamiquement le FileName par obj.FileName="..."
Malheureusement ceci ne fonctionne que sur IE, Firefox ayant une version de Windows Media Player particulière qui ne marche pas avec FileName et n'est pas pilotable par JavaScript. Il faut alors générer dynamiquement le EMBED, inclus dans un <DIV> au contenu HTML dynamique. Un peu galère...
C'est cette technique qui est actuellement utilisée... en attendant que je finalise ma propre applet qui aura tout de même d'énormes avantages en ce qui nous concerne : le véritable pilotage Midi (affichage des mesures, modification des volumes et des instruments par piste, bouclage sur les mesures x à y etc...)

Le code utilisé est asez trappu, à cause de la génération dynamique de EMBED pour les non IE :

<script>
<!--
function setfile(s) {
if (obj.FileName == undefined) { // dynamiquement avec un FileName variable
txt="<object classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95' width='400' height='69' id='player1'>";
txt+="<param name='FileName' value='"+s+"' />";
txt+="<param name='AutoStart' value='true' />";
txt+="<param name='ShowControls' value='true' />";
txt+="<param name='ShowStatusBar' value='true' />";
txt+="<param name='ShowDisplay' value='false' />";
txt+="<param name='ShowTracker' value='true' />";
txt+="<param name='AutoRewind' value='true' />";
txt+="<embed type='application/x-mplayer2'";
txt+="pluginspage='http://www.microsoft.com/Windows/MediaPlayer/download/default.asp' ";
txt+="src='"+s+"' Name=Mplayer1 AutoStart=1 ShowControls=1 ShowTracker=1 ShowDisplay=0 ShowStatusBar=1";
txt+="width='400' height='69' /></object>";
document.getElementById("lecteur").innerHTML=txt;
} // object dynamique
else obj.FileName=s; // s'il est opérationnel, il suffit de changer le FileName (ne marche qu'avec IE)
return false; // inhibe l'action du <a href=...
}
// -->
</script>

 

<div id='lecteur'>
<object classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" width="400" height="69" id="mediaplayer1">
<param name="FileName" value="" /> <!-- vide au départ -->
<param name="AutoStart" value="true" /> <!-- démarre auto sur chargement de fichier -->
<param name="ShowControls" value="true" />
<param name="ShowStatusBar" value="true" />
<param name="ShowDisplay" value="false" />
<param name="ShowTracker" value="true" />
<param name="AutoRewind" value="true" />
<b><span class="red">  Lecteur pas démarré  </span></b>
</object></div>

 

<a href="kyrie.mid" onclick="return setfile('kyrie.mid');">Kyrie</a>
<a href="sanctus.mid" onclick="return setfile('sanctus.mid');">Sanctus</a>
<a href="benedictus.mid" onclick="return setfile('benedictus.mid');">Benedictus</a>
 

Les balises <a> appellent la foncion JavaScript par onClick et non pas directement par un href="javascript:..." de sorte que
• si JavaScript est inhibé chez le client, la page sera quand même utilisable (en cliquant sur le lien, ça lance le midi dans le player par défaut du navigateur)
• On puisse récupérer le fichier midi par un clic droit

Ce sera plus simple avec une applet, grace à l'utilisation interdite de la balise <APPLET> !

<applet code=monplayeramoi.class archive=monplayeramoi.jar width=nnn height=nnn>
<param name="..." value="..." />
<param name="..." value="..." />
</applet>
Les "param" éventuels définissant les paramètres de l'applet (liste de fichiers par exemple, ou mode de fonctionnement)
M'enfin... tout est dans l'applet en Java...

 

Clavier Métronome    Musiquee Accueil Mail