Avec VC++ je développe en C avec l'API Windows et je souhaite sortir des sons, mais pas sur le hp du PC, par la carte son et pas en Midi. Je ne trouve pas les fonctions OpenSound et CloseSound. Quelqu'un peut-il m'aider svp ?
Version imprimable
Avec VC++ je développe en C avec l'API Windows et je souhaite sortir des sons, mais pas sur le hp du PC, par la carte son et pas en Midi. Je ne trouve pas les fonctions OpenSound et CloseSound. Quelqu'un peut-il m'aider svp ?
Tu as regardé du côté des bibliothèques portables comme la SDL qui fournit une API simple pour jouer du son.
Il y a des articles sur le site avec exemple sinon je te propose te poster la partie de code qui ne compile pas ou qui ne s'execute pas comme attendu
J'ai bien regardé dans la SDL mais je ne vois pas de fonctions qui me permettraient de jouer des notes avec la hauteur de la note et la durée de la note. Comment faut-il s'y prendre ?
Merci pour ta réponse.
Ah jouer une note genre do, ré, mi, fa, sol etc ? Effectivement je ne sais même pas si c'est possible, tu sais une carte son ce n'est pas une flûte :mrgreen:
Ce genre de fonction est en général l'apanage des circuits de synthèse FM... Or, ce genre de circuit était surtout dédié à pallier l'absence de cartes MIDI performantes, ce qui n'est plus le cas depuis pas mal de temps : il n'est donc pas très étonnant que tu ne trouves que des fonctions liées au HP interne (support "historique") ou au MIDI (c'est quand même son rôle de faire ça ! ;)).
Quel est le problème qui te gêne avec le support MIDI, exactement ? Si tu vas un poil plus loin et que tu passes par DirectSound, tu auras un support bien meilleur que tout ce que tu pourrais faire à la main, et si l'instrument te pose un souci tu n'as qu'à prendre le piano, c'est le plus passe-partout...
EDIT : Autre solution, générer une sinusoïde parfaite en WAVE, sur une période, puis la jouer à des fréquences diverses (et en boucle pendant X ms) directement via les commandes Waveform...
Merci pour les réponses, on se sent moins seul.
Je vais le faire en Midi. J'ai installé la bibliothèque Fmod.
Est-ce que tu as un exemple pour sortir une note ?
Non, du tout : je connais les principes généraux et les limitations de certaines fonctions sonores, mais je ne suis pas branché génération de son (utilisateur uniquement), donc jamais mis les mains dans le cambouis jusqu'à ce point.
Ceci étant dit, il devrait être facile de trouver à partir de cette page MSDN.
Pour jouer du son/musique avec la SDL il faut utiliser la bibliothèque additionnelle SDL_mixer ! Bien sûr ce que tu recherches est plus spécifique et tu risque fort de te heurter au problème de ne rien trouver là dessus ! Il faudrait voir peut être des programmes de musique libre et voir comment eux ils font ca s'il le font mais là encore sans aucune garantie :aie:
Fait une recherche avec
- midiOutOpen
- midiOutShortMsg
- ...
fichier include mmsystem.h
J'ai trouvé un exemple de programmation midi
Charles Petzold KBmidi.c
Je n'arrive toujours pas à sortir le moindre son.
Voici ce que je fais :
iDevice=0 ; /* 1ère unité sur les 2 données par midiOutGetNumDevs */
nStatus=midiOutOpen(&hMidiOut, iDevice, NULL, 0L, 0L) ;
nStatus=midiOutShortMsg(hMidiOut, (DWORD) 0x00403c90) ; /* note on */
midiOutClose(hMidiOut) ;
La variable nStatus est bien égale à zéro. Aucun son ne sort (mes hp sont bien en fonction)
Je n'ai pas mis le note off pour l'instant.
Si quelqu'un a des idées ?
Je pense avoir trouvé les causes de mon problème. Les drivers standards de Windows ne permettent pas de jouer directement du midi.
Si je connecte mon interface Midi + instrument Midi cela marche. Mais cela ne me satisfait pas car je souhaite distribuer mon programme à des personnes qui n'ont pas d'interface Midi.
Ah oui tu ne nous avais pas dis ta configuration os, logiciel développement et matériel
Sinon, faudrait essayer par DirectMusic...