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

)
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