Enflammez vos haut-parleurs !

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Enflammez vos haut-parleurs !

Message par JohnJohnsonSHERMAN »

Enflammez vos hauts-parleur !!

Quoi de mieux qu'un joli effet de musique incandescente pour ca?
Bon allez on revient sur Terre : ce petit code tiré d'un exemple d'effet de feu (de Flype il me semble) affiche un effet d'incendie en fonction du spectre en fréquences de la musique en cours de lecture, avec des couleurs incandescentes... Joli non? 8) :lol:

Code : Tout sélectionner

;=================================================================
;= SoundFlame par JohnJohnsonSherman, inspiré d'un code de Flype.=
;=================================================================

EnableExplicit

#W = 200
#H = 200
#Z = 2

IncludeFile "fmodex(short).pbi"

Global Dim pix.l(#W+2, #H+2),Channel.l,Sound.l,FmodSystem.l,File.s

File = OpenFileRequester("Selectionner un fichier mp3","","Musique|*.mp3;*.wav;*.ogg;*.flac",0)
;====================================

Procedure FireEffect_Calc()
  Protected x, y
  For y = 0 To #H + 1
    For x = 1 To #W - 1
      pix(x, y) = (pix(x-1, y) + pix(x+1, y) + pix(x, y+1) + pix(x, y+1)) >> 2
    Next
  Next
EndProcedure

Procedure FireEffect_Draw()
  Protected x, y, res, red, green, blue
  If StartDrawing(CanvasOutput(0))
    For y = 0 To #H - 1
      For x = 0 To #W - 1
        res=pix(x, y)
        If res > 255 ;Incandescence : plus la valeur est élevée, pluson ajoute du vert (>jaune) puis du bleu (>blanc).
          red=255
          green=res-255
          If green > 255
            blue=green-255
            green=255
            If blue > 255
              blue = 255
            EndIf
          Else
            blue=0
          EndIf 
        Else
          red=res
          green=0
        EndIf
        ;Box(x*#Z, y*#Z, #Z, #Z, RGB(red,green,0))
        Box(x*#Z, y*#Z, #Z, #Z, RGB(red,green,blue));(Pow(2,255)/Pow(2,red))*255,0))
      Next
    Next
    StopDrawing()
  EndIf
EndProcedure

Procedure FireEffect_Feed()
  Protected i,Dim Spectrum.f(256),corr.f
  FMOD_Channel_GetSpectrum(Channel,Spectrum(),256,0,1)

  For i = 1 To 200 Step 1
    corr=3.5/(1+4.43*Exp(-0.037*i)) ;Fonction logarithme amorti ou logistique (f(x)=b/(1+a e^-cx)).
    pix(i, #H+2) =(Spectrum(i)*25500)*corr;corr perment de corriger rapidement la trop forte représentation des basses par le FFT de Fmod. (FFT = Fourier Frequency Transformation, il me semble).
  Next
EndProcedure

Procedure FireEffect_Update()
  FireEffect_Calc()
  FireEffect_Feed()
  FireEffect_Draw()
EndProcedure

;====================================

If OpenWindow(0, 0, 0, #W*#Z, #H*#Z, "Fire Effect", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, #W*#Z, #H*#Z)
  AddWindowTimer(0, 0, 5)
  BindEvent(#PB_Event_Timer, @FireEffect_Update(), 0, 0)
  ;Tout le blabla pour Fmod
  FMOD_System_Create(@FmodSystem)
  FMOD_System_Init(FmodSystem,16,#FMOD_INIT_NORMAL,0)
  FMOD_System_CreateStream(FmodSystem,@File,#FMOD_SOFTWARE,0,@Sound)
  FMOD_System_PlaySound(FmodSystem,#FMOD_CHANNEL_FREE,Sound,0,@Channel)
  FMOD_Channel_SetVolume(Channel,80)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  FMOD_Channel_Stop(Channel)
  FMOD_System_Release(FmodSystem)
EndIf

;====================================
Et voila pour aujourd'hui ! 8)
Dernière modification par JohnJohnsonSHERMAN le sam. 25/juin/2016 13:00, modifié 2 fois.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Enflammez vos haut-parleurs !

Message par Micoute »

ça ne fonctionne pas chez moi.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Enflammez vos haut-parleurs !

Message par JohnJohnsonSHERMAN »

Précise? :? Il met quoi comme erreur?

:idea: :idea: Attention , toujours compiler sans l'unicode quand on utilise FMOD ! Cf topic de falsam la dessus... http://www.purebasic.fr/french/viewtopi ... 5&start=45 (pages 3, 4 et 5)

(je suis quasiment sûr a 100% que t'est en unicode :mrgreen: )
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Enflammez vos haut-parleurs !

Message par Micoute »

Ce n'est pas une question d'Unicode puisque je suis en version 5.50.

Le seul problème qui se présente, c'est quand je charge un fichier mp3, on a l'impression qu'il n'est pas lu, car il ne se passe rien sans que le programme ne soit planté, alors qu'avec ton programme Oscillo_2_0, c'est magique.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Enflammez vos haut-parleurs !

Message par falsam »

je pense qu'il manque la procédure MeasureHiResIntervalStart()
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Enflammez vos haut-parleurs !

Message par Ar-S »

JohnJohnsonSHERMAN a écrit :Précise? :? Il met quoi comme erreur?

:idea: :idea: Attention , toujours compiler sans l'unicode quand on utilise FMOD ! Cf topic de falsam la dessus... http://www.purebasic.fr/french/viewtopi ... 5&start=45 (pages 3, 4 et 5)

(je suis quasiment sûr a 100% que t'est en unicode :mrgreen: )
J'ai pas testé mais si micoute utilise la 5.50, il faut le fmodex_min de falsam et adapter le code en 5.50. Sinon Micoute, tu dois le tester en 5.42 sans unicode.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Enflammez vos haut-parleurs !

Message par JohnJohnsonSHERMAN »

Exactement...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Enflammez vos haut-parleurs !

Message par falsam »

Micoute a écrit :Ce n'est pas une question d'Unicode puisque je suis en version 5.50.
Je confirme ce que dit Ar-S et JohnJohnsonSHERMAN. Le code proposé n'est pas compatible avec la version 5.50 Beta.

Vas dans les paramètres de compilation et décoche la case de prise en charge unicode.

Ceci dit, sans la procédure MeasureHiResIntervalStop(), le code ne fonctionnera pas.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Enflammez vos haut-parleurs !

Message par JohnJohnsonSHERMAN »

MeasureHiResIntervalStop()? Elle y est, regarde un peu plus haut, dans mon code...

Récapitulons : MeasureHiResIntervalStart() et MeasureHiResIntervalStop() sont toutes les deux présentes dans mon code... ca fait partie de la Droopy lib, si tu ne la posséde pas, supprime ces deux fonctions. Elles ne servent a rien, si ce n'est que j'ai remarqué qu'elles accéléraient mon code quand j'utilise FMOD_Channel_GetSpectrum().

PB 5.50 ne supporte plus l'Ascii. Si tu veux compiler en Ascii, il faut reprendre PB 5.42, ou utiliser le fmod mini.pbi (sur ce même forum), qui te permet d'utiliser FMOD avec l'unicode (cela dit je ne sait pas si tout y est). En tout cas impossible d'utiliser FMOD avec l'include classique (celui que je fournis dans le zip, cf Analyse de son avec Fmodet mon Oscillo) tout en restant avec PB 5.50 ou en Unicode... Je ne sait pas si vous avez suivi, mais moi, si ... :mrgreen:

Edit : OOOps :oops: j'ai pas mis le zip avec l'include et les dlls... Enregistrez le code dans le même répertoire que là ou vous avec décompressé le Zip de l'Oscillo, si vous ne l'avez pas, téléchargez le...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Enflammez vos haut-parleurs !

Message par falsam »

JohnJohnsonSHERMAN a écrit :MeasureHiResIntervalStop()? Elle y est, regarde un peu plus haut, dans mon code...
Ben non cette procédure ne se trouve pas dans ton code figurant dans le premier message.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Enflammez vos haut-parleurs !

Message par JohnJohnsonSHERMAN »

Excuse moi du quiproco, :oops: je pensais que tu diasait que ces fonctions manquaient, masi non, en fait tu pensait qu'il s'agissait de procédures... Et bien non :
MeasureHiResIntervalStart() et MeasureHiResIntervalStop() sont toutes les deux présentes dans mon code... ca fait partie de la Droopy lib
Ce ne sont pas des fonctions indispensables, tu peux les virer, ca fonctionnera toujours...

Ah au fait, il y a un timer de 5ms dans mon code. Mettez 50 ou 25 ms a la place, sinon ca bouffe tout le proco :roll:
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Enflammez vos haut-parleurs !

Message par GallyHC »

Bonjour,

Comme le dit "Falsam", je ne vois pas non plus la procédure "MeasureHiResIntervalStop()" dans le code de début. Après un Zip complet serait surement le bienvenu (Si on doit tout chercher copier coller, ect...), ça donne pas envi de faire le test.

Cordialement,
GallyHC

Ré-edit :

Si tu ne le dit pas, comment veux tu que l'on sache que tu utilise la "Droopy-Lib"? A utiliser des lib comme cela, ça empêchera certain comme moi pour faire le test.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Enflammez vos haut-parleurs !

Message par JohnJohnsonSHERMAN »

Code : Tout sélectionner

Procedure FireEffect_Feed()
  MeasureHiResIntervalStart();je ne sait pas pourquoi mais chez moi ca accélére l'appel au spectre par Fmod.
  Protected i,Dim Spectrum.f(256),corr.f
  FMOD_Channel_GetSpectrum(Channel,Spectrum(),256,0,1)

  For i = 1 To 200 Step 1
    If i<20
      corr=0.5
    Else
      corr=1.4
    EndIf
    pix(i, #H+2) =(Spectrum(i)*25500)*corr;corr perment de corriger rapidement la trop forte représentation des basses par le FFT de Fmod. (FFT = Fourier Frequency Transformation, il me semble).
  Next
  MeasureHiResIntervalStop()<<<<Juste ici...
EndProcedure
 
Et j'avais oublié au moment où j'ai posté mon code que ca venait de la Droopy lib...

Quant au zip si je ne l'ais pas mis, c'est que je préfére avoir à bouger ma souris de quelques centimétres de plus pour aller en chercher un autre, plutôt que de se retrouver avec 36000 fois les mêmes includes et les mêmes dlls de FMOD un peu partout sur mon ordi... Je vais faire un zip universel de FMOD et je reviens avec...

Edit : Le zip qui fournit tout ce qui est nécessaire à FMOD est ici (en bas de page).
Edit 2 : Le code a été corrigé sans les deux fonctions de la Droopy Lib.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: FmodEx Minimum Unicode

Message par JohnJohnsonSHERMAN »

Bon, concernant les petits problémes quil y a eu hier soir pour tester certains de mes exemples, dûs au manque de zips appropriés, j'ai posté sur mon site un zip qui contient les deux dlls de FMOD, l'include complet (a compiler en Ascii), mon include réduit (celui du zip de l'oscillo, en Ascii aussi), et l'include qui fait l'objet de ce sujet (en Unicode, PB 5.50). L'aide de Fmod y est aussi.
Il est ici (en bas).
(en gros c'est le même zip que celui de falsam en haut, avec mon include réduit perso en plus :D )

Faudrait se faire un include complet, avec toutes les fonctions de Fmod, en Unicode et tout, comme ca ce serait plus simple... mais ca risque d'être loong :roll:
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Enflammez vos haut-parleurs !

Message par falsam »

JohnJohnsonSHERMAN a écrit :Faudrait se faire un include complet, avec toutes les fonctions de Fmod, en Unicode et tout, comme ca ce serait plus simple... mais ca risque d'être loon
PureBasic 5.50 n'étant qu'en phase Beta, je pense qu'il vaudrait mieux attendre la version définitive de cette nouvelle version.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre