Misurare il Tempo
La misurazione del tempo è stata la prima scienza esatta dell’antichità. Le uniche certezze provenivano dai fenomeni astronomici.    (E.Salvatori)
La musica è un espressione umana che si svolge nel tempo, in un tempo non reversibile se non nella memoria e una delle prime scelte che dobbiamo compiere nell’approcciarci alla scrittura di un brano, consiste nel definire l’andamento temporale dello stesso (veloce, lento, moderato, etc.), o meglio stabilire che tipo di rapporto ci sarà tra gli eventi sonori e con quale frequenza e quale densità saranno distribuiti all’interno della composizione.
L.v.Beethoven op.111 - Tema e variazioni
Contestualmente dobbiamo scegliere un un organico strumentale e se decidiamo di utilizzare uno o più strumenti acustici, sarà necessaria la realizzazione di una partitura sulla quale annotare in vari modi le sequenze di azioni che lo strumentista deve compiere per ricreare l’idea musicale in un tempo futuro. Per trasmettere e codificare queste informazioni, nel corso dei secoli compositori e teorici della musica hanno sviluppato la notazione musicale , o meglio un insieme di notazioni musicali, adattate di volta in volta alle rinnovate esigenze espressive e/o esecutive. Per contro se all’interno dell’organico è presente uno strumento elettroacustico/informatico ci troviamo di fronte a un problema. L’esecutore o interprete della parte elettronica in primo luogo è un software, che non ha mai seguito un corso di teoria e solfeggio o di semiografia della musica e quindi non è in grado di interpretare i simboli usati nelle notazioni musicali più o meno tradizionali. Per questo motivo dobbiamo in primo luogo definire alcuni parametri atti a misurare il tempo, o meglio misurare una sequenza di eventi o azioni che si svolgono nel tempo per poterli poi organizzare (comporre) in ritmo e tradurli in un linguaggio simbolico interpretabile sia da esecutori umani che da un software. Questi parametri sono tre:
- Tempi delta (△t)
La misurazione del tempo che intercorre tra due eventi consecutivi:
- Durate
- Tempi parziali (onset)

La misurazione della durata di uno o più eventi:

La misurazione dei tempi ai quali accadono gli eventi, riferita a un tempo "0" iniziale:

In realtà i parametri strettamente necessari alla descrizione di una sequenza di eventi temporali sono solo i △t e le durate. Attraverso la loro combinazione è possibile realizzare sia sequenze di eventi senza soluzione di continuità (quando i △t coincidono con le durate), sia sequenze di eventi separate da pause (quando le durate sono inferiori ai △t). La misurazione dei tempi parziali (onsets) invece è legata al fatto che un brano musicale ha un tempo finito (un inizio e una fine, o quantomeno un inizio) e in alcuni casi può essere utile trovare un punto preciso al suo interno, ad esempio per fare ripartire un playback o una registrazione da quel punto preciso specificando dei marker tanto cari agli ingegneri del suono.
Per meglio comprendere questi parametri eseguiamo il codice di SuperCollider illustrato nell’esempio sottostante. Compare una finestra. Schiacciare, tenere premuto e rilasciare un tasto qualsiasi della tastiera del computer. Ogni volta che compiamo quest’azione, vengono visualizzati onset, △t e durata espressi in secondi. Onsets e △t vengono aggiornati quando il tasto viene schiacciato, mentre la durata quando viene rilasciato, in quanto fino a quando un’azione non termina non è possibile misurarne la durata. Immaginiamo di sostituire i tasti del computer con i tasti di un pianoforte, l’azione compiuta è la stessa ed è possibile descriverla sia con una notazione musicale per essere interpretata da un esecutore umano su uno strumento acustico, sia numericamente per essere interpretata da un computer attraverso i codici ASCII della sua tastiera.
( var start = SystemClock.seconds, prev = 0, onset = 0, delta, vora, vprec = 0, w = Window('Tempo') .background_(Color.black) .setTopLeftBounds(Rect(0,0,210,135)) .alwaysOnTop = true; c = StaticText(w,Rect(10,10,200,40)) .font_(Font("Times",36)) .stringColor_(Color.white) .string_("Onset"); d = StaticText(w,Rect(10,50,200,40)) .font_(Font("Times",36)) .stringColor_(Color.white) .string_("Delta"); e = StaticText(w,Rect(10,90,200,40)) .font_(Font("Times",36)) .stringColor_(Color.white) .string_("Durate"); w.front.view.keyDownAction_({ arg ...args; vora = args[3]; if(vora != vprec, {onset = SystemClock.seconds start; delta = onset prev; prev = onset; c.string_("Onset "++onset.round(0.01)); d.string_("Delta "++delta.round(0.01)); } ); vprec = vora}) .keyUpAction_({var release = SystemClock.seconds start, dur = release onset; e.string_("Durate "++dur.round(0.01)); vprec = 0 }) )
Organizzare il tempo
Stabiliti i parametri necessari alla descrizione di una sequenza di eventi nel tempo, dobbiamo scegliere un’unità di misura e, in base a questa adottare il sistema più adatto alla loro organizzazione. Per farlo abbiamo a nostra disposizione solo due possibilità: Tempo relativo e Tempo assoluto.
Tempo relativo
Tutti i valori sono definiti attraverso suddivisioni di una pulsazione regolare come nella tradizione musicale occidentale dal Rinascimento ad oggi (Tactus). In questo caso le unità di misura possono essere diverse:
Battiti per minuto (bpm) o Tempo metronomico (Metronomo). L’unità di misura musicale per antonomasia, dove viene misurato il numero di battiti regolari in un minuto.
Battiti per secondo (bps o cps o Hertz). Un unità di misura più usata in fisica acustica ed informatica musicale, dove viene misuato il numero di battiti regolari o di cicli periodici in un secondo. Bps - battiti per secondo e cps - cicli per secondo rappresentano la stessa suddivisione temporale ma con una concezione implicita leggermente differente. Il primo implica l’idea di una pulsazione, il secondo implica la presenza di qualcosa di periodico (in fisica acustica, tipicamente un ciclo di una forma d’onda).
bps vs cps
Valori musicali (Nomi e simboli). Suddivisioni regolari o irregolari dell’unità di misura (semicroma, croma, biscroma, etc.).
I valori musicali in realtà più che essere unità di misura sono rappresentazioni simboliche, ma nella pratica musicale questa differenza può risultare troppo sottile, pensiamo ad esempio alle frasi ”92 alla croma” oppure ”ottavo uguale 92”, l’unità di misura sono i bpm ma per un musicista occidentale è più immediato pensare che sia il quarto o l’ottavo.
Fattori di moltiplicazione dell'unità di musura derivati dal frazionamento della stessa (1/4 = 0.25, 1/2 = 0.5, etc.) che è il metodo più comune adottato in informatica musicale per specificare il tempo in valori relativi.
Si faccia attenzione a non confondere le suddivisioni in frazioni dell’unità come 1/4 con i termini utilizzati dalla teoria musicale come quarto, ottavo, etc. in quanto la prima è una suddivisione dell’unità e, se per esempio un quarto musicale è uguale a una semiminima e anche all’unità (1.0), 1/4 è uguale al valore di un sedicesimo musicale o semicroma e non a quello di un quarto musicale.
Tempo assoluto
Il sistema proprio del linguaggio informatico. Anche questo modo di misurare il tempo si basa su pulsazioni regolari, ma non sono previste suddivisioni metriche strutturali, o meglio ci possono essere ma non rappresentano un elemento fondante di un sistema come quello ritmico/musicale. Per quello che riguarda il range entro il quale si svolgono gli eventi temporali musicali le unità di misura che possiamo utilizzare sono due:
- Millisecondi (ms). L’unità di misura più precisa, utilizzata dalla maggior parte dei software musicali.
- Secondi (s): La misurazione del tempo più comune.
Questi due sistemi non rappresentano esclusivamente la migliore scelta nella risoluzione di una problematica tecnica o una semplice convenzione di comodo, ma ognuno possiede caratteristiche musicali proprie e ben definite come possiamo verificare eseguendo il codice sottostante:
// 1) Accendere l'audio (Boot) // 2) Eseguire il codice tra le due prime parentesi tonde (si definisce un Synth): ( SynthDef(\sperc, {|freq =440, amp=1, dur=75, atk=10| var env = EnvGen.ar(Env.perc(atk*0.001, (dur atk)*0.001), doneAction: 2), osc = SinOsc.ar(freq, 0, amp); Out.ar(0, env *osc ! 2); }).add; ) // 3) Eseguire il codice seguente: // Pulsazione irregolare assoluta tra 75ms e 250ms: ( {var freq = rrand(800,1900); {inf.do{ Synth("sperc",[\freq,freq,\amp,1]); rrand(0.075,0.25).wait }}.fork} ! 3; ) // 4) Fermare l'esecuzione // 5) Eseguire il codice seguente: // Pulsazione irregolare con suddivisioni di un beat. ( {var bpm = 52, freq = rrand(800,1900), t = TempoClock(bpm/60); {inf.do { Synth("sperc",[\freq, freq,\amp,1]); [1/2,1/4,1/8,1/16].choose.wait }}.fork(t)} ! 3; )
La scelta di utilizzare un sistema piuttosto che l’altro deve essere dunque dettata sia dal risultato musicale che vogliamo ottenere, sia dalle problematiche tecniche relative alla programmazione dello strumento informatico in relazione a organici misti (strumenti elettronico/informatici combinati con strumenti acustici). Se ad esempio il linguaggio musicale utilizzato necessità di una certa rigidità metrica (sebbene all’interno di una flessibilità temporale, sarà più adatta una misurazione in tempo relativo (bpm).
Se invece vogliamo realizzare un sound design con soli suoni di sintesi, oppure un brano di musica mista dove sia previsto che gli esecutori seguano un ”timer” come in certe attività improvvisative o di alea controllata, sarà più opportuno organizzare il tempo con un sistema di valori assoluti.
Convertire il tempo
Nella maggior parte dei casi, quando utilizziamo un software musicale, ci viene richiesto di specificare △t, durate e onsets in secondi, millisecondi o bps, utilizzando un sistema assoluto. Se però vogliamo pensare in valori relativi dobbiamo effettuare delle conversioni dell'unità di misura con delle semplici operazioni matematiche:
- bpm ➢ bps: bpm/60
- bps   ➢ bpm: bps*60
- bpm ➢ msec: 60000/bpm
- bpm ➢ sec: 60/bpm
Se vogliamo per esempio generare una sequenza di semicrome con semiminima = 92 bpm come quella illustrata nella figura sottostante è necessario calcolare il △t in millisecondi nel modo seguente:
△t = (60000/92)*(1/4) = 652.17*0.25 = 652/4 = 163 ms