APPLICATIONSCREATION MUSICAL ★ DIGISON: LA PARTIE LOGICIELLE (LE SOFT...) ★

Digison (CPC Revue)Digison (CPC Revue)

Cette partie est Indispensable, et il vous faudra bien la comprendre si vous voulez pouvoir modifier les programmes et les routines à votre guise.

1. LE BASIC

Il y a en tout 6 programmes qu'il vous faudra taper :

  • "DIGISON.BAS" : Permet la numérisation, l'écoute et, bien sûr, la sauvegarde de sons à partir de l'appareil du môme nom.
  • "DIGI.BAS" : Crée le flcNer "DIGI.BIN" (correspondant au LISTING assembleur DIGI) utilisé par "DIGISON.BAS".
  • "MODISON.BAS" : Permet la visualisation du son sous forme d'une courbe et sa modification. Vous pouvez aussi utiliser ce programme pour créer vos propres sons.
  • "MODI.BAS" : Crée le fichier "MODI.BIN" (correspondant au LISTING assembleur MODI) utilisé par "MODISON.BAS".
  • "ASS-DEC.BAS" : Permet de scinder un fichier en deux et de réunir deux fichiers en un seul (les fichiers doivent être de type binaire, et II faut connaître leur taille).
  • "RELOGE.BAS" : Permet de reloger la routine de restitution du son.

Pour commencer : Tapez DIGISON et MODISON puis sauvez-les.

Tapez ensuite DIGI et MODI, sauvez-les et lancez-les. Ils vont créer deux fichiers : "DIGI.BIN' et mMODI.BIN Enfin, tapez RELOGE et ASS-DEC qui vous serviront plus tard.

Description des 2 principaux programmes :

— DIGISON : Il charge d'abord "DIGI.BIN" en &A000(= 40960), puis affiche son menu. Vous avez alors le choix entre NUMERISER SON, ECOUTER SON et SAUVER SON.

Pour la commande NUMERISER SON, vous avez à choisir entre deux paramètres : le TEMPS et la TAILLE mémoire. Pour vous aider, sachez que : 1 seconde = 1429 octets (le maximum est de 22 secondes)

10000 octets = 7 secondes (le maximum est de 32760 octets) Le programme DIGISON mettra en marche automatiquement le moteur du lecteur de cassette à chaque utilisation de la commande NUMERISER SON et le coupera à la fin. Aussi, si vous utilisez le boîtier DIGISON modifiez la ligne 100 comme suit : 100 GOSUB 160 : CALL &A070, &2000, T : RETURN

De môme, à chaque appel de la commande SAUVER SON, Il vous sera demandé la vitesse de sauvegarde. Aussi, si vous voulez sauvegarder sur disquette, modifiez la ligne 140 comme suit :

140 LOCATE 32, 1 : PRINT"** SAUVER SON **": CALL &BB03

— MODISON : Il charge d'abord "MODI.BIN" en &A000 (=40960), puis vous demande si vous voulez charger un fichier.

Dans ce cas, pensez à Insérer la disquette contenant le fichier avant de valider votre réponse. Le catalogue de cette disquette apparaîtra (sur cassette appuyez 2 fols sur (ESC) pour l'arrôler) et le programme vous demandera le nom du fichier à charger. Après avoir ou non chargé un fichier vous devez Indiquer combien d'octets vous voulez pouvoir visualiser en même temps (vous avez le choix entre 2,6, 12 et 20). Ensuite, M faut entrer l'adresse de début de visualisation (les valeurs entre crochets sont les valeurs par défaut).

Sur votre écran s'affiche alors un graphique représentant l'état de chaque bit des octets 01 y en a 2,6,12 ou 20) à partir de l'adresse que vous avez Indiquée auparavant (le bit le plus à gauche d'un octet est le bit 7, et le bit le plus à droite le bit 0). Vous vous trouvez alors dans le MODE OCTET, et vous avez les commandes suivantes à votre disposition :

  • FLECHE GAUCHE : Déplacement à gauche de 2,6,12 ou 20 octets.
  • FLECHE DROITE : Idem vers la droite.
  • SHIFT + FLECHE GAUCHE : Déplacement à gauche de 20,60,120 ou 200 octets.
  • SHIFT + FLECHE DROITE : Idem vers la droite.
  • ENTER : Retour au début du programme (charger un fichier ?).
  • COPY : Passage en MODE BIT.
  • A : Changement de l'adresse de début de visualisation.
  • S : Sauvegarde d'une partie de la mémoire.
  • E : Restitution sous forme de son d'une partie de la mémoire.
  • C : Copie une partie de la mémoire vers un autre emplacement. Il faut spécifier l'adresse et le numéro du bit de l'octet de départ et de l'octet de fln, puis l'adresse de destination. Si l'adresse de départ et de fin sont Identiques, le bit de fin ne sera pas pris en compte (l'octet sera copié du bit de départ Jusqu'au bit 0).
    En appuyant sur COPY vous passez en MODE BIT, et vous avez alors les commandes suivantes :
  • FLECHE GAUCHE : Déplacement à gauche d'un bit (un petit trait vous permet de savoir sous quel bit vous vous trouvez).
  • FLECHE DROITE : kjem vers la droite.)
  • SHIFT + FLECHE GAUCHE : Déplacement à gauche de 8 bits.
  • SHIFT + FLECHE DROITE : Idem vers la droite.
  • ESPACE : Retour en MODE OCTET.
  • B : Inverse la valeur du bit (0 devient 1 et vice versa).
  • D : Décale le contenu de la mémoire d'un bit vers la droite. (Vous devez préciser à quelle adresse doit s'arrêter le décalage).
  • G : Idem vers la gauche.

