Bonjour.
J'aurais aimé savoir comment insérer un son wav dans un dll pour le stocker et quelle est la fonction qui permet de le jouer lorsqu'on appuie sur un bouton par exemple :?:
merci
Version imprimable
Bonjour.
J'aurais aimé savoir comment insérer un son wav dans un dll pour le stocker et quelle est la fonction qui permet de le jouer lorsqu'on appuie sur un bouton par exemple :?:
merci
Voir les api et notamment celle appelée PlaySound
je vais regarder ca.
Merci
Salut!
Si c'est un sample pas trop gros, tu peux le stocker dans un tableau de byte...
Avec Delphi, j'ai réalisé un petit utilitaire qui me permet de créer à partir d'un fichier quelconque, un tableau de constante...
Je l'ai appellé File2tab, voici les sources:
:arrow: http://site.voila.fr/subut/data4/File2Tabx.zip
Si tu veux juste l'éxé:
:arrow: http://site.voila.fr/subut/data4/File2Tabx_exe.zip (216 ko)
Le résultat est un fichier INC à inclure dans sa source...
J'avais donné un exemple et des explications dans un topic, mais il a été supprimé.
Donc, si tu as besoin de détails, demande-moi.
Au fait, pour utiliser ce tableau avec SndPlaySound, il faut le convertir en pointer.
En pascal, cela se fait tout simplement avec la fonction addr ou @.
à+
merci
Je crois que je vais avoir besoin d'un peu d'aide comme je ne connais pas le pascal :oops: .
Pour SndPlaySound, je vais utiliser ce tutorial http://vcallies.developpez.com/sonsvb/ , mais pour ce qui est du pointer en Pascal, je ne vois pas trop ce qu'il faut faire. Et une fois que je l'ai converti en pointeur, je l'insere comment dans mon code vb?
Imaginons que tu ais traîté le fichier sample1.wav avec File2Inc.exe... Tu obtiens donc le fichier sample1.inc avec le tableau sample1... Tu renomes ce tableau ou le fichier car en fait il ne faut pas qu'ils portent le même nom (je vais corriger ça dans mon code). Bref, disons que tu ais après le traitement le fichier sample1.inc et le tableau sample1tab, tu intègres les données dans ton code. Alors en Pascal, c'est la directive $I, par exemple {$I sample1.inc}. Avec VB, je ne sais pas, mais ça ne doit pas être très différent. Et pour finir:Tu as aussi la possibilité de stocker le sample dans le fichier ressource (.res), au choix donc... à+Code:PlaySound( addr(sample1tab), 0, SND_MEMORY | SND_ASYNC );
:google:
http://www.thevbzone.com/l_res.htmCode:
1
2
3
4
5
6
7
8
9 Sub JouerSon(FName As String, SND_TYPE As Long) Dim RetVal As Long Dim tb() As Byte tb = LoadResData(FName, "CUSTOM") RetVal = sndPlaySoundMemory(tb(0), SND_TYPE) DoEvents ' Optionnel End Sub ... JouerSon "SAMPLE1", SND_ASYNC + SND_MEMORY
http://www.vbarchiv.net/vbapi/PlaySound.php
http://www.vbexplorer.com/VBExplorer/sound1.asp
http://www.computing.net/programming/wwwboard/forum/9558.html
Je vais regarder tout ca.
merci pour ton aide et pour les liens.
Salut!
Sujet résolu ou pas?
Je n'aime pas voir des topics laissés ainsi après tous les conseils que nous t'avons donné! :evil:
Pas de réponse = délestage!
à+
Le probleme est bien resolu. J'ai oublié de l'indiquer. :oops: Desolé.
Je le referai pu :)
Et la solution est..?
Alors, avec l'editeur de ressource, j'ai mis mes wav dans un fichier .res. Ensuite, j'ai utilisé l'api playsound.
J'ai trouvé la solution sur le site http://www.thevbzone.com/l_res.htm que tu avais indiqué un peu plus haut.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Private Const SND_APPLICATION = &H80 Private Const SND_ALIAS = &H10000 Private Const SND_ALIAS_ID = &H110000 Private Const SND_ASYNC = &H1 Private Const SND_FILENAME = &H20000 Private Const SND_LOOP = &H8 Private Const SND_MEMORY = &H4 Private Const SND_NODEFAULT = &H2 Private Const SND_NOSTOP = &H10 Private Const SND_NOWAIT = &H2000 Private Const SND_PURGE = &H40 Private Const SND_RESOURCE = &H40004 Private Const SND_SYNC = &H0 //declaration de l'api PlaySound. Private Declare Function PlaySound Lib "WINMM.DLL" Alias "PlaySoundA" (ByRef Sound As Any, _ ByVal hLib As Long, ByVal lngFlag As Long) As Long 'BOOL //Fonction qui permet de jouer le son.. Private Sub JouerSon(Numb) Dim DataArray() As Byte DataArray = LoadResData(Numb, "WAVE") Call PlaySound(DataArray(0), 0, SND_MEMORY Or SND_NODEFAULT Or SND_ASYNC) Erase DataArray End Sub ... //Appelle de la fonction. JouerSon 101 //101 est le nom de mon son dans le fichier .res
Voila.
C'est vrai que c'est pas malin de pas donner la solution.
Parfait! :wink:
à+