info@panadisplay.com
FT800 Audio Primer-Audio Engine

FT800 Audio Primer-Audio Engine

Nov 02, 2018

2 Audio Engine


Vari effetti audio e file possono essere riprodotti dall'FT800. L'output è fornito come PWM

segnale su un singolo pin, AUDIO_L. Ci sono due sorgenti audio, il Sound Synthesizer e il

Riproduzione audio.


-2.1 Sintetizzatore audio

Gli effetti sonori sono precaricati in una libreria Wave ROM e non richiedono l'utilizzo di alcuno dell'FT800

Spazio RAM. La maggior parte dei feedback degli utenti udibili può essere fornita attraverso questi effetti, come un clic

quando viene premuto un pulsante sullo schermo, i toni DTMF per le telecomunicazioni o un avviso del pannello di allarme. Maggior parte

gli effetti suonano una volta e poi si fermano. Altri giocheranno continuamente. L'elenco completo di toni e

le caratteristiche sono mostrate di seguito:

Valore Effetto Continuo Intonazione
regolare
Valore Effetto Continuo Intonazione
regolare
00h Silenzio Y N 32h DTMF 2 Y N
01h onda quadra Y Y 33 nonies DTMF 3 Y N
02H onda sinusoidale Y Y 34h DTMF 4 Y N
03h onda a dente di sega Y Y 35h DTMF 5 Y N
04h onda triangolare Y Y 36h DTMF 6 Y N
05H beep Y Y 37h DTMF 7 Y N
06h Allarme Y Y 38h DTMF 8 Y N
07h gorgheggiare Y Y 39h DTMF 9 Y N
08h Giostra Y Y 40h arpa N Y
10h 1 pip breve N Y 41h xilofono N Y
11h 2 pips corti N Y 42h tuba N Y
12h 3 semi bassi N Y 43h glockenspiel N Y
13h 4 semi bassi N Y 44h organo N Y
14h 5 pips corti N Y 45h tromba N Y
15h 6 pips corti N Y 46h pianoforte N Y
16h 7 pips corti N Y 47H carillon N Y
17h 8 pips brevi N Y 48h carillon N Y
18h 9 pips brevi N Y 49H campana N Y
19h 10 pips brevi N Y 50h clic N N
1Ah 11 pips brevi N Y 51h interruttore N N
1Bh 12 semi bassi N Y 52h campanaccio N N
1Cr 13 pips corti N Y 53H tacca N N
1DH 14 pips corto N Y 54h charleston N N
1Eh 15 pips corto N Y 55H grancassa N N
1Fh 16 pips corti N Y 56h pop N N
23h DTMF # Y N 57h schiocco N N
2Ch DTMF * Y N 58H chack N N
30h DTMF 0 Y N 60h muto N N
31h DTMF 1 Y N 61h unmute N N


Molti degli effetti consentono il controllo dell'intonazione (nota MIDI), quindi è possibile generare vari toni. Vengono utilizzate assegnazioni di note MIDI standard:

Nota MIDI Nota ANSI Freq (Hz) Nota MIDI Nota ANSI Freq (Hz)
21 A0 27.5 65 F4 349.2
22 A # 0 29,1 66 F # 4 370.0
23 B0 30,9 67 G4 392.0
24 C1 32.7 68 G # 4 415,3
25 C # 1 34.6 69 A4 440,0
26 D1 36,7 70 A # 4 466,2
27 D # 1 38.9 71 B4 493,9
28 E1 41.2 72 C5 523,3
29 F1 43,7 73 C # 5 554,4
30 F # 1 46,2 74 D5 587,3
31 G1 49.0 75 D # 5 622,3
32 G # 1 51,9 76 E5 659,3
33 A1 55.0 77 F5 698,5
34 A # 1 58,3 78 F # 5 740,0
35 B1 61,7 79 G5 784,0
36 C2 65,4 80 G # 5 830.6
37 C # 2 69.3 81 A5 880.0
38 D2 73.4 82 A # 5 932.3
39 D # 2 77,8 83 B5 987,8
40 E2 82,4 84 C6 1.046,5
41 F2 87.3 85 C # 6 1.108,7
42 F # 2 92.5 86 D6 1.174,7
43 G2 98.0 87 D # 6 1.244,5
44 G # 2 103.8 88 E6 1.318,5
45 A2 110.0 89 F6 1.396,9
46 A # 2 116.5 90 F # 6 1.480,0
47 B2 123.5 91 G6 1.568,0
48 C3 130.8 92 G # 6 1.661,2
49 C # 3 138.6 93 A6 1.760,0
50 D3 146.8 94 A # 6 1.864,7
51 D # 3 155,6 95 B6 1.975,5
52 E3 164.8 96 C7 2.093,0
53 F3 174,6 97 C # 7 2.217,5
54 F # 3 185,0 98 D7 2.349,3
55 G3 196.0 99 D # 7 2.489,0
56 G # 3 207,7 100 E7 2.637,0
57 A3 220.0 101 F7 2.793,8
58 A # 3 233.1 102 F # 7 2.960,0
59 B3 246,9 103 G7 3.136,0
60 C4 261,6 104 G # 7 3.322,4
61 C # 4 277.2 105 A7 3.520,0
62 D4 293,7 106 A # 7 3.729,3
63 D # 4 311.1 107 B7 3.951,1
64 E4 329.6 108 C8 4.186,0


La sintesi del suono è controllata dai seguenti registri:

 REG_SOUND

o Bit 31-16 = Non importa

o Bits 15-8 = nota MIDI (pitch)

