sabato 14 maggio 2011

Android Arduino Sequencer


English version below
Con questo prototipo ci siamo posti l'obiettivo di avere il controllo di un semplice sequencer attraverso un cellulare Android. Il sequencer è implementato all'interno di Arduino. Al momento non ci siamo molto concentrati sull'aspetto grafico, preferendo risolvere i molti problemi tecnici che si sono presentati.
Questo progetto è composto da due blocchi principali: uno è costituito da Arduino con l'Ethernet Shield e il MIDI Shield, l'altro da uno smartphone con Android. I due blocchi si scambiano messaggi OSC (Open Sound Control) attraverso un router sfruttando la connessione ethernet per Arduino e quella WiFi per lo smartphone Android. L'Open Sound Control è un protocollo di comunicazione tra computer, sintetizzatori audio e altri dispositivi multimediali ottimizzato per le connessioni in rete.
L'ultima versione di Processing, la 1.5, prevede due modalità di sviluppo: una, quella classica, per desktop/web e l'altra per Android. Questa è un novità importante perchè in questo modo diventa molto semplice sviluppare applicazioni per tutti quei dispositivi mobili (smartphone, tablet, ...) che usano il sistema operativo Android, perlomeno più semplice rispetto all'utilizzo del SDK nativo di Android. Tutte le operazioni necessarie per iniziare a sviluppare in Processing per Android sono descritte nella pagina relativa del Wiki.

La prima applicazione sviluppata per prendere confidenza con la nuova modalità di Processing è un'interfaccia grafica al semplice MIDI Sequencer per uno smartphone con Android.
L'applicazione crea una griglia di 8x8 quadrati sullo schermo dello smartphone che diventano altrettante aree sensibili per impostare (con un tap) e visualizzare (mediante il combiamento di colore) le note da suonare negli 8 step. Il cambiamento di stato delle aree nella griglia viene inviato ad Arduino (equipaggiato con un Ethernet Shield e un MIDI Shield) mediante messaggi OSC.

Arduino riceve i messaggi OSC via rete, cambia la sua rappresentazione interna dello stato della griglia di conseguenza, invia le note da suonare all'interfaccia MIDI e invia messaggi OSC allo smartphone per mantenere sincronizzato lo step temporale in cui viene suonata la nota con la visualizzazione sullo schermo.

Il semplice MIDI Sequencer implementato prevede l'uso di due canali MIDI (0 e 1) che possono essere impostati indipendentemente l'uno dalla'ltro. La selezione del canale avviene attraverso un tap sui quadrati posizionati sotto la griglia. I messaggi MIDI generati da Arduino vengono inviati al computer usando un'interfaccia MIDI/USB, nel computer con sistema operativo Linux (Ubuntu Studio) gira il sintetizzatore software Qsynth. Ovviamente l'uscita MIDI potrebbe anche essere collegata direttamente ad un sintetizzatore hardware rendendo il tutto indipendente dal computer.

Componenti principali Arduino:
Componenti principali Android:
  • Smartphone con Android 2.2 (dovrebbe andar bene dalla 2.1 in su)
  • Router Wi-Fi per il collegamento di rete tra lo smartphone e Arduino
  • Sketch scritto per Processing nella modalità di sviluppo per Android (AndroidSeq.zip)

In futuro vorremmo espandere questo progetto facendo in modo che i diversi canali vengano controllati da diversi cellulari, oltre a migliorare il sequencer stesso, sia da un punto di vista grafico, sia per renderlo più consono alle esigenze di un musicista.



With this prototype we wanted to control a simple sequencer through an Android phone. The sequencer is implemented in Arduino. At the moment we have not really focused on the appearance, preferring to solve many technical problems that occurred.
The project is composed of two main blocks: one consisting of Arduino with Ethernet Shield and MIDI Shield, the other of an Android smartphone. The two blocks are exchanging OSC (Open Sound Control) messages through a router using the ethernet connection for the Arduino and WiFi for the Android smartphone. Open Sound Control is a protocol for communication among computers, sound synthesizers, and other multimedia devices that is optimized for modern networking technology.
The latest release of Processing (1.5) provides two development modes: the classic one for desktop/web and another one for Android. This is a significant change because now it is much easier to develop applications for all those mobile devices (smartphones, tablet, ...) that use Android operating system, at least easier than using the native Android SDK. All the necessary operations to start developing in Processing for Android are described on the relative Wiki page.

The first application developed to study the new Processing mode is a graphical interface for the simple MIDI Sequencer, for an Android smartphone.
This application creates a grid of 8x8 squares on the smartphone screen that become sensitive areas to set up (with a tap) and display (changing the colours) the notes to play in 8 steps. The state change of the squares in the grid is sent to Arduino (equipped with an Ethernet Shield and a MIDI Shield) by OSC messages.

Arduino receives OSC messages by the network, changes its internal representation of the state of the grid, sends notes to play to the MIDI interface and sends OSC messages to the smartphone to synchronize the time step in which the note is played with the squares on the screen.

The simple MIDI Sequencer implemented uses two MIDI channels (0 and 1) that can be set independently by a tap on the squares placed below the grid. The MIDI messages generated by Arduino are sent to the computer using a MIDI/USB interface, the computer with Linux operative system (Ubuntu Studio) run Qsynth software synthesizer. Of course, the MIDI output can also be connected directly to a hardware synthesizer making the system completely independent from your computer.

Main Arduino components:
Main Android components:
  • Android 2.2 smartphone (should work from 2.1 up)
  • Wi-Fi Router for the network connection between the smartphone and Arduino
  • Processing sketch written in the Android development mode (AndroidSeq.zip)
In the future we would like to expand this project so that different channels are controlled by different phones, as well as improving the sequencer itself, both from a graphical point of view and to respond better to the needs of a musician.

Nessun commento:

Posta un commento