Armonización de la escala menor natural

Objetivo: deducir los acordes que aparecen al armonizar la escala menor natural.

En el artículo de hoy armonizaremos la primera de las escalas menores por excelencia, la menor natural. Es decir, sobre cada grado de la escala apilaremos terceras sucesivas hasta construir acordes de tres y cuatro notas (tríadas y tétradas, respectivamente). Es exactamente lo mismo que hicimos cuando armonizamos la escala mayor.

Deduciremos los acordes de dos formas diferentes. En la primera, casi inmediata, aprovecharemos el hecho de que la escala menor natural no es sino un modo de la escala mayor (el modo eólico). Esto nos ahorrará tener que repetir los cálculos que en su día hicimos con la escala mayor. En la segunda realizaremos el trabajo a mano, agregando cada tercera y poniendo nombre a los acordes resultantes. Todo músico debe estar perfectamente familiarizado con este tipo de cálculos.

Comencemos recordando la formación del modo eólico.

Tomemos como referencia cualquier escala mayor; sin ir más lejos, por su obvia sencillez, DO mayor.

DO mayor: C – D – E – F – G – A – B

El modo eólico se obtiene partiendo del sexto grado utilizando las mismas notas. En nuestro ejemplo, el sexto grado es LA (A). Si construimos, con las mismas notas, la escala que comienza a partir de LA, obtenemos el modo eólico o escala menor natural:

LA eólica (menor natural): A – B – C – D – E – F – G

Conclusión que nos permitía calcular su fórmula relativa:

Eólica (menor natural): 1 – 2 – b3 – 4 – 5 – b6 – b7

De igual modo, si al armonizar DO mayor obteníamos

Armonización DO mayor (tríadas):
C – Dm – Em – F – G – Am – B°

Armonización DO mayor (tétradas):
Cmaj7 – Dm7 – Em7 – Fmaj7 – G7 – Am7 – Bm7(b5)

Comenzando por el sexto acorde (nota fundamental LA) obtendremos la armonización de LA eólica (LA menor natural):

Armonización LA menor natural (tríadas):
Am – B° – C – Dm – Em – F – G

Armonización LA menor natural (tétradas):
Am7 – Bm7(b5) – Cmaj7 – Dm7 – Em7 – Fmaj7 – G7

O bien, en términos generales, basándonos en la fórmula relativa de la escala menor natural:

Armonización de la escala menor natural (tríadas):
Im – II° – bIII – IVm – Vm – bVI – bVII

Armonización de la escala menor natural (tétradas):
Im7 – IIm7(b5) – bIIImaj7 – IVm7 – Vm7 – bVImaj7 – bVII7

A lo que quiero llegar con este desarrollo es que observes lo fácil que resulta recuperar estos acordes si los olvidas pero, en cambio, recuerdas los que aparecen al armonizar la escala mayor. Es cuestión de coger exactamente los mismos, pero comenzando en un punto diferente.

Repetiremos esta operación ahora, a modo de ejercicio, por el procedimiento habitual para armonizar escalas heptatónicas que ya empleamos sobre la escala mayor.

Partimos de la fórmula de la escala menor natural y la elaboramos sobre DO:

DO menor natural: C – D – Eb – F – G – Ab – Bb

Construyamos los acordes que aparecen al apilar terceras sobre cada grado.

Contar terceras es contar 1-2-3 sobre las notas de esa escala, incluyendo el punto de origen en la cuenta. Así, por ejemplo, en nuestra escala menor natural, una tercera sobre DO es MI bemol, sobre SOL es SI bemol, y sobre LA bemol es DO.

Empecemos por las tríadas:

Acorde sobre el primer grado: C – Eb – G
Acorde sobre el segundo grado: D – F – Ab
Acorde sobre el tercer grado: Eb – G – Bb
Acorde sobre el cuarto grado: F – Ab – C
Acorde sobre el quinto grado: G – Bb – D
Acorde sobre el sexto grado: Ab – C – Eb
Acorde sobre el séptimo grado: Bb – D – F

Date cuenta que, entre esas terceras, algunas son mayores (4 semitonos de distancia) y otras menores (tres semitonos). En función de cómo estén apiladas el acorde se denominará de un modo u otro.

Recordemos esto:

Tercera mayor + Tercera menor: Tríada mayor
Tercera menor + Tercera mayor: Tríada menor
Tercera menor + Tercera menor: Tríada disminuida
Tercera mayor + Tercera mayor: Tríada aumentada

Sólo hay que calcular intervalos:

C – Eb – G: 3 semitonos + 4 semitonos: Tercera menor + Tercera mayor: DO menor
D – F – Ab: Tercera menor + Tercera menor: RE disminuido
Eb – G – Bb: Tercera mayor + Tercera menor: MI bemol mayor
F – Ab – C: Tercera menor + Tercera mayor: FA menor
G – Bb – D: Tercera menor + Tercera mayor: SOL menor
Ab – C – Eb: Tercera mayor + Tercera menor: LA bemol mayor
Bb – D – F: Tercera mayor + Tercera menor: SI bemol mayor

He aquí, recopiladas, las tríadas resultantes:

Cm – D° – Eb – Fm – Gm – Ab – Bb

En términos generales, sobre cualquier tónica:

Im – II° – bIII – IVm – Vm – bVI – bVII

Resultado que coincide con el deducido más arriba.

También podríamos haber estudiado la composición de cada acorde comparando directamente cada grado obtenido con la fundamental. La primera tercera está a una tercera de la fundamental; la siguiente, a una quinta de esta.

Tercera mayor (4 semitonos) y Quinta justa (7 semitonos): Tríada mayor
Tercera menor (3 semitonos) y Quinta justa: Tríada menor
Tercera mayor y Quinta aumentada (8 semitonos): Tríada aumentada
Tercera menor y Quinta disminuida (6 semitonos): Tríada disminuida

El resultado habría sido el mismo (compruébalo si no has hecho este tipo de cálculos antes). Todas las quintas que aparecen son justas, a excepción de la que sucede sobre el segundo grado, que es disminuida.

Para calcular la versión tétrada de estos acordes apilaremos una tercera más sobre cada tríada obtenida:

Acorde sobre el primer grado: C – Eb – G – Bb
Acorde sobre el segundo grado: D – F – Ab – C
Acorde sobre el tercer grado: Eb – G – Bb – D
Acorde sobre el cuarto grado: F – Ab – C – Eb
Acorde sobre el quinto grado: G – Bb – D – F
Acorde sobre el sexto grado: Ab – C – E – G
Acorde sobre el séptimo grado: Bb – D – F – Ab

La mejor manera de poner nombre a estos acordes pasa por descubrir la naturaleza del último grado añadido. Si te das cuenta, al apilar sobre la fundamental en tríadas hemos obtenido: fundamental + tercera + quinta. El nuevo grado, a una tercera de la quinta, es la séptima del acorde.

Hay que empezar, entonces, averiguando qué tipo de séptima es. Recordemos los tres tipos de séptimas:

Séptima mayor: a 11 semitonos de la fundamental.
Séptima menor: a 10 semitonos de la fundamental
Séptima disminuida: a 9 semitonos de la fundamental

Podemos contar semitonos desde la fundamental de cada acorde. Pero más sencillo es hacerlo al revés, contando la distancia que separa la séptima con la siguiente aparición de la fundamental, la octava. Ambas distancias deben sumar doce.

La tabla anterior puede, entonces, expresarse del siguiente modo:

Séptima mayor: a un semitono de la octava (12 - 11 = 1)
Séptima menor: a dos semitonos de la octava (12 - 10 = 2)
Séptima disminuida: a tres semitonos de la octava (12 - 9 = 3).

Los acordes tétradas se denominan dependiendo de cúal sea la tríada base y la séptima agregada:

Tríada mayor y Séptima mayor: Acorde de séptima mayor: maj7
Tríada mayor y Séptima menor: Acorde de séptima: 7
Tríada menor y Séptima mayor: Acorde menor con séptima mayor: m(maj7)
Tríada menor y Séptima menor: Acorde menor séptima: m7
Tríada disminuida y Séptima menor: Acorde menor séptima b5 o semidisminuido: m7(b5)
Tríada disminuida y Séptima disminuida: Acorde de séptima disminuido: dim7
Tríada aumentada y Séptima mayor: Acorde aumentado con séptima mayor: +maj7
Tríada aumentada y Séptima menor: Acorde aumentado séptima: +7

Apréndete bien esta tabla; te ayudará a comprender de verdad lo que hay detrás de la construcción de acordes.

No todos estos tipos nos aparecerán ahora al armonizar la escala menor natural. Entrarán en escena, a su debido momento, cuando le metamos mano a otras escalas menores como la melódica o la armónica.

Volvamos a nuestras recién creadas tétradas y apliquemos lo expuesto arriba:

C – Eb – G – Bb: Tríada menor y Séptima menor (Bb está a dos semitonos de C): Cm7
D – F – Ab – C: Tríada disminuido y Séptima menor: Dm7(b5)
Eb – G – Bb – D: Tríada mayor y Séptima mayor (D está a un semitono de Eb): Ebmaj7
F – Ab – C – Eb: Tríada menor y Séptima menor: Fm7
G – Bb – D – F: Tríada menor y Séptima menor: Gm7
Ab – C – E – G: Tríada mayor y Séptima mayor: Abmaj7
Bb – D – F – Ab: Tríada mayor y Séptima menor: Bb7

Obteniendo así la armonización de DO menor natural:

Cm7 – Dm7(b5) – Ebmaj7 – Fm7 – Gm7 – Abmaj7 – Bb7

Generalizando a cualquier tónica:

Im7 – IIm7(b5) – bIIImaj7 – IVm7 – Vm7 – bVImaj7 – bVII7

Tal como obtuvimos empleando la primera metodología.

Es importante que te tomes tu tiempo en asimilar y practicar las técnicas que hemos expuesto hoy. Si algo no está del todo claro, asegúrate de que conoces bien otros conceptos como la nomenclatura de intervalos, la formación de escalas y la construcción de acordes. Todos estos temas han sido tratados ya en este blog con anterioridad.

