2015-04-21 26 views
14

Ho trovato che il mio smartphone (Android 4.2.2) non è in grado di generare forme d'onda quadrate (ne ho bisogno per utilizzare l'uscita audio come linea seriale per il trasferimento dei dati). All'inizio supponevo fosse la mia applicazione, ma poi ho fatto molti test significativi. Questi sono gli ultimi test. Spero che tu possa trovare una spiegazione per il fenomeno.distorsione audio Android su forma d'onda quadrata

Ho generato un file wav con una forma d'onda quadra a 500Hz al suo interno. Riproduco il file wav su un telefono Android e su un iPhone Apple. Ho registrato e analizzato il segnale con il mio notebook (il cavo audio collegato all'ingresso audio del notebook).

Quindi ho ripetuto i test con il cavo audio collegato tra un dispositivo ricetrasmettitore bluetooth e l'ingresso audio del notebook. E gli smartphone collegati via bluetooth (uno alla volta) al dispositivo ricetrasmettitore bluetooth.

NOTA: il dispositivo ricetrasmettitore bluetooth è un dispositivo che riceve dati audio tramite bluetooth e fornisce un'uscita audio con un jack audio standard.

Questo è il segnale generato dal iphone collegato direttamente sulla presa audio: iphone directly connected on the audio jack

Questo è il segnale generato dal dispositivo Bluetooth di ricezione dati dal iphone: signal generated by the bluetooth device receiving data from the iphone

Questo è il segnale generato dal dispositivo Android direttamente collegato al jack audio: android device directly connected with the audio jack

Questo è il segnale generato dal dispositivo Bluetooth che riceve i dati dallo smartphone Android:

bluetooth device receiving data from the android smartphone

Analisys:

-Il dispositivo bluetooth introduce un taglio alla larghezza di banda del segnale (mi sembra accettabile).

iphone -La ha davvero buona parte analogica (emette una buona forma d'onda quadra)

-Il dispositivo Android è pessima parte analogica (anche se è perfetto per il gioco musicale)

-il i dati inviati dal telefono Android al dispositivo bluetooth non sono corretti, infatti il ​​segnale acquisito è diverso da quello acquisito con i dati provenienti dall'iPhone.

Ho ripristinato lo smartphone ai valori di fabbrica ma il problema non è stato risolto. Ho anche provato ad installare la ROM personalizzata kitkat ma il problema è ancora lì. Ho anche provato con un Nexus 5 (Android 5) e Samsung S4 mini (Android 4.2.2 come il mio) e si comportano come l'iphone.

Sospetto che il problema abbia a che fare con il suono DTS in studio (ho provato a disattivarlo ea impostarlo in modi diversi senza successo). la DTS sembra essere l'unica differenza software tra il mio telefono e il mini samsung s4.

DOMANDA: Posso capire che il lato analogico del mio dispositivo Android non è buono come l'iphone, potrei anche supporre che la parte analogica del mio dispositivo Android sia rotta ... ma non capisco perché io non ottenere lo stesso risultato quando inserisco il dispositivo ricetrasmettitore bluetooth.

+2

C'è sicuramente il filtro sia in passa-basso sia in passa-alto nei condensatori di serie se non altrove. C'è anche molto probabilmente ogni sorta di brutta elaborazione come la conversione della frequenza di campionamento in corso. Ma potrebbero esserci problemi con il tuo programma, come il buffer underrun su alcuni dispositivi. Per diagnosticare realmente, si prega di mostrare le immagini dell'uscita distorta, a varie frequenze e coprendo più cicli dell'onda quadra. Quanto è grande la dimensione del buffer? Che cosa restituisce la query sulla dimensione del buffer minima sul dispositivo non valido? Anche la generazione e il codice di riproduzione sarebbero utili. –

+0

Puoi anche provare a creare il tuo segnale come file .wav su un PC con qualcosa come Audacity o una porta del tuo programma che scrive campioni su un file, verificandone la riproduzione come desiderato lì, e quindi cercando di riprodurlo sul Dispositivo Android. Ciò aiuterà a determinare se si tratta di un problema con l'hardware del dispositivo o il software di fabbrica o con il tuo programma. –

+0

hi @Cris Stratton, non è importante la mia app, perché il problema è presente anche se suono un file wav dall'app audio predefinita (quella fornita con Android). Proverò a fornire un'istantanea – Gaucho

risposta

2

perché stai utilizzando un'onda quadra? È un requisito? Le onde quadre hanno senso nei sistemi digitali, ma come segnale analogico ha tutti i tipi di caratteristiche sgradevoli (come lo spettro infinito se ricordo). Perché non utilizzare due toni nell'intervallo udibile dall'uomo per cui sono progettati i sistemi audio del telefono?

Esistono numerose tecniche di segnalazione e modulazione utilizzate per inviare dati su canali analogici o audio. Hai guardato uno dei seguenti?

How could you transfer data over an audio line?

Audio Modem: data over sound

Transfering data using audio signal in android

Il terzo link descrive utilizzando Frequency-shift keying in Android. Questa sembra un'ottima soluzione. La pagina di wikiepedia per FSK include i seguenti commenti su Audio FSK

Audio Frequency-Shift Keying (AFSK) è una tecnica di modulazione con cui dati digitali è rappresentato da cambiamenti nella frequenza (pitch) di un tono audio , fornendo un segnale codificato adatto per la trasmissione via radio o telefono. Normalmente, l'audio trasmesso si alterna tra due toni: : uno, il "segno", rappresenta uno binario; l'altro, lo "spazio" , rappresenta uno zero binario. ... AFSK ha il vantaggio che i segnali codificati passeranno attraverso i collegamenti accoppiati AC , inclusa la maggior parte delle apparecchiature originariamente progettate per trasportare musica o parlato.

+0

Michael, grazie mille, non sapevo che esistessero tali possibilità, anche se, ora che me l'hai detto, è ovvio che è possibile. Ad ogni modo è obbligatorio utilizzare una forma d'onda quadrata e la tua risposta non corrisponde alla mia richiesta. Per sapere cosa sto cercando di fare, leggi questo: http://stackoverflow.com/questions/29715866/android-ppm-audio-library – Gaucho

+0

in ogni caso, non pensi che ci sia qualche componente software che genera il problema? perché i dati inviati tramite Bluetooth non sono la forma d'onda quadrata originale? il problema non è presente sui dispositivi Apple e su nexus5. questa sera proverò anche sul telefono Samsung della mia ragazza. – Gaucho

+1

Ricordare che l'udito umano è limitato a frequenze di circa 20 Khz. I sistemi audio in genere non sono progettati per riprodurre segnali molto al di sopra di questo intervallo (non è necessario perché gli umani non possono sentirlo comunque). Le onde quadre hanno armoniche (o componenti ad alta frequenza) che vanno oltre i 20KHz. Un'onda quadrata include componenti di frequenza che vanno ben oltre l'udito umano e oltre le capacità dei sistemi audio. Vedi http://mathworld.wolfram.com/FourierSeriesSquareWave.html. Un sistema audio non è progettato per ricreare quei segnali e non dovrebbe essere previsto. –