PDSynth-00: un controller DIY con Arduino

Reading Time: 4 minutes

PDSynth-00 è il primo prototipo di controller DIY realizzato da Artis Lab nella primavera del 2016.

Nasce dall’idea di realizzare un controller seriale basato su Arduino Uno capace di controllare le architetture di sintesi ed elaborazione del suono realizzate con il toolkit PDSynth. Da questa prima idea, con il tempo e la sperimentazione le possibilità di utilizzo del PDSynth-00 si sono allargate molto. Questa esperienza ci ha spinto a esplorare l’idea di realizzare delle Dynamic Sound Machine , ossia dei dispositivi riprogrammabili che offrono agli utenti la possibilità di estenderne e modificarne il funzionamento.

PDSynth-00 è il nostro primo esempio di uno strumento musicale elettronico riprogrammabile che può assolvere a funzioni diverse a seconda del software che viene caricato all’interno della scheda Arduino.

E’ dotato di sei potenziometri a slitta e di dodici pulsanti. Il tutto è contenuto in un semplice e leggero contenitore realizzato in multistrato sagomato mediante tagliatrice laser.

Progetto PDSynth-00
Il progetto del PDSynth-00

Controller DIY

L’utilizzo come controller esterno può essere realizzato tramite il protocollo Firmata. Caricando questo programma sulla scheda Arduino contenuta nel PDSynth-00 è possibile interfacciare il dispositivo con Pure Data, Max/MSP, Processing e con qualsiasi altro software capace di ricevere i messaggi inviati da Arduino sulla porta seriale. I dati relativi alla posizione dei sei cursori e allo stato dei pulsanti possono essere inviati al programma in ascolto sulla porta seriale e utilizzati per compiere azione o modificare parametri. Il PDSynth-00 può essere anche utilizzato come controller MIDI tramite l’utilizzo di software adatti a trasferire i dati provenienti da Arduino in dati disponibili su di una porta MIDI (è possibile utilizzare LoopBe1 e Hairless Midi Serial Bridge, oppure anche Midi Yoke e altri software simili).

Questo video mostra il PDSynth-00 in azione come controller di una patch di Pd creata utilizzando il toolkit PDSynth.

L’utilizzo della piattaforma Arduino ci ha spinto a esplorare la possibilità di sperimentare altri modi di utilizzo del nostro prototipo. Per questo motivo abbiamo cominciato a valutare l’idea di realizzare dispositivi aperti in cui la riprogrammabilità, lasciando una porta aperta alle azioni e alla creatività dell’utente, consente di realizzare degli strumenti dotati di funzionalità che possono essere ampliate e modificate attraverso la modifica del software.

Step sequencer

Per questo motivo, quasi da subito, abbiamo aggiunto al nostro prototipo una uscita audio connessa alla porta digitale 9 di Arduino (sacrificando l’utilizzo di uno dei pulsanti) in tal modo diventa possibile usare il PDSynth-00 anche come un generatore di segnali audio. Come prima applicazione abbiamo provato ad utilizzarlo come step sequencer a 8bit riutilizzando il codice che avevamo sviluppato tempo prima per realizzare lo step sequencer (il codice è disponibile all’interno del tutorial Come programmare uno step sequencer con Arduino, ci è bastato cambiare la variabile speaker=9 per impostare correttamente la porta di uscita utilizzata da PDSynth-00).

PDSynth-1-LowRes
PDSynth-00 Maggio 2016

Come è visibile nella foto, abbiamo anche aggiunto una uscita MIDI connessa alla porta TX di Arduino che rende possibile l’uso del PDSynth-00 come sequencer e controller MIDI.

Il funzionamento da step sequencer consente di produrre delle sequenze di toni a 8bit creati usando la funzione tone() di Arduino. A seconda della posizione dei sei potenziometri a slitta è possibile modificare la successione delle altezze dei suoni generati da Arduino. PDSynth-00 può funzionare sia come step sequencer audio generando dei suoni che possono essere ascoltati connettendo un piccolo altoparlante o un mixer all’uscita audio oppure può generare delle note MIDI che possono essere inviate attraverso l’uscita MIDI ad altri strumenti esterni. A seconda del codice utilizzato è anche possibile integrare le due funzionalità assieme facendo generare contemporaneamente sia il suono sia i segnali MIDI.

Synth stand alone

In seguito abbiamo ampliato le possibilità sonore del nostro prototipo cominciando ad utilizzare la libreria MOZZI (Sound Synthesis Library for Arduino). Con questa libreria è possibile realizzare in maniera abbastanza semplice dei sistemi di sintesi ed elaborazione del suono. In particolare per il nostro PDSynth-00 abbiamo creato un codice che simula un oscillatore audio controllato da due LFO (Low Frequency Oscillator) che controllano il Tremolo e il Vibrato dell’oscillatore audio e un filtro passa banda che filtra il segnale prodotto dall’oscillatore. In questo esempio presentiamo il codice di Arduino creato appositamente per questa applicazione.

Il primo cursore di PDSynth-00 viene utilizzato per controllare la frequenza dell’oscillatore che crea un segnale caratterizzato da un’onda a dente di sega, il secondo controlla la frequenza del LFO che genera il tremolo, il terzo cambia la quantità del tremolo (depth). Il quarto e il quinto potenziometro controllano la frequenza e la quantità (depth) del LFO che genera il vibrato. Infine, il sesto potenziometro controlla la frequenza centrale del filtro passa banda usato per filtrare il segnale prodotto dall’oscillatore audio.

Questa traccia demo è stata realizzata utilizzando il PDSynth-00. Per realizzare questa traccia il prototipo è stato programmato con una estensione del codice illustrato in precedenza. Sono state aggiunte alcune funzionalità aggiuntive controllate attraverso i pulsanti per poter modificare le forme d’onda prodotte dall’oscillatore (sinusoidale, onda quadra, dente di sega e onda triangolare) e dai due LFO. In più è stato aggiunto un sequencer automatico che genera delle sequenze casuali di altezze attivabile attraverso uno dei pulsanti. La traccia è stata realizzata usando anche una batteria elettronica Korg DDD 5, un pedale Moog che realizza la ring modulation e un delay analogico della Electro-harmonix.

Informazioni tecniche

Dimensioni: 18,5cm*13cm*4cm

Scheda: Arduino Uno

Sei potenziometri a slitta

Undici pulsanti

Uscita audio collegata alla porta digitale 9 di Arduino

Uscita MIDI collegata alla porta TX di Arduino

Schemi

2 thoughts to “PDSynth-00: un controller DIY con Arduino”

  1. Ciao Ragazzi,
    vorrei usare il vostro controller ma non riesco a trovare lo schematico completo con potenziometri e pulsanti.
    Ho provato a seguire i vari link ma sono finito in un loop e tornato al punto di partenza..
    Mi date una dritta?
    Grazie mille

    1. Ciao Grazie per l’interesse verso il nostro progetto.
      Purtroppo non abbiamo mai realizzato uno schema completo che documenti l’intero progetto. In particolare i pulsanti, nel primo prototipo, sono stati collegati utilizzando uno schema che impiega una resistenza di PullUp che puoi facilmente trovare facendo una ricerca sui motori di ricerca. Nei prototipi successivi abbiamo eliminato la resistenza di PullUp collegando i due terminali del pulsante uno a GND e l’altro direttamente alla porta digitale di Arduino che si vuole utilizzare. In questo caso bisogna attivare via software la resistenza di PullUp interna al microcontrollore attraverso la funzione: pinMode(NumeroPin, INPUT_PULLUP).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *