Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Référence de commandes et fonctions
Concept de programmation de base
Les décisions
Faire des boucles
Les sous-programmes
Lecture de données
Les expressions
Les chaînes de caractères
Les fonctions
Fonctions mathématiques
Les nombres aléatoires
Les tableaux
Les conditions
L'ensemble de caractères
Les effets sonores
Entreposage sur bande magnétique
Les imprimantes ZX
Les autres équipements
Rapport (Référence des codes d'erreur)
Préface
Notes légal
Dictionnaire
Recherche

Les effets sonores

Si vous n'avez pas encore découvert que le ZX Spectrum est équipé d'un haut-parleur intégré, vous devriez lire le livret d'introduction avant de continuer. Le haut-parleur est émis à l'aide de l'instruction BEEP :

BEEP duration, pitch

où, comme d'habitude, "duration" et "pitch" représentent des expressions numériques. La duration indique la durée en secondes et le pitch est la hauteur en demi-tons au-dessus du do médian - en utilisant des nombres négatifs pour les notes en dessous du do médian.

Voici un diagramme pour montrer les valeurs de hauteur de toutes les notes d'une octave au piano :

Pour obtenir des notes plus hautes ou plus basses, vous devez ajouter ou soustraire 12 pour chaque octave que vous montez ou descendez.

Si vous avez un piano devant vous lorsque vous programmez un morceau, ce diagramme sera probablement tout ce dont vous aurez besoin pour déterminer les valeurs de hauteur. Si, toutefois, vous transcrivez directement à partir d'une musique écrite, nous vous suggérons de dessiner un diagramme de la portée avec la valeur de hauteur écrite contre chaque ligne et espace, en tenant compte de la tonalité.

Par exemple, tapez :

  1. 10 PRINT "Frere Gustave"
  2. 20 BEEP 1,0: BEEP 1,2: BEEP.5,3: BEEP .5,2: BEEP 1,0
  3. 30 BEEP 1,0: BEEP 1,2: BEEP .5,3: BEEP .5,2: BEEP 1,0
  4. 40 BEEP 1,3: BEEP 1,5: BEEP 2,7
  5. 50 BEEP 1,3: BEEP 1,5: BEEP 2,7
  6. 50 BEEP .75,7: BEEP .25,8: BEEP .5,7: BEEP .5,5: BEEP .5,3:BEEP .5,2: BEEP 1.0
  7. 70 BEEP .75,7: BEEP .25,8: BEEP .5,7: BEEP .5,5: BEEP .5,3:BEEP .5,2: BEEP 1,0
  8. 80 BEEP 1,0  BEEP 1,-5: BEEP 2,0
  9. 90 BEEP 1,0: BEEP 1,-5: BEEP 2,0

Lorsque vous exécutez ceci, vous devriez obtenir la marche funèbre de la première symphonie de Mahler, le morceau où les gobelins enterrent l'homme de la cavalerie américaine. Supposons par exemple que votre air soit écrit dans la tonalité de do mineur, comme le Mahler ci-dessus. Le début ressemble à ceci :

et vous pouvez écrire les valeurs de hauteur des notes comme ceci :

Nous avons ajouté deux lignes comptables, juste pour faire bonne mesure. Notez comment le mi bémol dans l'armure affecte non seulement le mi dans l'espace supérieur, l'aplatissant de 16 à 15, mais aussi le mi sur la ligne du bas, l'aplatissant de 4 à 3. Il devrait maintenant être assez facile à trouver la valeur de hauteur de n'importe quelle note sur la portée.

Si vous voulez changer la tonalité du morceau, le mieux est de mettre en place une tonalité variable et d'insérer tonalité+ avant chaque valeur de hauteur : ainsi la deuxième ligne devient :

  1. 20 BEEP 1,key+0: BEEP 1,key+2: BEEP .5,key+3: BEEP .5,key+2: BEEP 1,key+0

Avant d'exécuter un programme, vous devez attribuer à la clef la valeur appropriée - 0 pour le do mineur, 2 pour le ré mineur, 12 pour le do mineur une octave vers le haut,... Vous pouvez accorder l'ordinateur avec un autre instrument en ajustant la tonalité en utilisant des valeurs fractionnaires.

Vous devez également déterminer la durée de toutes les notes. Comme il s'agit d'un morceau assez lent, nous avons prévu une seconde pour une noire et basé le reste sur cela, une demi-seconde pour une croche et ainsi de suite.

Il est plus flexible de configurer une noire variable pour stocker la longueur d'une noire et de spécifier les durées en fonction de celle-ci. La ligne 20 deviendrait alors :

  1. 20 BEEP crotchet,key+0: BEEP crotchet,key+2: BEEP crotchet/2,key+3: BEEP crotchet/2,key+2: BEEP crotchet,key+0

Vous voudrez probablement donner des noms plus courts aux noires et aux touches.)

En donnant des valeurs appropriées à la noire, vous pouvez facilement faire varier la vitesse de la pièce.

