OVH Cloud OVH Cloud

WINMM : génération de son à partir d'un buffer

5 réponses
Avatar
free
bonsoir
j'ai trouvé des exemples de pgmes sur le Web qui envoient des .wav sur la
carte son. j'ai vu qu'en DELPHI on pouvait faire la même chose mais à partir
d'un buffer (magazine ELEKTOR avril 2005 ua). Qqu'un a t il essayé ca ?
c'est pour faire le Générateur Base Fréquence du pauvre.

nb : je sais , il existe des logiciels qui font ca , mais je veux pouvoir
générer le signal que je veux , pas le choisir dans une liste , et ceci en
quasi temps réel.

merci de vos liens/tuyaux

ps : evitez moi de passer au C.

5 réponses

Avatar
Jacques
free a écrit :
bonsoir
j'ai trouvé des exemples de pgmes sur le Web qui envoient des .wav sur la
carte son. j'ai vu qu'en DELPHI on pouvait faire la même chose mais à partir
d'un buffer (magazine ELEKTOR avril 2005 ua). Qqu'un a t il essayé ca ?
c'est pour faire le Générateur Base Fréquence du pauvre.

nb : je sais , il existe des logiciels qui font ca , mais je veux pouvoir
générer le signal que je veux , pas le choisir dans une liste , et ceci en
quasi temps réel.

merci de vos liens/tuyaux

ps : evitez moi de passer au C.





Ci-dessous un code de module qui joue un son .wav à partir d'un buffer
renseigné par le fichier resource du projet :

Option Explicit

Private Const SND_ALIAS = &H10000
Private Const SND_ALIAS_ID = &H110000
Private Const SND_ALIAS_START = 0
Private Const SND_APPLICATION = &H80
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_RESERVED = &HFF000000
Private Const SND_RESOURCE = &H40004
Private Const SND_SYNC = &H0
Private Const SND_TYPE_MASK = &H170007
Private Const SND_VALID = &H1F
Private Const SND_VALIDFLAGS = &H17201F

Private Declare Function sndPlaySound Lib "winmm.dll" Alias
"sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Declare Function PlaySoundA Lib "winmm.dll" (ByVal lpszName As
String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Dim m() As Byte

Public Sub PlaySound(ResName, Optional Wait As Boolean = False)
Dim resErr As Long

On Error Resume Next
Err.Clear
m = LoadResData(ResName, "WAVE")
resErr = Err.Number
If resErr = 0 Then
PlaySoundAsByte m, Wait
End If

End Sub

Private Sub PlaySoundAsByte(m() As Byte, Optional Wait As Boolean = False)
Dim flags As Long

flags = SND_NODEFAULT Or SND_MEMORY Or SND_SYNC
If Wait = False Then flags = flags Or SND_ASYNC

sndPlaySound m(0), flags
End Sub

Private Sub PlaySoundAsFile(fName As String, Optional Wait As Boolean =
False)
Dim flags As Long

flags = SND_NODEFAULT Or SND_FILENAME Or SND_SYNC
If Wait = False Then flags = flags Or SND_ASYNC
PlaySoundA fName, 0&, flags
End Sub


--
Cordialement,

Jacques.
Avatar
free
merci jacques ,

mais maintenant je galère sur la ressource.
J'ai VB5CCE et je ne sais pas comment creer ce type de ressource WAV(E).
apres qques recherches sur le WEB je patoge.
En fait si je pouvais voir ce que donne une ressource WAVE une fois chargée
je pourrais surchager la zone en BYTE par mes données.
Mais je n'arrive pas à me faire un embryon de ressource.
a+
Avatar
Jacques
Bonjour,
free a écrit :
merci jacques ,

mais maintenant je galère sur la ressource.
J'ai VB5CCE et je ne sais pas comment creer ce type de ressource WAV(E).
apres qques recherches sur le WEB je patoge.
En fait si je pouvais voir ce que donne une ressource WAVE une fois chargée
je pourrais surchager la zone en BYTE par mes données.
Mais je n'arrive pas à me faire un embryon de ressource.
a+





Tu peux appeler diretement la fonction :

PlaySoundAsByte(m() As Byte, Optional Wait As Boolean = False)

en passant un tableau de Byte.

Pour les fichiers de resources, ne connaissant pas VB5CCE, je peux
simplement t'indiquer que dans VB6, il faut aller dans le menu :

Complèments => Gestionnaire de complèments =>
Sélectionner 'Editeur de resource VB6' dans la liste
Cocher : Charger / Décharger et Charger au démarrage
puis valider.

Ensuite dans le menu outils, tu as un choix 'Editeur de resources', qui
permet de créer un fichier de resources, et dans le menu projet, un
choix 'Ajouter un nouveau fichier de resources', qui permert d'importer
un fichier de resource existant. A la compilation, ce fichier est
intégré à l'executable (ou à l'OCX ou la Dll).

D'après Nicolas G., VB5CCE
[C'est une version gratuite & allegée de VB5 ne permettant de compiler
que des OCX (pas d'exe), CCE c'est pour Control Creation Edition.]

J'ai utilisé des fichiers de resources pour des ActiveX, .OCX et .DLL,
donc à vérifier si c'est dispo dans ta version.

Bon courage

--
Cordialement,

Jacques.
Avatar
ng
Salut,

Sous VB5(CCE) il n'y a pas d'éditeur de ressources, voir donc le post de
Francois :

<quote src=Francois>
Hello,

Vu qu'il s'agit d'un VB5, je dirais qu'il n'y a pas d'éditeur de ressources
intégré...
Toutefois on peut employer RC.exe (resources compiler) fournit, entre
autres, dans le platform SDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Il faudra alors créer un fichier de ressources (généralement, .rc) le
convertir en fichier de ressources binaire (généralement, .res) et l'inclure
au projet VB.

Tout ce qu'on peut vouloir savoir à propos des fichiers rc est indiqué dans
le platform sdk, et online:
http://msdn.microsoft.com/library/en-us/tools/tools/resource_compiler.asp

Plus simplement, le site vbAccelerator indique comment bien commencer:
http://www.vbaccelerator.com/home/VB/Code/Libraries/Resources/Using_RC_EXE/article.asp

François Picalausa
</quote>

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Avatar
Jacques
Bonjour,
ng a écrit :
Salut,

Sous VB5(CCE) il n'y a pas d'éditeur de ressources, voir donc le post de
Francois :

<quote src=Francois>
Hello,

Vu qu'il s'agit d'un VB5, je dirais qu'il n'y a pas d'éditeur de ressources
intégré...
Toutefois on peut employer RC.exe (resources compiler) fournit, entre
autres, dans le platform SDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Il faudra alors créer un fichier de ressources (généralement, .rc) le
convertir en fichier de ressources binaire (généralement, .res) et l'inclure
au projet VB.

Tout ce qu'on peut vouloir savoir à propos des fichiers rc est indiqué dans
le platform sdk, et online:
http://msdn.microsoft.com/library/en-us/tools/tools/resource_compiler.asp

Plus simplement, le site vbAccelerator indique comment bien commencer:
http://www.vbaccelerator.com/home/VB/Code/Libraries/Resources/Using_RC_EXE/article.asp

François Picalausa
</quote>




j'ai vu le post de françois après. Et comme il y a deux fils
Merci en tout cas de la précision.

--
Cordialement,

Jacques.