PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → générer un son sous WD
générer un son sous WD
Iniciado por guest, 10,jun. 2006 20:46 - 14 respuestas
Publicado el 10,junio 2006 - 20:46
Bonjour a tous,

il y a qq temps, j'avais demandé si quelqu'un savais comment émmettre un son depuis WD, il m'avais été répondu d'utiliser l'API beep, je me suis alors éxécuté, cela fonctionne tres bien, mais le hic, car il y a un hic, c'est que ce son est généré sur le buzzer de la carte mère et non pas sur la carte son, hors pour l'application qui m'intéresse, j'ai besoin de récuppérer ce son afin de le traiter par de l'électronique.

bref, quelqu'un sait il si ont peux faire la meme chose, mais en controlant la carte son et non pas le buzzer carte mère ?

D'avance merci
Publicado el 11,junio 2006 - 11:42
Salut !

On 10-Jun-2006, "David C" <guest@newsgroup.fr> wrote:

Bonjour a tous,

il y a qq temps, j'avais demandé si quelqu'un savais comment émmettre un
son depuis WD, il m'avais été répondu d'utiliser l'API beep, je me suis
alors éxécuté, cela fonctionne tres bien, mais le hic, car il y a un hic,
c'est que ce son est généré sur le buzzer de la carte mère et non pas sur
la carte son, hors pour l'application qui m'intéresse, j'ai besoin de
récuppérer ce son afin de le traiter par de l'électronique.

bref, quelqu'un sait il si ont peux faire la meme chose, mais en
controlant la carte son et non pas le buzzer carte mère ?

D'avance merci



Utiliser son()?
en spérantque celarépond à ton besoin ....


--
Marcel Berman
Membre de WindAsso (coté belge !)


---
Antivirus avast! : message Sortant sain.
Base de donnees virale (VPS) : 0623-4, 09/06/2006
Analyse le : 10/06/2006 23:45:22
avast! - copyright (c) 1988-2006 ALWIL Software.
http://www.avast.com
Publicado el 11,junio 2006 - 11:43
David --

Utilisez les fonctions MIDI de l'API à savoir :

midiConnect
midiDisconnect
midiInAddBuffer
midiInClose
midiInGetDevCaps
midiInGetErrorText
midiInGetID
midiInGetNumDevs
midiInMessage
midiInOpen
midiInPrepareHeader
midiInProc
midiInReset
midiInStart
midiInStop
midiInUnprepareHeader
midiOutCacheDrumPatches
midiOutCachePatches
midiOutClose
midiOutGetDevCaps
midiOutGetErrorText
midiOutGetID
midiOutGetNumDevs
midiOutGetVolume
midiOutLongMsg
midiOutMessage
midiOutOpen
midiOutPrepareHeader
MidiOutProc
midiOutReset
midiOutSetVolume
midiOutShortMsg
midiOutUnprepareHeader
midiStreamClose
midiStreamOpen
midiStreamOut
midiStreamPause
midiStreamPosition
midiStreamProperty
midiStreamRestart
midiStreamStop

Dans votre cas la fonction à utiliser est : midiOutOpen

Vous trouverez tous les détails sur MSDN, ou en faisant une recherche sur Google.
Publicado el 11,junio 2006 - 12:08
Mais tu peux gerer le son avec windev


// Joue le Son contenu dans le fichier "TADA.WAV"
Son("Tada.wav")
// Joue en bloquant sur carte sonore
Son("tada.wav", sonBloque)
// Joue en bouclant sur carte sonore
Son("C:\MSOFFICE\Sons\Voiture.wav", sonBoucle 1)

Voir l'aide tout y est expliqué
Publicado el 11,junio 2006 - 15:01
Claude--

La fonction Son() WinDev est une encapsultation de l'API PlaySound().
Cette API ne permet pas de piloter directement la carte son, comme le demande David.

Je persiste à dire que pour faire ce qu'il souhaite, il doit utiliser l'API MIDI.

Patrice Terrier - Consultant
Tel 04.76.98.16.73
pterrier@zapsolution.com
www.zapsolution.com
Publicado el 11,junio 2006 - 16:54
Merci pour vos conseils,

ce que je voudrais, c'est la meme fonction qu'avec l'API beep mais joué via carte son et non le buzzer carte mere, c'est a dire, donner la fréquence de la note et le temps de maintient.
je ne veux pas jouer un fichier wav ( trop de distorsions pour l'aplication qui m'intéresse)
je vais potasser l'API midi.

Merci pour vos bons conseils.
Je suis toujours preneur si d'autres infos.

@ Bientot
David
Publicado el 11,junio 2006 - 22:31
David--

Si vous le souhaitez je peux vous faire parvenir une très belle démo de ce que l'on peut faire avec l'API MIDI.
(démo écrite par Raffaello BERVINI)

Vous pourriez déjà vérifier si çà correspond à ce que vous voulez faire.

Patrice Terrier - Consultant
Tel 04.76.98.16.73
pterrier@zapsolution.com
www.zapsolution.com
Publicado el 11,junio 2006 - 22:32
De plus, je viens de me rendre compte que l'API beep ne semble pas fonctionner sous win 98, est-ce qu'elle n'y est pas ou est-elle placée ailleur ?

Merci
David
Publicado el 12,junio 2006 - 01:13
Effectivement Windows 95/98/Me ignorent les paramètres dwFreq et dwDuration.

Il y a une solution,
elle consiste à écrire une petite DLL pour utiliser l'API Beep lorsqu'on sur une vrai système 32-bit et recourir à l'assembleur pour 95/98/ME.


! MOV AL, &HB6
! OUT &H43, AL
! MOV AL, x1?
! OUT &H42, AL
! MOV AL, x2?
! OUT &H42, AL
! In AL, &H61
! OR AL, 3
! OUT &H61, AL
Sleep DurationMSec
! In AL, &H61
! AND AL, &HFD
! OUT &H61, AL

au besoin je peux vous écrire la DLL.
Publicado el 12,junio 2006 - 09:32
C'est très sympa de votre part, et oui, je veux bien la démo de ce qu'il est possible de faire en Midi ainsi que la dll pour la fonction beep sous w98.

encore merci
David
crfcreusot@wanadoo.fr
Publicado el 12,junio 2006 - 11:43
David--

Voici le lien direct pour télécharger les démos MIDI.
http://www.zapsolution.com/preview/midi.zip

Le ZIP contient 3 EXE + un fichier midi "Jean-Jacques Goldman - Des vies.mid"

Notes :
- Vous pouvez jouer non seulement des .mid mais aussi des .Kar (Karaoke).
- La qualité du son midi est très dépendante de la qualité de la carte audio.
- Vous pouvez trouver beaucoup de fichiers midi et karaoke sur internet.
- Il y a de très nombreux paramètres que vous pouvez modifier dans les démos, à vous de les découvrir.

Je vais compiler le code assembleur sous forme d'une petite DLL et je vous la fait passer dans la journée.

Patrice Terrier - Consultant
Tel 04.76.98.16.73
pterrier@zapsolution.com
www.zapsolution.com
Publicado el 12,junio 2006 - 12:57
David--

Comme promis voici le lien direct pour télécharger la DLL (7168 octets).
http://www.zapsolution.com/preview/speaker.zip

Le nom de la procédure est : "Speaker" elle comporte exactement les mêmes paramètres que l'API "Beep"

Pour faire un test vous pouvez essayer ceci:

PROCEDURE Klaxon ()
nCount, nFreq, nDurationMsc are int
nDurationMsc = 275
FOR nCount = 1 To 4
nFreq = 987; API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
nFreq = 987; API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
FIN

Speaker fonctionne avec toutes les versions de Windows.

Patrice Terrier - Consultant
Tel 04.76.98.16.73
pterrier@zapsolution.com
www.zapsolution.com
Publicado el 12,junio 2006 - 15:56
Un grand merci a vous, si avec tout ca je n'y arrive pas ! faudra que j'arrete ;-)

Au plaisir.
David
Publicado el 12,junio 2006 - 16:35
Il y a une petite erreur dans mon exemple Klaxon.
Il faut remplacer le deuxième nFreq = 987 par nFreq = 329

PROCEDURE Klaxon ()
nCount, nFreq, nDurationMsc are int
nDurationMsc = 275
FOR nCount = 1 To 4
nFreq = 987; API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
//nFreq = 987; API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
nFreq = 329; API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
FIN

et voici un autre exemple

PROCEDURE Bounce ()
nCount, nFreq, nDurationMsc are int
nFreq = 32767
nDurationMsc = 246
For nCount = 60 To 1 Step -2
nFreq = 246 - nCount / 2
nDurationMsc = (nCount / 20) * 55
API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
nFreq = 32767
nDurationMsc = (nCount / 15) * 55
API("Speaker.dll", "Speaker", nFreq, nDurationMsc)
FIN
Publicado el 13,enero 2020 - 15:28
Je n'arrive pas a charger cette DLL dans webdev 22. (erreur: Application win32 non valide)

Comment faire ?
Ou y a t'il un équivalent pour générer des sons dans webdev ? ou synthèse FM midi ??