o Bit 7-0 Effetto

 REG_PLAY

o Bit 31-1 = Non importa

o Bit0 = Avvia Play / Play Status

 Scrivi = 1 per iniziare a riprodurre la selezione in REG_SOUND

 Leggi = 1 indica che l'effetto è attualmente in riproduzione

 Leggi = 0 indica che l'effetto è stato completato

 REG_VOL_SOUND

o Bit 31-8 = non importa

o Bit 7-0 = volume di uscita

Le letture e le scritture nello spazio di memoria dell'FT800 sono gestite attraverso il formato "little endian", dove

il primo byte sarà il meno significativo. Ad esempio, si consideri un effetto di piano (0x46) che riproduce A4

(0x45). I dati sull'interfaccia SPI o I2C consisterebbero in una sequenza di scrittura della memoria host con

i seguenti dati, in ordine:

0x90 = Trasferimento memoria memoria host (0x80) più il primo byte dell'indirizzo del registro (0x10)

0x24 = secondo byte dell'indirizzo del registro

0x84 = terzo byte dell'indirizzo del registro

0x46 = effetto piano

0x45 = nota / altezza = A4 (440Hz)

0x00 = non importa, facoltativo

0x00 = non importa, facoltativo

Notare che gli ultimi due byte non devono essere scritti, quindi una scrittura di memoria host a 16 bit può effettivamente

soddisfare i valori necessari nel registro. Ulteriori spiegazioni sulla scrittura della memoria host, host

Memoria di lettura e memoria host I trasferimenti di dati di comando si trovano in AN_240 FT800 da

Ground Up.


-2.2 File audio

Ci possono essere applicazioni in cui è necessario qualcosa di più della semplice sintesi di toni. Per

esempio un comando vocale o un altro annuncio possono essere necessari per dare all'utente specifico

Istruzioni. L'FT800 supporta la riproduzione di file nei seguenti formati (mono) a canale singolo:

 PCM con firma a 8 bit - audio non compresso non elaborato

 μLAW a 8 bit - audio compresso non lineare

 IMA-ADPCM a 4 bit - ulteriore μLAW compresso in cui ogni byte contiene due 4 bit

campioni

L'FT800 ha 256Kbyte di RAM oggetto (RAM_G) per contenere oggetti video (immagini e font) e

oggetti audio (suoni registrati). Lo spazio deve essere gestito dall'host MCU in modo che

le informazioni non vengono sovrascritte fino a quando non sono più necessarie.

I file audio vengono caricati tramite la transazione di Memoria Host Scrittura nello spazio disponibile e lo sono

richiesto di essere allineato a 8 byte (64 bit).

Una volta caricato un file audio nella memoria RAM_G, la riproduzione è controllata dal seguente

registri:

 REG_PLAYBACK_START

o Bit 31-20 = non importa

o Bit 19-0 = indirizzo iniziale 20 bit del file in RAM_G

 REG_PLAYBACK_LENGTH

o Bit 31-20 = non importa

o Bit 19-0 = lunghezza di 20 bit del file all'interno di RAM_G

 REG_PLAYBACK_FREQ

o Bit 31-16 = non importa

o Bit 15-0 = frequenza di campionamento di riproduzione a 16 bit, in Hz

 REG_PLAYBACK_FORMAT

o Bit 31-2 = non importa

o Bit 1-0 = formato di riproduzione a 2 bit

 0 = PCM lineare o non compresso

 1 = μLaw

 2 = ADPCM

 3 = non definito

 REG_PLAYBACK_LOOP

o Bit 31-1 = non importa

o Bit 0 = stile di riproduzione a 1 bit

 0 = riproduci una volta

 1 = riproduzione continua

 REG_PLAYBACK_PLAY

o Bit 31-1 = non importa

o Bit 0 = Avvia lo stato di riproduzione / riproduzione

 Scrivi = 0 o 1 per iniziare a riprodurre la selezione in REG_SOUND

 Leggi = 1 indica che il file è attualmente in riproduzione

 Leggi = 0 indica che il file è stato completato

 REG_PLAYBACK_READPTR

o Bit 31-20 = non importa

o Bit 19-0 = puntatore a 20 bit della posizione di riproduzione corrente

 REG_VOL_PB

o Bit 31-8 = non importa

o Bit 7-0 = volume di uscita


-2.2.1 Utilità di conversione

FTDI fornisce un'utilità di conversione di file audio chiamata "AUD_CVT" per prendere un formato di file comune e

creare i tre tipi di file supportati dall'FT800. Un collegamento a questa utilità è fornito nel

"Appendice A - Riferimenti" di questo documento.

Si presuppone che il file di origine sia un PCM a 16 bit (non compresso) non elaborato, un file WAV mono. Un tale file può

essere creato attraverso un programma di editing audio comunemente disponibile, come Audacity. Una volta il

il file sorgente è disponibile, è sufficiente eseguire l'utilità al prompt dei comandi:

aud_cvt -i inputfilename -f formato

dove "format" = 0 per PCM con firma a 8 bit

= 1 per μLaw a 8 bit

= 2 per IMA ADPCM a 4 bit

Verrà creata una cartella con i file risultanti. Questi file possono quindi essere utilizzati per caricare nel

RAM_G area di memoria dell'FT800.

L'utility di conversione audio produrrà un file raw e un file compresso per ciascun formato selezionato. esso

può essere utile all'MCU host per archiviare i file compressi e quindi espanderli nel

RAM_G buffer quando necessario. Vedere la sezione 4 per i dettagli.