MELODIOSO C64
Storia della generazione del suono all'epoca del Commodore 64
.:Introduzione
.:Generare suoni
.:Onde sonore
.:Suoni con il C64
.:Forme d'onda
.:Forme d'onda

Il timbro che caratterizzava un suono era determinato dalla FORMA DELL'ONDA che si propagava nell'aria, pertanto volume e frequenza non erano sufficienti al SID per produrre un suono; era necessario indicare quale tipo di forma d'onda utilizzare. Il SID metteva a disposizione 4 forme d'onda: triangolare, dente di sega, impulsiva e rumore bianco.
Per selezionarle si doveva porre a 1 un determinato bit nel quinto registro della voce che si voleva usare.
Se poi si selezionava l'onda impulsiva, si doveva indicare al SID che percentuale dell'onda doveva essere positiva.

Il rapporto PW = P / T * 4095, sotto forma di numero a 12 bit, andava trascritto nel terzo e quarto registro per la voce che si usava, gli 8 bit meno significativi nel terzo e i 4 più significativi nel quarto. Il valore che si ottieneva era:

PW = PWHI * 256 + PWLO

ed in uscita la percentuale positiva dell'impulso era:
(PW / 40.95)%

Se PW = 0, solo livello basso, o PW = 4095 solo livello alto, l'uscita dell'altoparlante era nulla. Se PW = 2047, cioè PWHI = 8 e PWLO = 0, l'onda era quadra. Se R è la percentuale positiva dell'onda impulsiva, allora PW = R * 40.95, e le POKE da fare, ad esempio, nel caso della prima voce erano:

POKE 54274, PWLO
POKE 54275, PWHI

Vediamo perché cambiando la forma d'onda cambiava il suono.

Quando senti una nota essa è generata da un'onda sinusoidale, la cui frequenza è la frequenza del suono e ne definisce in pratica la tonalità (frequenza fondamentale).
Contemporaneamente sono generate altre onde, dette ARMONICHE, la cui caratteristica è avere frequenza multipla per un intero della frequenza fondamentale.
Un'onda sonora perciò è la somma della frequenza fondamentale più tutte le armoniche necessarie per produrla.
A ogni armonica è associato l'intero che dà il rapporto con la frequenza fondamentale, cioè l'armonica numero 1. La seconda armonica ha frequenza doppia, la settima armonica ha frequenza sette volte la fondamentale e cosi via.
Il timbro, cioè la FORMA DELL'ONDA, dipende dalle armoniche che costituiscono il suono e dall'ampiezza di ognuna di esse, quindi tali valori saranno diversi per diverse corde vibranti.

Per le FORME D'ONDA a disposizione valevano queste regole:

- ONDA TRIANGOLARE: solo le armoniche dispari; l'ampiezza di ogni armonica era proporzionale al reciproco del quadrato del numero dell'armonica, cioè, ad esempio, l'armonica numero 5 era ampia 1/25 dell'armonica fondamentale.
- ONDA DENTE DI SEGA: tutte le armoniche; l'ampiezza di ogni armonica era proporzionale al reciproco del numero dell'armonica.
- ONDA QUADRA: solo le armoniche dispari; l'ampiezza di ogni armonica era proporzionale al reciproco del numero dell'armonica (per rapporti R diversi da 50%, cioè per onde rettangolari generiche, la composizione dell'onda impulsiva variava notevolmente).
- RUMORE BIANCO: tutte le armoniche; ampiezza costante per tutte le armoniche.

Per i suoni reali la struttura armonica (cioè le armoniche presenti e la loro ampiezza) è molto più complessa. Per poter ottenere dei suoni più vicini ai reali si poteva ricorrere alla tecnica di filtrare le frequenze superiori o inferiori ad una certa frequenza data.

Un'altra carattetistica che distingue un suono da un altro è il modo di variare di ampiezza nel tempo. Questa caratteristica è detta INVILUPPO del suono (ENVELOPE). Se si preme un tasto del pianoforte il suono raggiunge istantaneamente la massima ampiezza ed altrettanto velocemente si smorza, se percuoti un triangolo il suono si smorza più lentamente.
Il SID disponeva di un GENERATORE Dl INVILUPPO (ENVELOPE GENERATOR) indipendente per ogni voce. Esso permetteva di descrivere l'andamento del volume del suono dividendolo in 4 fasi:

- A: ATTACCO (ATTACK), era il tempo che il suono impiegava per raggiungere il massimo del volume. Con il SID si poteva definirlo da 2 msec a 8 sec.
- D: DECADIMENTO (DECAY), era il tempo che il suono impiegava, dopo aver raggiunto il picco, per calare di intensità fino a zero, oppure fino a un dato livello chiamato di SOSTENIMENTO; da 6 msec a 24 sec.
- S: SOSTENIMENTO (SUSTAIN), era il livello di volume al quale il suono si assestava dopo la fase di decadimento. Si poteva mantenere i suoni a questo livello finché occorreva e poi, con una POKE, iniziare la fase di RILASCIO.
- R: RILASCIO (RELEASE), era il tempo che il suono impiegava per raggiungere il volume zero. Anche per il rilascio i valori variavano da 6 msec a 24 sec.

Molto spesso si faceva cominciare una nuova nota prima che la nota precedente fosse completamente smorzata. Ciò consentiva anche, usando adeguatamente le 3 voci, di creare dei veri e propri inseguimenti tra le note.

Per ognuna delle voci, il sesto e il settimo registro controllavano l'ADSR (Attacco, Decadimento, Sostegno, Rilascio).
Nel sesto registro andavano memorizzati dei valori compresi tra 0 e 15, per selezionare i tempi di attacco e decadimento.

Nel settimo registro andavano memorizzati i valori relativi al sostenimento e al tempo di rilascio.

La procedura tipica per generare una nota era:

- Selezionare ATTACCO, DECADIMENTO, SOSTENIMENTO e RILASCIO per la nota.
- Selezionare le frequenze desiderate ed eventualmente la procedura dell'onda impulsiva.
- Selezionare la forma d'onda e mettere a 1 il primo bit dello stesso registro; questo bit, detto GATE BIT, indicava che la voce era selezionata per suonare e quando veniva riportato a 0 faceva iniziare la fase di rilascio.
By site.melodiosoc64