mardi 19 mai 2009

Programmation : 2ème partie, de l'importance de l'optimisation

Suite de ce billet, on va rentrer dans le vif du sujet.
Je ne vais pas détailler l'algorithme mais le code doit calculer les 16 points permettant de calculer l'amplitude finale, cela consiste donc à multiplier chaque point source par l'échantillon et à multiplier chaque point de destination par le sample, à ce stade, nous avons les deux amplitudes (source et destination), il ne reste plus qu'à calculer l'amplitude qui consiste à obtenir la distance entre ces deux points (+ partie fractionnelle).
Voici le code original, en PureBasic, oui je sais, inconnu au bataillon tout ça mais peu importe, n'importe quel programmeur devrait comprendre le code, plutôt simple :

#FP_SHIFT = 15

; init sinc table
SAMPLE_init_sinc_table()

; init sample data
*sample_data = AllocateMemory(16 * 2)

; init mix buffer (4 samples)
; LR - LR - LR - LR
*mix_buffer = AllocateMemory(8 * SizeOf(Long))

; alimentation de données bidon
PokeW(*sample_data + 0, 10)
PokeW(*sample_data + 2, 20)
PokeW(*sample_data + 4, 30)
PokeW(*sample_data + 6, 40)
PokeW(*sample_data + 8, 50)
PokeW(*sample_data + 10, 60)
PokeW(*sample_data + 12, 70)
PokeW(*sample_data + 14, 80)

PokeW(*sample_data + 16, 90)
PokeW(*sample_data + 18, 100)
PokeW(*sample_data + 20, 110)
PokeW(*sample_data + 22, 120)
PokeW(*sample_data + 24, 130)
PokeW(*sample_data + 26, 140)
PokeW(*sample_data + 28, 150)
PokeW(*sample_data + 30, 160)


size_of_word = SizeOf(Word)
table_idx = 0
sample_idx = 0
offset = 0
left_gain = 2408
right_gain = 5156

start0 = GetTickCount_()
For i = 0 To 10000000

While offset < 8

*sinc_table_ptr = *sinc_table + ( ( table_idx + 0 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 0) * size_of_word )
a1 = (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 16) * size_of_word )
a2 = (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 1 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 1) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 17) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 2 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 2) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 18) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 3 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 3) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 19) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 4 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 4) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 20) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 5 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 5) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 21) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 6 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 6) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 22) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 7 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 7) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 23) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 8 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 8) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 24) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 9 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 9) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 25) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 10) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 10) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 26) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 11) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 11) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 27) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 12) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 12) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 28) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 13) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 13) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 29) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 14) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 14) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 30) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

*sinc_table_ptr = *sinc_table + ( ( table_idx + 15) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 15) * size_of_word )
a1 + (*sinc_table_ptr\w * *sample_data_ptr\w)
*sinc_table_ptr = *sinc_table + ( ( table_idx + 31) * size_of_word )
a2 + (*sinc_table_ptr\w * *sample_data_ptr\w)

a1 >> #FP_SHIFT
a2 >> #FP_SHIFT

; SIMPLIFICATION du code (code bidon, ne fonctionne pas)
amplitude = a1 + a2

*mix_buffer_ptr = *mix_buffer + (offset * SizeOf(Long))
newsample = (amplitude * left_gain) >> #FP_SHIFT
*mix_buffer_ptr\l + newsample

*mix_buffer_ptr = *mix_buffer + ((offset + 1) * SizeOf(Long))
newsample = (amplitude * right_gain) >> #FP_SHIFT
*mix_buffer_ptr\l + newsample

offset + size_of_word

; fake sinc table_idx
table_idx + 1

;Debug "SINC_NO_SSE:: A1 = " + Str(a1) + " A2 = " + Str(a2)

Wend

offset = 0
table_idx = 0
sample_idx = 0
Next i
end0 = GetTickCount_()

; result of mixing
amp1 = PeekL(*mix_buffer + 0 * SizeOf(long) )
amp2 = PeekL(*mix_buffer + 1 * SizeOf(long) )
amp3 = PeekL(*mix_buffer + 2 * SizeOf(long) )
amp4 = PeekL(*mix_buffer + 3 * SizeOf(long) )
amp5 = PeekL(*mix_buffer + 4 * SizeOf(long) )
amp6 = PeekL(*mix_buffer + 5 * SizeOf(long) )
amp7 = PeekL(*mix_buffer + 6 * SizeOf(long) )
amp8 = PeekL(*mix_buffer + 7 * SizeOf(long) )

Debug "SINC_NO_SSE:: SSE_CALC amp1 = " + Str(amp1) + " amp2 = " + Str(amp2) + " amp3 = " + Str(amp3) + " amp4 = " + Str(amp4)
Debug "SINC_NO_SSE:: SSE_CALC amp5 = " + Str(amp5) + " amp6 = " + Str(amp6) + " amp7 = " + Str(amp7) + " amp8 = " + Str(amp8)



Explication :
- initialisation d'un tableau contenant les points pré calculés pour des échantillons sur 16 bits ( SAMPLE_init_sinc_table() ),
- allocation d'un tampon contenant les échantillons en entrée (8 échantillons car un échantillons occupe 2 octets * 2 car il est stéréo au format LR (Left - Right) ),
- allocation d'un tampon en sortie au format entier pour stocker pour un entier, l'échantillon stéréo donc un int contient deux shorts (LR),
- alimentation via des données bidons (les PokeW(*sample_data + 0, 10) ... ),
- initialisation de différentes valeurs pour le test,
- puis vient la partie critique, on boucle 10000000 (pour le bench), à chaque itération, nous bouclons 8 fois pour récupérer 2*8 shorts d'échantillons qui seront stockés dans notre tampons de mixage, pour chaque itération, nous calculons le point source et destination, je le scale sur 16 bits (-1 pour le bit de signe) et je stocke le tout dans le mélangeur.

Un gros pâte pour finalement pas grand chose.
Maintenant, voyons ce que ça donnerais en SSE2 :

Procedure.l PB_sse2_mul_add(*p1.Word, *p2.Word, size.l)
Protected *dest_buffer_ptr.Long
Protected idx.l, size_of_elements = size / 8

*dest_buffer_ptr = @dest_buffer()

!MOV esi, [p.p_p1]
!MOV edi, [p.p_p2]
!MOV edx, [p.p_dest_buffer_ptr]
!XOR ecx, ecx
!PXOR xmm4, xmm4

For idx = 0 To size_of_elements - 1
!MOVUPS xmm0, [esi+ecx] ; +16
!MOVUPS xmm1, [esi+ecx] ; +16

!MOVUPS xmm2, [edi+ecx] ; +16

!PMULLW xmm0, xmm2
!PMULHW xmm1, xmm2

!MOVUPS xmm3, xmm0 ; copy orig xmm0

!PUNPCKLWD xmm0, xmm1 ; xmm0 --> loword (this is why it is was copied :p )
!PUNPCKHWD xmm3, xmm1

!PADDD xmm4, xmm0
!PADDD xmm4, xmm3

!MOVUPS [edx], xmm4

!ADD ecx, 16
Next idx

result = PeekL(*dest_buffer_ptr) + PeekL(*dest_buffer_ptr+4) + PeekL(*dest_buffer_ptr+8) + PeekL(*dest_buffer_ptr+12)

ProcedureReturn result
EndProcedure

;- calc amplitude 0
*sinc_table_ptr = *sinc_table + ( ( table_idx + 0 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 0) * size_of_word )

a1 = PB_sse2_mul_add(*sinc_table_ptr, *sample_data_ptr, 16)
a2 = PB_sse2_mul_add(*sinc_table_ptr+32, *sample_data_ptr, 16)

a1 >> #FP_SHIFT
a2 >> #FP_SHIFT

calc_amp(0) = a1 + a2

; fake sinc table_idx
table_idx + 1

Debug "SINC_SSE:: A1 = " + Str(a1) + " A2 = " + Str(a2)

;- calc amplitude 1
*sinc_table_ptr = *sinc_table + ( ( table_idx + 0 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 0) * size_of_word )

a1 = PB_sse2_mul_add(*sinc_table_ptr, *sample_data_ptr, 16)
a2 = PB_sse2_mul_add(*sinc_table_ptr+32, *sample_data_ptr, 16)

a1 >> #FP_SHIFT
a2 >> #FP_SHIFT

calc_amp(1) = a1 + a2

; fake sinc table_idx
table_idx + 1

;- calc amplitude 2
*sinc_table_ptr = *sinc_table + ( ( table_idx + 0 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 0) * size_of_word )

a1 = PB_sse2_mul_add(*sinc_table_ptr, *sample_data_ptr, 16)
a2 = PB_sse2_mul_add(*sinc_table_ptr+32, *sample_data_ptr, 16)

a1 >> #FP_SHIFT
a2 >> #FP_SHIFT

calc_amp(2) = a1 + a2

; fake sinc table_idx
table_idx + 1

;- calc amplitude 3
*sinc_table_ptr = *sinc_table + ( ( table_idx + 0 ) * size_of_word )
*sample_data_ptr = *sample_data + ( ( sample_idx + 0) * size_of_word )

a1 = PB_sse2_mul_add(*sinc_table_ptr, *sample_data_ptr, 16)
a2 = PB_sse2_mul_add(*sinc_table_ptr+32, *sample_data_ptr, 16)

a1 >> #FP_SHIFT
a2 >> #FP_SHIFT

calc_amp(3) = a1 + a2

; fake sinc table_idx
table_idx + 1

*calc_amp_ptr = @calc_amp(0)
*mix_buffer_ptr = *mix_buffer + (0 * SizeOf(Long))
*left_gain_ptr = @left_gain
*right_gain_ptr = @right_gain

; sse mixing

; L - L - L - L
; 159 - 139 - 119 - 99
;* 2048 - 2048 - 2048 - 2048
; ---- ----- ----- -----
;325632 284672 243712 202752

; R - R - R - R
; 159 - 139 - 119 - 99
;* 5156 - 5156 - 5156 - 5156
; ---- ----- ----- -----
; 819804 716684 613564 510444

start1 = GetTickCount_()
For i = 0 To 10000000

!MOV esi, [p_calc_amp_ptr]
!MOV edi, [p_mix_buffer_ptr]
!MOV ebx, [p_left_gain_ptr]
!MOV edx, [p_right_gain_ptr]
!PXOR xmm0, xmm0
; !PXOR xmm1, xmm1
!PXOR xmm2, xmm2
!PXOR xmm3, xmm3
!PXOR xmm4, xmm4
; !PXOR xmm5, xmm5

; store
!MOVUPS xmm0, [esi] ; amp0 - amp1 - amp2 - amp3 (LLLL)
!MOVUPS xmm4, xmm0 ; amp0 - amp1 - amp2 - amp3 (RRRR)
!MOVUPS xmm1, [edi] ; sample0 - sample1 - sample2 - sample3
!MOVUPS xmm5, [edi+16] ; sample4 - sample5 - sample6 - sample7
!MOVUPS xmm2, [ebx] ; ? - ? - ? - left_gain
!MOVUPS xmm3, [edx] ; ? - ? - ? - right_gain

; prepare shift
!PSHUFD xmm2, xmm2, 00b ; left_gain - left_gain - left_gain - left_gain
!PSHUFD xmm3, xmm3, 00b ; right_gain - right_gain - right_gain - right_gain

; calc amplitude
!cvtdq2ps xmm2, xmm2 ; int --> single
!cvtdq2ps xmm3, xmm3 ; int --> single

!cvtdq2ps xmm0, xmm0 ; int --> single
!cvtdq2ps xmm4, xmm4 ; int --> single

; perform 4 singles mul (LLLL)
!mulps xmm0, xmm2 ; amp0*left_gain - amp1*left_gain - amp2*left_gain - amp3*left_gain (create LLLL sample)
; perform 4 singles mul (RRRR)
!mulps xmm4, xmm3 ; amp0*right_gain - amp1*right_gain - amp2*right_gain - amp3*right_gain (create RRRR sample)

!cvtps2dq xmm0, xmm0
!cvtps2dq xmm4, xmm4

; calc fractional bits
!PSRAD xmm0, 15 ; amp0 >> #FP_SHIFT - amp1 >> #FP_SHIFT - amp2 >> #FP_SHIFT - amp3 >> #FP_SHIFT (LLLL)
!PSRAD xmm4, 15 ; amp0 >> #FP_SHIFT - amp1 >> #FP_SHIFT - amp2 >> #FP_SHIFT - amp3 >> #FP_SHIFT (RRRR)

; save orig values (for low 32 bits word)
!MOVUPS xmm2, xmm0
!MOVUPS xmm3, xmm4

; unpack orig 32 bits low words to saved 32 bits high words (LRLR for 1st sample)
!UNPCKLPS xmm0, xmm4 ; LRLR --> xmm0 (2 samples)
; unpack orig 32 bits high words to saved 32 bits low words (LRLR for 2nd sample)
!UNPCKHPS xmm2, xmm3 ; LRLR --> xmm2 (2 samples)

; mix result : 2 samples mixed at a time
!PADDD xmm1, xmm0
!PADDD xmm5, xmm2

!MOVUPS [edi], xmm1
!MOVUPS [edi+16], xmm5

Next i
end1 = GetTickCount_()

; result of mixing
amp1 = PeekL(*mix_buffer + 0 * SizeOf(long) )
amp2 = PeekL(*mix_buffer + 1 * SizeOf(long) )
amp3 = PeekL(*mix_buffer + 2 * SizeOf(long) )
amp4 = PeekL(*mix_buffer + 3 * SizeOf(long) )
amp5 = PeekL(*mix_buffer + 4 * SizeOf(long) )
amp6 = PeekL(*mix_buffer + 5 * SizeOf(long) )
amp7 = PeekL(*mix_buffer + 6 * SizeOf(long) )
amp8 = PeekL(*mix_buffer + 7 * SizeOf(long) )

Debug "SINC_SSE:: SSE_CALC amp1 = " + Str(amp1) + " amp2 = " + Str(amp2) + " amp3 = " + Str(amp3) + " amp4 = " + Str(amp4)
Debug "SINC_SSE:: SSE_CALC amp5 = " + Str(amp5) + " amp6 = " + Str(amp6) + " amp7 = " + Str(amp7) + " amp8 = " + Str(amp8)


Désolé pour les commentaires mais qu'est ce que cela signifie :
- 1ère différence : c'est LA clef de notre optimisation, on voit que je calcule 4 amplitude en appelant 4 fois la procédure PB_sse2_mul_add(), celle-ci me calcule la partie que j'ai mis en gras plus haut. Cela veut dire que, contrairement au code original, je ne calcule pas qu'une amplitude par itération mais 4 simultanément,
- 2ème différence : je stockais un échantillon au format LR, la, vu que j'ai calculé 4 amplitudes, j'en stocke 4 par itération au format LRLR-LRLR au lieu de LR ... tout court !
- ... et c'est tout !

Mais ces deux simples différences sont éloquentes :
- code PureBasic : 6520 ms en moyenne,
- code SSE2 : 170 ms en moyenne.

Soit 38x plus rapide, rien que ça ! Cela ne se voit pas que dans les benchs mais aussi dans le taux d'occupation cpu : j'oscille entre 2 à 5% (en pique), cela peut sembler encore beaucoup mais c'est tout de même deux fois moins gourmand, objectif réussi :)
Je vous laisse zieuter le code, n'oubliez pas google, c'est grâce à lui que je m'en suis sortie mais je reste disponible pour toute aide que je pourrais apporter :)

Programmation : 1ère partie, de l'importance de l'optimisation

Pas de billet pour annoncer mon come-back mais restons efficace et pour l'annoncer, quoi de mieux qu'un vrai sujet de fond ?
Ici, il s'agira de l'optimisation en programmation, en deux parties histoire de pas avoir un gros pâté.
En effet, à l'heure actuelle, de nombreux langages existent, tous de plus en plus de haut niveau, ayant un niveau d'abstraction, certes on ne s'occupe plus que de l'essentiel mais de fait, on s'éloigne aussi de plus en plus de la machine et donc de sa logique : java, .net, ruby & co n'en sont que quelques exemples.
Dès lors, les programmeurs ont oublié qu'on pouvait optimiser son code, si si, je le vois tous les jours au boulot, nombreux sont ceux qui ne font qu'utiliser tel et tel framework, hop un tour dans la doc, ok, j'utilise ça pour faire ça etc ... mais personne (ou rares) sont les personnes prenant le temps de la réflexion en se disant si son code est vraiment optimisé.
Si j'en parle c'est que j'ai été confronté à cette problématique.
Je code en ce moment une bibliothèque permettant de décoder de la musique au format soundtrack (mod/xm/s3m & co), il y a une partie qui s'occupe de l'interpolation des échantillons, histoire d'"améliorer" le son (ce format induit souvent ce qu'on appel des "clicks & pops" autrement dit des bruits statiques).
J'utilise différents algorithmes ("au plus proche", "linéaire", "cubic spline" et "fir sinc") et c'est ce dernier, très couteux en cpu (16 points sont calculés pour un échantillon) qui m'a fait tiqué.
En effet, j'ai tout bêtement lancé le gestionnaire des tâches pour constater que le cpu oscillait entre 2 et ... 12% !
Inconcevable pour moi, j'ai tout de même un Q9550@3.4 ghz, j'ose imaginer ce que ça donnerais sur un mono core (même si mon code n'est pas optimisé multi-core) ou avec un cpu @1ghz (oui, je me préoccupe de ces machines :) ).
Vient le temps de la réflexion : comment faire pour optimiser ce fameux code ?
Ca a été vite vu car il n'y a pas 30 000 façon de le faire :
- "penser" cpu : c'est à dire arranger son code pour faire en sorte d'être dans la logique de traitement du cpu (exemple : micro fusion, boucle déroulée, prefetch compliancy ...)
- utiliser le SIMD : j'ai déjà lu pas mal de sujer/code à ce sujet mais je ne l'ai jamais réellement utilisé, d'autant plus que je suis loin d'être un guru en assembleur.

N'écoutant que mon courage, la solution la plus viable à mon niveau est ... la seconde ! Oui, j'aime bien les challenges :p

samedi 1 novembre 2008

Demomaking : Kezako ?

Difficile de parler d'un thème lorsque celui ci est vaste, dispose d'une histoire et j'irais même jusqu'à dire qu'il s'agit d'un mouvement culturel au même titre que le hip-hop ou l'art modèrne.
Je vais donc tenter de décrire le démomaking par ces simples mots : il s'agit d'une animation en temps réel qui combine des effets vidéos associés à l'audio.
Ce courant est aussi vieux que l'informatique grand publique (milieu des années 80) et a permis a bon nombres de gens à s'essayer à la programmation.
Les machines ayant nettement évoluées depuis, les programmeurs ne suffisent plus et nous avons des graphistes (2d, 3d, bitmap ou raytracing) , musiciens (mao ou acoustique), scénaristes, designers ... bref, une sorte de mini équipe de développement de jeux vidéos.
D'ailleurs, bon nombre d'entre eux terminent dans ces studios (UbiSoft notamment) et des entreprises sont même créées par eux (Remedy ou plus récemment FurureMark).
Le but n'est pas lucratif, loin de la, tout est bénévole, certains ont même réussi à négocier du temps pendant leur heures de boulots (Chaos de Farbrausch par exemple) pour s'y consacrer, non, le but est juste simple : CREER !
Créer, c'est le maitre mot du démomaker : ce domaine vous interesse mais vous vous dite que vous n'arriverez jamais à faire une démo ou alors qu'elle sera tellement moche qu'on va vous jeter des pierres ? Que nenni ! Vous ne verrez JAMAIS un demomaker, un vrai, ricaner ou se retenir de rire, non, la plupart d'entre eux ont produits des démos qui étaient "pitoyable" graphiquement, à partir du moment ou il y a de création, peu importe ses qualités intrinsèques, l'objectif est atteint.
Il y a de nombreuses sections lors des "compétitions" car oui, il y a énorméments d'évenements où les démomakers se rassemblent pour montrer le fruit de leur travail, Scene.org est un site qui les répertorie, les démos limitées par le temps, d'autres par la taille de l'éxécutable final : 64 ko, 4 ko et même 256 octets !
Si j'en parle c'est juste pour vous montrer ce qu'on peut arriver avec énormément de talents :



Tout ça, dans 4 ko.

Liens utiles :

Vidéo d'un demomaker expliquant mieux que moi ce que je viens de dire : ftp://ftp.scene.org/pub/parties/2008/assembly08/vod/Seminars/628_demo_programming_for_beginners_h264_1856kbit.mp4
Demoscene TV : http://www.demoscene.tv/
Un site qui répertorie aussi les démos mais pas seulement : http://www.pouet.net/
Radio de la demoscene : http://www.scenemusic.eu/demovibes/

vendredi 31 octobre 2008

Sport : nouvelles chaussures

Bon, sans entrer dans le blog kikoololpt2r je raconte ma vie et je mime les raiders (twix pour les plus jeunes) avec mes doigts, c'est juste que je viens de quitter ces chaussures :


On en a vécu des choses : le goudron, les chemins, l'eau, la boue, l'asphalte ... Mais avec le temps, elle commence a accuser le poids des kms, environ 1500, ça ne peut plus continuer, je ne veut plus la faire souffrir.
C'est décidé : je la quitte, et pour de bon !

J'ai rencontré, pas plus tard que ce soir, une bien charmante chaussure que voici :


J'espère que cette fois, c'est la bonne et qu'elle m'accompanera aussi longtemps voire plus

lundi 27 octobre 2008

Musique : Erik Mongrain

Petite vidéo d'un mutant :



Ca s'appel le "AirTap", ça change du "Air Guitare" qui sert à rien ...

vendredi 24 octobre 2008

Informatique : Android devient OpenSource !

Il fallait s'y attendre, Google ne cesse de s'étendre et après avoir touché la publicité via Google Adsense, c'est maintenant les mobiles.
Cela n'est pas nouveau pour ceux qui suivent l'actualité informatique mais pour toucher ce marché, Google a créé sa propre plateforme incluant un système d'exploitation, des outils, logiciels, ihm et tout ce qui va avec sous l'appellation de Google Android.
Quelques mois apres la disponibilité de mobiles fonctionnant sous cet OS, Google a tout simplement ouvert le code source : tout y est, rien est caché, du bootloader (bootstrap plutôt) à l'API de haut niveau pour les développeurs ne désirant que proposer leur logiciels sur cet environnement.
Compter un téléchargement d'environ 2.1 GO, de 6 GO d'espace libre, de patience pour compiler le tout et en route pour vos modifications !
Ca change d'Apple donc profitez en :)




Lien : Code Source Google Android

jeudi 23 octobre 2008

Emulation : AmiKit

Les plus jeunes d'entre vous ne connaissent pas cette machine mais le simple fait d'évoquer son nom, l'Amiga, fera tendre les oreilles vers l'avant des geeks barbus trentenaires et plus.
Si j'en parle, ce n'est pas pour vous proposer un enième émulateur de la bête, WinUAE étant LA référence, non c'est pour vous parler d'AmiKit.
En effet, disposer d'un environnement Amiga émulé n'est pas ce qu'il y a de plus façile à mettre en oeuvre pour le néophyte, c'est pour cela que de nombreux bénévoles mettent à disposition des packs prêts à l'emploi pour disposer de tout ce qu'il faut pour revivre une experience unique, AmiKit est de ceux la.
Celui ci est tellement bien fait qu'il supplante allegrement tous ce que j'ai pu tester, il dispose d'office d'une image disque remplis d'applications, à jour qui plus est ainsi que de tout ce qu'un système d'exploitation doit avoir (navigateur internet, lecteur audio, vidéo, client irc, jeux, outils de programmation, démos cultes, modules cultes, outils de paramètrages tres nombreux et complets ...).
Sachez néanmoins que ce système impose d'avoir à disposition les disquettes ROM (KickStart 3.x et > ) ainsi que le CD d'installation d'OS 3.9.
Ce qui peut paraitre comme une contrainte n'en est pas une et permet aux personnes désireuses de s'y mettre de le faire en supportant ceux qui essaient de maintenir la flamme.
A ce titre, je vous invite à faire un tour chez Amiga Forever qui vend aussi son propre environnement mais la, le CD d'Amiga Forever 2008 pourra être utilisé par AmiKit lors de l'installation de celui ci, testé et approuvé par votre serviteur :)

samedi 4 octobre 2008

Jeux Vidéos : Nintendo DSi

Nintendo vient d'annoncer sa nouvelle console portable : la DSi. Voila, c'est fait, rien d'autre à ajouter.
Bon, je vais tenter de trouver des nouveautés :

- un peu plus fine,
- deux super capteurs vidéo de, tenez vous bien, 3 mégapixels ! Divisez le par 10 et vous avez le compte,
- un écran nettement plus grand, c'est simple, il passe d'un vulgaire 3 petits pouces à un gigantesque 3.25 pouces !
- un son de meilleur qualité dixit Nintendo (j'en doute),
- un slot pour carte SD (enfin une vraie nouveauté),
- navigateur internet, dictaphone, lecteur mp3,
- service DSi Shop pour dépenser les sous pour des jeux à télécharger qui vont surement annoncer une nouvelle ère dans le jeux vidéo (amateurs de jeux sur mobile, ayez peur !),
- succrage du port GBA.







Sortie le 01 novembre au pays des suchis pour 129 € et plus tard, tablez sur le printemps 2009 en Europe à pas 129 € mais surement dans les 179 €, enfilage inside.

J'ai hâte d'en apprendre plus sur la nouvelle Wii.

dimanche 28 septembre 2008

Chronique musicale : Wendy Carlos

Yopla :)
Histoire de changer, je me suis dit : et si je partageais avec vous les musiciens que j'apprécie ?
Etant plutôt hors circuit commercial, bon nombre d'entre eux ne vous diront absolument rien et pourtant ils sont souvent pionnier dans leur domaine et mériteraient beaucoup plus de considération.



Pour débuter, j'ai choisis Wendy Carlos : plus qu'une auteur/compositrice, elle aura marqué de sa pate le monde de la musique.
En effet, elle fut très tôt passionnée par ces machines : les synthétiseurs.
Prenant la place d'une chambre de 20m², ces engins la fascinait à tel point qu'elle entrepris ses propres recherches pour créer de nouveaux sons et même de nouvelles machines, aidée par des études en musique et en sciences passés à l'université de Brown.
Grâce à l'aide de Rachel Elkind, sa productrice, elle réussit à sortir son premier album avec ce titre :



Il faut savoir que nous ne sommes qu'en 1968 ! La force de cette musique (ce n'est pas l'original, pas envie d'être poursuivi ^_^ ) est d'avoir marié une musique que tout le monde connait avec des sons que personne n'a jamais entendu.
Wendy Carlos l'explique très bien car proposer des sons agressifs, "alien" n'aurait pas eu l'effet escompté.
Toujours à la pointe, elle avait déjà commencé à mixer 2 pistes stéréo avant tout le monde : c'est ce qu'on a appelé par la suite le Dolby Surround.
Sort l'année qui suit, l'album "The Well-Tempered Synthesizer", entièrement créé sur un synthétiseur Moog, qu'elle a d'ailleur aidé à fabriquer en ajoutant sa touche perso à çe magnifique synthé : le Moog Modular.



En 1972, "Sonic Seasonings" sort : il s'agit d'un double vinyle longue durée. Et pour cause ! Il s'agissait d'un projet experimental ayant pour objectif de représenter les 4 saisons, il y avait donc une et seule musique par façe, celle-ci étant une saison en particulier.
Ces musiques longues, calmes, limite hypnotique étaient encore quelque chose que personne n'avait jamais entendu : elle venait de créer un nouveau genre, l'ambiant.
Mais c'est surtout un an plus tôt que Wendy Carlos montra enfin tout son génie : c'est elle qui à créé la musique d'Orange Mécanique :



La encore, de la musique classique avec une qualité au niveau de la synthèse sonore encore améliorée mais surtout l'utilisation, pour la première fois, d'un vocoder ! (nous ne sommes qu'en 1971, ne l'oubliez pas)

En 1982, sort le film culte Tron dont elle fera la bande originale, rien que ça.
Je me répete mais encore une fois, en tant que précurseur, c'est la première fois que nous entendons des sons analogiques ET numériques!

Digital Moonscape sort en 1984, album 100% numériques et très planant.

Elle fera la BO du film "La belle et la bête" sortis en 1986 où elle utilisa la technique de l'intonation juste.

En 1987, elle sort "Secrets of Synthesis", une lecture de ses travaux où elle explique ce qu'elle fait et comment elle le fait.

Depuis 1998, ses compositions ont été remasterisés en haut qualité (20 bits) et sont toujours disponibles sur son site.