Cliquez sur l'image pour l'agrandir

Pour réutiliser les sons numérisés dans vos programmes :

Il faut d'abord récupérer la routine ESON, pour cela tapez : MEMORY &9FFF: LOAD "DIGI.BIN", &A000 : SAVE "ESON.BIN", B, &A000, &6D Vous pouvez si vous le voulez utiliser un autre nom que "ESON.BIN". Pour réutiliser vos sons numérisés, placez au début de votre programme :

MEMORY adresse-1 : LOAD "fichier son", adresse : LOAD "ESON.BIN", &A000

Ensuite, placez à l'endroit approprié de votre programme l'appel de la routine : CALL &A000, adresse, longueur. SI vous désirez placer la routine ESON à une autre adresse que &A000, utilisez "RELOGE.BAS" : Pour cela placez la disquette contenant la routine dans le lecteur, entrez son nom (si ce n'est plus "ESON.BIN"), donnez la nouvelle adresse de début, et enfin donnez un nom pour la sauvegarde.

1. LE LANGAGE MACHINE:

Il y a 6 routines :

  • CSON : Numérise le son et le met en mémoire.
  • ESON : Restitue le son à partir des données en mémoire.
  • TC : Trace la courbe représentant les sons.
  • DD : Décale le contenu de la mémoire d'un bit vers la droite.
  • DG : Idem vers la gauche.

CM : Copie une partie de la mémoire vers une autre.

Etudions maintenant les 2 routines les plus Importantes :

  • CSON : Pour numériser le son à partir du microphone, on ne peut pas utiliser les routines du système d'exploitation.

La raison : Il n'y a pas d'en-tête de fichier ou de caractère de synchronisation (c'est la môme chose avec une cassette de musique). La solution : programmer directement le composant qui s'occupe (entre autres) du chargement à partir de la prise magnétophone. Ce composant, c'est l'Interface parallèle 8255. Celle-ci possède 3 ports d'entrée/sortie (I/O) A, B et C respectivement adressés par 8tF400, &F500 et &F600.

Seuls nous Intéresseront Ici les ports B etC:

Voici la signification de chacun des bits de ces 2 ports : (Toutes les Informations sur l'Interface parallèle 8255 et sur le générateur de son AY-3-8912 sont tirées de "LA BIBLE DU PROGRAMMEUR DE L'AMSTRAD CPC' édition MICRO APPLICATION, s'y référer pour plus de détails) : - Le port B (&F500) : Ce port fonctionne en entrée, ce qui veut dire que des données seront lues sur ce port (avec l'Instruction IN). Bit 0 : Etat de Vsync (synchronisation verticale) du CRTC (le contrôleur vidéo).

  • Bits 1 à 3 : Numéro de la société (AMSTRAD, SCHNEIDER...).
  • Bit 4 : Bit à 0 : vidéo en 50 hertz. Bit à 1 : vidéo en 60 hertz.
  • Bit 5 : Etat du signal EXP du connecteur d'extension.
  • Bit 6 : Etat de l'Imprimante (1 = occupé.
  • Bit 7 : Données fournies par la prise magnétophone à l'ordinateur (lecture de données).

C'est ce bit 7 qui est Intéressant, car Il permet de lire les bits envoyés par le boîtier DIGISON. CSON Ht la valeur du port B et la place dans le registre H avec l'Instruction IN (C), H. Il décale ensuite le bit 7 de H dans le CARRY avec l'Instruction RLC H. Après, l'Instruction RLA effectue une rotation du registre A vers la gauche à travers le report (ou CARRY) : CARRY -> bit 0 bit 1 ... -> bit 7 CARRY

On répète cette opération 8 fols pour remplir le registre A, puis on le sauve en mémoire et on recommence avec 8 autres bits. - Le port C (8cF600) : Ce port fonctionne en sortie, ce qui signifie que des données seront écrites sur ce port (avec l'Instruction OUT). Bits 0-3 : Numéro de la matrice du clavier à sélectionner. Bit 4 : Commande le lecteur du magnétophone : 0 = arrêt, 1 = marche. Bit 5•: Données envoyées par l'ordinateur vers la prise magnétophone (écriture de données). Bits 6 à 7 : Reliés aux connexions BC1 et BDIR du générateur de son. Ici, c'est le bit 4 qui est Intéressant, car II permet de mettre en marche le moteur du magnétophone môme sous BASIC (voir la description du programme DIGISON).

Armé de ces Informations, la compréhension de la routine vous sera sans doute plus facile, Il ne vous reste plus qu'à vous reporter au listing assembleur MODI.

  • ESON : Comme pour la routine CSON, il n' est pas possible d ' utiliser les routines du système d'exploitation, simplement pour une question de vitesse. Il va donc falloir programmer le générateur de son AY-3-8912. Le générateur de son se programme par le port A et par les bits 6 et 7 du port C de l'Interface parallèle 8255. Les bits 6 et 7 servent à choisir la fonction du PSG (bit 7 = BDIR bit 6 = BC1 ) : BDIR BC1 Fontion du PSG 0 0 INACTIF, le PSG attend des instructions
    • 0 1 READ, lecture de données dans les registres
    • 1 0 WRITE, écriture de données dans les registres
    • 1 1 LATCH, écriture du numéro de registre souhaité Pour les fonctions WRITE et LATCH l'écriture de valeurs se fait à travers le port A du 8255 (&F400), celui-ci devant être programmé en sortie (on utilise l'Instruction assembleur OUT) alors que pour ia fonction READ, Il doit ôtre programmé en entrée (on utilise l'instruction assembleur IN). Voici maintenant la description des 14 registres utiles (lis ne sont pas tous utilisés par ESON). , Registre Description
    • 0 et 1 Période du son sur le canal A. Influence fine avec le registre 0 et grossière avec les 4 bits Inférieurs du registre 1
    • 2 et 3 Idem, mais pour le canal B
    • 4 et 5 Idem, mais pour le canal C
      6 Influence le générateur de bruit avec les bits 0 à 4
    • 7 Bit 0 = son sur canal A (0 = mls/1 = coupé)
    • Bit 1 = Idem sur canal B / Bit 2 = Idem sur canal C
    • Bit 3 = bruit du canal A (0 = mls/1 = coupé)
    • Bit 4 = Idem sur canal B / Bit
    • 5 = Idem sur canal C
    • Bit 6 = port A du 8255 (0 = en entrée/1 = en sortie) Bit 7 = Inutilisé
    • 8 si bit 4=1 alors le volume du canal A est déterminé par le registre de courbe d'enveloppe
    • SI bit 4=0 alors II est déterminé par les bits 0 à 3
    • 9 Idem pour canal B
    • 10 Idem pour canal C
    • 11 et 12 Période de la courbe d'enveloppe :
    • registre 11 = octet faible/ registre 12 = octet fort 13 Bit 0 à 3 = forme de la courbe d'enveloppe (cf. mLA BIBLE*) La routine ESON commence par mettre à 0 la période et le volume sur tous les canaux, puis rend les canaux B et C inactifs (ni sons, ni bruits) et ne laisse que le son sur le canal A. Ensuite, elle teste chaque bit et fixe le volume. Pour tester chaque bit, la routine utilise l'Instruction assembleur RLC (HL) qui effectue une rotation à gauche, sans le report, de la valeur contenue à l'adresse HL (HL étant l'adresse de début des sons numérisés) : bit 0 bit 1 ... -> bit 7 bit 0 CARRY

Après chaque utilisation de cette Instruction Ja valeur du bit à tester se trouve dans le CARRY, Il ne reste plus alors qu'à tester le CARRY et à fixer le volume en conséquence (CARRY à 0 = volume à 0/CARRY à 1 = volume à 12).

En recommençant cette opération 8 fols, l'octet est entièrement testé et on peut passer au suivant. N.B : La rotation modifie l'octet, et bien que les 8 rotations ramènent l'octet à son état Initial, Il est fortement déconseillé d'utiliser la routine sur la partie de la mémoire (8cBFxx) correspondant à la plie (SP), cellecl étant utilisée par la routine.

CPC

★ EDITEUR: CPC Revue
★ ANNÉE: 1988
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEURS:: David PAVEN & Christophe PAVEN
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Digison    FRENCHDATE: 2013-07-21
DL: 292
TYPE: ZIP
SiZE: 13Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » Music-Pro
» Applications » Claquettes (AM-Mag)
» Applications » Tabulations Composer
» Applications » Guitar Companion (Computing With the Amstrad)
» Applications » CPC Music (Tilt)
» Applications » Envelimp: Imprime Enveloppe
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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 261 millisecondes et consultée 1803 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.