[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