Fmodex et Effets Graphiques

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Fmodex et Effets Graphiques

Message par Ar-S »

Yop,

Je rebosse sur un petit lecteur radio utilisant fmod. Si je n'ai pas de soucis pour lire mes stations, j'aimerai maintenant faire un petit visualisateur graphique suivant les bmp ou autre fréquences afin de donner un peu de vie à mon lecteur. (En fait une simple barre de chargement min 0 max 100 qui oscillerait.)

il me semble que Dobro avait fait un truc du genre mais je ne le trouve pas. Si quelqu'un à les commandes à utiliser. l'aide de Fmod est trop velue.

il y a probablement à utiliser FMOD_Channel_GetSpectrum mais je ne vois pas trop comment.

Merci
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fmodex et Effets Graphiques

Message par Backup »

je te repond demain ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fmodex et Effets Graphiques

Message par Ar-S »

:mrgreen: :mrgreen: :mrgreen: Cool on est demain :mrgreen: :mrgreen: :mrgreen:
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fmodex et Effets Graphiques

Message par Backup »

tout d'abords , il n'est pas possible de faire un Spectrum
sur les Streamings avec Fmodex !!

ça ne marche que pour la lecture des MP3 ....

ça t’intéresse toujours ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fmodex et Effets Graphiques

Message par Backup »

bon voila pour la lecture des mp3

tu lances, ça te demande de charger un mp3 (choisi un mp3 qui envoie d'entré... )

lance ce code en mode debugger ON , car je n'ai pas prevu de sorti de code (c'est un exemple :mrgreen: )

le principe tu creer 512 Sprites
et c'est FModex qui te renvoi le niveau de chacun d'eux ...
lis j'ai mis des commentaire ...

ça marche grace au buffer son , n'ayant jamais reussi a lui faire lire le buffer son du Streaming live a l'epoque
j'ai laissé tombé .....

mais pour les Mp3 ça marche nickel :)

le code :

Code : Tout sélectionner


;***********************************************
;Titre  :*test_fmodex
;Auteur  : Dobro
;Date  :24/10/2013
;Heure  :17:22:14
;Version Purebasic :  PureBasic 5.20 LTS (Windows - x86)
;Version de l'editeur :EPB V2.50
; Libairies necessaire : Fmodex.pbi 
;***********************************************


Enumeration
	#window
	#image
EndEnumeration


IncludePath "E:\Dobro\Purebasic_5_20\x86\Include\"
XIncludeFile "fmodex.pbi"


Declare    Oscillo(sound)


; **************** initialisation Sprite des 512 niveaux************
Global Dim Arr.F(512) ; tableau pour les 512 niveaux
If InitSprite() = 0
	MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
	End
EndIf
Structure sprite
	x.l
	y.l
EndStructure
Global Dim sprite.sprite(512)
; creation de la fenetre d'affichage des niveau

