[MCP] Un peu de théorie avec les SysEx

Entrons dans le vif du sujet: le détail du protocole!

Comme annoncé dans mon article précédent, le controleur et le DAW (STAN en français) dialoguent entre eux via MIDI, et plus particulièrement via des messages de controle MIDI ou des SysEx.

Si les données transmises ou reçues font plus que 3 bytes, alors le protocole utlisera des SysEx, sinon des messages MIDI «standards» seront utilisés.

Tout les bytes transmis sont noté en utilisant le format Hexadécimal (0xF0, 0x6C par exemple). Toutes les infos que je présente ici sont dispo en anglais, et peut-être un peu moins détaillée dans le Manuel LogicControl

Les messages SysEx

Ceux-ci commencent par un 0xF0 indiquant un début de trame.

La trame commence par un header de 5 bytes comme par exemple F0 00 00 66 00 :

  • F0 : début de la trame SysEx,
  • 00 00 66 : id du fabricant (mackie)
  • 00 : id du produit (je suppose)

Dans la suite de cet article, je simplifierai ce header en <hdr>

Afficher des données sur l’écran LCD

  • Tous les messages concernant le LCD commencent par le <hdr> suivi du byte 0x12.
  • Le byte suivant détermine la position à laquelle le message devra être affiché.
  • Le texte du message arrive ensuite (généralement 6 caractères)
  • Enfin, le message SysEx termine avec le byte 0xF7.

 

La surface MCU possède 8 pistes à controler et un écran LCD sur lequel il est possible d’afficher 2 lignes de 56 caractères. Un rapide calcul nous permet de determiner que chaque piste nous permettra d’afficher 7 caractères.

Chaque position de caractère est identifié par une valeur Hexa:

  • allant de 0x00 à 0x37 (soit 56 valeurs) pour la première ligne,
  • et de 0x38 à 0x6F pour la seconde ligne.

Soit une représentation:

lcd_representation
Cliquer pour agrandir

 

Prenons l’exemple d’un SysEx:

F0 00 00 66 00 12 38 ***4C 35 30 52 35 30 20*** FC
 <hdr>          |   \_position                    \_end of SysEx
           LCD message

 

  • 5 chars : F0 00 00 66 00  qui correspond à l’identifiant du device,
  • 12 : qui indique le début du message LCD
  • Puis : 38 4C 35 31 52 34 39 20 8
  • Donc: à partir de l’offset 38 (2e ligne, 1er caractère) on doit donc afficher :
SysEx 4C 35 31 52 34 39 20
Affiche L 5 1 R 4 9 (espace)

 

Si vous suivez jusque là, on a donc un affichage de Panoramique (PAN)  sur la 2e ligne, 1er afficheur : L51 R49  (j’ai du me rater dans le DAW pour faire un PAN pareil icon_redface.gif )

 

La suite la prochaine fois avec un peu de mise en pratique! 😀

Courte introduction à Arduino

Me revoilà sur le blog après un petit moment, j’ai décidé aujourd’hui de vous parler de l’Arduino dont vous avez certainement dû entendre parler si vous vous intéressez au monde du libre ou de l’électronique.

Cet article s’adresse aux non-initiés, les termes employés sont assez basiques, bref, ce n’est qu’une introduction 😉

Un Arduino, qu’est-ce que c’est?

C’est une petite carte électronique pas beaucoup plus grande qu’une carte de visite qui possède un microcontroleur programmable et plusieurs entrées et sorties numériques et analogique.

Le gros point positif de cette carte, c’est qu’elle est open-source sous licence Creative Commons (By-SA) ce qui veut dire que vous pouvez en faire ce que voulez du moment que vous partagez ou distribuez votre travail sous les même conditions.

Un Arduino, à quoi ça sert?

C’est bien beau tout ça, mais concrètement, elle sert à quoi ta carte électronique?

Et bien, là dessus, le sujet est vaste! Avec un Arduino, on est bien souvent limité que par son imagination (ou son manque de moyens). En effet, les entrées et sorties permettent de déclencher des évènements en fonction des états de celle-ci, ce qui peut ce révéler bien pratique pour de la domotique par exemple: « S’il fait noir dehors, alors tu fermes les volets ».

Et comment s’en sert-on?

Forcement, ton truc open-source n’est disponible que sur ton ordinateur avec le pingouin partout là non?

Que neni! Qui dit open-source ne dit pas forcément GNU/Linux! L’avantage est que la plateforme de développement Arduino est disponible pour tous les systèmes d’exploitations Windows/MacOS/Linux. Et si vous avez un système particulier, les sources sont fournies, vous pouvez donc compiler vous même.

Il faut juste quelques connaissances en programmation (un Arduino se programme en C) et des bases d’électronique. Rien de bien méchant, même lorsqu’on ne connait pas et qu’on est motivé.

Il suffit de brancher l’Arduino à son ordinateur en USB, démarrer le programme sur l’ordinateur et de laisser son inspiration guider ses doigt sur le clavier (ou de charger des exemples fournis avec l’IDE) de brancher des fils sur la carte selon ses envies sans même avoir à sortir le fer à souder.

Ça coûte cher?

Oh là! je te vois venir avec ton super truc, tu peut faire ce que tu veux avec, ça doit donc coûter super cher! »

Pas du tout! Étant open-source, chacun peut fabriquer soit-même son Arduino, c’est pourquoi beaucoup de magasins en ligne proposent leur version de l’Arduino (certaines fonctionnalités sont déjà intégrés, le look général change un peu).

Pour ma part, j’ai commandé chez Adafruit (30$ donc environ 22€). La carte est une carte Arduino UNO officielle.

Et comment je branche ça avec mon installation existante?

Et ton truc arriverai à me faire un café quand je lui demande depuis mon téléphone en bluetooth, puis qu’il m’envoie un tweet pour me dire que c’est prêt et que lorsqu’il n’y a plus de café, il m’affiche ça sur un afficheur led tout en me lançant the « Eye of the Tiger » sur ma chaine hifi ?

Oui, tout à fait! Et même plus encore!

Ce qui est bien avec l’open source, c’est la communauté qui gravite autour de ce genre de projet, ainsi que l’évolutivité du matériel!

L’Arduino est évolutif grâce à ses « shields » – bouclier en français – comprenez ici module d’extension qui vient s’ajouter directement sur la carte Arduino pour accroître les possibilité de celle-ci.

Il existe toute sorte de « shield » et bien sur il est même possible de fabriquer les sien 😀

J’ai donc acheté un shield Ethernet (toujours chez Adafruit) qui me permet d’insérer mon Arduino dans le réseau, en faire un serveur web, un client qui se connecte à un serveur régulièrement pour transmettre des informations ou en récupérer, etc…

Mon Arduino avec son shield ethernet et sa plaque de prototypage

Conclusion

La présentation de ce magnifique outil touche à sa fin. Si vous voulez vous initier à l’électronique, la programmation, la domotique ou autre, n’hésitez pas! C’est pas cher et amusant (il est facile de passer plusieurs heures dessus à tenter de nouveaux trucs sans s’en rendre compte).

Par la suite, je vous présenterai surement quelques projets sur lesquels je me suis lancé avec mon Arduino.

Si ça vous à tenté, lancez vous dans l’aventure Arduino!

Allez faire un tour sur SKYDUINO, ça regorge de tutos vidéo créés par un passionné, c’est super clair, les sources de ceux-ci sont toutes téléchargeable et c’est mis à jour très régulièrement!

 

Sources:

– http://arduino.cc/ (en)  (la version fr n’est pas mise à jour régulièrement)

– http://fr.wikipedia.org/wiki/Arduino (fr)

– C’est quoi Arduino? Document en français, écrit par un enseignant, présentant Arduino : http://www.louisreynier.com/fichiers/KesacoArduino.pdf (fr)

– Les excellents tutoriaux de LadyAda sur Adafruit (en)

Special characters and LinuxLes caractères spéciaux et Linux

Since I’m in Sweden, I sometime have to write some documents in Swedish, of course, the alphabet is a bit different than French one, there is the å, ä and ö letters in addition.

The problem with our AZERTY(fr) keyboard, which is non-ergonomic at all and don’t have any other characters than French ones, it’s not so easy to write something in Swedish. With Windows, there is the combination which doesn’t make any sens, as ALT+number you have to remember. With Linux, the solution is the compose key.

As its name says, the compose key is used to make compositions of letters, for example ů = o u   or   í = i ‘  It’s visual, and you don’t have to remember the code numbers, you just have to imagine which characters you may need to get a new one.

With gnome, you can go in Preferences → Keyboard → Layout → Compose Key Position and change this key.

You can also edit (or create) the .Xmodmap file in your home and add this line:

keycode 135 = Multi_key

Why 135? It’s the menu-key’s code on my keyboard (between Alt Gr & the right Ctrl).

If you don’t know the key-code, you can use Xev:

Xev

Then, press on your keyboard, every time you press one, informations about theses are returned:

You have to use this « keycode » on the .Xmodmap file.

To use this file, it’s easy, just use this in a terminal:

xmodmap ~/.Xmodmap

That’s all! Now you can make nice sentences with special characters by using the compose key + combinations!

Skål!

Depuis que je suis en suède, il m’arrive de devoir écrire quelques documents en suédois, bien sur l’alphabet suédois est légèrement différent du Français, il comporte les lettres å, ä, et ö en plus.

Le problème est qu’avec notre bon vieux clavier AZERTY pas ergonomique pour un sous et dénué de tout caractères autres que français, il n’est pas évident d’écrire en Suédois avec. Sous Windows, il y a les combinaisons qui ne veulent rien dire, du type ALT+nombre qu’il faut retenir. Sous linux, la solution, c’est la touche « compose ».

Comme son nom l’indique, la touche compose permet de faire des compositions de lettres, du type ‘œ = o e’, ‘ů = o u’ ou encore í = i ‘
C’est assez visuel, et ne demande pas de retenir de numéros, simplement imaginer de quels caractères on a besoin pour en faire un nouveau.

Sous gnome, il est possible d’aller dans Preferences → Keyboard → Layout → Compose Key Position et de changer cette touche.

Sinon, vous pouvez aussi éditer (ou créer) le fichier .Xmodmap dans votre home et y ajouter la ligne suivante:

keycode 135 = Multi_key

Pourquoi 135? C’est le code de la touche menu sur mon clavier (entre Alt Gr et Ctrl de droite).
Si vous ne connaissez pas le code de la touche voulue, vous pouvez utiliser Xev:

Xev

Vous tapez ensuite sur votre clavier, à chaque touche pressée, des informations sur ces touches sont renvoyés:

C’est donc ce « keycode » que vous avez à remplacer dans le .Xmodmap.

Pour utiliser ce fichier, rien de plus simple, tapez juste dans un terminal:

xmodmap ~/.Xmodmap

Voilà! Maintenant, vous pouvez faire des belles phrases en utilisant la touche compose + les combinaisons!

Skål!

Spotify: Le streaming audio

On Monday, Gunnar Kreitz from Spotify gave us a network lecture, about the Peer-2Peer protocol that Spotify use and its detailed technical description, it’s a good occasion for me to introduce you this service!

To begin with, what is Spotify?

Pour ceux qui ne savent pas, Spotify est un logiciel qui permet d’écouter de la musique en ligne légalement. Le choix des titres est plutôt impressionnant (plus de 10 millions) et le nombre d’utilisateurs aussi!

Inutile de préciser que Spotify est suédois, la compagnie possède un serveur à Stockholm et un à Londres (enfin, quand je parle de serveur, c’est plutôt un parc de serveur, vu la quantité d’informations qu’il faut stocker). Où que vous soyez, votre client se connectera au serveur le plus proche.

L'interface de Spotify

L’avantage de Spotify est que comparé à d’autres plateformes de streaming basé sur le navigateur web, il propose une expérience utilisateur plus intéressante, et permet de mettre en cache la musique sur le disque, ainsi qu’utiliser le protocole P2P pour ne pas surcharger leurs serveurs.

Spotify permet aussi de gérer des playlists, et de se connecter avec Facebook pour obtenir les playlists de ses amis (à condition que les dites playlists soient publiques).

Spotify se présente en différentes versions (3 types d’abonnements):

  • La version gratuite: limité à 20h d’écoute mensuelle avec de la pub, avec parfois 20h supplémentaires par semaine,
  • La version Unlimited: comme son nom l’indique, écoute illimité mais toujours avec quelques pubs d’une 15aine de secondes. Il faudra débourser 5€/mois ou bénéficier d’une invitation.
  • La version Premium: écoute illimité, pas de pub et accessible depuis votre téléphone (quasiment tout les téléphones récents sont compatibles). Il est est aussi possible de synchroniser ses playlists en mode hors-ligne 30jours sans se connecter. Cet abonnement coûte 10€/mois.

Petit point noir, le client Linux ne fonctionne qu’avec l’abonnement premium, vous êtes obligé de passer pas la version Windows sous wine.

L’API Spotify est dipsonible à tout développeurs souhaitant développer des applications, je pense que je vais tester pour voir.

Plus d’infos et téléchargement: Spotify

Lundi, Gunnar Kreitz de Spotify nous a donné un cours de réseau, et plus particulièrement sur le protocole Peer-2-Peer qu’utilise Spotify ainsi que son fonctionnement, c’est donc l’occasion de vous parler de ce service!

Tout d’abord, Spotify, c’est quoi?

Pour ceux qui ne savent pas, Spotify est un logiciel qui permet d’écouter de la musique en ligne légalement. Le choix des titres est plutôt impressionnant (plus de 10 millions) et le nombre d’utilisateurs aussi!
Inutile de préciser que Spotify est suédois, la compagnie possède un serveur à Stockholm et un à Londres (enfin, quand je parle de serveur, c’est plutôt un parc de serveur, vu la quantité d’informations qu’il faut stocker). Où que vous soyez, votre client se connectera au serveur le plus proche.

L'interface de Spotify

L’avantage de Spotify est que comparé à d’autres plateformes de streaming basé sur le navigateur web, il propose une expérience utilisateur plus intéressante, et permet de mettre en cache la musique sur le disque, ainsi qu’utiliser le protocole P2P pour ne pas surcharger leurs serveurs.
Spotify permet aussi de gérer des playlists, et de se connecter avec Facebook pour obtenir les playlists de ses amis (à condition que les dites playlists soient publiques).

Spotify se présente en différentes versions (3 types d’abonnements):

  • La version gratuite: limité à 20h d’écoute mensuelle avec de la pub, avec parfois 20h supplémentaires par semaine,
  • La version Unlimited: comme son nom l’indique, écoute illimité mais toujours avec quelques pubs d’une 15aine de secondes. Il faudra débourser 5€/mois ou bénéficier d’une invitation.
  • La version Premium: écoute illimité, pas de pub et accessible depuis votre téléphone (quasiment tout les téléphones récents sont compatibles). Il est est aussi possible de synchroniser ses playlists en mode hors-ligne 30jours sans se connecter. Cet abonnement coûte 10€/mois.

Petit point noir, le client Linux ne fonctionne qu’avec l’abonnement premium, vous êtes obligé de passer pas la version Windows sous wine.

L’API Spotify est dipsonible à tout développeurs souhaitant développer des applications, je pense que je vais tester pour voir.

Plus d’infos et téléchargement: Spotify

(Ça va bientôt faire 2 ans que ça existe, je sais mais bon, une piqûre de rappel de fait jamais de mal.)

Jquery & Php: Créer une arborescence de fichiers

Créer rapidement une interface web en Jquery permettant de mettre à disposition des fichiers est  facile à mettre en place. Demonstration avec JqueryFileTree!

Démonstration de JqueryFileTree

L’utilisation du plugin JQueryFileTree nécessite Jquery, bien entendu,  ainsi que JQueryEasing (pour les animations).

Téléchargez donc le plugin JQueryFileTree ainsi que ces 2 fichiers et placez les dans le répertoire de votre choix.

Créez les liens vers ces fichiers dans la section head de votre page index.php

<link href href="css/style.css" type="text/css" />;
<link rel="stylesheet" href="css/jqueryFileTree.css" type="text/css" />;
<script src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3"></script>;
<script type="text/javascript" src="js/jqueryFileTree.js"></script>;

Ensuite, créez un élément <div> ayant pour id « container_id » par example, vous pouvez alors appeler le script avec:

<script type="text/javascript">
	$(document).ready( function()
	{
			$('#container_id').fileTree({
				root: './files/',
				folderEvent: 'click',
				expandSpeed: 750,
				collapseSpeed: 750,
			},  function(file) {
					open(file);
			});
	});
</script>;

N’oubliez pas de changer l’option « root: » en choisissant le dossier qui contiendra les fichiers à partager.

Par défaut, le connecteur php est utilisé (jqueryFileTree.php) , mais vous pouvez aussi utiliser un des nombreux connecteurs écrit dans différents languages: ASP, ASP.NET, JSP, Ruby, Python… Pour cela, vous devez ajouter à la liste des options lors de l’appel du plugin:

script: 'jqueryFileTree.py'

Résumé des paramètres que vous pouvez utiliser:

Paramètre Description Valeur par défaut
root dossier racine pour l’affichage /
script l’emplacement du fichier AJAX à utiliser coté serveur jqueryFileTree.php
folderEvent Evénement déclenchant Développer/Réduire click
expandSpeed Vitesse à laquelle les branches s’élargissent (en millisecondes), -1 pour n’utiliser aucune animation 500
collapseSpeed Vitesse à laquelle se replient les branches (en millisecondes), -1 pour utiliser aucune animation 500
expandEasing Effet progressif à l’ouverture none
collapseEasing Effet progressif à la fermeture none
multiFolder Limiter ou non le navigateur à un sous-dossier à la fois true
loadMessage Message à afficher pendant le chargement (peut être du HTML) Chargement…

Voici une archive avec un exemple de base: JQueryFileTree_example.zip

Vous pouvez aussi voir une démo sur mon site sur cette page