Raspberry PI 2 B è adatto per un'applicazione di effetti audio in tempo reale?


8

Sto per iniziare a lavorare su un progetto che prevede l'elaborazione audio in tempo reale per un'applicazione di effetti audio. L'applicazione dovrebbe acquisire ed elaborare l'audio da 8 singoli canali di ingresso audio a una frequenza di campionamento di 48kHz. L'algoritmo di elaborazione audio genera audio per 8 singoli canali di uscita audio. Il formato del campione audio è LPCM con segno a 16 bit. Poiché è per un'applicazione di effetti audio in tempo reale, anche la latenza è importante. Se l'audio viene riprodotto in loop da input a output senza alcuna elaborazione, la latenza di andata e ritorno non deve superare i 12ms.

L'applicazione dovrebbe ricevere 256 * 8 campioni di input ogni 5,33 ms (tramite un callback audio), elaborare tali campioni e trasmettere 256 * 8 campioni di output (anche tramite callback). I campioni 256 * 8 vengono ricevuti / inviati in una sorta di formato "interfogliato".

Attualmente sto cercando diverse piattaforme hardware e mi chiedevo se il Raspberry PI 2 B potesse essere una scelta adatta. La scheda stessa sembra avere molta potenza di cavallo (CPU ARM Quad Core 900MHz), ma ha solo input audio. Quindi le mie domande sono:

  1. Raspberry PI 2 B è adatto per l'elaborazione audio in tempo reale?
  2. Se la risposta a 1 è sì, allora vorrei sapere se ci sono schede audio aggiuntive per Raspberry PI 2 B sul mercato con 8 canali di ingresso e 8 canali di uscita? La scheda deve supportare una frequenza di campionamento di 48 kHz.
  3. Se la risposta a 1 o [2] è no, quale piattaforma HW consiglieresti?

Il motivo per cui sto guardando il Raspberry PI 2 B è il prezzo interessante, ma potrebbero esserci sul mercato altri tipi di schede più adatte a questo tipo di applicazione.

Diagramma a blocchi


"la latenza di andata e ritorno non deve superare i 12 ms" .... "campioni ogni 5,33 ms" Sei sicuro che sia fattibile anche su un PC? Non è la potenza di elaborazione che è un problema, lo sta facendo completamente nel software userland su un sistema operativo non in tempo reale . Penso che la latenza sarà molto più di 12 ms. Se non sei sicuro di questa domanda, allora la risposta è probabilmente no e non ci sono alternative tra gli SBC di uso generale. Tuttavia, se sai per certo che può essere fatto con un PC, allora c'è una possibilità.
Riccioli d'oro

Risposte:


4

La risposta breve è sì, no e dipende, la risposta lunga è probabilmente no, ma potrebbe essere sì a seconda del tuo approccio. Come componente hardware, il Pi è piuttosto veloce e probabilmente può gestire lo spostamento dei dati dall'input all'output in tempi ragionevolmente rapidi. Tuttavia, l'impostazione predefinita, di raspian linux, non è una piattaforma in tempo reale. Inoltre, non hai specificato quale DSP vuoi fare. Quando ero all'università, ai tempi del 386 e di Windows 3.1, se volevi fare una seria elaborazione del suono, avevi bisogno di un chip DSP esterno per far funzionare tutto.

Se questo dovesse funzionare sul Pi, hai alcune opzioni. La prima opzione, probabilmente il modo migliore per farlo, sarebbe l'hardware, usando gli interrupt e un modulo DSP separato. Non sono sicuro di cosa ci sia, ma vale la pena considerare che principalmente le interfacce Pi con USB e che hanno limiti di larghezza di banda, quindi potresti essere sfortunato comunque. In secondo luogo, prova a codificarlo come modulo del kernel e vedi che tipo di throughput / potenza di elaborazione puoi ottenere dal Pi, la modalità utente linux non è in tempo reale e mentre sarà una utile prova del concetto (farlo in modalità utente con un alta priorità di processo) potrebbe essere necessario entrare nel kernel per ottenere una maggiore velocità. Finalmente il kernel di Linux, anche nella sua versione ridotta, fa un sacco di cose, non è necessario per un semplice dispositivo DSP. Penso di aver visto un kernel là fuori che trasformerebbe il tuo PC in un router di rete. Qualcosa di così semplice è tutto ciò di cui hai bisogno, ma dovrai fare i conti con un po 'di hacking del kernel C.

Se vuoi fare le somme e provare a risolverle, devi scrivere l'assemblatore per qualunque cosa il tuo processore abbia a che fare con i dati, e capire quante istruzioni di processo saranno necessarie per caricare i dati, cambiarlo e scriverlo, e vedere se quello moltiplicato per 48k * 2 supererà i 900M e, in caso contrario, per quale margine (tutto il resto del dispositivo deve funzionare in quel margine, quindi suggerisco di minimizzarlo perdendo roba normale del kernel). Penso che molto probabilmente non funzionerà, ma dipende davvero dall'elaborazione che si desidera eseguire. Potresti essere in grado di compilare il tuo kernel senza nulla al suo interno, tranne il tuo modulo del kernel, e avere abbastanza spazio. Dovrai provarlo e vedere.


Non sei sicuro di ciò che stai cercando di fare (a titolo di elaborazione) ma dai un'occhiata a st.com/web/en/catalog/sense_power/FM125/CL935/SC534/PF185827 che sembra avere un'interfaccia SPI controller, quindi potrebbe si adatta perfettamente al Pi e onsemi.com/PowerSolutions/product.do?id=BELASIGNA%20200
sibaz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.