Archive for July, 2006

Approche de l’utilisateur

Sunday, July 30th, 2006

J’ai mit en place un système de brosse, plus ou moin modifiable, qui permet à l’utilisateur en appuyant sur un bouton sur le stylet de sélectionner une forme de pinceau. passer du pti rond à des traits horizontaux pour faire des harmoniques est pas trop mal. Quand j’aurais le temps je tenterais de trouver les brosses les plus intéressantes possible.

L’inclinaison du stylet fait varier la hauteur de la brosse pour le moment, le choix a pas l’air trop judicieux, faudrait faire plus de test. Enfin toujours est-il que le logiciel commence à avoir de la gueule et ça, saibien.La balance stéréo utilise une petite reglette de la tablette graphique (qui fait office de molette normalement), je pense mapper des effets sur les boutons (effets qui restent à creer à partir de 0, chouette).

Je pense pouvoir faire une video de démonstration d’ici une semaine, et la poster sur youtube.

Ré-création

Thursday, July 27th, 2006

Voilà, une journée de travail pour ça :

Quand on clicke ça fait des ptis points blancs sur l’image. Ca fait flipper une journée pour faire… pas grand chose au final. Ca place juste des ptis points blancs sur un fond tout noir =)

Les gens on du mal à se rendre compte le temps que prend le dévelopement d’un logiciel (même pas super bien architecturé, comme dans mon cas). Le moindre bout de code doit être testé manuellement plusieurs fois, rien que pour vérifier le bon fonctionnement du nouvel algo. Puis ce nouvel algo doit être intégré dans un ensemble plus grand, appellé projet, s’il ne l’était pas déjà by design. Tout cela en alignant des petits caractères dans un langage barbare qui ne pardonne pas l’erreur, le moindre changement de caractère pouvant tout faire valdinguer. Alors oui ça bouffe énormément de temps.

Bon ok ça a pris beaucoup de temps car j’en ai profité pour creer des objets qui m’aideront gravement lors de l’élargissement du projet (là le but c’est de faire un prototype qui fonctionne). Ce qui fait que passé le prototype, rajouter des éléments/fonctionnalités sera plus facile. De plus j’ai réduit le temps de calcul du son, je sais pas trop comment mais maintenant ça bouffe quasiment plus de temps.

Avancement #2

Wednesday, July 26th, 2006

Aujourd’hui j’ai commencé les premiers tests de génération sonore avec le logiciel. Pour cela j’ai utilisé une image de 512×512 pixels, relativement simple.

Voici les résultats :

  • le fichier produit est conforme aux attentes (c’est bien)
  • le kernel de génération tourne à fond la caisse, ~3 secondes de génération pour 9 secondes de son réel.
  • Dès qu’on récupère les données sonore de la carte graphique, le temps de génération passe à 5 minutes.

donc j’ai au final un énorme problème de vitesse du à la lecture des données (la lecture sur la carte graphique est un véritable goulot d’étranglement). Je vais essayer plusieurs pistes pour essayer de récuperer les données sans massacrer les performances. Enfin ça marche et c’est déjà une bonne chose :)

Avancement #1

Wednesday, July 26th, 2006

Les grandes vacances et le trop de temps libre aidant, ce projet avance relativement vite. Aujourd’hui, j’ai quasiment fini le noyau de calcul (les différents shaders et le code processeur associé pour créer le son). Toutefois il reste un seul problème à surmonter, comment faire remonter le son qui est dans la carte graphique, vers la Mémoire vive pour ensuite le renvoyer dans la carte son. Oh bien sur c’est juste une question d’heures avant de trouver une solution, mais c’est pas très intéressant de batailler avec ce genre de problèmes.

Description de l’avancement

Je ne peut m’empecher de vous montrer la première étape du calcul sur la carte graphique :

Je laisse le soin à des personnes motivées d’analyser cette image. Secondement, je veut montrer l’image qui sert de “test” au générateur : Oui ces quelques points couplés au générateur peuvent creer du son.

Réalisation technique

Monday, July 24th, 2006

Le projet lui même se résumera en un logiciel et une tablette graphique. La tablette graphique est là prète à être utilisée, reste plus que le logiciel. Pour diverses raisons (notemment une immense flemme), le C# sera utilisé, et couplé avec (managed) DirectX. Le but étant de faire cracher le son par la carte graphique.

Vous étranglez pas tous en même temps, j’explique. Nos chères, voir même très chères, carte graphiques ont gagné ces dernières années une puissance phénoménale. Pour tout ce qui est calcul parallèle et vectoriel, elles sont imbatables. L’arrivée du HDR et surtout des shaders a permi l’utilisation de cette puissance. L’application devant génerer continuellement du son et en même temps permettre l’utilisation d’un micro-photoshop (Gimp pour les puristes), ce mode de calcul peut tirer son épingle du jeu.

Petites explications sur le HDR et les shaders.

Les cartes graphiques autrefois utilisaient un pipeline de rendu fixe (qui faisait toujours la même chose), et qui s’occupait de faire des calculs d’illumination, de texturation et tout pleins de trucs utiles pour faire des supers jeux videos en 3D de la mort. Les shaders sont des petits programmes qui vont se loger sur la carte graphique qui permettent de modifier le rendu, l’apparence, d’un objet. Grâce à eux et en détournant légèrement leur but, nous pouvons effectuer des calculs plus généraux, mais sur la carte graphique. Voir le site GPGPU.org pour plus d’infos

Seul petit problème, les données en sortie étaient limitées à des valeurs comprisent entre 0 et 255, ce qui est trop petit pour faire des choses intéressantes. le HDR (high dynamic range) comble ce vide, il permet d’utiliser des valeurs suffisemment grande, on peut utiliser des nombres à virgules, donc beaucoup plus de valeurs possibles.