Recording, Mixing and Mastering
Published on 27/10/2020
Tra le due grandi guerre dello scorso secolo si concentrarono gli studi che portarono alla definizione delle architetture di base degli odierni computer digitali. Il concetto fondamentale deriva dalla possibilità di memorizzare dati e istruzioni con la stessa modalità (sia concettuale che fisica).
Si partiva dal concetto (matematico) di Algoritmo. Un algoritmo è un insieme finito di passi che produce risultati a partire da un insieme di dati di ingresso.
Tra i pionieri di queste ricerche citiamo il matematico inglese Alan Turing che, con la sua Macchina di Turing definì un sistema teorico (realizzabile in pratica) in grado di eseguire tutte le classi di algoritmi note all’epoca.
Altro nome di rilievo è l’ungherese John Von Neumann che introdusse l’architettura alla base dei moderni calcolatori.
In questa (architettura di Von Neumann) si riconoscono i componenti fondamentali a cui abbiamo ormai fatto l’abitudine:
Rispetto alla versione originale, l’attuale architettura dei calcolatori include il concetto di Bus che è una sorta di autostrada digitale su cui passano tutti i flussi di dati e istruzioni che vengono poi instradati in modo opportuno sui dispositivi di pertinenza.
Il System Bus include Control Bus (per le istruzioni e i controlli), Address Bus (per gli indirizzi) e Data Bus (per i dati).
A partire dagli studi di Turing e Von Neumann si realizzarono sistemi di calcolo sempre più sofisticati ma di dimensioni e costi non proponibili per la vasta diffusione che viviamo adesso.
La mossa definitiva per lo sviluppo di calcolatori di uso personale (Personal Computer o PC) fu l’invenzione del Microprocessore che dobbiamo al fisico italiano Federico Faggin che sviluppò sia l’architettura tecnica che il processo realizzativo che portarono alla produzione del chip 4004 di Intel.
Successivamente Faggin fondò la sua azienda (la Zilog) che rilasciò il famigerato chip Z80 che ebbe una grande fortuna negli anni ’70 e ’80.
Grazie a Faggin, basta una mother board (scheda madre) su cui inserire la (o le) CPU, la memoria centrale, i chip che funzionano da driver per le periferiche e i controller per la memoria di massa e il gioco è fatto.
La Memoria Centrale è realizzata con circuiti integrati a semiconduttore. Si utilizza la memoria RAM (Random Access Memory) per caricare dati e programmi in corso di utilizzo da parte della CPU.
La RAM ha tempi di accesso abbastanza veloci ed è di tipo volatile (si cancella se manca l’alimentazione). Esistono memorie che non si cancellano che sono definite Read Only Memory (ROM) queste, ancora a semiconduttore, servono a memorizzare (tra l’altro) i codici di avvio del computer che servono a far partire in modo ordinato tutti i suoi componenti.
Il BIOS (Basic Input Output System) è scritto in una ROM.
Una memoria di quantità molto limitata ma di accesso molto veloce è contenuta dentro la CPU. Si chiama Cache e si utilizza pre-caricando i dati di prossimo utilizzo da parte della CPU in modo da accelerare al massimo la loro elaborazione. I dati della cache vengono poi (grazie alla Control Unit) scambiati in modo opportuno con la memoria centrale per eseguire i vari passi dell’algoritmo in esecuzione.
La Memoria di Massa è stata fino a poco tempo fa realizzata esclusivamente su supporti magnetici di vario tipo. Si partiva con strutture meccaniche di nuclei magnetici che venivano orientati (fisicamente) in base allo stato da memorizzare. Poi è stata la volta dei nastri e, infine, dei dischi che potevano essere flessibili (Floppy Disk) o rigidi (Hard Disk).
Anche qui il progresso ha portato a novità grazie allo sviluppo delle memorie Flash. Queste sono ROM che possono essere cancellate e riscritte grazie ad opportuni comandi elettrici. Gli hard disk a stato solido (Solid State Disk o SSD) sono realizzati con questa tecnologia (che è la stessa degli stickers USB).
Il bus di sistema non è direttamente accessibile all’esterno e, per questo scopo, sono disponibili varie soluzioni. Tra queste le più utilizzate in questo periodo sono Universal Serial Bus (USB) e Thunderbolt. Questi bus hanno velocità di trasporto dei dati inferiori rispetto al bus di sistema ma specifiche tecniche dedicate alla trasmissione e ricezione di dati al di fuori dell'ecosistema PC.
L’architettura di Von Neumann ha il difetto di utilizzare la stessa memoria per memorizzare sia i dati che i programmi. Sono necessari quindi due accessi per prelevare, in successione, prima l’istruzione e poi i dati da elaborare con questa.
Con l’architettura Harward si risolve questo problema e si da lo spunto alla realizzazione di dispositivi utilizzati quando la quantità di calcoli è rilevante come, ad esempio, per applicazioni audio e video.
Anche in questo caso l’introduzione della memoria Cache velocizza ulteriormente i processi come brevemente indicato in figura:
Questi dispositivi sono denominati Digital Signal Processor (DSP) e sono contenuti nelle interfacce audio di mercato. Il diffusissimo chip Sharc di Analog Devices è un classico esempio di DSP.
Tutti i componenti di cui abbiamo parlato, per funzionare in modo coordinato, hanno necessità di un programma che li gestisca. Questo programma è denominato Sistema Operativo. Questo sottintende a tutte le operazioni di base dei computer.
Gestione dei programmi, gestione dei file, configurazione dei componenti hardware e software, coordinamento degli accessi alle risorse, gestione della comunicazione con l’esterno, gestione delle periferiche e tante altre cose sono appannaggio del sistema operativo.
I più diffusi sistemi operativi per utilizzo personale sono i notissimi:
Su scala industriale sono molto utilizzati:
Molti altri sistemi operativi sono disponibili (o lo sono stati) ma quelli elencati sono i più diffusi attualmente.
Il compito di tradurre in istruzioni comprensibili ai computer i passi stabiliti dagli algoritmi è demandato ai Programmi (o applicazioni).
Questi sono costituiti da un insieme (che può diventare anche molto grande) di istruzioni scritte in linguaggi specializzati in base alla tipologia di applicazioni che si vogliono realizzare. Questi linguaggi si chiamano Linguaggi di Programmazione (programming language). Ne esistono molti e sono stati concepiti per le ragioni più varie e impossibili da descrivere in un articolo. Ne cito alcuni solo a scopo indicativo:
Attraverso i linguaggi di programmazione si strutturano gli algoritmi e si scrivono i programmi che definiscono tutte le funzioni richieste dalla applicazione. Al temine della codifica si procede ad una operazione definita Compilazione. Questa fa sì che il codice venga tradotto in un linguaggio di basso livello (linguaggio macchina) che è direttamente interpretabile dalla CPU.
Il programma così elaborato viene detto codice eseguibile ed è subito pronto per essere lanciato dal sistema operativo e diventare, ad esempio, la vostra DAW o il vostro video game preferiti.
Grazie ai linguaggi di programmazione, un computer (o una rete di questi) può assumere, almeno logicamente, le funzioni più disparate. Grazie alla possibilità di scrivere programmi si ha a disposizione una quantità limitata solo dalla fantasia di macchine virtuali capaci di risolvere (o simulare) tutti i problemi che si riesce a definire in modo sufficientemente formalizzato.
Per accelerare le elaborazioni in campo musicale è possibile espandere le capacità elaborative del PC inserendo acceleratori dotati di DSP. Questi consentono, da un lato di evitare che la CPU debba dedicare risorse alla elaborazione audio, dall'altro, di avere strumenti molto sofisticati a supporto del processo creativo.
Gli indirizzi di sviluppo attuali, anche in campo musicale, portano sempre di più verso il supporto alla collaborazione.
Ormai è abbastanza normale lavorare da sedi diverse su progetti musicali anche molto complessi. Lo sviluppo delle tecnologie di comunicazione (il 5G che ormai è alle porte) rende alla portata anche la collaborazione remota in tempo reale. Staremo a vedere…
Join us today and get 5% off your next order!
Empty cart