Pour continuer dans la rubrique tout en un , J'ai décidé d'écrire un programme qui transforme un fichier .wav en data. Malheureusement ce n'est pas si facile puisqu'il ne marche pas.

Enfin pas tout. Le programme lit bien le fichier son et le transforme bien en data, de -128 à +128. si vous voulez de 0 à 255 il suffit de rajouter
& $FF à la ligne 48 du programme.
De toute façon ça ne change rien le haut parleur produit un son muet (je viens d'inventer ça pour travailler en silence

Je fait peut être une erreur quelque part...
Je pense que comme les images ce doit être possible mais je ne sais pas pourquoi celà ne fonctionne pas.
Si vous avez une idée voici le code du programme:
Code : Tout sélectionner
;--------------------------------------------------
;Good07
;Programme pour transformer des fichiers Wav en data
;Le 10/11/04
;Version PureBasic 3.92
;--------------------------------------------------
;
Global out.s
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(*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,"WaveData.pb") ;On donne un nom au programme et on ouvre un fichier en écriture
WriteStringN("; Fichier Wave en data"); Les ligne de dessous servent à créer le programme qui va lire les datas
WriteStringN(" ")
WriteStringN("InitSound()")
WriteStringN("Restore Pong")
WriteStringN("Read longueur.l")
WriteStringN("*tampon=AllocateMemory(longueur)")
WriteStringN("For n=0 To longueur-1")
WriteStringN(" Read c.b")
WriteStringN(" PokeB(*tampon+n,c)")
WriteStringN("Next n")
WriteStringN("resultat=CatchSound(1,*tampon)")
WriteStringN("If resultat=0")
; Comme on ne peut pas écrire WriteStringN(""Attention"") (voir le Post de Dobro sur le sujet) on est coincé pour générer
; la ligne de dessous.
; En utilisant un petit artifice on y arrive mais le programme généré va donner une syntaxe erreur sur cette ligne !
; Il faudra rajouter les "" manquant manuellement...Désolé. Mais si quelqu'un a une autre solution je suis preneur !
WriteStringN(" MessageRequester"+"("+"Attention"+","+"le chargementdu son a échoué !"+","+"#PB_MessageRequester_Ok"+")")
WriteStringN("EndIf")
WriteStringN("PlaySound(1)")
WriteStringN("End")
WriteStringN(" ")
WriteStringN("DataSection")
WriteStringN(" ")
WriteStringN(Name$+":")
WriteStringN(" ")
out="Data.l "
WriteStringN(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(out)
out="Data.b "
ElseIf x<> Longueur-1
out=out+","
EndIf
z=z+1
Next x
If z<26
WriteStringN(out); si la dernière ligne n'est pas complète on écrit ce qui reste
EndIf
WriteStringN("EndDataSection")
CloseFile(0)
EndIf