Escalas: pasar de la fórmula absoluta a la relativa y viceversa

Objetivo: dada una escala en forma absoluta, ser capaz de expresarla relativamente y viceversa.

A la hora de aprender una determinada escala conviene que hagamos el esfuerzo en aprender tanto su fórmula absoluta como la relativa. El proceso de interiorización será mucho más rápido cuando contemplemos la escala desde ambas perspectivas, como veremos.

Propongo para hoy una serie de ejercicios de conversión: dada la fórmula absoluta calcularemos la relativa y, al contrario, partiendo de la fórmula relativa determinaremos la absoluta.

Ejercicio 1

La escala Lidia tiene por fórmula absoluta:

T – T – T – S – T – T – S

¿Cuál es su fórmula relativa?

Seguiremos el siguiente procedimiento:

1) Calcularemos las notas partiendo de Do como tónica.

2) Compararemos las notas resultantes con la escala de Do mayor.

Comenzamos por el primer paso (si tienes problemas calculando tonos y semitonos, revisa los primeros artículos de la categoría Teoría Musical):

Do + T = Re
Re + T = Mi
Mi + T = Fa#
Fa# + S = Sol
Sol + T = La
La + T = Si

Si + S = Do –> Tendríamos un problema si no hubiéramos terminado nuevamente en Do

Comparemos ahora ambas escalas:

Do mayor –> Do – Re – Mi – Fa – Sol – La – Si
Do lidia –> Do – Re – Mi – Fa# – Sol – La – Si

Todas las notas son idénticas, a excepción del cuarto grado, que está sostenido.

La fórmula relativa es, por lo tanto:

Lidia –> 1 – 2 – 3 – #4 – 5 – 6 – 7

Ejercicio 2

La escala menor armónica tiene por fórmula absoluta

T – S – T – T – S – X – S

Determinar la fórmula relativa.

Calculemos las notas partiendo desde Do. Ten en cuenta que con la X estoy designando un intervalo de tono y medio (tres semitonos).

Do + T = Re
Re + S = Mib
Mib + T = Fa
Fa + T = Sol
Sol + S = Lab
Lab + X = Si
Si + S = Do

Comparamos Do mayor con Do menor armónica:

Do mayor –> Do – Re – Mi – Fa – Sol – La – Si
Do menor armónica –> Do – Re – Mib – Fa – Sol – Lab – Si

Todo igual a excepción del tercer y sexto grado, que son bemoles.

Menor armónica –> 1 – 2 – b3 – 4 – 5 – b6 – 7

La operación inversa tampoco entraña ningún misterio.

Ejercicio 3

La escala mixolidia tiene por fórmula relativa

1 – 2 – 3 – 4 – 5 – 6 – b7

¿Cuál es su expresión absoluta?

El procedimiento es el contrario del anterior:

1) Calcularemos las notas comparando la escala con Do mayor.

2) Determinaremos a mano la distancia entre cada nota y la siguiente.

Puesto que sabemos la fórmula relativa, las notas de la escala con tónica en Do son inmediatas:

Do mixolidia –> Do – Re – Mi – Fa – Sol – La – Sib

Observa que hemos hecho bemol el séptimo grado.

Las distancias entre cada par de notas consecutivas son:

Do – Re –> T
Re – Mi –> T
Mi – Fa –> S
Fa – Sol –> T
Sol – La –> T
La – Sib –> S

y, para cerrar, la distancia de la vuelta a Do

Sib – Do –> T

Recopilamos todas esas distancias, obteniendo la fórmula absoluta de la escala mixolidia:

Mixolidia –> T – T – S – T – T – S – T

Ejercicio 4

La escala Dórica b2 tiene por fórmula relativa

Dórica b2 –> 1 – b2 – b3 – 4 – 5 – 6 – b7

¿Cuál es la fórmula absoluta?

Utilizando la fórmula, la escala Do dórica b2 es:

Do dórica b2 –> Do – Reb – Mib – Fa – Sol – La – Sib

Calculemos las distancias:

Do – Reb –> S
Reb – Mib –> T
Mib – Fa –> T
Fa – Sol –> T
Sol – La –> T
La -Sib –> S
Sib – Do –> T

Dórica b2 –> S – T – T – T – T – S – T

Aritmética simple.

Asegúrate de comprender estos ejemplos, te ayudarán a seguir sin problemas la exposición sistemática de escalas que comenzaremos en breve.

Javier Montero Gabarró


Escalas: pasar de la fórmula absoluta a la relativa y viceversa


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: Unión, intersección y diferencia de conjuntos

Objetivo: aprender a realizar operaciones como la unión, intersección y diferencia de conjuntos en Python.

Continuamos nuestro repaso al tipo set en Python aprendiendo, por fin. a realizar las operaciones clásicas por antonomasia.

Definamos antes algunos conjuntos sobre los que practicar:

>>> c1 = {1, 2, 3, 4, 5, 6}
>>> c2 = {2, 4, 6, 8, 10}
>>> c3 = {1, 2, 3}
>>> c4 = {4, 5, 6}

Empecemos por la unión de dos conjuntos, definida como el conjunto de elementos que están en uno o en otro (o en ambos).

>>> c1 | c2
{1, 2, 3, 4, 5, 6, 8, 10}

Podemos incluir más de dos operandos:

>>> c1 | c2 | c3
{1, 2, 3, 4, 5, 6, 8, 10}

Y seguimos con la intersección: el conjunto de elementos que estan en ambos.

>>> c1 & c2
{2, 4, 6}

>>> c1 & c2 & c3 & c4
set()       # El conjunto vacío

Estos operadores también tienen variantes como métodos del objeto set. Observa su uso autoexplicativo:

>>> c1.union(c2)
{1, 2, 3, 4, 5, 6, 8, 10}

>>> c1.intersection(c2, c3)
{2}

La diferencia de dos conjuntos A y B, A – B, es el conjunto de elementos que están en A pero no en B. En Python se implementa con un operador de resta simple (-):

>>> c1 - c2
{1, 3, 5}

La unión exclusiva, también conocida como diferencia simétrica, es el conjunto de elementos que están en A o B, pero no en ambos:

>>> c1 ^ c2
{1, 3, 5, 8, 10}

Compara este resultado con la unión, calculada anteriormente.

También existe versión método para estos operadores:

>>> c1.difference(c2)
{1, 3, 5}

>>> c1.symmetric_difference(c2)
{1, 3, 5, 8, 10}

Más adelante conoceremos situaciones en las que será más interesante usar los métodos que los operadores, aunque ahora quizás te resulte redundante.

Aún nos quedan algunos métodos por conocer relacionados con los conjuntos, pero no dispongo de más tiempo por hoy, de modo que los dejaremos para la siguiente ocasión.

Para finalizar, un pequeño consejito: conoce bien las estructuras de datos y el tipo de operaciones que puedes realizar con ellas. Con frecuencia, resolver elegantemente un problema de programación no se reduce a otra cosa sino a elegir la estructura de datos más adecuada.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/07/python-union-interseccion-y-diferencia-de-conjuntos/


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.

Construcción de acordes – 16: Séptima con novena

Objetivo: aprender a construir el acorde de séptima con novena y a diferenciarlo de otros con nombre parecido que pueden prestarse a confusión.

El acorde de séptima con novena, a estas alturas de la serie, se define a sí mismo: es un acorde de séptima (también conocido como séptima dominante o simplemente dominante) al que le agregamos una novena.

Si al acorde de séptima,

7 –> 1 – 3 – 5 – b7

le agregamos la novena, tenemos el acorde buscado:

7(9) –> 1 – 3 – 5 – b7 – 9

Compara este acorde con el del artículo anterior, el de séptima mayor con novena. La diferencia está en la séptima: nuestro acorde tiene la séptima menor (b7) en vez de mayor. Siempre que nombremos en un acorde la séptima sin ningún adjetivo junto a ella, nos estaremos refiriendo a la séptima menor.

El acorde 7(9) pertenece a la familia de acordes de séptima. El hecho de que lo hayamos extendido no modifica su función y normalmente puede utilizarse en lugar de un acorde de séptima con el colorido adicional que le dará la novena.

Hay otra notación alternativa, muy común para este acorde y que suele confundir a mucha gente. Consiste en agregar simplemente un 9 al nombre. Por ejemplo:

C7(9) es equivalente a C9.

Si escuchas Do novena, tal cual, debes pensar en un Do séptima con novena. La séptima va implícita.

El error común consiste en creer que un Do9 es un Do mayor al que le agregamos la novena. Este acorde ya lo vimos, y su nombre correcto es Do con novena añadida.

add9 –> 1 – 3 – 5 – 9

Percátate de la ausencia de la séptima en esta disposición.

Yo prefiero nombrar nuestro acorde de hoy como séptima con novena, en vez de novena a secas, lo que evita toda posibilidad de confusión.

Y ahora vamos, como siempre, a los dos ejemplos prácticos característicos de esta serie. Calculemos las notas de C7(9) y A7(9).

Partimos de la escala mayor de cada fundamental:

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

La mayor: A – B – C# – D – E – F# – G# – A – B

Observa que en vez de pararnos en la octava hemos seguido hasta la novena (mismo nombre que la segunda).

Si ahora tomamos las notas de la fórmula, obtenemos:

7(9) –> 1 – 3 – 5 – b7 – 9

C7(9) –> C9 –> C – E – G – Bb – D

A7(9) –> A9 –> A – C# – E – G – B

Trata de montarlo en tu instrumento. Si quieres tocar una versión de cuatro notas, en lugar de las cinco, sin que el acorde pierda su esencia, prueba a omitir la quinta.

Otro acorde más para nuestra tabla de referencia

Javier Montero Gabarró


Construcción de acordes – 16: Séptima con novena


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 de todos los artículos de armonía.

LaTeX – Controlando el espacio entre párrafos

Objetivo: presentar la dimensión \parskip para el control del espaciado entre párrafos.

Ya sabes cómo trata \LaTeX por defecto la separación entre párrafos: no los separa. El espaciado que hay entre un párrafo y el siguiente es el mismo que entre dos líneas consecutivas. Para poder distinguir dónde acaba uno y comienza otro \LaTeX indenta la primera línea de cada párrafo.

Pero hay más estilos a la hora de distinguir párrafos. En el artículo Cambiando el estilo de los párrafos aprendimos la utilización del paquete parskip para hacer que los párrafos no se indentaran y mantuvieran un espacio de separación entre ellos.

Hoy voy a presentarte la magnitud \parskip (no la confundas con el paquete parskip, pese a que lleven el mismo nombre), que sirve para configurar el espaciado extra que queremos que exista entre párrafos.

Por defecto, la distancia entre párrafos es la misma que entre líneas, es decir, \parskip vale cero. Pero podemos cambiar su valor empleando el comando \setlength, que ya conocemos:

\setlength{\parskip}{8mm}

Si escribimos esta línea en el preámbulo, todos los párrafos del documento aparecerán separados 8mm más la distancia normal entre líneas. Presta atención a esto, voy a repetirlo: no es que la distancia entre párrafos sea de 8mm, sino 8mm más la habitual entre líneas.

También puedes incluir el comando anterior en el cuerpo del documento. En este caso la separación nueva sólo se aplicará a partir del párrafo que lo contenga. Si, en cualquier momento, quieres regresar a la distancia por defecto, puedes recurrir a esto otro:

\setlength{\parskip}{0cm}

Observa que, aunque el valor sea cero, es necesario indicar las unidades.

Naturalmente, también puedes limitar el efecto del comando acotándolo en un grupo delimitado por llaves:

{\setlength{\parskip}{8mm}.....Resto del párrafo o párrafos....}

El valor de \parskip también puede ser negativo, algo que en algunas circunstancias particulares puede ser conveniente:

\setlength{\parskip}{-2mm}

A mí me gusta que la distancia entre párrafos sea una línea en blanco, es decir, que la separación sea dos veces el espacio normal entre líneas. En un artículo reciente expliqué que LaTeX controlaba el interlineado a través de la magnitud \baselineskip (que no debíamos modificar sino a través del multiplicador \baselinestretch).

Por lo tanto, si quiero que la distancia extra entre párrafos sea la misma que el interlineado, puedo escribir, simplemente:

\setlength{\parskip}{\baselineskip}

También podemos recurrir a unidades relativas en vez de absolutas.

\setlength{\parskip}{1ex}

De este modo, la distancia extra entre párrafos será el equivalente a la altura de la letra x, que depende, naturalmente, del tamaño de la fuente empleada.

Para finalizar, voy a hablarte de lo que en \LaTeX se conoce como longitudes de goma. Hay ocasiones en las que podríamos desear estéticamente que la altura de las páginas sea siempre la misma. El problema es que \LaTeX puede tomarse al pie de la letra, con rigurosa precisión, nuestros comandos. Si, como en los ejemplos anteriores, indicamos la longitud exacta que queremos entre párrafos, puede que luego los números no cuadren a la hora de encajar todo en la página, con el resultado de que la altura de las páginas podrá variar de una a otra.

Sería interesante poder decirle a \LaTeX: «quiero 1cm extra entre párrafos, pero, si lo consideras necesario, ajusta flexiblemente esa cantidad, según tu buen criterio, para que luego todo encaje bien en la página».

Ahí entra lo que se conoce como longitudes de goma, en relación a la flexibilidad de este material. Observa este comando flexible:

\setlength{\parskip}{1cm plus 5mm minus 4mm}

Lo que le estamos diciendo a \LaTeX es que la separación extra ha de ser 1cm, pero, si se considera necesario, puede crecer un poco, hasta 5mm más, o reducirse hasta 4mm menos.

Flexibilidad, la clave del control…

Javier Montero Gabarró


LaTeX – Controlando el espacio entre párrafos


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 relacionados con \LaTeX.

Python – Agregación y eliminación de elementos de un conjunto

Objetivo: aprender a agregar y eliminar elementos de un conjunto en Python.

Pongámonos al día. En Introducción a los conjuntos presentamos el tipo set para almacenar conjuntos. Aprendimos a crearlos, tanto un conjunto vacío, como con datos preexistentes. Vimos también cómo comprobar si un determinado elemento pertenece o no al conjunto, así como determinar la cardinalidad, es decir, el número de elementos en total.

Con estos conceptos claros, es momento de aprender a realizar otras operaciones básicas, como la agregación y eliminación de elementos a conjuntos ya existentes.

Comencemos creando un par de conjuntos sobre los que trabajaremos:

>>> c1 = set()     # El conjunto vacío
>>> c2 = {1, 2, 3, 4, 5, 6}

Para añadir elementos a un conjunto disponemos del método add.

Por ejemplo,

>>> c1.add('pimiento')
>>> c1
{'pimiento'}

Para agregar elementos a un conjunto hemos de hacerlo de uno en uno. Si intentaras meter varios de golpe se produciría una excepción.

>>> c1.add(5)
>>> c1
{'pimiento', 5}

Observa, tras esta última operación, que los elementos pueden ser de tipos variados dentro del mismo conjunto.

Fíjate en esta otra instrucción:

>>> c2.add((7, 8))

¿No hemos dicho que no se podía introducir más que un elemento cada vez?

En efecto, así es. Pero date cuenta de que no hemos introducido dos elementos, sino sólo uno: la tupla (1, 2). Observa los paréntesis.

>>> c2
{1, 2, 3, 4, 5, 6, (7, 8)}

Si no te fías, comprueba la cardinalidad:

>>> len(c2)
7

en lugar de 8.

Como vemos, agregar elementos a un conjunto es una labor simple. Borrarlos es igual de sencillo, pero nos ofrece más variedad de opciones.

Quizás no te guste tener que retirar elementos de un conjunto. Si prefieres, puedes dejar que Python se ocupe por ti de la difícil decisión empleando el método pop.

>>> c2.pop()
1

El método pop no sólo elmina un elemento, sino que además nos presenta cuál ha retirado del conjunto. No debe llevar argumentos.

>>> c2
{2, 3, 4, 5, 6, (7, 8)}

>>> c2.pop()
2
>>> c2
{3, 4, 5, 6, (7, 8)}

¿Adivinas cuál será el siguiente a extraer?

>>> c2.pop()
3

Pero no te confundas… Aunque podamos predecirlo fácilmente en este caso, considera mejor que Python te devolverá un valor arbitrario. Piensa que los elementos de un conjunto no tienen orden, aunque internamente Python pueda implementarlos de acuerdo a su propio criterio. Observa el siguiente ejemplo:

>>> c3 = {'luis', 'pedro', 'juan'}

Presta atención al orden en que han sido introducidos. Ahora observa cómo te muestra Python el conjunto:

>>> c3
{'luis', 'juan', 'pedro'}

No coincide con el orden de introducción. Ni siquiera están por orden alfabético.

Si ahora hago un pop sé que extraerá a ‘luis’, el elemento primero en ese orden peculiar, pero eso no es fácilmente deducible a partir de los datos iniciales.

>>> c3.pop()
'luis'

Lo dicho: considerara que el valor que extrae pop es completamente arbitrario.

¿Qué utilidad puede tener extraer un elemento arbitrario de un conjunto?

Imagínate que los tres amigos de antes, Luis, Pedro y Juan, han quedado a tomar unas cervezas. Llega el momento de rascarse el bolsillo y nadie parece decidirse a pagar. Mete a los tres en un conjunto y deja que Python decida…

Pero, aunque la elección es arbitraria, te recomiendo que no emplees pop si lo que de verdad buscas es aleatoriedad. Hay otras maneras más justas de hacerlo.

Para eliminar un elemento concreto de un conjunto, usa el método remove:

>>> c2.remove(5)
>>> c2
{4, 6, (7, 8)}

Pero ten mucho cuidado: si el elemento no existe te devolverá un error.

>>> c2.remove(2)
Traceback (most recent call last):
  File "<pyshell#58>", line 1, in <module>
    c2.remove(2)
KeyError: 2

Si no quieres correr ese riesgo, existe el método discard, que elimina un elemento sólo en el caso de que exista.

>>> c2.discard((7, 8))   # Eliminando la tupla (7,8)
>>> c2
{4, 6}

>>> c2.discard(2)
>>> c2
{4, 6}

Para hacer limpieza completa de un conjunto, sin remordimiento alguno, disponemos del método clear:

>>> c2.clear()
>>> c2
set()

Recuerda, por el artículo anterior, que el conjunto vacío se representa por set(), en vez de {}, que correspondería a un diccionario vacío.

Hemos colocado nuevas piezas sobre el puzzle. En el próximo artículo veremos cómo gestionar operaciones sobre conjuntos de toda la vida como la unión y la intersección.

Javier Montero Gabarró


Python – Agregación y eliminación de elementos de un conjunto


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.

La fórmula relativa de una escala musical

Objetivo: presentar la fórmula relativa y su utilidad práctica para el conocimiento de las diversas escalas musicales.

En un artículo anterior definimos la fórmula absoluta de una escala como aquella que indicaba su composición relacionando cada grado con el anterior. Conocida la fórmula absoluta, la determinación de los grados que constituyen la escala era una cuestión de aritmética simple, como ilustramos en los ejemplos prácticos.

Pero hay más maneras de referirnos a la estructura de una escala musical. La fórmula relativa, que explicaremos a continuación, es esencial para tener una visión clara de cómo es una escala, facilitando además su memorización.

Comencemos por nuestra querida escala mayor en su expresión más sencilla: Do mayor

Do – Re – Mi – Fa – Sol – La – Si – Do

en la que Do es el primer grado, Re el segundo, Mi el tercero, y así sucesivamente.

Indiquemos estos grados por sus números:

1 – 2 – 3 – 4 – 5 – 6 – 7 – 8

Voy a elegir ahora otra escala. Por ejemplo, imagina que te digo que la escala Do lidia está compuesta por las siguientes notas:

Do lidia –> Do – Re – Mi – Fa# – Sol – La – Si – Do

Vamos a comparar ahora Do lidia con Do mayor, grado a grado:

Do – Re – Mi – Fa – Sol – La – Si

Do – Re – Mi – Fa# – Sol – La – Si

Si observas ambas escalas, te darás cuenta de que todos los grados de la escala lidia son los mismos que la de la escala mayor, salvo el cuarto grado, que en aquella es Fa# y en esta Fa natural.

Esto lo podemos indicar así, aumentando un semitono el cuarto grado:

1 – 2 – 3 – #4 – 5 – 6 – 7

Esta es precisamente la fórmula relativa de la escala Lidia y con ella veremos que podremos calcular sus notas en cualquier tonalidad.

La denominamos relativa porque resulta de una comparación con otra escala: la escala mayor. Más adelante veremos que, en ocasiones, resulta útil conocer también la fórmula relativa respecto a otras escalas además de la mayor. Pero, de momento, cuando no matice nada concreto, siempre que me refiera a la fórmula relativa, me estaré refiriendo a la fórmula relativa a la escala mayor.

Quiero recalcar una vez más la cuestión de la terminología. Hay otros músicos que emplean unos términos distintos para referirse a lo mismo, pero, independientemente del sistema al que te adhieras, lo realmente importante es comprender los conceptos que subyacen.

Un nuevo ejemplo: la escala Do menor natural tiene las siguientes notas:

Do menor natural –> Do – Re – Mib – Fa – Sol – Lab – Sib – Do

¿Cuál es la fórmula relativa de la escala menor natural?

Si comparas uno a uno todos los grados respecto a Do mayor, observarás que coinciden todos excepto el tercero, sexto y séptimo, que son bemoles. Por lo tanto, la fórmula relativa es:

Menor natural –> 1 – 2 – b3 – 4 – 5 – b6 – b7

Ya sabes lo que son, entonces, las fórmulas absoluta y relativa de una escala. En el próximo artículo de esta serie realizaremos numerosos ejemplos prácticos variados que te ayudarán a afianzar estos importantes conceptos.

Javier Montero Gabarró


La fórmula relativa de una escala musical


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.

MySQL – Ha llegado la hora

Objetivo: presentar en MySQL el tipo de datos TIME, adecuado tanto para registrar horas como para el tiempo transcurrido entre dos eventos.

En el artículo anterior tratamos el tipo de datos DATE para registrar fechas (año, mes y día). Aunque, como veremos pronto, existen también tipos para indicar fecha y hora en el mismo campo, MySQL dispone de uno específico para almacenar horas: TIME.

Hay varias maneras de introducir la hora y es preciso conocer algunas sutilezas.

Comencemos por el formato básico:

‘HH:MM:SS’

Indicamos la hora, seguida de los minutos y de los segundos. Por ejemplo:

'07:30:46'
'13:46:00'
'23:59:59'

No olvides las comillas y ten en cuenta que la hora se indica en formato 24 horas (no 12, con am y pm).

Una hora escrita con sus tres pares (horas, minutos y segundos), puede indicarse también sin el delimitador de los dos puntos. De este modo, los tres ejemplos anteriores puedes escribirlos así:

'073046'
'134600'
'235959'

o incluso como números, sin las comillas:

073046
134600
235959

Si empleamos el delimitador, podemos prescindir de los ceros a la izquierda. Las siguientes horas son equivalentes:

'05:05:05'
'5:5:5'

Pero ten presente que, sin delimitadores, esa hora no podría escribirse como '555', sino ‘050505'.

También podemos expresar horas en formato más corto:

‘HH:MM’

'13:30' es equivalente a '13:30:00'.

Puedes usar el formato corto sin delimitadores, pero con una precaución importante que puede prestarse a confusión.

Siempre que facilitas una hora sin delimitadores (con comillas o sin ellas) MySQL intenta formar los pares de derecha a izquierda. Por ejemplo:

‘1330’ es equivalente a '00:13:30' y NO '13:30:00', como sucedía antes.

'759' es equivalente a '00:07:59'

'10' es equivalente a '00:00:10'.

Tenlo siempre presente a la hora de emplear delimitadores o no.

El tipo TIME puede utilizarse no sólo para registrar horas, sino también para indicar el espacio de tiempo entre dos sucesos, siempre y cuando entre ellos no existan más de 35 días.

35 días (aproximadamente), he dicho bien.

Pero, ¿cómo representamos hasta 35 días en un formato HH:MM:SS?

‘HHH:MM:SS’

Es decir, empleando tres cifras para la hora:

'100:45:15'

que se corresponde a 100 horas, cuarenta y cinco minutos y quince segundos.

También puedes expresar medidas temporales negativas:

'-100:45:15'

El rango temporal permitido está comprendido entre -838:59:59 y 838:59:59.

839 horas son aproximadamente 35 días.

Este otro formato también es válido:

‘D HHH:MM:SS’

donde D representa el número de días:

'5 15:20:40'

significa 5 días, 15 horas, 20 minutos y 40 segundos.

O este otro:

'20 100:34:45'

Pero aunque lo introduzcamos así, MySQL nos lo presentará con los días pasados a horas:

'580:34:45'.

Este otro valor resultaría en error:

'20 500:00:00'

ya que, si conviertes los días a horas te queda que es equivalente a

'980:00:00'

y ya sabes que el límite es

838:59:59

Empleando días también está disponible esta otra sintaxis:

‘D HHH’

Por ejemplo,

'20 5'

que equivale a 20 días y 5 horas, es decir, lo mismo que:

'485:00:00'

Para finalizar, como aplicación práctica, vamos a diseñar una tabla MySQL, denominada fichajes, en la que registraremos los fichajes de entrada y salida en una empresa.

mysql> CREATE TABLE fichajes
    -> (
    -> fecha DATE,
    -> entrada TIME,
    -> salida TIME
    -> );
Query OK, 0 rows affected (0.11 sec)

mysql> DESC fichajes;
+---------+------+------+-----+---------+-------+
| Field   | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| fecha   | date | YES  |     | NULL    |       |
| entrada | time | YES  |     | NULL    |       |
| salida  | time | YES  |     | NULL    |       |
+---------+------+------+-----+---------+-------+
3 rows in set (0.05 sec)

Nada más; son las 18:34:46, hora ya de publicar este artículo…

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/06/mysql-ha-llegado-la-hora/


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


¡Accede al índice con todos los artículos sobre MySQL!

HTML – Hiperenlaces titulados

Objetivo: recomendar el uso del atributo title para facilitar información útil en un hiperenlace.

Todo comenzó con el elemento <img>. Esta etiqueta HTML siempre ha dispuesto, tradicionalmente, de un atributo, alt, en el que indicábamos información adicional que los navegadores mostraban en el caso de que, por la razón que fuera, no se llegara a cargar la imagen.

Este tipo de funcionalidad extra se ha demostrado muy útil en muchos más elementos, además de en <img>, hasta el punto de que un buen número de ellos dispone hoy día de un atributo, denominado title, para titular escuetamente la función del elemento. El texto que facilitemos a ese atributo podrá ser empleado por los navegadores a la hora de visualizar (o incluso escuchar) la página. Además, title suele gustar bastante a los robots que se dedican a escudriñar las páginas por la red, por lo que un uso adecuado puede ayudarte a mejorar el posicionamiento de tu página en un buscador.

El propio elemento <img> dispone también de un atributo title, pese a contar ya con alt. La diferencia entre ambos suele prestarse a confusión.

Nuestros potentes hiperenlaces con <a> no podían ser menos, de modo que en su colección de atributos permitidos incluyen también title.

Observa el siguiente código HTML:

Este es el <a href="http://elclubdelautodidacta.es/wp/indice-html/" title="Índice completo de la categoría HTML">índice completo</a> de artículos sobre HTML.

Este es su efecto:

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

Ahora, sin hacer clic sobre el enlace, posiciona simplemente el ratón sobre él. Verás que te aparece un texto emergente, junto al puntero, que reza Índice completo de la categoría HTML.

Interesante, ¿verdad? Ahora ya sabemos qué podemos esperarnos al otro lado antes de hacer clic en el enlace, algo que no siempre resulta obvio. Por ejemplo, fíjate en esto otro:

Para acceder al índice sobre HTML pulsa aquí.

