|
From: | Christophe Pochon |
Subject: | Re: CC dans le fichier MIDI |
Date: | Sun, 30 May 2021 15:06:40 +0200 |
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
[Prev in Thread] | Current Thread | [Next in Thread] |