STIM : Contrôles des Connaissances
1. L’ABC de l’harmonisation
projet


L’harmonisation automatique d’une mélodie consiste à associer à chacune de ses notes un accord de plusieurs sons, éventuellement 0. Obtenir une harmonisation acceptable suppose un minimum d’analyse de la mélodie ; on partira d’hypothèses simplificatrices, qu’on essaiera de lever ensuite.

La donnée d’entrée sera exprimée dans le format ABC, qui utilise l’alphabet ASCII de manière intuitive et concise afin de permettre le déchiffrage à vue. Elle sera fournie à un formulaire Web qui retournera une page HTML contenant :

Il ne s’agit cependant pas de produire soi-même les documents SVG et MIDI, mais de se connecter aux services Web existants fournissant ce travail, en décomposant et assemblant leurs résultats pour produire la page demandée. Le ou les langages de programmation à utiliser ne sont pas imposés.

Le projet est à rendre pour le vendredi 18 Janvier 2013 à MIDI (bien sûr), à l’aide du formulaire figurant au bas de cet énoncé, qui refuse automatiquement toute soumission ultérieure (en revanche on peut en envoyer d’avance et les remplacer ensuite). Il faut observer scrupuleusement les spécifications de la remise de travaux pour que le formulaire accepte d’enregistrer l’envoi, et que le correcteur repère le travail effectué.

On trouvera ci-dessous une Foire Aux Questions, permettant de poser des questions et de faire profiter tout le monde de la réponse (il ne sera répondu à aucune question transmise autrement).

Le barème, sur 20, n'est qu'indicatif.

Les fichiers à créer seront placés exclusivement à la racine du sous-répertoire public_html de votre répertoire personnel, et seront automatiquement ramassés. Seuls les fichiers demandés le seront, aussi il est impératif de bien contrôler leur création: nom exact (sans confondre minuscules et majuscules, tiret et souligné etc) et droit d'accès 640 pour un fichier non exécutable et droit d'accès 750 pour ses répertoires parents ou un fichier exécutable.

1 Notre Dame de la do mi Nantes

On considère dans un texte ABC les seules notes isolées (autrement dit des lettres non entourées de crochets), dont on suppose qu’elles forment la mélodie. Une fonction d’harmonisation prend en argument le texte ABC original sous forme d’une chaîne de caractères, et retournant en résultat le texte original complété par son harmonisation. Il s’agit d’écrire 4 fonctions d’harmonisation, de moins en moins insatisfaisantes, selon les spécifications suivantes :

2 Tenir un accord

Si dans la suite des accords obtenue, un même accord est répété plusieurs fois consécutivement, on remplacera cette sous-suite par une seule occurrence. Ce remplacement devra intervenir même si cette sous-suite comporte des silences, dus comme on l’a vu à des notes étrangères à la gamme (penser en particulier au cas du trille chromatique, ne comportant qu’une seule note de la gamme, plusieurs fois). La durée de l’unique accord sera égale à la durée de toute la sous-séquence considérée.

Ecrire une fonction accord_tenu réalisant cette harmonisation.

3 Les Form musicales

Il s’agit à présent d’écrire une page HTML comportant un formulaire (autrement dit une balise form) comportant :

La première balise sera pré-remplie avec un texte ABC non trivial, permettant de tester immédiatement le formulaire.

Pour fournir la page résultat décrite dans l’introduction de cet énoncé, on se connectera (à l’aide d’une socket) côté serveur à différents services Web calculant les documents souhaités, par exemple concertina et mandolina mais on pourra en chercher d’autres.

4 Foire Aux Questions

Cliquer sur le lien ci-dessous pour poser une question à propos du projet. Afin d’éviter les spams, celle-ci n’apparaitra qu’après lecture par le modérateur.

Les questions et les réponses apparaîtront à la suite de ce texte, précédées de la liste de toutes les questions posées afin qu’un coup d’œil rapide (sans nécessité de défilement) permette de voir si une question a déjà été posée. Pour profiter au maximum de cette fonctionnalité, pensez à donner un titre significatif et différent de tous les titres précédents.

