vendredi 14 mai 2010

Musique : le Chill-Out

Ça m'a pris comme ça, j'ai envie de parler d'un genre de musique que peu de gens connaissent : le Chill-Out. Qu'est-ce dont ?
On pourrait le résumer à de la musique planante, beaucoup en parle comme du Lounge/Psybient mais pour moi, c'est bien plus que cela.
Il existe de nombreux artistes qui en ont fait leur spécialité, dans ceux la, il y en un qui montre à quel point le Chill-Out ne peut être résumé qu'à de la musique qui endort (musique d'ascenseur diront les mauvaises langues) : il s'agit de Shpongle.
Le titre qui l'a révélé au grand public est celui-ci, issu de son 1er album sorti en 1998, "Are You Shpongled ?" :



Tout de suite, cela n'a rien à voir avec de la musique d'ascenceur !
Bien au contraire, la musique commence par poser une ambiance, mystérieuse pour ensuite inclure progressivement la mélodie principale puis la rythmique avec une sorte de morphine rythmique qui permet d'amener le tout de manière très fluide.
Il faut une très grande maitrise pour arriver à ce type d'arrangement, Shpongle est d'ailleurs très au fait du domaine traitement du signal.
De très nombreux sons ethniques sont utilisés comme la flûte.

Dans son deuxième album, il récidive en 2001 avec cette musique, "A new way to say hooray" :



L'intro est mémorable, toujours avec cette maitrise de la technique, du son, des effets, des samples et bien sûr de ces sons ethniques qui se marient si bien avec une rythmique très travaillée.

En 2005, son album "Nothing Lasts... But Nothing Is Lost" sort en 2005, il représente différents état de conscience lorsque l'on rêve :



La par contre, changement de style, beaucoup plus rythmé, teinture latino, montrant la encore une fois une maitrise absolue du mélange de différentes rythmiques, ambiances, sons dans une même musique : le mix est absolument prodigieux !

En 2009, son dernier album "Ineffable Mysteries from Shpongleland" offre la quintessence d'une maitrise absolue, jugez plutôt :



Rythmique "déstructurée", sons électro qui tombent toujours pile au bon moment puis atmosphère plus grave, habillage avec des sons très bien "gate-és" pour finir avec un duo improbable de guitare sèche et de rythmique Dub.
A noter que quelques morceaux ont été fait conjointement avec Raja Ram qui est juste le Dieu de la PsyTrance vu qu'il a créé ce style, j'en parlerais ultérieurement.

Je ne vous ai parlé que de Shpongle pour le moment, surement parce que j'adore vraiment ce qu'il fait, d'autres artistes méritent tout autant qu'on parle d'eux.
Par exemple, Cell :



Là, on revient aux fondamentaux, à ce qu'est originellement le Chill-Out.
Il y a aussi Aes Dana :



Tout comme Cell, la aussi, musique très planante, accompagnée d'une voix féminine magnifique.

Je n'oublie pas Zero Cult :



Un peu plus rythmée, Zero Cult se rapproche par moment à Shpongle, il n'hésite pas à faire des mélanges improbables, le tout arrangé de main de maître.

J'ajoute aussi Tripswitch :



Très reposante la aussi.

Vibrasphere fait aussi parmis des artistes que j'aime bien :



J'ai mis volontairement cette musique pour montrer qu'on peut faire reposant et rythmée, elle n'est cependant pas représentative de ce qu'il fait en général.

La liste est longue : Bluetech, Shulman, Entheogenic, Gaudi, Asura ...

Vous le voyez, il y a de nombreux artistes, tous ayant leur conception du Chill-Out.
J'espère que ce bref aperçu vous donnera l'envie d'en savoir plus !

mercredi 12 mai 2010

Vidéo : Fard

Restons dans le mystère, je ne décrirais donc pas cette vidéo.

jeudi 29 avril 2010

Programmation : Visual Studio 2010 est disponible

Programmeurs(ses ?) à la solde de Microsoft, le Saint Graal est disponible, vous savez déjà de quoi je parle vu qu'il est dans le titre
Cela dit, il faudra être abonné MSDN pour en profiter, oui, la vie est dure.
Si vous faites partie des heureux à pouvoir en profiter, vous pourrez prendre connaissance des améliorations pendant le téléchargement de la bête.
A notez que d'autres outils tout aussi majeurs arrivent aussi en version 2010 : Office, MS Projet, SharePoint, Visio et ForeFront.
Amusez vous bien et bon code !

Film : I'm Here, The Movie

Pas de ticket depuis un moment mais si j'en créé un maintenant c'est pour vous faire partager ce cours métrage, croyez moi, il vaut son pesant de cacahuète mais attention : il est réservé aux 5000 premiers internautes, faites vite !


samedi 13 février 2010

High-Tech : Réalité augmentée

Bonsoir !
Cela faisait un petit moment que je n'avais pas posté, c'est maintenant corrigé avec ce billet qui parle de la réalité augmentée. De quoi s'agit-il ?
Tout simplement du mariage entre le réel et le virtuel, ou plutôt, de l'interaction mutuelle de ces deux mondes.
De nombreuses vidéos trainent à ce sujet, toutes plus intéressantes les unes que les autres, certaines sont bluffantes mais sont pour la plupart soit expérimentales soit gadget.
Il en est un qui est bien au delà de tout cela et compte pousser le concept à un niveau que personne n'a encore atteint, encore faut-il qu'ils y aient pensé.
Cela se passe dans cette vidéo qui se passe de commentaires :



PS : n'oubliez pas d'activer les commentaires en français.

jeudi 17 décembre 2009

High-Tech : Robotique

Vu au gré de mes surfs :



Je suis tombé sous le charme : en plus de l'aspect kawai, la prouesse technologique n'est pas à occulter, l'effort d'intégration dans un si petit objet force le respect surtout quand c'est l'oeuvre d'un passionné :)

Sport : Méthode R2PH

Vous n'êtes pas sans savoir que je suis amateur de sport, en faite, de course à pied (après environ 13 ans de karaté).
Je traine sur le forum "course à pied" sur HFR ainsi que sur Athlète Endurance (bien que cela fait un moment que je n'y suis pas retourné).
Véronique Billat a récemment participé à un forum à Limoge, j'ai essayé tant bien que mal de trouver quelqu'un prêt à y aller avec moi ... en vain.
Bref, il se trouve qu'un des fondateurs du site Athlète Endurance (Jean Pierre Monciaux) a réussi à créer un partenariat avec la célèbre Véronique Billat !
Cela a déjà commencé à porter ses fruits et elle nous donne rdv le 02 janvier 2010 sur son site.
Pour ma part, rendez vous est pris !

lundi 30 novembre 2009

Humour : Les doigts ou la queue ?

Que dire ... rien, regardez d'abord :



Je précise que ce n'est pas un fake et que c'est réellement passé à la tv chinoise, le traducteur n'ayant pas vu la vidéo au moment de la traduction, le résultat est quelque peu ... original.
A noter que le traducteur a été viré, il explique tout sur son blog.

lundi 23 novembre 2009

Insolite : finger tutting

Le finder tutting, kezako ? Réponse, en vidéo ! (en plus ça rime ^_^ )

Humour : Sarkozy, aussi...

Encore une vidéo, celle-ci parodiant qui vous savez, assez bien faite je trouve :)

Insolite : c'est beau

Petite vidéo de danseurs qui savent ce que le mot synchro veut dire :

vendredi 13 novembre 2009

Musique : Thriller 8 bits mix

Si vous trainez sur mon blog (à moins que je monologue ? pas grave ), vous n'êtes pas sans savoir que la musique et le son en général tiennent une place importante dans mon temps libre.
C'est en surfant par hasard que je suis tombé sur cette vidéo : on y voit un dj remixer le légendaire tube du défunt roi de la pop, Mickael Jackson.
Le moins que l'on puisse dire c'est qu'il sait tripoter du sid et du lfo le petit !
C'est presque un sans faute (cf la fin) mais le remix est globalement plutôt bien géré, avec des patterns biens sentis, des montées/descentes au bon moment.
A noter qu'il n'en est pas à son coup d'essaie, je vous invite à visiter sa page MySpace.

Mangas : "petite" production indépendante

Une courte animation d'un petit studio qui a tout d'un grand tellement celle-ci est bluffante !

Humour : Surprise aux vestiaires

No comment

samedi 10 octobre 2009

Musique : Kamini

En avant première inter galactique, le dernier clip de Kamini :



Perso, j'ai bien aimé !
Fan, je suis faut dire

mardi 6 octobre 2009

dimanche 27 septembre 2009

High-Tech : Samsung Jet

Petit billet pour "tester" ce téléphone mobile que je possède depuis presque un mois.
Tout d'abord, il faut noter que je ne suis pas un kikoolol asv sms addict mais que je suis par contre un technophile, il faut donc comprendre que j'utilise mon téléphone, pour téléphoner mais que j'aime avoir un téléphone technologiquement en avance pour l'utiliser hors téléphonie, justement.
Je cherchais donc ce type de téléphone et ça n'a pas été une mince affaire : le choix est pléthorique et il faut jongler entre ses points (en cas de renouvellement) et/ou les forfaits qui font varier à la hausse ou à la baisse de façon non substantiel le prix du mobile.
Cela m'a donc amené vers le Samsung Jet.
Tout d'abord, c'est un téléphone tres compact, plutôt bien fini, son aspect est épuré mais inspire une certaine solidité, une fois dans la main.
Par contre, il est laqué (ou brossé), il laisse donc des traces, surtout sur son écran de 3.1" pouce.
D'ailleurs, parlons en de cet écran : bluffant ! Il est certes petit mais il est de type AMOLED, ce qui garantis une vivacité des couleurs et un contraste que peu de mobiles peuvent se vanter d'avoir.
Il est de plus moins énergivore et cela s'en ressent (nous verrons cela plus bas).
Côté technique : il est wifi, bluetooth, 3G+ (HSDPA), 5 mégapixels avec double flash, radio fm, compatible divx, gps, puce arm cortex 800mhz ... bref, de ce côté, il s'en sort haut la main.
En pratique maintenant. Le wifi fonctionne plutôt bien, je m'en sers pour surfer avec l'excellent navigateur intégré, basé sur le moteur de rendu Webkit (support rss, 5 onglets actifs, zoom in/out via l'écran très puissant), et le surf est agréable. Il est annoncé compatible flash mais aucun site ne m'a affiché la moindre animation, c'est un des griefs que je ferais à ce mobile.
Je n'ai pas testé le bluetooth mais il est EDR 2.1 donc stéréo mais connaissant cette technologie, faites attention au casque choisit, mieux vaut le commander sur le net (7j pour le retourner) car c'est souvent la loterie niveau compatibilité.
L'appareil photo est de très bonne facture, les images sont détaillé, pas floutées, il dispose apparemment d'un autofocus car je ne vois pas de blur lorsque les éléments bougent, de ce côté il peut réellement dépanner ceux qui n'ont pas de (leur) apn.
A noter qu'il dispose d'un détecteur de sourire (fonctionne bien !) et d'un logiciel de retouche photo.
D'ailleurs, le navigateur de photo est plutôt pas mal, cela se fait en glissant naturellement le doit de droite à gauche, les animations sont fluide et avec l'écran, on en prend plein les yeux.
Il prend en charge la vidéo, divx notamment en lecture ET écriture ! Perplexe, j'ai testé avec un de mes rips de 700mo que j'ai copié/collé, c'est passé sans le moindre soucis : vidéo fluide, aucune saccade, l'avance/retour se fait sans anicroche et il permet même de relancer la vidéo là où on l'a laissé.
Je n'ai pas testé l'encodage par contre mais bon j'imagine que ça pourra juste dépanner.
Ce mobile est aussi très axé social, il a en standard des widgets pour facebook, twitter et autre truc aussi inutile que TF1 (à mon sens) mais aussi très à la mode pour les kikoo lol.
D'ailleurs, ils sont pratiques, ces widgets, notamment ceux de google : google maps, gmail, google search, ça fonctionne pas trop mal, avec des ralentissement par contre pour google maps, en tout cas lorsqu'il met en cache pour la première fois l'endroit que vous visitez, après, ça va.
Il dispose d'un agenda simple et bien fait, synchronisable, d'ailleurs il support Exchange, ça, c'est plutôt rare, il faut en général se tourner vers les blackberry pour avoir cette possibilité.
Lors d'un appel ou de la réception, le téléphone propose les options adéquates (visio, clavier, etc ...), c'est très agréable et ça évite d'aller les chercher en pleine discussion.
Ah oui, une option qui m'a amusé : il est possible de simuler un appel téléphonique avec même la possibilité d'enregistrer une voix pour rendre cette simulation parfaite, parfait lors d'une réunion un peu longue ou quand on a envie d'aller voir ailleurs :p
Le Motion Gate permet de le secouer, ça permet, par exemple, de faire lecture/pause (en le tapotant deux fois de suite sur le dessus), un coup rapide de gauche au centre fera un retour arrière et l'inverse, lancera la musique suivante.
Le Media Gate 3D permet quant à lui d'afficher un cube et de passer d'une application en le secouant la aussi, les applications sont affichées différemment pour profiter de l'accélération 3D.
L'étiquette pause permet quand à elle de muter le téléphoner en tournant l'écran en direction du sol.
Bref, la partie logiciel est très agréable et n'a rien à envier à un iPhone, c'est dit.
Cependant, elle a un gros défaut : c'est un OS propriétaire et son avenir est lié au bon vouloir de Samsung qui le fera évoluer, ou pas.
Toutefois, il est compatible Java et en surfant sur le net vous devriez trouver une méthode pour installer des applications sans trop de soucis (Samsung ayant bloqué cette possibilité).
Enfin, l'autonomie est très bonne, comptez 4/5 jours pour une utilisation standard, il tient 7 jours de mon côté (téléphone, un peu de radio/mp3).
A noter que j'ai pris un forfait chez Orange qui a bien pourri l'OS, j'invite tout le monde à passer au flash officiel, d'autant plus qu'Orange à supprimé la suite Google ...
Je n'ai pas testé le GPS mais je sais que route 66 est compatible et c'est une application qui fonctionne bien.
Ce test n'est pas exhaustif et permet de conclure en disant que c'est un téléphone qui se suffit à lui même, il permet de combler 95% des besoins de n'importe quel utilisateur, pour les geeks avancé apprentis codeurs ou tous ceux qui ne jurent que par des centaines d'application, l'iPhone et autres HTC Magic sont la.

Quelques liens utiles :

Site officiel Samsung Jet
Page Principale de DarkForest
Forum de DarkForest
Forum HFR
Test LesNumeriques

Vidéo : Voltage

Encore une vidéo mais cette fois-ci, je l'ai aimé pour son aspect artistique et surtout parce que ça parle forcément à tous ceux qui sont de près ou de loin dans le secteur du traitement du signal :)

Voltage from Bam Studio on Vimeo.

Humour : d'hôtesse

Une vidéo que j'ai trouvé amusante :

jeudi 13 août 2009

Programmation : VMWare rachète SpringSource

ArsTechnica nous fait part d'une brève importante mais que peu de sites relaye, à savoir le rachat de la société SpringSource par VMWare.
SpringSource est la société qui est, entre autre, derrière le framework Spring, utilisé dans le monde Java et dans le monde professionnel.
VMWare est une société qui propose des produits à destination de la virtualisation.
Maintenant, quel est le rapport entre les deux ? Pourquoi une société comme VMWare lorgnerais vers un framework java ? Tout réside dans le mot service.
En effet, VMWare a une vision a long terme et toujours dans une logique de cloud computing, la société souhaite proposer la virtualisation sous forme de service, en utilisant un framework, la société souhaite proposer tout un ensemble de fonctionnalité permettant de paramétrer, modifier en temps réel, déployer ses machines virtuelles pour ainsi les intégrer dans le parc de façon totalement automatisée et transparente.
C'est un enjeux capital à l'heure où de nombreux décideurs du monde IT (supports notamment) ont intégré la virtualisation dans le déploiement de leur parc physique.
Nombreux sont ceux qui pestent sur le côté monolithique voire risqué quant à déployer une VM pour des données critiques, le fait d'avoir la main totale sur le déploiement (entre autre) devrait leur faire changer d'opinion.
Il est à noter que VMWare proposera ses produits sous forme de service via le travail effectué via Spring mais permettra aussi à n'importe quel autre société de proposer sa propre solution, la société diffusera une API rendra cela possible.
Je pense que VMWare a vraiement fait le bon choix, aujourd'hui, tout tend vers les services, le succès des SOA est la pou r le montrer :)

lundi 6 juillet 2009

Jeux Vidéos : Blizzard et le marketing

Quelle ne fut pas ma déception lorsque j'ai appris que Blizzard, célèbre développeur de jeux aux millions de ventes comme la série des Diablo, Warcraft et Starcraft, n'allait pas incorporer le jeux en LAN (réseau local) !
Les LAN et moi, c'est une longue histoire, commencée en 1996 alors qu'aucune salle réseau existait encore (j'avais projeté d'ouvrir une franchise ... j'aurais dû, j'aurai eu le jackpot ^^ ) avec de beaux câble DB25 et mon super 486dx et bien sûr Doom.
C'était ultra confidentiel, à tel point qu'on en faisait dans une cave après avoir judicieusement raccordé le circuit électrique de l'immeuble à notre cave tout en faisant passer un câble réseau de 200m par le toit (5 étages quand même).
J'ai eu ma période nolife pendant 4 bonnes années avec 2/3 lans par semaine, jusqu'à créer une association loi 1901 de jeux en réseau (en 1997) pour en fait n'avoir qu'une salle plus grande et officielle, cette fois.
Été comme hiver, rien ne pouvait nous arrêter, on avait les doigts gelés, emmitouflés dans nos couettes, on jouait quand même.
Bref on étais quand même hardcore, atteints diront certains mais n'est-ce pas la la définition d'une passion ? ;)
Tout ça pour dire que Blizzard me déçoit, j'avais pour coutume de dire "un jeux Blizzard, ça ne se pirate pas, ça s'achète", du coup, ça sera ni l'un ni l'autre.

mardi 30 juin 2009

Sport : nouvelles chaussures

A l'image de ce billet, les soldes sont la et je n'ai pas pu résister :


Je les ai acheté tout à l'heure donc pas encore essayé. (66 € au lieu de 110€)
Pourquoi une nouvelle paire ?
Tout simplement parce que j'en ai que deux dont une qui a facile 2000 kms avec la gomme de la semelle bien mangée, mon autre paire me sert plutôt pour des sorties longues, il me fallait donc une nouvelle paire, plutôt axé dynamisme pour les fractionnées.
J'espère avoir fait le bon choix, n'hésitez pas à me le dire dans les commentaires :p

Emulation : VirtualBox 3.0.0

Voila, c'est fait, ce virtualiseur vient de sortir en version (majeure) 3.0.
Majeure car, et c'est à la mode dans ce milieu, elle offre le support de la 3D !
Sisi, on peut jouer à des jeux (DirectX 9 max) dans une machine virtuelle et ce, de manière tout à fait convenable.
Outre cet ajout majeur, il ne risque pas de toucher la vraie cible de ces outils : les admins et autres supports techniques.
La, on peut virtualiser jusqu'à 32 CPU, binder les sockets pour une interface réseaux spécifique, une amélioration du boot PXE, le RDP de Windows 7 ... la liste complète est consultable ici, pour le téléchargement, c'est par la.

jeudi 21 mai 2009

Musique : Playing For Change

Je ne sais pas si les plus surfeurs d'entre vous connaissent ce site mais c'est juste un must have : Playing For Change.
L'idée est simple : aller à la rencontre d'inconnus, tout autour du monde, souvent ils s'agit de ces gens que l'on rencontre dans le métro, les gares ou en plein centre ville avec leur guitare ou juste leur voix.
Vient l'idée d'aller à leur rencontre avec pour objectif de produire des musiques prônant la paix via leurs musiques en mixant l'interprétation de chacun, individuellement, les vidéos vous parleront plus.
Ma foi, je doit dire que le but est "quelque peu" atteint, deux vidéos prises au hasard car elles sont toutes ... magnifiques.



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 :)