HARDWAREMONTAGES ★ INTERFACE MIDI (CPC INFOS) ★

Interface MIDI (CPC Infos n°32)Interface MIDI (CPC Infos n°33)
Si vous possédez un instrument MIDI quelconque et un AMSTRAD dont vous désirez tirer autre chose que ce que le générateur de son d'ARNOLD peut vous fournir, alors ce dossier vous concerne.

Nous allons voir comment réaliser l'Interface MIDI, le logiciel en langage machine gérant cette Interface et le programme Basic servant à la transcription d'une partition sur l'écran. En somme nous allons voir comment transformer ce cher ARNOLD en «SEQUENCEUR» pour la modique somme de 150 F, prix de revient approximatif des composants de l'Interface.
Tout d'abord quelques définitions :

  • Qu'est-ce qu'un séquenceur ? C'est un appareil capable d'enregistrer une partition et de la restituer sous forme de codes MIDI lesquels seront injectés à un Instrument MIDI type synthétiseur, expandeur, boite à rythmes, clavier, etc. qui Jouera cette partition.
  • Qu'est-ce que MIDI ? C'est l'acronyme de «Musical Instrument Digital Interface». C'est un standard International mis au point en 1983 permettant à divers Instruments de musique, voire de différentes marques, de communiquer entre eux.

Caractéristiques techniques de l'ensemble proposé :

  • Le codage de la partition peut se faire sur un nombre de canaux allant de 1 à 16. On peut donc jouer Jusqu'à un maximum de 16 notes simultanément.
  • Le tempo est réglable de 30 à 170 noires à la minute.
  • La plus petite durée enregistrable est le triolet de triple croche (ce qui correspond à 1/24ème de noire).
  • Il est possible de mémoriser 13000 notes au maximum.
  • Il n'est pas nécessaire de récrire les mesures Identiques, chose que ne fait pas un séquenceur bas de gamme du commerce sur lequel un refrain doit être récrit autant de fols qu'on désire l'entendre.
  • Il n'est pas vraiment nécessaire de connaître le solfège pour transcrire une partition. En effet, les sé-quenceurs vendus dans le commerce vous obligent à avoir un clavier à proximité et de Jouer sur celui-ci la note qui sera enregistrée par le séquenceur. Seul problème. Il ne faut pas se tromper en Jouant la note (Clé de Sol, clé de Fa, altérations à la clé...). Ici, le logiciel va se charger de tous ces problèmes : Il n'est pas Indispensable de connaître le nom des notes sur la portée étant donné qu'on se limite à transcrire visuellement la note de la partition sur l'écran. D'autre part ce mode de transcription ne nécessitant pas de clavier, si vous ne possédez qu'un expandeur (un expandeur est un générateur de sons sans clavier donc beaucoup moins onéreux qu'un synthétiseur). Il vous sera néanmoins possible de transcrire et de restituer une musique.
  • Toute la transcription se fait au Joystick.
  • Possibilité de liaison inter-mesure. Durée maximum d'une liaison : 10 temps.
  • Possibilité d'ajouter des canaux, d'en effacer.
  • Possibilité d'affecter un canal MIDI différent pour chaque vole. On pourra ainsi piloter simultanément une boîte à rythme réglée sur un canal MIDI, un synthétiseur Jouant des sonorités différentes selon le canal MIDI plus tout autre Instrument réglé sur un autre canal MIDI.
  • Possibilité de mémoriser pour une partition les réglages initiaux de Tempo, d'affectation des canaux MIDI permettant ainsi un lancement automatique du morceau à la bonne vitesse, avec les bons canaux MIDI.

Commençons par détailler le dernier maillon de la chaîne c'est-à-dire l'Interface MIDI. Sans faire un cours magistral d'électronique ou de transmission MIDI, voyons pourquoi tout cela fonctionne.

  • Le décodage d'adresse est le premier problème à résoudre lorsque Ton veut connecter des extensions à un ordinateur. Tout système possède un certain nombre d'adresses réservées aux circuits internes et d'autres utilisables pour 'd'éventuelles extensions. Ces adresses, définies lors de la conception de la machine, sont les suivantes pour l'AMSTRAD : De F8E0 à F8FF, F9E0 à F9FF, FAE0 à FAFF, FBE0 à FBFF, soit 128 adresses plus les adresses de F8BC à F8BF, F9BC à F9BF, FABC à FABF, FBBC à FBBF. Ce qui nous laisse en tout 144 adresses disponibles pour l'utilisateur et ses extensions.
  • Le décodage d'adresses réalisé sur cette Interface n'est qu'un décodage partiel. En effet, si on consulte le schéma de principe, on s'aperçoit que seuls les Bits d'adresse de A4 à A15 y arrivent et y sont traités.

Le circuit IC3 a pour rôle de surveiller les Bits d'adresse et de valider l'extension simplement dans une des configurations de ceux-ci. Pour que l'extension soit active. Il faudra donc avoir les Bits Al2 à Al5 à 1, tes Bits A4 à A7 à 1, le signal IORQ barre à 1, et la sortie de IC2 à 1. IC2 est un comparateur 4 Bits. Celui-ci est câblé pour décoder le chiffre &8 sur les Bits A8 à A11.

L'extension sera donc validée pour l'adresse &FAFX vu que les Bits A0 à A3 ne sont pas décodés. Toute adresse comprise entre &FAF0 et &FAFF validera donc l'extension d'où le nom de décodage partiel. Dernière condition ayant été un peu oubliée, le signal IORQ barre. L'ordinateur met un niveau 0 sur cette broche lorsqu'il y a une demande d'entrée/sortie (In/Out Request). Le circuit IC3 ne validera donc l'extension qu'à la condition que l'adresse sur le bus d'adresse soit &FAFX et que la broche IORQ barre solt à 0, donc que l'on fasse une demande d'entrôe/sortle sur la bonne adresse.

STATUTDONNEEDONNEEINTERPRETATION
80 à 8F00 à 7F00 à 7FNote OFF (+ No canal) + No Note + Vélocité
90 à 9F00 à 7F00 à 7FNote ON (+ No canal) + No Note + Vélocité
A0 à AF00 à 7F00 à 7FAprés Touche Polyphonique (+No canal) + No Note + Pression
B0 à BF00 à 7900 à 7FChangement de Commande (+No canal) + Contrôle + Valeur
C0 à CF00 à 7FChangement de Programme (+ No canal) + No de programme
D0 à DF00 à 7FAprès Touche Commune (+No canal) + Valeur

Nous avons donc pour l'Instant l'extension qui réagit quand on l'adresse correctement.

Le circuit IC5 se charge de mémoriser la donnée se trouvant sur le bus de donnée seulement quand l'extension sera validée. On récupère donc ainsi la donnée envoyée par le logiciel dans ce circuit. Une partie du circuit IC6 sert à produire un signal d'horloge de fréquence 31250 Hz (fréquence de transmission des codes MIDI) qui va servir de base de temps aux circuits IC8 et IC9 qui se chargeront de traduire la donnée mémorisée par IC5 sur 8 Bits donc sur 8 fils (donnée parallèle) en une donnée sur 1 fil (donnée série) à la vitesse imposée par l'horloge.
Et voilà ! Le logiciel envole une adresse et une donnée à l'extension qui va traiter tout cela et le rendre compatible avec la norme MIDI. Toutefois, l'adresse employée par ce logiciel étant &FAF0, vérifiez qu'aucune autre Interface déjà branchée sur votre ordinateur ne réponde à cette adresse.

* Voyons maintenant côté instrument de musique comment cela se passe. Un appareil équipé de l'Interface sérielle asynchrone MIDI (31250 Hz + ou - 1%) comporte une prise MIDI IN et/ou une prise MIDI OUT. L'Interface est une boucle de courant de 1.5 mA avec optocoupleur. Etant donné qu'il est préférable qu'une sortie MIDI OUT n'attaque qu'une entrée MIDI IN, le signal est remis en forme par la sortie MIDI THRU (lorsqu'elle existe,ce qui n'est malheureusement pas toujours le cas). Le protocole de communication différencie les octets de STATUT (>127) devant être suivis d'un ou plusieurs octets de DONNEE (<128). Un message MIDI typique est de la forme Sn,XX,YY où S représente le statut (&8 à &E), n le numéro de canal (&0 à &CF pour les canaux 1 à 16), XX le premier octet de donnée (&00 à &7F), YY le deuxième octet de donnée (&00 à &7F). Voici un petit tableau des codes les plus Importants :

Attention, les numéros de statut et de donnée dans le tableau sont donnés en hexadécimal.

Numéros des notes :

&6c (108) = DO

Aigu (clavier 88 touches)
&60 ( 96) - DO Aigu (clavier 61 ou 73 touches)
&45 ( 69) - LA 440 Hz
&3C ( 60) - DO Milieu du clavier
&24 ( 36) - DO Grave (clavier 61 touches)
&18 ( 24) = DO Grave (clavier 73 touches)
&15 ( 21) = LA Grave (clavier 88 touches)

Vélocité :
&00 = Note OFF (Ne pas utiliser zéro comme valeur par défaut !)
&01 = ppp (pianissimo)
&40 = mp-mf (mezzo-forte) ; valeur par défaut
&7F = fff (fortissimo)

Exemple : un appareil recevant le code &90,&3c,&40 comprendra ceci : Statut &9=touche enfoncée (Note ON) sur le canal 0 donc canal MIDI 1. Jouer la note &3C avec la vélocité (force) &40. La première chose que l'Instrument de musique fera, sera de vérifier le numéro de canal envoyé pour savoir si le message le concerne. Si celui-ci est réglé pour recevoir ce canal. Il vérifie le statut. Dans notre exemple, le statut étant note ON, Il va savoir qu'il doit recevoir deux octets de donnée qui sont le numéro de la note à Jouer et la force à laquelle il faut la Jouer. Certains messages MIDI ne comportent que deux octets. Exemple : &C0,&02 signifie changement de programme sur le canal MIDI 1, passer au programme numéro 3.

Pour information, il ne faut qu'un millième de seconde pour envoyer un message MIDI complet. Il semble donc que le son est produit au moment même où est reçu le code. Grâce à cette interface vous pouvez vous «amuser» à envoyer des codes MIDI à partir du Basic. Essayez d'envoyer la séquence OUT &FAF0,&90:OUT &FAF0,&3C:OUT &FAF0,&40. Si l'Instrument est réglé en réception sur le canal 1 ou sur OMNI, celui-ci va vous Jouer un DO médian. De la même façon, entrez la ligne suivante : OUT &FAF0,&80:OUT &FAF0,&3C:OUT &FAF0,&40 et la note cessera d'être Jouée.

Maintenant que l'électronique et la norme MIDI n'ont plus de secrets pour vous voyons ce qui vous est proposé au niveau du logiciel.

  • Le programme MENU.BAS va vous permettre de sélectionner et de lancer les différents programmes. En outre, il vous permettra d'effacer une partition si vous le désirez en éliminant tous les fichiers qui auront pu être générés sur la disquette sous ce nom. La sélection se fait au Joystick (Haut/Bas) et le fait de cliquer (Feu) sur la sélection lancera le programme désiré.
  • Le programme CHAINEUR.BAS va récupérer le fichier créé par TRANSCR.BAS ayant comme extension «.TRA» et va enchaîner les mesures dans l'ordre que vous lui Indiquerez pour créer un fichier final ayant pour extension «.BIN» Interprétable par le programme d'exécution du morceau. Il est à noter que toute correction ou modification ultérieure de mesure sur un morceau entraînera obligatoirement une nouvelle opération de chaînage pour répercuter la cor-ection au niveau du fichier final, .'exécution de ce programme mouvant être très longue, ne vous mpatlentez pas, laissez l'ordinateur fravalller.
  • Le programme EXECUT.BAS récupère le fichier chaîné et traduit, charge le programme de gestion d'Interface en langage machine et ance l'exécution du morceau soit manuellement selon les paramètres que vous lui entrerez, soit automatiquement à partir d'un fichier de réglages. Il est en effet possible avec -e programme d'enregistrer les paramètres affectés à une partition et de tancer l'exécution de celle-ci automatiquement avec les bons paramètres de Tempo, affectations de canal MIDI pour les canaux programmés.
  • Le programme CHARGEUR.BAS est e programme de chargement du programme en langage machine. Il :harge les codes opération en mémoire et génère un fichier EXE.BIN. Une fois que vous serez sûrs que le programme EXE.BIN tourne correctement, vous pourrez effacer le programme CHARGEUR.BAS qui ne sera plus d'aucune utilité.

EXE.BIN est le programme de gestion de l'Interface, c'est lui qui gère l'Interface en onction des notes à restituer, des canaux MIDI, des durées, du tempo, l'utilisation du langage machine c'est avéré Indispensable vu les vitesses de transmission, le nombre d'opérations à effectuer, le peu de temps disponible si l'on voulait accéder à un tempo de 170 maximum (1/24ilème de noire toutes les 15 millisecondes).

La principale difficulté dans ce programme provenait du fait que la boucle principale de comptage devait durer 15 millisecondes très précisément, quels que soient les branchements conditionnels (sans quoi le tempo n'aurait pas été constant mais aurait été fonction du nombre de notes jouées). Chaque note ON ou note OFF envoyée retardant l'exécution du programme de 1078 microsecondes. Il a fallu compter le nombre de branchements vers une note ON ou OFF à chaque boucle et diminuer la temporisation de fin de boucle (temporisation définissant le tempo du morceau) d'autant de fols 1078 microsecondes qu'il y avait eu de branchements, Le nombre de compensations maximum étant de 13 par 1/24ième de noire. Il a fallu en plus mémoriser le nombre de compensations n'ayant pu être faites tors d'un cycle pour qu'elles le soient au cycle suivant de façon à obtenir une vitesse d'exécution du morceau très précise.

Il y a Ici une petite particularité à signaler en ce qui concerne l'Instruction machine OUT(C),r. Pour l'utilisation de l'adressage de port, le Z80 fournit le groupe très puissant des instructions IN et OUT. SI on regarde plus attentivement les Instructions de ce groupe, on trouve dans les Instructions IN(C),r et OUT(C),r une possibilité d'adresser plus que les 256 ports prévus. En effet, dans ces Instructions, l'état des 8 Bits d'adresse Inférieurs est déterminé par le contenu du registre C mais le contenu du registre B est en outre placé dans les Bits d'adresse A8 à A15. Ce sont ainsi 65536 adresses de ports qui sont disponibles et adressables. Donc pour envoyer en langage machine le code &90 à notre Interface, il faudra faire :

LD BC,&FAF0
LD A ,&90
OUT (C)A

* Maintemant parlons du programme principal : TRANSCR.BAS. Il vous permettra:

1) De commencer à transcrire une partition. Là, il vous faudra entrer le nom du morceau, le nombre de canaux et le nombre de temps par mesure. Comprenons bien Ici que le nombre de canaux correspond au nombre maximum de notes qu'il faudra Jouer à un moment de la partition. Par exemple, une partition de piano Jouant à la main droite des accords de 3 notes maxinum par moments et à la main gauche des accords de 4 notes maximum devra être codée sur 7 canaux avec comme contrainte de remplir de silences les canaux où rien ne se passe (une fonction de remplissage rapide d'une mesure avec du silence existe permettant de perdre le moins de temps possible lors de la transcription de ces canaux de vide).
Ensuite tout se fera au Joystick : il vous restera à entrer chaque mesure sur chaque canal avec possibilité de ne stopper la transcription que lorsque vous êtes sur le dernier canal (pour pouvoir sortir. Il faut que la mesure soit complète sur tous les canaux).

La première chose qui vous sera demandée est la clé dans laquelle vous écrivez le canal : faites Gauche ou Droite pour passer de clé de SOL à clé de FA et cliquez pour valider le choix. La clé sera mémorisée de telle façon qu'à la mesure suivante vous n'aurez pas à la repositionner : il vous suffira de cliquer. Si par contre vous faites Haut et que vous cliquez, la mesure sera rempile avec du silence et vous passerez au canal suivant (fonction de remplissage rapide d'une mesure avec du silence évoquée plus haut). Une fonction de raccourcissement de mesure est également disponible Ici. Il est parfois utile, lorsque l'on transcrit des mesures sur 4 temps, de pouvoir en transcrire une sur 2 temps seulement par exemple, d'où cette fonction. Il suffira de faire «Bas» au Joystick pour arrêter la transcription de la mesure à l'endroit où on le désire (Il est conseillé de stopper tous les autres canaux associés à cette mesure au même endroit sinon gare au plantage monstrueux...).

Ensuite vous seront demandées les altérations à la clé : en faisant Gauche/Droite vous ferez défiler les altérations possibles. De la même façon que précédemment, le fait de cliquer sur une altération la mettra en mémoire pour le canal et vous ne serez pas obligé de repositionner les altérations à la mesure suivante.

Ensuite vous sélectionnerez toujours avec Gauche/Droite si vous souhaitez transcrire une note, un silence ou une liaison avec la note précédente. Si vous sélectionnez silence ou liaison, vous sauterez la rubrique suivante qui consiste à donner la dérogation (dans le cas d'une liaison la note sera calculée automatiquement à partir de la dernière note enregistrée sur le canal). SI vous avez choisi «note», un point représentant celle-ci apparaîtra sur la mlnl portée à droite de l'écran. Vous n'aurez qu'à le positionner à l'aide du Joystick (Haut/Bas) à la même place que vous voyez la note sur la portée de la partition que vous avez à transcrire et cliquer.

Ensuite vous sera demandée la dérogation aux altérations, ce qui vous permettra de Jouer les notes bémols, dièses ou bécares. Le môme principe de sélection est appliqué : Gauche/Droite et cliquage.
Vous sélectionnerez ensuite la durée de la note (Gauche/Droite, cliquage).
Puis vous Indiquerez s'il y a une rallonge à la durée de la note (pointée, double pointée). A partir de ce moment-là, le logiciel calcule la note en fonction de la clé, des altérations, des dérogations et l'affiche sur la portée. Une chose Importante est à signaler : si vous cliquez et que rien ne se passe c'est que vous n'avez pas la possibilité de le faire (liaison supérieure à 10 temps, durée trop longue entraîhant un débordement de la mesure. Impossibilité de pointer une triple croche, etc..,). Le temps restant (en 1/ 24lème de noire) est Inscrit sur le dernier temps de la mesure sous la portée. D'autre part, sous chaque valeur de note est Inscrite la durée qu'elle occupera dans la mesure. Vous pourrez ainsi voir à tout moment ce que vous pouvez mettre comme valeur de note pour terminer une mesure.

Le choix de valider ou annuler ne vous sera offert qu'en fin de mesure et affectera toute la mesure.

2) Vous pouvez arrêter une transcription et la reprendre ultérieurement sans problème. Tous les paramètres de liaison, de clé seront sauvegardés automatiquement (seules les altérations seront à repositionner en début de reprise de transcription). Vous pourrez donc sans aucun problème reprendre une transcription par une liaison avec la mesure précédente (si le logiciel refuse la liaison c'est qu'elle sera supérieure à 10 temps. En effet la somme de la durée de la dernière liaison est mémorisée en fin de transcription donc si vous avez déjà fait de la liaison de liaison et que vous reprenez par une liaison portant la durée totale à plus de 10 temps. Il y aura refus).

3) Le troisième choix proposé est la correction/visualisation de la partition transcrite auparavant. On entre le nom de la partition puis le numéro de la mesure à laquelle on veut commencer et il n'y a plus qu'à cliquer sur les options proposées.

4) On peut dans les choix suivants commencer ou continuer à ajouter un canal. On pourra ainsi compléter l'écriture d'une partition en ajoutant des canaux un à un si tant est qu'il en reste de libres évidemment.
Cette option vous obligera à renommer la partition.

5) Dernier choix possible : l'annulation pure et simple d'un canal. Ce choix se passe de commentaires.
En ce qui concerne le programme Basic, rien de spécial n'est à signaler à part peut-ôtre les maintenant célôbrlsslmes CALL &BB9C et CALL &BB03 que vous connaissez tous et qui sont évidemment le passage en Inversion vidéo et le vidage de ta mémoire tampon du clavier (très utile avant les INPUT).

CONCLUSION :

Il ne me reste plus maintenant qu'à vous souhaiter beaucoup de courage. Vous pouvez d'ores et déjà ressortir le clavier et la partition poussiéreuse que le Père Noôl vous a apportés rien que pour vous ennerver il y a quelques mois. Vous allez devenir un DIEU de la M.A.O (Musique Assistée par Ordinateur).




QUELQUES POINTS DE REPERE :

Bus d'extension : localisation des signaux utiles à l'extension, (le bus d'extension est vu de l'extérieur)

A15=3 A11=7 A7=11 D0=26 D4=22
A14=4 A10=8 A6=12 Dl=25 D5=21
A13=5 A9 =9 A5=13 D2=24 D6=20
A12=6 A8 =10 A4=14 D3=23 D7=19

