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: Jean Abou Samra
Subject: Re: CC dans le fichier MIDI
Date: Sun, 30 May 2021 13:32:24 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1

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]