salut
voici mon test is.zip
en esperant que cela fonctionne
salut
voici mon test is.zip
en esperant que cela fonctionne
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
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
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
Bonsoir,
La version Windows ne fonctionne pas mieux que la version Linux !
bb84000
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
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 :
et roule ma poule :
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
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
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);
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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 :
et la question c'est : qu'est-ce qu'on fait de ce Rect de destination ?
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));
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
Salut,
De mon côté, avec delphi 7, j'ai une violation d'accès au chargement du fichier mp3 là
bb84000
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 channel:= BASS_StreamCreateFile(FALSE, PChar(OpenDialog1.FileName), 0, 0, 0); exit;
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 :
Peut-être y en a-t-il d'autres ?
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
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
Salut
Le Fcsv ... c'est le Canvas de ton récepteur sur la form principale.
Dans la méthode Draw de Spectrum
plus loin, tu as
Code : Sélectionner tout - Visualiser dans une fenêtre à part procedure Draw(Cvs : TCanvas; WaveData : array of single; X, Y : Integer)
Cela me permet d'avoir accès au canvas dans toute la classe.
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;
Reprenons l'exemple du Spectrum.
Pour ma part je l'ai modifié ainsi :
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
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;
le BMPBuffer étant la zone où j'ai construit le graphique.
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));
Les rect déterminent la taille et la zone de copie du source et de la destination.
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)//TCanvas TRect TCanvas TRect
DestCanvas.CopyRect(RDest, SrcCanvas,RSource);
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
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 :
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
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; ...
Normal que l'affichage ne fonctionne pas, s'il n'y a rien à afficher !
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 ...
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
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
Bien joué !
C'est là-dedans que ça coince :
Ç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 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;
Au premier coup d'œil, pourquoi ça commence à 5 ?
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
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 :
etc.
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
/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
Salut,
J'ai trouvé quelque chose :
bb84000
Code : Sélectionner tout - Visualiser dans une fenêtre à part FFT : array[0..1024] of single; // au lieu de float
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
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.
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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 :
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 !
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 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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager