DivideConcept.net

le blog de divide.

Prodigy… dans les coulisses du Zenith

Jeudi 16 avril 2015 à 12:53

Premier contact

Liam Howlett (leader du groupe) m’avait contacté fin 2011 quand je travaillais encore sur la première beta de SpectraLayers. C’était une excellente surprise, étant fan du groupe depuis The Fat of the Land et ayant passé une bonne partie du peaufinage de ma beta à faire des tests d’extraction sur Smack my Bitch Up. Malheureusement, à l’époque le logiciel était trop peu avancé, et les échanges avec Liam ne sont pas allés bien loin.

Trois ans et demi plus tard sors la 3eme version de SpectraLayers, à peu près au même moment où Prodigy sort un nouvel album et commence une tournée qui passe par Paris. C’était le bon moment pour retenter le coup. Après quelques échanges de mails (un peu étranges, Liam écrivant exclusivement dans un son argot d’Essex très particulier), son manager finit par me proposer de passer juste avant le concert au Zenith de Paris. J’avais de toute façon acheté des billets pour moi et une amie.

Le stress monte la veille de la rencontre, réalisant soudainement qu’il faut préparer des démos et ne sachant pas trop à quoi m’en tenir avec ce genre de rock star qui place 36 fuck par interview, dans un anglais à couper au couteau.

Dans les coulisses du Zenith

Le soir même on passe le premier point de contrôle étonnamment sans aucune difficulté (”Bonjour, je cherche l’entrée des artistes ?” “C’est par la !”), le deuxième un peu plus difficilement (grille, poste de contrôle avec deux vigiles qui refusent catégoriquement de nous laisser passer). Après un coup de fil et plusieurs minutes de doute, un gars de l’équipe finit par nous apporter un badge.

On arrive dans un hall avec des gens attablés, et un buffet sur le coté. Superbe lustre massif suspendu au plafond, un escalier donne sur une coursive avec les différentes loges. On attend quelques instants, et le technicien de Prodigy viens nous trouver. Je lui fais une rapide démo dans le hall, qu’il semble apprécier, mais il nous informe que le groupe est en pleine interview/photo shoot (on voit effectivement des flashs crépiter non-stop derrière une porte).
Du coup je commence un peu à faire une croix sur le fait de voir Liam, tant pis…

Ils finissent par sortir de la pièce, passent devant moi, et se dirigent vers la conciergerie. J’en profite pour capter Liam au passage, perplexe au début, mais son visage change subitement quand il entend le nom du soft (ouf). Il doit finir un shoot, il repasse dans 5 minutes.
En l’attendant, je vois Keith Flint manger une petite salade de fruit dans le hall. Scène surréaliste.

Le manager finit par nous emmener à l’étage, dans une pièce à part. On attend quelques minutes sans trop savoir si on nous a oublié, puis Liam finit par rentrer dans la pièce, accompagné de son technicien. On fait connaissance, et je fais cette fois une démo un peu plus élaborée.
A part un bref moment où j’ai eu du mal à comprendre son argot (regard désespéré vers mon amie, qui n’avait pas plus compris) le reste de l’échange était assez fluide. En tout cas je n’ai pas du trop me foirer si j’en juge par le “it’s fucking amazing man, really fucking amazing” qui a conclu cette démo, ce qui m’a mis aux anges :)

En Live

Nous retournons dans le hall, je dépose mon ordi à la conciergerie et après une brève hésitation, on profite du buffet gratos, juste avant la montée sur scène de Prodigy.
Passage coté salle au détour d’une barrière cachée par un rideau, et le concert commence.
Le son est poussé aux maximum (au delà du point raisonnable de saturation, de quoi donner des sueurs froides à n’importe quel audiophile) et dans l’ensemble ça envois du lourd, même si le concert est forcément axé sur la promotion du nouvel album. Le set finit en rappel sur l’excellent Their Law.

Smack My Bitch Up - Saturation 200%

Retour en backstage pour récupérer mes affaires, je croise le manager qui me confirme l’enthousiasme de Liam après la démo, je suppose que c’est de bon augure pour ses prochaines productions. Je repars avec un sourire béat (ainsi qu’une forte odeur de marijuana incrusté sur mes vêtements, et une légère surdité). J’aurai pu ne pas payer ma place au final, mais avec ce genre de bonus ça en valait chaque centime :)

GDC 2015: Oculus vs Sony vs HTC/Valve

Jeudi 5 mars 2015 à 15:05

Petit récap de l’état des lieux à l’occasion de la GDC 2015:

Oculus Crescent Bay Sony Morpheus HTC/Valve Vive
Crescent Bay Morpheus Vive
2160×1200 1920×1080 (custom pixel arrangement) 1080×1200 (per eye)
100 degree ? 100 degree (diagonal) 110 degree
90Hz 120Hz 90Hz
Tracking via external camera (TrackIR ?) Tracking via external camera (PS4 Eye) Tracking via 2 external laser projectors
No Controller Playstation Move, Dualshock 2 Controllers
Unity, Unreal Engine, CryEngine Unity, Unreal Engine Source Engine 2, Unity, Unreal Engine
? First half of 2016 End of 2015

Demos Crescent Bay:
Crytek
Crytek (interview lead dev)
Unreal Engine 4

Demos Morpheus:
CNET

Demos Vive:
Aperture

N’hésitez pas à rectifier/suggérer si vous avez des informations complémentaires.

J’en profite pour me hasarder à une nouvelle prédiction concernant les techniques VR, vu que la prédiction du TimeWarp en 2012 a plutôt bien marché :
Pour que la résolution VR soit confortable, il faudrait idéalement du 4K. Or il n’y a aucun GPU capable de sortir ça à 90FPS avec une qualité graphique qui réponde aux standards, et le problème risque de perdurer si ce standard graphique monte en même temps que la puissance des GPUs.
Un rendu 2K contient néanmoins suffisamment de détails, ce qu’il manque c’est une impression de finesse. Ce problème pourrait être réglé en utilisant à la volée (en même temps que la passe TimeWarp) un algorithme intelligent d’upscaling (de ce type par exemple) qui, bien ne créant pas de détails supplémentaires, rajouterait suffisamment de finesse aux arrêtes pour que l’illusion fonctionne.

10 ans

Mercredi 28 janvier 2015 à 0:00

Après Ouamdu, Channie, MathieuFROG et d’autres, à mon tour de faire l’article des 10 ans…

Wefrag a été une formidable plateforme de communication et comme quelques autres ici, elle m’a aussi indirectement apporté mon premier boulot. J’y ai aussi trouvé une communauté avec laquelle les débats sont très souvent enrichissants.

Quand j’ai écris le premier des 140 articles de ce blog j’avais 20 ans, encore au lycée (après un double-redoublement…), je vivais chez mes parents et je n’avais encore jamais travaillé plus de quelques semaines par-ci par là. Quand je regarde en arrière, ce que je retiens c’est à quel point ces 10 années m’ont forgé une certaine vision de la vie. Beaucoup de convictions que je croyais acquises ont été remises en question pendant ce parcours personnel, et dans cette quête du dénominateur commun petit à petit certaines règles de vie, certains adages, maximes et autres citations se sont imposés et m’ont forgé une certaine philosophie.

“Do right and fear no man” (”Fais le bien et ne crains personne”), sorte de “pari de Pascal” sur la vie.
Agir toujours selon le sens moral (en tout cas selon ce qui nous semble le sens moral) amène la sérénité et permet d’assumer tous ses actes, l’inverse est source d’angoisse permanente. C’est la version pragmatique du Karma.

“If”, poème de Rudyard Kipling.
Dans ce poème Kipling décrit toute une série d’épreuves qu’il faudrait selon lui surmonter sans sourciller. À défaut d’être tenable, cette liste est un cap qui permet de surmonter bien des épreuves dans la vie.

“Whatever works”, film de Woody Allen.
Ce film parle des couples improbables, mais “tant que ça marche”, tout le monde y trouve son compte et il n’y a pas lieu de juger. Cette leçon s’étend à tout choix de vie.

“Ne pas prévoir c’est déjà gémir”, Léonard de Vinci.
Indissociablement lié à la Loi de Murphy (également appelée loi de l’emmerdement maximum) et au proverbe “Il ne faut pas vendre la peau de l’ours avant de l’avoir tué”. Bien souvent la vie nous montre que tout ce qui peut potentiellement déraper finira par déraper. Ne jamais négliger le moindre risque dans ses estimations. Le livre Jurassic Park illustre à merveille ce phénomène sous l’angle de la théorie du chaos.

“Patience est mère de toutes les vertus” la preuve, c’est hier qu’était censé sortir GTA V PC.
Repousser d’une heure, d’un jour ou d’une semaine une réponse peut éviter bien des mots et décisions malheureuses à chaud. De la même manière, prendre son mal en patience et se taire quand le jeu en vaut la chandelle.

Rendez-vous dans 10 ans.

Carnet de notes de développement

Mardi 13 janvier 2015 à 17:38

En m’attaquant au développement de la 3eme version de SpectraLayers il y a pile-poil un an, j’ai décidé de tout reprendre à zéro, afin de repartir sur de meilleures bases tant en terme d’architecture que d’expérience utilisateur. SpectraLayers était ma première grosse application et j’ai improvisé en cours de route, ignorant certaines conventions et techniques pourtant courantes. Jusque là mes projets se limitaient pour la plupart à de la R&D d’algorithmes.
Je vais tacher d’énumérer ici tout ce que j’ai pu noter lors du développement de cette nouvelle version.

UX Design

Un des points faibles des deux premières versions était la courbe d’apprentissage bien plus longue que sur les autres soft d’édition. Les concepts de transfert de données direct d’un calque à l’autre et d’inversion de phase étaient loin d’être intuitifs, l’association de couleurs par rapport à des états un peu déroutant, la navigation perfectible, et la première version consommait beaucoup coté CPU (point quelque peu amélioré dans la version 2).

Tous ces éléments ont donc été remis complètement à plat, et l’idée maîtresse pour rendre le tout intuitif a été de s’inspirer le plus directement possible de tous les termes, apparences, actions, comportements et mises en page standards de l’ensemble des logiciels d’édition existants (aussi bien des éditeurs de texte, que d’image, de montage vidéo et audio) pour en tirer ce qui en faisait l’essence même. Puis penser l’intégration de tous ces concepts autour de l’édition spectrale multi-couches. Tous ces éléments constituent l’UX, l’eXpérience Utilisateur, concept qui va au delà de celui d’UI (Interface Utilisateur), même si les deux sont étroitement liés.

Quelques exemples de questions que je me suis posé:
-Quel est le raccourcis clavier standard sur chaque plateforme pour telle action ?
-Quels sont les outils/méthodes en vogue pour naviguer au sein d’un projet ?
-Que se passe t-il généralement lorsqu’on sélectionne quelque chose, et qu’on cherche à le déplacer directement ?
-Quelle est la dénomination la plus courante pour un outil qui fait ce genre de travail ? Et sa représentation ?
-Dans quel ordre ce type de processus est t-il généralement appliqué ?
-Quels éléments de l’interface sont superflus, et lesquels devraient être accessibles en priorité ?

sl3banner

Certaines questions se sont posés en amont, et le reste en cours de développement, au cas par cas, une fois confronté aux dilemmes. Il existe néanmoins quelques exceptions à cette règle, quand on pense apporter un réponse bien plus intuitive ou pratique que la pratique la plus répandue; mais dans ce cas, il faut s’assurer que cela semblera couler de source pour l’utilisateur.
Si il ne fallait retenir qu’une chose sur ce point, c’est que tout ce qui n’est pas l’innovation à proprement parler du projet doit absolument se conformer aux us et coutumes en rigueur dans son domaine. Dans le cas contraire il en résulte généralement un apprentissage plus long, avec le risque d’aboutir sur une incompréhension voire un rejet pur et simple par l’utilisateur.

Le choix des outils

Vient ensuite le choix des outils pour commencer la réalisation à proprement parler. Ce choix est extrêmement important, car il va conditionner la bonne conduite du projet jusqu’à son terme, et assurer sa pérennité ensuite. Et il n’est pas question d’en changer en cours de route (au risque de se retrouver avec les symptômes d’un Duke Nukem Forever). Il n’y a pas de réponse universelle : il faut faire en fonction de ses connaissances, de sa capacité d’adaptation, du type de projet, des plateformes ciblées, de la qualité de l’outil en lui même (ses fonctionnalités, sa stabilité, son suivis, sa documentation)… Bref prendre quelques jours pour bien étudier l’offre disponible, télécharger quelques outils pour voir comment ils se présentent sur le terrain, tout ça se fait aussi un peu au feeling.

Pour mon projet Qt s’est montré d’une richesse incroyable, très bien fournis en exemples et documentation, suivis par une grosse communauté et évolutif.
Sa dernière version (5.4) intègre le support High-DPI, Windows RT, et de nombreuses autres améliorations appréciables.
Coté compilateur je m’appuie sur VS2013 Express pour Windows, et XCode 5 sur Mac OS. L’ensemble est totalement gratuit d’utilisation, même pour des projets commerciaux.

Git, c’est fantastique

Believe it or not, mais jusque là tous mes projets étaient versionnés… avec des archives zip quotidiennes de la totalité du projet. J’étais conscient qu’il s’agissait d’une mauvaise pratique, mais c’était simple et j’avais un peu peur que la plupart des systèmes de versionning soient des usines à gaz.
Quelques jours de test avec Git ont suffit à me convaincre du contraire (merci les wefragés), la mise en place est très simple, ça peut s’utiliser offline et/ou online au choix, et un ou deux scripts simples peuvent en simplifier l’utilisation quotidienne encore plus qu’un archivage zip. Le gain de place est monstrueux par rapport à mon ancien système, même en archivant les binaires du projet (Git gère très bien les redondances au sein des binaires via sa compression interne, contrairement à une croyance répandue). Couplé à Github (pour les projets open source) ou Bitbucket (pour les projets fermés) c’est l’assurance de ne jamais perdre son projet.

Architecture : ce qui se conçoit bien s’énonce clairement…

Afin d’établir des fondations solides pour ce “nouveau” logiciel, je me suis appuyé sur l’excellent yEd, un éditeur de schémas très simple à prendre en main (et gratuit). Merci Darkstryder !
En quelques clics on peut rapidement définir des modules, les relier entre eux, modifier tout ça aisément en cours de réflexion et même demander au logiciel de tout réorganiser automatiquement au mieux.

yed

…Mais les mots pour le dire ne viennent qu’avec le temps.

Déterminer la structure prend du temps, mais ce qui prend certainement autant de temps est de trouver le nom juste pour chaque module. Décrire en un seul, maximum deux mots tout ce que chaque objet est censé faire, sans employer d’expression tarabiscotée est tout un art qui ne se plie pas à l’urgence. Autant tirer des traits entre des modules dont on connait le rôle peut se faire (relativement) rapidement, autant trouver leur description exacte et leur véritable lien ne se fait qu’avec le temps de la réflexion au fil des jours, voire des semaines. Mais quoi qu’il en soit, je recommanderai ici de garder les choses aussi simples que possible, partir dans des diagrammes UML complexes tel qu’enseigné en école d’ingénieur me semble complètement inutile, et au final une grosse perte de temps. La vraie réflexion n’arrive que lorsqu’on commence à coder et qu’on se rend alors compte de certaines réalités et de la véritable nature de chaque objet.

Pour mieux organiser l’ensemble, j’ai catégorisé chacun de mes modules selon l’une de ces cinq catégories, que je pense universelles:

-Les “primitives”: classes/structures très simples, ne contenant qu’une donnée unique (matrice, vecteur, zone rectangulaire…) et quelques opérations simples pour agir dessus et les combiner. Un header suffit à les définir intégralement.
-Les “entités”: classes contenant des données plus complexes (une piste audio par exemple, avec ses caractéristiques, ou des buffers de calcul complexes), et dont le nombre est variable pendant une session.
-Les “applicatives”: classes qui n’ont de sens qu’au sein de ce logiciel spécifiquement, et dont le nombre est généralement fixe au cours d’une session. Elles organisent tout le fonctionnement du programme et de l’interface en se servant des autres types de classes.
-Les “interfaces”: des classes dont l’unique but est d’être un intermédiaire de communication, entre classe d’un même programme, ou entre un programme et ses plugins par exemple. On dérive généralement de ces classes dans plusieurs classes entités ou applicatives.
-Les “utilitaires”: prend le plus souvent la forme de namespace que de classes, ne contiennent aucune données, ils ont un rôle purement moteur: ça peut être des opérations mathématiques, des routines qui prennent une info en entrée et en donne une autre en sortie, mais qui dans tous les cas n’ont aucun intérêt à stocker quelque état que ce soit.

Communication interne

Une fois la structure en place, il va falloir l’irriguer; c’est à dire faire communiquer les différentes classes entre-elles, pas n’importe comment ni dans n’importe quel ordre !
Il y a plusieurs écoles à ce niveau, pour ma part j’ai opté pour le système suivant, conseillé par skaven, qui m’a semblé à la fois élégant, robuste et sécurisé :

Pour l’irrigation générale de l’application, j’ai une classe d’interface IEvent qui se charge de passer tous les principaux évènements globaux (format de projet, liste des calques, mouvements de souris…) aux classes principales du projet (qui dérivent de IEvent). Libre à chaque classe de faire une copie locale de ces nouvelles informations, le tout se propage progressivement dans toute l’application, mais chaque objet s’auto-gère de manière indépendante et renvoit d’autres évènements si besoin (la classe IEvent gérant un système de queue). Avec ce système, je peux débrancher n’importe quel objet et l’application continuera de fonctionner (de manière incomplète bien sur). Pas de synchronisation à gérer.

Qt propose également un système Signal/Slot qui permet de connecter directement à la volée différents objets entre eux. J’ai réservé cet usage à la connection des objets Qt au reste de mon application, pour communiquer entre threads de manière asynchrone, et pour que certains objets enfants puissent communiquer certains changement d’état à leur parent sans connaissance préalable de leur parent.

Enfin l’accès direct aux méthodes a été réservé pour la communication avec les entités (voire définition plus haut), cas d’accès le plus fréquent. Pas de mise en place, pas de perte de temps niveau exécution.

Factoriser le code…

Une fois le travail de structuration, de catégorisation et d’irrigation bien définie, il va falloir factoriser un maximum de code. Pour la clarté, la concision (on code plus vite et on maintient ce code plus facilement) et (en partie) pour l’optimisation. Mais encore une fois pas n’importe quoi, n’importe comment, ni n’importe où… Sous peine d’obtenir l’effet inverse. Il faut bien identifier les taches, les objets ou les bouts de code qui sont susceptibles de se répéter de nombreuses fois au moment de l’écriture de l’application, et dans ses futurs développements.
Quelques techniques C++ pour pousser la factorisation:

-L’héritage/Le polymorphisme/héritage multiple: grande force du C++, mais à utiliser avec précaution (il ne s’agit pas d’empiler les niveaux d’héritages au risque de rendre le code incompréhensible), son utilisation judicieuse peut créer d’élégantes structures aux possibilités décuplées. Savoir comment ou sur quoi l’utiliser sera à déterminer en amont en même temps que la structure générale du programme et de la classification des objets.

-Les macros: on y pense pas forcément, mais on peut factoriser et simplifier énormément de code répétitif via les macros. Certes, cela à l’effet pervers de cacher le code réel, mais ça peut s’avérer être de redoutables outils pour créer presque un nouveau language propre à l’application. Bien identifier les quelques blocs de codes qui vont se répéter énormément au cours de l’application, et bien trier entre ceux qui relèvent d’une nouvelle fonction et ceux qui relèvent de la macro.

Le framework Qt fait un large usage de ces deux concepts, et c’est en partie ce qui fait son élégance. Cette approche a permit de grandement réduire la complexité du code de SpectraLayers 3 vs SpectraLayers 2, et malgré le plus grand nombre de features le nombre de lignes de code reste similaire; il est répartie sur beaucoup plus d’objets spécifiques. Le nombre de commentaires a également été divisé par deux, ce que j’attribue au fait que le code est naturellement plus facile à suivre.

graph
text(statistiques SourceMonitor)

…Et factoriser les calculs

L’optimisation de la vitesse d’exécution d’un programme ne repose pas que sur la concision des algorithmes qui le composent; avec le recul je me suis aperçu que l’exploitation optimale des techniques et contraintes hardware et la vérification minutieuse de la vitesse d’exécution de chaque élément de la chaîne logicielle comptait tout autant.

Ainsi, il ne suffit pas de lancer aléatoirement plein de threads de calculs divers pour exploiter au mieux les cœurs d’un CPU. La meilleure technique (et le gain est réellement notable) est de subdiviser au maximum les calculs en sous-calculs indépendant, jusqu’à obtenir de petites unités qui prennent très peu de temps d’exécution (par rapport à l’ensemble de la tâche), lancer autant de threads “exécuteurs” que de cœurs sur le CPU, et assigner cette liste de micro-calculs à ces threads qui vont tourner en permanence. Je compare ces micro-calculs à des grains de sable qui vont remplir de manière optimale la capacité d’exécution de chaque cœur CPU. Il faut également savoir qu’arrêter et relancer un thread est coûteux, il vaut mieux donc avoir des threads dédiés prêt à prendre une tache dès que nécessaire.

Toujours dans l’idée d’exploiter au mieux les capacités des CPU, il ne faut pas négliger les instructions vectorielles, car depuis le lancement du Pentium MMX celles-ci n’ont pas arrêté d’évoluer en parallèle de la montée en puissance et en cœurs. Les instructions vectorielles sont comme autant de sous-cœurs par cœur, capables d’effectuer en parallèle et de manière synchronisés plusieurs opérations élémentaires.
Ainsi, si le MMX se limitait à 2 opérations sur des nombres entier (int32), le SSE a apporté 4 opérations sur des nombres flottants (float32), l’AVX double ça, et le future AVX-512 le redouble encore.
Du coup une application correctement optimisée pour les derniers CPUs est capable d’effectuer 8 coeurs x 8 composants par vecteur = 64 opérations en parallèle !
Même si le gain réel n’atteint pas 64, il reste néanmoins important par rapport à un algorithme non pensée multi-thread/vectoriel. Un facteur à ne pas négliger donc.

Pour en finir avec les CPU, un point sur le gain réel entre 32bits et 64bits : si il est vrai que certaines opérations sont légèrement plus optimisés en 64bits qu’en 32bits, car bâtis sur un jeu d’instruction plus moderne, le gain est néanmoins difficilement mesurable (toutes les opérations ne sont pas systématiquement plus rapides, et un calcul est un ensemble d’opérations très divers). En revanche, pouvoir s’affranchir de la barrière mémoire 32bit offre des possibilités d’architecture nouvelles et bien plus optimisés en terme de vitesse d’accès. Des opérations qui devaient se limiter à des buffers de tailles bien délimités sous peine de crash peuvent maintenant demander allègrement toute la place qu’elles désirent, et à charge de l’OS de répartir au mieux en fonction des capacités hardware réelles. Des concepts comme le mapping mémoire de fichiers (faire correspondre le contenu d’un fichier à un emplacement mémoire) prend alors tout son sens, puisque même les gros fichiers pourront trouver leur équivalent en RAM dans la plupart des cas, accélérant ainsi d’autant plus la vitesse de traitement des données.

Quand au GPU, si son utilisation semble évidente dans le contexte d’un jeu vidéo, c’est bien moins souvent le cas dans un cadre professionnel (en dehors des logiciels de 3D, et bien que cela se généralise petit à petit au sein des applications de montage et de traitement d’image). Ainsi dans le domaine de l’audio, l’utilisation des GPU est quasi-inexistante. Mais au vu de la particularité de mon application (éditeur spectral multi-couches tridimensionnel) il me semblait essentiel de l’intégrer dans les optimisations. Il a fallut alors composer en connaissance de cause du marché, peu fournis en GPU “gamer”, en ne posant qu’un pré-requis OpenGL 3 (ce que toutes les machines sont heureusement capables de fournir maintenant), et l’utiliser uniquement là où il s’avère le plus efficace, c’est à dire en tant qu’accélérateur graphique 2D/3D.

Enfin, last but not least, il est important de penser la chaîne d’exécution d’un calcul dans son ensemble, de ce qui l’a déclenché jusqu’à l’affichage du résultat final. On a tendance à se focaliser sur le calcul lui-même mais en réalité c’est l’ensemble de la chaîne qui compte, et en particulier son maillon le plus faible. Si un calcul est très rapidement exécuté mais que le composant qui envois les ordres ou qui affichera le résultat n’est pas prévu pour un rafraîchissement aussi rapide, c’est toute la chaîne qui est impacté !
Ainsi, j’ai déjà vu une simple boite de texte standard ralentir l’ensemble de mon programme. Pour les mêmes raisons, j’ai désactivé d’emblée le vertical refresh de mon application, et l’affichage de certains éléments ne sont que partiellement recalculés.

L’ensemble de ces optimisations a conduit à un boost perf de x5 entre SL2 et SL3:
bench

Une touche de modernisme

Les outils et le hardware évoluant constamment, il est important de continuer à s’adapter aux changements. Voici quelques points que j’ai pu intégrer en codant la nouvelle version:

-Auto-vectorization: les compilateurs de VS2013 et XCode 5 sont maintenant capables d’auto-vectoriser certains calculs (voir le point sur l’optimisation plus haut). Même si en pratique il vaut mieux vectoriser les calculs cruciaux soit-même en connaissance de cause, il est appréciable de pouvoir laisser la main au compilateur sur les tâches annexes.

-C++11: là aussi une nouveauté apportée par VS2013/XCode 5, quelques facilités sont très appréciables, en particulier les fonctions lambdas (aussi appelés fonctions anonymes), qui permettent d’optimiser grandement son code pour des micro-tâches temporaires. Elles se marient particulièrement bien avec le système de signal de Qt.
La possibilité d’utiliser des <> imbriqués et de déclarer des listes directement à l’initialisation sont aussi des détails qui m’ont simplifié le boulot et rendu le code plus élégant.

-Le support High-DPI et Touch: Il s’agit la d’évolutions hardwares quasi-simultanés, qui en plus du marché mobile trouvent écho aussi bien sur Mac (Rétina, TrackPad) que sur Windows (High-DPI, Touchscreen). Le support High-DPI devient de plus en plus indispensable, à minima pour s’assurer que le logiciel est bien compatible (c’est à dire que l’OS se charge bien d’upscaler correctement l’application, au risque de se retrouver avec des fenêtres et icônes minuscules, le programme considérent que le device pixel ratio est toujous de 1), au mieux pour en profiter au maximum avec des graphismes haute-résolution. Quand au support touch, il apporte un plus indéniable pour naviguer au sein d’un projet, le contrôle étant beaucoup plus intuitif et précis.

Quality Assurance

Étape finale du développement, indispensable dès que le logiciel fait une certaine taille ou doit être utilisé dans des environnements/situations critiques. Le récent scandale des sorties Ubisoft est clairement le résultat d’une défaillance à cette étape (sans doute plus du à la direction qui a décidé de passer outre qu’à l’incompétence des testeurs et ingénieurs, ceci dit).
Le QA ne se limite d’ailleurs pas à la recherche de bugs, il peut également apporter des suggestions sur des comportements qui peuvent sembler étrange ou peu intuitifs.
L’expérience m’a néanmoins montré que le seul département QA ne peut trouver tous les bugs, ils ont leurs techniques pour en débusquer (beaucoup), mais multiplier les sources de test externes permet aussi d’avoir autant de regards neufs avec autant de configurations exotiques. Je rajoute donc généralement quelques testeurs supplémentaires externes en plus de l’équipe de base.
Allouer environ un mois à cette étape pour avoir assez de recul semble indispensable, quelle que soit la qualité du code il survient toujours quelque chose à cette étape, et ce jusqu’à la dernière minute. Foutue loi de Murphy.
Quoi qu’il en soit, le travail abattus à ce moment là est autant de travail de support en moins une fois le logiciel sortie.

Release

La version 3 vient de sortir aujourd’hui, ceux qui ont connus les versions 1 et 2 pourront donc se faire une idée par eux-même. Je suis plutôt content du résultat final, et j’espère que le logiciel est maintenant plus abordable d’utilisation :)

SpectraLayers Pro 3

Ça fait maintenant 7 ans que je traverse différents statuts de développeur indépendant, et comme les informations à ce sujet ne sont pas forcément évidentes à trouver malgré l’essors de ce milieu ces dernières années (notamment grâce au financement participatif, à la démocratisation d’outils de développements complets et multi-plateformes et à la création du statut d’auto-entrepreneur en France), il m’a semblé pertinent de tenter de synthétiser les choix et astuces qui nous concerne.

Indie Dev

Trois grands statuts

Être indépendant sous-entend d’effectuer soi-même un certain nombres de démarches, à commencer par le choix de son statut:

L’Entreprise Individuelle (Micro-BNC): Le choix historique (comprendre par la, antérieur au statut d’auto-entrepreneur et dont la catégorie BNC (Bénefice Non Commerical) pose les bases législatives pour l’ensemble des 3 statuts). Autant le dire tout de suite, ce n’est pas le statut idéal pour commencer une activité : vous allez vous retrouver d’emblée à discuter, voire parlementer avec un certain nombre d’organismes sociaux qui débouleront dans votre boite aux lettres avec leurs demandes d’affiliations et de cotisations sans crier gare. Je pense notamment à la CIPAV (caisse de retraite) et au RSI (sécurité sociale des indépendants) qui s’ajoutent a l’URSSAF (la caisse déclarative principale).
C’est le premier statut auquel je me suis confronté et je dois dire que c’était une expérience peu plaisante, commençant tout juste mon activité je me suis retrouvé face à des demandes de cotisation exorbitantes par rapport à mes maigres revenus (certaines demandes excédant allègrement mon chiffre d’affaire).
Je n’ai pu m’en sortir qu’en faisant valoir l’ACCRE, une exonération temporaire de charges attribué a ceux qui la demande, généralement pour ceux qui sortent d’une période de chômage ou qui touchent le RSA.

L’Auto-Entreprise: Créé en 2009, ce nouveau statut dérivé de l’Entreprise Individuelle est une bouffée d’air frais qui permet aux indépendants relevant normalement de la Micro-BNC de n’avoir à faire qu’à un unique interlocuteur, l’URSSAF, qui regroupe l’ensemble des cotisations, cotisations qui sont toujours proportionnelles aux revenus engrangés (donc pas de revenus, pas de cotisations, ce qui n’est pas forcément le cas en Micro BNC). Cette cotisation est progressive au fil des années, jusqu’à arriver à environ 25% du CA.
Attention toutefois, à cela se rajoute la CFE (cotisation foncière des entreprises), une taxe sur les entreprises qui remplace la taxe professionnelle mais avec un nom différent (bien joué…). Son montant est fixe et dépend de votre localité, cependant il est arrivé plusieurs fois que les auto-entrepreneurs en soi exonérés, du fait d’une variation conséquente et imprévue de cette CFE. A noter que les 3 premières années d’activité l’auto-entrepreneur en est exonéré. En sont aussi généralement exonérés ceux qui font un CA nul sur l’année. Rester attentif à l’évolution des lois et décrets à ce sujet, je vous conseille fortement de vous abonner à une newsletter, comme celle de la Fédération des Auto-Entrepreneur, ou de suivre le mouvement des Poussins qui continue à être vigilant aux changements.

Auteur: Cette catégorie ne concerne qu’une partie restreinte des indépendants, mais il se trouve qu’un certain nombre de développeurs indépendants (notamment dans le domaine du jeu vidéo) peuvent justement rentrer dans ce cadre. Il faut pour cela être rémunéré en droits d’auteur, généralement via un éditeur. Attention toutefois Steam, XBox Live, PSN, l’Apple Store et Google Play n’ont pas rôle d’éditeur.
Si vous pouvez prétendre à ce statut, il faut alors se déclarer a l’AGESSA, qui s’occupera alors de l’ensemble des cotisations (à l’exception de la retraite complémentaires (mais obligatoire), gérée par l’IRCEC). Ce statut est très intéressant fiscalement dans la mesure où:
-les cotisations de l’AGESSA se montent à environ 16% du CA, et l’IRCEC propose différentes formules dont la première commence à 438 euros (attention toutefois, les cotisations de l’IRCEC passeront d’une base fixe à une cotisation de 8% à partir de 2016, ce qui soulève des remous actuellement).
-les auteurs sont exonérés de la CFE
-au niveau de l’imposition, il permet selon les cas de bénéficier du régime spécial BNC (déduction de charges virtuelles à hauteur de 34% du CA) jusqu’à 42600 euros (article 293B) au lieu de 32900 euros dans les autres statuts.

A propos du régime spécial BNC, il y a également une autre subtilité intéressante à noter (tous statuts confondus) : il est permit de dépasser 2 années de suite le seuil plafond et de continuer à en bénéficier pendant cette période (article 102ter). Au delà, il y a passage obligatoire en régime contrôlé (c’est à dire obligation de faire appel à un comptable et de déduire les charges réelles (et non les 34% automatiques)).

IRS

Législation américaine

La grosse majorité des plateformes de distribution numérique étant américaines, celles-ci vous demanderont probablement de vous conformer à certaines formalités américaines. A noter que si vous faites le choix du statut d’auteur, passer par un éditeur américain vous obligera obligatoirement à déclarer vos revenus en revenu d’entreprise, et non en traitement et salaires comme la plupart des auteurs (tout domaines confondus) distribués par un éditeur français. Mais c’est de toute façon plus avantageux fiscalement.

Numéro d’identification: Il y a plusieurs voies pour obtenir un numéro d’identification d’entreprise américain, dont certaines d’une complexité et d’une lenteur aberrantes comme pour les demandes d’ITIN (Individual Taxpayer ID Number). Le plus simple reste de faire une demande d’EIN (Employer ID number) auprès de l’IRS, le service des impôts américain. C’est assez rapide et ça peut même se régler par téléphone.

Imposition: Si vos revenus proviennent quasi-exclusivement de source américaine mais que vous résidez en France, vous pouvez choisir de vous faire imposer uniquement aux Etats-Unis ou uniquement en France, en vertu de l’accord de non-double imposition franco-américain. Attention toutefois, il n’est pas forcément plus intéressant de se faire imposer aux Etats-Unis (à noter qu’à l’impôt fédéral se rajoute l’impôt de l’état dans lequel est déclaré votre éditeur).
Par ailleurs si vous optez pour le statut d’auteur, vous devez obligatoirement vous faire imposer en France (CE, arrêt du 28 octobre 1959, req. n° 44452).

Virements: Si vous êtes rémunérés en dollars, il peut être intéressant de trouver le meilleur taux de transfert en euro vers votre compte. Pour cela vous avez plusieurs options; tout d’abord choisir une banque qui offre des taux intéressant sur les réceptions de virements internationaux. Pour ma part j’ai ouvert un double compte chez HSBC (un en euros et un en dollars) en négociant l’annulation des frais de virement. Vous pouvez aussi passer par des services externes du type TransferWise ou CurrencyFair qui assurent en théorie une conversion avec perte minimale.

Et après ?

Quand vous aurez choisis le statut qui semble vous correspondre au mieux, viendra la question du financement. L’article de MrHelmut répond de manière très juste et exhaustive à cette question !

Je compléterai peut-être cet article si d’autres détails me reviennent en mémoire. N’hésitez pas à commenter si vous pensez que je me suis trompé sur un point, ou pour compléter des détails. Il y a également des variantes de ces statuts que je n’ai pas (encore) essayé, et dont certaines subtilités m’échappent peut-être.
J’espère en tout cas que cet article pourra être utile à tous ceux qui souhaitent se lancer dans l’aventure “indie” en hésitant un peu face à la multitude de statuts, ou qui doivent se confronter à des formalités transatlantiques dans leur travail.

Ballades piétonnes à Paris

Mardi 13 mai 2014 à 16:14

Toujours dans l’esprit d’exploration urbaine (voire l’article précédent) je commence à explorer les ballades piétonnes potentielles à Paris. J’en ai déjà visité et cartographié un certain nombre, mais j’aimerai étendre ce référencement au delà de la proximité directe de la seine.

uppix.net
clic sur l’image pour le lien Google Map Engine

Par ballades piétonnes, j’entend des rues/espaces/circuits où l’on peut se balader à pied ou en vélo sans croiser de voitures, ou presque.
Certains lieux référencés ci-dessus ne sont que des fragments, mais certains finissent par s’assembler en ballades.

Si vous en connaissez d’autres (en dehors des gros parcs évidents) je suis tout ouïe !

RESO (Montréal Underground)

Lundi 7 octobre 2013 à 4:55

Vous avez peut-être entendu parler du réseau sous-terrain de Montréal, qui permet aux habitants de se déplacer et faire du shopping lorsqu’il fait -15 dehors. Vous avez peut-être même vu quelques photos de ces grand centres commerciaux à demi-enfouis, moitié en hauteur et moitié en sous sol, généreusement éclairés par des puits de lumière naturelle (tout du moins en partie).

uppix.net

Mais ce qui est beaucoup moins documenté, c’est comment ces centres s’articulent entre eux en interne ainsi qu’avec le métro. Absent des guides de tourisme et très discret sur ses accès, ce réseau sous-terrain s’appelle le RESO.

uppix.net

Avec son architecture hétérogène à l’image de la ville de Montréal, le RESO semble s’être construit petit à petit, s’incrustant dans et sous la ville au hasard des espaces laissés vacants et sans supervision globale. Son nom ne lui a d’ailleurs été donné qu’en 2004, comme une signature commune à cette oeuvre collaborative tortueuse.

Capter le RESO

Si les guides se gardent bien de vous balader dans le RESO, c’est qu’il faut d’abord en trouver l’entrée !
Les panneaux signalant un accès sont très discrets, et référencés ni sur google map (pour l’accès extérieur), ni dans les plans internes des centres commerciaux (pour l’accès intérieur).
D’autre part, il n’y a ni continuité de chemin une fois un centre relié (il est très difficile de trouver la porte suivante lorsqu’on passe dans un noeud majeur type centre commercial ou station de métro), ni même une continuité de design le long des couloirs.
Car c’est bien la qu’on voit sa nature profonde : tantôt longeant le premier étage d’un immeuble d’affaire, ambiance lumineuse et sol feutré, séparé d’une vitre des employés de bureau, tantôt en sous-sol carrelé froid et éclairage néon, tantôt bordés de boutiques en tout-genre comme dans une galerie commerciale, le RESO ne cesse de zigzaguer, de monter, de descendre, de tourner et de changer de forme comme un étrange labyrinthe. Mais ce labyrinthe n’est au final que la résultante des espaces où il peut se faufiler, empruntant un bout d’immeuble laissé vacant, descendant sous une route pour remonter aussitôt après, se fondant enfin dans des espaces de taille variable qu’il traverse jusqu’à se diluer complètement, pour renaître cent mètres plus loin.

uppix.net uppix.net uppix.net uppix.net
uppix.net uppix.net uppix.net uppix.net

En pratique

Le RESO s’étend en gros de la station Peel à Berri-Uqam pour la ligne verte, et son équivalent géographique pour la ligne rouge (jusqu’à Lucien-L’allier). Il n’est cependant pas complètement continu, et il n’existe pas systématiquement des passerelles nord-sud. Prévoir dans tous les cas de marcher plus que prévu, le RESO semblant en pratique choisir le chemin pour vous plus que l’inverse !

uppix.net

Coté rue, en vous baladant dans le centre ville ouvrez l’oeil : vous finirez par tomber sur de discrets panneaux RESO vous indiquant un accès possible, tachez de repérer de quel module en particulier il s’agit pour mieux vous orienter (les modules internes du RESO ayant leur nom propre, dans un découpage différent de ceux des quartiers et des stations de métro).
Vous pouvez aussi tenter de trouver un accès via un centre commercial, dans ce cas privilégiez les niveaux -1 et -2 pour maximiser vos chances. Ouvrez l’oeil, ça ne sera pas indiqué sur les plans qu’on trouve au sein du centre. Il se peut que le RESO ne soit indiqué que par son logo, une flèche pointant vers le bas, entouré d’un rond. Mais cela peut aussi indiquer une station de métro…
Enfin une fois dedans, restez attentif ! Si la balade est sans encombre quand il ne s’agit que d’un unique couloir, il est très facile de perdre sa trace dès qu’il rejoint un embranchement (embranchement du RESO ou embranchement de métro, de centre commercial ou autre).
Enfin lorsque vous débouchez dans un noeud majeur sans aucune indication, gardez le cap ! La porte suivante se trouve logiquement à peu près dans la direction que vous suiviez.

Après une après-midi passé à naviguer dans le RESO traversant la ville de noeuds en noeuds vous vous sentirez invicible, comme un parisien se riant des provinciaux déboussolés par le réseau RATP ! Mais prenez garde, car le réseau Montréalais a plus d’un tour dans son sac pour vous déboussoler. Grisé par ma victoire du premier jour, le deuxième jour m’a fait tourner en rond jusqu’à revenir à mon point de départ…

Ayant eu l’opportunité de tester sur un même produit (SpectraLayers) la distribution indé pendant 6 mois et la distribution par un gros éditeur (Sony) pendant 1 an, je vais tenter d’esquisser un bilan des 2 modèles en comparant les différentes variables en jeu; bilan qui n’est bien sur représentatif que de ce cas particulier, mais dont certains paramètres peuvent j’imagine s’appliquer à d’autres projets.

Le logiciel

Si Spectral Layers (la version indé) et SpectraLayers (la version Sony) sont sensiblement le même produit, plusieurs détails les distinguent néanmoins:

-Que ce soit pour un livre ou un logiciel, un éditeur apporte souvent un regard neuf sur un projet; plusieurs remarques pertinentes ont été discutés et prises en compte concernant l’ergonomie de l’interface, la documentation a été entièrement refaite et quelques fonctions ajoutées.
-Intégrer le catalogue d’un éditeur implique de passer par son contrôle qualité (QA), une étape éprouvante pour une première version, mais le logiciel a sérieusement gagné en stabilité par rapport à un auto-contrôle indé reposant en grande partie sur la bonne volonté des beta-testeurs (moins de 5% s’impliquent vraiment).

-Le nom Spectral Layers a du être changé pour que le dépôt de marque puisse être effectué, les termes “spectral” et “layers” ayant chacun individuellement été déposés par des entreprises liés à l’informatique. Très perturbant sur le moment, surtout après trois ans d’un travail acharné sous le même nom, le compromis SpectraLayers a été adopté pour rester au plus proche du nom original.
-La marque Sony a été apposée aux endroits appropriés (”rebranding” distributeur), Divide Frame restant concepteur et propriétaire du logiciel.

Image hosted by uppix.net

Il s’est écoulé environ 5 mois pour que toutes ces étapes soient validées, à partir de la version indé déjà distribuée.

Droits d’auteur et prix de vente

En tant qu’indé et ne passant par aucun circuit type Steam (puisqu’il s’agit d’un soft pro, et qu’à l’époque il n’était pas du tout question que Steam s’attaque à ce marché), je recevais la quasi-totalité des bénéfices des ventes effectués sur Spectral Layers (moins la commission de Paypal, le logiciel étant vendu directement en distribution numérique via le site de ma boite).

En passant par un éditeur, la situation est évidemment différente. Surtout quand il s’agit d’un éditeur à part entière, et pas un simple distributeur comme Steam ou l’Apple Store. Mon pourcentage sur les ventes est donc minoritaire (mais néanmoins meilleur que dans l’édition de livres).
D’autre part il a été décidé de réduire de moitié le prix des licences pour être plus en harmonie avec les produits audio pro courants (et attaquer un marché un peu plus large que le marché de niche que je ciblais initialement).

La communication

En tant qu’indé, on ne peut qu’espérer un buzz autour de son produit pour communiquer à moindre frais, la moindre campagne de communication devenant une occupation à plein temps, et le budget faisant généralement défaut pour faire appel à une agence spécialisée. C’est donc sur le buzz qu’a été lancé Spectral Layers, autour d’une bande-annonce montrant le concept et quelques possibilités du logiciel.
Le démarrage a été timide tant que la vidéo est resté dans les (rares) médias français qui se sont penchés dessus, mais le compteur et les contacts ont rapidement décollés après avoir harcelé individuellement les rédacteurs d’engadget jusqu’à décrocher une news.
Le buzz ayant été lancé quelques mois avant la disponibilité réelle du logiciel, le but était de sonder les réactions et pouvoir récolter quelques gros testeurs que je pourrais citer lors de la mise sur le marché (ce qui a finit par arriver) pour appuyer la crédibilité du produit. Lors du lancement j’ai recontacté tous ceux qui s’étaient manifesté, et envoyé des licences gratuites à quelques sites web. Peu ont finit par publier un test…

L’éditeur semble quand à lui connaître des ficelles que j’ignore, puisque des magazines que j’avais déjà contacté et qui m’avaient ignoré se sont subitement mis à publier des reviews. De même, le moindre communiqué semble immédiatement recopié par tout un réseau de presse le jour même. Sony fait également la tournée des principaux salons audio/vidéo, principalement américains (NAB, AES, IBC…). A noter que les articles sont apparus progressivement au fil des mois, sans qu’ils semblent liés à une actualité particulière; chaque magazine/site web semblant avoir son propre temps de rédaction.

Protection et piratage

En tant qu’indé, ne souhaitant pas me louper vu mes faibles moyens de communication, j’avais appliqué une politique de protection assez stricte: algorithme anti-crack de mon crû, et distribution des binaires complets uniquement aux acheteurs (la version d’essai publique ne contenant pas le code de certaines fonctions). La version d’essai était d’ailleurs relativement restrictive (peut-être un peu trop ?) sur certains plans, ne souhaitant pas qu’un projet complet puisse être bouclé de A à Z sur une simple version démo. Sur ce plan, on peut dire que ces mesures ont portés leur fruit puisque logiciel n’a jamais été piraté/débridé sur ces 6 mois de distribution indé. J’ai par contre eu quelques retours se plaignant des restrictions un peu trop sévères.

Pour faciliter la gestion de la distribution avec l’éditeur, cette protection a été remplacé par une protection standard, avec un binaire unique faisant office de version d’essai et de version complète, et des limitations un peu plus souples. Les premiers crack sont apparus le lendemain du lancement du logiciel par l’éditeur…
En revanche beaucoup moins de plaintes concernant les limitations de la version d’essai.

Image hosted by uppix.net

Le chiffre d’affaire net

Par chiffre d’affaire net, j’entends la somme des revenus de ventes qui me reviennent directement.
Le produit a été rentable dès sa mise sur le marché, dans la mesure où on entend par rentable le fait que je n’avais rien investis/emprunté pour le développer et donc que je n’avais rien à rembourser, que les ventes me permettaient de payer mon loyer, de quoi manger, et de quoi renflouer un peu mon compte en banque qui approchait le zéro après 3 ans de développement. Ceci dit l’équipe aurait été composé de trois personnes au lieu d’une, je ne pense pas qu’il eu put être qualifié de “rentable”. Il s’agissait donc d’un niveau de vente “correct” par rapport à ma gestion du budget de développement. J’ignore comment les ventes auraient évolués en restant en distribution indé, cette période étant resté relativement courte.

En passant par un éditeur qui prend la majorité du bénéfice des ventes et avec un piratage bien plus important, il était difficile de prévoir si je m’y retrouverai; mais la force de communication de l’éditeur, son nom (Sony) et probablement aussi le fait qu’il s’agisse d’un logiciel professionnel dont la notoriété s’inscrit dans la durée (au contraire d’un jeu qui repose plus sur une actualité) sont autant de facteurs qui ont rendus l’équation gagnante au final.
Le premier trimestre de vente via l’éditeur a été plutôt bon, le suivant un peu moins (mais toujours confortablement supérieur à ce que je gagnais en tant qu’indé) et la courbe semble maintenant grimper progressivement, comme si il y avait eu un pic a l’annonce, et que le bouche à oreille se faisait maintenant petit à petit au fil des salons, reviews et autres webinars. Il semblerait donc qu’il s’installe dans un modèle économique différent d’un jeu vidéo où le gros des ventes se fait généralement dans les premiers mois, voire les premières semaines.

La contrefaçon

Effet secondaire de ce bouche à oreille, je vois apparaître les premières “contrefaçons” de SpectraLayers depuis quelques semaines… Ne venant pas d’une obscure société d’Europe de l’Est, mais d’un des plus gros éditeur de logiciels pour la création, Adobe !
Si j’utilise ce mot (contrefaçon), c’est qu’ils ne semblent pas s’être juste inspiré (après tout, je me suis bien inspiré de l’interface de Photoshop) mais ont carrément copié les propres exemples, concepts et nom de SpectraLayers… Ainsi la prochaine version d’Adobe Audition (CC) va proposer un outil pour enlever le bruit d’une sirène de police en arrière plan d’une personne parlant dans la rue, exemple étrangement identique à celui dont je me sers depuis le lancement de Spectral Layers en décembre 2011; d’autre part Adobe a montré une preview de son (potentiellement) prochain logiciel audio, “Audio Layers” (seriously ?), un logiciel qui “sépare le son en différentes couches”. Et ils ne manquent bien sur pas de s’attribuer la paternité du concept…

Si techniquement il n’y a pour l’instant pas de quoi s’affoler puisqu’il s’agit toujours du même vieux moteur statique d’Audition, à peine maquillé dans les deux cas (et qui date du temps où il s’appelait encore Cool Edit), je vais devoir sérieusement me pencher sur certaines formes de protection.

Bilan

En conclusion le bilan est globalement positif, puisque je suis gagnant en terme de rémunération et de visibilité, même si cela passe par certains à cotés (piratage, copie…). Je perd malheureusement aussi le contact direct avec une partie des utilisateurs, ce que j’essaye de compenser en surveillant les forums; mais cela m’évite les désagréments de la gestion client. Le nom Divide Frame restant associé à la création du logiciel, ceux qui souhaitent vraiment me contacter y parviennent.
Il faut néanmoins nuancer ce bilan en tenant compte de la courte durée de la période de distribution indé (6 mois) qui m’empêche d’établir de vraies conclusions à ce niveau (j’avais cependant testé ce modèle pendant 1 an sur un projet plus modeste et j’en tire des conclusions similaires, en tout cas par rapport à mon investissement), et en tenant compte de l’image assez forte de Sony qui a probablement plus de possibilités de communication que d’autres éditeurs.
D’autre part il s’agit d’un logiciel professionnel dont la communication, la courbe de vente et la répartition du piratage est certainement différente de celle d’un jeu vidéo. Et au sein du jeu vidéo le modèle est aussi certainement différent entre un jeu iOS et une prod AAA…

Il reste cependant un point indéniable: le fait de ne plus avoir à se préoccuper de la partie édition libère le développeur d’une charge assez pesante, et c’est autant de temps gagné pour les futurs projets…

Real Humans : longue vie au port USB

Jeudi 18 avril 2013 à 8:31

Coup de coeur pour cette série qui nous vient de Suède (Akta Människor sous son titre original), et qui est diffusé sur Arte depuis 2 semaines.
Dans un futur proche, des robots d’assistance à l’apparence quasi-humaine (Hubots) peuplent notre quotidien.

Real Humans

Ethique et Robotique

Par bien des aspects Real Humans rappelle Blade Runner, mais le format série lui permet d’aller encore plus loin dans les thématiques abordés et leur développement.
Libre-arbitre, esclavagisme, consommation, foi, sexualité, discrimination sont autant de sujets qui font d’étranges parallèles entre notre propre histoire et celle des machines issues de notre création.
En ancrant ces robots dans notre quotidien, la série arrive à ne pas donner qu’un seul point de vu sur chaque problématique; faisant apparaître tour à tour les bienfaits et la perversité de certaines situations, au point de nous mettre mal à l’aise face à certaines questions.

Uncanny valley

Quand l’artificiel tente de copier le réel, le réel tente de copier l’artificiel… Et cette série y réussit à merveille !
Rarement le robot humanoïde n’a été aussi bien retranscrit à l’écran (Clones m’avait aussi agréablement surpris sur ce plan), que ce soit dans l’apparence, la gestuelle et la dynamique générale du corps et des expressions faciales. Ce ne sont plus de simples acteurs mimant des robots, mais de véritables robots qui semblent évoluer sous nos yeux…

Trailer Arte

Si la narration et la mise en scène reste assez classique, la série est agréable à suivre et riche en rebondissements. Les épisodes 5 et 6 sont diffusés ce soir sur Arte…

Tous les 2/3 ans les fabricants de vidéoprojecteurs nous sortent une bonne surprise… Après Optoma et Acer qui avaient ouvert la voie à la projection 720p en 2008 pour 700€, puis toujours Acer et Optoma avec des vidéoprojecteurs 720p 3D à 600€ en 2011, c’est cette fois BenQ qui casse le marché avec le W1070:
Pour 800€, le particulier a maintenant accès à la projection 1080p 3D ! Ce genre de combo était impossible à trouver à moins de 2000€ il y a encore 6 mois…

Etant fan de projection HD et de 3D je me suis donc rué sur l’affaire, et après une petite semaine de tests c’est l’occasion de faire un retour sur les performances du produit, ainsi que sur l’évolution des normes 3D.

Dispositif Home-Cinéma

Un vidéoprojecteur tout seul a peu d’utilité en dehors des présentations PowerPoint, chez le particulier il s’inscrit généralement dans un dispositif home-cinéma. A l’occasion de ce changement de projecteur j’en ai profité pour refaire tout mon circuit, en minimisant les coûts autant que possible.

En entrée audio/vidéo il me fallait pouvoir choisir facilement entre l’ordinateur, la freebox, et une console.
En sortie vidéo le signal devait être envoyé à la fois sur le téléviseur ou le vidéoprojecteur.
En sortie audio un ensemble 5.1 devait pouvoir s’activer à la demande (quand le vidéoprojecteur est utilisé par exemple).
Enfin, ne pas oublier le support plafond, l’écran de projection (rétractable pour se superposer devant le téléviseur), les lunettes 3D et les cables HDMI…

Le combo le moins cher que j’ai trouvé comprend:
Ensemble LG SR906SB: Kit 5.1+Amplificateur 3 entrées HDMI/1 sortie HDMI - 215€
Duplicateur de signal 1 entrée HDMI/2 sorties HDMI - 30€
Support plafond vidéoprojecteur - 20€
Ecran: Store IKEA Tuplur - 30€-35€
6 cables HDMI génériques, à noter que des cables HDMI 1.3 font aussi l’affaire pour la 3D - 30€-60€
4 paires de lunettes DLP 3D TrueDepth - 168€ (contacter TrueDepth pour un rabais)

On se retrouve avec le schema suivant :
Schema HC

Test Son et 2D

L’ensemble LG sonne très bien pour son prix, le design des enceintes est plaisant et l’amplificateur permet une calibration aux petits oignons: calibrage automatique, réglage manuel de chaque enceinte et plusieurs modes de traitements qui se révèlent assez efficace (par exemple pour atténuer les écarts dynamiques dans le mixage des films entre dialogues et explosions, pratique en appartement !). Il est également pass-through, le signal HDMI continue donc d’être véhiculé quand l’ampli est éteint.
Deux détails technique à noter:
-attention au mode ARC (audio return channel) de votre téléviseur, si celui-ci est activé votre téléviseur peut se retrouver muet (le son de la télé étant transmis par retour HDMI à l’ampli).
-pour utiliser le son en sortie HDMI de votre carte graphique il ne faut pas oublier de connecter la sortie SPDIF de votre carte son (sur mon ordinateur le connecteur se situe sur la carte mère) à l’entrée SPDIF de votre carte graphique (en tout cas pour NVIDIA). J’avais perdu le cable fournit avec ma carte graphique, j’en ai bricolé un en connectant des restes de connecteurs pour carte mère (il s’agit juste de 2 fiches).

En ce qui concerne l’image du vidéoprojecteur, elle se situe dans le haut du panier pour un vidéoprojecteur de ce prix !
Outre la résolution full-HD qui permet d’apprécier le grain sur les films pellicule et le piqué de l’image sur les films tournés en numérique (ou générés par ordinateur), le contraste et les noirs sont bons (particulièrement en mode smart-eco) et les couleurs bien calibrés de base. Pas d’effet arc-en-ciel perceptible, et le vidéoprojecteur gère le 1080p24 (framerate identique au codage blu-ray). Coté calibrage, il offre même le luxe de proposer un lens-shift vertical (certes minime) et des réglages ISF.

Test 3D

Point d’orgue du dispositif, il n’a pas été tout de suite évident de comprendre les paramètrages optimaux pour la 3D selon la configuration, malgré 2 ans passé avec un vidéoprojecteur 3D Vision…
Ce vidéoprojecteur a néanmoins l’avantage de reposer sur les normes DLP Link et HDMI 1.4, ce qui permet d’utiliser n’importe quelle paire de lunette compatible DLP Link et n’importe quel signal 3D, qu’il vienne de l’ordinateur, d’une box ou d’une console.
Et une fois correctement configuré, le résultat se montre aussi à la hauteur :
La combinaison de la technologie DLP, du taux de rafraichissement de 144Hz (plus élevé que la moyenne) et des lunettes True Depth donne un rendu saisissant: la perte de luminosité est faible, aucun scintillement discernable et une absence totale d’images fantôme !
Les blu-ray 3D passent sans problème sur la Freebox Revolution (voir notes ci-après), les mkv/mp4 side-by-side aussi (ainsi que sur le PC), et youtube 3D et les jeux vidéos marchent sans problème depuis le PC (en mode side-by-side).
A noter que la norme HDMI 1.4 semble accessoire dans la mesure ou la Freebox Revolution, pourtant seulement compatible HDMI 1.3 arrive à lire des blu-ray 3D en frame-packing 1080p24.

Pour arriver à faire marcher le tout, il faut bien faire attention aux détails suivant:
-L’affichage du Freebox Player doit être configuré en 1920×1080 50Hz ou 60Hz entrelacé (indispensable pour lire les mkv/mp4)
-Les paramètres blu-ray du Freebox Player doivent être configurés pour activer le 1080p24 en lecture blu-ray
-L’ordinateur doit être configuré en 1920×1080 60Hz entrelacé (1080i60) avec la source d’affichage principale étant le vidéoprojecteur (qui peut apparaitre sous le nom de l’ampli, LG) pour pouvoir lire les vidéos youtube en side-by-side et les jeux via le driver Tridef en mode side-by-side
-Crysis 2 et 3 (et d’autres jeux récents) possèdent nativement un mode side-by-side
-Doom 3 BFG possède nativement un mode side-by-side, néanmoins seulement valable en 1280×720p60 avec ce vidéoproj
-Je n’ai pas réussi à lire un blu-ray 3D sur l’ordinateur, ni PowerDVD ni WinDVD n’ont voulu activer la sortie HDMI 3D (et TotalMedia Theater ne propose pas cette option, en gros seule l’option 3D Vision est possible). Peut-être est-ce du à ma génération de carte graphique (GTX 260), l’HDMI 1.4 n’étant officiellement supporté qu’à partir des GTX 4xx.
edit: j’ai finalement pu activer les sorties HDMI 1.4 et 3DTV Play en ne laissant que le videoproj actif (desactivation de l’écran principal non 3D Vision)
-Le duplicateur de signal vidéo n’arrive pas à gérer le 1080p24 quand le televiseur est branché. Je débranche donc temporairement le téléviseur (+reset box et duplicateur) quand je veux regarder un blu-ray 3D.

En conclusion

Les normes se sont beaucoup simplifiés et ont gagné en qualité (merci le tout HDMI !) et si coté signal son et 2D je n’ai rencontré aucun problème notable, il faut néanmoins être attentif à l’inter-compatibilité des différents acteurs 3D de la chaine, particulièrement sur les modes d’affichage 3D avec lesquels le vidéoprojecteur est compatible (se référer au manuel). De manière générale, privilégier des équipements HDMI 1.4 pour éviter les surprises de ce coté.

Du coup je revend mon équipement de videoprojection 720p 3D Vision précédent, si il y a des amateurs à petit budget !