IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Exploiter les FFT Audio


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 129
    Par défaut Exploiter les FFT Audio
    Bonjour,

    Je souhaite réaliser un spectrum Audio mais je ne sais pas comment exploiter mon tableau de bytes avec la fonction onfftdatacapture de Vizualiser.

    J'ai suivi l'exemple de pheelicks mais j'arrive pas à l'exploiter correctement. En effet, je souhaite pouvoir faire des bars qui montent ou descende en gérant sa hauteur. Là la moindre modification de son code fait que ça ne fonctionne plus...

    Sur google saisissez com/pheelicks/visualizer/renderer/BarGraphRenderer.java et vous tomberez directement sur son projet.

    Si quelqu'un sait comment l'exploiter correctement je suis preneur.

    Je souhaite pouvoir gérer le nombre de bars et la hauteur de celle-ci... Mais ne comprenants pas comment ça fonctionne c'est assez problématique.

    Merci d'avance,

    Son code :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    @Override
      public void onRender(Canvas canvas, FFTData data, Rect rect)
      {
        for (int i = 0; i < data.bytes.length / mDivisions; i++) {
          mFFTPoints[i * 4] = i * 4 * mDivisions;
          mFFTPoints[i * 4 + 2] = i * 4 * mDivisions;
          byte rfk = data.bytes[mDivisions * i];
          byte ifk = data.bytes[mDivisions * i + 1];
          float magnitude = (rfk * rfk + ifk * ifk);
          int dbValue = (int) (10 * Math.log10(magnitude));
     
          if(mTop)
          {
            mFFTPoints[i * 4 + 1] = 0;
            mFFTPoints[i * 4 + 3] = (dbValue * 2 - 10);
          }
          else
          {
            mFFTPoints[i * 4 + 1] = rect.height();
            mFFTPoints[i * 4 + 3] = rect.height() - (dbValue * 2 - 10);
          }
        }
     
        canvas.drawLines(mFFTPoints, mPaint);
      }

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    J'ai un projet là dessus

    Avec l'audioplayer
    https://github.com/ffournier/AudioPlayer

    avec le Media Player
    https://github.com/ffournier/MediaPlayer


    Tu peux récupérer directement le fft depuis le mediaPlay avec le visualizer

    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
    mVisualizer = new Visualizer(mPlayer.getAudioSessionId());
    				mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
    				Log.i("MediaService", "audio size " + Visualizer.getCaptureSizeRange()[1]);
    				mVisualizer.setDataCaptureListener(new OnDataCaptureListener() {
     
    					@Override
    					public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform,
    							int samplingRate) {
    						sendPlayWaveFrom(waveform, samplingRate);
    					}
     
    					@Override
    					public void onFftDataCapture(Visualizer visualizer, byte[] fft,
    							int samplingRate) {
    						sendPlayFFT(fft, samplingRate);
    					}
    				}, Visualizer.getMaxCaptureRate() / 2, true, true);
    Tu as l'exemple avec l'affichage

Discussions similaires

  1. [SGBD] Il n'y a rien pour exploiter les bdd ?
    Par Harry dans le forum Delphi .NET
    Réponses: 3
    Dernier message: 11/07/2005, 18h15
  2. Exploiter les données Active Directory ?
    Par beastman007 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 11/07/2005, 17h22
  3. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 14h03
  4. fonction pour lire les fichier audio
    Par tarek007 dans le forum Multimédia
    Réponses: 1
    Dernier message: 11/05/2005, 16h28
  5. [Outlook] Exploiter les fichiers pst
    Par laure_belette dans le forum Autres langages
    Réponses: 1
    Dernier message: 20/04/2005, 07h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo