33 votes

Existe-t-il des bibliothèques de rendu de notation musicale pour Java ?

Je suis à la recherche d'une API pour le rendu de partitions musicales en Java.

La seule bibliothèque que j'ai pu trouver (que je mentionnerai dans une réponse) est loin d'être complet.

Plusieurs personnes en ligne ont mentionné JFugue, mais pour autant que je sache, JFugue peut jouer de la musique, mais le rendu des partitions n'est qu'une partie de son travail. liste de souhaits .

Alors, quelqu'un en connaît-il d'autres ? Plus de gros points pour être gratuit, et plus de petits points pour avoir une licence non virale.

13voto

Pandincus Points 5785

Avis de non-responsabilité : Je ne connais rien à la musique ;-)

Vous avez des exigences assez strictes ;-) J'ai des suggestions, mais elles ne répondent pas à tous vos besoins :-(

MusicXML

Comme vous le savez peut-être déjà, il existe un format XML appelé MusicXML Les spécifications ont été conçues par Recordare qui peut être utilisé pour mettre en page de la musique en notation XML.

Par exemple, "un morceau de musique d'une mesure qui contient une note entière sur le do central, basé sur le temps 4/4". ressemblerait à ceci :

a one-measure piece of music that contains a whole note on middle C, based in 4/4 time

Le MusicXML pour le rendre serait quelque chose comme :

<score-partwise version="2.0">
  <part-list>
    <score-part id="P1">
      <part-name>Music</part-name>
    </score-part>
  </part-list>
  <part id="P1">
    <measure number="1">
      <attributes>
        <divisions>1</divisions>
        <key>
          <fifths>0</fifths>
        </key>
        <time>
          <beats>4</beats>
          <beat-type>4</beat-type>
        </time>
        <clef>
          <sign>G</sign>
          <line>2</line>
        </clef>
      </attributes>
      <note>
        <pitch>
          <step>C</step>
          <octave>4</octave>
        </pitch>
        <duration>4</duration>
        <type>whole</type>
      </note>
    </measure>
  </part>
</score-partwise>

Cela semble donc être un format standardisé que vous pourriez suivre, en supposant que vous développiez votre propre bibliothèque ( ce que vous ne faites pas ).

Cependant, ce format semble être très populaire : il y a une tout un tas de logiciels que Recordare liste comme lisant et écrivant MusicXML, mais je n'ai pas pu trouver tout ce qui est qui répond à vos exigences (bibliothèque Java, licence non virale). abc4j semble correct, mais vous l'avez déjà mentionné comme n'ayant pas toutes les fonctionnalités que vous vouliez.

Zong!Viewer par Xenoage Software est un programme Java gratuit qui lit et écrit MusicXML. Cependant, il est sous licence GPL :-(

Je suppose que si vous n'êtes pas intéressé par la création de votre propre bibliothèque, MusicXML ne vous intéresse pas.

Format de fichier d'échange de notations

Quoi qu'il en soit, il existe également un format appelé Format de fichier d'échange de notations qui ne semble pas être aussi populaire que le programme MusicXML . Cependant, j'ai trouvé une applet Java appelée "Niffty NIFF File Viewer". qui, en fonction de la notation NIFF, affiche des notations musicales graphiques. Ce logiciel est également sous licence GPL.

Le gars de Niffty a aussi écrit un article très détaillé Guide du programmeur qui explique comment travailler avec le code source de Niffty. Cela pourrait être utile ?

Notation ABC

Il existe une autre forme de notation appelée Notation ABC qui a apparemment "est utilisé depuis au moins le 19ème siècle" . Il y a une grande variété de logiciels qui l'utilise. Je n'ai pas regardé la plupart des programmes répertoriés, mais l'un d'entre eux, que je voyais constamment mentionné dans diverses recherches sur Google, était le suivant Skink à cinq lignes .

Skink à cinq lignes "est une application de bureau qui est utilisée pour créer la notation de la portée musicale en utilisant le standard abc" . Il est écrit en Java et est gratuit (comme dans bière, pas comme dans discours). Je n'ai pas vu de mention d'une licence spécifique, cependant :

Skink est un logiciel libre. Si vous souhaitez faire un don pour l'acquérir, vous pouvez le faire via le bouton PayPal ci-dessous (utilisez l'adresse ci-dessus). Il est possible que je le rende open-source, selon que je parvienne ou non à le faire évoluer au point de vouloir montrer mes erreurs au monde entier... J'ai encore beaucoup de choses à faire d'ici là, alors ne demandez pas !

Peut-être devriez-vous le demander quand même, sous la forme d'une belle donation ;-) Dites à l'auteur ce que vous essayez de faire.

OK ! J'espère que ces informations vous aideront. Bonne chance !

9voto

La seule bibliothèque que j'ai pu trouver est la suivante ABC4j qui prend un Chaîne ABC en entrée, et produit de jolies partitions.

Cependant, il est encore en version alpha et semble manquer de certaines fonctionnalités de base :

  • Dynamique
  • Grand Staff (pour écrire la musique du piano)
  • Notes pointées ( ???)

ABC4j est sous licence LGPL (non-virale)

3voto

bgporter Points 11119

Si vous pouvez assouplir les exigences (un peu...), Lilypond fait de superbes notations musicales. Son entrée est sous la forme de texte inspiré de TeX, et son comportement peut être modifié/étendu en écrivant du code Scheme.

Là où il ne répond pas à vos exigences :

  1. Il ne s'agit pas d'une bibliothèque, et elle n'est pas en Java, ce qui signifie que vous devez payer un processus distinct.
  2. Il fait partie du projet GNU, donc vous pouvez ne pas être satisfait de la licence.

3voto

lightning Points 31

Avez-vous vu JMusic ? C'est une API pour Java qui rend les partitions de musique et vous permet de les convertir en fichiers midi ou .au. Elle semble assez complète. Voici le lien : http://explodingart.com/jmusic

JMusic est sous licence GPL (virale)

3voto

Francisco Alvarado Points 2057

En cherchant sur Google il y a une minute, j'ai trouvé ceci :

JMSL est une API Java pour la musique qui comprend son propre moteur de rendu de notation.

( Source de la requête )

J'espère que cela fonctionnera pour vous (au moins, il semble avoir une licence non virale).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X