begin process at 2012 05 30 18:52:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Multimédia

 > 

travailler sur le son sortant de la carte son


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

travailler sur le son sortant de la carte son

mercredi 13 octobre 2004 à 20:12:38 | travailler sur le son sortant de la carte son

Mastersam

Bonjour je voudrais creer une application permettant d'analyser le flux audio sortant de la carte son, en ayant choisi le périphérique de capture et le canal d'enregistrement (entrée lign, master, cd , micro...).

Pour l'analyse je voudrais juste savoir comment récupérer 1 à 1 les samples sortant.

Je travaille sous devcpp en C# ( pas en cpp) donc j'ai bien vu plusieurs sources sur le site mais tout est bien trop compliqué par rapport à ce que je veux faire.

Le but final est de creer en module qui capture et trace la forme du signal sortant (sans le sauvegarder) et qui sache déterminer le tempo s'il existe du flux audio sélectionné. mais ma première question n'est pas si large, je veux juste connaitre le point de départ.

Merci d'avance







mercredi 13 octobre 2004 à 20:46:04 | Re : travailler sur le son sortant de la carte son

Funto66

Tant qu'à faire je suis aussi intéressé par le pb, vu que ça serait sympa de pouvoir créer un multi-effets sur le PC qui pourrait agir en temps réel avec ma guitare (branchée sur la carte audio) :)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
mercredi 13 octobre 2004 à 21:05:05 | Re : travailler sur le son sortant de la carte son
jeudi 14 octobre 2004 à 18:08:24 | Re : travailler sur le son sortant de la carte son

Funto66

Ah ben oui effectivement ça a l'air bien sympa :)
Ça pourra peut-être me servir si jamais je fais mon projet, merci ;)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
jeudi 14 octobre 2004 à 18:28:44 | Re : travailler sur le son sortant de la carte son

Mastersam

Oui moi c'est pile poile ce que j'avais besoin, je vais approfondir ce week-end je vous tiens au courant



jeudi 14 octobre 2004 à 23:37:23 | Re : travailler sur le son sortant de la carte son

Mastersam

Bon j'ai pas pu attendre le week-end,

J'ai un petit soucis, j'ai simplifié le code pour prendre qu'une petite partie qui m'interesse dans mon projet, j'ai une erreur lor de la compilation de cette partie:

wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 2; // Stereo
wfx.nSamplesPerSec = 22050; // Frequence d'echantillonnage
wfx.wBitsPerSample = 8; // Dynamique
wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample) / 8; // C'est MSDN qui l'a dit
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; // Ca aussi
// Ouverture de la carte son
if(waveInOpen(&hwi, 0, &wfx, (DWORD)hwnd, 0, CALLBACK_WINDOW)!= MMSYSERR_NOERROR)
{
MessageBox(hwnd, "Problème a l'ouverture de la carte son", "Erreur", MB_OK);
DestroyWindow(hwnd);
return 0;
}

[Linker error] undefined reference to `waveInOpen@24'


le problème c'est que cette erreur (plus une dizaine d'autre)apparait aussi dans le projet enregistreur de la source dont le lien a été donné par Matt67

J'ai vérifié j'ai bien le fichier mmsystem.h ou la fonction est énoncée.

Donc n'ayant pas de bases solide en c et sur windows je voudrais avoir votre avis sur la "source" du problème.

Merci d'avance ...

Sinon c'est en bonne voie.



vendredi 15 octobre 2004 à 19:48:44 | Re : travailler sur le son sortant de la carte son

Matt67

Bonsoir,

Le probleme est qu'il faut que tu link winmm.lib...

Matt...
vendredi 15 octobre 2004 à 21:49:52 | Re : travailler sur le son sortant de la carte son

Mastersam

Super, plus d'erreur, j'ai qd même eu du mal car je savais pas ce que c'est que "linker" mais là c bon, en plus avec devcpp la lib s'appelle libwinmm.a alors ça perturbe.

Bref maintenant que c'est passé j'ai un nouveau problème:

j'ai recopié le code interessant dans la source de l'enregistreur, en fait, juste la partie sur le tracé de l'oscilloscope, je n'ai pas d'erreur d'ouverture de carte son, tout se compile bien , le fond du scope se trace bien mais là problème quand la capture est lancée (c'est a dire à l'ouverture de la fenêtre pour moi) et bien il se passe .... rien. pas de trace de signal sur le graphe, même en sélectionnant les bons paramêtres d'enregistrement windows.

La fonction qui gère ma fenètre est la suivante:

LRESULT CALLBACK Capturesonproc(HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
if(waveInGetNumDevs() <= 0)
{
MessageBox(NULL, "Il faut un périphérique audio pour capturer le son", "Aucune carte son détectée...", MB_OK);
return 0;
}

// Preparation des formats pour la carte son
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 2; // Stereo
wfx.nSamplesPerSec = 44100; // Frequence d'echantillonnage
wfx.wBitsPerSample = 16; // Dynamique
wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample) / 8; // C'est MSDN qui l'a dit
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; // Ca aussi
// Ouverture de la carte son
if(waveInOpen(&hwi, 0, &wfx, (DWORD)hwnd, 0, CALLBACK_WINDOW)!= MMSYSERR_NOERROR)
{
MessageBox(hwnd, "Problème a l'ouverture de la carte son", "Erreur", MB_OK);

return 0;
}

case MM_WIM_OPEN:
// Demarrage de la carte son
waveInStart(hwi);

return 0;

case MM_WIM_DATA:

// On incremente la ProgressBar s'il y a des donnees

// On copie dans un buffer temporaire pour la representation graphique
CopyMemory(BufferTmp, ((PWAVEHDR)lParam)->lpData, ((PWAVEHDR)lParam)->dwBytesRecorded);
InvalidateRect(hwnd, &rect, TRUE);

waveInAddBuffer(hwi, ((PWAVEHDR)lParam), sizeof(WAVEHDR));

return 0;


case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
HPEN hp; // Scope
HBRUSH hb; // Fond du scope
LOGBRUSH lb; // Style de la brush
short xScale, yScale, Zero; // Pour les differentes echelles
size_t i = 0, k = 0; // Pour les boucles et les indices
// On met a l'echelle de la fenetre
rect.left = 0;
rect.top = 0;
rect.right = 310;
rect.bottom = 60;
// debut de x pour le dessin
k = rect.left;
// Determination du zero de l'oscillo
Zero = (rect.top + rect.bottom) / 2;
// Determination des echelles
xScale = (TAILLE_BUFFER / 2) / (rect.right - rect.left);
yScale = (32767 / (rect.top - Zero));
// Structure pour la brush
lb.lbStyle = BS_SOLID;
lb.lbColor = 0x00000000;
// On recupere le DC de la fenetre
hdc = BeginPaint(hwnd, &ps);
// Creation de PEN et de BRUSH
hp = CreatePen(PS_SOLID, 1, 0x0000FF00);
hb = CreateBrushIndirect(&lb);
// On les selectionne
SelectObject(hdc, hp);
SelectObject(hdc, hb);
// On dessine le fond du scope
Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom);
// On pose le premier point
MoveToEx(hdc, k++, Zero - (BufferTmp[0]/yScale), NULL);
for(i=1; i<(TAILLE_BUFFER / 2); i+=xScale)
{
// On dessine les echantillons
LineTo(hdc, k++, Zero - (BufferTmp[i]/yScale));

}
// On suprime les objets
DeleteObject(hb);
DeleteObject(hp);
// Fin du dessin
EndPaint(hwnd, &ps);
return 0;
}


case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_BUTTON_CLOSESOUND:

DestroyWindow(Soundwindow);

}

default:

/* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);

}

return 0;
}




Voilà merci








samedi 16 octobre 2004 à 13:01:36 | Re : travailler sur le son sortant de la carte son

Matt67

Bonjour

Bon, la il faut y aller petit a petit...
Est ce que le message MM_WIM_DATA est bien posté...
Si oui regarde se qu'il y a dans ton buffertmp pour voir s'il n'est pas vide...
Si pas vide alors ca doit venir de ton message WM_PAINT.

Tiens moi au courant.

Matt...
samedi 16 octobre 2004 à 13:29:52 | Re : travailler sur le son sortant de la carte son

Mastersam

j'ai casé deux petites messagesbox dans les parties des messages wim open et wim data, et bien j'ai deux fois la wimopen qui apparait avant que la fenêtre s'affiche mais pas de trace de wimdata.
:


case MM_WIM_OPEN:
// Demarrage de la carte son
waveInStart(hwi);
MessageBox(hwnd, "wimopen", "COOL", MB_OK);
waveInAddBuffer(hwi, ((PWAVEHDR)lParam), sizeof(WAVEHDR));
return 0;


case MM_WIM_DATA:

// On incremente la ProgressBar s'il y a des donnees

// On copie dans un buffer temporaire pour la representation graphique
CopyMemory(BufferTmp, ((PWAVEHDR)lParam)->lpData, ((PWAVEHDR)lParam)->dwBytesRecorded);
InvalidateRect(hwnd, &rect, TRUE);
MessageBox(hwnd, "wimdata", "COOL", MB_OK);


return 0;



Ce message wimdata est posté par qui ?

Question en plus : comment je peux verrifier si j'ai quelquechose dans mon buffer ?




1 2 3

Cette discussion est classée dans : creer, carte, flux, travailler, sortant


Répondre à ce message

Sujets en rapport avec ce message

[OpenCV] Capturer le flux vidéo d'une carte pci [ par Mevag ] Bonjour,J'ai réaliser un programme me permetant de traiter le flux vidéo à partir d'une WebCam usb pour réaliser une tetection de contour.Je souaite m logiciel pour carte K8000 [ par extremenet80 ] bonjour,j ai une carte K8000 de chez velleman. je ne sais pas comment creer un programme pour piloter cette carte. j'entend parler de visual basic mai transferer flux audio via bluetooth [ par electrogeek21 ] Bonjour, voici j'ai un projet à la fac et je suis amené à - tranferer en temps réel le flux audio (celui de ma carte son) via le bluetooth du meme programmation pic 18F2455 [ par foufouti ] bonsoir, je suis en train de travailler sur un projet qui consiste à une carte d'acquisition qui reçoit des données sur 8bits sur un port série(RS232) capturer le flux audio de la carte son et l'envoyer via bluetooth [ par electrogeek21 ] Bonjour, Je suis sur un projet en ce moment et l'objectif est d'envoyer le son qui se joue sur le pc (media player , internet ou autre) vers sa chai MFC [ par ja92 ] bounjour , Débutant en programmation j'aimerais savoir la commande a taper pour faire apparaitre une carte google, récupérée auparavant, dans une MF carte google [ par ja92 ] Bonjour , Alors voilà , j'aimerais récuperer une carte google en format png mais sur google apis il me demande un site pour récuperer la clé google p developpement c embarqué [ par maouhoubsmine ] Bonjour, je travail sur un microprocesseur imx27 qui est integré sur la carte APF27 et je suis débutant en c embarqué, je besoin de votre aide svp ;) carte son [ par altyok ] bonjour a tous voila j'ai un projet a faire pour mes études ou je dois utiliser la carte son pour tracer le diagramme de bode d'un filtre pour cela j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,997 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales