Musica e suoni in ambiente Pascal

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Buona lettura.)

Nella libreria crt del Pascal esistono dei comandi speciali che spesso non si insegnano nei licei o nelle scuole, perchè “non utili all’appredimento del linguaggio”. Cioè, non solo ci tocca imparare questo linguaggio proprietario di merda, ma pure manco lo sfruttiamo.

Dato che ho tempo per cazzeggiare, ecco qui ciò che ho trovato:

  1. SOUND(hz); produce un suono alla frequenza inserita
  2. DELAY(time); produce un ritardo in millisecondi
  3. NOSOUND; interrompe il suono (indispensabile!)

Questi tre comandi si utilizzano in successione così elencati: con il primo lo speaker emette una frequenza (ad esempio 440 per un LA perfetto) con il secondo si prolunga la frequenza (ad esempio 1000 per un secondo) e con il terzo si interrompe la nota.

Un utilizzo molto interessante di queste nozioni può essere quello di far eseguire dal nostro Turbo Pascal (aka Masturbo Pasquale) una parte dell’Inno alla Gioia di Beehtoven, ad esempio…

Listato:
PROGRAM B; USES CRT;
VAR X,I:INTEGER;
PROCEDURE A(X:INTEGER);
BEGIN
SOUND(X);
DELAY(1000);
NOSOUND;
END;
BEGIN
CLRSCR;
WRITE('Stai ascoltanto l''Inno alla Gioia di Beethoven.');
FOR I:=0 TO 1 DO BEGIN
A(330);A(330);A(349);A(392);
A(392);A(349);A(330);A(294);
A(262);A(262);A(294);A(330);
IF(I=0)THEN BEGIN
A(330);A(294);A(294);
DELAY(1000);
END
ELSE BEGIN
A(294);A(262);A(262);
END;
NOSOUND;
END;
CLRSCR;
WRITE('Grazie per aver ascoltato Beethoven.');
READLN;
END.

Qui sopra abbiamo creato una procedura A(x), che richiama al suo interno SOUND(x), DELAY(200) e NOSOUND; esclusivamente per non ripetere i tre comandi di volta in volta.

La frequenza delle note

Per creare la scala di do che ci è servita per comporre il brano superiore, abbiamo soltanto utilizzato questo schema di note/frequenze da inserire nel comando SOUND()

Do 262 Do# 277 Re 294 Re# 311 Mi 330 Fa 349
Fa# 370 Sol 392 Sol# 415 La 440 La# 466 Si 49

Quindi, in conclusione, se vogliamo far emettere dalla macchina un LA per 2 secondi faremo:

begin
SOUND(440);
DELAY(2000);
NOSOUND;
end;

Tutto questo perchè il LA è rappresentato da un suono con frequenza 440 hertz, e due secondi sono rappresentati da un delay di 2000 millisecondi. Insomma, capito no?

Dunque è tutto, buona navigazione!

2 pensieri riguardo “Musica e suoni in ambiente Pascal”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *