Menu

septembre 2010 Posts

Lire du son avec DirectX

Aujourd’hui je vous propose une petite classe que j’ai écrite et qui permet de jouer un son en WPF (et donc par extension sur Microsoft Surface). En effet, par expérience je n’était pas satisfait des objets (MediaElement, SoundPlayer, etc.) fournis par défaut dans le Framework .Net car soit ils leurs manquent des fonctionnalités (par exemple la durée du média pour le SoundPlayer), soit ils sont compliqués a mettre en place (MediaElement qui doit forcément être dans l’arbre visuel). J’ai donc pris le problème a bras le corps et décidé d’écrire un petit bout de code avec les assemblies DirectX Managées.

La classe est simple et fait des opérations basiques, a savoir lire un fichier audio sur le disque dur et nous notifie quand elle commence la lecture ou l’arrête. On peut bien sûr allez plus loin, mais je donne ici plus un squelette qu’une classe ultra complète. Pour l’utiliser, il faut installer le SDK DirectX pour pouvoir utiliser l’assembly Microsoft.DirectX.AudioVideoPlayback. Si vous ne désirez pas installer le SDK je vous la fournis ci-dessous.

DirectAudioPlayer (3,95 kb)

AudioVideoPlayback (20,98 kb)

L’avantage de cette petite classe c’est qu’en passant par DirectX, on bénéficie des codecs installés sur son poste car cela passe par DirectShow. En espérant que cela vous sera utile.

Read More

Surface : Affine2DInertiaProcessor

Pour faire suite à mon dernier billet, je vais maintenant expliquer une autre classe du SDK Microsoft Surface, l’Affine2DInertiaProcessor. Cette classe permet de gérer de l’inertie sur des objets. Comme pour l’Affine2DManipulationProcessor, cette classe s’utilise quasiment pareil.

La principale utilisation de cette classe réside dans l’ajout d’une inertie sur un objet suite à une manipulation (le plus souvent grâce à un Affine2DManipulationProcessor) pour ajouter du réalisme dans son interface NUI (Natural User Interface).

Le code ci-dessous vous montre comment utiliser l’Affine2DInertiaProcessor après une manipulation.

Read More

Projet CodePlex : Surface Toolkit

Je vous présente mon premier projet CodePlex, un Toolkit pour Microsoft Surface. Il contient une série de contrôles, behaviors, effects et utilitaires pour vos projets Surface. Vous avez les sources, c’est libre de droit, j’attend vos retours avec impatience, enjoy 🙂

Ca se télécharge ici : http://blacksurfacetoolkit.codeplex.com/

Read More

Surface : Affine2DManipulationProcessor

Quand on travaille sur Microsoft Surface, il y a une chose qui nous préoccupe, c’est la compréhension des gestuelles que peuvent faire les utilisateurs sur la table. Tap, ContactDown, agrandissement, rotation, translation, etc… Comment savoir, et surtout comment traiter cette information de façon efficace.

Le SDK Microsoft Surface nous apporte un outil pour cette problématique, l’Affine2DManipulationProcessor. Cette classe assez méconnue, qui se trouve dans le namespace Microsoft.Surface.Presentation.Manipulations, permet facilement de connaitre les gestuelles présente sur la table, voir même de les filtrer.

Le principe est simple, une fois instancié, cette classe permet de scruter et d’analyser les contacts sur la table. Pour faire simple, on donne à l’Affine2DManipulationProcessor des contacts à scruter et celle-ci les analyses pendant tout leur cycle de vie et nous informe des gestuelles qui peuvent être déduite de l’évolution de ses contacts.

Les manipulations sont calculées par rappart à un container UIElement donné. Au moment de l’instanciation de l’Affine2DManipulationProcessor, il y a deux paramètres. Le premier est le type de manipulation que l’on veut observer et le second dans quel contexte graphique. Ainsi, une manipulation est toujours déterminée par son container source, même si celui-ci subit des transformations (rotation, translation, etc..) l’Affine2DManipulationProcessor fournira des informations de manipulation comme si celui-ci n’avait subit ses transformations.

Read More