CODINGLISTINGS ★ DESSINEZ VOS SONS ★

Dessinez vos sonsCoding Listings
Les possibilités de création de sons sont nombreuses sur l'Amstrad, mais la détermination des paramètres souvent fastidieuse. Nous vous proposons donc de réaliser un petit programme d'assistance pour leur calcul. Nous ne nous attacherons ici qu'à la commande d'enveloppe, c'est-à-dire à l'évolution du volume du son dans le temps. Il suffira de dessiner la courbe (en réalité, une ligne brisée) de l'amplitude sonore en fonction du temps sur l'écran pour que le programme prenne en charge le calcul de l'ensemble des paramètres lui correspondant.

L'ordre basic utilisé pour faire assimiler ces données par l'ordinateur sera ENV. Bien que celui-ci permette certaines libertés, tous les cas de figure ne sont pas possibles. Au fur et à mesure du tracé de votre enveloppe, le programme donnera donc sur l'écran le gabarit d'enveloppe se rapprochant le plus de celui demandé.

Le résultat sonore obtenu sera fourni en fin de programme. Ce dernier contrôle permettra de vérifier si le résultat obtenu correspond bien à celui souhaité. Passons à présent à l'écriture du programme.

En premier lieu, nous définirons le caractères graphique qui sera utilisé pour afficher le quadrillage de fond sur l'écran durant le tracé de l'enveloppe — lignes 40 et 50 — puis nous effacerons l'écran et la machine sera positionnée en mode 2, de manière à obtenir une surface d'affichage suffisante pour l'inscription des divers commentaires — ligne 60. Vient ensuite l'initialisation des variables ; elle occupe les lignes 100 à 190. AP, AV et AD correspondant respectivement au nombre de pas, au volume de chaque pas et à sa durée pour l'attaque. De même MP, MV et MD concerneront le maintien et FP, FV et FD la décroissance. UP sera utilisée pour interdire le déplacement vertical du curseur durant le tracé de la décroissance.

La grille est alors tracée sur l'écran. La boucle double FOR... NEXT des lignes 230 à 270 encadrant l'instruction PRINT assure cette opération. La durée approximative du son désiré sera demandée par l'ordre INPUT de la ligne 310 et la variable DD prendra une valeur que nous utiliserons ultérieurement en tant qu'échelle de temps. L'ensemble des paramètres ainsi déterminé sera résumé sur le bord de l'écran par les lignes 350 à 420. Le tracé de l'enveloppe peut donc commencer.

Nous commencerons, c'est logique, par l'attaque. Le programme se rendra à la sous-routine 1360. Celle-ci commande les déplacements du curseur sur la grille en fonction des flèches de mouvement tapées. Deux nouvelles variables, HC et VC, seront utilisées. HC correspond à la position horizontale du curseur et VC à la verticale. HC sera donc incrémenté, ou décrémenté, en fonction de la frappe “flèche à droite” ou “flèche à gauche”. La même opération sera pratiquée sur VC mais en fonction, cette fois-ci, de “flèche en haut” ou “flèche en bas”. Nous trouverons ces deux opérations en lignes 1380 et 1390, on notera — en ligne 1390 — la présence de la variable UP inhibant l'effet de la ligne lors du tracé de la décroissance.

De 1400 à 1430 quatre tests seront effectués sur HC et VC afin de vérifier si celles-ci sont bien compatibles avec les possibilités d'affichage du curseur sur notre grille. Enfin si “ENTER” est tapé, touche que nous utiliserons pour valider les coordonnées choisies, le programme sortira de la sous-routine, en cas contraire il rebouclera sur cette dernière afin de permettre d'autres déplacements du curseur.

Le programme reviendra donc sur la détermination de l'attaque. Deux cas sont examinés en fonction des valeurs prises par HC et VC. Ils permettront de déterminer si la pente choisie pour l'attaque est supérieure à 45 degrés ou non. En fonction de cela les valeurs des variables AP, AV et AD seront calculées. Le tracé sera alors effectué par les lignes 550 à 590. Le résultat présenté ne correspond pas obligatoirement exactement à celui choisi : il est l'image du cas possible se rapprochant le plus de vos désirs. Les paramètres correspondants à l'attaque représentée seront résumés par la ligne 630, puis le programme passera à la détermination du maintien.

HCP et VCP seront employées pour mémoriser la position du curseur correspondant à la fin de l'attaque puis la sous-routine 1360 sera de nouveau utilisée pour le déplacer. La durée du maintien ne pouvant être négative, un test sur la nouvelle valeur prise par HC, après déplacement du curseur, sera effectué. Toute proposition impossible sera donc refusée par le programme. Ensuite, là encore en fonction des valeurs prises par HC et VC, divers cas seront étudiés, à savoir si la pente d'évolution choisie est nulle, positive ou négative. Ces trois tests sont effectués des lignes 750 à 770. En fonction des résultats le tracé des points pourra être entrepris selon un procédé proche de celui utilisé pour l'attaque. Les résultats obtenus seront résumés par la ligne .

La position du curseur en fin de maintien sera de nouveau mémorisée en utilisant HCP et VCP, UP prendra la valeur 0 puis la sous-routine 1360 sera engagée. La pente de la décroissance sera étudiée en fonction des valeurs prises par HC et VC par les tests des lignes 1010 et 1020 et le tracé débutera. Les résultats obtenus seront résumés par la ligne 1130.

Le programme pourra donc déterminer l'ordre basic correspondant à l'enveloppe tracée sur l'écran. Il demandera donc, en premier lieu, le numéro choisi pour celle-ci ; l'Amstrad pouvant en mémoriser 16. Dès lors l'instruction sera présentée au bas de l'écran, puis l'ensemble des variables réellement placé dans l'instruction ENV, de manière à vous présenter le résultat sonore obtenu. Le son sera alors émis trois fois —boucle des lignes 1260 à 1290— et le programme en restera là jusqu'à ce que ENTER soit tapé pour un nouvel essai ou une autre enveloppe.

Pour la copie de frappe de ce programme et bien que nous ne l'ayons pas utilisé, il restera possible d'employer le basic abrégé.

Utilisation : après avoir tapé RUN, la grille s'affiche sur l'écran. Puis la phase : “DUREE TOTALE DE LA NOTE EN SECONDES ?” apparaît.

Un nombre supérieur à 0,5 devra être frappé, suivi de ENTER. Un résumé indiquera la durée de chaque division de l'écran ainsi que sa durée totale. Le curseur apparaîtra alors sur la grille et il sera possible de le déplacer à l'aide des flèches. Une fois la position désirée atteinte il suffira d'appuyer sur ENTER pour obtenir le tracé ainsi que les paramètres concernant l'attaque.

Il faudra répéter la même opération pour le maintien et la décroissance pour obtenir le gabarit complet de l'enveloppe.

Notons qu'il n'est pas indispensable d'utiliser l'ensemble de la surface de l'écran, pour pouvoir obtenir une enveloppe : si vous décidez finalement que la durée totale de votre son sera inférieure à celle présentée par l'écran, rien ne vous empêche de faire “finir” le son — par la commande de décroissance — en un point quelconque de l'écran.

Henri-Pierre PENEL , Science&Vie n°825

★ EDITEUR: Science&Vie
★ ANNÉE: 1986
★ AUTEUR: Henri-Pierre PENEL

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Dessinez  vos  sons    (Science  et  Vie)    FRENCHDATE: 2020-04-22
DL: 217
TYPE: ZIP
SiZE: 6Ko
NOTE: Uploaded by CPCLOV ; 40 Cyls
.HFE: Χ

» Dessinez  vos  sons    (Science  et  Vie)    LISTING    FRENCHDATE: 2016-01-10
DL: 253
TYPE: PDF
SiZE: 2543Ko
NOTE: 2 pages/PDFlib v1.6

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

Lien(s):
» Coding Src's » Graphic - Scroll Demo (The Amstrad User)
» Coding Src's » 3D Colour Animation (Your Computer)
» Coding Src's » Graphic - Rasters - CTRC's demo for ACU (Amstrad Computer User)
» Coding Src's » MC-Hinter
» Coding Src's » 3D Plot (Computing with the Amstrad)
» Coding Src's » Netzgrafik (CPC Amstrad International)
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 030 millisecondes et consultée 1542 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.