Continuaremos esta serie armonizando otras escalas menores que aún nos quedan en el tintero, pero, ¿por qué no intentarlo tú mismo? Te he mostrado las técnicas y el material de referencia suficiente para poder hacerlo por tu cuenta. Demuéstrate que ya no me necesitas y aventúrate sin miedo. Los fantasmas no son tales cuando se les ilumina.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2014/01/armonizacion-de-la-escala-menor-natural/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos sobre armonía.

Python – Captura selectiva de excepciones

Objetivo: mostrar cómo capturar selectivamente las excepciones en Python dependiendo de su tipo.

En el artículo anterior introdujimos el concepto de excepción en Python y aprendimos a proteger a prueba de bombas un determinado bloque de código utilizando la estructura try/except. El bloque a proteger lo recogíamos en la sección try y, si algo inesperado (una excepción) ocurría dentro de él, las instrucciones contenidas en la sección except se ocupaban de su tratamiento.

Recuperemos nuestra robusta división entera:

while True:
    try:
        dividendo = int(input('Introduce el dividendo: '))
        divisor = int(input('Introduce el divisor: '))
        print('El cociente de la división de ambos números es', dividendo//divisor)
    except:
        print('Eso no ha estado bien, pero no pasa nada')
        print('Vuelve a intentarlo')

Si y sólo si sucede una excepción dentro de la sección try, el bloque de la sección except será ejecutado.

En particular, el código está vacunado ante excepciones como, por ejemplo:

ZeroDivisionError: si introducimos un cero como divisor, la división dejará de existir.

ValueError: si en lugar de introducir números escribimos caracteres, la función int() no podrá realizar la conversión.

KeyboardInterrupt: si tecleamos Ctrl-C el programa será abortado.

Pero, ¿y si queremos controlar la captura de excepciones de un modo más selectivo? Por ejemplo, ¿cómo haríamos si sólo queremos dejar protegido el código ante un eventual ZeroDivisionError?

Basta con especificar el tipo de excepción en la claúsula except. Veámoslo:

while True:
    try:
        dividendo = int(input('Introduce el dividendo: '))
        divisor = int(input('Introduce el divisor: '))
        print('El cociente de la división de ambos números es', dividendo//divisor)
    except ZeroDivisionError:
        print('Eso no ha estado bien, pero no pasa nada')
        print('Vuelve a intentarlo')

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
Eso no ha estado bien, pero no pasa nada
Vuelve a intentarlo
Introduce el dividendo: 
Traceback (most recent call last):
  File "C:/Users/javier/Desktop/borrable.py", line 3, in <module>
    dividendo = int(input('Introduce el dividendo: '))
KeyboardInterrupt

Como vemos, la excepción ZeroDivisionError ha sido capturada, pero no KeyboardInterrupt, ocasionada al teclear Ctrl-C con la intención de terminar la ejecución del programa.

Vayamos un paso más adelante. Escribamos ahora código que proteja no sólo de ZeroDivisionError, sino también de ValueError. Para ello, es suficiente con introducir ambas excepciones, separadas con una coma y entre paréntesis junto a la palabra except:

while True:
    try:
        dividendo = int(input('Introduce el dividendo: '))
        divisor = int(input('Introduce el divisor: '))
        print('El cociente de la división de ambos números es', dividendo//divisor)
    except (ZeroDivisionError, ValueError):
        print('Eso no ha estado bien, pero no pasa nada')
        print('Vuelve a intentarlo')

Comprobémoslo:

>>> 
Introduce el dividendo: 12
Introduce el divisor: 0
Eso no ha estado bien, pero no pasa nada
Vuelve a intentarlo
Introduce el dividendo: 12
Introduce el divisor: abcde
Eso no ha estado bien, pero no pasa nada
Vuelve a intentarlo
Introduce el dividendo: 12
Introduce el divisor: 4
El cociente de la división de ambos números es 3
Introduce el dividendo: 
Traceback (most recent call last):
  File "C:/Users/javier/Desktop/borrable.py", line 3, in <module>
    dividendo = int(input('Introduce el dividendo: '))
KeyboardInterrupt

Ctrl-C ha podido interrumpir el programa, pero no la división por cero ni el uso de letras en lugar de números.

El código siguiente ejecutará un tratamiento diferente según la excepción que se produzca. Observa el uso de varias claúsulas except:


while True:
    try:
        dividendo = int(input('Introduce el dividendo: '))
        divisor = int(input('Introduce el divisor: '))
        print('El cociente de la división de ambos números es', dividendo//divisor)
    except ZeroDivisionError:
        print('¡No, no, la división por cero no está permitida!')
    except ValueError:
        print('¡Ojo, presta atención e introduce sólo números!')

No sólo hemos capturado selectivamente las excepciones ZeroDivisionError y ValueError, sino que, además, el programa responderá de modo distinto según cuál suceda. Obsérvalo:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
¡No, no, la división por cero no está permitida!
Introduce el dividendo: 10
Introduce el divisor: abcde
¡Ojo, presta atención e introduce sólo números!
Introduce el dividendo: 
Traceback (most recent call last):
  File "C:/Users/javier/Desktop/borrable.py", line 3, in <module>
    dividendo = int(input('Introduce el dividendo: '))
KeyboardInterrupt

Hemos salido del bucle infinito pulsando Ctrl-C, pues KeyboardInterrupt no ha sido capturada.

Naturalmente, puedes incluir tantos except personalizados como excepciones desees tratar.

Aún podemos rizar el rizo…

Imagina que, además de lo que hemos hecho en el ejemplo anterior, en el que hemos capturado y tratado de modo diferente dos excepciones, queremos programar una respuesta general para cualquier otra excepción. Agregamos, simplemente, una nueva claúsula except genérica que no incluya ningún nombre de excepción:

while True:
    try:
        dividendo = int(input('Introduce el dividendo: '))
        divisor = int(input('Introduce el divisor: '))
        print('El cociente de la división de ambos números es', dividendo//divisor)
    except ZeroDivisionError:
        print('¡No, no, la división por cero no está permitida')
    except ValueError:
        print('¡Ojo, presta atención e introduce sólo números!')
    except:
        print('No sé qué has hecho, pero vuelve a intentarlo')

Y ahora:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
¡No, no, la división por cero no está permitida
Introduce el dividendo: 10
Introduce el divisor: abcde
¡Ojo, presta atención e introduce sólo números!
Introduce el dividendo: 10
Introduce el divisor: 
No sé qué has hecho, pero vuelve a intentarlo
Introduce el dividendo: 

En el tercer intento hemos pulsado Ctrl-C, por eso aparece el mensaje que hemos reservado para otras excepciones.

El tratamiento genérico debe figurar siempre en último lugar, después de los especializados. De lo contrario, el programa devolverá un error sintáctico al tratar de ejecutarlo. Y me temo que ese tipo de errores no hay try/except que los capture.

Esto se ha puesto interesante, pero aún hay mucho más que decir sobre el tratamiento de excepciones. Permanece atento…

Javier Montero Gabarró


Python – Captura selectiva de excepciones


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Introducción a la armonización de la escala menor

Objetivo: presentar la serie de artículos que dedicaremos a armonizar los diferentes tipos de escalas menores.

Llegados a este punto, doy por supuesto que ya sabes armonizar la escala mayor en cualquier tonalidad, tanto para generar acordes de tres notas como de cuatro. Si no es así, puedes echar un vistazo al conjunto de siete entradas que hay escritas sobre el tema en este blog.

Es importante que tengas claro el procedimiento que seguimos para deducir los acordes propios de la escala mayor, pues volveremos a aplicarlo ahora, sólo que sobre otras distintas.

Antes que nada, hay una cuestión que conviene matizar. Queremos armonizar la escala menor; pero, ¿cuál es la escala menor? Hay un puñado de escalas menores, ¿a cuál nos referimos?

El enfoque que seguiremos será ante todo práctico. Vamos a partir de las cuatro escalas menores principales (natural, dórica, armónica y melódica), construyendo a continuación, para cada una de ellas, sus acordes propios.

Las cuatro escalas menores indicadas se diferencian en el uso que hacen de los grados sexto y séptimo:

Natural: b6 y b7
Dórica: 6 y b7
Armónica: b6 y 7
Melódica: 6 y 7

A la hora de escribir una canción en tono menor tienes diferentes posibilidades: puedes ceñirte estrictamente a las notas y acordes propios de la escala que te decidas usar o puedes considerar que todas esas notas forman parte de una especie de superescala menor en la que se permite un uso más flexible del b6-6-b7-7 y, a su vez, de los acordes derivados al usar esas notas.

Ambas aproximaciones son perfectamente válidas. A la hora de crear música, debe ser siempre el compositor quien decida qué licencias se toma y los límites que impone a su creación, más que cualquier norma rígida. No lo olvides.

De hecho, hay un grado en particular, disponible en la escala mayor, que se echa mucho de menos al escribir usando las notas estrictas de la escala menor natural: el 7 (en lugar del b7). Y es que, al estar a un semitono de la tónica, invita marcadamente a resolver sobre esta, ayudando a definir con claridad la tonalidad. A este grado se le conoce como sensible y, aunque no está presente ni en las escalas menor natural ni dórica, la armónica y la melódica sí que disponen de él.

Es más, desde el punto de vista armónico, como veremos, la utilización de la sensible permite la aparición del acorde de séptima de dominante sobre el quinto grado de la escala menor, un acorde decisivo para la resolución tonal.

De modo que armonizaremos todas estas escalas menores, agrupando en el mismo saco el conjunto de acordes resultantes, que tendremos a nuestra disposición para poder utilizarlos según nuestros gustos, apetencias y necesidades.

Comenzaremos en el próximo artículo armonizando la escala menor natural. Al igual que sucederá con la dórica, los acordes resultantes serán fáciles de deducir y memorizar, ya que ambas escalas no son sino modos de la escala mayor (la escala menor natural es el modo eólico). Sabemos que los modos comparten las mismas notas, pero comenzando en puntos diferentes. Como consecuencia, de igual forma, los modos comparten también exactamente los mismos acordes y sabiendo los que armonizan la escala mayor sabremos también los que armonizan cualquiera de sus modos.

No será hasta que armonicemos las escalas menor armónica y melódica cuando aparezcan nuevos y suculentos acordes.

Javier Montero Gabarró


Introducción a la armonización de la escala menor


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos sobre armonía.

Running – Fartlek de variable doble

Correr en cinta no es comparable a la experiencia de hacerlo en libertad al aire libre, creo que en eso estamos todos de acuerdo. No obstante, el trabajo en interiores ofrece una serie de ventajas que hace que sea un complemento perfecto a nuestros entrenamientos en la calle.

El principal atractivo, para mí, reside en la facilidad con que se configuran entrenamientos tipo fartlek, como los cambios de ritmo. En escalera, piramidales, alternancia de ritmos fuerte/recuperación…; no hay límite al tipo de entrenamientos imaginativos que podemos realizar.

Pero, además, las cintas de correr permiten jugar con un segundo parámetro, aparte de la velocidad: la inclinación.

Sevilla es una ciudad muy llana; no resulta fácil encontrar escenarios en los que trabajar las cuestas del modo debido. Y claro, así me pasa como en la última San Silvestre vallecana de hace apenas dos semanas: llega la cuesta de los cadáveres, la temida entrada en Vallecas por la Avenida de la Albufera y me encuentro con que me he quedado sin combustible y con unas piernas cargadas que convierten ese último tramo en una auténtica agonía.

Las cuestas cuestan y hay que entrenarlas.

Puedes trabajarlas en la cinta, donde la propia máquina te modifica el perfil en función del programa elegido. O puedes diseñar tus propios fartleks, manteniendo la velocidad constante y configurando la inclinación según tu criterio.

Si, además de jugar con la inclinación, incluyes también la velocidad, las posibilidades son aún mucho mayores.

Eso fue lo que hice en el entrenamiento de ayer sobre una cinta de correr. El esquema básico era el mismo que en los últimos cambios de ritmo: 30 minutos en los que, de cada bloque de 5 minutos, los cuatro primeros los corrí a 10 Km/h (6 minutos el kilómetro) y el quinto a 12 Km/h (5 minutos el kilómetro).

La novedad fue incluir la inclinación. Dentro de cada grupo de cuatro minutos dedicados a correr a 10 Km/h, los dos centrales (los minutos 2 y 3) subí la inclinación de la máquina a 1. No es una fuerte pendiente, desde luego, pero era perfectamente apreciable y sirve como primera aproximación gradual a futuros ejercicios más exigentes. Durante el último minuto, preparativo del siguiente a 12 Km/h, la maquina recuperaba la horizontalidad.

Podríamos anotar el ejercicio del siguiente modo:

[(10, 0, 1), (10, 1, 2), (10, 0, 1), (12, 0, 1)] x 6

En esta notación, el primer valor de cada terna representa la velocidad, el segundo la inclinación y el tercero el tiempo en minutos. El conjunto se multiplica por seis para alcanzar un total de entrenamiento de media hora.

¿Quién dijo que correr en cinta no era divertido?

Javier Montero Gabarró


Running – Fartlek de variable doble


Puedes consultar el índice completo de artículos pertenecientes a la categoría running.


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Running 2014 – Diario de entrenamiento

Sean cuales sean tus objetivos, escribir un diario registrándolos e indicando los pasos que das para conseguirlos es algo que te ayudará sin duda a permanecer enfocado y motivado. Si, además, haces ese diario público, el nivel de compromiso será mayor aún.

Es lo que me he propuesto hacer con una práctica deportiva que se ha convertido para mí en una pieza fundamental para mantener el equilibrio físico y mental. Desde que lo descubrí hace apenas tres años, me fascina correr. Si tú eres corredor sabes perfectamente de qué estoy hablando. Ojalá pueda seguir disfrutando de esa maravillosa experiencia muchos años más.

Soy un corredor lento, sin grandes pretensiones. Me gustan los entrenamientos suaves y el ambiente sano de las carreras populares, en las que corredores de toda índole y condición compiten con valor contra sí mismos, dejando siempre atrás sus miedos.

Descubrí el poder de los diarios de entrenamiento en el excelente foro de la web foroatletismo.com, en el que, durante algo más de un año, mantuve mi propia bitácora (bajo el nombre El pronador de Sevilla). Allí conocí a buenos amigos, compañeros de afición y rigurosamente compartíamos cada entrenamiento escribiendo en nuestros diarios.

Mis objetivos running para el 2014 son sencillos e implícito en ellos siempre está disfrutar de cada salida y de la sensación de bienestar de después: por un lado, ser más constante que lo que he sido durante el 2013. Así, mi intención es aproximarme lo más posible al entrenamiento alterno, un día sí y otro no, esquema que el año pasado descuidé bastante.

Por otra parte, mejorar mi marca de 10K, actualmente en 52′ 23″ (Divina Pastora 2012 – Sevilla). ¿Por qué no intentar correrlos en menos de cincuenta minutos? La velocidad nunca me ha obsesionado y siempre la he supeditado a la salud y a la minimización del riesgo de lesión, pero fijarme un reto me ayuda a diseñar entrenamientos más ricos.

Voy a registrar aquí, agrupados por meses, cada entreno que realice durante el 2014, compartiendo el tipo de ejercicio y las sensaciones durante la práctica. Veremos al final del año qué resulta de todo esto.

4 de enero de 2014

Los cambios de ritmo ayudan a ser un corredor más rápido y tengo intención de recurrir a ellos con frecuencia aprovechando la facilidad con que se pueden configurar en una cinta.

Diseño el siguiente esquema bastante suave: 30 minutos en cinta, repartiendo cada 5 minutos del siguiente modo: 4 minutos a 10 Km/h (6:00/Km) y 1 minuto a 12 Km/h (5:00/Km). Hay que tener en cuenta que 5:00/Km es el ritmo a batir (10K en 50 minutos), de modo que poco a poco hay que ir apuntando al objetivo.

6 de enero de 2014

Vuelta al casco histórico de Sevilla: 7 Km, 38:47, 5:33/Km.

Dado que la distancia era relativamente corta he querido apretar algo mas de lo habitual.

9 de enero de 2014

De vuelta a la cinta y exactamente el mismo entrenamiento que el día 4.

11 de enero de 2014

Mañana cálida (19 grados) y entrenamiento suave a la orilla del río: 9.05 Km, 52:20, 5:47/Km.

13 de enero de 2014

Fartlek de variable doble (velocidad e inclinación) en cinta:

[(10, 0, 1), (10, 1, 2), (10, 0, 1), (12, 0, 1)] x 6

(En el enlace se detalla su significado)

Entrenamiento cómodo y con cancha suficiente para ir exigiendo más.

16 de enero de 2014

He estado debatiéndome entre salir a la calle o acudir al gimnasio y así matar dos pájaros de un tiro. He optado por la segunda opción, de modo que he vuelto a subir a mi querida cinta de correr con ganas de experimentar alguna tortura nueva.

Entre las opciones de configuración de entrenamientos que trae la máquina una ha captado mi atención: AL AZAR. Soy un fanático de la aleatoriedad, así que, ¿por qué no introducirla en el deporte también?

Me ha preguntado mi peso (para el cálculo de calorías), el nivel, que he establecido con cierta prudencia en 5 (a elegir entre 1 y 20), el tiempo, 30 minutos, y la velocidad, que he fijado en 10 Km/h (6min/Km), lo mínimo que debe despacharse a estas alturas incluso en situaciones adversas.

Duro. Me ha hecho sudar la gota gorda, con la máquina modificando su pendiente al azar cada treinta segundos. Muchos tramos han llegado a alcanzar casi los 5 puntos de inclinación.

El nivel de exigencia percibida ha sido superior al de los últimos fartleks, pero me siento satisfecho de comprobar que incluso en las pendientes relativamente pronunciadas he sido capaz de mantener el ritmo constante configurado.

19 de enero de 2014

Las mañanas de los fines de semana son, para mí, los mejores momentos para correr. Día soleado, aunque bastante ventoso, que he aprovechado para darme una escapada por el parque de Miraflores, algo embarrado por la copiosa lluvia de anoche.

10 Km; 59:59; 6:00/Km.

23 de enero de 2014

Tres días sin correr. Podría alegar que ha sido debido a la lluvia, los ensayos… Excusas baratas.

Si algo tiene este deporte es que ofrece la suficiente flexibilidad para acomodarse a cualquier estilo de vida. Y si se dispone de poco tiempo, con veinte minutos corriendo al menos se cumple el expediente. Salvo si se está lesionado o enfermo, intentar justificar por qué no se corre no es más que engañarse uno mismo.

Sesión de cinta para rematar un trabajo con pesas en el gimnasio. Cambio de ritmo como los primeros, introduciendo pinceladas a 12 Km/h y descansando a 10 Km/h.

[(10, 0, 4), (12, 0, 1)] x 6

25 de enero de 2014

En el gimnasio de nuevo. Tras completar un trabajo de hombros me he subido a la cinta a dar una nueva vuelta de tuerca a los cambios de ritmo. La idea a medio plazo es simple: reducir gradualmente el tiempo de descanso a 10 Km/h e ir incrementando el dedicado a correr a 12 Km/h (los 5’/Km ansiados).

Un pequeño incremento de 15 segundos en cada bloque. Aparentemente poco, pero se ha sentido el cambio.

[(10, 0, 3:45), (12, 0, 1:15)] x 6

30 minutos que me han permitido alcanzar una distancia de 5’26 Km, un paso más hacia un subobjetivo intermedio: correr 5 Km en menos de 25 minutos.

28 de enero de 2014

Tras de un día largo y agotador cuesta arrancar a correr pero, si lo haces, te sientes después doblemente victorioso.

Repito la fórmula anterior: [(10, 0, 3:45), (12, 0, 1:15)] x 6

Duro. Los últimos tramos me ha costado recuperar más de lo habitual.

Nos vemos en febrero

Javier Montero Gabarró


Running 2014 – Diario de entrenamiento


Puedes consultar el índice completo de artículos pertenecientes a la categoría running.


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Python, un lenguaje excepcional

Objetivo: Introducción al manejo de excepciones en Python.

Admítelo: los errores en tiempo de ejecución suceden. Tanto si intentas abrir un fichero inexistente como si tratas de utilizar un índice fuera del rango de una lista o string, por poner dos ejemplos comunes, la respuesta de Python siempre es desagradable. Si tienes suerte y estás trabajando desde el intérprete interactivo sólo recibirás el temido mensaje de error y podrás continuar. Pero si estás ejecutando un programa éste abortará inmediatamente.

Esto casi nunca es deseable. Imagina, por ejemplo, que tu aplicación facilita un servicio importante que requiere una disponibilidad de 24 horas. El daño ocasionado por tener tu programa parado podría ser importante (económico, reputación, imagen, etc.).

Puedes intentar aprender de los errores y modificar tu programa introduciendo líneas y líneas de código hasta hacerlo inexpugnable. Puede incluso que descubras que tienes más código escrito para tratar errores que código efectivo, lo que, en cierto modo sonaría un tanto ridículo.

Pero no hace falta que tu proyecto sea de envergadura para que te preocupes por gestionar adecuadamente los eventuales errores en tiempo de ejecución. Después de todo, si has elegido Python es porque eres una persona preocupada por la elegancia programando, de modo que tienes un compromiso contigo mismo.

Para lidiar con los errores en tiempo de ejecución Python dispone de mecanismos de gestión de excepciones.

Una excepción, en el mundo de la programación, no es más que una señal que lanza el programa advirtiendo que ha sucedido algo excepcional. Lo típico es un error en tiempo de ejecución pero, como descubriremos a lo largo de estos artículos, hasta tú mismo podrías lanzar tu propia señal de excepción de un modo creativo.

Ya conoces la respuesta de Python ante una excepción provocada por un error en tiempo de ejecución: pantallazo de error y el programa aborta. Pero, ¿y si pudiéramos modificar ese comportamiento por defecto a nuestro antojo, evitando así que el programa caiga?

Es lo que se conoce como capturar la excepción. Un ejemplo sencillo aclarará esto.

El error en tiempo de ejecución de libro típico es el intento de división entre cero, una cosa muy, muy mala, que puede hacer reventar tu sistema…

El siguiente programita pide, en un bucle infinito, que introduzcas dos números para dividirlos a continuación.

while True:
    dividendo = int(input('Introduce el dividendo: '))
    divisor = int(input('Introduce el divisor: '))
    print('El cociente de la división de ambos números es', dividendo//divisor)

Vamos a jugar un poco con él:

Introduce el dividendo: 23
Introduce el divisor: 5
El cociente de la división de ambos números es 4
Introduce el dividendo: 12
Introduce el divisor: 7
El cociente de la división de ambos números es 1
Introduce el dividendo: 

Todo bien, hasta ahora. Pero, ¿qué sucede si por divisor introducimos un cero?

Introduce el dividendo: 12
Introduce el divisor: 0
Traceback (most recent call last):
  File "C:/Users/Javier/Desktop/borrable.py", line 4, in <module>
    print('El cociente de la división de ambos números es', dividendo//divisor)
ZeroDivisionError: integer division or modulo by zero

Se acabó el programa abruptamente. Se ha producido un error en tiempo de ejecución ocasionado por intentar dividir entre cero, lo que ha ocasionado que se lanzara la excepción ZeroDivisionError, como nos muestra el texto del error.

Podríamos haber hecho daño al programa de más maneras. Observa cómo introducimos los valores con la función input(), que ya sabes que devuelve un string. Por eso recurrimos después a int() para convertir ese valor en un verdadero número entero con el que poder realizar operaciones aritméticas. Pero, ¿y si no podemos convertir lo introducido a entero porque no hemos facilitado un número?

Introduce el dividendo: casa
Traceback (most recent call last):
  File "C:/Users/Javier/Desktop/borrable.py", line 2, in <module>
    dividendo = int(input('Introduce el dividendo: '))
ValueError: invalid literal for int() with base 10: 'casa'

El programa aborta también, pero está vez devuelve un error diferente. Se ha producido una excepción del tipo ValueError.

Este comportamiento no es reprochable en Python, que desconoce el efecto que podría tener mantener el programa activo pese al error sucedido. Lo más prudente es informar de lo sucedido y abortar inmediatamente la ejecución, dejando al programador (tú), si lo desea, la captura de las excepciones.

Para capturar una excepción Python dispone de la estructura try/except. En la parte try incluimos el bloque de instrucciones que queremos proteger y en el except lo que queremos que se ejecute si sucede una excepción.

Vamos a proteger el código ante los dos eventuales errores que hemos descubierto que podrían sucedernos. Por un lado hay que proteger los input y por otro la línea con el resultado de la división, de modo que en bloque try incluimos las tres líneas críticas:

while True:
    try:
        dividendo = int(input('Introduce el dividendo: '))
        divisor = int(input('Introduce el divisor: '))
        print('El cociente de la división de ambos números es', dividendo//divisor)
    except:
        print('Eso no ha estado bien, pero no pasa nada')
        print('Vuelve a intentarlo')

Presta mucha atención a la indentación, pues delimita, como siempre, la amplitud de los bloques en Python y permite saber a que try corresponde cada except.

Observa cómo, en la sección except, incluiremos código especial que sólo se ejecutará si se produce una excepción dentro del bloque protegido con try.

Vamos a verlo en acción:

Introduce el dividendo: 14
Introduce el divisor: 5
El cociente de la división de ambos números es 2
Introduce el dividendo: 35
Introduce el divisor: 0
Eso no ha estado bien, pero no pasa nada
Vuelve a intentarlo
Introduce el dividendo: 46
Introduce el divisor: casa
Eso no ha estado bien, pero no pasa nada
Vuelve a intentarlo
Introduce el dividendo: 12
Introduce el divisor: 5
El cociente de la división de ambos números es 2
Introduce el dividendo: 

Ahora sí, a prueba de bombas. ¡Está protegido incluso ante un intento de interrupción con Ctrl-C! (excepción KeyboardInterrupt).

Esto ha sido sólo un aperitivo. En los sucesivos artículos sobre excepciones iremos refinando y ampliando estos conceptos, esperando los más sofisticados a que estemos en posesión previamente de ciertos conocimientos necesarios sobre las clases y la programación orientada a objetos. Todo a su momento.

Javier Montero Gabarró


Python, un lenguaje excepcional


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

MuseScore – Transposición de sonido sin modificar la partitura

Objetivo: Aprender a transponer el sonido reproducido por MuseScore sin modificar la partitura.

Hace un rato un lector del blog me planteaba la siguiente cuestión como comentario al artículo dedicado a la transposición de una pieza musical escrita con MuseScore: ¿cómo transportar el sonido generado por la aplicación sin que se modifiquen las notas escritas en el pentagrama? Esto es: si, por ejemplo, tenemos un Sol sobre la segunda línea, Sol 4 ( o Sol 3, según el sistema empleado), suene una octava más abajo, Sol 3 (o Sol 2), pero manteniendo el dibujo en el mismo sitio.

La técnica de transposición descrita en el artículo es la convencional: transportamos la pieza el intervalo deseado, lo que origina también un cambio en la reproducción. Para lograr nuestro objetivo necesitaremos nuevos recursos.

Resolveremos el problema en dos fases: en la primera transportaremos lo escrito sin afectar el sonido, como si se tratase de un instrumento transpositor (nueva técnica); en la segunda realizaremos una transposición tradicional que devolverá lo escrito a su lugar de origen y, al modificar también el sonido, logrará el resultado buscado.

Observémoslo con detalle. Escribamos una sencilla melodía de ejemplo (estoy usando MuseScore 1.3):

musescore-6-1-2014-1

Reprodúcela varias veces hasta que te familiarices con su sonido. Pretendemos hacer que suene una octava justa más baja sin modificar la posición de las notas.

Comenzamos haciendo clic con el botón derecho sobre el nombre del instrumento (Voice, en nuestro ejemplo), eligiendo la opción Propiedades de pentagrama…

musescore-6-1-2014-2

Lo que nos conduce a este cuadro de diálogo repleto de suculentas opciones:

musescore-6-1-2014-3

Configúralo del siguiente modo:

musescore-6-1-2014-4

En Reproducir transposición he marcado Octava justa y he seleccionado Bajar para que el resultado visual sea justo el contrario: toda la notación ha sido transportada una octava hacia arriba.

musescore-6-1-2014-5

Sin embargo, la frecuencia de las notas no ha sido afectada. ¡Compruébalo!

Finalmente, realizaremos una transposición convencional descendente de una octava para devolver las notas a su posición original y, a su vez, disminuir su frecuencia en la misma medida.

Elegimos en el menú Notas | Transportar… Se nos preguntará, al no tener ningún compás seleccionado, si deseamos transponer la pieza completa. Respondemos afirmativamente, lo que nos llevará al siguiente cuadro de diálogo:

musescore-6-1-2014-6

Marcamos Transportar al intervalo y seleccionamos una octava justa descendente:

musescore-6-1-2014-7

Las notas vuelven a aparecer en su sitio:

musescore-6-1-2014-1

Pero, si pulsas el botón de reproducción comprobarás que todo el conjunto suena una octava más abajo, tal como pretendíamos.

Mediante esta doble técnica puedes transportar la frecuencia de las notas sin modificar su apariencia visual el intervalo que desees, no sólo una octava. Otra cuestión diferente es, desde luego, la razón por la que puedas querer hacerlo.

Javier Montero Gabarró


MuseScore – Transposición de sonido sin modificar la partitura


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Este es el índice completo de artículos sobre MuseScore.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies