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.

 

ON-LINE scripts!

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