# Timecode SMPTE

Il timecode SMPTE è un insieme di standard cooperativi per l'identificazione univoca di fotogrammi video o su pellicola cinematografica con un timecode, standard definito dalla SMPTE nella specifica 12M.
Il timecode è aggiunto a materiale video, audio o cinematografico ed è anche stato adattato per la sincronizzazione musicale, fornendo in ogni caso un riferimento temporale per il montaggio e la scalettatura del materiale. L'invenzione del timecode ha reso possibile il montaggio lineare su nastro, ed è alla base del moderno montaggio non lineare.

## Concetti base

Il timecode SMPTE contiene un'identificazione oraria in formato ore:minuti:secondi:fotogrammi e 32 bit di dati utente, codificati BCD. I dati utente sono di solito chiamati user bit o U-bit sulle apparecchiature. Ci sono anche due flag noti come color frame e drop frame e tre bit extra, due dei quali sono chiamati flag binary group utilizzati per definire l'uso degli user bit. I formati di tutti i tipi di timecode SMPTE sono derivati da quello del timecode longitudinale
Il timecode può avere qualsiasi cadenza, i tipi più usati sono:
* 24 fotogrammi per secondo (cinema)
* 25 fotogrammi per secondo (televisione a colori PAL)
* 29.97 (30/1.001) fotogrammi per secondo (televisione a colori NTSC)
* 30 fotogrammi per secondo (HDTV)
In generale, l'informazione della cadenza di un timecode SMPTE è implicita, ricavata dal tipo di segnale video in ingresso, oppure dai dati del timecode stesso, oppure da eventuali metadati. L'interpretazione di parecchi bit, inclusi quelli di "color framing" e il "drop frame", dipendono dalla cadenza dei dati stessi. In particolare, il bit "drop frame" è valido solo per cadenze nominali di 30 fps, come spiegato sotto.
Timecode più complessi, come il tipo sull'intervallo verticale, possono includere informazioni extra in differenti codifiche.

## Timecode discontinuo

Il timecode è concettualmente un flusso sequenziale di dati. A seconda delle esigenze produttive, il valore temporale può essere un riferimento orario piuttosto che un valore arbitrario ma può capitare che, dopo aver registrato diversi spezzoni o per assemblaggio di registrazioni già esistenti, il valore del timecode presenti dei segmenti discontinui.
In linea di massima, se si usa il timecode lineare il suo valore non è leggibile se non dopo che il fotogramma è già passato: questo è particolarmente evidente nel caso di una registrazione su nastro magnetico, in cui il valore di timecode letto dalla testina è disponibile solo dopo che il nastro ha oltrepassato la posizione della testina. Nell'uso pratico, le apparecchiature astraggono il valore del timecode secondo l'andamento sequenziale.
Inoltre, il timecode può essere registrato in sezioni difettose del nastro ed essere a tratti mancante. In questo caso, il dispositivo in lettura può interpolare il valore secondo quanto segue o precede ma, anche così, il valore esatto del timecode non può essere determinato senza prima leggere una serie di fotogrammi.
Per questa ragione, è sempre buona norma mantenere il timecode contiguo, per semplificare il montaggio e l'inserimento di modifiche ripetute sullo stesso tratto di nastro. È prassi comune registrare interamente il nastro usato per il montaggio con un segnale nero e un timecode continuo, e poi inserire man mano il video e l'audio man mano che il montaggio prosegue.
A livello teorico, è comunque possibile registrare il video in ritardo rispetto al timecode, operazione relativamente semplice in un videoregistratore digitale. Tuttavia, questo solitamente non si fa, perché:
* introduce un ritardo non necessario nel percorso del segnale video,
* bisognerebbe comunque compensare i ritardi dei timecode provenienti da macchine analogiche o non messe in passo.

## Drop frame

L'origine del timecode drop frame risale a un compromesso introdotto all'epoca dell'introduzione della codifica NTSC, concepita per mantenere la compatibilità con i televisori in bianco e nero. La frequenza scelta per la sottoportante di crominanza, pari a 3.58 MHz (più precisamente 315/88 MHz = 3.57954545 MHz) era influenzata nella fase dalle armoniche della frequenza di scansione orizzontale. Piuttosto che modificare le sottoportanti dell'audio e della crominanza, fu presa la decisione di modificare "tutto il resto", inclusa la cadenza di ripresa, impostata a 30/1.001 Hz.
Come conseguenza, un'ora di timecode alla frequenza nominale di 30 fotogrammi per secondo aveva una durata superiore di 3.59 secondi rispetto al tempo reale, comportando così un errore di quasi 90 secondi nell'arco della giornata, causando così alcuni errori nel lavoro di produzione in studio.
Per compensare questo problema, il timecode SMPTE drop frame scarta i fotogrammi numero 0 e 1 del primo secondo di ogni minuto, tranne quando il numero dei minuti è divisibile per dieci. Questa compensazione è quasi perfetta, con un errore residuo di circa 86.4 millisecondi al giorno, cioè solo 1.0 ppm. È importante notare che solo i numeri del timecode sono scartati, non i fotogrammi video.
Naturalmente, il timecode drop frame è usato solo su sistemi con cadenza pari a 30/1.001 Hz. Il timecode drop frame è talvolta indicato usando il punto e virgola, come separatore, per esempio 11;14;08;26.

## Timecode e color framing

