Dźwięki w Pascalu
Wprowadzenie do teorii dźwięku
Dźwięk muzyczny to dźwięk o określonej wysokości tworzony przez instrument muzyczny lub głos ludzki.
Cechy dźwięku:
Wysokość dźwięku: zależna od częstotliwości drgań.
Ucho ludzkie jest w stanie słyszeć dźwięki z zakresu 16 do 20000 drgań na sekundę (Hz). Zakres wykorzystywany przez tradycyjne dźwięki muzyczne wynosi od 16 do 16834 drgań na sekundę. Dźwięki o częstotliwości powyżej 16834 cykli na sekundę są zwykle tworzone przez instrumenty elektroniczne.
Czas trwania: zależy od czasu, w jakim instrument produkuje dany dźwięk.
Głośność: zależy od amplitudy drgań powietrza przenoszącego dźwięk.
Barwa dźwięku: zależy od ilości i częstotliwości składowych harmonicznych dźwięku
Skala muzyczna
Skala muzyczna to podstawowy zestaw dźwięków muzycznych. W tradycyjnej muzyce europejskiej tworzy ją 8 dźwięków, z których najwyższy jest powtórzeniem najniższego w interwale oktawy.
Zakres dźwięków jest tradycyjnie podzielony na 10 oktaw. Podstawowym dźwiękiem oktawy jest dźwięk C. Częstotliwości kolejnych dźwięków C są elementami szeregu geometrycznego o ilorazie 2, przy czym najniższemu C odpowiada w przybliżeniu dźwięk o częstotliwość 16 Hz (cykli na sekundę).
Nazwa oktawy |
Częstotliwość dźwięku C oktawy w Hz |
Oznaczenia dźwięków |
16,351598 |
C2 D2 E2 F2 G2 A2 H2
lub |
|
32,703196 |
C1 D1 E1 F1 G1 A1 H1 lub C D E F G A H |
|
65,406391 |
C D E F G A H |
|
130,812783 |
c d e f g a h |
|
261,625565 |
c1 d1 e1 f1 g1 a1 h1 |
|
523,251132 |
c2 d2 e2 f2 g2 a2 h2 |
|
1046,502261 |
c3 d3 e3 f3 g3 a3 h3 |
|
2093,004249 |
c4 d4 e4 f4 g4 a4 h4 |
|
4186,009042 |
c5 d5 e5 f5 g5 a5 h5 |
|
8372,018085 |
c6 d6 e6 f6 g6 a6 h6 |
Tabela 1 - poszczególne oktawy
Dźwięk |
Współczynnik |
Poszczególne oktawy |
|||||||||
|
|
subkontra |
kontra |
wielka |
mała |
razkreslna |
dwukreślna |
trójkreślna |
czterokreślna |
pięciokrerślna |
sześciokreślna |
C |
1 |
16 |
33 |
65,4 |
131 |
262 |
523 |
1046 |
2093 |
4186 |
8372 |
D |
1,1225 |
18 |
37 |
73 |
147 |
294 |
587 |
1175 |
2349 |
4699 |
9398 |
E |
1,2599 |
21 |
41 |
82 |
165 |
330 |
659 |
1318 |
2637 |
5274 |
10548 |
F |
1,3348 |
22 |
44 |
87 |
175 |
349 |
698 |
1397 |
2794 |
5587 |
11175 |
G |
1,4983 |
24 |
49 |
98 |
196 |
392 |
784 |
1568 |
3136 |
6272 |
12544 |
A |
1,6818 |
27 |
55 |
110 |
220 |
440 |
880 |
1760 |
3520 |
7040 |
14080 |
H |
1,8878 |
31 |
62 |
123 |
247 |
494 |
988 |
1976 |
3951 |
7902 |
15805 |
C2 |
2 |
33 |
65 |
131 |
262 |
523 |
1046 |
2093 |
4186 |
8372 |
16744 |
Każda oktawa zawiera siedem dźwięków diatonicznych, tworzących szereg określany w systemie dur-moll jako gama C-dur. Kolejno są to C, D, E, F, G, A, H (w angielskiej notacji B). Dźwięki posiadają też nazwy solmizacyjne kolejno: do, re, mi, fa, sol, la, si. Ósmy dźwięk gamy, kolejne C, jest zarazem pierwszym dźwiękiem następnej oktawy.
Osiem dźwięków występujących w gamie C-dur zwane jest naturalnym szeregiem diatonicznym. Dźwięki te odpowiadają białym klawiszom fortepianu. Rozkład częstotliwości dźwięków w pojedynczej oktawie nie jest równomierny.
Rysunek 1 -Gama na pięciolinii
Gama podstawowa
Gama podstawowa odpowiada dźwiękom z zakresu 260-530hz. Zwana jest również oktawą razkreślną.
Oktawa razkreślna |
|
Dźwięk |
Częstotliwość cykli na sekundę |
c1 |
261,6 |
d1 |
293,7 |
e1 |
329,6 |
f1 |
349,6 |
g1 |
391,9 |
a1 |
440,0 |
h1 |
493,9 |
c2 |
523,2 |
Tabela 2 - rozkład dźwięków w gamie podstawowej
Dźwięk |
Współczynnik częstotliwości |
c1 |
10000 |
d1 |
11225 |
e1 |
12599 |
f1 |
13348 |
g1 |
14983 |
a1 |
16818 |
h1 |
18878 |
c2 |
20000 |
Tabela 3 - stosunek częstotliwości nut w oktawie
Odległość (różnica częstotliwości) pomiędzy dźwiękami naturalnego szeregu diatonicznego wynosi cały ton dla par c - d, d - e, f - g, g - a i a - h. Odległość pomiędzy parami e - f i h - c jest o połowę mniejsza i wynosi pół tonu. Półton jest najmniejszą odległością między dźwiękami stosowaną w muzyce europejskiej.
W związku z powyższym oktawę można podzielić na dwanaście półtonów. Dźwięki uzyskane poprzez podwyższenie lub obniżenie dźwięków z naturalnego szeregu noszą nazwę dźwięków chromatycznych.
Naturalna skala diatoniczna w połączeniu z dźwiękami chromatycznymi tworzy skalę chromatyczną.
Dźwięk |
Dźwięk |
Dźwięk podwyższony o pół tonu |
Dźwięk obniżony o pół tonu |
do |
|||
re |
|||
mi |
|||
fa |
|||
sol |
|||
la |
|||
si |
Tabela 4 - Dźwięki szeregu półtonowego
W zależności od wyjściowego dźwięku ten sam dźwięk może mieć różne nazwy (i różny zapis muzyczny):
Dźwięk podwyższony |
Dźwięk obniżony |
cis |
des |
dis |
es |
eis |
f |
fes |
e |
fis |
ges |
gis |
as |
ais |
b |
his |
c |
ces |
h |
Tabela 5 - porównanie dźwięków obniżonego i podwyższonego
Długość nuty
Nazwa nuty |
symbol |
Czas trwania |
Cała nuta |
|
Trwa najdłużej |
Półnuta |
|
Trwa o połowę krócej niż nuta. Cała nuta trwa tyle, co dwie półnuty. |
Ćwierćnuta |
|
Trwa o połowę krócej niż półnuta. Cała półnuta trwa tyle, co dwie ćwierćnuty. |
Ósemka |
|
Trwa o połowę krócej niż ćwierćnuta. Cała ćwierćnuta trwa tyle, co dwie ósemki. |
Szesnastka |
|
|
Nutami o mniejszym czasie trwania są następnie:
Szesnastki
Trzydziestkidwójki
Sześćdziesiątkiczwórki itp.
Realizacja w Pascalu
Polecenia w pascalu
SOUND(x);
x - częstotliwość (w Hertzach)
Dźwięk wydawany z PC-Speakera. Zaraz po poleceniu "SOUND" najlepiej stosować polecenie "DELAY", które zatrzyma dźwięk na określoną ilość czasu.
DELAY(x);
x - czas w milisekundach.
Polecenie to daje możliwość wstrzymania programu na określoną ilość czasu (przydaje się zwłaszcza w programach demonstracyjnych).
NOSOUND;
Przerywa dźwięk wydobywający się ze spikera. Dobrze jest go stosować na końcu programu, bo może okazać się, że dźwięk nie ustanie.
Przykład 1
Program ten przez pięć sekund odegra bardzo denerwujący dźwięk.
PROGRAM jeden_dzwiek;
USES CRT;
BEGIN
sound(2200);
delay(5000);
nosound;
END.
Przykład 2
Program w zależności od wciśniętych klawiszy odgrywa określone dźwięki.
PROGRAM keyboard;
USES Crt;
VAR x:char;
BEGIN
REPEAT
x:=readkey; {wczytanie znaku z klawiatury}
sound(15*ord(x)); {ord -odczytuje nr ASCII tego znaku}
{sound -odgrywa dźwięk o takiej częstotliwości*15}
delay(100); {czas trwania dźwięku}
nosound;
UNTIL ord(x)=27; {kod klawisza ESCAPE}
END.
Ćwiczenie 1
Warto sprawdzić, jakie będą efekty następujących zmian w programie.
1 - usunięcie linijki nosound;
delay(100);
UNTIL ord(x)=27;
END.
2 - przesunięcie linijki nosound; poza pętlę
delay(100);
UNTIL ord(x)=27;
nosound;
END.
Aby wygenerować nuty, które jakoś brzmią, należy określić częstotliwość dźwięku w systemie równomiernie temperowanym. Przedstawiony poniżej kod ma za zadanie tego dokonać.
unit Sounds;
interface
uses Crt;
const N_C = 10000;
N_Cis= 10595;
N_D = 11225;
N_Dis= 11892;
N_E = 12599;
N_F = 13348;
N_Fis= 14142;
N_G = 14983;
N_Gis= 15874;
N_A = 16818;
N_B = 17818;
N_H = 18878;
procedure TCSound (Note:Word; Oct:Byte);
implementation
procedure TCSound (Note:Word; Oct:Byte);
var OutNote:Single;
begin
OutNote := (Oct*261)*(Note / 10000);
Sound (Round (OutNote));
end;
end.
Muzyka z PC Speaker'a
Ta opcja nie daje zbyt pożądanych efektów, ale może być pomocna podczas tworzenia nie skomplikowanych gier lub programów użytkowych. Teraz zademonstruję jedynie odtwarzanie gamy dźwięków za pomocą pascal'a
|