Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Les Mains dans le Cambouis
Bidouille & Développement Informatique

Travail du signal en C++

  • 10 réponses
  • 4 participants
  • 967 vues
  • 4 followers
Sujet de la discussion Travail du signal en C++
Salut ! :D:
Je bosse actuellement sur un algo de pitch shift et je suis à deux doigts de réussir. Mon problème est le suivant :


Toutes les 100ms, j'ai une période qui change de taille. (cf schémas)
Je connais son point de départ, et d'arrivée.
Dois je obligatoirement appliquer une transformée de fourier et rétablir la taille de la période pour que celle-ci ne provoque pas des "tics" dans mon signal ?
Ou existe t'il une solution plus simple ?
Au cas où, ou puis je trouver une fourier discrète en bibliothèque déjà faite et simple à utiliser ?
Merci
La sagesse, c'est la connaissance du vide.
2
En fait, j'ai trouvé la transformée de fourier discrete sur un bouquin mais je n'obtiens que des nombres complexes correspondant à des frequences. :(((
Quelqu'un saurai t'il ce que je dois appliquer comme fonction à la partie réelle et imaginaire pour transposer le son ?
La sagesse, c'est la connaissance du vide.
3
Un coup de google avec "dsp pitch shift algorithm c++" te donnera quelques idées ... (en anglais, quasi nécessaire pour programmer en dsp) ...
Bon courage
4
Salut tu peu utiliser la lib de Laurent de Soras voir FFTReal

http://ldesoras.free.fr/prod.html
5
A j'oublier un tuto vraiment térible par un autre guru en la matiere
http://www.dspdimension.com/data/index.html
6
Merci beaucoup, j'ai du pain sur la planche, héhé ! :D:
La sagesse, c'est la connaissance du vide.
7
Bon, je suis repartis de zero, j'ai acheté la librairie "numerical recipes" (presente sur le deuxieme lien) et j'ai commencé par appliqué une FFT et une FFTI à un sample de base (sans vouloir le modifier donc). J'ai trouvé de quoi calculer des coefficients pour un fenetrage mais je ne sais pas comment m'en servir. Tout ce que je sais c'est que je dois passer par un Filtre à reponse impulsionnelle FIR. J'en ai trouvé un sur google mais je ne comprends pas comment l'utiliser. En fait, je dispose donc à chaque fois d'un bout de sample mono de 512 octets, et de 24 coefficients calculés par rapport à lui.
Si quelqu'un a une solution a mon probleme, j'en serais heureux ! :)

Le FIR que j'ai trouvé:
http://www-ccrma.stanford.edu/~jos/filters/FIR_Filter_Implementation_C.html
La sagesse, c'est la connaissance du vide.
8
Si tu codes un algo de pitch shift pr le challenge j'ai pas la solution mais si t'as besoin d'une librairie qui le fait y'a soundtouch qui existe, y'a des optimisations MMX/SSE/3DNOW! en asm a l'interieur, j'pense que c'est la plus performante actuellement http://sky.prohosting.com/oparviai/soundtouch
9
Ok merci je vais jetter un oeil ! :)
En fait ce qui m'interesse c'est de faire une dll de traitement du signal pour dark basic pro. Donc le tout est que je ne soit pas embêté par un copyright si j'utilise la bibliotheque de quelqu'un d'autre.
La sagesse, c'est la connaissance du vide.
10
Niveau copyright, soundtouch est sous LGPL ce qui signifie qu'elle est gratuite pour les applications gratuites et commerciales, tant qu'elle est integrée à un dll exterieur accessible par les headers de base (pas de modif de leurs noms de fonctions donc) et tant que tu fous quelque part leur paragraphe disant que les routines pitch shift etc... sont realisées par soundtouch.

C'est pas tres contraignant au regard des avantages que ca apporte :)