Académique Documents
Professionnel Documents
Culture Documents
TEMA
[7.7] Resumen
TEMA 7 Esquema
Bach (corales)
Mozart
Compases
Partes
Esquema
Ideas clave
7.1. Cmo estudiar este tema?
En este tema y en el siguiente seguimos profundizando en el aprendizaje de music21,
enfocado especialmente al anlisis de partituras. Para este tema recomendamos
consultar:
La
documentacin
de
music21
referente
stream.
Recuperado
de
http://web.mit.edu/music21/doc/moduleReference/moduleStream.html
El
captulo
de
la
gua
de
usuario
de
music21.
Recuperado
de
http://web.mit.edu/music21/doc/usersGuide/usersGuide_04_stream1.html
7.2. Introduccin
En el captulo anterior vimos los conceptos de notas y duraciones en music21. En este
captulo veremos cmo manipular listas de objetos y streams a travs de ejemplos.
7.3. Listas
En el captulo dedicado a Python vimos cmo trabajar con listas de forma abstracta, pero
ahora lo enfocaremos a su empleo en music21. Vemoslo con algunos ejemplos.
from music21 import note
#definimos 2 notas con sus duraciones
note1 = note.Note("C4")
note1.duration.quarterLength=0.5
note2 = note.Note("F#4")
note1.duration.quarterLength=0.25
#las introducimos en una lista de notas
noteList=[note1,note2,note1,note1]
#imprimimos el resultado
print noteList
El resultado es:
El trabajo a travs de listas es bastante til porque podemos, por ejemplo, iterar a travs
de todos los elementos.
Resultado
Resultado
0.25
Tambin podemos aadir o quitar elementos de las listas:
Resultado
Veamos ahora algo ms complejo. Imaginemos que queremos escribir desde cero el
siguiente coral de Bach. En la siguiente imagen hay 4 partes y 4 compases (3 + anacrusa).
Por simplicidad escribiremos solo el primer comps con anacrusa.
('G',0.5),
('F',0.5),
('E',0.5),('F',1)]],
[[('D',1)],[('C',1),
('F',0.5),
Por ltimo vamos a aadir el comps (4/4), las claves y la armadura de clave. Vamos a
poner un sostenido como ejemplo simplemente. Algunos comentarios:
-
En clef.clefFromString(clefName,octava)
o
('G',0.5),
('F',0.5),
('E',0.5),('F',1)]],
[[('D',1)],[('C',1),
('F',0.5),
El resultado:
El ejemplo anterior era algo complejo, pero nos permite darnos cuenta de la estructura
en arbol de las partituras musicales y cmo trasladarlo a programacin. Un esquema
general simplificado lo encontramos en la siguiente figura.
Partitura
Parte 1
Comps 1
Nota
Parte 2
Parte 3
Parte 4
Comps 2
Nota
pyparsing,
six).
Recuperado
http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib
numpy
http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
dateutil
http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-dateutil
pyparsing
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyparsing
six
http://www.lfd.uci.edu/~gohlke/pythonlibs/#six
de
En algunos casos puede ser ms interesante contar la nota, pero no la octava. En ese caso
cambiemos pitch por pitchClass en el programa anterior:
17
Ahora vamos a trabajar ahora con el corpus de music21. Veamos las tonalidades de los
corales de Bach y representmoslo mediante un grfico:
from music21 import *
import matplotlib.pyplot as plt
catalog = stream.Opus()
sostenidos=[0,0,0,0,0,0,0,0]
bemoles=[0,0,0,0,0,0,0,0]
for workName in corpus.getBachChorales():
work = converter.parse(workName)
ks=work.flat.getElementsByClass(key.KeySignature)[0]
18
if(ks.sharps>=0):
sostenidos[ks.sharps]+=1
if(ks.sharps<0):
bemoles[ks.sharps*-1]+=1
plt.plot(sostenidos)
plt.xlabel('sostenidos')
plt.show()
plt.plot(bemoles)
plt.xlabel('bemoles')
plt.show()
19
El resultado es:
20
21
22
En el corpus de music21 hay algunas obras dodecafnicas de las que podemos obtener
directamente la serie y la matriz.
Para ver el caso de una obra en concreto:
from music21 import *
print (serial.getHistoricalRowByName('RowSchoenbergOp37').matrix() )
Veamos el caso inverso, supongamos que queremos encontrar si una serie ha sido
empleada en alguna composicin serial (dentro del corpus de music21, claro).
23
El resultado
['RowSchoenbergOp32']
Para
la
manipulacin
de
las
series
en
music21
tenemos
la
funcin
La salida:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
24
El programa complete:
from music21 import serial
chromatic = serial.pcToToneRow(range(0,12))
# La altura de nota como nmeros
print "serie original",chromatic.pitchClasses()
#Las notas con su nombre
print "las notas", chromatic.noteNames()
#La serie original centrada en la cuarta nota
chromaticP3 = chromatic.zeroCenteredTransformation('P',3)
print "P3",chromaticP3.noteNames()
#La serie invertida centrada en la sptima nota
chromaticI6 = chromatic.zeroCenteredTransformation('I',6)
print "I6",chromaticI6.noteNames()
La salida:
serie original [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
las notas ['C', 'C#', 'D', 'E-', 'E', 'F', 'F#', 'G', 'G#', 'A', 'B-',
'B']
P3 ['E-', 'E', 'F', 'F#', 'G', 'G#', 'A', 'B-', 'B', 'C', 'C#', 'D']
I6 ['F#', 'F', 'E', 'E-', 'D', 'C#', 'C', 'B', 'B-', 'A', 'G#', 'G']
25
7.7. Resumen
En este tema hemos visto cmo manipular listas y los distintos tipos streams para
insertar compases, partes y notas, as como la estructura jerrquica de una partitura. En
el ltimo ejemplo hemos comentado el concepto de recursin para iterar sobre los
diversos elementos y escribir una partitura sencilla a 4 partes como es un coral de Bach
usando music21. La actividad que proponemos en este tema va encaminada en este
sentido.
Con este tema damos por finalizado nuestro repaso de music21 y Python. En la ltima
seccin del tema nos hemos centrado en algunas de las posibilidades de anlisis tonal y
serial dentro del mundo de la musicologa, pero las posibilidades de la herramienta como
tal son amplsimas. Invitamos al alumno a seguir profundizando, para lo cual indicamos
algunos artculos y ejemplos.
26
Lo + recomendado
No dejes de leer
Sonatas para piano de Beethoven
El blog de music21 por su creador Michael Scott Cuthbert. Es especialmente
interesante el anlisis que hace de las sonatas para piano de Beethoven en el siguiente
artculo.
Accede al artculo a travs del aula virtual o desde la siguiente direccin web:
http://music21-mit.blogspot.co.uk/2014/07/beethovens-piano-sonatas-applicationof.html
TEMA 7 Lo + recomendado
27
+ Informacin
A fondo
Inteligencia artificial y msica
Te recomendamos leer el siguiente artculo si ests interesado en inteligencia artificial y
msica.
Accede al artculo a travs del aula virtual o desde la siguiente direccin web:
http://ismir2011.ismir.net/papers/PS3-6.pdf
Bibliografa
Cuthbert, M. (2010). music21: A Toolkit for Computer-Aided Musicology and Symbolic
Music Data. 11th International Society for Music Information Retrieval Conference
(ISMIR 2010). Recuperado de
https://www.academia.edu/243058/music21_A_Toolkit_for_ComputerAided_Musicology_and_Symbolic_Music_Data
Cuthbert, M. Modeling Beats, Accents, Beams, and Time Signatures Hierarchically with
music21 Meter Objects. Massachusetts Institute of TechnologyMusic and Theater Arts.
Recuperado de
https://www.academia.edu/243059/Modeling_Beats_Accents_Beams_and_Time_Sig
natures_Hierarchically_with_music21_Meter_Objects
TEMA 7 + Informacin
28
Actividades
Trabajo: Partitura en Python y music21
En este tema te vamos a pedir que escribas en Python y music21 una partitura sencilla
(los 4 primeros compases de la sonata k280 en Do Mayor de Mozart). Puedes utilizar el
procedimiento que creas oportuno, el nico requisito es que el programa est bien
ordenado y funciones correctamente. No est permitido usar tinyNotation.
TEMA 7 Actividades
29
Test
1. El siguiente programa muestra:
A.
B. No funciona.
C.
D.
2. El siguiente programa muestra:
TEMA 7 Test
30
3. El siguiente programa:
TEMA 7 Test
31
5. El siguiente programa:
TEMA 7 Test
32