Mes petits chéris,
Me revoilà. Désolé d'avoir besoin de dormir. J'ai un peu rattrapé ma petite nuit d'avant hier !
Oliv a écrit :sv = Round(PeekW(*pt) + 45,0) ne change rien non plus sur le son
Ca ne change rien à l'écoute du son mais on voit bien que ça décale le son vers le haut à l'affichage. L'oreille ne perçoit que les vibrations, donc si tu ajoute une constante (la valeur 45) à ton signal, ça ne s'entend pas. Mais si Dobro regarde la membrane de son haut-parleur 300 watts à la loupe, il pourra constater qu'elle n'occupe pas (en moyenne) la même position avec sv = Round(PeekW(*pt) + 45,0) que avec sv = Round(PeekW(*pt),0). En tout cas, dans la théorie, et si sa chaine à une qualité parfaite (en vérité, tous les équipements éliminent les sons dont la fréquence est trop haute ou trop basse pour être audible. Une valeur constante correspond à une fréquence de 0 hertz, ce qui est vraiment trés trés bas !!!)
Pour Dobro : il doit y avoir un blème dans ton code modifié (pas celui qui est sur le forum). Chez moi, si je fais PokeW(*pt,0) (ou si je comment le PeekW, comme tu le suggère), j'obtiens bien un beau silence spectral (et doré)... à condition de travailler sur un son 16 bits !!!!!!
Comme le même code est répété 3 fois en fonction des 3 formats possibles de son, quand tu fais une manip, il faut la faire 3 fois !! Ai-je mis le doigt au bon endroit ?
Deux autres trucs auxquels il faut penser :
- les fichiers Include ne sont pas automatiquement enregistrés quand on lance la compilation du programme principal. Enregistre bien ton programme avant de faire un essai
- le curseur de mixage doit être sur Wet(100%) pour être sur ne n'avoir plus aucune trace du signal d'origine.
Concernant les sons 32 bits, il s'avère que la fonction PlaySound_ de Microsoft est bêtement incapable de lire ce format. J'ai essayé sans succès de faire un player avec DirectX 8 sur la base d'un code de Danilo. Et puis finalement, j'ai essayer la fonction PlaySound de PureBasic (basée sur DirectX 7, d'aprés la documentation) qui marche à la perfection. Ma première version de SoundEditor utilisait cette fonction, c'est pour ça que j'étais parti du principe que le programme marchait avec les sons 32 bits. Et puis, je ne sais plus pour quelle raison j'avais voulu utiliser le PlaySound de l'API à la place... C'est donc la queue entre les jambes que je me prosterne humblement devant Fred. Reste le problème de visualisation dans le module filtre (le son est correctement visualisé dans la fenêtre normale) que je n'ai pas eu le temps de régler. Ca doit pas être grand chose.
J'en profite pour répondre à Oliv qui m'a demandé comment modifier la fréquence d'un son sans changer sa durée.
C'est pas simple !!!!!!
Prenons un exemple basic : un signal triangulaire d'une durée trés courte (mettons 1 milliseconde). Supposons qu'on ait seulement pu loger deux périodes dans cette durée (deux montées et deux descentes). Si tu veux doubler la fréquence de ce signal, tu veux en fait loger 4 périodes dans la même durée. D'où sors-tu les deux périodes qui te manquent ? Dans cet exemple, on peut se contenter de recopier les deux premières périodes et le tour est joué. OK. Maintenant, supposons que tu veuille doubler la fréquence d'un signal complexe constitué d'un mélange de son (comme un morceau de musique, par exemple). Où va tu pêcher les périodes à recopier dans tout ce fatra ? Là, je lis dans ton oeil gauche que tu commence à piger et à paniquer. Cool, man, relax, tire doucement sur le tarpé, ça va aller.
Honnêtement, je n'ai pas encore essayer de m'attaquer à ce problème, mais j'ai une idée :
On peut considérer qu'on à le droit de dupliquer toutes les séquences situées entre deux passages par zéro. On pêche ces séquences de la façon la plus régulière possible tout au long du signal d'origine et on les duplique jusqu'à obtenir la durée souhaitée. Je suppose qu'il vaut mieux éviter les séquences trop longues qui peuvent être constituées d'une porteuse (signal principal) de basse fréquence à laquelle des signaux de haute fréquence sont peut-être additionnées.
Il faudrait voir ce que ça donne en pratique. Ce problème est peut-être un peu trop prise de tête pour une première approche d'un travail sur le son. Mais, bon, si tu es du genre têtu et maso comme ton éminent professeur, tu peux y arriver. En tout cas, ne te dégoute pas tout de suite avec un truc comme ça.
Oliv m'a aussi fait remarqué que ma documentation sur le son (
http://www.freesoundeditor.com/download ... matwav.zip ) prétend que les sons codés en 8 bits on un point zéro positionné à +127 alors que dans les filtres que j'ai écrit, on peut lire "8 bits signals have a mid point at 128". Je crois que nous sommes tous d'accord pour dire que le valeur maximum d'un octet est 255 et que la moitié de 255, c'est 127,5. Selon les documentations que j'ai pu trouver sur le net, le point milieu est positionné à 127 ou à 128. Il y a peut-être une norme officielle qui définit ça. En tout cas, en attendant et aprés réflexion, j'ai décidé d'opter pour la valeur 127 indiquée dans ma doc. Je suis en train de corriger mes filtres pour être plus cohérent. Dans tous les cas, cela n'a pas d'incidence audible sur le son.
Oliv nous a proposé un lien :
http://perso.wanadoo.fr/vb-audio/us/sp/ ... ffect0.htm
que je recommande chaudement à tous ceux qui veulent en savoir plus sur le traitement du son. C'est remarquablement bien écrit. D'ailleurs, j'ai envoyé un mail au concepteur pour le féliciter.
Toute la communauté PureBasic attend une version évoluée du Tremolo de Dobro (ils n'ont pas encore de forum en Turquie, mais je suis sûr que si c'était le cas, ils en parleraient déjà). Alors, ça vient ?
ETAT DES LIEUS
Participants au projet SoundEditor
Chef de projet :
- Zapman (pour le moment)
Déclarés partants :
- Zapman : nettoyage du code existant, resampler, Fade In/Out, et heu... plein d'autres trucs
- KarlKox : encodeurs et décodeurs et sûrement d'autres trucs
- Oliv : tout ce qui l'éclate
- Flype : le système de plugin
- Dobro : à temps partiel sur des modules
- Jacobus : n'a pas précisé. Disons qu'il va tout refaire en mieux
Réservent leurs réponses :
- Le Soldat Inconnu
- Heis Spiter
Ont déjà participé au debuggage :
- Zapman
- Le soldat Inconnu
- Chris
- cederavic
- Flype
- Dobro
- Rings (forum anglais)
- Lars et NickTheQuick (forum allemand)
- j'espère n'avoir oublié personne
Ont déjà créé une fonction ou un module :
- Zapman
- Dobro
M'ont encouragé :
Ouhla ! Y'a trop de monde ! Merci à tous pour vos encouragements.
Ouf... j'ai réussi à terminer mon message sans dépasser la limite de 62535 caractères que nous impose ce forum.