lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CC dans le fichier MIDI


From: Christophe Pochon
Subject: Re: CC dans le fichier MIDI
Date: Sun, 30 May 2021 15:06:40 +0200

Merci pour ces explications Jean !
C'est frustrant de ne pas pouvoir ajouter les autres CC plus facilement. Ou de pouvoir passer le numéro de CC en paramètre.
Bon, si je peux déjà faire quelque chose avec le midiExpression ça me fera déjà gagner du temps. 
Mais il faudrait que je trouve le moyen de récupérer à tout moment la valeur de vélocité. J'ai trouvé dans midi.scm les correspondances des nuances avec les valeurs de vélocité, mais comment et où sont gérés les accents, crescendi, etc. ? Idéalement j'aimerais créer une fonction qui ajouterait automatiquement des \set midiExpression = #x.x . Exemple :

musique = \relative c' { c4\p c c-> c\ff c\ppp }

exprMusique = \expr \musique

et le résultat serait que exprMusique contiendrait :

{
    \set midiExpression = #0.55 c4\p c \set midiExpression = #0.60 c-> \set midiExpression = #0.8 c\ff \set midiExpression = #0.42 c\ppp 
}

Mais bon, je crois que je vais continuer à demander à Logic Pro X de gérer cela :-)

A+

Christophe Pochon



Le dim. 30 mai 2021 à 13:32, Jean Abou Samra <jean@abou-samra.fr> a écrit :
Bonjour,


Le 30/05/2021 à 12:06, Christophe Pochon a écrit :
> Bonjour,
>
> Y a-t-il un moyen d'intégrer des messages CC (ModWheel, _expression_...)
> dans le fichier MIDI généré par Lilypond ?
>
> Je fais en ce moment beaucoup d'exercices d'orchestration et la
> plupart des modules de sons d'orchestre symphonique gère les nuances
> beaucoup plus finement avec des paramètres de ce type. Cela permet par
> exemple d'avoir des crescendi sur des longues notes.
>
> Pour l'instant je demande à Logic Pro X de récupérer les valeurs de
> vélocité pour les mettre en valeur CC1 et CC11, mais je me demandais
> si ce n'était pas possible de faire en sorte que Lilypond le fasse.

Je ne le crois pas, malheureusement, car la sortie MIDI
est implémentée en C++, sans possibilités de personnalisation
en Scheme.


> Dans ce contexte, j'ai déjà découvert les commandes midiMinimumVolume
> = #0.0 et midiMaximumVolume = #1.0 qui permettent de régler une
> dynamique complète et identique pour tous les instruemnts.
>
> Bon dimanche ensoleillé !

Ensoleillé… Parle pour toi !

> Il semble qu'il fut question de s'occuper de cela en 2016 sur la liste
> des développeurs :
> https://lists.gnu.org/archive/html/lilypond-devel/2016-01/msg00100.html
> <https://lists.gnu.org/archive/html/lilypond-devel/2016-01/msg00100.html>

En effet, mais il manquait encore de l'infrastructure interne pour
que le code ajouté ne soit pas une casserole à traîner par la suite
(il nous faudrait probablement une notion de Mob, comme les Grobs).

> J'ai trouvé aussi midiExpression, qui permet d'envoyer du CC 11. On
> devrait pouvoir adapter ça pour envoyer d'autres Control Changes, mais
> je ne trouve pas où est défini midiExpression.

Tout dépend de ce que tu entends par « adapter » : il faut ajouter
du code C++ et recompiler. En l'occurrence, une recherche :

jean@laptop-jean:~/repos/lilypond$ git grep "midiExpression"
Documentation/ca/notation/input.itely:3715:@funindex midiExpression
Documentation/ca/notation/input.itely:3758:@item @code{Staff.midiExpression}
Documentation/en/notation/input.itely:3773:@funindex midiExpression
Documentation/en/notation/input.itely:3813:@item @code{Staff.midiExpression}
Documentation/es/notation/input.itely:3938:@funindex midiExpression
Documentation/es/notation/input.itely:3982:@item @code{Staff.midiExpression}
Documentation/fr/notation/input.itely:3928:@funindex midiExpression
Documentation/fr/notation/input.itely:3970:@item @code{Staff.midiExpression}
Documentation/it/notation/input.itely:3680:@funindex midiExpression
Documentation/it/notation/input.itely:3718:@item @code{Staff.midiExpression}
Documentation/ja/notation/input.itely:3715:@funindex midiExpression
Documentation/ja/notation/input.itely:3752:@item @code{Staff.midiExpression}
lily/midi-cc-announcer.cc:52:  { "midiExpression", 0.0, 1.0, 11, 43 },
lily/midi-cc-performer.cc:145:                "midiExpression "
scm/define-context-properties.scm:477:     (midiExpression ,number?
"_expression_ control for the MIDI

nous mène à midi-cc-announcer.cc :

/*
   Context properties for setting MIDI controls.  Each MIDI control
   specification has the following components:
     1. The name of the LilyPond context property used to change the
value of
        the MIDI control.
     2. The lower bound for the numeric range of the LilyPond context
property.
     3. The upper bound for the numeric range of the LilyPond context
property.
     4. The MIDI control number for setting the most significant 7 bits
of the
        control value.
     5. The MIDI control number for setting the least significant 7 bits
of the
        control value, if the control supports 14-bit ("fine")
resolution.  If
        the control supports only 7-bit ("coarse") resolution, the LSB
control
        number should be negative.
*/
const Midi_control_change_announcer::Control_spec
Midi_control_change_announcer::controls_[]
=
{
   { "midiBalance", -1.0, 1.0, 8, 40 },
   { "midiPanPosition", -1.0, 1.0, 10, 42 },
   { "midiExpression", 0.0, 1.0, 11, 43 },
   { "midiReverbLevel", 0.0, 1.0, 91, -1 },
   { "midiChorusLevel", 0.0, 1.0, 93, -1 },
   // This element should be kept last in the array.
   { 0, 0.0, 0.0, 0, 0 }
};

En ajoutant des valeurs à ce tableau suivant le même modèle, sans
oublier les définitions dans scm/define-context-properties.scm, on
peut effectivement définir de nouveaux messages CC.

Cordialement,
Jean

reply via email to

[Prev in Thread] Current Thread [Next in Thread]