Nejen psát na obrazovku umožňuje Pascal. Také umí vyluzovat zvuky. K tomu slouží procedury v unitě CRT. (To znamená, že na začátku programu musí být uvedeno Uses CRT.)
Sound( freq );
Spustí zvuk o frekvenci freq Hz (0..65535)
Nosound;
Ukončí zvuk.
Delay( čas );
Čeká čas milisekund. Delay(1000) čeká jednu sekundu.
Typická ukázka „pípnutí" vypadá asi takto:
Sound(1000);
Delay(500);
Nosound;
Pokud následují tóny po sobě, není třeba je oddělovat příkazem NoSound:
Sound(500);
Delay(250);
Sound(740);
Delay(250);
Sound(1000);
Delay(250);
Nosound;
Připomínám pouze, že člověk běžně slyší frekvence 20Hz..16kHz. Frekvence nad 20 kHz uslyší možná váš pes a nad 40 kHz leda prolétávající netopýr.
Oblíbeným efektem jest siréna — mění se frekvence zvuku v rozsahu 500..5000 Hz.
For i:= 500 to 5000 do Begin
Sound( i );
Delay( 10 );
End;
NoSound;
Pokud následuje cyklus
Program, hrající jednoduchou melodii.
Program Hudba; { Hraje tóny } Uses Crt; Const Cela = 500; Tab: Array[1..12] of Word = ( 262, 277, 294, 311, 330, 349, 369, 392, 415, 440, 466, 494 ); Procedure Beep( Fr, T: Word ); { Pípne } Begin Sound( Fr ); Delay( T ); Nosound; End; Procedure Hraj( Nota: Char; Delka, Oktava: Byte ); Var { Hraje tón} Nasob: Word; i : Integer; Nt : Byte; Begin Case Nota of { Převod znaku na index } 'c': Nt:= 1; 'C': Nt:= 2; 'd': Nt:= 3; 'D': Nt:= 4; 'e': Nt:= 5; 'f': Nt:= 6; 'F': Nt:= 7; 'g': Nt:= 8; 'G': Nt:= 9; 'a': Nt:= 10; 'A': Nt:= 11; 'h': Nt:= 12; else Nt:= 0; end; Nasob:= 1; For i:=1 to Oktava do Nasob:= Nasob*2; If Nt=0 then Begin Nosound; Delay( Cela div Delka ); end else Beep( Tab[ Nt ]*Nasob, Cela div Delka ); End; Begin Hraj( 'g', 2, 1 ); Hraj( 'g', 2, 1 ); Hraj( 'g', 2, 1 ); Hraj( 'D', 1, 1 ); Hraj( ' ', 1, 1 ); Hraj( 'f', 2, 1 ); Hraj( 'f', 2, 1 ); Hraj( 'f', 2, 1 ); Hraj( 'd', 1, 1 ); Nosound; End.
označení oktáv neodpovídá oktávám tak, jak jsou obecně užívány (protože programování není muzika :-)
0 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
c | 262 | 523 | 1047 | 2093 | 4186 | 8372 |
c# | 277 | 554 | 1109 | 2217 | 4435 | 8870 |
d | 294 | 587 | 1175 | 2349 | 4699 | 9397 |
d# | 311 | 622 | 1245 | 2489 | 4978 | 9956 |
e | 330 | 659 | 1319 | 2637 | 5274 | 10548 |
f | 349 | 699 | 1397 | 2794 | 5588 | 11175 |
f# | 369 | 740 | 1480 | 2960 | 5920 | 11840 |
g | 392 | 784 | 1568 | 3136 | 6272 | 12544 |
g# | 415 | 831 | 1661 | 3322 | 6645 | 13290 |
a | 440 | 880 | 1760 | 3520 | 7040 | 14080 |
a# | 466 | 932 | 1865 | 3729 | 7459 | 14917 |
h | 494 | 988 | 1976 | 3951 | 7902 | 15804 |
|
|