Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: FFT à partir d'un sf::SoundBuffer  (Lu 9981 fois)

0 Membres et 1 Invité sur ce sujet

Tero

  • Newbie
  • *
  • Messages: 16
  • Digital artist : teroratsu.deviantart.com
    • Voir le profil
    • E-mail
Re : Re : FFT à partir d'un sf::SoundBuffer
« Réponse #15 le: Novembre 03, 2015, 03:15:45 pm »
Citer
Citer
- Pour préciser ma question, le m_currentSample au moment du OnGetData est t'il le sample actuel relativement au flux en entier ? (et non relativement au chunk)
C'est quoi m_currentSample ?

c'est ça.
French digital artist & programmer :

DeviantArt : teroratsu.deviantart.com
Facebook : facebook.com/Teroratsudeviantart

Tero

  • Newbie
  • *
  • Messages: 16
  • Digital artist : teroratsu.deviantart.com
    • Voir le profil
    • E-mail
Re : FFT à partir d'un sf::SoundBuffer
« Réponse #16 le: Novembre 05, 2015, 09:04:22 pm »
du coup ?
French digital artist & programmer :

DeviantArt : teroratsu.deviantart.com
Facebook : facebook.com/Teroratsudeviantart

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : FFT à partir d'un sf::SoundBuffer
« Réponse #17 le: Novembre 05, 2015, 09:25:54 pm »
Du coup, dans l'exemple du tutoriel, m_currentSample est la position de départ du chunk qu'on envoie au flux, relativement au début du morceau.
Laurent Gomila - SFML developer

Tero

  • Newbie
  • *
  • Messages: 16
  • Digital artist : teroratsu.deviantart.com
    • Voir le profil
    • E-mail
Re : FFT à partir d'un sf::SoundBuffer
« Réponse #18 le: Novembre 05, 2015, 11:28:33 pm »
Merci beaucoup, je vais essayer d'implémenter ce qui me posait problème en fonction de ça :)

edit : Implémentation sans faites sans aucun soucis !
Je lâcherai le git du projet quand il sera à jour si vous voulez voir le code source.
« Modifié: Novembre 06, 2015, 11:08:03 pm par Tero »
French digital artist & programmer :

DeviantArt : teroratsu.deviantart.com
Facebook : facebook.com/Teroratsudeviantart

Tero

  • Newbie
  • *
  • Messages: 16
  • Digital artist : teroratsu.deviantart.com
    • Voir le profil
    • E-mail
Re : FFT à partir d'un sf::SoundBuffer
« Réponse #19 le: Novembre 17, 2015, 02:10:38 am »
ça fonctionne depuis un petit moment maintenant mais j'ai quelque-fois des erreur au moment de seek le buffer (ça n'arrête pas le programme pour autant) :



ça ressemble à si vous êtes un peu curieux :^)



En ce moment je me penche sur un problème un peu agaçant que le debbuger ne veut pas digérer même avec toutes les options du monde (le call stack est corrompu sans raison). pour résumer le programme plante de façon random à cause de la soudwave. Enfin, pas vraiment, ça plante au bout de 2 minutes ou alors ça ne plantera pas (vérifié plusieurs fois sur +5h à chaque fois).

mon code pour l'update ressemble à ça sachant que BUFFER_SIZE vaut 256
seulement je me suis rendu compte que cette version de FFT (piquée chez audacity) date de 2007 :

(click to show/hide)

J'aimerai adapter mon utilisation de la fonction powerSpectrum à l'implémentation qu'il en est faite aujourd'hui (voir : >ici<

Le sample passe en *In et en *Out je m'attend à recevoir quoi ? J'ai vraiment du mal à bien comprendre ce qu'il renvoit au final. Surtout pour savoir quel taille allouer pour le float* -> *Out histoire de pas faire de bétises.


//la vieille méthode que j'aimerai changer :
avg_power = 0.0f;
    _cSample = static_cast<std::size_t>(c_s.asSeconds() * _sampleRate * _channelCount) - ((int64_t)_bSample -3*50000); //!< -_bSample make it relatively to the Chunk
    //std::cout <<_cSample << std::endl; //there is 3 buffer before the one
    if(_cSample >= 0 && _cSample < 50000)
        _fft.powerSpectrum(0,BUFFER_SIZE/2,&chunkList.front()[_cSample],BUFFER_SIZE,&magnitude[0],&phase[0],&power[0],&avg_power); //!< compute data

Pour info "&chunkList.front()[_cSample]" c'est juste le sample que je souhaite envoyer à la fonction, j'ai dû faire un queue pour stocker 3 chunks, vu qu'il y a un décalage entre le chargement en mémoire et le moment où il est joué.

Je pense très sincèrement que mon plantage vien de là, à trop jouer avec les pointeurs je fais surement des erreurs :/
« Modifié: Novembre 17, 2015, 02:14:15 am par Tero »
French digital artist & programmer :

DeviantArt : teroratsu.deviantart.com
Facebook : facebook.com/Teroratsudeviantart

 

anything