Un bit è spesso usato come flag per contrassegnare il primo semiquadro del color framing, in modo che durante il montaggio i punti di stacco siano coerenti con la sequenza.

## Operazioni di studio e orologio master

Nella produzione televisiva, il timecode è generato da un apparato centrale e poi distribuito. Il generatore a sua volta riceve l'ora da un orologio atomico, o da un server NTP oppure ancora da un ricevitore GPS. I generatori sono spesso due o più, con ridondanza automatica.
Se il riferimento orario è necessario nel caso di produzioni esterne con camcorder multipli, ogni camcorder può essere dotato di un proprio ricevitore GPS, eliminando così la necessità della distribuzione.
Il timecode SMPTE longitudinale è di largo impiego per la sincronizzazione musicale. Il numero di fotogrammi per secondo usati per sincronizzare l'audio è arbitrario, e può essere scelta secondo necessità produttive. È piuttosto frequente una cadenza di 24 fps perché crea meno problemi con l'audio digitale campionato a 48 kHz.

## Trasporto del timecode SMPTE

* timecode lineare, noto anche come timecode longitudinale o LTC: è registrabile su una traccia audio e trasportato tramite linee audio. Questo timecode è distribuito ai vari videoregistratori e altre apparecchiature.
* timecode sull'intervallo verticale o VITC: è registrabile direttamente nell'intervallo di ritorno verticale di ogni fotogramma video. Il vantaggio del VITC è che fa parte del segnale video, per cui è leggibile anche a macchina ferma. Questo segnale è invece disturbato quando la velocità del nastro è molto superiore a quella nominale. Il VITC può essere inserito in ogni tipo di videoregistratore.
* CTL timecode (control track longitudinale): timecode SMPTE integrato nella traccia tachimetrica (control track) di un videoregistratore.
* Timecode display - i numeri sono visibili nel video. L'uscita monitoria di molti videoregistratori inserisce il timecode in questo modo, e una copia può essere registrata con il timecode visibile.
* Codifica per pellicola cinematografica, come il Keykode.
* RP188, integrato all'interno di un flusso SDI.

## Integrazione di LTC e VITC

Per leggere il timecode longitudinale registrato su un nastro, è necessario che questo sia in movimento, per cui quando la riproduzione è a velocità molto lenta o fissa, è necessario ricorrere al VITC. Sui videoregistratori moderni i due segnali sono di solito registrati contemporaneamente, e se uno dei due manca l'elettronica di lettura lo emula prendendo l'altro come riferimento. Se necessario, i due timecode possono avere U-bit diversi tra loro. Per esempio, i camcorder betacam hanno un'impostazione che permette di registrare l'ora sugli U-bit del VITC: questo permette di tenere traccia dell'ora della registrazione, lasciando però il timecode principale contiguo quando la registrazione viene arrestata.

## Formato del timecode longitudinale

Il formato base è un codice di 80 bit che contiene ora, minuti, secondi e numero di fotogramma.
    0..3: unità fotogrammi
    4..7: campo user bit numero 1
    8..9: decine fotogrammi
    10: 1=formato drop frame (i fotogrammi 0 e 1 del primo secondo di ogni minuto sono scartati, a meno che il numero dei minuti non sia divisibile per dieci. Questo approssima i 29.97 fotogrammi per secondo)
    11: 1="color frame", nel caso il timecode si intenda sincronizzato con la sequenza colori dei semiquadri televisivi.
    12..15: campo user bit numero 2
    16..19: unità secondi
    20..23: campo user bit numero 3
    24..26: decine secondi
    27: bit di correzione bifase; impostato o azzerato in modo che ogni parola di 80 bit abbia un numero pari di zeri. In un timecode lineare, questo permette di leggere il segnale del time con un oscilloscopio, senza che il segnale si inverta continuamente. Le apparecchiature moderne rigenerano il timecode con una temporizzazione fissa legata all'intervallo di scansione verticale, quindi questo bit è molto meno necessario di un tempo.
    28..31: campo user bit numero 4
    32..35: unità minuti
    36..39: campo user bit numero 5
    40..42: decine minuti
    43: flag binary group (con i bit 43 e 59 = 00 = nessun formato per gli user bit, 10 = formato a otto bit, 01, 11 non assegnati o riservati).
    44..47: campo user bit numero 6
    48..51: unità ore
    52..55: campo user bit numero 7
    56..57: unità decine
    58: non usato, riservato, dovrebbe essere sempre a zero e ignorato in ricezione, per compatibilità
    59: flag binary group (si veda il bit 43 per la codifica)
    60..63: campo user bit numero 8
    64..79: parola di sincronizzazione, dovrebbe essere 0011 1111 1111 1101
Ci sono 32 bit per i dati utente, di solito usati per la data e il numero della bobina. Possono essere qualunque cosa se i bit 43 e 59 sono impostati a zero.
Questi bit sono codificati come bifase. Un bit impostato a zero compie una singola transizione all'inizio del periodo, mentre un bit impostato a uno ha due transizioni, all'inizio e a metà del periodo. Questa codifica è autosincrona.
Il timecode SMPTE longitudinale dovrebbe essere riprodotto a circa metà del livello audio utile, per evitare distorsioni.

## Storia

Sia il timecode longitudinale che quello sull'intervallo verticale furono sviluppati nel 1967 dalla EECO, una società produttrice di videoregistratori e in seguito di apparecchiature televisive. L'utilizzo di questa tecnologia è pubblico.