Assigner à une variable, la procedure mciSendString

Résolu
Signaler
-
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
-
Salut à tous,

J'aimerai faire quelque chose du type

Var
azerty : .....;
qwerty : ......;

begin
........
azerty:=mciSendString('',_,_);
qwerty.asign(azerty);
.......
end;

Je ne sais pas quelle variables utiliser, sachant que je travaille sur du Son.
Sivous avez une idée ??

Merci à vous

5 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Oui j'ai bien vu soit c'est un oublie des dev de chez soft où alors ce n'est pas documenté personnellement je pencherai plutôt pour la deuxième solution si non ça serait vraiment ridicule de leur part. Mais bon rien n'est impossible chez MS

@+
Cirec
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Salut,
je ne sais pas si c'est ce que tu souhaites mais bon essaye quand même :

Type
TmciSendString = function (lpstrCommand, lpstrReturnString: PChar;
uReturnLength: UINT; hWndCallback: HWND): MCIERROR;


Var azerty, qwerty : TmciSendString;


@+
Cirec

Salut Cirec,

Voila, je souhaite capturer un son avec un micro. Pour cela j'utilise mciSendString comme ceci :

mciSendString('close all', nil, 0, 0); // Fermeture (au cas où)
mciSendString('open new type waveaudio alias capture', nil, 0, 0); // Ouverture du périphérique MCI
mciSendString('seek capture to start', nil, 0, 0); // Préparation de la capture
mciSendString('set capture samplespersec 44100', nil, 0, 0); // Qualité du son
mciSendString(PChar('set capture bitspersample ' ) , nil, 0, 0);
mciSendString('set capture channels 2', nil, 0, 0); // Nombre de canaux
mciSendString('record capture', nil, 0, 0);

En fait le son est mis en mémoire à ce stade. Ensuite on le sauvegarde sur un fichier comme ceci :

mciSendString(PChar('save capture "c:\test.wav"'), nil, 0, 0); // Enregistrement
mciSendString('stop capture', nil, 0, 0);
mciSendString('close capture', nil, 0, 0);

Moi je ne veux pas passer par un enregistrement sur le HD.

Je souhaite faire :

mciSendString('seek capture to start', nil, 0, 0); // Préparation de la capture
mciSendString('set capture samplespersec 44100', nil, 0, 0); // Qualité du son
mciSendString(PChar('set capture bitspersample ' ) , nil, 0, 0);
mciSendString('set capture channels 2', nil, 0, 0); // Nombre de canaux
mciSendString('record capture', nil, 0, 0);

Puis récupérer le son en mémoire dans un TMemorystream. J'ai fais différentes tentatives et rien ne fonctionne. Si tu as une idée elle est la bienvenue.

Merci A+ :)
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Salut,
bon j'ai effectué des recherches et j'ai trouvé les mêmes questions en anglais en allemand et autres langues mais elles sont toutes restées sans réponses, ils se sont tous résignés à passer par le disque dur.
Voilà c'est tout ce que je peu te dire à ce sujet désolé

@+
Cirec

Merci Cirec.

C'est dommage quand meme quand on y pense : car le son est enregsitré dans un flux. Alors c'est enervant de pas pouvoir le récuperer