Ignorando el texto previo, la palabra hiperenlazada («aquí») no guarda relación semántica con el destino del hiperenlace. Naturalmente, en la barra de estado nos aparecerá, normalmente la dirección a la que apunta, pero aún así puede no ser perfectamente explicativa. El atributo title identifica claramente el destino, como puedes comprobar dejando el ratón sobre el enlace.

De todos modos, procura evitar un uso como el anterior. Intenta, en la medida de lo posible, que el texto disparador del hiperenlace, el que aparece subrayado, que es el que colocamos entre las etiquetas <a> ... </a> guarde relación semántica con el destino, tal como hicimos en el primer ejemplo.

Y, por supuesto, utiliza title siempre.

Javier Montero Gabarró


HTML – Hiperenlaces titulados


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 relacionados con HTML.

Transposición de una obra musical en MuseScore

Objetivo: aprender a transponer a otra tonalidad una obra escrita con MuseScore.

Imagínate la siguiente situación: tienes tu flamante partitura en Fa mayor y el cantante te dice que se le queda grave y quiere cantarla en La bemol mayor. Subir en el pentagrama, una a una, cada nota una tercera menor puede ser una labor tediosa y propensa a errores. ¿No sería fantástico si MuseScore pudiera hacer ese trabajo por nosotros?

MuseScore permite, en apenas varios clics con el ratón, transponer una pieza a cualquier tonalidad que queramos entre las 15 estándar que existen. Puedes hacerlo sobre la obra completa o sobre cualquier conjunto de compases. Tú decides el ámbito de transposición.

Puedes decidir también si quieres que la armadura refleje la nueva tonalidad o, por el contrario, que no se cambie. Incluso tienes la facilidad de decirle a MuseScore que se ocupe del cambio de cifrado de los acordes si tu partitura los incluye.

Veamos cómo hacer todas estas cosas.

Comencemos creando, a título de práctica, una sencilla escala de Do mayor a la que le hemos añadido también un par de acordes cifrados:

Nuestro primer ejercicio será transponerla a Re mayor.

Vete al menú Notas | Transportar. Te aparecerá lo siguiente:

Puesto que no hemos seleccionado previamente ningún conjunto de compases, MuseScore nos pregunta si lo que queremos transponer es la partitura completa. Respondemos afirmativamente, tras lo cual nos aparece el cuadro de diálogo Transportar, centro de operaciones desde el cual realizaremos todas las labores de transposición.

Vamos a desgranar todas las posibilidades que nos ofrece.

Para empezar, el cuadro de diálogo permite dos modos de operación: eligiendo la tonalidad destino directamente o indicando el intervalo de transposición. Todo dependerá de cuál dejes marcado: Transportar a la tonalidad, o bien Transportar al intervalo.

Comencemos por la primera opción. Observa cómo, para empezar, te muestra la tonalidad actual (Do mayor, o su relativo menor, La menor, en este caso). Si despliegas el cuadro, te aparecerán las 15 tonalidades principales para que elijas la deseada.

Es importante que comprendas que MuseScore no realiza ningún tipo de análisis sobre las notas para tratar de determinar la tonalidad original; tan sólo se limita a consultar la armadura.

Bien, ya tenemos la tonalidad de destino, pero ¿queremos que transponga ascendente o descendentemente? Los tres botones de radio nos permiten realizar la elección. Observa que también existe la opción para que se transponga en el sentido más próximo.

Si marcas sobre Transportar al intervalo, tendrás todo un abanico de intervalos donde elegir, incluyendo los correspondientes enarmónicos. Puede ser una opción muy cómoda si no quieres calcular la tonalidad destino o si sólo quieres transportar un conjunto de compases en vez de la obra completa.

Fíjate que puedes elegir si el intervalo será ascendente o descendente.

En el último tercio del cuadro de diálogo aparece una serie de opciones que prácticamente hablan por sí solas.

Si desmarcas Transportar las armaduras, los cambios se realizarán sobre las notas, pero la armadura no se verá afectada.

Si desmarcas Transportar los nombres de acordes, los acordes no actualizarán su nombre tras el cambio de tonalidad y su cifrado permanecerá sin variar.

Finalmente, tienes la opción por defecto para usar dobles sostenidos y bemoles cuando sea necesario. Lo contrario desharía las notas doblemente alteradas, reajustando la altura en consonancia. Tú mismo.

Prosigamos con nuestra escala del ejemplo. Para transponerla a Re mayor, ajustar la armadura en consonancia y actualizar el cifrado de los acordes, hemos de configurar del siguiente modo el cuadro Transportar:

Tras lo cual obtenemos el resultado deseado, tanto en las notas como en la armadura y los acordes.

Te propongo que practiques por tu cuenta la transposición de, por ejemplo, sólo el segundo compás, en vez de la pieza completa. Debes tener en cuenta que, en el caso de que los compases seleccionados no incluyan el primero, la armadura no se modificará, aunque la marca indique lo contrario. La opción Transportar las armaduras sólo cobra sentido cuando la selección incluye al primer compás.

Ahora quiero que observes un pequeño fallo que tiene MuseScore (al menos la versión 1.2 revisión 5470, que uso en el momento de escribir esto), pero que podemos solucionar muy fácilmente por un camino alternativo.

Vamos a transponer la partitura del ejemplo a Do sostenido mayor, cuya armadura, ya sabes, tiene siete sostenidos. Si procedes del modo ordinario obtendrás esto:

Mal. En vez de los 7 sostenidos ha elegido los 5 bemoles de Re bemol mayor, enarmónica de Do sostenido mayor. Ya sabes que la suma de alteraciones de una tonalidad más su enarmónica suman doce.

Ocurriría lo mismo, si en vez de transportar directamente a Do sostenido lo hicieras vía un intervalo de unísono aumentado.

Es más, incluso transponiendo a Fa sostenido mayor (seis sostenidos), prefiere mostrarnos la armadura enarmónica, Sol bemol (seis bemoles).

MuseScore simplifica y te muestra la armadura enarmónica que menos alteraciones requiera (y, en el caso de empate, parece decidirse por los bemoles). Pero, naturalmente, no es eso lo que deseamos.

Si quieres tus siete sostenidos, como Dios manda, procedemos del siguiente modo:

1) Transponemos toda la partitura a Do sostenido mayor sin modificar la armadura:

Obtenemos, de este modo, las notas y el cambio de acorde:

2) Finalmente, cambiamos a mano la armadura. Para ello, desplegamos la Paleta, opción Armaduras,

y arrastramos los siete sostenidos sobre el primer compás. Ahora sí:

Observa como los sostenidos han desaparecido de las notas, al estar ya implícitos en la armadura.

Gran tonalidad Do sostenido mayor. ¿Qué hubiese sido, en el recorrido cromático de su Clave bien temperado, del Preludio y Fuga nº3 de Bach sin Do sostenido mayor?

Javier Montero Gabarró


Transposición de una obra musical en MuseScore


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.

LaTeX – Modificando el espacio de interlineado

Objetivo: mostrar cómo modificar la distancia entre líneas en un documento LaTeX.

\LaTeX está concebido para que no nos preocupemos por los detalles concretos de la maquetación de un documento. Típicamente, diremos qué tipo de estructuras lógicas deseamos crear y dejaremos que \LaTeX se preocupe por las cuestiones de diseño.

Pero, naturalmente, tenemos a nuestra alcance toda su potencia para realizar el ajuste fino de cualquier parámetro relacionado con la presentación del documento.

Esa es una de las razones por las que adoro \LaTeX. En apenas varias horas de formación puedes estar generando documentos de muy alta calidad. Después, conforme vas estudiando más y más, empiezas a utilizar comandos de ajuste fino, nuevos paquetes o incluso personalizas las clases.

Voy a mostrarte hoy cómo proceder para modificar el interlineado, si no te gusta el que el programa te ofrece por defecto.

Hay una magnitud que controla la separación de líneas en \LaTeX: \baselineskip.

Puede ser tentador, entonces, introducir un simple comando para modificar esa magnitud, como

\setlength{\baselineskip}{18pt}

Sin embargo, eso NO FUNCIONA.

La cuestión es que \LaTeX sobreescribe \baselineskip y lo ajusta dinámicamente en función de aspectos como, por ejemplo, el tamaño de la fuente.

Típicamente, para una fuente de tamaño normal de 10pt, la separación entre líneas es 12pt. Pero, si esa misma fuente la empleas en versión Huge, puedes encontrarte con una separación de hasta 30pt.

Para modificar el interlineado recurrimos a la macro \baselinestretch, que no es más que un multiplicador del valor de \baselineskip. Por defecto, su valor es 1.

Si hacemos que el valor del multiplicador sea 2, conseguiremos que la separación entre líneas sea del doble. El comando siguiente, que introduciremos en el preámbulo, redefine la macro \baselinestrech:

\renewcommand{\baselinestretch}{2}

Si en vez del doble deseáramos una distancia y media:

\renewcommand{\baselinestretch}{1.5}

De este modo, podemos olvidarnos tranquilamente del ajuste dinámico que \LaTeX realiza sobre \baselineskip. Si ante una fuente normal separaba las líneas 12pt y 30pt en versión Huge, con un multiplicador de 1.5 las separará 18pt y 45pt, respectivamente.

Presta mucha atención al uso de \renewcommand: lo emplearemos continuamente en numerosos contextos.

Javier Montero Gabarró


LaTeX – Modificando el espacio de interlineado


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 relacionados con \LaTeX.

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