Home

Parametri degli eventi sonori¶

Indice¶

  • Altezza o frequenza
    • Misurazioni e rappresentazioni
    • Implicazioni musicali
  • Dinamica o ampiezza
    • Misurazioni e rappresentazioni
    • Implicazioni musicali
  • Strumenti o timbro
    • Misurazioni e rappresentazioni
    • Implicazioni musicali
  • Fase e moto armonico
    • Misurazioni e rappresentazioni
    • Implicazioni musicali
  • Disposizione o spazializzazione
  • Tempo e pulsazioni
    • Misurazioni e rappresentazioni
    • Implicazioni musicali

Altezza o frequenza Indice

L’altezza (o frequenza) di un suono è il parametro legato alla sensazione di gravità/acutezza che si percepisce e dipende dalle frequenze di variazione delle onde elementari che compongono l’onda sonora.

Misurazioni e rappresentazioni Indice

Possiamo specificare questo parametro in tre diversi tipi di notazione simbolica:

  1. Simboli musicali - determinano l'altezza in base alla posizione grafica in un contesto di linguaggio codificato (la scrittura musicale). Sono relativi alle regole sintattiche del codice impiegato (se non conosco il codice non posso interpretare l'informazione) ma non necessariamente di quelle del sistema musicale impiegato.
In [1]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Simboli.png" width="40%"></center>')
Out[1]:
  1. Simboli alfabetici - determinano l'altezza come nomi di una scala o un modo. Sono relative alle regole sintattiche (rapporti intervallari) del sistema di regole musicali di riferimento.

    Esempi: Scala di Do maggiore, Scala di Fa minore, Modo frigio, etc.

In [2]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Nomi.png" width="40%"></center>')
Out[2]:

Guido d'Arezzo - Inno a San Giovanni Battista (1028 ca.)

In [3]:
from IPython.display import HTML 
HTML('<center><video width="40%" controls> <source src="media/nomi.mp4"></video></center>')
Out[3]:
  1. Simboli numerici - in questo caso possiamo fare un'ulteriore suddivisione in quattro diverse unità:
  • Gradi - determinano l'altezza come posizioni in una scala o in un modo. Sono relative alle regole musicali (rapporti intervallari) del sistema di riferimento ma non univochi in quanto permettono una trasposizione dinamica del modello intervallare (un I grado può essere un do, oppure un fa, oppure un sol...).

    Esempi: Scala maggiore, Scala per toni interi, Scala pentatonica, etc.

In [4]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Gradi.png" width="40%"></center>')
Out[4]:
  • Rapporti intervallari - determinano l'altezza come distanza da un'altezza di riferimento (root note) in genere definita con il valore 0. L'unità può corrispondere al semitono o a un altro passo di riferimento. Non sono relative alle regole musicali (rapporti intervallari) di alcun sistema di riferimento e non sono univochi in quanto la loro altezza dipende dalla root note.

     do re mi fa sol la si
      0  2  4  5  7   9  11
In [5]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Intervalli.png" width="40%"></center>')
Out[5]:
  • MIDI Note - determinano l'altezza come valori numerici 60 = Do centrale. Non sono relative alle regole musicali (rapporti intervallari) di alcun sistema di riferimento e sono univochi in quanto la loro altezza è assoluta.
In [6]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Midi.png" width="40%"></center>')
Out[6]:

Oltre ai valori midi esistono altre rappresentazioni simboliche assolute impiegate:

  1. Numerazione MIDI.
  2. Numerazione a Ottave (Giapponese, Yamaha, Encore).
  3. Numerazione a Ottave (Scientifica, MusicXML ed altre).
  4. Numerazione di Helmholtz (utilizzata comunemente negli Stati Uniti).
  5. Numerazione Esadecimale.
In [7]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Altezze.png" width="63%"></center>')
Out[7]:
  • Frequenze (Hertz) - determinano l'altezza come valori numerici che rappresentano il numero di cicli per secondo di un'onda periodica o ciclica. Non sono relative alle regole sintattiche (rapporti intervallari) di alcun linguaggio musicale di riferimento e sono univochi in quanto la loro altezza è assoluta.