Vous l'aurez compris, Jean Michel Jarre semble n'avoir rien inventé à la lecture des compositions de Wendy Carlos, ce sont des gens comme elle et Robert Moog (décédé dans l'anonymat en Françe) que la musique avance réellement.

Outre son talent d'auteur/compositrice, elle a d'autres passions comme le dessin/peinture, les éclipses totales de soleil ou encore d'autres domaines experimentaux.

Il y a un dernier détail la concernant mais cela n'a aucun interêt d'en parler et n'enleve en rien tout le respect qu'elle mérite.

dimanche 21 septembre 2008

Insolite : Veejing

Vu sur PC Inpact, ce vidéo montage qui peut être assimilé a du veejing (vidéo dj'ing), ça démarre lentement mais une fois qu'on a compris le principe, on reste bouche bée par tant de créativité.

lundi 8 septembre 2008

Humour : Hello Geekette

Un petit site que j'invite tout le monde à visiter pour qui veut passer un agréable moment en visionnant la vie trépidante d'une geekette vivant avec un colocataire aussi geek que peut l'être François Bayrou :D
C'est assez bien fait, original, marrant et le jeux des acteurs est crédible, ça sent le vécu :p
Bon, être geek est aussi un plus car les références sont nombreuses.
Bon visionnage.

vendredi 22 août 2008

Musique : Ma playlist

Un petit billet pour vous faire partager ma playlist, en esperant qu'elle vous plaira :)

mardi 12 août 2008

Informatique : NVidia PhysX Pack

Amis geek(ette) de tout poil(ou pas), NVidia, toujours dans un soucis de service (marketing) nous propose un pack ainsi que des pilotes pour les GeForce 8/9 tirant partis de l'accélération physique matériel.
Pour ce faire, ce pack est censé montré tout le potentiel de leurs GPU pour mener à bien ce support matériel via un pack de carte pour UT 3, des démos technologique et même un FPS complet !
Bon, en même temps, cela est disponible depuis un moment mais pas ces derniers pilotes qui sont basés sur la dernière version des pilotes PhysX.
Force est de constater que les gains sont réels sans impacter les frames par secondes, CUDA (API GPGPU) prouve une fois de plus sa maturité la où AMD propose une API un peu plus disparate et une documentation loin de la qualité de NVidia.
Bref, ça vaut le coup d'essayer :)

Lien : NVidia PhysX Pack

High-Tech : tous des Casper ?

Je l'espère !
En tout cas, des scientifiques un peu fou (cliché un peu façile ...) sont sur une avancée technologique qui permettrait de renvoyer les rayons lumineux et ainsi de rendre invisible ledit objet.
Nous sommes encore loin de la cap de Harry Potter notamment à cause de contraintes budgétaires (le coût de la technologie permettant de produire un objet de la taille d'une pomme réfléchissante couterais des dixaines de millions de $) mais les scientifiques sont très confiant et pensent que dans une bonne dizaine d'année, cela serait faisable.
Les filles n'ont qu'à bien se tenir :o

Source : Clubic

mercredi 6 août 2008

Société : STUFF

Une petit lien qui prête à réfléchir.
Sans commentaire :)

dimanche 3 août 2008

Programmation : Windows SDK 2008

Bon, certains d'entre vous le savent déjà mais pour tous les autres, le SDK nouveau est disponible, il permet de tirer parti des dernières technologies (.NET 3.5 et Win32) pour développer sa killer app :)
Ca ne fait "que" 6 mois que c'est disponible mais bon, je roule en Java/PureBasic depuis, c'est juste que j'avais besoin de compiler une application qui en dépend (Open ModPlug Tracker) :D

Liens :

lundi 14 juillet 2008

Celt : codec ultime ?

Kezako le CELT ?
Il s'agit d'un nouveau codec audio. Bon jusque la, rien de bien nouveau sous le soleil mais j'ai écouté les échantillons proposés sur le site et ma foi, ça sonne plus que bien !
C'était un test subjectif mais les tests plus techniques ne font que corroborer mon ressentis.
Il explique tres bien sur son blog les fondamentaux de ses algorithmes, il est lui même étonné du résultat qui sont très encouragent surtout quand on voit la latence.
Bref, un codec à suivre de près.

Gamecube ... et Wii !

Pour repartir de plus belle, quoi de mieux qu'une bonne news bien grasse qui ferait augmenter le taux d'endorphine à tous les exités de l'émulation ?
Ca tombe bien car j'en fait partie et c'est ce qui m'est arrivé en regardant ça : c'est juste un émulateur Gamecube (ça existait déjà) et Wii !
Au début, je me suis dit qu'il n'allait faire tourner que des homebrews mais non, il y a bien quelques jeux qui tournent, pas à 100% mais Mario Party 7 et Starfox sont jouables néanmoins ce qui, pour une premiere version, est TRES prometteur.
Les captures sont mise à jour au fur et à mesure que les beta testeurs ... testent l'émulateur, vivement la release qui ne devrait pas trop tarder.
A noter que comme tout émulateur et à fortiori les émulateurs de console nextgen, une machine de combat sera vivement conseillée, un dualcore sera un minimum, ce genre de bestiole ayant plus besoin de puissance CPU que GPU, notamment en terme de fréquence.

Come back !

Et oui, me revoila :)
Apres un peu plus d'un an d'absence, j'ai enfin une vie normale, cela devrait me permettre, enfin, de tenir à jour mon blog et le rendre plus interactif.
Je dit ça car je viens de voire que j'ai eu des commentaires !! Je n'ai pas fait attention mais il est dommage de ne pas être notifié via mail lorsque quelqu'un pose une question sur son blog sur blogspot :(
Même si certains dates, je me doit de répondre à ceux qui m'ont posé des questions.
Bref, comme je l'ai dit, ce n'est pas un blog kikoolol où je ne ferait que raconter ma vie (donc exit le pourquoi de mon absence, on s'en fout), le plus important est que je vais essayer de partager sur des domaines qui m'interessent ... ou pas :D

vendredi 20 avril 2007

Emulation : PCSX2 0.9.3

Comme déjà dit dans ce ticket, PCSX2 est un émulateur de console PS2.
N'ayant pas vu de nouvelle version depuis un moment, j'ai donc fait un tour sur le site officiel et me suis aperçu qu'il en existait bien une mais pour Linux.
Bonne nouvelle pour les amis du pingouins (dont je fait partis) mais quid des utilisateurs de Windows ? Niet, nada, des clous :D
Je me suis donc amusé à télécharger le code source de la version Linux et ni une ni deux, me voila avec plusieurs instances de Visual Studio 20005 et de MingW, quelques minutes plus tard et quelques "#ifdef #endif" et une correction d'un "double not logique" sur une variable, je suis arrivé à construire une build 100 % fonctionnelle, si je peut dire ainsi étant donné que le code est toujours mis à jour.
La plupart des plugins ont été aussi recompilés excepté le plugin GS DirectX 9 qui provient de la version 0.9.2, l'émulateur à l'air assez stable mais n'a pas corrigé le problème que je voulais résoudre en voulant compiler cette nouvelle version dans le jeux Hokuto No Ken.
Si ma compilation perso vous intéresse, vous pouvez la télécharger ici (16.6 MO), j'ai fait en sorte qu'une simple décompression quelque part sur votre disque dur suffit à l'utiliser, pensez néanmoins à faire un tour dans les options des différents plugins si votre/vos jeux fonctionnent mal.

vendredi 13 avril 2007

Humour : le candidat qui vous ressemble

A l'approche de l'élection présidentielle, vous faites partis des 40 % d'indécis et ne savez donc toujours pas pour qui voter ?
J'ai la solution, ou plutôt, Canal+ à la solution, en effet, il vous suffit de répondre à 10 questions, très simples, et notre cher ppda national vous montrera le candidat qui vous ressemble.
Alors ne perdez plus une minute :)

samedi 3 mars 2007

Informatique : QEmuDo

QEmu est une machine virtuelle programmé par un maitre du code, Fabrice Bellard.
Ce logiciel permet de tester différents systèmes d'exploitations (windows, linux, solaris ...) issus de plusieurs architectures différentes (x86, ppc, arm ..), il fonctionne dans son propre environnement permettant ainsi d'éviter tout problème avec son système hôte (votre système d'exploitation).
Le problème de cet outil est qu'il s'utilise en ligne de commande, bon ce n'est pas compliqué à utiliser mais je sais qu'il existe de nombreux réfractaires, c'est la que QEmuDo pourra leur être très utile car il s'agit d'une interface graphique permettant de gérer QEmu et toutes les machines virtuelles que l'on utilise.
La force de QEmuDo est qu'il s'utilise sur n'importe quel navigateur web !
Son fonctionnement est ultra simple : il suffit de compiler et d'installer l'applet, ladite applet communique via le protocole VNC que QEmu supporte nativement pour récupérer le tampon vidéo de QEmu et ainsi avoir le visuel de sa/ses machines virtuelle(s) dans son navigateur préféré, simple et efficace !

QEmuDo en pleine action

jeudi 1 mars 2007

Programmation : utiliser SQLite avec PureBasic

SQLite est une bibliothèque écrite en C qui permet d'embarquer dans son programme la gestion d'une vraie base de donnée.
Elle n'a pas pour vocation à être utilisé dans un environnement avec des accès concurrentiels mais vise plutôt les applications qui ont besoin d'une gestion plus poussée des données sans passer par un serveur de base de donnée.
PureBasic est le langage que j'utilise quotidiennement (avec le C/C++) et il lui manque le support de cette bibliothèque. Je vous propose d'y remédier.
Rien de plus simple, il suffit d'installer un compilateur C comme PellesC, de télécharger la version C épurée de SQLite (pas le tarball), de créer un nouveau projet "bibliothèque statique" dans PellesC et d'y ajouter tout le contenu de l'archive de SQLite précédemment téléchargée sauf le fichier "tclsqlite.c".
Il suffit ensuite de se rendre dans les options du projet dans PellesC, dans l'onglet "Compilateur", mettez les informations de debug à "Aucune", la librairie d'éxécution à "Multi-Treads (LIB)", optimisations à "Vitesse augmentée", conventions à "__cdecl" puis de cocher les extensions Microsoft et PellesC.
Lancez la compilation, il ne devrait y avoir que quelques warning sans grande gravité, un fichier "SQLite.lib" sera généré dans le dossier "output" du projet.
Lancez maintenant l'IDE de PureBasic, copiez/collez ce code, il vous servira à tester que la lib fonctionne parfaitement avec le code PureBasic :


ImportC "crtmt.lib" ; <-- à mettre dans le root du projet PB
EndImport

ImportC "sqlite.lib"
sqlite3_close.l(db)
sqlite3_open.l(filename.p-utf8, db)
sqlite3_exec.l(db, sql.p-utf8, *callback, argument, *result)
EndImport

Define db.l, res.l

If sqlite3_open("test.sdb", @db) = 0
MessageRequester("DEBUG","db = "+ Str(db) )
If db
MessageRequester("DEBUG","OPENED" )
sql.s = "select * from ma_table"
sqlite3_exec(db, sql, #Null, #Null, @res) MessageRequester("DEBUG","sqlite3_exec = "+ Str(res) )
If sqlite3_close(db) = 0
MessageRequester("DEBUG","CLOSED")
EndIf
EndIf
EndIf
End


Il ne vous reste plus qu'à copier le fichier "crtmt.lib" qui se trouve dans le dossier "LIB" de l'installation de PellesC puis le fichier "sqlite.lib", précédemment compilé, à la racine du code source PureBasic, à noter qu'avec les dernières versions de SQLite, il faut désactiver le debugger.
Happy coding :)

vendredi 16 février 2007

Politique : la valeur travail

Et oui, il n'y a pas que l'informatique dans la vie !
En cette période d'actualité politique particulière, présidentielle oblige et comme je suis la politique depuis mon plus jeune âge (sans être militant), j'ai pensé que mon avis intéresserais quelques uns.
Et pour ouvrir cette nouvelle section thématique du blog, je vous propose cette vidéo :



On peut être contre ou pour son analyse mais j'ai trouvé qu'il y avait beaucoup de vérité, la valeur travail n'a plus le sens de celles qu'ont connu nos parents et cela est évidemment dû au chômage, toujours grandissant et donc je subit d'ailleurs lourdement les conséquences ainsi que de la vision des solutions à apporter à celui ci : penser à tout prix que seule la croissance règlera le problème du chômage, c'est faire fausse route.
Comme le dit le sociologue, on pensait déjà cela il y à 10 ou 20 ans, lorsque le chômage n'était qu'à 5 % et le constat d'aujourd'hui nous ramène à la réalité car la situation a empiré.
Le sociologue n'apporte pas de solution mais montre du doigt que les politiques se trompent sur la vision du problème et donc les solutions qui s'y rapportent.
En cette période d'élection présidentielle, il est important de bien peser le mot de chaque candidat pour faire le meilleur choix possible ou en tout cas faire le choix le moins mauvais.

lundi 12 février 2007

Jeux Vidéos : quand la wii stoppe une vie

L'histoire se passe aux États Unis, elle ne peut se passer que la bas d'ailleurs : une radio locale propose un jeux, boire un maximum d'eau, 25cl tous les 1/4 d'heure sans aller aux toilettes, le gagnant se verra offrir la toute dernière console de Nintendo, la wii.
Une jeune femme de 28 ans se dit que ça pourrait être sympa d'essayer de la gagner pour ses 3 enfants, problème, arrivé à 7 litres sans aller aux toilettes, elle abandonne à cause de maux de têtes, rentre chez elle et décède le lendemain. Pourquoi ? Intoxication par l'eau.
Et oui, ce qu'elle ne savait pas et comme tous les participants d'ailleurs, c'est que l'on peut mourir par une surconsommation d'eau et ça, les organisateurs le savaient et ont d'ailleurs fait signé une décharge à tous les participants qui n'ont d'ailleurs surement pas sût ce qu'ils signaient, trop concentrés par l'appât du gain.
Conclusion : 13 employés virés, aucune poursuite judiciaire possible à cause de la décharge signée et 3 enfants sans maman malgré l'alerte d'une infirmière qui les a alerté à mainte reprise des dangers.

dimanche 11 février 2007

Insolite : coup de gueule contre SNK !

SNK est pour beaucoup ce que Ferrari est à la voiture, une référence pour le monde des jeux vidéo !
Mais ce que je vient d'apprendre me laisse sans voix : Emu-France vient de faire la découverte que le jeux Metal Slug Anthology sortis récemment sur la console portable de Sony, la PSP, utilise des roms !
Bon, déjà, c'est limite du foutage de gueule car SNK disposant des codes sources, aurait pu faire l'effort de les adapter pour en faire un port en bon et du forme avec les optimisations/adaptations qui s'imposent ... mais ce qui est "drôle" c'est que les roms utilisées proviennent de ce qu'on appel des bootleg, c'est à dire des premiers dump des jeux d'arcades !
Un bootleg n'est qu'une première étape pour avoir une rom 100 % identique, ici, vu que SNK a pris les premières versions, vous avez un jeux avec tout ce qui manque de l'authenticité du jeux ainsi que des bugs éventuels.
Je veux bien admettre que SNK soit pris par le temps pour d'autres projets sûrement plus importants mais faire payer le prix fort (50 € tout de même) un jeux qui n'a demandé aucun effort, c'est juste de l'escroquerie.
Conclusion : boycottez ce jeux et installez MVSPSP, un émulateur NeoGeo, vous aurez tous les Metal Slug (sauf le 6) 100 % fidèles avec un bien meilleur rendu et le tout, gratuitement (je passe le caractère légal de la possession des roms ....

Informatique : KernelKit

Vous êtes développeur ? Vous travaillez sur de l'embarqué, sur des architectures autre que x86 (arm, ppc ...) ? Si oui, alors KernelKit est fait pour vous !
Il s'agit d'une énième distribution Linux mais cette fois ci destinée aux développeurs de tout poil car, en effet, elle inclue tout le nécessaire pour programmer et juste ça, exit les interfaces à la Beryl, les jeux et autres programmes totalement inutiles au programmeur, non, ici vous aurez de la uClibc (cross compilation), Valgind (debugger et profiler), KDevelop (IDE de programmation) etc ...
L'auteur y a ajouté QEmu, émulateur pc et système, et SkyEye, un autre émulateur pc mais plutôt axé ARM.
Bref, essayez le, ça ne coûte rien d'autant plus que, basé sur la dernière Knoppix, il existe en CD bootable.

mardi 6 février 2007

Informatique : Beryl

Titre volontairement laconique pour une projet qui risque de changer nos habitudes façe aux ordinateurs : alors que nombreux sont ceux qui font joujoux avec le Flip3D de Vista, d'autres, jouent avec Beryl. Qu'est ce donc ?
Tout simplement une alternative à Compiz, une surcouche logiciel au serveur d'affichage (xGL), en gros, il permet de manipuler les fenêtres en utilisant la puissance de notre carte graphique dans le but de créer des effets sur les fenêtres ou tout autre élément graphique comme le fait Vista justement.
Beryl est le fruit d'un différent de vision entre Compiz et certains de ses développeurs qui ont décidé de tout simplement créer le leur.
En l'espace de 6 mois, leur outil est arrivé à la version 0.2 qui, bien que pas parfaitement stable permet déjà d'être utilisé en production !
Pas convaincu ? Alors regardez ces deux vidéos, tout simplement bluffant, si le rythme du développement est maintenu, l'avenir proche risque d'être intéressant ... sous Linux car il n'existera (pour le moment) que pour les unix (Linux et tous les BSD) donc exit Windows ^_^



vendredi 2 février 2007

Informatique : le net et la censure

PC Inpact relaye une information de Reporters Sans Frontières qui met à jour les abus des gouvernements quant à la censure sur le net : nombreux sont ceux qui usent et abusent de leurs pouvoirs pour filtrer tout ce qui se passe sur le réseau des réseaux.
La Chine ou Cuba mais aussi des pays plus modérés comme l'Ethiopie n'hésitent pas à forcer ceux qui souhaitent s'implanter sur leur marché sous certaines conditions comme le filtrage sur Msn pour Microsoft ou le cryptage des données pour Cisco System.
Qui aura la technologie aura le pouvoir en quelque sorte ...

Informatique : neuf services de blog testés

Clubic vient de publier un excellent dossier sur les services de création de blog si, comme moi, l'envie d'en faire vivre un vous titille depuis un moment, c'est l'occasion de se renseigner vers ce qui correspond le mieux à ses aptitudes, envies et budget (certains hébergent moyennant finance).
Et parce que je le vaut bien, on me cite même dans ce dossier, serait ce le début du succès ?
Cela ne tient qu'à vous en étant présent ici en me faisant par de vos remarques ;)

Perso : les commentaires sont activés ^_^

Petite bourde de ma part lors de la migration de blogspot 1 à blogspot 2, je pensais que toutes les préférences étaient reportées lors de la mise à jour, c'est le cas pour 99 % des options sauf ceux concernant les commentaires qui ont été désactivés.
Je les ai réactivé, ça expliquait peut être ce sentiment d'être isolé du reste du monde, vous n'avez plus de raison pour ne pas me faire part de mes tickets ou de toute autre chose :)

mardi 30 janvier 2007

High-Tech : Vista est la !

Bon, c'est nouveau pour personne pas même aux plus débutants d'entre vous tant les médias nous ont inondé ce jours-ci concernant la sortie mondiale du tout nouveau, tout beau Windows Vista.
Alors, parce que je suis sur mon blog, je ne vais pas en parler de manière superflue du genre, "wouah" (troll caché inside) l'interface elle est trop belle, c'est fluide tout ça puis les icônes, sont toutes grosses et mimi, non, je vais plutôt vous dire d'emblée que contrairement à ce qui est dit, ce nouvel opus n'est pas une révolution mais une évolution. Et qu'est ce qui a évolué ? Et bien, le noyau, centre névralgique d'un système d'exploitation.
C'est ce qui ressort de mes différentes lectures dont les articles de présence-pc qui explique :

- le nouveau modèle de programmation des pilotes : la, on voit clairement que Microsoft vise la sécurité en évitant aux programmeurs d'écrire des applications/pilotes en mode noyau à haut privilège (ring0), une simplification du DDK (kit de développement des pilotes), ce qui n'est pas une panacée vu la complexité de mise en oeuvre, d'un tout nouveau mécanisme de communication entre pilote/applicatif et grand dieu que ça manquait et une mémoire mieux gérée,
- l'affichage et l'audio : nouvelle version de DirectX, nouveau modèle de pilote graphique et le Desktop Window Manager sont de la partie pour offrir la meilleure expérience graphique, il faut juste retenir que maintenant sous Windows, l'affichage se trouve sur une surface globale, chaque application à sa propre surface et sont indépendante, cela est rendu possible grâce au partage de calcul du processeur graphique qui sera d'ailleur dorénavant requis pour profiter de l'interface Aero (c'est ce qui rend jolis Vista).
Pour la partie audio et c'est une partie qui m'intéresse grandement, la, c'est la grosse déception, Microsoft ayant décidé de réécrire la pile audio depuis une feuille blanche pour y imposer sa vision : mélangeur audio 100% logiciel donc exit la puissance de ma X-Fi Elite Pro, exit l'EAX, exit toutes les technos audios (DTS, SPDIF, Dolby ...), cela aura eu pour effet de forcer Creative Labs de sortir tout une tambouille pour corriger le tir sous la forme d'une application appelée Creative Alchemy. Heureusement, l'OpenAL permet d'utiliser l'accélération audio mais bon ... pourquoi ne pas avoir proposé cela comme un choix et non comme une obligation.
- Le réseau et la sécurité : le meilleur domaine d'évolution, tout a été repensé, la pile tcp/ip réécrite, tout va plus vite, consomme moins, est mieux gérée et avec un maximum de sécurité et cela de manière totalement transparente.

Alors, qu'en penser, doit on passer tout de suite sous Vista ? Tout dépend de vos besoins : si vous êtes du genre à vouloir utiliser la toute dernière version d'Office, de vouloir utiliser votre dernière TV FULL HD à fond sur votre pc, pourquoi pas.
Ensuite, il faudra vérifier que votre machine soit assez puissante, comptez un bon AMD64 3000+, 1 GO RAM et une carte DirectX9 du genre Nvidia 7600GS pour en profiter de manière à peu pres convenable.
Si vous êtes joueur et pensez que vos jeux seront plus beau, ne rêvez pas, ca ne sera qu'un effet placebo, aucun jeux ne tire partis du tout nouveau DirectX 10, Crysis le fera mais il n'est pas encore disponible.
Il faudra aussi veiller à ce que tous les pilotes de votre ordinateur soient disponibles.
Pour le développeur (que j'essaye d'être), je pense y passer mais pas tout de suite, j'attend un meilleur retour et surtout, XP me suffit amplement pour le moment.
Je ne m'interdit par contre pas de le tester avant en virtualisation via VMWare pour vérifier la compatibilité de mes programmes et pour apprendre ces nouveaux modèles de programmations vantés par Microsoft.
Ah, oui, pour finaliser votre choix, il vous faudra choisir la bonne version de Vista, présence-pc vous aidera ici.

vendredi 26 janvier 2007

Humour : Steve Jobs parodié

PC Inpact partage une vidéo fort amusante, pour les anglophones malheureusement, jugez plutôt :



jeudi 18 janvier 2007

Emulation : Mame en 64 bits et sur Vista ?

Et oui, Windows Vista pointe le bout de son nez, il devrait sortir ce 30 janvier et certains s'amusent déjà avec, pour preuve, Aaron Giles (un des développeurs principaux de Mame) qui s'amuse avec son nouveau PC tout neuf à base de Core² Duo.
Il s'est mis de suite à passer de XP vers Vista mais tant qu'à avoir un CPU 64 bits, autant lui installer un OS qui va bien : Vista 64.
Ni une ni deux, le voila qu'il lance la compilation via Mingw avec les flags/paramètres qui vont bien, évidemment ça plantouille de ci de la mais il corrige tout ça à coup de patch et la compile se passe.
Il fait de même avec Visual Studio 2005 où la, il n'a rien à faire de particulier.
Il lance quelques jeux et il voit tout de suite des gains mais ça ne lui suffit pas, il veut connaitre l'ordre de grandeur, et ça donne ce joli tableau qui met bien en évidence plusieurs choses :

- le double core et l'option mt (multithreading) joue un rôle positif, peu importe le contexte,
- les jeux orientés 3D sont ceux qui en profitent le plus, il pense que cela vient du fait que les cpu 64 offrent plus de registres (en mode natif),
- les jeux utilisant le core mips sont ceux qui ont le plus de mal par contre, cela est du au fait que certaines instructions sont appelées sans cesse et maltraitent quelque peu la mémoire (ou plutôt son bus qui doit surement être bien occupé), il pense déjà à faire un recompilateur dynamique pour cette architecture.

Bref, va y avoir du sport pour lui en programmation full 64 bits et ce n'est pas nous qui allons nous en plaindre :)

lundi 15 janvier 2007

Insolite : l'enterprise pour geek :D

Tout le monde connait cette série Star Trek et son célèbre vaisseau, l'enterprise, et bien je suis tombé sur ce site qui propose ni plus ni moins de le reconstituer avec une seule disquette !


Il est pas beau mon vaisseau ?

lundi 8 janvier 2007

High-Tech : CES de Las Vegas

C'est aujourd'hui que le salon de la high-tech à Las Vegas à ouvert ses portes, de nombreux acteurs de l'industrie se sont donnez rendez vous pour montrer les avancées de leurs technologies et nul doute que nombre d'entre eux trouveront une place dans nos foyers.
A ce propos, Clubic nous montre via cet article une keynote de Bill Gates, CEO de son état de Microsoft jusqu'en 2008, où il explique que nous passons plus de temps sur nos pc qu'à regarder la TV.
Fort de ce constat, il explique que la convergence numérique est en route et que de nombreux produits (matériel, services) seront proposés.
Je ne manquerais pas de vous en faire part :)