Connecteur mâle arrivant sur l'extension (câble en provenance du bus d'extension)

(vue côté soudures)

Rappels de brochage des composants polarisés :

LED : la plus grosse partie visible par transparence de la LED représente le - de la diode LED

Condensateurs :

Circuits Intégrés : repéré soit par une encoche, soit par un point

Régulateur de tension :

Pour fabriquer un cordon MIDI :

Relier les 2 prises mâles DIN 5 broches à 180° comme Indiqué ci-contre.
(vue côté soudures)

★ EDITEUR: CPC Infos
★ ANNÉE: 1991
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: ???
★ AUTEUR: Thierry Mangion
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Interface  MIDI    (CPC  Infos)    LISTING    FRENCHDATE: 2021-04-20
DL: 346
TYPE: PDF
SiZE: 4766Ko
NOTE: 12 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Hardware » MIDI Projects
» Hardware » Audio - Dhcp Midi Interface (Amstrad Computer User)
» Hardware » Audio - Interface Midi Interface - Dx7 Software (Amstrad Action)
» Hardware » Le soleil de Midi (L'Ordinateur Individuel)
» Hardware » Audio - Midi Track Sequencer
» Hardware » Audio - Cheetah Mk5 Midi Keyboard (Amstrad Computer User)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 215 millisecondes et consultée 5664 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.