VRML offre diverse possibilità per inserire fonti sonore. In particolare offre
supporto per files in formato MIDI e WAV. Supporta inoltre audio MPEG1 e quindi
consente la sincronizzazione tra video e sonoro. Mentre i files MIDI risultano
di dimensioni abbastanza contenute, i files WAV hanno dimensioni difficilmente
gestibili in rete, se non per effetti limitati
I files MIDI quindi possono essere utilizzati soprattutto come musiche di sottofondo;
mentre i files WAV potrebbero essere utili per brevi spezzoni di parlato o piccoli
effetti sonori.
Ecco le specifiche del nodo Sound:
Sound {
exposedField SFVec3f direction 0 0 1 # (- <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > , <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > )
exposedField SFFloat intensity 1 # [0,1]
exposedField SFVec3f location 0 0 0 # (- <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > , <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > )
exposedField SFFloat maxBack 10 # [0, <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > )
exposedField SFFloat maxFront 10 # [0, <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > )
exposedField SFFloat minBack 1 # [0, <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > )
exposedField SFFloat minFront 1 # [0, <img width=21 height=10
src="https://static.html.it/app/uploads/documenti/guide/img/vrml/image014.gif" > )
exposedField SFFloat priority 0 # [0,1]
exposedField SFNode source NULL
field SFBool spatialize trUE
}
Il nodo Sound specifica la rappresentazione spaziale di una fonte sonora
in una scena VRML. La fonte sonora è localizzata, mediante il campo location,
in un punto delle coordinate spaziali ed emette il suono all'interno di un'area
definita da due ellissi. Tali ellissi sono orientati lungo la direzione specificata
dal campo direction.
Il field intensity descrive il volume del suono. Può avere un valore
compreso tra 0.0 (nessun suono) e 1.0 (il massimo volume della fonte sonora).
Come detto, il nodo Sound è composto da due ellissoidi che descrivono
per così dire la "portata spaziale" del suono, distribuendone il valore dell'intesità
nello spazio. L'ellissoide maggiore descrive un campo all'esterno del quale
il suono non è più udibile. Esso è definito dai due campi maxFront e
maxBack, i cui valori descrivono i confini dell'ellissoide rispettivamente
di fronte e dietro il campo location.L'ellissoide minore descrive invece
lo spazio all'interno del quale il suono viene percepito al massimo livello
di volume settato nel campo intensity.
tra i due ellissoidi, si realizza la cosiddetta attenuazione dell'intensità
sonora. In pratica il suono decresce di volume in maniera lineare da un punto
all'altro.
La figura sotto rappresenta una versione semplificata di quella offerta dalle
specifiche tecniche ufficiali:
Il campo spatialize dichiara se il suono viene percepito o meno come
direzionale relativamente alla posizione dell'utente. Può assumere uno dei seguenti
valori di tipo booleano: trUE o FALSE.
Quando la scena contiene più di un suono, il campo priority consente
di informare il browser sull'importanza di un suono rispetto agli altri, in
modo da sopperire agli eventuali problemi di tempo di download. Anche in questo
caso si può settare un valore compreso tra 0.0 (priorità minima) e 1.0 (massima
priorità).
Il campo source infine, specifica la sorgente sonora del nodo Sound.
Questo campo può essere rappresentato sia da un nodo Audioclip che da
un nodo MovieTexture. Nel secondo caso MovieTexture deve fare riferimento
ad un formato che, ovviamente, supporti il suono come l' MPEG1.
Un semplice esempio
Come esempio si utilizzerà un file Wav come semplice sottofondo a un mondo
VRML vuoto:
#VRML V2.0 utf8
# sound VRML: suono in background
Sound {
minFront 10
maxFront 100
minBack 10
maxBack 100
spatialize FALSE
source AudioClip {
description "suono"
loop trUE
startTime 1
url "sound1.wav"
}
}
Come si vede, per inserire la fonte sonore in VRML si è utilizzato il nodo
Sound. Nel nostro caso, abbiamo un campo location che localizza
la fonte sonora. Abbiamo poi un campo direction che ne specifica la direzione,
quattro campi (maxBack, minBack, maxFront, minFront) che, come detto,
specificano la regione in cui il suono è udibile e intensity che determina
l'intensità del suono. L'ultimo campo è il campo source. Questo campo
contiene un nodo AudioClip che consente di specificare il file da usare
e come farlo girare. AudioClip infatti contiene a sua volta un campo
url per indicare il nome del file da usare, un campo loop e uno
startTime.