
est il possible de convertir un petit éffet audio(*.wav;*.mp3;etc...) en Data façon ("image->data")


de façon à l'intégrer dans l'application; yen a qui y arrive mais je ne sais pas comment ils font

Mercix

Code : Tout sélectionner
;--------------------------------------------------
;Good07 correct by Fortix
;Programme pour transformer des fichiers Wav en data
;Le 12/04/09
;Version PureBasic 4.20
;--------------------------------------------------
;
Global out.s
q.s = Chr(34)
FileName$= OpenFileRequester("", "*.wav", ".wav", 0);On choisi le fichier .wav à transformer en data.
If OpenFile(1,FileName$)<>0 ;Ouverture du fichier
Longueur= FileSize(FileName$) ;On récupère sa longueur
*tampon=AllocateMemory(Longueur) ;On alloue à l'adresse *tanpom un emplacement mémoire de la longueur du fichier
ReadData(1,*tampon,Longueur) ;On transfère le contenu du fichier dans le tampon
EndIf
CloseFile(1) ; On ferme le fichier en lecture
name$=GetFilePart(filename$) ; on récupère son nom
name$=Left(name$,(Len(name$)-4)); et on enlève l'extention (.wav)
If CreateFile(0,"c:\WaveData.pb") ;On donne un nom au programme et on ouvre un fichier en écriture
WriteStringN(0,";Fichier Wave en data"); Les ligne de dessous servent à créer le programme qui va lire les datas
WriteStringN(0," ")
WriteStringN(0,"InitSound()")
WriteStringN(0,"Restore "+ name$); On ajoute le nom du fichier pour la restauration des datas (Utile si on a plusieurs sections)
WriteStringN(0,"Read longueur.l")
WriteStringN(0,"*tampon=AllocateMemory(longueur)")
WriteStringN(0,"For n=0 To longueur-1")
WriteStringN(0," Read c.b")
WriteStringN(0," PokeB(*tampon+n,c)")
WriteStringN(0,"Next n")
WriteStringN(0,"resultat=CatchSound(1,*tampon)")
WriteStringN(0,"If resultat=0")
WriteStringN(0," MessageRequester"+"("+q+"Attention"+q+","+q+"le chargement du son a échoué !"+q+","+"#PB_MessageRequester_Ok"+")")
WriteStringN(0,"EndIf")
WriteStringN(0,"PlaySound(1)")
WriteStringN(0,"Delay(10000)");Permet d'entendre le son avant la fin du programme. A supprimer si vous incorporez ce listing à votre
WriteStringN(0," ") ;programme
WriteStringN(0,"DataSection")
WriteStringN(0," ")
WriteStringN(0,Name$+":")
WriteStringN(0," ")
out="Data.l "
WriteStringN(0,out+Str(longueur));Première ligne de data contient la longueur du fichier à lire.
out="Data.b "
For x=0 To Longueur-1; boucle qui lit le fichier en mémoire et le transforme en data
c=PeekB(*tampon+x);& $FF
c$=Str(c)
out=out+c$
If z=25
z=0
WriteStringN(0,out)
out="Data.b "
ElseIf x<> Longueur-1
out=out+","
EndIf
z=z+1
Next x
If z<26
WriteStringN(0,out); si la dernière ligne n'est pas complète on écrit ce qui reste
EndIf
WriteStringN(0,"EndDataSection")
CloseFile(0)
EndIf
MessageRequester("Programme","Le programme a été généré"+Chr(10)+"avec succé sous le nom"+Chr(10)+"WaveData.Pb",#PB_MessageRequester_Ok)