Contes animats: Pere i el llop
Contingut
Introducció i objectius
- llibre. illustrador: Miguelanxo Prado (té un còmic del Pere i el Llop)
- video Youtube (dibuixos animats, 2 parts):
fer sonar un midi en background
Aquest no és un mètode adequat
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
//on 128 és el fluidsynth: $ pmidi -l
//$ pmidi -p128:0 -d2 /home/joan/scores/una_plata_denciam/una_plata_denciam_v9.midi
system("ls /home/joan");
return 0;
}
$ g++ prova.cpp
Amb system es poden executar comandes del sistema operatiu, i es pot veure amb ps aux. La idea és fer-ho servir per executar el pmid (que estarà lligat al fluidsynth), i fer sonar un fitxer midi.
La idea és que, mentre sona el fitxer midi, jo toco amb el Axiom 25. (TBD)
midis (trobats a Internet)
Tinc dos midis del Pere i el LLop que es troben a la xarxa
$ fluidsynth -m alsa_seq /home/joan/soundfonts/A320U.sf2 /home/joan/pere_i_llop/peter.mid
$ timidity /home/joan/pere_i_llop/peter.mid Playing /home/joan/pere_i_llop/peter.mid MIDI file: /home/joan/pere_i_llop/peter.mid Format: 1 Tracks: 64 Divisions: 192 Track name: PETER & THE WOLF Track name: PART ONE Track name: INTRODUCTION Track name: Track name: Flute Track name: Oboe Track name: French Horn Track name: Bassoon Track name: Strings Track name: Track name: PART TWO Track name: PETER, BIRD & DUCK Track name: Track name: Strings Track name: Strings Track name: Flute Track name: Oboe Track name: French Horn Track name: Track name: PART THREE Track name: CAT & GRANDFATHER Track name: Track name: Strings Track name: Strings Track name: Flute Track name: Bassoon Track name: Rhythm Track name: Track name: PART FOUR Track name: !!! THE WOLF !!! Track name: Track name: Strings Track name: Harp Track name: Flute Track name: Rhythm Track name: Oboe Track name: French Horn Track name: Strings Track name: Track name: PART FIVE Track name: THE CAPTURED WOLF Track name: Track name: Flute Track name: French Horn Track name: Strings Track name: Strings Track name: Track name: PART SIX Track name: THE PARADE HOME Track name: Track name: Strings Track name: Strings Track name: Flute Track name: Bassoon Track name: Oboe Track name: French Horn Track name: Track name: ~~~~~~~~~~~~~~~~~~~~ Track name: PETER AND THE WOLF Track name: by: Serge Prokofiev Track name: Sequenced by: Track name: Dianne Lewandowski Track name: June 1991 No instrument mapped to tone bank 0, program 86 - this instrument will not be heard No instrument mapped to tone bank 0, program 92 - this instrument will not be heard
Finalment decideixo que hauré de transcriure jo mateix la partitura original del Pere i el Llop
transcripció de la partitura amb Lilypond
Després de provar amb Denemo, decideixo que la manera més ràpida i eficient és treballar directament a pèl amb LilyPond (falta analitzar Frescobaldi).
Protocol per anomenar els fitxers
% Protocol per anomenar els fitxers % _or: original: vol dir que té tots els instruments % _PX (P1, P2,...): és la part de l'obra % _di: amb dinàmiques % _ar: amb articulacions % _ms: melodia separada en un canal apart % _nm: només melodia % _AX25: adaptació per a 2 octaves (M-Audio Axiom 25) % _me: adaptació per a mel.lòdica % _vX: versió del fitxer
Per exemple:
pere_i_llop_or_P0_P1_v1.ly $ lilypond pere_i_llop_or_P0_P1_v1.ly
Es produeix els fitxers pere_i_llop_or_P0_P1_v1.pdf, pere_i_llop_or_P0_P1_v1.ps i pere_i_llop_or_P0_P1_v1.midi
Protocol per anomenar els fitxers:
% Protocol per anomenar els fitxers % _or: original: vol dir que té tots els instruments % _PX (P1, P2,...): és la part de l'obra % _di: amb dinàmiques % _ar: amb articulacions % _ms: melodia separada en un canal apart % _nm: només melodia % _vX: versió del fitxer
Per fer sonar el midi que em produeix el lilypond (utilizo l'opció -v per veure els missatges midi):
$ fluidsynth -a alsa -m alsa_seq -l -v /home/joan/soundfonts/general/Musica_Theoria_v2_GM.sf2 /home/joan/pere_i_llop/lilypond/pere_i_llop_or_P0_P1_v1.midi > fluidsynth: prog 1 0 40 fluidsynth: prog 2 0 40 fluidsynth: prog 3 0 41 fluidsynth: prog 4 0 42 fluidsynth: prog 5 0 43 fluidsynth: noteon 1 67 90 00000 2.624 2.594 0.000 0 fluidsynth: noteon 2 67 90 00001 2.624 2.595 0.000 1 fluidsynth: noteon 3 55 90 00002 2.624 2.595 0.000 2 fluidsynth: noteon 4 48 90 00003 2.624 2.595 0.000 3 fluidsynth: noteoff 3 55 0 00002 2.950 2.915 0.327 4 fluidsynth: noteon 3 60 90 00004 2.950 2.915 0.000 4 fluidsynth: noteoff 1 67 0 00000 3.275 3.235 0.652 5 fluidsynth: noteon 1 72 90 00005 3.275 3.235 0.000 5 fluidsynth: noteoff 3 60 0 00004 3.275 3.235 0.325 6 fluidsynth: noteon 3 64 90 00006 3.275 3.235 0.000 6 fluidsynth: noteoff 3 64 0 00006 3.602 3.555 0.327 6 fluidsynth: noteon 3 60 90 00007 3.602 3.555 0.000 6 fluidsynth: noteoff 1 72 0 00005 3.765 3.726 0.489 7 ...
com ja em suposava, les notes no estan a volum 127 (de fet estan a 90), i els 5 instruments que tinc (quintet de cordes) estan assignats als 5 primers canals midi.
Quan entri les dinàmiques podré definir els valors mínims i màxims a utilitzar (veure manual).
Notes sobre transposició: diferència entre \transpose i \transposition
Tinc vàries situacions:
a) Tinc una melodia com el Pere i el Llop, i vull tocar amb el saxo sobre la línia mel.lòdica. Amb
\new Staff << \transpose c a, \global \transpose c a, \melodia >>
puc imprimir el paper de saxo alt, però he de tocar sobre el midi original
b) tinc una partitura per a saxo alt i piano. L'escric, i evidentment sona malament. Per tal que soni bé he de fer
\new Staff << \transposition ees \saxo_alt >>
c) solució. És una combinació de les dues anteriors. Tinc una partitura escrita per a un instrument en Do (flauta, violí), vull imprimir-ho per a saxo alt, però vull que soni originalment:
\new Staff << \transposition ees' \transpose c a, \global \transpose c a, \melodia >>
L'únic problema és que quan transposo per a saxo pot haver-hi notes que quedin fora del rang de l'instrument. Això es soluciona amb set-octavation
\relative c''' {
a2 b
#(set-octavation 1)
a b
#(set-octavation 0)
a b
}
D'aquesta manera aconseguim posar totes les notes dins el rang de l'instrument (però el midi no canvia!, les notes no queden canviades). Això es pot utilitzar també per a transposar per a mel.lòdica o xaphoon o Axiom25, que són instruments afinats en Do però amb un rang limitat de les notes, i per tant puc fer partitures correctes sense canviar la música.
snippets (trucos) lilypond que em són útils
Per tal de transcriure música que ja està escrita, important mirar 5.1.2 Tipografiar música existente: pàg 140
per ficar un número amb un requadre, veure: Drawing boxes around grobs:
- http://lilypond.org/doc/v2.12/input/lsr/lilypond-snippets/Editorial-annotations#Editorial-annotations
- http://kainhofer.com/~lilypond/Documentation/snippets/editorial-annotations.html
Fingering instructions can be entered using a simple syntax.
\relative c'' {
c4-1 d-2 f-4 e-3
}
The print-function can be overridden to draw a box around an arbitrary grob.
\relative c'' {
\override TextScript #'stencil =
#(make-stencil-boxer 0.1 0.3 ly:text-interface::print)
c'4^"foo"
\override Stem #'stencil =
#(make-stencil-boxer 0.05 0.25 ly:stem::print)
\override Score.RehearsalMark #'stencil =
#(make-stencil-boxer 0.15 0.3 ly:text-interface::print)
b8
\revert Stem #'stencil
c4. c4
\mark "F"
c1
}
Adding drum parts - grace notes: Positioning grace notes with floating space:
Broken Crescendo Hairpin: em trobo que hi ha crescendo i decrescendo que són molt llargs. Amb aquest mètode només s'imprimeix la part inicial i la finals del crescendo:
Al final ho faig, més que amb un box, amb una línia gruixuda:
fis8--(\> \override TextScript #'layer = #2 d'--) fis,4--^\markup { \postscript #"1 setgray 2.4 setlinewidth 0 -7 moveto 14 0 rlineto stroke" } fis8--( d'--) g,4->( g,) g4. r8 \mBreak
%*** num 1 ***
g4-.\mp
Fixem-nos que necessito fer dues coses: el \override TextScript i el \markup, que a més, no puc posar l'un al costat de l'altre (?). Mirar prova_hairpin2.ly:
% http://lsr.dsi.unimi.it/LSR/Search?q=setlinewidth % explicació: ho faig amb una línia gruixuda en comptes d'una caixa % 1 setgray: color blanc. Amb el valor 0 tinc el negre % 2.4 setlinewidth: el gruix de la línia % 0 -6 moveto: des de la posició original, situo l'inici de la línia a 0 horitzontalment i -6 cap avall % 8 0 rlineto: la longitud de la línia: 8 cap a la dreta i 0 vertical
ottava text. Amb \ottava puc canviar la presentació de la nota, però que soni com ha de sonar?:
adding fingerings to a score:
Demonstrating all headers
Proportional strict notespacing (provar):
Espaiament horitzontal:
Es resol fàcilment amb \break. Defineixo mBreak i canvio entre l'un o l'altre
%mBreak = { \break } %necessari per tal que es vegi igual que la partitura original
mBreak = { } %ho puc treure al final per tal que lilypond ho formati de manera òptima
Notes sobre la dinàmica-volum
prova_volum.ly per estudiar les dinàmiques.
Amb el GMidiMonitor veig què passa (i amb el fluidsynth -v també), i el que es fa és enviar un CC de canvi de volum
CC Main Volume (7)
però la velocity de les notes continua sent 90
abans el valor per defecte era de 127, però a resultes de la disussió que hi ha en el link, es decideix que és més lògic i natural que el valor per defecte sigui 90
això sí, la manera d'aplicar les dinàmiques amb lilypond és amb el Midi Control Change #7 ( Volume control ), i no pas amb la Note On Velocity
les dinàmiques s'apliquen amb el Midi Control Change #7 ( Volume control ), i no pas amb la velocity del Midi ON. El valor per defecte de velocity és 90 (establert en el codi font)
hi ha la possibiltat d'equalitzar els diferents instruments
el valor per defecte de la velocity és 90. Sense utilitzar midiMinimumVolume i midiMaximumVolume, els valors de CC #7 (Volume Control) són:
\ppp: 68 \fff: 111
A la sortida del fluidsynth es veu amb els missatges:
... fluidsynth: cc 1 7 68 ... fluidsynth: cc 1 7 111 ...
Si poso:
\midi {
\context {
\Score
midiMinimumVolume = #0.5
midiMaximumVolume = #0.5
}
}
Ara evidentment no hi ha cap diferència entre el \ppp i el \fff, sempre és:
fluidsynth: cc 1 7 63
i amb
midiMinimumVolume = #1 midiMaximumVolume = #1
arribo al:
fluidsynth: cc 1 7 127
Per tant la dinàmica (diguem-ne diferència entre un \ppp i un \fff) es pot controlar escollint uns valors adequats, per exemple:
\midi {
\context {
\Score
midiMinimumVolume = #0.2
midiMaximumVolume = #1
}
}
Obtinc 68 i 111
o bé no posar res i atenir-se als valors per defecte. Com diu la documentació:
The default fractions range from 0.25 for ppppp to 0.95 for fffff.