Rappelez-vous que parce qu'il n'y a qu'un seul haut-parleur dans l'ordinateur, vous ne pouvez jouer qu'une seule note à la fois, vous êtes donc limité aux morceaux non harmonisés. Si vous en voulez plus, vous devez le chanter vous-même.

Essayez de programmer des morceaux pour vous-même - commencez par des morceaux assez simples comme "Trois souris aveugles". Si vous n'avez ni piano ni musique écrite, procurez-vous un instrument très simple comme une flûte à bec ou une flûte à bec, et travaillez les airs dessus. Vous pouvez faire un tableau montrant la valeur de hauteur pour chaque note que vous pouvez jouer sur cet instrument.

Taper :

  1. FOR n=0 TO 1000: BEEP .5,n: NEXT n

Cela jouera des notes aussi hautes que possible, puis arrêtera avec le rapport d'erreur B integer out of range. Vous pouvez afficher n pour savoir à quelle hauteur il a réellement atteint.

Essayez la même chose, mais en descendant dans les notes graves. Les notes les plus basses ressembleront à des clics ; en fait les notes les plus hautes sont aussi faites de claquements de la même manière, mais plus rapides, de sorte que l'oreille ne peut pas les distinguer.

Seules les notes moyennes sont vraiment bonnes pour la musique ; les notes basses sonnent trop comme des clics, et les notes hautes sont fines et ont tendance à gazouiller un peu.

Tapez dans cette ligne de programme :

  1. 10 BEEP .5,0: BEEP .5,2: BEEP .5,4: BEEP.5,5: BEEP .5,7: BEEP .5,9: BEEP .5,11: BEEP .5,12: STOP

Cela joue la gamme de do majeur, utilisant toutes les notes blanches du piano, du do médian au do suivant. La façon dont cette gamme est accordée est exactement la même que sur un piano, et s'appelle un accord tempéré parce que l'intervalle de hauteur d'un demi-ton est le même tout au long de la gamme. Un violoniste, cependant, jouerait la gamme très légèrement différemment, ajustant toutes les notes pour les rendre plus agréables à l'oreille. Il peut le faire simplement en déplaçant ses doigts très légèrement vers le haut ou vers le bas de la corde d'une manière qu'un pianiste ne peut pas.

La gamme naturelle, étant celle que joue le violoniste, se présente comme suit :

  1. 20 BEEP .5,0: BEEP .5,2.039: BEEP .5,3.99: BEEP .5,4.99: BEEP .5,7.92: BEEP .5,9.94: BEEP .5,10.99: BEEP .5,12: STOP

Vous pouvez ou non être en mesure de détecter une différence entre ces deux ; certaines personnes le peuvent. La première différence notable est que la troisième note est légèrement plus plate dans la gamme au tempérament naturel. Si vous êtes un vrai perfectionniste, vous aimeriez peut-être programmer vos airs pour utiliser cette gamme naturelle au lieu de celle au tempérament égal. L'inconvénient est que bien que cela fonctionne parfaitement dans la tonalité de C, dans d'autres tonalités cela fonctionne moins bien - ils ont tous leurs propres gammes naturelles - et dans certaines tonalités cela fonctionne vraiment très mal. L'échelle tempérée n'est que légèrement décalée et fonctionne aussi bien dans toutes les tonalités.

C'est moins un problème sur l'ordinateur, bien sûr, car vous pouvez utiliser l'astuce consistant à ajouter une clef variable.

Certaines musiques - notamment la musique indienne - utilisent des intervalles de hauteur inférieurs à un demi-ton. Vous pouvez les programmer dans l'instruction BEEP sans aucun problème ; par exemple, le quart de ton au-dessus du do médian a une valeur de hauteur de 0,5.

Vous pouvez faire biper le clavier au lieu de cliquer en tapant :

  1. POKE 23609,255

Le deuxième nombre détermine la longueur du bip (essayez différentes valeurs entre 0 et 255). Lorsqu'il est à 0, le bip est si court qu'il ressemble à un léger clic.

Si vous êtes intéressé à faire plus avec le son du ZX Spectrum, comme entendre le son que BEEP fait sur quelque chose d'autre que le haut-parleur interne, vous constaterez que le signal est présent à la fois sur les prises "MIC" et "EAR". Ce sera à un niveau supérieur sur la prise 'EAR', mais sinon ce sont les mêmes. Vous pouvez l'utiliser pour connecter un écouteur ou une paire d'écouteurs à votre ZX Spectrum. Cela ne coupera pas le haut-parleur interne. Si vous êtes vraiment désireux de faire beaucoup de bruit, vous pouvez le connecter à un amplificateur - la prise 'MIC' donnera probablement le bon niveau - ou vous pouvez enregistrer le son sur bande et faire jouer le ZX Spectrum avec lui-même.

Vous n'endommagerez pas le ZX Spectrum même si vous court-circuitez les prises 'MIC' ou 'EAR', alors expérimentez pour trouver celle qui donne la meilleure sortie pour ce que vous voulez faire.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mercredi, le 19 avril 2023