Darth Xylo, lo XyloSith

Ok è uno Xylosynth ma il gioco di parole era troppo invitante

« Older   Newer »
 
  Share  
.
  1.     +2   Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    Antefatto
    Era una notte buia e tempestosa e tutto iniziò, come quasi sempre, da mia figlia.
    La piccola suona le percussioni e quest'anno, per il saggio di fine anno, c'è in programma un pezzo con la marimba (ora con il corona non sappiamo bene che fine farà il saggio ma ormai è troppo tardi). E' bene specificare che il pezzo con la marimba c'è perché sono tre anni che assilla il maestro con 'sta marimba.

    Insomma, alla fine arriva lo spartito e inizia a provarlo sul suo glockenspiel.
    Tempo due battute e inizio a sentire delle note strane...

    tok tok tok.

    Papi ho finito le note...

    Eh già la marimba ha 4, 5, a volte 6 ottave. Il nostro glock 2 e mezza. Siamo scarsi di almeno un paio di ottave.

    Prima idea: Compriamo una marimba. Bocciata, 3 metri di spazio non li abbiamo e poi dovrei vendere la macchina per comprare la marimba e a quel punto non potrei portarla a casa.
    Seconda idea: Compriamo uno xilofono. Bocciato, uno xilo a 3 ottave 2500€, meno della marimba ma c'è comunque uno zero di troppo per le nostre finanze.
    Terza idea: Costruisco una marimba. 54 tasti di Bubinga, la struttura, i risonatori... Conoscendomi sarebbe stata pronta per la sua laurea, altro che saggio di fine anno (e avrei speso comunque un capitale).
    Ultima idea: Scartiamo ogni velleirà di strumento "classico" e diamoci all'elettronica!

    Ecco dunque come nasce lo XyloSith, il lato oscuro dello Xilofono.

    [edit 15-04-2020]


    Marimba, glockenspiel, xilofono, vibrafono ecc fanno parte della grande famiglia degli idiofoni a percussione diretta. In particolare questi quattro hanno una tastiera identica a quella del pianoforte solo che invece di schiacciare i tasti questi vengono percossi con delle bacchette. Alcuni strumenti hanno i tasti di legno (marimba, xilofono) altri di metallo (glockenspiel, vibrafono) ma il funzionamento è identico. Ogni tasto viene accordato su una determinata frequenza di risonanza ed emette quel suono quando viene percosso.
    La versione presentata in questo post è quanto di più distante esista dalla versione acustica, Darth Xylo è controller MIDI.
    Dividerò logicamente l'oggetto in tre aree:
    - meccanica (plancia e tasti)
    - elettronica (cattura del segnale)
    - informatica (elaborazione e trasmissione del segnale)

    Meccanica
    Darth Xylo deve permetterci di "emulare" uno xylofono (4 ottave o più) e deve essere anche trasportabile.
    Il problema principale è che con tasti da 3-4cm i 35 tasti (7 toni x 5 ottave) occuperebbero dal metro e venti al metro e settana in base allo spazio tra i tasti e a quanto fare largo il singolo tasto. Un oggetto decisamente impegnativo da tenere in casa.
    La soluzione che ho studiato adotta una logica modulare, in modo da poter impilare le 5 ottave quando lo strumento non è utilizzato e ricomposto in fila quando viene suonato. Questa impostazione permette anche di scegliere quante ottave costruire senza dover riprogettare tutto.

    sviluppoimpilo
    Pronto per suonareFacile da riporre e trasportare


    I tasti
    I tasti devono essere sufficientemente duri da non "bollarsi" a seguito delle "martellate" date dalle bacchette, devono anche essere descretamente insonorizati visto che non sono loro a produrre il suono direttamente. Le misure che ho scelto sono 38x100mm (ho comprato delle liste da 40 e le ho rifilate)
    L'attuale soluzione è un sandwich di insonorizzante, abete, aria, koto:
    tasto
    Ogni tasto ospita un sensore piezoelettrico che verrà descritto nella sezione dedicata all'elettronica.

    Qui sopra il particolare del "sovratasto" di koto impregnato con una tinta tipo wenge. La zona "aria" viene ottenuta con due strisce di spugna insonorizzante (quelle bianche) che rialzano il koto e lasciano lo spazio necessario al piezo.
    Il tasto completo ha uno spessore di 21mm. 3mm di spugna, 10mm di abete, 3mm di aria, 5mm di koto

    La plancia
    La plancia è un parallelepipedo 294 di larghezza per 248mm con altezza 30mm. I tasti (38mm x 100mm) sono intervallati tra loro da 4mm di spazio tranne il primo e l'ultimo che sono a 2mm dal bordo (che sommati ai 2mm del vicino della plancia successiva o precedente fanno di nuovo 4mm).
    framesotto
    SopraSotto


    Le misure non sono critiche, i tasti della marimba "classica" sono molto più grossi e in alcuni modelli i tasti bassi sono più larghi di quelli alti. Nel mio caso ho preferito mantenere le dimensioni fisse. Il fondo della scatola è fissato tramite viti e comprende un'altro stato di spugna fonoisolante per smorzare ulteriormente vibrazioni spurie.

    Elettronica
    Il cuore del controller è una piccola scheda (tipo Arduino) basata su microprocessore STM32F103. Questo micro è molto veloce (clock a 72Mhz) e soprattutto molto economico, se avete la pazienza di aspettare potete comprarne 5 per meno di 8€ dalla Cina oppure uno a 5€ in Europa (su ebay). Potete usare qualsiasi scheda di sviluppo disponibile sul mercato escludendo quelle più lente (gli Arduino classici, UNO, micro ecc non penso abbiano la velocità necessaria ma la DUE va benissimo anche se costa un sacco).
    STM32F103C8T6-Blue-Pill-Pin-Layout
    Come potete vedere questa scheda ha "solo" 10 ingressi analogici (ADC in verde) mentre noi vogliamo 5ottave, quindi 60 tasti. Per inciso non ho trovato in commercio nessuna scheda di questo genere con 60 ingressi analogici quindi dovremo usare un trucchetto.
    Ogni tasto di ogni ottava verrà multiplexato per poter essere acquisito da un solo ingresso analogico (un ingresso per ogni ottava). Questo approccio impedisce l'acquisizione contemporanea di più segnali all'interno di un'ottava ma andando abbastanza veloce il problema si aggira facilmente.

    [edit 17-04-2020]


    Il Multiplexer è un componente elettronico che collega un ingresso (tra quelli disponibili) all'uscita in base al codice presente sui pin di indirizzamento. Il nostro dovrà essere necessariamente analogico (deve portare il segnale proveniente dai piezo) e avere almeno 12 ingressi.
    Il CD74HC4067 è perfetto ed è anche disponibile premontato su comode basette.
    Questo chip ha un ingresso aggiuntivo (EN = enable) che permette di accendere/spegnere il chip ma per questo progetto ho deciso di non usarlo. Le opzioni erano due, collegare i 5 multiplexer (uno per ogni ottava) allo stesso pin analogico e accendere solo un chip alla volta per effettuare la rilevazione oppure collegare ogni chip a un ingresso analogico "privato" e lasciarli sempre tutti accesi. Con il secondo approccio si usa un "filo" in meno (5 analogici contro 1 analogico + 5 enable) e volendo è possibile, teoricamente, acquisire contemporaneamente i cinque segnali (cosa non vera in pratica perché anche all'interno del microprocessore c'è un multiplexer).
    Per ogni piezo sono state aggiunte le canoniche resistenze in parallelo (1Mohm) e anche un diodo zener che "clippa" il segnale in ingresso a 3.3V perché senza ho rilevato dei picchi di tensione notevoli (anche 20Volt) che avevano come effetto di "bucare" l'isolamento interno dei canali del multiplexer saltando da un canale all'atro (in pratica suonando un tasto la tensione saltava fuori anche sugli altri tasti, sono impazzito non poco per capirlo).
    Screenshot_from_2020-04-17_12-08-26
    Per leggere un singolo tasto imposto il suo indirizzo in binario sugli ingressi "matrix" (0000 per il P00, 1100 per il P12) e sull'uscita Y del multiplexer leggo il segnale proveniente. Se ciclo abbastranza velocemente ma matrice posso considerare di poter leggere in contemporanea (quasi) i 12 tasti. Gli ingressi non utilizzati X12-X16 è bene collegarli a massa per evitare casini.
    Dei 5 moduli-ottava solo uno conterrà il microprocessore, gli altri avranno solo il proprio multiplexer. Per collegare in maniera agevole un modulo al successivo ho usato dei semplici connettori DSUB-9, quelli della vecchia porta seriale per intenderci.

    Montati in maniera tale da incastrarsi quando si affiancano due moduli.

    I nove pin disponibili (10 considerando anche l'involucro metallico) sono così utlizzati:
    - 4 analogici (il quinto segnale non deve essere trasportato perchè il suo multiplexer è nello stesso modulo del micro)
    - 4 digitali per indirizzare i multiplexer (matrix)
    - 1 alimentazione +
    - 1 alimentazione massa (l'involucro appunto)
    Volendo aggiungere più moduli-ottave si possono usare i fratelli maggiorni del DSUB-9: il DSUB-15 (10 ottave) o il DSUB-25 (quello della porta parallela per 20 ottave). Tenete presente che i segnali midi per le note sono solo 127 quindi un massimo di 10 ottave e mezza. Per portare più segnali bisognerebbe usare più canali midi ma a questo punto sarebbe più conveniente e flessibile fare due controller separati.

    Edited by Erik Forken - 17/4/2020, 12:39
     
    .
  2.     +2   Like  
     
    .
    Avatar

    Junior Member

    Group
    Member
    Posts
    93
    Reputation
    +42
    Location
    La Spezia, Italy

    Status
    Offline
    Questo progetto è bellissimo! La marimba è uno strumento che adoro, mi fa molto felice sapere che qualcuno lo suoni e da quello che racconti pare che tua figlia sia veramente molto appassionata! Alla fine del diario potresti postarci qualche sample suonato da lei, saremo tutti felici di farvi i nostri complimenti! Certo non è come fare il saggio ma in tempo di quarantena questo è il pubblico che passa il convento :)
     
    .
  3.     +1   Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    Il post è in continuo aggiornamento
     
    .
  4.     +1   Like  
     
    .
    Avatar

    hobbista incallito

    Group
    Administrator
    Posts
    4,499
    Reputation
    +562

    Status
    Anonymous
    Diario strepitoso, Erik! :wow:

    Giornata lavorativa terrificante, aspetterò domani per spammare il topic su Telegram ed altrove. ;)
     
    .
  5.     +1   Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    Prenditi tutto il tempo che vuoi, intanto io lo finisco, manca ancora un bel po' di roba
     
    .
  6.     Like  
     
    .
    Avatar

    GEPPLETTRO

    Group
    Circolo Acustico
    Posts
    124
    Reputation
    +30
    Location
    Roma

    Status
    Offline
    Ke figata... Aspettiamo di sentirlo... Mi ci manca propio una nuova fissa. :)
     
    .
  7.     Like  
     
    .
    Avatar

    Member

    Group
    Administrator
    Posts
    998
    Reputation
    +615

    Status
    Offline
    Fantastico diario, e geniale anche l'idea delle "ottave modulari", probabilmente in questo modo potresti anche "espandere" successivamente lo strumento a più di 5 ottave, o addirittura utilizzarne meno in contesti dove potrebbe essere conveniente farlo.
     
    .
  8.     Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    In effetti è anche stato comodo in fase di debug. Ho fatto la prima ottava e mi sono concentrato su quella, una volta raggiunto il risultato desiderato ho costruito la seconda ed era già suonabile, poi ho fatto la terza, ora sto finendo la quarta.
     
    .
  9.     Like  
     
    .
    Avatar

    Member

    Group
    Administrator
    Posts
    998
    Reputation
    +615

    Status
    Offline
    Non so se la cosa complicherebbe molto la parte della programmazione, in particolare quella della gestione degli evemti midi, ma potresti pensare ad un pedale del sustain, in modo da poterla fare lavorare anche come un vibrafono.

    L'idea mi è venuta stamattina nel dormiveglia, perchè, dato che ho un nipote ingegnere, che suona anche il sax, mi era balenata l'idea di proporgli, ispirandoci al tuo progetto, di costruire un sax-synth con delle caratteristiche particolari :).
     
    .
  10.     Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    L'idea mi piace, è sicuramente fattibile, anche se lo farei come controller separato
     
    .
  11.     Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    Nuovo update!
     
    .
  12.     Like  
     
    .
    Avatar

    Member

    Group
    Administrator
    Posts
    998
    Reputation
    +615

    Status
    Offline
    L'idea mi è venuta pensando a come avrei potuto gestire la variazione di pressione e quindi la dinamica nelle note "tenute" del sax, e pensavo di farlo leggendo la pressione dal sensore e tramutandone i valori con un aftertouch.

    Però il sax sarebbe monofonico e quindi dovrei gestire una sola nota alla volta (salvo implementazioni strane... ;)). Credo che per gestire il sustain nello XiloSynth sarebbe necessario tenere un buffer delle note per le quali è stato inviato il messaggio key on, da tenere in memoria per gestire le variazioni fino al key off, qualcosa tipo una lista linkata. E' vero che non dovendo gestire variazioni nelle note, se non la loro durata, potresti realizzare il tutto implementando il pedale del sustain come uno switch che finchè rimane premuto blocca il key off delle note, inviandolo solo al rilascio, ma forse dovresti gestire anche il decay della nota per avere un effetto più "naturale".

    Sono idee buttate alla rinfusa.
     
    .
  13.     Like  
     
    .
    Avatar

    Member

    Group
    Administrator
    Posts
    998
    Reputation
    +615

    Status
    Offline
    CITAZIONE (Erik Forken @ 17/4/2020, 12:47) 
    Nuovo update!

    Bellissimo, e spiegazione chiarissima anche per un ignorante in materia come me.

    Per la programmazione del firmware cosa usi, C/C++?
     
    .
  14.     Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    Grazie, uso l'ambiente di Arduino quindi simil C/C++. Per quanto riguarda le spiegazioni ditemi pure se ci sono dei punti oscuri che li sviluppo meglio.
     
    .
  15.     Like  
     
    .
    Avatar

    Advanced Member

    Group
    Seguaci
    Posts
    2,704
    Reputation
    +145

    Status
    Anonymous
    CITAZIONE (Alberto Capuzzo @ 17/4/2020, 12:58) 
    L'idea mi è venuta pensando a come avrei potuto gestire la variazione di pressione e quindi la dinamica nelle note "tenute" del sax, e pensavo di farlo leggendo la pressione dal sensore e tramutandone i valori con un aftertouch.

    Però il sax sarebbe monofonico e quindi dovrei gestire una sola nota alla volta (salvo implementazioni strane... ;)). Credo che per gestire il sustain nello XiloSynth sarebbe necessario tenere un buffer delle note per le quali è stato inviato il messaggio key on, da tenere in memoria per gestire le variazioni fino al key off, qualcosa tipo una lista linkata. E' vero che non dovendo gestire variazioni nelle note, se non la loro durata, potresti realizzare il tutto implementando il pedale del sustain come uno switch che finchè rimane premuto blocca il key off delle note, inviandolo solo al rilascio, ma forse dovresti gestire anche il decay della nota per avere un effetto più "naturale".

    Sono idee buttate alla rinfusa.

    Gli strumenti MIDI (intesi come sample, non come oggetti fisici) in alcuni casi prevedono una durata della nota, in altri no. Strumenti tipo l'organo o gli archi, hanno un sustain infinito e devono essere spenti con un key off (che è un'istruzione MIDI a se stante). Nel caso dei fiati non ho provato ma ad occhio direi che si comportano come gli archi.
    Quì però si aprirebbe una parentesi sulla suonabilità dello strumento. voreste fare una "cosa" che abbia il suono di un sax o un sax MIDI che emuli look&feel? Nel primo caso puoi fare un controller con una forma a piacere, nel secondo caso invece ci andrebbe un po' più di analisi.

    1) in un fiato la nota viene impostata con le dita (nel sax, un tasto una nota o combinazione di tasti una nota tipo flauto?).
    2) l'accensione e la pressione sonora sono regolate dal flusso d'aria immesso nel bocchino.
    3) non penso, ma ne so poco, che i tasti possano essere poco premuti o mezzo-premuti per variare il suono.

    Se questi punti sono corretti io userei dei tasti on-off per i tasti delle note e mi concentrerei a cercare/creare un flussimetro per misurare la potenza del soffio il key off lo mandi quando il flusso arriva nei pressi di 0.
     
    .
16 replies since 14/4/2020, 22:16   557 views
  Share  
.