programmation : gtk

En faisant un tour sur le site de programmation developpez.com, je n'avais pas fait attention à la nouvelle section dédiée à GTK, un toolkit ou, en français, un ensemble d'outils, pour programmer des interfaçes graphiques.
Mais celle ci se veut la plus complète possible et offre bien plus que cela comme des fonctions de synchronisation, de thread, des types portables, les listes, les hash tables, tout une panoplie de fonctions dédiées au dessins (blitting, buffer, colorisation, palette ...) et même l'accessibilité via Pango !
Entièrement programmée en C, bien que des bindings C++ (gtkmm), Python (PyGtk), Perl (perl::gtk) et même PHP (php-gtk) existent, elle est portable à l'extrême (Gtk fonctionne via framebuffer) et est utilisée dans pas mal de projets comme Avidemux, The Gimp ou encore XMMS, des projets pas complètement inconnus.

jeudi 28 décembre 2006

Insolite : Vous avez une petite faim ?

On continue dans les insolites avec un nouveau clone de Mc Donalds mais cette fois ci pour TRES grand mangeur, la preuve :


sandwich quadruple pontage

A noter que ce sont de charmantes hôtesses qui font le service et qu'une formule existe pour vous ramener du restaurant à votre voiture sur un fauteuil d'handicapé ... tout un programme.

Insolite : le nouveau "gainsbarre" est belge

Je suis tombé sur une vidéo qui m'a bien fait sourire, elle se passe évidemment de commentaire, enfin non car vous pouvez en laisser sur mon blog hein ;)

mardi 26 décembre 2006

Insolite : google adsense en avance sur son temps !

Vous avez surement remarqué qu'apparait 2 petites publicités en haut de la page de mon blog, elles sont censées me rémunérer mais en fait, je n'ai rien fait pour le moment pour et puis bon, ce n'est pas avec un visiteur qui est constitué que par ma personne que je vais devenir riche
Bref, j'ai remarqué, suite à mon post sur la PS3 blanche que Google Adsense (le panneau de pub) avait une longueur d'avance, la preuve, en image :



Et oui, nous sommes déjà aux processeurs 65 bits !

Jeux Vidéos : nouvelle PS3

PC Inpact nous fait savoir qu'une nouvelle PS3 vient de voir le jour, jugez plutôt :



Je vous arrête tout de suite : cela n'a rien d'officiel, ce n'est la que le résultat des membres du site PS3 Center qui se sont amusés à la peindre de cette couleur, pour le fun.
Enfin, pas vraiment car la console est déjà sur ebay et à atteint la coquette somme de 1525.01 $ au moment où je vous écrit.

samedi 9 décembre 2006

Perso : la drogue, c'est mal !

Parce qu'un blog est fait, à la base, pour parler de soit et bien je m'y colle car on vient, il y a à peine 2 minutes, de frapper chez moi non pas parce que la personne s'est trompée de porte mais ... pour acheter du cannabis !
Chacun fait ce qu'il veut mais frapper chez les gens, à l'improviste et à une heure assez tardive (en temps normal, je suis déjà couché), je trouve ça limite mais ce qui m'a le plus frappé c'est l'aspect des deux protagonistes : ils avaient l'air perdu, triste, limite en manque alors qu'il y a un débat à ce sujet et vraiment près à n'importe quoi ...
Je trouve ce genre de comportant vraiment affligeant, tomber si bas pour juste un morceau de stupéfiant qui va leur procurer du plaisir pendant un laps de temps comme s'il n'existait pas d'autres activités normales pour en avoir.
Bref, chacun est libre de se droguer ou pas mais pas d'embêter les gens avec ce genre de soucis.

vendredi 8 décembre 2006

Jeux Vidéos : Oui !

Ou plutôt, Wii, la nouvelle console de Nintendo, est enfin sortie :)
Point de révolution technologique, il s'agit d'une simple mise à jour de la Gamecube mais au niveau du gameplay, on entre dans un nouvel univers et tout ceci grâce à sa fameuse manette avec détecteur de mouvement : vous voulez jouer au golf ? Et bien, il faudra maintenant tenir la manette comme une club !
Vous voulez ouvrir une porte ? Il vous faudra maintenant tourner la manette comme si vous tourniez l'ouverture d'une porte :D
Vendue à 250 €, elle a déja rencontré un vif succès aux USA et au Japon et c'est déjà bien partis pour l'Europe.
Alors que la PS3 offre le nextgen en terme de puissance, on ne peut pas dire qu'elle ait rencontré le même succès, peut être à cause de son prix (500 et 600 €), du manque de jeux intéressants et qu'elle ne propose finalement pas de nouveaux challenges de jeux.
Comme quoi, les joueurs (les vrais, pas les fanboys) ne s'y sont pas trompés et se tournent tout naturellement sur ce qui fait le succès d'une console : ses jeux.

lundi 4 décembre 2006

Programmation : raccourcis dans le menu

