Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-02-2007, 15: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, 15: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, 21: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, 21: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, 22: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, 23: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, 08: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, 10: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, 18: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


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
L'UE anticipa un intervento per bloccare...
Il Trump Phone esiste ma è molto ...
Frodi deepfake fuori controllo: perch&ea...
Consumano il 30% in meno: arrivano i nuo...
Tesla Semi svela i numeri definitivi: 80...
La Air Force statunitense vieta occhiali...
Wi-Fi Intel e Windows: le novità ...
Dongfeng sbarca 'a casa loro': il nuovo ...
BYD ATTO 3 EVO: 3,9 secondi sullo 0-100 ...
Horizon 3 potrebbe arrivare tra 3-5 anni...
Spostare il 40% della produzione in USA?...
Project Panama: ecco come Anthropic ha d...
MrBeast entra nel fintech: Beast Industr...
Arrivano i nuovi server Bare Metal 2026 ...
Stop alla distribuzione dei driver di st...
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: 16:01.


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