Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-02-2007, 14:32   #1
Vans78
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 7
[C++] rtAudio Class

Buongiorno, avrei bisogno di un aiuto se possibile, nel mio lavoro di tesi ho bisogno di interfacciarmi con un microfono e catturare in tempo reale l'esecuzione i un musicista che poi devo rielaborare a blocchi di 256 campio alla volta.

Pensavo di utilizzare la rtAudio per interfacciarmi, che dite può andare????

Avete da conisgliarmi qlk?????


grazie mille.

Arrivderci.

Alessio
Vans78 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2007, 14:40   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Vans78
Buongiorno, avrei bisogno di un aiuto se possibile, nel mio lavoro di tesi ho bisogno di interfacciarmi con un microfono e catturare in tempo reale l'esecuzione i un musicista che poi devo rielaborare a blocchi di 256 campio alla volta.

Pensavo di utilizzare la rtAudio per interfacciarmi, che dite può andare????

Avete da conisgliarmi qlk?????


grazie mille.

Arrivderci.

Alessio
RtAudio è perfetta, la usai anch'io per la tesi.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2007, 20:23   #3
Vans78
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 7
Beh grazie......davvero va bene???? ti potrei chiedere qualche consiglio sul come usarla????
xche io ho qlk ifficolta.......se vuoi anche privatamente se ti scoccia qui.....

ciao e grazie

Alessio
Vans78 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2007, 20:35   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Vans78
Beh grazie......davvero va bene???? ti potrei chiedere qualche consiglio sul come usarla????
xche io ho qlk ifficolta.......se vuoi anche privatamente se ti scoccia qui.....

ciao e grazie

Alessio
Chiedi pure, comunque è abbastanza semplice da usare.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2007, 21:58   #5
Vans78
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 7
Beh il mio problema è questo:

Allora il mio progetto di tesi è praticamente questo:

Progettare un riconoscitore musicale monofonico utilizzando l'analisi a Q-Costante.

Ora la parte di decodifica,l'ho effettua facendo il porting in c++ di un progetto elaborato precedentemente da un altro ragazzo su Matlab.

Ora io ho creato diciamo la classe Madre..che contiene a sua volta la classe figlia ke viene utilizzata x ognuna delle 9 ottave musicali da rilevare...

A questa Classe madre...devono arrivare blocchi da 256 campioni alla volta....effettuando una prima parte di riempimento del buffer...poi raggiunto i 256 campioni il tutto gira a regime di 256 camp alla volta...

Ora qst campioni mi dovrebbero arrivare appunto dalla rtAudio...effettuando presumo un openstream...e successivamente uno strart stream......

Ecco...ma poi come faccio a prendere i campioni??

Il getBuffer mi ritorna un char....non capisco....

Altra cosa...a me servono blokki di 256 campioni...quindi il buffersize lo metto a 256??quanti Buffer della rtAudio mi conviene usare???....

Scusa x tutte qst domande..

ciao e grazie
Vans78 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2007, 22:54   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Vans78
Beh il mio problema è questo:

Allora il mio progetto di tesi è praticamente questo:

Progettare un riconoscitore musicale monofonico utilizzando l'analisi a Q-Costante.

Ora la parte di decodifica,l'ho effettua facendo il porting in c++ di un progetto elaborato precedentemente da un altro ragazzo su Matlab.

Ora io ho creato diciamo la classe Madre..che contiene a sua volta la classe figlia ke viene utilizzata x ognuna delle 9 ottave musicali da rilevare...

A questa Classe madre...devono arrivare blocchi da 256 campioni alla volta....effettuando una prima parte di riempimento del buffer...poi raggiunto i 256 campioni il tutto gira a regime di 256 camp alla volta...

Ora qst campioni mi dovrebbero arrivare appunto dalla rtAudio...effettuando presumo un openstream...e successivamente uno strart stream......

Ecco...ma poi come faccio a prendere i campioni??

Il getBuffer mi ritorna un char....non capisco....

Altra cosa...a me servono blokki di 256 campioni...quindi il buffersize lo metto a 256??quanti Buffer della rtAudio mi conviene usare???....

Scusa x tutte qst domande..

ciao e grazie
Immagino che ovviamente tu lavori con campioni di 16 bit.
In questo caso l'apertura dello stream per la lettura dalla scheda è
Codice:
audio = new RtAudio();
audio->openStream(0, 0, device, nChannels, RTAUDIO_SINT16, nSamplesPerSec, &bufferSize, nBuffers);
dove device è l'indice della scheda audio,nChannels il numero di canali,nSamplesPerSec i campioni al secondo del formato che desideri registrare, bufferSize è la dimensione massima del buffer, nBuffers il numero di buffer che la libreria userà internamente.
Se lavori sotto Windows 256 campioni di buffer potrebbero essere pochi e potresti andare incontro a perdite di campioni, devi un pò sperimentare, io sono riuscito ad arrivare a 64 campioni e 4 buffer.

Se vuoi usare la scheda audio di default puoi usare:
Codice:
	int ndev = audio->getDeviceCount();
	RtAudioDeviceInfo info;
	for(int i = 1; i < ndev; i++)
	{
		info = audio->getDeviceInfo(i);
		if (info.isDefault) 
		       device = i;
	}
Sicuramente poi vorrai usare delle operazioni non bloccanti (thread) quindi hai bisogno di impostare la callback:
Codice:
audio->setStreamCallback(&recdata, this);
Il primo parametro è il puntatore alla funzione di callback, il secondo è il parametro che puoi passare alla callback.
la funzione recdata sarà qualcosa di simile a
Codice:
int recdata(char *buffer, int bufferSize, void *data)
{
	return ((AudioInterface*)data)->OutputData(buffer, bufferSize);
}
La callback deve ritornare 0 per continuare l'esecuzione.
A questo punto in buffer hai i campioni. Considera che bufferSize è la dimensione del buffer espressa in char, ma se usi 16 bit la dimensione dimezza. Se usi un flusso stereo i campioni sono interlacciati: prima il sinistro poi il destro, come da standard.
A questo punto nel metodo OutputData fai quello che ti pare dei dati ricevuti, puoi scriverli su file, accodarli in un buffer che verrà svuotato da un thread consumatore... Non è necessario che acquisisci dalla scheda solamente 256 campioni, ti conviene metterli in una queue e pacchettizzare successivamente questo buffer, non penso ti serva il ritardo 0 come negli studi di registrazione.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2007, 07:52   #7
Vans78
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 7
Per cominciare....grazie e scusa x il tempo che ti sto facendo perdere....

Premetto che io praticamente sono ignorante in programmazione.....

Cmq si...lavoro su 16 Bit...audio Monofonico,quindi non ho problemi sull'interlacciamento....

Però abbi pazienza...non ho capito qst cosa dei buffer.....

Xche 4 da 64 e non 1 solo?????
L'obiettivo sarebbe quello di riuscire ad analizzare un brano eseguito da uno studente praticamente in tempo reale.....