In [8]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Frequenze.png" width="40%"></center>')
Out[8]:

Un'onda periodica è data da un fenomeno vibratorio che si ripete identico a se stesso a intervalli di tempo uguali.

  • se il singolo intervallo viene misurato nel tempo è chiamato periodo (o ciclo) dell'onda e rappresentato dalla lettera T.
  • se il singolo intervallo viene misurato nello spazio è chiamato lunghezza dell'onda e rappresentato dalla lettera $\lambda$ - lambda.

Possiamo rappresentare graficamente un onda attraverso un sistema di riferimento cartesiano:

  • asse delle ascisse (x) = scorrere del tempo
  • asse delle ordinate (y) = variazioni di pressione atmosferica

La frequenza di un suono periodico è misurata in Hertz o cps (cicli per secondo) ovvero si misura quante volte il periodo si ripete uguale in un secondo.

In [9]:
import os
import sys
sys.path.insert(0, os.path.abspath('moduli')) 
import parametri as par                                                              
%matplotlib inline

freq  = 4# Frequenza (Hz o cps)

par.sine(freq) 

L'orecchio umano nelle sue condizioni ottimali percepisce suoni compresi tra 20 e 20.000 Hz.

Nella seguente tabella i rapporti tra alcune unità di misura appena esposte.

Nota MIDI Rapporto Frequenza (Hz)
Do 60 $1:1$ 261.6
Do# o Reb 61 $\sqrt[12]{2}$ 277.2
Re 62 $\sqrt[12]{2^2}$ 293.7
Re# o Mib 63 $\sqrt[12]{2^3}$ 311.1
Mi 64 $\sqrt[12]{2^4}$ 329.6
Fa 65 $\sqrt[12]{2^5}$ 349.2
Fa# o Solb 66 $\sqrt[12]{2^6}$ 370.0
Sol 67 $\sqrt[12]{2^7}$ 390.0
Sol# o Lab 68 $\sqrt[12]{2^8}$ 415.3
La 69 $\sqrt[12]{2^9}$ 440.0
La# o Sib 70 $\sqrt[12]{2^{10}}$ 466.2
Si 71 $\sqrt[12]{2^{11}}$ 493.9
Do 72 $2:1$ 523.3

Implicazioni musicali Indice

Nella tradizione musicale occidentale i rapporti fra le altezze sono stati il primo parametro che è stato organizzato secondo regole specifiche:

  • relazioni orizzontali (Viderunt Omnes - Perotinus - 1200 ca.).
In [10]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/viderunt.mov"></video></center>')
Out[10]:
  • sovrapposizioni di voci orizzontali (Nuper rosarum Flores - G.Dufay - 1436)
In [11]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/ruper.mov"></video></center>')
Out[11]:
  • relazioni verticali (Toccata quarta del sesto tono - C.Merulo - 1600 ca.)
In [12]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/merulo.mov"></video></center>')
Out[12]:
  • costruzioni formali (Canone VI - J.S.Bach (1741))
In [13]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/bach_can.mov"></video></center>')
Out[13]:

Dinamica o ampiezza Indice

Questo parametro in termini musicali è dato dal rapporto tra i suoni più deboli (pianissimissimo) e quelli più forti che caratterizzano la dinamica di un brano.

Misurazioni e rappresentazioni Indice

La dinamica di un suono in fisica si definisce con il termine ampiezza in quanto descrive l’ampiezza delle variazioni dell’onda sonora rispetto allo stato di quiete e fornisce una misura dell’energia da essa trasportata.

Se prendiamo in considerazione l'aspetto fisico acustico e non la percezione umana questo parametro è indipendente dalla frequenza e per convenzione rappresentato da valori compresi tra -1.0 e +1.0.

In [14]:
import os
import sys
sys.path.insert(0, os.path.abspath('moduli')) 
import parametri as par                                                              
%matplotlib inline

freq  = 8         # Frequenza (Hz o cps)
amp   = 0.2        # Ampiezza (tra 0.0 e 1.0)

par.vsine(freq, amp) 
par.sine(freq, amp) 

Il termine ampiezza è troppo generico e per evitare confusione aggiungiamo un aggettivo per distinguere tre differenti modalità di misurazione:

  • Ampiezza istantanea - La misura del valore di energia in un preciso istante nel tempo. Valori compresi tra -1.0 e 1.0. Nella rappresentazione dei segnali su un piano cartesiano, il valore misurato sull'asse delle ordinate (y) in un punto preciso sull'asse delle ascisse (x). Nell'audio digitale è il valore di un singolo campione.
  • Ampiezza di picco - il valore assoluto di energia più alto tra le ampiezze istantanee comprese in un tempo finito. Valori compresi tra 0.0 e 1.0. Se il Valore più alto è negativo togliamo il meno.
  • Root Mean Square (RMS) - una particolare media dei valori di energia delle ampiezze istantanee comprese in un tempo finito. Valori compresi tra 0.0 e 1.0.
    • insieme finito di ampiezze istantanee - ( 0.0, 1.5, 1.0, 0.4, 0.6, 0.0, -0.4, -0.2, -1.0, -1.5, 0.0 )
    • elevate al quadrato (square) - ( 0.0, 2.25, 1.0, 0.16, 0.36, 0.0, 0.16, 0.04, 1.0, 2.25, 0.0)
    • media matematica (mean) - 0.65636363636364
    • radice quadrata (root) - 0.81016272215132
In [15]:
import numpy as np
import os
import sys
sys.path.insert(0, os.path.abspath('moduli')) 
import parametri as par                                                              
%matplotlib inline

n = 12                                # Numero di valori
a = par.amp(n)                        # Valori ampiezza istantanea
print('Ampiezze istantanee: ' + str(a))

a = np.abs(a)                         # Valori assoluti
a = np.amax(a)                        # Restituisce il valore più alto
print('Ampiezza di picco: ' + str(a))

a = par.amp(n)                        # Valori ampiezza istantanea
a = a**2                              # Eleva al quadrato
a = np.mean(a)                        # Calcola la media aritmetica
a = np.sqrt(a)                        # Calcola la radice quadrata
a = np.round_(a, 2)                   # Approssima a due decimali
print('Root Mean Square: ' + str(a))

par.img(n) 
Ampiezze istantanee: [ 0.    0.86  0.65  0.34  0.59  0.34 -0.61 -0.85 -0.21 -0.04 -0.34  0.03]
Ampiezza di picco: 0.86
Root Mean Square: 0.5

La principale differenza tra ampiezza di picco e RMS sta nel fatto che la prima è un valore univoco indipendente dall'andamento del segnale mentre la seconda essendo una media è strettamente legata all'andamento dell'inviluppo del segnale.

In [16]:
import os
import sys
sys.path.insert(0, os.path.abspath('moduli')) 
import parametri as par                                                              
%matplotlib inline

par.sf('media/pizz.wav')
par.sf('media/tenuto.wav')
Ampiezza di picco: 0.88
Root Mean Square: 0.12
Ampiezza di picco: 0.91
Root Mean Square: 0.25

In musica è importante misurare non solo le ampiezze ma anche i rapporti che intercorrono tra suoni con intensità differenti.

Questo parametro è anche comunemente chiamato volume o fattore di amplificazione e possiamo rappresentarlo in due diversi modi:

  1. Simboli musicali - I valori sono quasi sempre relativi al contesto musicale, ovvero un "forte" in una sonata per violino barocca non ha la stessa intensità di un "forte" dato agli ottoni in un poema sinfonico di R.Strauss. A differenza delle altezze dove esiste una corrispondenza precisa tra la rappresentazione simbolica in notazione musicale e la misurazione fisica, le dinamiche musicali sono caratterizzate da una rilevante soggettività che va ben oltre alla semplice misura fisica delle ampiezze dei suoni.
In [17]:
from IPython.display import HTML 
HTML('<center><img src="esempi/Dinamiche.png" width="36%"></center>')
Out[17]:
  1. Valori numerici relativi a diverse unità di misura che si riferiscono tutte all'ampiezza di picco:
  • Lineare - Unità di misura assoluta espressa in valori decimali compresi tra 0.0 e 1.0. La più lontana dalla percezione umana riguardo i cambiamenti di intensità dei suoni. Un suono con ampiezza di 0.5 sarà sempre la metà del suono "più forte possibile" e avrà sempre la stessa intensità indipendentemente dal contesto musicale.
  • Key Velocity (MIDI) - Unità di misura assoluta espressa in valori interi compresi tra 0.0 e 1.0. La meno precisa a causa del limitato numero di livelli dovuto alla disponibilità di soli 7 bit del protocollo MIDI. Un suono con una key velociy di 127 sarà sempre "il più forte possibile" e avrà sempre la stessa intensità indipendentemente dal contesto musicale.
  • Quartica - Unità di misura assoluta espressa in valori decimali compresi tra 0.0 e 1.0. La più vicina alla percezione umana riguardo i cambiamenti di intensità dei suoni. Per calcolare i valori corretti dobbiamo elevare l'ampiezza lineare alla quarta potenza. Essendo compresi tra 0.0 e 1.0 l'ambito (range) rimane lo stesso.

    $$a^4$$

  • Decibels (dB) - Unità di misura relativa espressa in valori decimali compresi tra 0.0 e -inf (o +inf a seconda del tipo di misurazione). Misura la differenza di intensità tra l'ampiezza di un suono rispetto a un'ampiezza di riferimento. Un suono con ampiezza di -6.02 dB sarà sempre forte la metà rispetto a un suono la cui ampiezza è stata presa come riferimento per la misurazione. Per calcolare i valori corretti dobbiamo utilizzare la seguente formula dove $a$ è il valore dell'ampiezza lineare del suono che vogliamo misurare mntre $a0$ è l'ampiezza del suono di riferimento (1.0).

    $$20*\log_{10}(\frac{a}{a0})$$

In [18]:
import os
import sys
sys.path.insert(0, os.path.abspath('moduli')) 
import parametri as par                                                              
%matplotlib inline

par.curve()

Alcuni rapporti tra queste unità di misura.

Segno Vel lin quart dB
pppp 12 0.1 0.0001 -20
ppp 24 0.2 0.0016 -14
pp 44 0.3 0.0081 -10
p 54 0.4 0.0256 -8
mp 64 0.5 0.0625 -6
mf 74 0.6 0.1296 -4
f 84 0.7 0.2401 -3
ff 94 0.8 0.4096 -2
fff 114 0.9 0.6561 -1
ffff 127 1.0 1.0000 0

E formule di conversione

In [19]:
import numpy as np

ampvel = 0.5 * 127
velamp = 64  / 127 

ampqrt = 0.5**4 
qrtamp = pow(0.0625, 1/4)  # radice ennesima di x = x**(1/radice ennesima)
ampdb  = 20 * np.log10(0.5)
dbamp  = 10**(-6/20)

print(ampvel)
print(velamp)
print(ampqrt)
print(qrtamp)
print(ampdb)
print(dbamp)
63.5
0.5039370078740157
0.0625
0.5
-6.020599913279624
0.5011872336272722
  • Phon - o livello di sensazione sonora. Abbiamo affermato che frequenza e ampiezza in quanto parametri fisici del suono sono indipendenti. Nel momento in cui il suono giunge all'orecchio le cose si complicano, infatti il sistema uditivo umano non è formato soltanto dall'orecchio: il modo in cui le informazioni trasmesse dal nervo acustico vengono elaborate dal cervello è, in una certa misura, addirittura più importante delle informazioni stesse. Le informazioni acustiche sono filtrate, selezionate, modificate dal cervello e la percezione dell'intensità dei suoni cambia in relazione alla frequenza legando di fatto i due parametri. Il diagramma di Fletcher e Munson rappresenta la sensibilità dell'orecchio alle diverse frequenze e per diverse pressioni sonore.
  • sull'asse verticale sono presenti le pressioni sonore in dB
  • sull'asse orizzontale le frequenze in scala logaritmica.

    Le curve, chiamate curve di uguale livello sonoro o isofoniche, dicono quale pressione sonora è necessaria, alle diverse frequenze, per dare la medesima impressione di intensità. L'unità di misura è il phon che rappresenta dunque l'udibilità soggettiva dell'orecchio umano, che in determinati casi, non coincide con la differenza oggettiva che due suoni hanno tra loro.

In [20]:
from IPython.display import HTML 
HTML('<center><img src="esempi/isofoniche.png" width="40%"></center>')
Out[20]:

Implicazioni musicali Indice

Nella tradizione musicale occidentale i rapporti fra le dinamiche sono stati il terzo parametro (dopo tempo e ritmo) che è stato organizzato secondo specifiche modalità a fini espressivi:

  • piani sonori contrapposti per sottolineare fraseggio e struttura formale (Piano quartet KV 478 - W.A.Mozart 1785).
In [21]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/mozart.mov"></video></center>')
Out[21]:
  • crescendo e diminuendo per sottolineare fraseggio ed espressività (Piano Concert - R.Schumann - 1845)
In [22]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/schumann.mov"></video></center>')
Out[22]:
  • piani dinamici sfalsati per sottolineare polifonie strumentali (Prelude n° 1 - C.Debussy - 1909)
In [23]:
from IPython.display import HTML 
HTML('<center><video width="60%" controls> <source src="media/debussy.mov"></video></center>')
Out[23]:

Strumenti o timbro Indice

Il timbro è quella particolare qualità del suono che permette di distinguere due suoni con uguale ampiezza e altezza e consente all'ascoltatore di identificare la fonte sonora, rendendola distinguibile da ogni altra.

Misurazioni e rappresentazioni Indice

Il timbro dei suoni naturali è influenzato da moltissimi parametri variabili come ad esempio le caratteristiche fisiche dei materiali della sorgente sonora e dal modo in cui è messo in vibrazione.

Tutti questi parametri concorrono a formare una rappresentazione fisica del timbro di quel suono ovvero la sua forma d'onda, che descrive come varia nel tempo la pressione atmosferica (o il voltaggio di un segnale) nel produrre quel determinato suono.

Nelle celle sottostanti sono illustrate tre diverse forme d'onda:

  • suono puro - è formato da una sola onda sinusoidale con propria frequenza, ampiezza e fase. Non esiste in natura e può solo essere sintetizzato
In [24]:
import os
import sys
import IPython.display as ipd
sys.path.insert(0, os.path.abspath('moduli')) 
import parametri as par                                                              
%matplotlib inline

par.puro()
ipd.Audio('media/puro.mp3')
/Users/andreavigani/anaconda3/lib/python3.11/site-packages/matplotlib/cbook/__init__.py:1340: ComplexWarning: Casting complex values to real discards the imaginary part
  return np.asarray(x, float)
Out[24]:
Your browser does not support the audio element.
  • suono complesso periodico - è caratterizzato dalla presenza di più sinusoidi (suoni parziali) sovrapposte, ognuna con una propria frequenza, una propria ampiezza e una propria fase che hanno un qualche tipo di relazione tra loro.
In [25]:
par.periodico()
ipd.Audio('media/periodico.mp3')
Out[25]:
Your browser does not support the audio element.
  • suono complesso aperiodico (rumore) - come il precedente ma i parametri non sono in relazione tra loro.
In [26]:
par.noise()
ipd.Audio('media/noise.mp3')
Out[26]: