Creare un Barber’s Pole Booleano (!!!)

Written by Roland Kuit on . Posted in Tutorial

All’interno delle iniziative di Audio Central Magazine c’è – come dovrebbe ormai apparire evidente – la divulgazione della cultura sintetica, cioè del come e perchè un sintetizzatore, hardware o software che sia, funzioni in un certo modo. A questo proposito, oltre a ospitare un fenomenale seminario di Roland Kuit (cortesia della Sonus Factory di Roma, il tutto avverrà a Gennaio 2013…), abbiamo chiesto a Roland Kuit un assaggio delle sue indiscusse capacità operative.

E’ quindi con soddisfazione (e onore) che ACM ospita questa pagina firmata da Roland, sulla costruzione del classico suono paradossale Barber’s Pole all’interno della piattaforma Clavia Nord Modular G2.

di Roland Kuit

Premessa: Per far suonare le patches contenute nell’articolo, è necessaria la versione Demo di Clavia NMG2, che è reperibile a questo link:, riportato per comodità: http://www.clavia.se/products/nordmodular/demo.htm

Attenzione! Se state leggendo queste pagine con Opera o con Chrome (o con Firefox), cliccando sulle immagini, si innesca il download delle patches all’interno del NMG2 Demo; il meccanismo automatico non funziona in Safari, pertanto, se state leggendo in Safari, cliccando sulle immagini, trasferirete le patches all’interno della cartella Downloads.

Un tono di Shepard, così chiamato da Roger Shepard è un suono costituito dalla sovrapposizione di onde sinusoidi separate da ottave di distanza. Quando eseguito, con intonazione del tono che si sposta avanti o indietro, viene chiamato scala di Shepard. L’effetto crea l’illusione sonora di un segnale che salga o scenda continuamente in intonazione, anche se in definitiva non diventa più alto o più basso [dei limiti imposti]. Un effetto del genere è stato descritto come “il corrispondente sonoro dell’insegna del barbiere” [il Barber’s Pole, appunto]. L’illusione acustica può essere costruita creano una serie di scale ascendenti o discendenti che si sovrappongono (Wikipedia).

 

La logica Booelana, originalmente sviluppata da George Boole a metà del 1800, permette di mappare diverse cose inaspettate tra i bits e i byte.

La cosa più grande, con la logica Booleana, è che è molto semplice.

Logic Gate sono: NOT, AND, OR, XOR, NAND, NOR e XNOR.

Con questi semplici gate, si possono costruire combinazioni con cui implementare qualsiasi componente digitale immaginabile.

Nella sintesi modulare siamo abituati a usare i comportamenti logici come funzioni di trigger. Ad esempio, semplici circuiti On/Off estratti dai sequencer per triggerare generatori di inviluppo, eccetera. Nel mio eBook, spiego come costruire sequenze molto complesse. La patch con cui avremo a che fare ora è relativamente semplice, ma useremo i circuiti logici in una maniera diversa. Come dire: l’altra faccia della logica… In questa patch, imparerete come costruire un oscillatore, un LFO, eccetera, fino a creare una struttura che produce segnali audio! Come probabilmente saprete, un oscillatore è un circuito che alterna il proprio comportamento dal livello più alto a quello più basso. Il tutto, in maniera ripetitiva.

Sapendo questo, dobbiamo cercare un semplice componente logico che offra questo comportamento switching, da interruttore. Lo troviamo nel comportamento logic gate NOT. E’ un invertitore logico che converte valori positivi in negativi e viceversa. Il gate più semplice possibile è chiamato “inverter”, o gate NOT: prende un bit al suo ingresso e, all’uscita, produce il suo opposto. La tabella qui sotto mostra i comportamenti logici ottenibili con il gate NOT rispettando la normale simbologia dei diagrammi di circuito:

A  Q

0  1

1  0

Collegando l’uscita all’ingresso del modulo, si crea un loop. E, come vediamo, si produce il suono. L’audio a 96 kHz è un pochino troppo alto per le nostre orecchie, quindi dobbiamo trovare il modo di accordarlo.