Quindi a me i blocchi in successione dei 256 campioni mi devono uscire di continuo....(quindi il discorsco della callback l'ho capito).....per nn capisco come io dalla mia classe madre posso capire qnd è il momento di rikiamarmi i 256 campioni....o se semplicemente mi conviene fare come dicevi tu...un travaso dei campioni che man mano la rtAudio genera..su un contenitotore di 256 elementi che qnd è pieno...utilizzo..svuoto...e comincio a ripienare.....

Questo non mi fa perdere tempo???

Non c'è un modo piu rapido??

Grazie ancora.....

Alessio
Vans78 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2007, 09:24   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Vans78
Xche 4 da 64 e non 1 solo?????
Prova e vedrai che con 1 solo buffer se non è abbastanza ampio ti perdi campioni per strada

Quote:
L'obiettivo sarebbe quello di riuscire ad analizzare un brano eseguito da uno studente praticamente in tempo reale.....
256 campioni sono 6ms di ritardo, non penso che tu necessiti di ritardo inferiore, anche perchè con Windows difficile scendere col ritardo, al limite puoi anche usare ASIO, io però non sono mai risucito a scendere sotto i 64 campioni di ritardo.

Quote:
Quindi a me i blocchi in successione dei 256 campioni mi devono uscire di continuo....(quindi il discorsco della callback l'ho capito).....per nn capisco come io dalla mia classe madre posso capire qnd è il momento di rikiamarmi i 256 campioni....
E' la libreria che richiama la callback al momento opportuno. Te devi solo usare i dati.

Quote:
o se semplicemente mi conviene fare come dicevi tu...un travaso dei campioni che man mano la rtAudio genera..su un contenitotore di 256 elementi che qnd è pieno...utilizzo..svuoto...e comincio a ripienare.....

Questo non mi fa perdere tempo???

Non c'è un modo piu rapido??

Grazie ancora.....

Alessio
Ti conviene usare un contenitore un pò più grande di 256 elementi, magari qualcosa dell'STL da condividere tra i thread di elaborazione e quello di lettura dalla scheda audio. Essendoci 1 produttore ed 1 consumatore, la sincronizzazione non è difficile.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2007, 17:20   #9
TORAS73
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 11
COMPILARE RTAUDIO VC6

Ciao a tutti,
scusate forse qualcuno può aiutarmi,
Ho scaricato il tool rtaudio 4.0.2 ed ho cercato di compilare i progetti esempio in ambiente VC6 però ottengo alcuni errori tipo:

Codice:
RtAudio.cpp
c:\giobbo\rtaudio-4.0.2\rtaudio.h(319) : error C2027: use of undefined type 'RtAudio'
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(213) : see declaration of 'RtAudio'
c:\giobbo\rtaudio-4.0.2\rtaudio.h(330) : error C2629: unexpected 'class RtAudio ('
c:\giobbo\rtaudio-4.0.2\rtaudio.h(330) : error C2238: unexpected token(s) preceding ';'
c:\giobbo\rtaudio-4.0.2\rtaudio.h(706) : error C2562: 'closeStream' : 'void' function returning a value
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(432) : see declaration of 'closeStream'
c:\giobbo\rtaudio-4.0.2\rtaudio.h(707) : error C2562: 'startStream' : 'void' function returning a value
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(441) : see declaration of 'startStream'
c:\giobbo\rtaudio-4.0.2\rtaudio.h(708) : error C2562: 'stopStream' : 'void' function returning a value
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(450) : see declaration of 'stopStream'
c:\giobbo\rtaudio-4.0.2\rtaudio.h(709) : error C2562: 'abortStream' : 'void' function returning a value
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(459) : see declaration of 'abortStream'
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(137) : error C2511: 'RtAudio::RtAudio' : overloaded member function 'void (enum RtAudio::Api)' not found in 'RtAudio'
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(213) : see declaration of 'RtAudio'
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(182) : error C2562: 'openStream' : 'void' function returning a value
        c:\giobbo\rtaudio-4.0.2\rtaudio.h(421) : see declaration of 'openStream'
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(2597) : error C2039: 'log10' : is not a member of 'std'
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(2771) : error C2371: 'i' : redefinition; different basic types
        c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(2656) : see declaration of 'i'
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(3464) : error C2065: 'WAVE_FORMAT_96S16' : undeclared identifier
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(3468) : error C2065: 'WAVE_FORMAT_96S08' : undeclared identifier
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(3487) : error C2065: 'WAVE_FORMAT_96M16' : undeclared identifier
c:\giobbo\rtaudio-4.0.2\rtaudio.cpp(3491) : error C2065: 'WAVE_FORMAT_96M08' : undeclared identifier
Error executing cl.exe.
Premetto che ho già incluso nel progetto i file RTaudio.cpp,RTaudio.h ed RTerr.h.
Qualcuno sa dirmi cosa succede?
Grazie,.............ciao!
TORAS73 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
Intel brevetta XBM: la nuova memoria pun...
Film prodotti con l'IA: Disney, insieme ...
Reinstallare Windows senza chiavette o s...
Apple racconta il suo vantaggio nell'AI ...
Cisco Cloud Control, una cabina di regia...
Il software che controlla le Fab va in p...
Il settore tech è il primo bersag...
Windows 11, corretto un bug che poteva o...
X introduce nuove funzioni per i video c...
Blue Origin sta costruendo diversi lande...
DeepSeek avvia lo sviluppo di un chip pr...
Le offerte migliori ora su Amazon sugli ...
Fino a un petabit al secondo! Il piano d...
Cisco punta tutto sull'IA: tutti i 90.00...
Intel Nova Lake riporterà il supp...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v