Equivalent beep

Signaler
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
-
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
-
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

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

D@runia
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Les API WaveOut... feront l'affaire

@+

E.B.
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
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
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
Ca fait 4h que je cherche et je galere trop ...
Je croyais vraiment que c'etait plus facile a trouver.

D@runia
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Beep

chaibat
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
Ma question serait comment convertir un frequence en note ?

D@runia
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
^^ 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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
 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
?????????????????????????????????????????????????????????????????????????????????????????
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
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