[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Uso delle ripetizioni nel MIDI ] | [ Su : Creazione dell'output MIDI ] | [ Proprietà di contesto per gli effetti MIDI > ] |
3.5.7 Mappatura dei canali MIDI
Quando genera un file MIDI da una partitura, LilyPond assegna automaticamente ogni nota a un canale MIDI, in cui essa dovrà essere suonata quando inviata a un dispositivo MIDI. Un canale MIDI mette a disposizione un certo numero di controlli per selezionare, per esempio, lo strumento da usare per riprodurre le note in quel canale o per chiedere al dispositivo MIDI di applicare vari effetti al suono prodotto nel canale. In ogni momento, ogni controllo di un canale MIDI può avere un solo valore assegnato (che tuttavia può essere modificato, per esempio, per passare a un altro strumento nel mezzo di un brano).
Lo standard MIDI supporta soltanto 16 canali per dispositivo MIDI. Questo limite al numero di canali limita anche il numero dei diversi strumenti che possono essere eseguiti in contemporanea.
LilyPond crea tracce MIDI separate per ogni rigo (o strumento o voce separati,
a seconda del valore di Score.midiChannelMapping
) e anche per ogni
contesto lyrics.
Non c’è limite al numero di tracce.
Per aggirare il limite del numero di canali MIDI, LilyPond supporta
varie modalità per l’assegnazione dei canali MIDI, scelti attraverso
la proprietà di contesto Score.midiChannelMapping
. In ogni caso,
se è necessario un numero di canali MIDI superiore al limite, i numeri canale
assegnati ripartono da 0, causando possibili assegnazioni erronee degli
strumenti di alcune note. Questa proprietà di contesto può essere impostata
su uno dei seguenti valori:
-
'staff
-
Assegna un canale MIDI separato a ogni rigo della partitura (comportamento predefinito). Tutte le note in tutte le voci di ogni rigo condivideranno lo stesso canale MIDI del rigo che le racchiude, e si trovano tutte nella stessa traccia MIDI.
Il limite dei 16 canali è applicato al numero totale dei contesti staff (rigo) e lyrics (testo vocale), anche se il testo vocale nel MIDI non occupa un canale MIDI.
-
'instrument
-
Assegna un canale MIDI separato a ogni strumento MIDI diverso specificato nella partitura. Ciò significa che tutte le note suonate con lo stesso strumento MIDI condivideranno lo stesso canale (e traccia) MIDI, anche se le note appartengono a voci o righi diversi.
In questo caso i contesti del testo vocale (lyrics) non contano nel calcolo del limite dei 16 canali MIDI (perché non saranno assegnati a uno strumento MIDI), dunque questa impostazione consente una migliore assegnazione dei canali MIDI quando il numero di righi e contesti lyrics in una partitura è superiore a 16.
-
'voice
-
Assegna un canale MIDI separato a ogni voce che abbia un nome unico tra le voci del rigo che le racchiude. Alle voci in righi diversi vengono sempre assegnati canali MIDI separati, ma due voci di uno stesso rigo condivideranno lo stesso canale MIDI se hanno lo stesso nome.
midiInstrument
e i vari controlli MIDI per gli effetti, essendo proprietà del contesto del rigo (staff), non possono essere impostati separatamente per ogni voce. La prima voce verrà suonata con lo strumento e gli effetti specificati per il rigo, mentre alle voci con un nome diverso da quello della prima saranno assegnati lo strumento e gli effetti predefiniti.Nota bene: è possibile assegnare diversi strumenti e/o effetti a varie voci dello stesso rigo spostando
Staff_performer
dal contestoStaff
al contestoVoice
e lasciandomidiChannelMapping
sul valore predefinito'staff
oppure impostandolo su'instrument
; vedi il frammento in basso.
Per esempio, la mappatura predefinita dei canali MIDI di una partitura può
essere modificata per usare l’impostazione 'instrument
:
\score { ...musica... \midi { \context { \Score midiChannelMapping = #'instrument } } }
Frammenti di codice selezionati
Impostare l’output MIDI su un canale per voce
Nella creazione del file di output MIDI, il comportamento predefinito prevede che ogni rigo sia assegnato a un canale MIDI, con tutte le voci del rigo amalgamate in un canale. Ciò diminuisce il rischio di esaurire i canali MIDI disponibili, dato che ce ne sono solo 16 per traccia.
Tuttavia, spostando Staff_performer
nel contesto Voice
, ogni
voce in un rigo può avere il proprio canale MIDI, come è illustrato
nell’esempio seguente: sebbene le voci siano sullo stesso rigo, vengono
creati due canali MIDI, ciascuno con un diverso strumento MIDI
(midiInstrument
).
\score { \new Staff << \new Voice \relative c''' { \set midiInstrument = #"flute" \voiceOne \key g \major \time 2/2 r2 g-"Flute" ~ g fis ~ fis4 g8 fis e2 ~ e4 d8 cis d2 } \new Voice \relative c'' { \set midiInstrument = #"clarinet" \voiceTwo b1-"Clarinet" a2. b8 a g2. fis8 e fis2 r } >> \layout { } \midi { \context { \Staff \remove "Staff_performer" } \context { \Voice \consists "Staff_performer" } \tempo 2 = 72 } }
[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Uso delle ripetizioni nel MIDI ] | [ Su : Creazione dell'output MIDI ] | [ Proprietà di contesto per gli effetti MIDI > ] |