Titres des 7 intervention(s)


  • Foire Aux Questions
    16 janvier 2013 à 17h28min

    Bonjour
    J’aurais quelques questions pour l’harmonisation :
    Pour la fonction trop_parfait :
    Dans cette fonction, la tonalité du morceau n’est pas prise en compte. Cependant, lors de la génération de la partition, l’armature est bien présente et affecte la hauteur des notes. Doit-on agir sur ce problème pour "compenser" l’armature ?
    Pour la fonction mieux_que_parfait :
    Faut-il construire des accords de trois notes en incluant la note à harmoniser ou bien des accord de 4 notes en ajoutant 3 tierces à partir de la note à harmoniser ?
    Doit-on s’arranger pour que les tierces tombent toujours dans la gamme de la tonalité du morceau ?
    Cordialement,
    Pierre Lecomte

    • Foire Aux Questions
      17 janvier 2013 à 11h04min par adm

      Bonjour

      1. j’avoue n’avoir pas pensé à la présence de l’armure ; l’idée de cette première fonction est d’agir au minimum, qui fournit donc un résultat moins catastrophique qu’imaginé ; bref, ne corrigez pas ce qui n’est finalement pas faux ;
      2. ce sont des accords de 3 sons qui sont demandés, mais suite à votre remarque ci-dessus, les deux fonctions vont rendre le même résultat le plus souvent ; discuter dans votre rapport les cas divergents ;
      3. il faut évidemment rester dans la tonalité.
  • Foire Aux Questions
    16 janvier 2013 à 17h22min par BLANDIN REMI

    Bonjour,

    pour la gamme mineur doit on prendre en compte l’augmentation de la sensible pour l’harmonisation ?

    C’est à dire par exemple doit on harmoniser un mi en la mineur avec mi sol# si ou mi sol si ?

    Rémi

  • utilisation d’AJAX
    14 janvier 2013 à 16h34min

    Bonjour,

    Je fais le projet en javascript. Puis-je utiliser AJAX pour me connecter aux services web même s’il ne s’agit pas techniquement d’une socket ?

  • Choix du PHP et utilisation des sockets
    9 janvier 2013 à 18h54min

    Cher Monsieur,
    Je me permets de vous contacter pour vous faire part de l’avancée de mon travail.
    Dans votre énoncé, le mot "socket" renvoie vers la documentation UNIX d’une fonction C. Même si je connais ce langage et ai suivi des cours théoriques de réseau, je ne sais pas comment exécuter un script C côté serveur et ne me sens pas capable d’implémenter une architecture qui produise le contenu HTML demandé.
    En revanche, avec mes quelques restes en PHP, j’ai bon espoir que ce langage puisse tout à fait convenir au travail demandé. Pouvez-vous me le confirmer ?
    Je compte aller au plus simple et utiliser le site Concertina. Où trouver les informations nécessaires pour se "brancher" sur le convertisseur, c’est-à-dire envoyer la partition harmonisée (ainsi que l’option d’affichage "SVG") et récupérer les URL des fichiers .mid et .svg correspondants ?
    Il semble que ces fichiers soit présents dans un dossier temporaire nommé http://www.concertina.net/tunes-temp/ dont l’accès est limité aux fichiers que l’on a créé soi-même ; mais je ne sais pas comment récupérer leur code d’identification à l’aide d’une socket PHP.
    Cordialement,
    Vincent Lostanlen.

  • Foire Aux Questions
    9 janvier 2013 à 15h38min par HEMERY EDGAR

    Bonjour,

    Je crains de ne pas comprendre clairement l’étape d’harmonisation.
    Faut-il l’appliquer au niveau du code abc ? Ou peut-on l’appliquer sur le résultat midi ?

    Je vous remercie,
    Edgar

    • Foire Aux Questions
      9 janvier 2013 à 17h38min par adm

      C’est plus simple de l’appliquer sur le texte original, car il est bien plus facile à analyser que le MIDI.

  • utilisation Java/html ?
    9 janvier 2013 à 02h22min

    Bonjour,

    Je sais qu’il est possible d’utiliser des langages tels que php ou javascript pour générer le résultat attendu à partir du formulaire html, mais n’ayant pas pratiqué ces langages depuis 3 ans, je préférerais utiliser à la place un langage comme java avec lequel je suis plus familier. Mais je ne sais pas si cela est possible, et si oui de quelle manière peut-on intégrer java avec le html ?
    Pourriez-vous m’orienter sur ce point ?
    Merci

    Luc

    • utilisation Java/html ?
      9 janvier 2013 à 17h36min par adm

      Vous êtes libre d’utiliser n’importe quel langage.

      • utilisation Java/html ?
        10 janvier 2013 à 19h53min

        merci de votre réponse, mais ma question portait en fait sur la faisabilité de traiter un formulaire html en Java, d’un point de vue technique.

        • utilisation Java/html ?
          10 janvier 2013 à 22h02min par SAINT JAMES Emmanuel

          Tous les langages de programmation ont le même pouvoir expressif. Ensuite, la question est de savoir s’il existe des bibliothèques qui feraient déjà une partie du travail demandé. Mais ça fait partie du travail de refaire soi-même si on ne trouve pas rapidement ce qu’il faut.

  • Travail en groupe
    8 janvier 2013 à 12h44min

    Bonjour Monsieur,

    Le projet STIM peut-il être réalisé en binôme ?

    En vous remerciant

    Cordialement

    Grégoire Lafay



5 Remise du projet (20 point(s))

Le projet est à remettre sous forme d’une archive au format Zip (tout autre sera refusé par le formulaire en dessous de ce paragraphe). Cette archive ne devra contenir aucun sous-répertoire. Elle comportera au minimum autant de fichiers que de questions, le début du nom de chaque fichier étant obligatoirement q1, q2 etc. Devra également figurer un rapport de travail, exclusivement en PDF et nommé rapport.pdf, qui expliquera le fonctionnement de l’ensemble, les erreurs non prévues et les choix effectués dans les marges de décision indiquées dans l’énoncé.

Fichier à créer : [.]zip$

Date limite: 18 janvier 2013 à 12h00min