Un modulo di Logic Divider potrebbe tornare comodo, ma produrrebbe un risultato troppo statico e di scarsa utilità per i nostri scopi. Noi vogliamo creare un oscillatore e, quindi, dobbiamo essere in grado di modulare la sua intonazione.

Possiamo rallentare la frequenza audio (o la velocità) usando un modulo Logic Delay:

Aumentando il delay, girando il potenziometro, abbasseremo la frequenza generata. Un modo più elegante per ottenere un buon risultato consiste nell’utilizzare un modulo Constant:

Cosa è successo? Il suono si è abbassato parecchio!

Possiamo utilizzare [nel modulo Logic Delay] il tasto Sub/Low/High, ma preferiamo non farlo. Usiamo il menu a tendina nello stesso modulo Logic Delay;  possiamo scegliere

  • il comportamento Positive Edge Delay (verrà sottoposto a ritardo il solo fronte ripido positivo del segnale in ingresso),
  • il comportamento Negative Edge Delay (verrà sottoposto a ritardo il solo fronte ripido negativo del segnale in ingresso),
  • il comportamento Cycle Delay (l’intero ciclo del segnale in ingresso sarà sottoposto a ritardo).

Abbiamo creato un oscillatore logico autonomo con un ingresso di modulazione. Il modulo Constant (chiamiamolo Tune) modulerà la frequenza.

 

Il passo successivo

Creare un LFO con un’onda rampa ascendente è lievemente più complesso. Per prima cosa, dobbiamo impadronirci di altri comportamenti di Logic Gate.

Il comportamento logico AND:

A   B    Result   Carry

0   0     0           0       Se A è 0 AND B è 0, Q è 0

0   1     1            0       Se A è 0 AND B è 1, Q è 0

1   0     1            0       Se A è 1 AND B è 0, Q è 0

1   1     1            1        Se A è 1 AND B è 1, Q è 1

L’operazione AND dice che se e solo se tutti gli ingressi sono attivi, l’uscita sarà attiva.

Per dimostrare un comportamento gate NAND, abbiamo bisogno di una logica combinatoria.

Il profilo scalare ottenuto con i comportamenti logici potrebbe essere un gate AND, seguito da un gate NOT

In questo caso, la tavola della verità per questo circuito logico sarebbe:

A  B  Result

1  1   0

1  0  1

0  1  1

0  0  0

Quando usiamo il menu a tendina del modulo logico Gate, possiamo scegliere direttamente il comportamento NAND.

La combinazione di questi comportamenti forma un modulo Flip-Flop.

Il flip-flop, o latch è un circuito che ha due stati stabili e che può essere utilizzato per memorizzare informazioni. Il circuito può essere fatto cambiare stato attraverso un segnale applicato a uno o più ingressi di controllo e avrà uno o due uscite.

E’ l’elemento base di immagazzinamento dati nella logica sequenziale costruito con tre gate NAND:

Un generatore di clock (modulo Clock Generator) triggera  un generatore di pattern (modulo Pattern Generator). Il modulo Compare Level genera un segnale di trigger usato per triggerare un Percussion Oscillator.

Abbiamo bisogno di questo circuito Flip-Flop per creare un modulo BinCounter [contatore binario]. Quest’ultimo è un circuito digitale che ha un ingresso di clock e un numero di uscite di computo che producono il numero di cicli di clock intercorsi. Una fila sequenziale di Flip-Flops può formare un Bin Counter.

Qui sotto, un esempio:

Possiamo vedere il trigger decay in sequenza attraverso tutti i moduli Flip-Flop. E’ quello di cui abbiamo bisogno.

Ora, costruiamo il nostro modulo LFO:

collega patch LFO ramp wave

Il Clock Generator triggera il modulo Binary Counter. Le sue uscite sono invertite, in modo da ottenere una forma d’onda rampa.

Il modulo Digital to Analog Converter realizza da un ingresso logico un segnale di modulazione analogico per il modulo Logic Delay che in loop con il Logic Inverter per creare un oscillatore logico autonomo.

E ora, finalmente, ecco:

Il Boolean Barber’s Pole

Per limitare l’uscita del LFO, lasciamo inutilizzati gli ingressi D0 e D7 del DAConverter. Occorre premere il tasto di Reset e implementare una coppia di filtri High Pass e Low Pass per smussare il segnale in uscita.

C’è un modo diverso e più elegante per creare il Barber’s Pole utilizzando i moduli Shift Register.

Uno shift register [registro a scorrimento] è una cascata di Flip-Flop che condividono lo stesso segnale di clock, nel quale l’uscita di ciascun Flip-Flop è connessa all’ingresso “dati” del Flip-Flop successivo nella catena, per ottenere una struttura che sposta di una posizione il bit array [cioè una sequenza di bit] memorizzato al suo interno, facendo scorrere i dati presentati al suo ingresso e facendo scorrere fuori l’ultimo bit contenuto nell’array ad ogni transizione ricevuta all’ingresso di clock. Più genericamente, uno shift register può essere multidimensiinale, in modo che il suo “ingresso dati” e gli stadi di uscita siano a loro volta array di bit: questo si ottiene semplicemente mandando in parallelo diversi shift register con la stessa lunghezza (Wikipedia).

Qui sotto, una struttura di Shift Registering sul control data:

Spero che questo testo vi sia piaciuto

 

Roland Kuit

© 2012 Roland Emile Kuit – per gentile concessione.

 

 

Tags: , , , , ,

Trackback from your site.

Comments (15)

  • Antonio Antetomaso

    |

    Complimenti per l’iniziativa e l’articolo.
    Il tutto davvero molto interessante….personalmente, mi sembra di essere tornato indietro all’esame di reti logiche che, strizza a parte, è uno degli esami che mi è piaciuto di più.
    Non vedo l’ora di seguire il seminario.
    Grazie.

    Reply

  • Lorenzo

    |

    Veramente mozzafiato!
    Non vedo l’ora di riuscire a implementarlo!

    Reply

  • nICO

    |

    Azz… bellissimo articolo, per capire tutto perbene però DEVO riprodurre il tutto con le mie mani!

    Reply

  • Iro

    |

    oddio mò mi metto a farlo, sono curioso di sentire il risultato. Io lo producevo nel dominio analogico con una doppia sinusoide in sweep passati sotto un filtro a campana….ma questo mi pare mooolto più sollucchevole, magari però provo con reaktor o isadora che mi ci trovo meglio!

    Reply

    • Enrico Cosimi

      |

      con reaktor, di sicuro fatichi di più, però hai maggior libertà di manovra…

      Reply

  • nicola

    |

    ogni volta che leggo barber pole effect mi ricordo sempre del modulo buchla 297 con phaser incorporato , lo stesso effetto è presente nel modulo 260 con due oscillatori che fanno qualcosa che adesso non ricordo! ma si sa , il buchla è troppo costoso mannnaggiaah!

    Reply

    • Enrico Cosimi

      |

      probabilmente, quello è il modulo più irritante ( :-) ) di tutto il sistema buchla…

      Reply

      • nicola

        |

        hehehe perchè :)

        Reply

      • nicola

        |

        ma perchè costa molto?
        bhe buchla è super caro e fa incazzare parecchio cavolo!

        Reply

  • Enrico Cosimi

    |

    perchè serve solo a fare una cosa… e per quello che ti chiedono, è uno sfizio che rischia di costare molto caro 😉

    Reply

  • nicola

    |

    sono daccordissimo, se poi sistono delle possibilità più economiche anche se digitali, uno va dove spende meno , non dove gli rubano i soldi!
    eheh

    Reply

Leave a comment

Inserisci il numero mancante: *

ga('send', 'pageview');