@Nico,
D'aprés ce que j'ai pu lire sur ce projet, les Benchmark envisagés sont tellement élevés que ce calculateur sera capable de sortir d'une boucle infinie en seulement 2.1654568732146874567987 secondes !! Plus la peine de se faire du soucis pour ce type de bugs !
Pétaflop, je trouve ça vachement poétique, quand même...
@Hardy,
hardy a écrit :ça prend 78ms pour analyser un signal avec 65536 entrées. (avec d'autres programmes en arrière plan)
Pffff... dés qu'on sera tous équipés en Cray ça sera plus un problème !
SoundEditor permet de gérer tous les fichiers wave quels que soient leurs périodes d'échantillonage, leurs nombre de canaux et le nombre de bits par échantillon (sauf les 64 et 24 bits sur lesquels j'ai pour le moment fait l'impasse).
Les caractéristiques d'un fichier wave sont enregistrées dans son en-tête. Avant de traiter un son, il faut donc commencer par examiner son en-tête pour savoir de quelle façon on doit le gérer. Le détail de cet en-tête est expliqué en long, en large et même un peu en travers, sur le site freesoundeditor.com à la rubrique Les développeurs\documentation. Tu peux également télécharger ce document en allant dans la rubrique download : "leformatwav.zip". Tu peux aussi me poser toutes les questions que tu veux : je bouffe 3 fichiers wav chaque matin avec mon petit déjeuner.
@Jacobus et Dobro,
Mes trés chers amis, vous voilà immortels ! Votre oeuvre grandiose est proposée sur freesoundeditor.com au chapitre download avec un petit speech qui laisse entrevoir l'immensité de vos talents. Félicitations !
@Dobro le programmeur,
ATTENTION REEDITION DU MESSAGE
voila j'ai fini !!
-> Faudrait savoir !!!
La longueur du code pourrait encore être divisée par 10 (ça serait plus facile à faire évoluer et à débugger !!) en créant une petite structure comportant :
- le N° de touche du piano (N° de bouton associé)
- La touche du clavier associée
- Le fait qu'il s'agisse d'une noire ou d'une blanche (pour l'icone)
- La progress bar associée
- le texte de la note (par exemple "R & Si_2")
ensuite, tu crée un tableau de dimension 36 (pour les tableaux, 36+la case 0 = 37) ayant cette structure pour type.
Tu renseigne le champ "N° de bouton" et "N° de Progress Bar" dans une boucle for next et le reste par des données stockées sous forme de datas. Et HOPLA ! Toutes tes répétitions de code sont supprimées : tu applique simplement chaque procédure à l'élément courant du tableau.
@Dobro l'artiste,
Je rêve d'avoir un beau son de violon, tu crois que tu pourrais ajouter ça à tes banques ?? (je sais, j'exagère, mais vraiment, ça me ferait plaisir

)
Aprés avoir refait mon téléchargement, je te confirme que le son N°11 de l'accordéon a un scratch en plein milieu dans les aigus. C'est peu de chose, c'est juste pour t'embêter. Pour le reste (je n'ai pas tout écouté, mais bon...) tes sons sont en effet trés propres quand on les écoute avec SoundForge (ou dans SoundEditor ! D'ailleurs, c'est encore plus beau dans SoundEditor, je sais pas à quoi ça tiens, c'est subtile, mais on entend bien que c'est un peu mieux..). C'est la gestion de ces sons par "Mon Piano" qui crée un scratch en début et en fin de son. Ce problème est extrêmement répandu dans les softs de musique et peut s'expliquer dans certains cas pas un bug connu de la gestion de sons sous windows : la fonction PlaySound des API n'aime pas du tout les sons d'une durée inférieure à (environ) 1/4 de seconde. Ca n'est toutefois pas le cas des sons joués par Mon Piano. J'ai résolu un problème de ce type dans SoundEditor en ajoutant un silence à la fin du son avant de le jouer. Regarde ma procédure PlaySoundInMemory :
Code : Tout sélectionner
Procedure PlaySoundInMemory()
If *TransfertMem
wBitsPerSample.w=PeekW(*TransfertMem+34)
If wBitsPerSample = 32
*Sound16=ReDepthSE (*TransfertMem,16)
FreeMemory(*TransfertMem)
*TransfertMem = *Sound16
EndIf
nChannels.w=PeekW(*TransfertMem+22)
nBlockAlign.w=nChannels*wBitsPerSample/8
TLength=PeekL(*TransfertMem+4)
nTLength=TLength+(nBlockAlign*1000)
PokeL(*TransfertMem+4,nTLength)
PokeL(*TransfertMem+40,nTLength-44)
*TransfertMem=ReAllocateMemory(*TransfertMem,nTLength)
If *TransfertMem ; we add a silence at the end of the sound to avoid cracks
If wBitsPerSample=8 ; on ajoute un silence à la fin du sound pour éviter un craquement
For ct=TLength To nTLength-1
PokeB(*TransfertMem+ct,128)
Next
Else
RtlZeroMemory_(*TransfertMem+TLength,nTLength-TLength)
EndIf
result = PlaySound_(*TransfertMem,0,#SND_ASYNC|#SND_MEMORY)
EndIf
Else
result = 0
EndIf
ProcedureReturn Result
EndProcedure
Dans tous les cas, je me demande pourquoi le son scratch aussi au début dans MonPiano. Si tu a le temps, tu peux remplacer tes appels à PlaySound de PureBasic par des appels à PlaySound_. La syntaxe est quasiment identique. Tu verras bien ce que ça donne. Si ça ne règle pas le problème, je pourrait toujours m'y pencher, mais pour le moment, on m'a demandé de fouetter tous les chats de la fourrière (et c'est une immense fourrière). Pauvres bêtes, quand même !