Master 2013 2014
psar
programmation sous iOS, le Balezator


Site :Trac-programmation sois iOS, le Balezator
Lieu :UPMC (2 étudiants)
Encadrant : Fabrice Kordon et Thomas Baspeyras

Description

Le Balezator — Projet de programmation sous iOS

Projet de programmation sous iOS v2014

Le Balezator

Application de pédagogie musicale

Client : Thomas Baspeyras
Courriel : antichambre (arobase) orbite (point) info
Enseignant : Fabrice Kordon
Courriel : fabrice (point) kordon (arobase) lip6 (point) fr

But

Produire une application de pédagogie musicale de niveau publiable. Il existe deux prototypes ayant déjà permis de défricher les spécifications souhaitées et le portage sur iPhone/iPad. Le travail demandé est susceptible d'intéresser deux programmeurs :

  • Produire un module sonore permettant de jouer un son en fonction d'une note, sur une empreinte mémoire légère et adaptable à divers instruments.
  • Intégrer le module sonore, le travail effectué sur le prototype l'année dernière et les fonctions manquantes afin de finaliser une application complète

Historique

L'apprentissage de la musique présente des aspects ludiques, et quelques aspects fastidieux. L'une des nécessités les plus ennuyeuses est de devoir mémoriser l'emplacement des notes sur l'instrument ou sur la portée. Pour combler mes lacunes de guitariste amateur, j'ai écrit pour mon propre usage une application javascript : le Balezator.

Le principe est simple : le Balezator indique une case sur une corde de la guitare (point d'interrogation sur la pastille jaune, visible sur la copie d'écran ci-dessus), et l'on doit identifier la note correspondante à l'aide des boutons C (do), C# Db, D (ré), etc. C'est bête, mais efficace.

Le même principe peut être appliqué à d'autres problèmes de mémorisation. Le Balezator se décline donc, pour l'apprentissage des accords :

Pour la basse :

Ou pour l'apprentissage du solfège :

Le Balezator réside sur mon site personnel (http://www.orbite.info/balezator). Au départ, cette mise en ligne devait seulement me servir à utiliser l'application n'importe où... C'est rapidement devenu la page la plus visitée du site. Depuis que le Balezator est connu sur les forums d'apprentis guitaristes et d'apprentis bassistes, je reçois de temps en temps des courriels me demandant des fonctions nouvelles, ou s'il existe une version pour iPhone ou autre plateforme mobile.

En 2013 un projet de portage du Balezator sur iPhone a été soumis à un étudiant. Une application prototype a été produite, qui a permis de dégrossir l'architecture du projet, de compiler un prototype semi-fonctionnel et de réévaluer les besoins pédagogiques :

Le Balezator pour iOS : bientôt sur vos mobiles !

Le Balezator pour iOS doit faire mieux que son ancêtre javascript sur les points suivants :

  • L'audition des notes demandées par l'application et proposées par l'utilisateur
  • L'adaptation à différentes tailles d'interface graphique (iPhone, iPad)
  • La persistance des préférences
  • La persistance et la présentation des taux de réussite de l'utilisateur
  • L'inclusion d'une mini-documentation pédagogique
  • La localisation linguistique de l'interface et de la documentation

De plus le projet 2014 doit faire mieux que le prototype 2013 sur les points suivants :

  • L'exercice de mémorisation des notes visualisées sur le manche en désignant leur nom doit être complété par l'exercice réciproque : désigner la note sur le manche en fonction du nom proposé
  • Le module sonore est entièrement à construire
  • L'application résultante doit être entièrement fonctionnelle, au delà du stade de prototype

Lot 1 : Le module sonore

Le problème de l'audition des notes est que les fonctions audio standard d'iOS sont bien adaptées à la stricte reproduction d'un contenu pré-enregistré, moins à une reproduction « synthétique ». Or, il ne serait pas de bon goût d'enregistrer toutes les notes à reproduire, ni du point de vue informatique (lourde occupation mémoire), ni du point de vue de la prise de son (des dizaines de prises). Il s'agit plutôt d'émuler un synthétiseur type lecteur d'échantillon, c'est à dire de pouvoir au moins lire les échantillons sonores à une vitesse variable selon la hauteur de la note souhaitée, et mieux, de pouvoir en moduler l'amplitude pour en contrôler la durée (enveloppe ADSR).

En outre le module sonore doit être polyphonique (car après le Balezator des notes viendra sûrement celui des intervalles puis celui des accords), et adaptable à d'autres sonorités d'instrument.

Enfin, il serait souhaitable, chaque fois que cela a un sens, de prendre appui sur la norme Musical Instrument Digital Interface. Le MIDI est un protocole de communication élaboré par les fabricants d'instruments électroniques au début des années 1980, rustique, bien conçu, remarquablement standardisé et encore abondamment en usage aujourd'hui. Le MIDI fournit par exemple une numérotation standard des notes.

Il est à noter que des bibliothèques et des applications ont (bien sûr) déjà été écrites dans des buts similaires. Certaines sont open source, et constituent probablement un excellent point de départ pour ne pas réinventer l'eau tiède.

Lot 2 : Programmation de l'application

Le prototype produit en 2013 implémentait une architecture modulaire, une interface graphique adaptée (manche de guitare et clavier des notes), et le cœur de l'application (proposer des notes aléatoirement et attendre la réponse de l'utilisateur). Le projet 2014 implique de refondre une spécification en tenant compte du prototype existant et des demandes nouvelles (principalement : pouvoir effectuer l'exercice dans les deux sens), puis de programmer une application complète intégrant le module sonore, les spécifications nouvelles et les spécifications initiales non implémentées (localisation, préférences, scores persistants, documentation utilisateur).

Conclusion

Ce projet ne nécessite pas de compétences musicales — c'est le client qui les apporte — mais elles sont les bienvenues ! L'accent est mis sur la capacité de mener le projet à son terme dans un cadre collaboratif (programmeur du module sonore, programmeur de l'application, client, enseignant) ; des capacités de communication et de travail en équipe sont souhaitées.

Bibliographie

le site du Balezator