Noctave

LilyPond → MusicXML · PDF · MIDI

Le convertisseur LilyPond

Dépose la source LilyPond d'une pièce pour piano. Noctave vérifie d'abord qu'elle est compatible, la met à jour avec convert-ly, la fait graver par LilyPond 2.25, puis la convertit en MusicXML avec le convertisseur de sa bibliothèque libre. Tu récupères le MusicXML à importer dans Noctave, le PDF et le MIDI.

Convertir un fichier

Le convertisseur ouvre bientôt.

Il est prêt, mais pas encore en service sur le serveur. Reviens dans quelques jours : cette page s'ouvrira d'elle-même.

Les limites, simplement

Ce qui est accepté : une liste blanche

LilyPond exécute le Scheme qu'on lui donne : un fichier pourrait lire ou écrire sur le serveur. Avant toute exécution, une analyse lit donc chaque élément du fichier, et refuse au moindre doute, en disant où et pourquoi (« Non compatible », ligne et colonne).

Accepté

  • Les commandes de musique, d'articulation, de nuance, de mise en page et de texte (\markup) de LilyPond que le convertisseur connaît, et les variables définies dans le fichier (upper = \relative c'' { … }).
  • En Scheme, des valeurs écrites telles quelles : #'symbole, #'(1 . 2), #"texte", nombres, ##t, ##f, #UP, #DOWN, couleurs…
  • Quelques fonctions sans risque, avec des valeurs : set-global-staff-size, set-paper-size, ly:make-moment, cons, list, make-dynamic-script, ly:set-option 'point-and-click.
  • Les fichiers plus anciens que LilyPond 2.24 : convert-ly les met à jour, puis la copie mise à jour est analysée à nouveau, strictement.

Refusé

  • Toute fonction Scheme inconnue, et define, lambda, let, set!, define-music-function…
  • $, #{ … #}, les vecteurs, caractères, mots-clés et quasi-citations de Scheme.
  • \include d'un fichier (sauf les langues), \book, \bookpart, \bookOutputName, output-filename.
  • \postscript, \epsfile, \image, \verbatim-file, \applyMusic, \applyOutput, \on-the-fly.
  • \repeat segno (D.S., coda), pas encore lu par Noctave ; plus de 100 répétitions ; les caractères de contrôle ou invisibles.

Sur les 357 pièces pour piano du Mutopia Project que la bibliothèque libre a converties sans écart, 308 passent cette analyse telles quelles ; les autres définissent des fonctions Scheme ou ont des paroles.

Ensuite, un bac à sable

convert-ly, LilyPond et le convertisseur tournent sous un utilisateur système à part, dans un bac à sable bubblewrap : aucun réseau, système en lecture seule, aucun accès au code ni aux données du site, un dossier de travail en mémoire, 60 secondes, mémoire, processus et taille des fichiers limités. Si LilyPond plante, le reste du serveur ne le voit pas.

LilyPond (GPL) est utilisé non modifié, comme programme séparé. Le MusicXML est écrit par le convertisseur de Noctave, celui qui a produit les 377 pièces de la bibliothèque libre ; il ne reprend pas tout ce que LilyPond sait graver (la page l'indique pour chaque fichier).