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

Delphi Discussion :

mesurer la fréquence du son reçu par le micro d'un appareil android


Sujet :

Delphi

  1. #61
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Alors finalement, j'ai essayé un échantillon de 4096 avec une fréquence d'échantillonnage de 4096, ce qui me donne une résolution de 1Hz.
    Traitement un peux plus long mais ça reste raisonnable.
    Et avec l'interpolation, j'arrive à une précision assez correcte, mais il faut que j'affine la méthode en fonction de la hauteur de la fréquence, car comme vous le dites bien 2Hz vers un Mi2 c'est assez important, mais ce n'est pas grand chose vers le Mi4.
    Je pense donc que l'échelle sera plus correcte en pourcentage, mais je dois vérifier plus précisément.
    Donc il va falloir que je travaille plus finement et ce n'est certainement pas le plus simple.
    Mais je suis assez content car j'arrive déjà à accorder ma guitare correctement avec ce que j'ai fait, ce qui était le but d'origine.
    Et ce que j'ai fait ne fonctionne que pour une guitare 6 cordes standard.

  2. #62
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 086
    Points : 5 606
    Points
    5 606
    Par défaut
    Citation Envoyé par navyg Voir le message
    Alors finalement, j'ai essayé un échantillon de 4096 avec une fréquence d'échantillonnage de 4096, ce qui me donne une résolution de 1Hz.
    Traitement un peux plus long mais ça reste raisonnable.
    Et avec l'interpolation, j'arrive à une précision assez correcte, mais il faut que j'affine la méthode en fonction de la hauteur de la fréquence, car comme vous le dites bien 2Hz vers un Mi2 c'est assez important, mais ce n'est pas grand chose vers le Mi4.
    Je pense donc que l'échelle sera plus correcte en pourcentage, mais je dois vérifier plus précisément.
    Donc il va falloir que je travaille plus finement et ce n'est certainement pas le plus simple.
    Mais je suis assez content car j'arrive déjà à accorder ma guitare correctement avec ce que j'ai fait, ce qui était le but d'origine.
    Et ce que j'ai fait ne fonctionne que pour une guitare 6 cordes standard.
    Y'a pas de raison que ce ne marche pas pour une guitare basse ou autre, c'est que la note d'accord de la corde qui change, que ce soit à 4,5 ou 6 cordes, on accorde toujours corde à vide

  3. #63
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Non, il n'y a pas de raison mais il faut que je prévois les différents cas lorsque j'affine l'évaluation par rapport à des notes de "vraies" cordes ... ce qui n'est pas encore fait

  4. #64
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    les harmoniques (quinte, octave, tierce de l'octave supérieur, quinte de l'octave supérieure et également 2 octaves !) sont bien supérieures à la dominante (parfois d'un facteur 10000 !).
    Je ne sais pas si tu l'avais fait ou non, la calibration du micro (ou le capteur de son utilisé interne ou externe ) est nécessaire pour savoir la courbe de réponse aux différentes fréquences, ces valeurs seront utilisées apres pour corriger le FFT.


    Ensuite, je fais une interpolation quadratique pour affiner la résolution et trouver un indice "décimal" pour calculer la fréquence par indice*4000/2048 car vous l'aurez compris la "résolution" du système d'indice entier est de 2048/4000=1.953125Hz.
    Pour calculer les fréquences qui ne sont pas alignées sur les indices de FFT tu peux utiliser la fonction CalcFrequency dans le lien que j'ai posté( dans le fichier ufft.pas )
    https://www.unilim.fr/pages_perso/je...th/dmat086.zip
    cette fonction calcule individuellement une indice et n'oblige pas que le nombres d'échantillonnes soit de puissance 2 c'est là qu'il faut jouer pour obtenir une indice parfaite pour la fréquence a calculer ( la partie imaginaire dans la fonction tu peux la supprimer elle est toujours zéro).

  5. #65
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par wheel Voir le message
    Je ne sais pas si tu l'avais fait ou non, la calibration du micro (ou le capteur de son utilisé interne ou externe ) est nécessaire pour savoir la courbe de réponse aux différentes fréquences, ces valeurs seront utilisées apres pour corriger le FFT.




    Pour calculer les fréquences qui ne sont pas alignées sur les indices de FFT tu peux utiliser la fonction CalcFrequency dans le lien que j'ai posté( dans le fichier ufft.pas )
    https://www.unilim.fr/pages_perso/je...th/dmat086.zip
    cette fonction calcule individuellement une indice et n'oblige pas que le nombres d'échantillonnes soit de puissance 2 c'est là qu'il faut jouer pour obtenir une indice parfaite pour la fréquence a calculer ( la partie imaginaire dans la fonction tu peux la supprimer elle est toujours zéro).
    Je ne sais pas comment calibrer le micro du téléphone ? j'ai utilisé un générateur de fréquence qui m'envoie une fréquence, et le résultat qui s'affiche sur mon téléphone correspond à la fréquence générée (je pense que comme j'utilise mon ampli de guitare comme enceinte, le résultat doit être influencé aussi même si je mets l'ampli au "neutre" partout, mais j'obtiens des résultats très précis à 0.001% près).

    Je n'ai pas encore eu le temps de me pencher dessus car trop absorbé par mes propres recherches
    Je vais y aller voir dès que j'aurai du temps libre car aujourd'hui c'est gelée de pommes (c'est en train de cuire ... ça sent bon !) ... et un tour à la scierie avec un pote !

  6. #66
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Je ne sais pas comment calibrer le micro du téléphone ? j'ai utilisé un générateur de fréquence qui m'envoie une fréquence, et le résultat qui s'affiche sur mon téléphone correspond à la fréquence générée (je pense que comme j'utilise mon ampli de guitare comme enceinte, le résultat doit être influencé aussi même si je mets l'ampli au "neutre" partout, mais j'obtiens des résultats très précis à 0.001% près).
    C'est la calibration des amplitudes des fréquences qu'il faut ajuster selon le micro de votre portable parce que chaque micro et son circuit favorisent certaines fréquences plus que d'autres, les micros des portables ont la tendance à atténuer les basses fréquences et si tu fais un test dans cette région tu auras l'amplitude d'une harmonie plus importante que celle de la fréquence de base comme tu indiques dans un poste précédent .. la meilleure solution sera de trouver un moyen pour connecter le portable directement à la prise de la guitare... ça reste faisable.

    Comparaison entre deux micros
    Image Wiki


  7. #67
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par wheel Voir le message
    C'est la calibration des amplitudes des fréquences qu'il faut ajuster selon le micro de votre portable parce que chaque micro et son circuit favorisent certaines fréquences plus que d'autres, les micros des portables ont la tendance à atténuer les basses fréquences et si tu fais un test dans cette région tu auras l'amplitude d'une harmonie plus importante que celle de la fréquence de base comme tu indiques dans un poste précédent .. la meilleure solution sera de trouver un moyen pour connecter le portable directement à la prise de la guitare... ça reste faisable.
    L'objectif c'est d'utiliser le micro du téléphone comme le font les logiciels "accordeur" sur android, pour un maximum de simplicité d'utilisation.
    Je vais me pencher plus attentivement sur les caractéristiques du micro pour essayer d'adapter au mieux mes calculs à ses caractéristiques, mais cela explique peut-être ce que je prends pour des "bizarerries".

  8. #68
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Je viens de découvrir une limite à l'abaissement de l'échantillonnage afin d'avoir une très bonne discrimination.

    J'ai constaté que le délai entre deux traitement d'échantillon était plus long qu'avant, donc j'ai mis un petit mouchard pour mesurer les temps de traitement de chaque étape.
    La transformée de fourier elle-même ne dure que 6 centièmes de seconde, ce qui est négligeable, le traitement complet du buffer représentant environ 3 dixièmes de seconde.

    Ce qui est devenu long, c'est le read du buffer.
    En effet, si je mets 4096 (entiers) en échantillon et 4096 en fréquence d'échantillon ça me donne une très bonne précision avec 1Hz entre chaque indice, mais le temps du read pour remplir le buffer est de ... 1 seconde (!). J'aurai dû y penser avant car il était possible de l'anticiper si on maîtrise bien toutes les arcanes de l'échantillonnage.
    Bien sûr, c'est un peu longuet lorsqu'on gratte une corde en manipulant la clé de tension de la corde ...

    Il faut que je trouve un compromis pour avoir une lecture en temps réel plusieurs fois par secondes.

    Mais d'un autre côté il va falloir que je me contente d'une discrimination plus faible, donc il faut que je peaufine l'algorithme de calcul de la fréquence exacte.

    Mais je progresse et j'apprends, ce qui est le plus important.

  9. #69
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Quelques nouvelles.
    A force d'à force et grâce à votre aide, je crois que j'ai réussi à faire quelque chose de correct.
    En tout cas c'est suffisant pour moi pour accorder ma guitare avant de jouer.
    Avec un petit module graphique qui peut afficher l'onde sonore ou le spectre audio qui m'a servi à affiner les réglages, finalement je l'ai conservé.

    Après beaucoup de tâtonnement car aucune aide n'est disponible, j'ai même réussi à ajouter, un générateur de fréquence, mais il semblerait que j'utilise une version "Deprecated" de TJAudioTrack.Init selon le source de Androidapi.JNI.Media :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function init(streamType: Integer;
                  sampleRateInHz: Integer;
                  channelConfig: Integer;
                  audioFormat: Integer;
                  bufferSizeInBytes: Integer;
                  mode: Integer): JAudioTrack; cdecl; overload;//Deprecated
    Je ne suis pas peu fier d'avoir réussi en regardant à droite à gauche et le source.
    Voilà comment j'utilise cette "vieille" version de Init :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    procedure creetone(fqt: single; duree: integer);
    var
       sampleRate: Integer;
       AudioFormat: integer;
       AudioChannel: integer;
       numSamples: Integer;
       numSamples2: integer;
       AudioPlay: JAudioTrack;
       AudioAttributes: JaudioAttributes;
       AudioStream: TJavaArray<SmallInt>;
       trackmin: Integer;
       OutBufferSize: integer;
    begin
    // génère la fréquence de valeur fqt pendant durée 
    SampleRate:=8000;
    numsamples:=duree*samplerate;
    numsamples2:=2*numSamples;
    AudioFormat:=TJAudioFormat.JavaClass.ENCODING_PCM_16BIT;
    AudioChannel:=TJAudioFormat.JavaClass.CHANNEL_OUT_MONO;
    OutBufferSize:= TJAudioTrack.JavaClass.getMinBufferSize(Samplerate,
                                                      AudioChannel,
                                                      AudioFormat);
    AudioStream:= TJavaArray<SmallInt>.Create(numsamples);
    for var i:=0 to numSamples-1 do
       begin
       Audiostream[i]:=round(Sin(2*Pi*i/(sampleRate/fqt))*32767);
       end;
    AudioPlay:=TJAudioTrack.JavaClass.init(TJAudioManager.JavaClass.STREAM_MUSIC,
                                           Samplerate,
                                           AudioChannel,
                                           AudioFormat,
                                           numsamples2,
                                           TJAudioTrack.JavaClass.MODE_STREAM);
    
    AudioPlay.write(AudioStream, 0, AudioStream.length);
    audioPlay.setPlaybackRate(samplerate);
    AudioPlay.play;
    end;
    En recopiant la procédure, je vois que je calcule OutBufferSize mais je ne l'utilise pas.
    Je le laisse pour montrer comment on calcule le buffer minimum en fonction des paramètres.

    J'ai compris qu'il faudrait que j'utilise la nouvelle version qui doit être plus pérenne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function init(attributes: JAudioAttributes;
                    format: JAudioFormat;
                    bufferSizeInBytes: Integer;
                    mode: Integer;
                    sessionId: Integer): JAudioTrack
    Mais je n'ai pas réussi à compléter certains paramètres :
    • JAudioAttributes : il semblerait que ça recouvre plusieurs paramètres mais je n'ai pas trouvé comment faire malgré plusieurs heures sur le source pour essayer de comprendre.

    • mode ?? je ne sais pas ce que ça représente

    • sessionId : j'ai essayé de mettre un integer quelconque mais j'ai un message d'erreur.


    Si quelqu'un pouvait me dire comment utiliser cette nouvelle forme de init, avec un petit exemple pour mieux comprendre, merci d'avance.

  10. #70
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Bon, ça fait un moment que je cherchais donc en m'y remettant, j'ai eu une inspiration, mais c'est vraiment pas très classique comme syntaxe, enfin pour moi :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    var
      attributes: JAudioAttributes;
      format: JAudioFormat;
      bufferSizeInBytes, mode, sessionId: Integer;
      audioPlay: JAudioTrack;
     
    // Initialiser les attributs audio------------------> c'est là que j'avais du mal à comprendre comment il fallait l'écrire
    attributes := TJAudioAttributes_Builder.JavaClass.init()
      .setUsage(TJAudioAttributes.JavaClass.USAGE_MEDIA)
      .setContentType(TJAudioAttributes.JavaClass.CONTENT_TYPE_MUSIC)
      .build();
     
    // Définir le format audio
    format := TJAudioFormat_Builder.JavaClass.init()
      .setEncoding(TJAudioFormat.JavaClass.ENCODING_PCM_16BIT)
      .setSampleRate(samplerate)
      .setChannelMask(TJAudioFormat.JavaClass.CHANNEL_OUT_MONO)
      .build();
     
    // Définir la taille du tampon en octets
    bufferSizeInBytes := numsamples2; 
    // Selon les mêmes termes que mon exemple précédent, si je mets numsamples, soit la taille du buffer en smallint, le son dure la moitié du temps demandé.
    // Il faut mettre la taille du buffer en octet ... comme indiqué dans le nom du paramètre.
     
    // Définir le mode
    mode := TJAudioTrack.JavaClass.MODE_STREAM;
     
    // Définir l'ID de session
    sessionId := TJAudioManager.JavaClass.AUDIO_SESSION_ID_GENERATE;
     
    // Initialiser l'objet AudioTrack
    audioPlay := TJAudioTrack.JavaClass.init(attributes, format, bufferSizeInBytes, mode, sessionId);
     
    AudioPlay.write(AudioStream, 0, AudioStream.length);
    AudioPlay.setPlaybackRate(samplerate);
    AudioPlay.play;
    Si ça peut servir à quelqu'un ...

  11. #71
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    He bien je crois que j'ai fini mon projet.
    J'ai un accordeur pour ma guitare standard, sans publicité et sans redouter de donner accès à mon micro à une application que je ne connais pas.
    J'ai parfois encore des harmoniques détectées, mais ça revient très vite à la note recherchée donc je vais peut-être arrêter là avant de tout foutre en l'air.
    Si je suis trop embêté, j'y reviendrai.
    J'ai essayé de faire une interface agréable. En "grattant" (touchant) la corde la fréquence correspondante est générée.
    Voilà à quoi ça ressemble :
    Nom : Screenshot_20240118_143427 (Petit).jpg
Affichages : 84
Taille : 75,3 Ko

    Ce projet m'a permis d'approcher beaucoup des nombreux problèmes compliqués à résoudre avec FMX. Vraiment, je trouve cet environnement ultra-compliqué.
    Pourquoi ne pas tout simplement avoir mis une propriété Fill dans les composants genre bouton, radiobutton et tout un tas de composant qui n'en dispose pas. Je suis sûr que ça doit être assez simple à faire ... pour celui qui sait

    Et je vais donc marquer mon sujet comme résolu grâce à votre aide ... et aussi un peu à moi

  12. #72
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Oui, ce n'est pas un sujet qui motive les foules, qui sont plutôt intéressées par l'inverse, ie, configurer un outil qui joue la fréquence F, et bien content quand on l'entend !
    Finalement, ça aussi j'y suis arrivé et ce n'est pas le plus dur.
    J'ai même finalement trouvé et fourni la solution ci-dessus.
    Maintenant que j'ai compris comment faire, je pourrai même faire un "orgue" avec un clavier qui génère les fréquences. Le plus long serait de faire le dessin et placer les TRectangle transparent au-dessus ;o)

  13. #73
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 086
    Points : 5 606
    Points
    5 606
    Par défaut
    Citation Envoyé par navyg Voir le message
    Finalement, ça aussi j'y suis arrivé et ce n'est pas le plus dur.
    J'ai même finalement trouvé et fourni la solution ci-dessus.
    Maintenant que j'ai compris comment faire, je pourrai même faire un "orgue" avec un clavier qui génère les fréquences. Le plus long serait de faire le dessin et placer les TRectangle transparent au-dessus ;o)
    Félicitations, belle réussite
    C'est toujours gratifiant lorsque l'on voit le résultat final de ses efforts !
    Bonne continuation sous Delphi

  14. #74
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Merci !
    Je suis déjà sur la mise à jour d'un autre programme que j'ai fait il y a quelques mois ;o)

  15. #75
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par navyg Voir le message
    Pourquoi ne pas tout simplement avoir mis une propriété Fill dans les composants genre bouton, radiobutton et tout un tas de composant qui n'en dispose pas.
    Tu peux "développer" ta demande ? Je ne suis pas sûr d'avoir compris
    pour les boutons est-ce à dire : Changer la couleur de fond ?
    pour le radiobutton ? même chose : la couleur de fond ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #76
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    He bien je crois que j'ai fini mon projet.
    Bravo, déjà c'est une bonne nouvelle et c'est tout ce qui compte !

    En effet, si je mets 4096 (entiers) en échantillon et 4096 en fréquence d'échantillon ça me donne une très bonne précision avec 1Hz entre chaque indice
    Il n'est pas nécessaire de le remplier en entier, fixer la taille à 4096 pour gagner de précision mais seulement la moitié sera remplie à la capture audio et le reste est toujours mis à zéro.

  17. #77
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Tu peux "développer" ta demande ? Je ne suis pas sûr d'avoir compris
    pour les boutons est-ce à dire : Changer la couleur de fond ?
    pour le radiobutton ? même chose : la couleur de fond ?
    He bien oui, il est impossible, même en rajoutant un TRectangle et un TLabel dans le TButton d'avoir une couleur "pleine".
    Si tu mets une couleur de fond dans un TPanel, le bouton prendra par transparence, la couleur du TRectangle mis dans le TPanel.
    Impossible (ou je n'ai pas trouvé, ce qui est fort possible) de donner une couleur "opaque" à un TButton qui se trouve sur un TRectangle coloré ou même sur un TLayout. Le bouton reste "transparent".
    Je ne suis pas sur mon ordi de développement, mais je ferai dès que possible un petit exemple avec quelques solutions testées pour mieux montrer les difficultés car j'ai l'impression que ce n'est pas très compréhensible mes explications

    Je pense que la seule solution qui simplifierait le développement rapide (RAD sic !), c'est de faire ses propres composants dérivés ... je verrai si je m'y attelle.
    Ou alors je vais voir ce que sont ces fameux composants SKIA. Peut-être y a t'il là dedans ce que je cherche ? Quelqu'un a t'il testé ?

  18. #78
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par wheel Voir le message
    Il n'est pas nécessaire de le remplir en entier, fixer la taille à 4096 pour gagner de précision mais seulement la moitié sera remplie à la capture audio et le reste est toujours mis à zéro.
    Tu peux développer ? Je ne comprends pas comment tu peux faire pour limiter le remplissage ? Je dois encore avoir louper un truc ?

  19. #79
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    On peut le faire au moment de l'initialisation de TJAudioRecord on précise la taille qu'on souhaite récupérer dans ce cas c'est 2048 échantillons et la taille du buffer doit être le double 4096 échantillons dont la deuxième moité est vide..avec cette méthode il y aura une perte de qualité dans l''analyse FFT c'est normal il faut trouver un compromis mais les grands piques ne seront pas trop impactés.

  20. #80
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par wheel Voir le message
    On peut le faire au moment de l'initialisation de TJAudioRecord on précise la taille qu'on souhaite récupérer dans ce cas c'est 2048 échantillons et la taille du buffer doit être le double 4096 échantillons dont la deuxième moité est vide..avec cette méthode il y aura une perte de qualité dans l''analyse FFT c'est normal il faut trouver un compromis mais les grands piques ne seront pas trop impactés.
    Alors je crois que j'ai trouvé un compromis acceptable.
    J'indique une fréquence d'échantillonnage de 4096 avec un échantillon de 4096 .. qui sont des octets. En fait ça me donne 2048 entiers pour l'onde sonore, que je transforme en 2048 indices.
    Avec une interpolation quadratique, j'arrive à de bons résultats sans trop de perte de précision.
    Je m'en suis arrêté à ce compromis qui est fort acceptable pour la précision et le but souhaités.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Niveau du son enregistré par le micro
    Par Nayl.VBcoder dans le forum VB.NET
    Réponses: 5
    Dernier message: 09/09/2016, 10h18
  2. Ouvrir/afficher un fichier avec son logiciel par défaut
    Par Alain P. dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/06/2009, 18h47
  3. Réponses: 6
    Dernier message: 09/04/2007, 16h52
  4. Modifier un son appelé par Action Script
    Par Imperator34 dans le forum Flash
    Réponses: 3
    Dernier message: 26/10/2006, 05h46
  5. [Sécurité] connexion sur son compte par un lien
    Par Zen_Fou dans le forum Langage
    Réponses: 6
    Dernier message: 07/04/2006, 10h51

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