Je suis en train de réécrire un unlocker de fichier (cf ceci si vous ne savez pas ce que c'est) qui fonctionne à peu pres et j'en étais rendu à gérer le menu qui devrait apparaitre lorsque l'utilisateur doit faire un clique droit sur un fichier/dossier.
Je pensais à une simple écriture dans la base de registre comme je l'avais déja fait mais en parcourant CodeProject, je suis tombé sur ça : une classe permettant de l'ajouter de manière persistante ... ou dynamique grâce à la technologie COM (Component Object Model) via l'interfaçe IShellLink.
Ayant d'autres priorités, j'ai donc décidé de l'implémenter et en quelques lignes de codes, j'ai pu avoir mon jolis menu qui permettra à tout un chacun d'unlocker tout fichier/dossier par un processus un peu trop à son aise sur l'accès aux fichiers.

High-Tech : vous avez 800 € ?

Et vous ne savez pas quoi en faire ? Envoyez moi un chèque à l'ordre de ... euh non, ce n'est pas ça
Plus sérieusement, Dell fait une promotion sur son écran 24" qui a une excellente réputation : belle dalle, connectique complète (dvi, hdcp, svideo, composite ...), hub usb, ajustable en hauteur, lecteur de carte 9 en 2 et toute la garantis Dell (sav sur site, garantis 3 ans).

A noter qu'il vous faudra une bonne carte vidéo si vous souhaitez jouer avec car cet écran est FULL HD (1920 x 1200).

lundi 27 novembre 2006

High-Tech : antivirus matériel

Le National Institute of Advanced Industrial Science and Technology vient de mettre au point une puce jouant le rôle d'un antivirus !
Selon Eiichi Takahashi, le chef de projet, la puce pourrait se trouver dans le commerce d'ici 3 à 5 ans car elle est basée sur un circuit programmable FPGA qui est encore soumis à des brevets pour quelques années encore.
Une fois ce brevet levé, le coup de production sera bien moindre et pourra dès lors intéresser des industriels voire des gouvernements.
Personnellement, je trouve l'idée intéressante mais bien que la puce permettra de décharger le processeur central, la difficulté reste la mise à jours de la puce : certes, elle est en FPGA donc reprogrammable mais qu'est ce qui pourrait arrêt un pirate ou un virus de reprogrammer cette puce pour, par exemple, vider ou remplir de donnée sans intérêt (signature du même virus par exemple) car le FPGA est tres utilisé et du coup, il est facile de l'exploiter car ses spécifications sont connues.
Quand bien même, il y aurait des données propres, il y aura toujours moyen d'y avoir accès car pour stocker ses propres données il faut forcément rester dans les spécifications de base du FPGA (les programmeurs comprendront :-p).
Bref, tant que cette problèmatique ne sera pas résolue, je vois mal le succès d'une telle chose.

MAJ : PC Inpact nous informe que la Thaïlande vient d'annuler sa commande définitivement, cela suite au trouble politique qui règne dans ce pays ...
Encore une preuve qu'un gouvernement militarisé n'a à offrir que plus d'oeillères qu'il n'y en a déjà.

Web : l'OLPC en action

L'OLPC est le nom de l'ordinateur à 100$ qui a germé dans le Media Lab du MIT.
Il y a eu beaucoup de réactions au début, souvent négatives, remettant en cause la faisabilité d'un tel projet, pire, du réel intérêt de la chose, Intel a même proposé un ordinateur alternatif ... pour 400$, somme tout simplement énorme pour un ordinateur visant les pays en voie de développement car le but de l'OLPC consiste à équiper ces pays en ordinateur leur permettant ainsi une ouverture sur le monde, d'apprendre à penser par eux même bref, les utopistes diront que l'image est belle mais irréalisable.
Le temps à passé, le MIT a toujours continué à travailler sur ce projet, d'autant plus que quelques pays ont déjà passé commande, le Brésil ayant récemment confirmé la sienne et ces pays seront ravis d'apprendre que l'interface homme machine (gui) finale est au point !
Basée sur une Linux Fedora, elle se veut simpliste au possible car n'oublions pas que les utilisateurs seront des enfants dans la grande majorité mais simpliste ne veut pas dire vide de tout intérêt et il faut dire que malgré la puissance du portable, tout y est : internet, bureautique, jeux, le sans fil et surtout un écran LCD de qualité et résistant à des utilisations extrêmes.
Vous pourrez vous faire une idée de la chose en visionnant cette vidéo.
Cela me fait penser à une parole de Mahomet (oui oui, celui de l'Islam tant décriée, on en reparlera surement) a dit : "Assiste ton frère, qu'il soit oppresseur ou opprimé."

samedi 25 novembre 2006

Emulation : PCSX2 0.9.2 R2

Qu'est ce que l'émulation ? Cela permet à des programmes d'une machine donnée de fonctionner sur une machine différente : jouer à des jeux super Nintendo sur son PC par exemple.
Je vais vous parler aujourd'hui de la possibilité de jouer à vos jeux Playstation 2 sur votre PC grâce à PCSX2 dont une nouvelle version majeure vient d'être mise à jour : majeure car contrairement aux anciennes versions, la nouvelle permet de jouer à beaucoup plus de jeux à pleine vitesse, sans problèmes graphiques et avec le son de surcroit.
Mais pour cela, il vous faudra répondre à deux critères importants : disposer du bios de la machine, je laisse votre esprit de recherche faire ce travail, et avoir une machine vraiment puissante.
Non pas qu'il faille disposer de la dernière carte graphique Nvidia 8800 GTX mais plutôt du dernier Intel Core² Duo X6800 car cet émulateur est tres dépendant du processeur central.
J'ai évidemment pris un extrême mais à partir de n'importe quel processeur dual core, l'émulateur permet de découvrir un certain plaisir de jeux sur bon nombre de titres car, oui, le programme est fortement optimisé dual core.
Sachez toutefois qu'il reste beaucoup à faire pour que la console soit totalement émulée, émuler une machine aussi complexe que la Playstation 2 est loin d'être une partie de plaisir ... sauf quand on est programmeur :)

Web : Netvibes

Netvibes ? Qu'est ce dont ?
Et bien c'est un site qui risque de faire rapidement partis de vos favoris !
En effet, ce site, entièrement programmé en Web 2.0, terme purement markéting spécifiant l'utilisation de l'Ajax, un excellent langage de programmation, vous permet de créer votre propre page d'accueil de manière totalement dynamique et modulaire : le site dispose de module comme la météo, la bourse, les actualités, guide tv etc ... que vous pourrez placer à votre convenance sur un espace de travail, espace qui est lui même composé d'onglet.
Ainsi, plutôt que d'avoir une seule et unique page chargée, lourde à afficher et où une barre de défilement serait nécessaire, vous pourrez créer vos onglet par catégorie et y placer vos modules.
Mais ce n'est pas tout car en plus de disposer de ses propres modules, il permet aussi de récupérer vos fils RSS ! D'ailleurs la fondation Mozilla ne s'y est pas trompé et l'a intégré dans ses préférences, ainsi, il vous sera possible d'agréger tout fil RSS sur Netvibes le plus simplement du monde depuis FireFox 2.0.
Enfin, si vous savez programmer, une API (interface de programmation) est disponible pour créer vos propres modules.
Essayez le, il n'y a aucune publicité sur le site, tout est gratuit et vous pourrez même récupérer votre page Netvibes depuis n'importe quel ordinateur en vous inscrivant sur le site :)

3D : synthèse pour les curieux

Vous aimez la 3D mais vous confondez souvent les termes, vous ne comprenez pas ce qu'un ROP vient faire dans un processeur graphique ou vous êtes juste curieux ?
Alors lisez cet article, il fera le point sur le fonctionnement du pipeline de nos chers GPU, vous pourrez ainsi briller en société :)

vendredi 24 novembre 2006

Juridique : fini les jeux vidéos en France ?

xbox-mag nous informe qu'une loi inquiétante risque d'être votée par l'assemblée nationale : dans le cadre de la loi sur la prévention de la délinquance, cette loi instaurera un cadre pour tout produit numérique ayant des scènes de violence.
Cela va donc du film au documentaire en passant ... par le jeux vidéo !
Car même si nous ne pouvons pas être foncièrement contre sur le fond ni même sur la forme car il ne s'agira aux éditeurs que de poser une signalétique plus précise sur le contenu, la loi permettra au ministère de l'intérieur d'interdire purement et simplement les produits qu'elle jugera elle même choquants, signalétique ou pas !
Tout le problème est la car plutôt que d'éduquer les enfants faibles ou influençables à faire la part des choses entre le réel, le virtuel, le bien, le mal, nos chers ministres ont une fois de plus préféré la simplicité en légiférant sur un sujet qu'ils ne maitrisent absolument pas.
Et c'est encore la créativité, la liberté qui vont encore en prendre un coup ...

jeudi 23 novembre 2006

cryptage : c'est la fin !

Et oui, c'est fini, vous pouvez avoir peur, acheter sur internet en toute sécurité fera partis de l'histoire : Jean Pierre Seifert, mathématicien allemand de son état, à trouvé une technique lui permettant de casser toutes les protections en quelques secondes, quelque soit la méthode de cryptographie.
Sans entrer dans les détails, sa technique consiste à utiliser une spécificité des processeurs, à savoir la prédiction de branchement (et pas de calcul comme avez pu lire cette news ailleurs) car selon telle ou telle action, le processeur peut en déduire quel opération de code (opcode) à utiliser pour les prochains cycles.
Comme la majorité des processeurs disposent de cette spécificité, la technique est exploitable sur tout ordinateur mais relativisons la chose car pour en tirer partis, il faudrait créer des logiciels dédiés, ce n'est pas dur en soit mais les déployer, l'est un peu plus, en tout cas, pour tout ordinateur ayant un minimum de sécurité (firewall, antivirus, patches ...).
Cette technique devrait être montré (on appel cela un "proof of concept") ce février 2007 lors du salon de la RSA à San Francisco.
Affaire à suivre :)

mercredi 22 novembre 2006

Programmation : foo_dsp_xbass

Voila, suite à un mail que j'ai reçu et à Kivlov (^_^), j'ai mis à jour mon plugin de renforcement des basses pour foobar2000.
Tres façile à utiliser, il n'y a que la fréquence de coupure à régler, le plugin fait le reste, la preuve :



Il peut être téléchargé ici.

Demande d'emploi

Et oui, mon précédent post indiquait un peu mon humeur, cela vient du fait que je suis sans emploi depuis le mois de mars dernier ... je cherche un emploi dans les secteurs informatique suivants :

- technicien informatique : très forte expérience, je suis à jour aussi bien au niveau matériel que logiciel, je peux dire, en tout modestie, maitriser ce domaine,
- développeur d'application : autodidacte, j'ai appris le c (bonnes connaissances), c++ (les bases de l'OO), le visual basic (maitrise), le purebasic (maitrise, peu connue mais à forte valeur ajoutée), php/mysql (les bases) ... je peux me mettre à peu près à n'importe quel langage, j'apprends TRES vite et peut le faire en dehors du travail.
Je maitrise la création de gui via les winapi ou via gtk, maitrises des libs audio (ogg vorbis, mpglib, flac, mpc, directsound ...), connaissance en traitement du signal (filtres iir, fir, fft, biquad ...), c'est le secteur que je vise en priorité actuellement,
- formateur informatique : 2 ans et demie comme formateur pour adultes au Greta m'ont permis à être tres didactique et patient,
- technicien hotline : mon expérience de formateur m'a appris l'esprit d'analyse, à être objectif et à aller rapidement à l'essentiel,
- administrateur réseau : j'ai aussi administrer le réseau informatique du Greta (environ 50 postes sous un environnement hétérogène (win 98/2000/nt/nt server), installation d'antivirus en mode réseau (serveur --> client dispatché), création de programmes d'automatisation (batch, visual basic),
- vendeur informatique : expérience de vendeur informatique dans le groupe Géant Casino puis blanc/brunc et ensuite téléphone portable,
- commercial informatique : ma dernière expérience en tant qu'entrepreneur (j'étais associé dans la création d'une entreprise informatique) m'a permis d'appréhender la relation clientèle professionnelle, de travailler sous pression, de toujours satisfaire les exigences des clients,
- développeur freelance : si vous avez un projet de logiciel, quelque soit le système d'exploitation, un devis pourra être établis selon votre cahier des charges et de vos exigences.

La liste n'est pas exhaustive, je suis libre de suite et mon CV est disponible sur simple demande.

De retour :)

Non, je ne suis pas mort, certe il n'y a pas eu de mise à jour depuis mars dernier mais de grosses difficultés personnelles ne m'ont pas permis de continuer à blogger.
Ceci dit, bien que le moral soit toujours aussi bas, je vais faire en sorte de continuer à le mettre à jour plus souvent, pour ceux que ça interessent évidemment :)

lundi 13 mars 2006

libspc en stand by

Et oui, j'ai décidé de mettre de côté cette librairie. Pourquoi me direz vous ? Et bien tout simplement parce que je ne comprend pas (pour le moment) pourquoi je n'ai pas de son, enfin si, mais loin de ce que je devrais avoir (son ralentis, échantillonage faible avec de l'écho).
Mais une mauvaise nouvelle en apporte une bonne : ca me laisse un peu de temps libre pour en commencer une nouvelle, et pourquoi pas libflac ?
Allez, c'est partis ^_^

mercredi 8 mars 2006

Un petit lien sympas :)

Un petit passage pour vous parler du blog d'un ami, tres bien fait et bien écrit, il mérite le coup :)

lundi 6 mars 2006

Un peu de détente musicale

Je me suis dit que ce serait bien que je vous fasse partager quelques liens de radio internet (flux shoutcast/icecast pour être correcte) :

- OC Remix : d'excellents remix de musiques de jeux bien connus comme Megaman, Zelda, Sonic ou encore Breath Of Fire, la qualité des remixes en surpendra plus d'un,
- Slay Radio : des remixes exclusivement dédiés aux jeux Commodore 64, plutôt orientés électro bien que l'on puisse retrouver du symphonic ou du metal (Machinae Supremacie), la aussi, les compositions sont de belles factures, certains utilisent même la carte son originale du C64 (voire ce site) dans leur ordinateur pour retrouver la chaleur des sons d'antant,
- Nectarine Radio : point de remix sur cette radio, que de l'original, dans toutes ses formes, l'on pourra retrouver aussi bien des musiques issues de l'Amiga que de l'Atari ST, du C64, 800XL ou encore des dernières démogroupes du moment (je vous parlerais plus en détail de la scène démo).

A noter que pour écouter ces radios, il vous faudra un lecteur audio qui soit à même de les supporter, le plus célébre, Winamp, le fait à merveille : un simple clique droit sur le lien, copier l'adresse du lien et CTRL + L suffit pour coller les liens que je vous ai proposé.
Pour les amateurs de Foobar2000 0.9 (qui fera partis lui aussi d'un post à venir), un CTRL + U vous guidera tous droit vers une boite de dialogue vous demandant l'adresse internet à lire.
Comme toujours, on aime les musiques que j'écoute ou on aime pas, faites le moi savoir en laissant un petit commentaire ;)

Musiques SPC

En attendant que la libspc soit prête, vous pouvez avoir un aperçu de ce que cela donne en telechargeant des centaines de musiques mises à disposition, gratuitement, ici.
Pour la lecture, je conseille l'excellent Audio OverLoad.
N'hésitez pas à me faire part de vos réactions en me laissant un commentaire :)

libspc : c'est partis !

Et oui, étant donné que la libmodplug est finie, je commençais à m'ennuyer.
Suite à un topic sur le forum de PureBasic, je me suis dit que ce serait sympas de l'aider :)
Et me voila partis à la recherche de la meilleur librairie de reproduction des SPC.
Mais qu'est ce qu'un SPC ? C'est tout simplement le format de fichier produits par la ... Super Nintendo ! Oui oui, celle la même, celle qui a fait chavirer le coeur de nombreux adolescents prépubères dont je faisait partis.
Enfin, format, pas vraiement, car pour lire ces fichiers, il faut carrément émuler le processeur de la snes (un 65c816) et le processeur sonore de la console, le fameux SPC700, une merveille de technologie aussi merveilleuse que dure à émuler.
Ma quête m'a dont menée à SNES APU, une lib codée à 90% en assembleur x86 (logique) et disposant d'une petite API quelque peu bizzare à mon gout.
J'ai donc repris le codebase de libmodplug pour y intégrer cette librairie et me suis confronté à pas mal de problèmes de compilation, essentiellement dûs à des sauts trop loin pour le compilateur nasm. (un simple "near" suffit à régler cela)
Mais même apres ça, ça ne voulais pas linker à cause de fonctions non résolues : en effet, l'API ASM exportait les fonctions avec un underscore alors que l'API C n'en voulait pas.
J'ai passé pas mal de temps à vouloir recoder toute la librairie pour supporter nasm jusqu'au moment où je m'aperçois ... que cela a déja été fait :-p
Un coup de flag -DSTDCALL dans la lib et dans le préprocessus de compilation de l'API C pour exporter en STDCALL et c'en était fini de tous ces traquas.
Prochaine étape : implémenter, grosso modo, l'api pour lire correctement une musique, une fois ceci fait, faire en sorte de gérer plusieurs instances de lecture comme pour la libmodplug.

lundi 27 février 2006

libmodplug : c'est fini

Et oui, c'est fini, c'est triste ... enfin, non, la bêta est finie, pas libmodplug :-p
En effet, j'ai retravaillé dessus de temps en temps et j'estime que la lib est suffisamment stable pour être utilisée en production.
La lib a donc finalement pris la forme d'une DLL car le problème du buffer vide n'a jamais pû être résolu et semble provenir de PureBasic lui même.
Un petit screenshot de l'exemple fournis avec la DLL :



Ah oui, j'oubliais, la lib peut être téléchargée ici.

Et oui, je suis toujours vivant :)

Non pas que j'ai oublié mon blog mais suite à un crash hd, j'ai perdu le mot de passe de mon blog, étant donné qu'il a été généré et que la récupération n'a jamais fonctionné auprès de blogspot, je n'ai donc pas pu donner signe de vie.
Mais j'ai essayé tout à l'heure, à tout hasard, et ho, miracle, ça a marché ! J'ai pu, enfin, redéfinir mon mot de passe.
C'est repartis comme en 14 comme on dit :D

jeudi 2 juin 2005

Demande d'emploi

Et oui, quitte à faire un blog, autant qu'il me soit utile :D
Je suis donc à la recherche d'un emploi, évidemment dans le secteur de l'informatique, plus particulièrement la programmation.
Mes compétences dans ce domaine (résumé tres succint) :

- Langages C/C++/VB/PureBasic avec possibilité d'apprentissage d'autres langages assez facilement (Python/Perl, Java, C# ...),
- Spécialisation dans la programmation d'interface graphique via les Win32 Api, Gtk/Gdk/Glib,
- Spécialisation dans la programmation d'application audio (effets DSP, bibliothèque de décodage, de compression ...).

Je peux aussi travailler en freelance et étudie toute proposition dans tous les domaines d'application.

Outre la programmation, je peux aussi travailler comme technicien informatique (3 ans d'experience), formateur (2 ans et demie d'experience), hotliner, pigiste, animateur tv ...
N'hésitez pas à faire vos offres dans la région des Pays De La Loire.

Plus d'informations et CV sur simple demande à KarLKoX@gmail.com

FreeSoundEditor

Je ne vous l'ai pas encore dit mais je bosse sur un projet collaboratif appelé FreeSoundEditor ( http://www.freesoundeditor.com ) : comme le nom le laisse supposer, il s'agit d'un éditeur de son.
Son but est de promouvoir le langage PureBasic mais aussi de proposer une alternative, gratuite, aux mastodontes que sont SoundForge, Goldwave ou encore WaveLabs.
Nous n'avons pas la prétention de pouvoire les dépasser mais nous avons de grandes ambitions : programme léger, rapide, évolutif (plugins), modulable (tout pourra être paramettré, jusqu'aux moindres petits détails), ouvert (le code sera sous licence GNU GPL).
A l'heure actuel, seuls les fichiers wavs sont supportés mais j'ai déja dans un coin de mes disques dur le support des MP3, Ogg Vorbis, Flac, AAC/MP4, OptimFrog, Speex et SndFile, tout ça, en lecture, le support en écriture devrait arriver tres prochainement.
Quelques filtres sont aussi opérationnels, le rééchantillonage (linéaire), les fonctions basiques de copier/couper/coller sont aussi implémentés, le tout dans une interfaçe MDI (Multiple Document Interface).
Je vais prochainement ajouter le support des plugins VST, ce qui ajoutera un plus non négligable.
Préparez vous donc à voire des WIP (Work In Progress) des mes nouvelles aventures :)

Constitution

Je ne vais pas trop faire de politique mais je pense que les français n'ont rien compris : on ne leur à pas demandé s'ils étaient content de la politique intérieur mais de dire oui ou non à un traité constitutionnel, les deux étant totallement distints mais bon, c'est le peuple qui gouverne ... Dommage d'en arriver à cet êxtreme.