Subject: import midi curieux

From: olivier charade <[email-masked]>
Date: Sat, 11 Mar 2023 15:32:28 +0100

Bonjour,

Avant, lorsque je suivais un cursus de composition “classique“, 
j'écrivais sous lilypond et j'exportais en midi vers Rosegarden.

Maintenant que je fais de la musique à l'image, j'écris avec LogicPro et 
je voudrai bien arriver à exporter en MIDI  sous Lilypond pour fournir à 
d'éventuels musiciens des partitions propres.

Comme c'est loin de fonctionner de façon immédiate (conducteurs obtenus 
absolument incompréhensibles), je pars d'un cas simple: une seule piste, 
une seule région, deux mesures en tout et pour tout, avec 6 notes qui se 
courent après.

Voici le résultat, pour 4 noires, une demi-pause et encore deux noires:

% Lily was here -- automatically converted by midi2ly from midi.mid
\version "2.14.0"

\layout {
   \context {
     \Voice
     \remove Note_heads_engraver
     \consists Completion_heads_engraver
     \remove Rest_engraver
     \consists Completion_rest_engraver
   }
}

trackAchannelA = {

   \key c \major

   \set Staff.instrumentName = "Inst 1"

   % [INSTRUMENT_NAME] Inst 1

   \time 4/4

   \key c \major

   \tempo 4 = 120
   \skip 1*2
}

trackAchannelB = \relative c {
   b'4*476/480 r4*4/480 cis4*476/480 r4*4/480 dis4*476/480 r4*4/480 
f4*476/480
   r4*964/480 g4*476/480 r4*4/480 b4*476/480
}

trackA = <<
   \context Voice = voiceA \trackAchannelA
   \context Voice = voiceB \trackAchannelB

\score {
   <<
     \context Staff=trackA \trackA
   >>
   \layout {}
   \midi {}
}

}

Je vois bien un pb de quantification côté Logic que je n'arrive pas à 
résoudre. Mais y a-t-il un moyen de forcer une certaine quantification 
côté conversion en lilypond?

Merci d'avance,

Olivier

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 11 Mar 2023 16:06:34 +0100

> côté conversion en lilypond?

Oui, même si Frescobaldi ne le propose pas dans son menu d'import MIDI. En lançant midi2ly en ligne de commande plutôt que depuis Frescobaldi, vous pouvez faire par exemple

```
/chemin/vers/lilypond-2.24.1/bin/midi2ly --duration-quant=32 x.ly
```

pour convertir x.ly en quantifiant à la triple croche.

Cordialement,

Jean

---

From: olivier charade <[email-masked]>
Date: Sat, 11 Mar 2023 21:41:01 +0100

Merci Jean.

Suite à un essai concluant avec mon exemple minimaliste, je vois que 
j'arrive à obtenir au moins une partition par piste à condition de les 
exporter une à une.

Un projet complet affole de toutes façons midi2ly qui repète: “midi2ly: 
warning: found more than 5 voices on a staff, expect bad output“

Le fichier résultant a une tête normale pour moi quand je le regarde 
avec un éditeur de texte. Pourtant, Frescobaldi m'affiche une page 
blanche quand je lui fais ouvrir.

Je n'irai sans doute pas beaucoup plus loin sans connaître les arcanes 
de la méthode d'exportation MIDI dans Logic, ce que j'ia peu de chances 
d'obtenir.

Mais c'est déjà une amélioration par rapport à tout reprendre à la main 
sous lilypond.

Bonne soirée,

Olivier

Le 11/03/2023 à 16:06, Jean Abou Samra a écrit :
>> Maintenant que je fais de la musique à l'image, j'écris avec LogicPro 
>> et je voudrai bien arriver à exporter en MIDI  sous Lilypond pour 
>> fournir à d'éventuels musiciens des partitions propres.
>>
>> Comme c'est loin de fonctionner de façon immédiate (conducteurs 
>> obtenus absolument incompréhensibles), je pars d'un cas simple: une 
>> seule piste, une seule région, deux mesures en tout et pour tout, 
>> avec 6 notes qui se courent après.
>>
>> \layout {    \context {      \Voice      \remove Note_heads_engraver 
>>      \consists Completion_heads_engraver      \remove Rest_engraver 
>>      \consists Completion_rest_engraver    } }
>>
>> trackAchannelA = {
>>
>>    \key c \major
>>
>>    \tempo 4 = 120    \skip 1*2 }
>>
>> trackAchannelB = \relative c {    b'4/476/480 r4/4/480 cis4/476/480 
>> r4/4/480 dis4/476/480 r4/4/480 f4/476/480    r4/964/480 g4/476/480 
>> r4/4/480 b4*476/480 }
>>
>> trackA = <<    \context Voice = voiceA \trackAchannelA    \context 
>> Voice = voiceB \trackAchannelB  >>
>>
>> \score {    <<      \context Staff=trackA \trackA    >>    \layout {} 
>>    \midi {} }
>>
>> }
>>
>> résoudre. Mais y a-t-il un moyen de forcer une certaine 
>> quantification côté conversion en lilypond?
>>
> Oui, même si Frescobaldi ne le propose pas dans son menu d'import 
> MIDI. En lançant midi2ly en ligne de commande plutôt que depuis 
> Frescobaldi, vous pouvez faire par exemple
>
> |/chemin/vers/lilypond-2.24.1/bin/midi2ly --duration-quant=32 x.ly |
>

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 12 Mar 2023 12:58:54 +0100

Le samedi 11 mars 2023 à 21:41 +0100, olivier charade a écrit :
> Merci Jean.  
> Suite à un essai concluant avec mon exemple minimaliste, je vois que j'arrive à obtenir au moins une partition par piste à condition de les exporter une à une.
> 
> Un projet complet affole de toutes façons midi2ly qui repète: “midi2ly: warning: found more than 5 voices on a staff, expect bad output“
>
> Le fichier résultant a une tête normale pour moi quand je le regarde avec un éditeur de texte. Pourtant, Frescobaldi m'affiche une page blanche quand je lui fais ouvrir.
>
> Je n'irai sans doute pas beaucoup plus loin sans connaître les arcanes de la méthode d'exportation MIDI dans Logic, ce que j'ia peu de chances d'obtenir.
>
> Mais c'est déjà une amélioration par rapport à tout reprendre à la main sous lilypond.

Sur [https://support.apple.com/fr-fr/guide/logicpro/lgcpbd38ba48/mac](https://support.apple.com/fr-fr/guide/logicpro/lgcpbd38ba48/mac), je vois que Logic Pro permet aussi d'exporter en MusicXML au lieu du MIDI. Est-ce qu'il ne vaudrait pas mieux exporter votre projet en MusicXML et le convertir en LilyPond avec soit musicxml2ly (l'outil officiel), soit xml2ly (que vous pouvez retrouver [ici](https://github.com/jacques-menu/musicformats)) ? D'une part, le MusicXML préserve beaucoup plus d'informations musicales que le MIDI, d'autre part, midi2ly n'est pas dans un très bon état et est très peu maintenu, alors que musicxml2ly bénéficie au moins d'un minimum de maintenance, et xml2ly est développé activement.

Cordialement,

Jean

---

From: olivier charade <[email-masked]>
Date: Sun, 12 Mar 2023 16:07:49 +0100

Merci Jean pour ces précisions dont je n'avais absolument pas conscience.

Je vais me pencher sur le MusicXML (et je ferai au besoin un nouveau 
post sur un import Xml curieux ;-) ).

Olivier

Le 12/03/2023 à 12:58, Jean Abou Samra a écrit :
>> j'arrive à obtenir au moins une partition par piste à condition de 
>> les exporter une à une.
>>
>> Un projet complet affole de toutes façons midi2ly qui repète: 
>> “midi2ly: warning: found more than 5 voices on a staff, expect bad 
>> output“
>>
>> Je n'irai sans doute pas beaucoup plus loin sans connaître les 
>> arcanes de la méthode d'exportation MIDI dans Logic, ce que j'ia peu 
>> de chances d'obtenir.
>>
> Sur https://support.apple.com/fr-fr/guide/logicpro/lgcpbd38ba48/mac, 
> je vois que Logic Pro permet aussi d'exporter en MusicXML au lieu du 
> MIDI. Est-ce qu'il ne vaudrait pas mieux exporter votre projet en 
> MusicXML et le convertir en LilyPond avec soit musicxml2ly (l'outil 
> officiel), soit xml2ly (que vous pouvez retrouver ici 
> <https://github.com/jacques-menu/musicformats>) ? D'une part, le 
> MusicXML préserve beaucoup plus d'informations musicales que le MIDI, 
> d'autre part, midi2ly n'est pas dans un très bon état et est très peu 
> maintenu, alors que musicxml2ly bénéficie au moins d'un minimum de 
> maintenance, et xml2ly est développé activement.
>
> Cordialement,
>
> Jean
>

---

From: olivier charade <[email-masked]>
Date: Sun, 19 Mar 2023 10:44:56 +0100

Juste un complément pour dire qu'effectivement, l'export MusicXml de 
Logic, à travers musicxml2ly (sans aucune option), compile sans erreur 
sous Frescobaldi et génère directement un conducteur lisible (pas besoin 
de passer par des parties séparées) où je vois immédiatement ce que je 
peux supprimer (deux voix en drummode pour le métronome; mesures de 
silences à toutes les voix au début, etc.).

Bien sûr, je viens de tester au calme sur un projet déjà bouclé (pour 
lequel j'avais tout recopié à la main il y a quelques mois). On verra ce 
que ça donne “dans la vraie vie“. En tous cas, ça va me faire gagner pas 
mal de temps dans mon “workflow“, comme ils disent à la prod. Et je 
continue à travailler avec au moins un outil libre. J'ai ainsi moins 
l'impression d'avoir vendu mon âme au diable en laissant Linux pour Mac ;-)

Olivier