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

Lazarus Pascal Discussion :

[2.2.4] Impossible de faire fonctionner winapi.inc (concerne GetSystemMetrics)


Sujet :

Lazarus Pascal

  1. #41
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    voici mon test is.zip

    en esperant que cela fonctionne
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  2. #42
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par anapurna Voir le message
    voici mon test is.zip

    en espérant que cela fonctionne
    Nom : anapurna.png
Affichages : 211
Taille : 3,1 Ko

    et c'est tout : il ne se passe rien d'autre, aucune activité, rien.

    En fait, je crois qu'il faudrait faire un mix de ce projet ou tout au moins la partie concernant le dessin de l'affichage puisque ce projet serait capable de n'afficher que 16 barres, avec le mécanisme de récupération des données du projet posté par bb84000, qui fonctionne sous Linux mais je n'aime pas ses barres.

    Et cet après-midi je ne serai pas libre...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #43
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 170
    Points : 455
    Points
    455
    Par défaut
    Bonjour,

    J'ai effectivement sous Llinux le même résultat que jipété.

    Il va falloir que j'approfondisse, dès que le courage me viendra...

    bb84000

  4. #44
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    J'ai effectivement sous Linux le même résultat que jipété.
    Ouf ! Je me sens moins seul et moins fou,

    Citation Envoyé par bb84000 Voir le message
    Il va falloir que j'approfondisse, dès que le courage me viendra...
    C'est où le bouton pour ouvrir les vannes de l'énergie ?

    Allez, je file, à pluche...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #45
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 170
    Points : 455
    Points
    455
    Par défaut
    Bonsoir,

    La version Windows ne fonctionne pas mieux que la version Linux !

    bb84000

  6. #46
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    La version Windows ne fonctionne pas mieux que la version Linux !
    Nom : anapurna.png
Affichages : 188
Taille : 45,1 Ko


    Laisse-moi 5 minutes, je reviens...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #47
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Coucou me revoilou !

    J'ai pris le zip posté ce matin ici, l'ai ouvert dans un dossier, y ai rajouté un Bass.dll d'à peu près la même version, ai lancé mon vieux D7 (tout ça dans une machine virtuelle Windows 2000 sp4), ai essayé de compiler mais ça a coincé à deux endroits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Bass_Init(-1, 44100, 0, form1.handle, nil); // Init Bass on default device <<< il manquait "nil"
      Bass_Start; // Start Bass
      If OpenDialog1.Execute = False then Application.Terminate; // Select a file
      hand := Bass_StreamCreateFile(FALSE, pChar(OpenDialog1.Filename), 0, 0, 0);
    //  Bass_StreamPlay(hand, FALSE, 0); // Play the file <<< ça inconnu
      Bass_ChannelPlay(hand, FALSE); // Play the file <<< mais ça c'est bon, je l'ai trouvé dans un autre exemple
    et roule ma poule :
    Nom : is_in_w2k.png
Affichages : 189
Taille : 8,3 Ko
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #48
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    Salut

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      BASS_Init(1, 44100, 0, Application.Handle, nil);
      Bass_Start; // Start Bass
      If OpenDialog1.Execute = False then Application.Terminate; // Select a file
     
       Channel := BASS_StreamCreateFile(FALSE, PChar(OpenDialog1.FileName), 0, 0, 0);
       BASS_ChannelPlay(Channel, False);
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  9. #49
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Ok, c'est plus ou moins la même chose que mon post, mais par contre il y a un truc que je n'ai pas capté avec ton introduction de fCvs, regarde, j'ai rajouté une ligne de commentaire construite depuis l'aide sur CopyRect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      //   copy  le rectangle trouvé dans      source            à cet endroit
      fCvs.CopyRect(Rect( 0, 0, Img_W, Img_H), BMPBuffer.Canvas, Rect( 0, 0, Img_W, Img_H));
    et la question c'est : qu'est-ce qu'on fait de ce Rect de destination ?
    Peut-être pour ça qu'on ne voit rien...

    À suivre demain, bonne nuit !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  10. #50
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 170
    Points : 455
    Points
    455
    Par défaut
    Salut,

    De mon côté, avec delphi 7, j'ai une violation d'accès au chargement du fichier mp3 là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    channel:= BASS_StreamCreateFile(FALSE, PChar(OpenDialog1.FileName), 0, 0, 0);
    exit;
    bb84000

  11. #51
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Bonjour,

    alors j'ai rouvert ma machine virtuelle w2k, j'ai doublecliqué sur l'exe généré hier soir, lui ai fait manger un mp3 et tout a bien fonctionné.

    Ai jeté un œil au code, je vois une différence entre ta ligne et ça, extrait de mon unit1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
      Form1: TForm1;
      ...
      hand : DWORD; // Channel handle
      ...
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Bass_Init(-1, 44100, 0, form1.handle, nil); // Init Bass on default device
      Bass_Start; // Start Bass
      If OpenDialog1.Execute = False then Application.Terminate; // Select a file
      hand := Bass_StreamCreateFile(FALSE, pChar(OpenDialog1.Filename), 0, 0, 0);
    //  Bass_StreamPlay(hand, FALSE, 0); // Play the file -- modif d'hier soir
      Bass_ChannelPlay(hand, FALSE); // Play the file -- bonne ligne d'hier soir
    Peut-être y en a-t-il d'autres ?

    Ou peut-être une histoire de configuration du côté de la prise en compte des mp3's ? Fut un temps où c'était compliqué, où il fallait de la dll, du lame et que sais-je d'autre, je ne me souviens plus, c'est si loin...
    Et comme la machine virtuelle n'a pas bougé depuis 10 ans qu'elle a été créée, clonée depuis la machine physique installée il y a 20 ans, tu vois le truc ?

    Mais si ça fonctionne avec les wav's, ne te prends pas la tête avec ça maintenant : en fouillant dans les vieux projets Bass, probable que je vais trouver des tests ou des astuces...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  12. #52
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    Salut

    Citation Envoyé par Jipété Voir le message
    Ok, c'est plus ou moins la même chose que mon post, mais par contre il y a un truc que je n'ai pas capté avec ton introduction de fCvs, regarde, j'ai rajouté une ligne de commentaire construite depuis l'aide sur CopyRect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      //   copy  le rectangle trouvé dans      source            à cet endroit
      fCvs.CopyRect(Rect( 0, 0, Img_W, Img_H), BMPBuffer.Canvas, Rect( 0, 0, Img_W, Img_H));
    et la question c'est : qu'est-ce qu'on fait de ce Rect de destination ?
    Peut-être pour ça qu'on ne voit rien...
    À suivre demain, bonne nuit !
    Le Fcsv ... c'est le Canvas de ton récepteur sur la form principale.

    Dans la méthode Draw de Spectrum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure Draw(Cvs : TCanvas; WaveData : array of single; X, Y : Integer)
    plus loin, tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /////////////////////////////////////////////
    procedure TSpectrum.Draw(Cvs : TCanvas;WaveData : array of single; X, Y : Integer);
    ...
    begin
      fcvs := Cvs;
    Cela me permet d'avoir accès au canvas dans toute la classe.

    Reprenons l'exemple du Spectrum.
    Pour ma part je l'ai modifié ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TSpectrum.Draw(CVS : TCanvas; FFTData : array of single; X, Y : Integer);
    Var
      i : Integer;
    begin
      fCvs := Cvs;
     // It just makes the spectrum look more presentable.
      ScalFFT(FFTData); // ici je prepare mes diffferents valeurs  
      for i := 0 to No_Peaks - 1 do
        Spec_Data[i] := Scaled_FFT[i];
      Draw_It; // Ici je dessine vraiment
    End;
    Tu comprends bien que dans Drawit à la fin je recopie le canvas construit sur le canvas de ton interface passé en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fCvs.CopyRect(Rect( 0, 0, Img_W, Img_H),BMPBuffer.Canvas,Rect( 0, 0, Img_W, Img_H));
    le BMPBuffer étant la zone où j'ai construit le graphique.
    Les rect déterminent la taille et la zone de copie du source et de la destination.

    //TCanvas TRect TCanvas TRect
    DestCanvas.CopyRect(RDest, SrcCanvas,RSource);
    Donc je copie dans fCvs dans un rectangle commençant à (0,0) et finissant (Img_W, Img_H) le canvas source (BMPBuffer) pour lequel je prends un rectangle commençant à (0,0) et finissant (Img_W, Img_H)
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #53
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Yep !

    C'est compliqué parce que tu ne nous donnes pas tout...
    Citation Envoyé par anapurna Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TSpectrum.Draw(CVS : TCanvas; FFTData : array of single; X, Y : Integer);
    Var
      i : Integer;
    begin
      fCvs := Cvs;
      // It just makes the spectrum look more presentable.
      ScalFFT(FFTData); // ici je prépare mes différentes valeurs  
      for i := 0 to No_Peaks - 1 do
        Spec_Data[i] := Scaled_FFT[i];
      Draw_It; // Ici je dessine vraiment
    End;
    C'est quoi ce ScalFFT inconnu qui m'empêche de compiler et donc d'avancer ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #54
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Bon, comme je commence à fatiguer, j'ai planté un memo sur la fiche et dans la boucle principale de construction des barres, j'ai rajouté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        ...
        for k := 0 to wd do
        begin
          wdp := (Img_H+Trunc(Spec_Data[i])) - r;
          form1.Memo.Lines.Add('r = '+inttostr(r) + ' -- wd = '+inttostr(wd) + ' -- wdp = '+inttostr(wdp));
          r := r + 2;
          ...
    et qu'est-ce que je vois, au run ? Des milliers de lignes strictement identiques qui m'affichent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    r = 1 -- wd = 0 -- wdp = 81
    r = 1 -- wd = 0 -- wdp = 81
    r = 1 -- wd = 0 -- wdp = 81
    r = 1 -- wd = 0 -- wdp = 81
    ...
    Normal que l'affichage ne fonctionne pas, s'il n'y a rien à afficher !
    Plus qu'à trouver pourquoi j'ai ces résultats illogiques...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  15. #55
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 170
    Points : 455
    Points
    455
    Par défaut
    Salut,

    En récupérant des vieilles versions de bass.pas et bas.dll, j'ai réussi à faire fonctionner le truc sous delphi 7.

    Je vais repartir pas à pas avec Lazarus pour voir où ça coince.

    bb84000

  16. #56
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    En récupérant des vieilles versions de bass.pas et bass.dll, j'ai réussi à faire fonctionner le truc sous delphi 7.
    Bien joué !


    Citation Envoyé par bb84000 Voir le message
    Je vais repartir pas à pas avec Lazarus pour voir où ça coince.
    C'est là-dedans que ça coince :
    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
    procedure TForm1.GetData;
    var
      // Various variables
      x, y : integer;
      tot_sum : float;
    begin
      Bass_ChannelGetData(Channel, @FFT, BASS_DATA_FFT2048); // Get the data
      for x := 0 to 15 do // 0 to 15 bars = 16 bars et il y a 17 valeurs dans Process
      begin
        tot_sum := 0; // 0 so far
        for y := Bin_Dist[x] to Bin_Dist[x+1] do begin
          tot_sum := tot_sum + (FFT[y]); // Add up all data in the fft bins
          Memo.Lines.Add('y =' + Format('%5u', [y]) +' -- tot_sum = ' +Format('%u', [round(tot_sum)]) ); // ici c'est nawak !
        end;
        tot_sum := sqrt(tot_sum); // Square root it to make smaller values more visible
        Scaled_FFT[x] := tot_sum * 50; // Just get the numbers a little larger to work with
      end;
    end;
    Ça sort du four à l'instant, alors attention à pas se brûler !
    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
    y =    5 -- tot_sum = 9223372036854775808
    y =    6 -- tot_sum = 9223372036854775808
    y =    7 -- tot_sum = 9223372036854775808
    y =    8 -- tot_sum = 9223372036854775808
    y =    8 -- tot_sum = 9223372036854775808
    y =    9 -- tot_sum = 9223372036854775808
    y =   10 -- tot_sum = 9223372036854775808
    y =   11 -- tot_sum = 9223372036854775808
    y =   12 -- tot_sum = 9223372036854775808
    y =   12 -- tot_sum = 0
    y =   13 -- tot_sum = 9223372036854775808
    y =   14 -- tot_sum = 9223372036854775808
    y =   15 -- tot_sum = 9223372036854775808
    y =   16 -- tot_sum = 9223372036854775808
    y =   17 -- tot_sum = 9223372036854775808
    y =   17 -- tot_sum = 9223372036854775808
    y =   18 -- tot_sum = 9223372036854775808
    y =   19 -- tot_sum = 9223372036854775808
    Au premier coup d'œil, pourquoi ça commence à 5 ?
    Et pourquoi il y a 2 lignes 8, 2 lignes 12 dont une à 0, 2 lignes 17...

    EDIT : c'est un peu la pagaille dans la sortie du four :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    y =   49 -- tot_sum = 9223372036854775808
    y =   50 -- tot_sum = 9223372036854775808
    y =   50 -- tot_sum = 0
    y =   51 -- tot_sum = 9223372036854775808
    y =   52 -- tot_sum = 9223372036854775808
    ...
    y =   99 -- tot_sum = 9223372036854775808
    y =  100 -- tot_sum = 9223372036854775808
    y =  100 -- tot_sum = 0 
    y =  101 -- tot_sum = 9223372036854775808
    y =  102 -- tot_sum = 9223372036854775808
    ...
    y =  149 -- tot_sum = 9223372036854775808
    y =  150 -- tot_sum = 9223372036854775808
    y =  150 -- tot_sum = 0
    y =  151 -- tot_sum = 9223372036854775808
    y =  152 -- tot_sum = 9223372036854775808
    ...
    id 250, 400, arrivé à 1024 on recommence :
    y = 1021 -- tot_sum = 9223372036854775808
    y = 1022 -- tot_sum = 9223372036854775808
    y = 1023 -- tot_sum = 9223372036854775808
    y = 1024 -- tot_sum = 9223372036854775808
    y =    5 -- tot_sum = 9223372036854775808
    y =    6 -- tot_sum = 9223372036854775808
    y =    7 -- tot_sum = 9223372036854775808
    y =    8 -- tot_sum = 9223372036854775808
    y =    8 -- tot_sum = 9223372036854775808
    y =    9 -- tot_sum = 9223372036854775808
    y =   10 -- tot_sum = 9223372036854775808
    y =   11 -- tot_sum = 9223372036854775808
    y =   12 -- tot_sum = 9223372036854775808
    y =   12 -- tot_sum = 0
    y =   13 -- tot_sum = 9223372036854775808
    y =   14 -- tot_sum = 9223372036854775808
    ...
    y = 1023 -- tot_sum = 9223372036854775808
    y = 1024 -- tot_sum = 9223372036854775808
    y =    5 -- tot_sum = 9223372036854775808
    y =    6 -- tot_sum = 9223372036854775808
    y =    7 -- tot_sum = 9223372036854775808
    y =    8 -- tot_sum = 9223372036854775808
    y =    8 -- tot_sum = 0
    y =    9 -- tot_sum = 9223372036854775808
    y =   10 -- tot_sum = 9223372036854775808
    y =   11 -- tot_sum = 9223372036854775808
    y =   12 -- tot_sum = 9223372036854775808
    y =   12 -- tot_sum = 0
    y =   13 -- tot_sum = 9223372036854775808
    y =   14 -- tot_sum = 9223372036854775808
    etc.
    /EDIT
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #57
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 170
    Points : 455
    Points
    455
    Par défaut
    Salut,

    J'ai trouvé quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FFT : array[0..1024] of single; // au lieu de float
    bb84000

  18. #58
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    J'ai trouvé quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FFT : array[0..1024] of single; // au lieu de float



    Copie d'écran en mode maquette, je ferai joli plus tard, c't'aprème j'ai du taf au jardin...

    Nom : victoire.png
