Menu:

Implementazioni del PPTEA



Implementiamo il Suono

Dalla versione (2.14) del PPTEA si possono utilizzare suoni o anche piccoli effetti audio.
L'istruzione è semplice semplice:

CODICE
FRQ periodo_quarti, durata_nota

Nel compilatore sono presenti le note come costanti predefinite.
Ad esempio il codice:

CODICE
10 FRQ LA, 100

emetterà la nota LA di durata 100.
Come valore deve essere messo il periodo quarti della frequenza da emettere.
Il segnale esce sul bit 15 del PPTEA (pin 28), basta mandarlo ad un altoparlantino piezo oppure ad un piccolo amplificatore ed il gioco è fatto.
Il suono del film "INCONTRI RAVVICINATI DEL TERZO TIPO" è inviato alle casse amplificate del PC, ed è il PPTEA che lo genera.

Questo è il codice che genera le 5 note di "Incontri ravvicinati del terzo tipo".

CODICE
10 USBOUT= "SUONO"
14 USBOUT="SOL-"
15 FRQ SOL2,400
16 USBOUT="LA-"
17 FRQ LA2,400
18 USBOUT="FA-"
19 FRQ FA2,400
20 USBOUT="FA-"
22 FRQ FA,600
23 USBOUT="DO-"
24 FRQ DO2,1000
25 USBOUT="PAUSA-"
35 waits 1
36 goto 14
37 USBOUT= "-END"
40 goto 40

Nel codice faccio ricorso alle costanti predefinite nel compilatore, riporto alcune note con i relativi periodi, ma devo ancora completare il lavoro:

"SI2", "253"
"LA2", "284"
"SOL2", "319"
"FA2", "358"
"MI2", "380"
"RE2", "425"
"DO2", "478"
"SI", "507"
"LA", "568"
"SOL", "637"
"FA", "716"
"MI", "759"
"RE", "850"
"DO", "956"
"SI0", "1014"
"LA0", "1136"

Vediamo come emettere una nota ad una frequenza stabilita: LA 220 Hz

Per far emettere un LA con frequenza a 220Hz dobbiamo mettere il periodo diviso quattro, seguito dal tempo di durata della nota.
Il periodo (inverso della frequenza) si calcola così:
Periodo= 1/220=0,004545 cioè 4,5 mS (quattro virgola cinque millisecondi).
Il periodo va diviso diviso 4 e va scritto in microsecondi:
4500 uS / 4 = 1136 uS.

Quindi inserendo l'istruzione:

CODICE
10 FRQ 1136,100 ' SUONO del LA 220Hz

Inserendo più note con tempi diversi si possono creare suoni per identificare eventi.
Ad esempio se si gestisce una tastiera può essere emesso un suono per far capire che il pulsante è stato premuto, oppure si possono identificare situazioni critiche mediante un suono o dare conferme su eventi positivi.

Allego la tabella delle frequenze e dei valori corrispondenti in PERIODO_QUARTI.
Ovviamente i valori saranno presenti come costanti predefinite nel compilatore.


Torniamo alle note.
Il compilatore del PPTEA avrà le costanti sonore predefinite:
_DO _DO# _RE _Mib _MI _FA _FA# _SOL _SOL# _LA _Sib _SI

Cioè deve essere specificato prima della nota un meno basso (underscore).
Per rendere la cosa completa e semplice nell'utilizzo si potranno utilizzare sette ottave.
Le ottave partono da zero ed arrivano fino a 6. Per specificare l'ottava basta far seguire la nota da numero della relativa ottava.

Sintassi:
_NotaOttava

Esempio:

CODICE
10 FRQ _DO2,100 'viene suonato il do della 3 ottava.
15 FRQ _DO3,100 'viene suonato il do della 4 ottava.


Specificando una nota con periodo_quarti uguale a 0 viene effettuata una pausa.

Esempio:
10 FRQ 0, 100 ' pausa lunga 100

Il compilatore ha anche predefinita la costante PAUSE =0.

Quindi per effettuare una pausa nell'esecuzione di una canzoncella basterà scrivere:

FRQ PAUSE, DURATA_PAUSA

Se viene specificata una nota senza il numero di ottava viene eseguita la terza ottava.

L'esecuzione delle note può essere effetuato anche da DEBUG del PPTEA, ovviamente occorre aumentare la velocità dell'esecuzione per avere una simulazione il più vera possibile.

Vediamo un esempio di San Martino suonato sulla 4 ottava:

CODICE
05 ' SAN MARTINO 4 OTTAVA
07 CONSTANT NUMERO_NOTE=34
10 DATA _DO3, _RE3, _MI3, _DO3, _DO3, _RE3, _MI3, _DO3, _MI3, _FA3, _SOL3
15 DATA PAUSE, _MI3, _FA3 ,_SOL3 ,_SOL3, _LA3, _SOL3 ,_FA3 ,_MI3 ,_DO3
16 DATA _SOL3, _LA3, _SOL3, _FA3, _MI3, _DO3, _RE3, _SOL3, _DO3, PAUSE
18 DATA _RE3, _SOL3, _DO3
22 READ NOTA
23 A++
24 FRQ NOTA, 250
26 IF A<NUMERO_NOTE THEN 22
40 GOTO 40

Vediamo un esempio di San Martino suonato sulla 7 ottava:

CODICE
05 ' SAN MARTINO
07 CONSTANT NUMERO_NOTE=34
10 DATA _DO6, _RE6, _MI6, _DO6, _DO6, _RE6, _MI6, _DO6, _MI6, _FA6, _SOL6
15 DATA PAUSE, _MI6, _FA6 ,_SOL6 ,_SOL6, _LA6, _SOL6 , _FA6 ,_MI6 ,_DO6
16 DATA _SOL6, _LA6, _SOL6, _FA6, _MI6, _DO6, _RE6, _SOL6, _DO6, PAUSE
18 DATA _RE6, _SOL6, _DO6
22 READ NOTA
23 A++
24 FRQ NOTA, 250
26 IF A<NUMERO_NOTE THEN 22
40 GOTO 40

Mentre questo è un suono composto...in questo modo si possono fare 'sfumature sonore'.

CODICE
10 '----------SUONO COMPOSTO---------
11 USBOUT="SUONO COMPOSTO-"
17 FRQ _SI3,30
19 FRQ _LA3,40
25 USBOUT="PAUSA-"
35 waits 1
36 goto 17

Quanto prima un video su questi ultimi 3 suoni dove il pin 28 (bit 15) è stato collegato all'ingresso di una casa amplificata per pc (la massa della cassa è collegata alla massa del PPTEA e il pin 28 è collegato al canale destro o sinistro oppure ad entrambi).


Questo è il video che riproduce il codice del messaggio di sopra. L'uscita del PPTEA è stata collegata ad una coppia di casse amplificate da PC.







Valid XHTML 1.0 Strict



[ Back to top ] [ Home ]