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:

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
						   })
)

Scarica patch di Max

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:

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:

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).

image not found

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.

image not found

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:

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

image not found

Scarica patch di Max