If OpenWindow(#window, pos_x, pos_y, 300, 170, "Pure Radio", #PB_Window_SystemMenu)
	
	If OpenWindowedScreen(WindowID(#window), 4, 4,290,50,0,0,0 )
		ClearScreen(RGB($0,$0,$0))
		FlipBuffers()
		
		For i=1 To 512 Step 4
			CreateSprite(i,2,32):CreateImage(#image,2,32,32)
			sprite(i)\x=i
			sprite(i)\y=50
			StartDrawing ( ImageOutput (#image))
				DrawingMode ( #PB_2DDrawing_Gradient )
				;
				BackColor($0000FF)
				GradientColor(0.4, $00FFFF)
				GradientColor(0.6, $FFFF00)
				FrontColor($FF0000)
				LinearGradient(0, 0, 2, 32)
				
				Box(0, 0, 2, 32)
			StopDrawing ()
			StartDrawing ( SpriteOutput (i))
				DrawImage(ImageID(#image),0,0)
			StopDrawing()
		Next i
		
	EndIf
Endif
; *******************************************





;;; url$="http://mp3.live.tv-radio.com/rfo/all/rfo_polynesie-128k.mp3" ; Radio Polynesie ;)

; ************init Fmodex ****************************
FMOD_System_Create(@fmodsystem)
FMOD_System_Init(fmodsystem, 32, 0, 0)
; ***************************************

;;;; ***** pas de stream reseau dans cet exemple **********
;;;;FMOD_System_CreateStream(fmodsystem, @url$, #FMOD_CREATESTREAM, 0, @sound)

;;;;;FMOD_System_PlaySound(fmodsystem, 0, sound, 0, @channel) ; joue l'url
;;; *************************************************



str.s = OpenFileRequester("Choose a soundfile", "c:", "*.*|*.*", 0)
If str<>"" ; on charge le fichier
	FMOD_System_CreateStream(fmodsystem, @str, #FMOD_SOFTWARE, 0, @sound) ; creer le stream
	FMOD_Sound_GetLength(sound, @longueur, #FMOD_TIMEUNIT_MS) ; recupe la taille du son dans longueur (sert pour un scrollBar eventuel )
	FMOD_System_PlaySound(fmodsystem, 0, sound, 0, @channel) ; joue
Endif

Repeat
	Evenement.l= WaitWindowEvent(2)
	
	
	FMOD_Channel_GetSpectrum(channel, Arr(), 512, 0, 0 ) ; recuperere les 512 niveaux des frequences
	Oscillo(sound) ; le graph au centre ecran graphique
	
	
	
	Select EventWindow()
		;-evenement window
		
		
	EndSelect
	
	FlipBuffers()
	ClearScreen(0)
ForEver

Procedure Oscillo(sound)
	Static compteur.F,compteur2.F
	compteur.F=compteur.F+1
	compteur2.F=compteur2.F+10
	largeur=290 :hauteur=50
	
	
	If state=0 And play=1
		For spr=1 To 512 Step 4
			variation=25* Sin(compteur2*#PI/180)
			sprite(spr)\x=spr
			sprite(spr)\y= variation* Sin(spr*#PI/180)
			DisplaySprite(spr,sprite(spr)\x+compteur.F,sprite(spr)\y)
			sprite(spr)\y=50 ; remet le sprite en bas
			If sprite(spr)\x+compteur.F>512
				compteur.F=0
				sprite(spr)\x=0
			EndIf
			
		Next spr
		
		Else
		For spr=1 To 512 Step 4
			sprite(spr)\y=sprite(spr)\y-Arr(spr)*32*spr
			DisplaySprite(spr,sprite(spr)\x,sprite(spr)\y)
			sprite(spr)\y=50 ; remet le sprite en bas
		Next spr
	EndIf
	
EndProcedure


; 



; 

; EPB
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fmodex et Effets Graphiques

Message par Backup »

..........
Dernière modification par Backup le lun. 18/août/2014 16:21, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fmodex et Effets Graphiques

Message par Ar-S »

Excellent merci.
Content d'avoir pu t'aider à trouver ton erreur (gag ! :mrgreen: :mrgreen:)
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fmodex et Effets Graphiques

Message par Backup »

Ar-S a écrit :Excellent merci.
Content d'avoir pu t'aider à trouver ton erreur (gag ! :mrgreen: :mrgreen:)
non non , c'est pas un gag !! Merci :D
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fmodex et Effets Graphiques

Message par falsam »

Sympa ce code Dobro. Merci :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fmodex et Effets Graphiques

Message par falsam »

Petite contribution. J'ai repris les éléments de ton code pour en faire un Spectrum Meter.

Image

Le code met en oeuvre le gadget MeterGadget() et l'instruction associé SetMeterState() pour mettre à jour le vumètre.
L'include MeterGadget.pbi permettant de créer ce gadget se trouve sur ce lien http://www.purebasic.fr/english/viewtop ... 12&t=54117

le code complet

Code : Tout sélectionner

EnableExplicit

IncludeFile "fmodex.pbi"
IncludeFile "MeterGadget.pbi"

Enumeration
  #Mainform
EndEnumeration

Define.l Event, GEvent, TiEvent

Global WindowStyle.i=#PB_Window_SystemMenu|#PB_Window_ScreenCentered
Global VuMeter.i

Global fmodsystem.i, Channel.i, Sound.i
Global Dim Arr.F(512), N.i ; Tableau pour les 512 niveaux
Global Url.s

Procedure VueMeterUpdate()
  Protected Sum.f
  
  FMOD_Channel_GetSpectrum(channel, Arr(), 512, 0, 0 ) ; recuperere les 512 niveaux des frequences
  For N=0 To 512 
    Sum + Arr(N)
  Next
  SetMeterState(VuMeter, Sum*10)
EndProcedure

Procedure Open_MainForm()
  OpenWindow(#Mainform, 0, 0, 190, 200, "Spectrum Meter", WindowStyle)
  SetWindowColor(#Mainform, $300000)
  VuMeter= MeterGadget(#PB_Any, 20, 50, 100, "Spectrum")
  AddWindowTimer(#Mainform, 100, 100) 
EndProcedure

Procedure Start()
  Open_MainForm()
  Url ="http://50.7.98.106:8719"
  
  FMOD_System_Create(@fmodsystem)
  FMOD_System_Init(fmodsystem, 32, 0, 0)

  FMOD_System_CreateStream(fmodsystem, @Url, #FMOD_CREATESTREAM, 0, @sound)
  FMOD_System_PlaySound(fmodsystem, 0, sound, 0, @channel) ; joue l'url
  
  FMOD_Channel_SetVolume(Channel, 0.5)
EndProcedure

start()

Repeat
  Event   = WaitWindowEvent(100)    
  GEvent  = EventGadget()
  TiEvent = EventTimer()
  
  Select Event
    Case #PB_Event_Timer
      Select TIEvent
          Case 100
            VueMeterUpdate() 
        EndSelect
            
    Case #PB_Event_Gadget
      Select GEvent
      EndSelect
        
    Case #PB_Event_CloseWindow
      FMOD_Channel_Stop(Channel)
      FMOD_System_Release(fmodsystem)
      End
  EndSelect
ForEver
Encore une fois, merci Dobro pour ton aide:)
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Fmodex et Effets Graphiques

Message par Micoute »

Bonjour à tous et merci pour ce partage, mais j'ai un problème d'erreur de lecture à l'adresse 0.

Auriez-vous une solution à me proposer ?

Merci beaucoup d'avance !
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fmodex et Effets Graphiques

Message par Ar-S »

Avec quel code ?
~~~~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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fmodex et Effets Graphiques

Message par falsam »

Micoute a écrit :j'ai un problème d'erreur de lecture à l'adresse 0.Auriez-vous une solution à me proposer ?
Tu pourras surement confirmer que cette erreur se produit au niveau de cette ligne

Code : Tout sélectionner

  FMOD_System_Create(@fmodsystem)
et que tu n'as pas le fichier fmodex.dll dans le même dossier que ton code.

■ Un fichier compressé qui contient :
fmodex.dll et fmodex.pbi nécessaires au fonctionnement des codes suivants.
Demo - Graph Sprite.pb correspondant au code de Dobro.
Demo - Meter Gadget.pb et MeterGadget.pbi pour le code que j'ai proposé plus haut:)

:arrow: fmodex.zip
Dernière modification par falsam le dim. 17/nov./2013 23:01, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Fmodex et Effets Graphiques

Message par Micoute »

Ar-S a écrit :Avec quel code ?
Avec les deux !
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fmodex et Effets Graphiques

Message par falsam »

Micoute a écrit :
Ar-S a écrit :Avec quel code ?
Avec les deux !
N'oublies pas de regarder ma réponse et le lien que je te propose :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre