Ver. 1.0 Beta, Don't have a compiler? Now you can write simple scripts ONLINE! This is a basic version -does not include all the Pascal statements. Only to learn basics

Pascal

Muzyka z PC Speaker'a

Przykład demonstruje odtwarzanie gamy dźwięków za pomocą pascal'a.


Tworzenie Gamy dźwięków, częstotliwości nut


W dużym przybliżeniu: C = 538Hz, D=615Hz, (nagrałem widmo dźwięku C granego na flecie i zbadałem częstotliwość najgłośniejszego tonu) E = D * D / C, F = E * D / C itd..


Każdy dźwięk gamy ma własną częstotliwość, następny jest po prostu kolejnym elementem ciągu geometrycznego. Ten sam dźwięk wyższej oktawy ma dokładnie dwukrotnie wyższą częstotliwość. Dźwięków w oktawie jest 8. Jest 8 dźwięków granych normalnie, są też bemole i krzyżyki. Każdy kolejny dźwięk jest wyższy częstotliwością od poprzedniego o około 71/65. Taki pomiar można uzyskać mierząc 2 sąsiednie progi gitary. Ich stosunek da nam różnicę wysokości tonów. Za pierwszy dźwięk np. C można przyjąć dowolną częstotliwość (tak jakby przestroić gitarę), ale lepiej przyjąć standardową wartość, ok 538Hz


A teraz w praktyce:




{$N+}
PROGRAM Organki;
USES Crt;
CONST MaxNut=20;
     FirstK1 = 16;
     FirstK2 = 2;
     C       = 538;
     D       = 615;
VAR
 Temp  : Single;
 Temp2 : Single;
 Temp3 : Single;

 Tab:ARRAY [0..MaxNut] OF Word;

PROCEDURE Generate;
VAR i:Integer;
BEGIN
 Temp:=D;
 Temp2:=C;

 FOR i:=0 TO MaxNut DO
 BEGIN
   Temp3:=Temp+(Temp-Temp2)*65/71;
   Temp2:=Temp;Temp:=Temp3;
   Tab[i]:=Round(Temp);
 END;
END;


BEGIN
 Generate;
 REPEAT
   Sound(Tab[PORT[$60]-FirstK1]);
   IF KeyPressed THEN ReadKey;
   IF PORT[$60]>127 THEN NoSound;
 UNTIL PORT[$60]=1;
END.

 

This website uses cookie files in order to provide Google services (advertisements, analitycs) and Facebook. If you want to block using cookies, turn them off in your browser settings. Need a help? Click me