Contes animats: Pere i el llop

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció i objectius

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:

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.
Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines