Comment jouer deux sons qui sont dans un fichier ressource en meme temp sans passer par un mediaplayer ?
Comment jouer deux sons qui sont dans un fichier ressource en meme temp sans passer par un mediaplayer ?
ça devient deux fichiers distincts, une fois extraits du fichier ressources, il me semble ?deux sons qui sont dans un fichier ressource
Auquel cas ça me semble mission impossible : comment veux-tu envoyer 2 fichiers en même temps à une seule carte son, mmmh ?
--
jp
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Bonjour,
Pas possible de placer le second son en thread et de synchroniser les deux ensemble, cela les mixerait-il ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part SndPlaySound('C:\zizique.wav', SND_ASYNC);
En électronique cela se nomme le multiplexage, en informatique, j'en sais rien encore
Salut J-P !
Ah, on reconnait bien là les bidouilleurs !
J'y ai pensé une fraction de nanoseconde, mais ch'suis pas sûr que le pilote de la carte son soit d'accord,
Maintenant, si quelqu'un a déjà réussi ça, vite vite qu'il colle son code ici, qu'on puisse copier !
Sinon, multiplexage, t'es sûr que tu confonds pas avec mixage ?
Car, pour vraiment multiplexer, il faudrait découper chaque fichier en tout 'tits' bouts que les threads (je connais quasiment pas ces bestiaux) enverraient à la carte son, ch'sais pas trop c'que ça pourrait donner...
Mes 2 cts, en attendant d'autres avis éclairés !
--
jp
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Avec DirectSound :
http://sub0.developpez.com/FormatWAV/mixsound.zip
Les samples sont mis en mémoire avant la lecture. Il est possible de choisir la fréquence, le panning (balance canal droit gauche), la position de départ (offset), le volume de chaque piste. La démo utilise des samples mono. Pour jouer un sample stéréo, il faut utiliser 2 pistes. Tu trouveras des démos DirectSound pour enregistrer et jouer des samples direct-to-disk avec DirectSound sur le net. Cela permet de pouvoir jouer simultannément autant de sample que l'on veut (limité par la puissance du système).
De retour parmis vous après 10 ans!!
Très joli, Sub0 ! Et + 1 !
On en apprend tous les jours, ici !
Et je me garde ce zip dans un coin (ça peut servir), merci
--
jp
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Cette démo est surtout destinée à être utilisée dans un petit jeu pour faire des bruitages... Mais bon, on peut l'améliorer pour en faire un programme de musique par exemple.
Tu trouveras d'autres sources dans cette page :
http://sub0.developpez.com/
De retour parmis vous après 10 ans!!
Salut jp
Ah, on reconnait bien là les bidouilleurs !
Oui oui multiplexage, idem le principe des télécoms.Sinon, multiplexage, t'es sûr que tu confonds pas avec mixage ?
Heureusement que Sub0 arrive à temps avant que la bagarre éclate
Bravo à merci à lui encore du code à piocher pour mieux apprendre !
Juste pour ajouter un mot, et Je pense que Sub0 a du faire un ptit bout de chemin dans le monde des player de mod
Les sons sont des ondes, et que la résultante est la moyenne des de ondes.
Donc octet par octet des samples (ondes) (ou autre choses que octets si la précision de l'intensité est plus que du 8bits), additionner et diviser par 2.
(sans parler de toutes les triturations que l'on fait sur une onde l'étirer pour les grave, aug. le vol, effet vibrato etc...)
C'était les principes des player de modules (mod, s3m...) DOS fut un temps qui ne travaillaient que comme ca.
Et c'etait plus de l'analyse d'onde que du bidouillage pour mixer 2 ou plusieurs samples ensemble pour avoir le son résultat final
Le bidouillage était au niveau des optimisations à fournir, pour effectuer le calcul le plus rapidement possible sur les pov vieille machine comme des P66
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
Effectivement. J'avais codé un mixeur de samples en temps réel avec TurboPascal7 en me basant sur cette méthode. Pour le mixage en 16bits, il faut "désassigner" le sample, mixer (faire la moyenne), puis remettre le sample au bon format. La démo suivante effectue cette fonction : http://sub0.developpez.com/FormatWAV/Make16ST_16MO.htm
De retour parmis vous après 10 ans!!
Moi je dis qu'une chose : bravo les gars !
(mdr avec tes icônes, J-P !)
Chapeau bas,
--
jp
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Allez, hop, j'ai trouvé un machin qui permet de le faire en DirectX (DirectSound)
Vous trouverez une unité snd_main.pas à ajouter à votre projet.
Ensuite l'utilisation est archi-simplissime
1) Vous initialisez DirectX SND_init(Handle) Handle est le Handle de la fenètre principale de votre application
2) et chargez les sons avec SND_add qui renvoi un entier qui identifie votre son de manière unique, à garder au chaud pour la suite
n1:=SND_add('son1.wav');
n2:=SND_add('son1.wav');
n3:=SND_add('son1.wav');
3) pour jouer un son, vous utilisez SND_play en lui indiquant le numéro de votre son, la position du son (X : à gauche ou à droite, Y : devant ou derrière),si vous souhaitez le jouer en boucle ou non
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm1.FormCreate(Sender: TObject); begin // Sound engine initialization if not SND_init(Handle) then Halt; // Load samples Button1.Tag := SND_add('snd1.wav'); Button2.Tag := SND_add('snd2.wav'); Button3.Tag := SND_add('snd3.wav'); end;
SND_play(n2);
4) Et pour libérer les ressources, vous terminez par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 procedure TForm1.ButtonClick(Sender: TObject); const offset = 768; var X : Single; begin // Calc X position for sample (not listener) if Sender = Button1 then X := TrackBar3.Position else if Sender = Button2 then X := TrackBar4.Position else X := TrackBar5.Position; // Play selected sample SND_play((Sender as TButton).Tag, X * 128); end;
SND_free;
Le mieu, c'est essayer l'exemple que je vous fourni dans le zip
Bidouilleuse Delphi
La j'ai un probleme avec le code de waskol. Le programme marche très bien avec les sons fourni ,mais avec mes sons il plante: Lecture au-dela de la fin du fichier. Mais si je lui donne un fichier wav de meilleur qualité, il marche.
C'est marrant (enfin non ), parce que chez moi ça marche avec des sons pourris (11KHz ou 8KHz, mono).Envoyé par poly128
Par contre, tout mes sons sont au format PCM.
Sinon, la démo est faite pour des sons de 22KHz, si tu as une impression de lecture trop rapide du son ou trop lente, c'est parce que tes sons ont un taux d'échantillonnage différent : dans ce cas utilises la trackbar du bas pour ajuster la vitesse de lecture de directX pour l'ajuster à ta fréquence d'échantillonnage.
Mais alors, je ne comprend pas encore le pourquoi du sa plante chez toi, chez moi je n'ai pas réussi à faire planter la démo
Pourrais-tu poster ici les sons (enfin, un seul peut suffire) qui te posent problème, celà me permettrait d'y voir plus clair. Merci
Bidouilleuse Delphi
Tout les sons de basse qualité ne marche pas. Meme les sons qui ont exactement le meme format que ceux fournie avec l'exemple ne marche pas.
Son qui marche pas.zip
Yop !
Ton "son qui marche pas", effectivement, génère une erreur "Lecture au-delà de la fin du fichier" au lancement du prog de Waskol.
Je l'ai donc ouvert avec un logiciel d'édition de sons (Goldwave, pour ne pas le nommer), ai fait "Resample..." sans changer les valeurs, l'ai enregistré et là c'est tout bon.
Mes 2 cts,
--
jp
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Effectivement en faisant Resample ca marche, mais pourquoi ca je sais pas.
Mille merci a Jipété et aussi a waskol pour le code, je commencais à désespérer.
je dis ca tout a fait au hasard, mais on sait jamais.
Est-qu'il ne peut pas y avoir une probleme de sample avec des valeurs dont les valeurs sont soit signées, soient non signées ? (2 normes différentes).
Juste qu'a une époque (lointaine certe), j'étais tombé sur ce problème...
et dans ce cas, le prog est prévu pour prendre qu'une seule norme soit signé, soit non signé... ?
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager