Sei sulla pagina 1di 12

Software

Indice:
Generazione del suono di uno strumento
Standard MIDI e interfaccia MIDI-in realizzata con
Arduino (piattaforma di prototipazione programmata in C)
Standard seriale HTC (produttore di cellulari) ExtUsb (connettore
proprietario di HTC)
Processi del programma Android (Sistema operativo Linux di Google per
cellulari programmato in Java), strutture dati e interazione tra essi
Risultati e dimostrazione

Funzionamento di SINTONICO:
Interfaccia
MIDI in
Elaboratore
comandi
Generazione
del suono
Invio alla
scheda audio
Generazione del suono a partire dalle sue
caratteristiche
Altezza: dipende dalla frequenza di
oscillazione dellaria
Intensit: dipende dallenergia
sonora irradiata
Timbro: numero di armoniche che
costituiscono lo spettro.
Molte armoniche: voce umana,
violino, pianoforte, ecc..
Poche armoniche: flauto dolce,
fischio, ecc..
Inviluppo: sagoma del segnale



Mi bemolle di un clarinetto, un violoncello e una tromba
Sintesi del suono a partire dallo spettro con 10 armoniche superiori (sintesi additiva):

se t discreto = kTc

Interfaccia MIDI-in e
standard MIDI








Conversione numero nota - frequenza nota
f = 440 2
(n 69) / 12


Adattamento
segnale MIDI
Lettura e
Bufferizzazione byte
ricevuti
Serializzazione
secondo standard
seriale ExtUsb
Tipo messaggio Byte 0 Valori
decimali
Byte 1 Valori
decimali
Byte 2 Valori
decimali
Nota ON 1001XXXX Da 144 a
159
0KKKKKKK Da 0 a
127
0VVVVVVV Da 0 a
127
Nota OFF 1000XXXX Da 128 a
143
0KKKKKKK Da 0 a
127
0VVVVVVV Da 0 a
127
Cambio di
Programma
1100XXXX Da 192 a
207
0PPPPPPP Da 0 a
127
-
Variazione di
Controllo
1011XXXX Da 176 a
191
0NNNNNNN Da 0 a
127
0UUUUUUU Da 0 a
127
RESET 11111111 255 - -
Commutatore di baudrate
realizzato con Arduino
Perdita di dati?
In media:
30000 byte ogni brano
da 5 min = 300 s:
100 byte/s = 1000
baud/sec
Limite max: 9600
baud/sec => 960
byte/sec
In un brano da 5 min =
300s 288Kb
(difficilmente
raggiunto)



Android Serialport api
progetto nato con lintenzione di sviluppare una
libreria per Android per usare la porta ExtUsb come seriale
protected void onDataReceived(final byte[] buffer, final int size) {
runOnUiThread(new Runnable() {
public void run() { }}}
Lista Componenti:
D1: 1N914 o 1N4148
R1: Resistenza da 220ohm
R2: Resistenza da 100Kohm
R3: Resistenza da 3.3Kohm
P1: micro-pulsante
Led: 2 di un colore, 6 di un altro e 1 di un altro
ancora
Integrati:
Optocoupler: IC1 4N35 Optocoupler 6-pin
Connettori:
Midi In: connettore femmina midi
ExtUsb out: connettore maschio ExtUsb
Dispositivi:
Arduino: Arduino duemilanove
Processi principali e strutture dati del
programma per Android
ConsoleActivity
Processo che elabora i byte in ingresso
come comandi MIDI per modificare le
strutture dati
Synth: Juke
Memorizza tutti i parametri di sintesi (freq. di
campionamento, grandezza dei buffer, numero di
buffer, strutture dati ecc.
Processo che fa una lettura temporizzata dei
buffer prodotti
AccodatoreDiBuffer
Processo per la generazione del suono
(campioni) in funzione delle strutture
dati)
Nota
Tono
Intensit
Strumento
a[], p[] vettori delle ampiezze e fasi delle
armoniche che costituiscono lo spettro
Parametri di inviluppo
ContenitoreDiNote
vetNote
Metodi per lettura e scrittura
consistente
LittleBuffer
Buffer con Lettura e scrittura
sincronizzata
GreatBuffer
buffer[] vettore di LittleBuffer
Lettura e scrittura tramite riferimento circolare
Legenda:
Processi
Strutture per la generazione
dei campioni
Strutture per la generazione
dei buffer
Interazione tra processi e strutture
Men
Creazione
ConsoleActivity
Creazione di
Juke
Inizializza la
traccia audio
Inizializzazione
GreatBuffer


Accodamento di
LittleBuffer
Contenitore di Note

GreatBuffer

Accodamento di
Campioni
Ricezione Dati
Elaborazione
Dati
Lettura
temporizzata di
LittleBuffer





f1
Realizzazione della generazione del suono
(f1,i1)
(f2,i2)
(f3,i3)
(f4,i4)
Contenuto
spettrale
relativo
al timbro
Risultati 1
Periodo del bit di uscita del blocco interfaccia MIDI-in
bit9600Delay = 104 - t
esecuzione delle operazioni tra i bit
= 98
Complessit computazione della generazione del suono
Complessit computazionale della generazione del campione =
Tempi di latenza dalla pressione del tasto alla riproduzione
del suono

t
l non percettibile
< 30ms
t
l accettabile
< 100ms
t
l compromettente lesecuzione
> 100ms
Casi con t
l
accettabile
1. t
millibuffer
= 20 ms, n
buffer
= 4
2. t
millibuffer
= 50 ms, n
buffer
= 2






Risultati 2
Campioni generati e tempi di sintesi

tasso di generazione minimo per il tempo reale

Purezza spettrale
fc=(1)44100Hz, (2)5512Hz



62db 62db
Dimostrazione