Equivalent beep

cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 23 août 2006 à 20:12
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 24 août 2006 à 09:52
Salut,

Je cherche un equivalent de la fonction Beep, sauf que le son doit sortir sur les hauts parleurs (pas systeme).
J'aimerais eviter le DirectX.

D@runia

18 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
23 août 2006 à 20:18
Essaye avec la fonction de l'API Beep.
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2006 à 20:22
Je rappelle que je veux faire sortir le son sur les haut parleurs (mais pas le HP systeme !!!)

D@runia
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 août 2006 à 20:28
Salut
Cherche PlaySound parmi les codes du site. C'est une API hyper simple à utiliser.
Tu n'auras plus qu'à lui fournir un fichier WAV de ton choix qui fera Beep, Blurp, Smack ou Zuiiiip, comme tu veux !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 août 2006 à 20:28
Les API WaveOut... feront l'affaire

@+

E.B.
0

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

Posez votre question
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2006 à 20:31
Le truc, c'est que je ne veux pas lire un fichier wav !!!
Je veux avoir le meme fonctionnement qu'avec la fonction beep.
Enfin avec DarkSidious, Jack et EB, il devrait avoir moyen de trouver !

D@runia
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2006 à 21:12
Ca fait 4h que je cherche et je galere trop ...
Je croyais vraiment que c'etait plus facile a trouver.

D@runia
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 août 2006 à 21:45
Beep

chaibat
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 août 2006 à 21:49
je me rattrappe !

 'jouer un son
Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long


Public Sub MCI_INTERPRETE(Fichier As String)
                  mciExecute ("play " & Fichier)
End Sub

contentes - toi de ça pour le moment.

chaibat
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
23 août 2006 à 22:29
salut,

essaye quelquechose dans ce goût là peut-être....

(dans un module, puis faire Call Beeep)

Option Explicit 
'
'-> ferme le port midi
Private Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long 
'
'-> ouvre un port midi
Private Declare Function midiOutOpen Lib "winmm.dll" _ 
                        (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, _ 
                         ByVal dwInstance As Long, ByVal dwFlags As Long) As Long 
'
'-> envoie un message à un port midi ouvert
Private Declare Function midiOutShortMsg Lib "winmm.dll" _ 
                        (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long 
'
'-> fait une pause pour un temps donné
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
'
'
Public Sub Beeep() 
    Dim lMidiOut As Long 

'   ferme le port pour arrêter l'ancienne note
    Call midiOutClose(lMidiOut) 

'   ouvre une nouvelle entrée
    Call midiOutOpen(lMidiOut, 0&, 0&, 0&, 0&) 

'   applique l'instrument
    Call midiOutShortMsg(lMidiOut, 8336832) 

'   ouvre la note
    Call midiOutShortMsg(lMidiOut, RGB(144, 73, 127)) 

'   laisse le son tourner (c'est au dev d'ajouter un DoEvents au besoin entre les appels de chaque note, pour reprendre la main)
    Call Sleep(200) 

'   ferme le port pour arrêter l'ancienne note
    Call midiOutClose(lMidiOut) 
End Sub

<small> Coloration
syntaxique automatique [AFCK]</small>
       

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2006 à 22:43
Merci a vous !




[auteurdetail.aspx?ID=736628 chaibat05]
 
: je ne veux pas lire un fichier. Juste sortir un son d'une certaine fréquence (comme beep)

[auteurdetail.aspx?ID=401740 PCPT] : ton code fonctionne, mais est-il possible de faire des sons d'autres frequences ?

D@runia
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
23 août 2006 à 22:51
salut,

oui, voir les commentaires...
il suffit de changer la valeur (long) de dwMsg (API midiOutShortMsg) pour l'instrument, la note, et dwMilliseconds pour la durée (API Sleep)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2006 à 23:07
Ma question serait comment convertir un frequence en note ?

D@runia
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
23 août 2006 à 23:27
on s'éloigne pas mal de ta demande de départ non?.....

regarde dans les sources genre "piano" etc....
je n'ai pas trop l'oreille musicale ni même de diapason.

fait des essais ou regarde sur le net s'il existe des tables de conversion long >> solfège....
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 août 2006 à 23:30
^^ sortir un son d'une certaine fréquence (comme beep)


Beep

Cette instruction emet le son configuré (dans le panneau de configuration)
pour le son beep.

Plus simple que ça: il n' y a pas.

Si tu veux jouer un son,
 autre chose que ce que tout le monde  t' a proposé :il n' y a pas.
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 août 2006 à 23:39
Re
Ce que tu n'as pas dit mais que ma boule magique a su détecter, c'est que tu ne voulais pas de fichier annexe pour ce son.
Pour cela, il te suffit de placer le fichier WAV (son contenu) dans un fichier de ressources qui sera incorporé à ton EXE, puis d'appeler ce son directement en mémoire :
Dans un module, place ceci :

' No Device carte Son (pour savoir si elle existe)
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
' Version mémoire
Private Declare Function sndPlaySoundmem Lib "winmm.dll" Alias "PlaySoundA" ( _
                                    ByVal lpszName As Long, _
                                    ByVal hModule As Long, _
                                    ByVal dwFlags As Long) As Long
Private Const SND_SYNC      As Long = &H0        ' Attend que le son soit joué pour revenir
Private Const SND_ASYNC     As Long = &H1       ' Démarre le son et reviens
Private Const SND_NODEFAULT As Long = &H2   ' Si problème, n'émettra pas de bip
Private Const SND_MEMORY    As Long = &H4      ' Le son est en mémoirePrivate Const SND_LOOP      As Long &H8        ' Joue en boucle (arrêt sndPlaySound(Null, SND_SYNC)
Private Const SND_NOSTOP    As Long = &H10     ' N'interrompt pas le son en cours
Private Const SND_NOWAIT    As Long = &H2000   ' N'attend pas après le driver si occupé

Public Sub JoueSonMémoire()



    ' Joue un son pour attirer l'attention (depuis ressource)
   
    Dim bCarteSon As Boolean
    Dim sSonMessage() As Byte
    Dim Ret As Boolean
   
    On Error Resume Next
   
    ' Test s'il existe une carte son
    bCarteSon = False
    If waveOutGetNumDevs <> 0 Then bCarteSon = True
    ' Définit le fichier son
    sSonMessage = LoadResData(4013, "SON.MESSAGE")
   
    ' Joue le son
    If bCarteSon Then Ret = sndPlaySoundmem(VarPtr(sSonMessage(0)), _
                                            0, _
                                            SND_NOWAIT Or SND_NODEFAULT Or SND_MEMORY Or SND_ASYNC)



End Sub


Bien sûr, il faudra que tu adaptes le 4013 et "SON.MESSAGE" aux données que tu saisiras quand tu ajouteras un fichier WAV dans les ressources 'personnalisées'.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2006 à 23:46
Vraiment grand merci a vous tous pour vous etre demenés !
Mais j'ai trouvé mon bonheur ! L'excellente source de


gabuzomeuh
  permet de creér des wav en fonction de la frequence. J'aurais juste a creér le fichier selon la frequence voulue par l'utilisateur et le lire !http://www.cppfrance.com/auteur/GABUZOMEUH/143528.aspx

D@runia
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 août 2006 à 00:15
 je ne veux pas lire un fichier
J'aurais juste a creér le fichier selon la frequence voulue par l'utilisateur et le lire !
http://www.cppfrance.com/auteur/GABUZOMEUH/143528.aspx
?????????????????????????????????????????????????????????????????????????????????????????
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
24 août 2006 à 09:52
Oui. Je vais utiliser cette methode, car je ne n'en ai pas trouvé d'autres et je pense que c'est la seule solution.
Apres, il est peut etre possible de construire le wav en mémoire et de le lire, sans forcement ecrire sur le disque.

D@runia
0
Rejoignez-nous