WaveIn -- non reconnu par VS

Résolu
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 9 avril 2006 à 20:07
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 12 avril 2006 à 04:14
bonjour, je souhaite juste faire un petit test de waveIn.


#include
<windows.h>


#include
<mmsystem.h>


#include
<commctrl.h>



// Record and save a wave file


WaveIn wi =
new WaveIn();


wi.Preload(3000, 256*1024);


wi.Start();


wxSleep( 200 );


wi.Save(
"data.txt");

et avec ca il me sort l'erreur :


.\minimalfrm.cpp(81) : error C2065: 'WaveIn' : undeclared identifie

comment ce fait-ce?je croyais que waveIn etait win32;

ya - t -il une librairie a linké ou autre chose a faire pour utiliser waveIn?

merci;
@+;
satellite34

http://www.rootscommunity.com/</FON< body>

86 réponses

cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
9 avril 2006 à 23:12
ok, et sinon, tu t'es basé sur de la doc un peu a part msdn qui suppose qu'on connaisse déja pas mal win32, tain en plus moi c'est vraiment la toute petite partie du dev la recup de l'output et c'est celle ou je galére le plus, ca m' saoule, lol;

bon brunews aide moi, mdr, j'en ai marre de misérer comme un rat mort;



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 avril 2006 à 23:20
T'es pas tout seul dans cette situation satellite34

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
9 avril 2006 à 23:54
Bon j'ai un blème moi aussi !
J'arrive à utiliser mais j'ai des blème d'anglais :) lol

The waveOutSetPlaybackRate function sets the playback rate for the
specified waveform-audio output device.

Qu'est-ça veut dire ? c'est pas ça que vous chercher ? si oui moi j'y arrive :)
if(!Meilleur("Joky")) return ERREUR;<
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 avril 2006 à 00:39
en fait ce serait plutot un GetPlaybackRate mais oui, si le waveOut produit un, arf, je sais jamais comment expliquer ca !!!!!!!!!!!!!!!!

En fait ce serait un peu comme si le programme se mettait sur la carte son et récup ce qu'elle envoi tu vois???

sinon, ben j'ai un peu avancé , j'arrive a ouvrir la carte son, préparer les buffers, fermer la carte, mais bon, aucune capture en perspective, j'ai essayé d'initialiser un waveOutput mais niet, j'y arrive po..

t'a pas un exemple pour l'out? que je puisse enfin me consacrer a l'analyse



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 01:04
Un truc rigolo ;)

#include <windows.h>

#pragma comment(lib, "winmm.lib")

void CALLBACK WaveProc(HWAVEOUT hWo, UINT Msg, DWORD dwInst, DWORD dwP1, DWORD dwP2)
{
switch(Msg)
{
case WOM_OPEN:
MessageBox(0, "Yeah Device Audio is open !", 0, 0x40);
return;

case WOM_CLOSE:
MessageBox(0, "So, Audio Device is closed !", 0, 0x40);
return;
}
}

int __stdcall WinMain(HINSTANCE hInst, HINSTANCE x, PSTR y, int z)
{
MMRESULT mRsl;
HWAVEOUT hWo;
WAVEFORMATEX wFormat;
DWORD dwVolum = 0xFFFF;
int i;

wFormat.cbSize = sizeof(WAVEFORMATEX);
wFormat.nSamplesPerSec = 44100;
wFormat.wBitsPerSample = 16;
wFormat.nChannels = 2;
wFormat.wFormatTag = WAVE_FORMAT_PCM;
wFormat.nBlockAlign = wFormat.nChannels * wFormat.wBitsPerSample / 8;
wFormat.nAvgBytesPerSec = wFormat.nSamplesPerSec * wFormat.nBlockAlign;

mRsl = waveOutOpen( &hWo,
0,
&wFormat,
(DWORD)WaveProc,
0,
CALLBACK_FUNCTION );

if (mRsl != MMSYSERR_NOERROR)
{
MessageBox(0, "Erreur during opening Audio Device.", 0, 0x10);
return 0;
}

for(i = 0; i<6; i++)
{
while(dwVolum > 0)
{
dwVolum -= 0x0101;
Sleep(10);
waveOutSetVolume(hWo, dwVolum);
}

while(dwVolum < 65535)
{
dwVolum += 0x0101;
Sleep(10);
waveOutSetVolume(hWo, dwVolum);
}
}

waveOutClose(hWo);
return 0;
}

if(!Meilleur("Joky")) return ERREUR;<
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 avril 2006 à 01:16
merci je vais voir a quoi j'arrive avec ca


@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
10 avril 2006 à 01:16
C'est normal que ça met le pan du Son Wave à gauche completement?

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 01:21
Non c'est pas normal je comprend pas trop justement la doc dit :

New volume setting. The low-order word contains the left-channel volume
setting, and the high-order word contains the right-channel setting. A value of
0xFFFF represents full volume, and a value of 0x0000 is silence.
If a device does not support both left and right volume control, the
low-order word of dwVolume specifies the volume level, and the high-order
word is ignored.
d'ou le + ou - 0x0101
Mais voilà... bizarre

if(!Meilleur("Joky")) return ERREUR;<
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 avril 2006 à 01:21
lol, ok c'est mortel en fait on, peut traiter l'output mzaintenant, merci joky



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 01:25
J'ai chercher moi aussi très longtemp pour faire un lecteur mp3 lol ;)
Maintenant faut je cherche de l'info sur conversion mpeg to wav :)

if(!Meilleur("Joky")) return ERREUR;<
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 avril 2006 à 01:34
juste une question naze :

waveOutGetPlaybackRate(
HWAVEOUT hwo,
LPDWORD pdwRate
);

comment utiliser ca?? comment je peux récup une variable avec la freq?



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 01:37
Donc LPDWORD pdwRate pour le deuxième param

Donc le HIWORD représente la partie entière de la fréquence je pense
Mais pour le LOWORD c'est plus compliqué :

0x4000 représente 0.25
0x8000 représente 0.50

Donc voilà

par exemple : 0x000F8000 ça donne 15.5

if(!Meilleur("Joky")) return ERREUR;<
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
10 avril 2006 à 01:44
Ey sa devien interresant. Est-ce que satellite34 et moi allons réglé notre problème? Donc si je comprend bien (en très simplifié) on ouvre avec waveOutOpen, on récupere la fréquence avec <gras>waveOutGetPlaybackRate</gras> et c'est tout?

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 01:46
Ben oui lol
Et pour vraiment répondre à la question de satellites

DWORD dwRate;

waveOutGetPlaybackRate(hWo, &dwRate);

voilà dwRate contient la fréquence ;)

if(!Meilleur("Joky")) return ERREUR;<
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 avril 2006 à 01:47
sakingdom, si t'arrive a faire marcher getPlaybackRate, je suis preneur!! je capte zoued a ce DWORD machin truks, lol, windows, c'est vraiment bizzar



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
10 avril 2006 à 01:51
Windows est fait pour faire du bacon à Bill. C'est vraiment pas simplifier. On dirait qu'il on fait exprès. Menfin moi aussi sa savère pas si facile que ça. Je récupère rien du tout.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 avril 2006 à 01:52
non mais d'accord ca g capté, mais en fait c'est pour avoir un int ou float ou toute autre truk que je peux faire passer a mon debugguer; dword truk ca correspond a koi en fait comment en faire un int par exemple?



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 01:53
ça n'a rien de bizarre...
DWORD c'est une variable 32 bits
donc de la forme 00...............................00
Dedans il y a 2 parties, HIWORD et LOWORD
HIWORD c'est les 16 premiers et LOWORD les 16 derniers

Donc un DWORD on peut le réprésenté comme ça : 0x0000 (8*4 = 32 bits)
Et donc la fonction demande un pointeur sur un DWORD
Donc on lui donne l'adresse de celui qu'on à déclaré...

Et comme ça elle copie la valeur dans la variable...
Et voilà t'as la fréquence...

if(!Meilleur("Joky")) return ERREUR;<
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
10 avril 2006 à 01:53
DWORD peut déja etre un int.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
10 avril 2006 à 01:54
Ah oups

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
Rejoignez-nous