2020/06/27

Forme d'onda

Di sicuro non è possibile ottenere timbri interessanti usando solo una bella sinusoide. Il sintetizzatore ha quindi delle forme d’onda di base per creare diversi timbri. Nei preset dovrebbe essere memorizzata, tramite indice, anche la forma d’onda di partenza insieme agli altri parametri. Non so ancora come avveniva questa selezione (quale combinazione di tasti controllo e tastiera?)

All’inizio mi ricordo che era possibile sovrascrivere un preset senza tanti complimenti. Poi aggiunse un suono d’allarme per indicare che si stava per sovrascrivere un preset, e a quel punto l’operatore del sintetizzatore doveva confermare o interrompere la memorizzazione (per poi magari selezionare un altro slot).

Nel codice c’è un array di waves:

const int8_t *Waves[] = {
  sine, sine2, triangle, triangle2, ramp, ramp2, trapezio, organ,
  hammond, bassoon, oboe, boh,
  violin, boh2, boh3, boh4, sax, boh5, boh6, boh7,
  boh8, boh9, oboe, boh
};

Chiaramente stava sperimentando per ottenere timbri interessanti o per imitare i timbri di alcuni strumenti noti a partire da forme d’onda adatte allo scopo, come per esempio organo, hammond, fagotto, oboe, violino. Gli altri erano non meglio definiti. Stava sicuramente anche cercando in giro dei campioni da cui attingere.

Per esempio il fagotto era:

const int8_t bassoon[256] PROGMEM = {
  0,16,32,47,62,75,87,98,107,115,121,125,127,127,126,123,118,112,105,
  97,89,79,70,60,51,42,33,25,18,11,5,1,-3,-6,-8,-9,-10,-9,-8,-7,-5,
  -3,-1,1,3,5,7,8,10,11,11,11,11,11,10,9,8,7,6,5,3,2,1,0,-1,-2,-2,
  -3,-3,-3,-3,-3,-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,
  2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,1,1,1,1,0,0,0,0,0,-1,-1,0,
  0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,-1,-1,-1,-1,-2,-2,-2,-3,-3,-3,-3,
  -3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,
  -1,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,3,3,3,2,2,1,0,-1,-2,-3,-5,-6,
  -7,-8,-9,-10,-11,-11,-11,-11,-11,-10,-8,-7,-5,-3,-1,1,3,5,7,8,9,
  10,9,8,6,3,-1,-5,-11,-18,-25,-33,-42,-51,-60,-70,-79,-89,-97,-105,
  -112,-118,-123,-126,-127,-127,-125,-121,-115,-107,-98,-87,-75,-62,
  -47,-32,-16
};

Valori estratti a mano o generati a mano o…? Non so.

Alcune forme d’onda hanno delle “implementazioni” alternative.

Di seguito le varie forme d’onda graficate rapidamente con gnuplot.1























  1. Ho usato un script awk per estrarle dal file waves.h, e poi con un bel Makefile e gnuplot…↩︎

Nessun commento:

Posta un commento

Commenta solo per dare un contributo utile, una critica costruttiva o fare un'osservazione acuta. Non commentare solo per dire che esisti anche tu o che ti piace o dispiace quello che hai letto e visto su questo blog.