Affichages : 176
Taille : 8,3 Ko
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  19. #59
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    Salut

    Scalfft(...) c'est juste une méthode qui remet en forme mes données et les réorganise dans un tableau.

    J'ai mis en pièce jointe le fichier Spectrum.

    PS : J'essaie toujours de dissocier les données et les calculs de l'affichage.
    Fichiers attachés Fichiers attachés
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  20. #60
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Merci pour ton code, grosso modo on fait tous à peu près la même chose mais en examinant ton fichier, je me suis posé une question et comme je n'ai pas trouvé de réponse, je la pose ici : à quoi sert cette déclinaison de valeurs, qu'on retrouve dans tous les codes qui font ce genre de boulot :
    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
      Bin_Dist[0]  :=    5;
      Bin_Dist[1]  :=    8;
      Bin_Dist[2]  :=   12;
      Bin_Dist[3]  :=   17;
      Bin_Dist[4]  :=   25;
      Bin_Dist[5]  :=   35;
      Bin_Dist[6]  :=   50;
      Bin_Dist[7]  :=   75;
      Bin_Dist[8]  :=  100;
      Bin_Dist[9]  :=  125;
      Bin_Dist[10] :=  150;
      Bin_Dist[11] :=  175;
      Bin_Dist[12] :=  200;
      Bin_Dist[13] :=  250;
      Bin_Dist[14] :=  300;
      Bin_Dist[15] :=  400;
      Bin_Dist[16] := 1024;
    et ce qui m'interpelle, ce sont les écarts d'une ligne à la suivante, en commençant par de tous petits écarts (3, 4, 5, 8, 10, 15) puis on passe à l'écart 25 qui est répété 6 fois ! (de 50 à 200) et les 4 derniers écarts c'est vraiment le grand écart, surtout le dernier : 50, 50, 100, 624 !
    Et je ne trouve aucune logique à cette suite de valeurs.

    De plus, on a là 17 valeurs mais seulement 16 barres pour afficher les niveaux : comment comprendre ça ?

    Quelqu'un pourra m'expliquer, en attendant que je bricole un générateur de fréquences pour voir ce que l'outil affiche ?
    Merci,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. [Requête] Impossible de faire fonctionner !
    Par Nesta92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/04/2007, 09h38
  2. Réponses: 5
    Dernier message: 05/12/2006, 23h57
  3. impossible de faire fonctionner le gridlayout
    Par oceane751 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 12/06/2006, 10h42
  4. Réponses: 5
    Dernier message: 22/03/2006, 10h39
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 09/12/2004, 14h27

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