Il carillon consiste di due voci (basso e melodia) generate casualmente sulla base di una scala pentatonica, anch'essa scelta casualmente.
La sequenza di base sono 4 battute da 4/4.
Il basso si muove sul quarto di nota, su un pattern di 2 battute ripetuto due volte.
La melodia è composta con ottavi di nota ed eventualmente pause, su un pattern completo di 4 battute. La melodia si muove ad almeno un'ottava sopra al basso.
Il primo giro di basso avviene senza la melodia, che entra in una delle seguenti battute, in base a una scelta casuale.
Dopo ogni giro completo di 4 battute, l'algoritmo decide se rigenerare le note del basso o della melodia o di entrambi.
La pressione di un pulsante esterno genera un interrupt che resetta l'algoritmo, impostando una nuova scala e un nuovo tempo.
Le scale pentatoniche memorizzate sono 24, 12 maggiori e 12 minori.
Il tempo di esecuzione può assumere uno dei valori preimpostati: 60, 90, 120, 180.
Dettagli Tecnici
Uno switch software, da abilitare in fase di compilazione, aggiunge un ulteriore grado di variabilità, permettendo in fase di esecuzione l'alterazione momentanea di una nota della melodia di un semitono (viene eseguito il grado corrispondente della scala pentatonica immediatamente precedente o successiva a quella corrente).
La casualità delle variazioni nella struttura della melodia non è uniforme, ma è possibile impostare un peso per renderla più o meno variabile. Ad esempio mentre la scelta della scala e del tempo è equiprobabile, la probalitità che la melodia venga attivata dopo il primo giro di basso è del 75%, mentre la probabilità che una nota venga alterata di un semitono è del 10% (se l'alterazione è abilitata). Infine la probabilità che dopo un giro il basso o la melodia venga ricreata è del 50%. Tutti questi pesi sono costanti che possono essere impostate al momento della compilazione.
La generazione del suono avviene tramite due uscite PWM a ciu è collegato un trasduttore piezo. E' stata utilizzata la Tone Library by Rogue Robotics Open Source Code:
http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation
Un'uscita digitale varia in base al tempo di esecuzione, potendo far lampeggiare dei LED a tempo di musica.
Tre uscite invece sono configurate per pilotare un LED RGB il cui colore continua a variare in base al tempo e la frequenza delle note suonate.
Futuri Sviluppi Sperimentali
Sostituzione della generazione interna dei suoni con un'uscita MIDI in modo da utilizzare hardware musicale esterno.
Uscite digitali per pilotare solenoidi o servomotori a tempo di musica.
Implementazione di un approccio microtonale.