Guitarra – El método CAGED y los acordes menores

Objetivo: introducir la formación de acordes menores en la guitarra en posiciones CAGED.

A lo largo de los últimos artículos hemos esbozado las formas móviles de acordes basadas en las cinco posiciones CAGED. En la serie que comienza hoy realizaremos un estudio similar centrado en los acordes menores.

Nuestra punto de partida, al igual que hicimos con los acordes mayores, es el estudio de las posiciones con cuerdas al aire.

A continuación se presentan los cinco acordes mayores CAGED, C, A, G, E y D con cuerdas al aire. El primer conjunto de valores muestra los trastes específicos que hay que pisar; el segundo las notas efectivas que suenan y el tercero su estructura armónica:

C: x32010 / xCEGCE / x13513
A: x02220 / xAEAC#E / x15135
G: 320003 / GBDGBG / 135131
E: 022100 / EBEG#BE / 151351
D: xx0232 / xxDADF# / xx1513

Los acordes menores se diferencian de los mayores en el uso que hacen de la tercera. En efecto, observa sus fórmulas respectivas:

Acorde mayor: 1 – 3 – 5
Acorde menor: 1 – b3 – 5

Si esto te suena extraño permíteme recomendarte la lectura de la serie dedicada a la construcción de acordes dentro de la categoría Armonía del blog.

En los acordes mayores la tercera es mayor (dista 4 semitonos de la fundamental), mientras que en los menores es menor (distando 3 semitonos de la fundamental). Esto es, para pasar de un acorde mayor al respectivo menor simplemente hay que bajar un semitono la tercera.

Apliquemos este importante concepto a nuestros acordes mayores CAGED para transformarlos en menores.

Tomaremos un orden diferente. Comencaremos por los acordes A, E y D, dejando C y G para el final. Enseguida comprenderás por qué.

Este es el acorde de La mayor (A):

A: x02220 / xAEAC#E / x15135

Si te fijas, la tercera es el C# que se obtiene al tocar la segunda cuerda pisada en el segundo traste.

Para convertir este acorde en La menor (Am) basta con bajar un semitono esa tercera, lo que equivale a pisar la segunda cuerda un traste más abajo, es decir, el primero, obteniendo la nota C.

Am: x02210 / xAEACE / x151b35

La menor (Am)
La menor (Am)

Los números que aparecen en el gráfico sugieren la digitación más adecuada.

Para obtener Mi menor (Em) realizamos la misma operación; localizamos la tercera y la bajamos un semitono:

E: 022100 / EBEG#BE / 151351
Em: 022000 / EBEGBE / 151b351

Mi menor (Em)
Mi menor (Em)

Del mismo modo, pasar de Re mayor (D) a Re menor es sumamente sencillo:

D: xx0232 / xxDADF# / xx1513
Dm: xx0231 / xxDADF / xx151b3

Re menor (Dm)
Re menor (Dm)

Para pasar de Do mayor (C) a Do menor (Cm) tenemos un pequeño problema técnico:

C: x32010 / xCEGCE / x13513

La tercera, nota MI (E), además de figurar en la cuarta cuerda, está presente también en la primera cuerda ¡al aire! ¿Cómo bajamos un semitono una nota que ya está al aire?

Sencillamente, no podemos, de modo que debemos renunciar a utilizar esa cuerda si queremos aprovechar, al menos, otras partes del acorde, que ya habrá perdido su gran atractivo de formación al aire.

Es cierto que, al transponerlo usando una cejilla, poco nos importan las cuerdas al aire, pero la realidad es que el acorde que se obtiene es de escasa utilidad práctica.

Lo mismo, si no peor, sucede con Sol menor (Gm) si lo tratamos de derivar de Sol mayor (G) al aire:

G: 320003 / GBDGBG / 135131

En Sol mayor, como ves, la tercera (nota SI, B) se encuentra, además de en la quinta cuerda, en la segunda al aire. No podemos bajar un semitono esa nota porque nos hemos quedado sin guitarra, como en Do menor.

De modo que, a efectos prácticos, en este estudio CAGED para acordes menores descartaremos las posiciones C y G, quedándonos exclusivamente con las formas A, E y D.

Una terminología que, a estas alturas, debe quedarte ya clara:

Denominamos acorde menor en segunda posición CAGED al acorde con cejilla (o sin ella, si se monta al aire) que se obtiene empleando la forma Am (A es la segunda letra de CAGED).

Re menor (Dm) con forma de La menor (Am)
Re menor (Dm) con forma de La menor (Am)

¿Por qué este acorde es Re menor?

Para responder a la pregunta hay que localizar la fundamental del acorde. En la forma A, si revisas la estructura del acorde, ésta se encuentra en la quinta cuerda. En el gráfico, hemos trazado una cejilla en el quinto traste, de modo que nuestra fundamental se halla en el quinto traste de la quinta cuerda. Una sencilla cuenta te lleva hasta la nota Re, de modo que el acorde representado es Re menor (Dm).

Es muy importante, a la hora de transponer con agilidad los acordes CAGED usando cejillas, que tengas bien aprendidas las notas en la sexta, quinta y cuarta cuerdas, pues eso te permitirá localizar las fundamentales rápidamente. Si aún no tienes esa habilidad, no lo demores un solo día más y comienza a practicar ya.

Denominamos acorde menor en cuarta posición CAGED (cuarta letra, E), al acorde con cejilla que se obtiene empleando la forma Em, Mi menor al aire:

La menor (Am) en forma de Mi menor (Em)
La menor (Am) en forma de Mi menor (Em)

En este caso, nuestra referencia se halla en la sexta cuerda, como puedes apreciar si revisas la estructura del acorde. La sexta cuerda, pisada en el quinto traste, genera la nota LA (A), y por eso el acorde del gráfico se denomina La menor (Am).

Denominamos acorde menor en quinta posición CAGED (letra D, quinta en la palabra CAGED) al acorde que se obtiene empleando con cejilla la forma de Re menor (Dm) al aire:

Sol menor (Gm) con forma de Re menor (Dm)
Sol menor (Gm) con forma de Re menor (Dm)

Puedes elegir entre hacer la cejilla parcial, cubriendo las 4 primeras cuerdas, o bien dejar el dedo 1 sobre la cuarta cuerda, como aparece en la figura. El resultado es el mismo. Es un Sol menor (Gm) porque, en el acorde Re menor (Dm) al aire, la fundamental está localizada en la cuarta cuerda que, pisada en el quinto traste, nos lleva a la nota SOL (G).

Por lo general, no es común que la gente se refiera a estos acordes como segunda, cuarta o quinta posición CAGED. Se dice, simplemente, acorde en forma de La menor, Mi menor o Re menor. Pero considero importante que comprendas esta nomenclatura, a la que recurriré con frecuencia, pues te permite comprender como encajan estas piezas en el sistema CAGED.

En sucesivos artículos profundizaremos en los tres acordes presentados hoy, realizaremos más ejercicios prácticos y mostraremos algunas simplificaciones interesantes derivadas de estas posiciones.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2014/09/guitarra-el-metodo-caged-y-los-acordes-menores/


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 la categoría Guitarra.

Índice de la categoría Armonía.

Python – El concepto de Clase

Objetivo: presentar en Python el concepto de clase, pilar sobre el que está construido todo el paradigma de la programación orientada a objetos.

Ha llegado el momento de que introduzcamos la Programación Orientada a Objetos en Python. Supondremos que esta es la primera vez que te acercas a esta metodología y que desconoces completamente o tienes nociones imprecisas de lo que son las clases y los objetos, de modo que comenzaremos por lo esencialmente básico para que no arrastres lagunas conforme el tema vaya adquiriendo más complejidad.

Por cuestiones de economía me he permitido autoplagiarme empleando los ejemplos, e incluso las mismas palabras, que utilicé en la introducción a la POO que escribí en la serie dedicada a Java. Naturalmente, nuestros caminos divergirán tan pronto como comencemos a picar código concreto en Python.

El tratamiento empleado por Python para la POO difiere de manera importante en algunos aspectos al utilizado en otros lenguajes como Java, C++ o C#. Aunque podríamos habernos acercado a este tema directamente de un modo más pythonista, he preferido que nuestros primeros pasos sean sólidos, apoyados en un marco conceptualmente universal, como el compartido por los lenguajes de programación anteriormente citados.

¿Preparado para una nueva manera de resolver problemas?

Voy a proponerte un sencillo juego. Sal a la calle, mira a tu alrededor y contempla el mundo de un modo particular.

Veo veo… ¿Qué ves?
Una cosita… ¿Y qué cosita es?

Para empezar, quiero que identifiques qué tipos de objetos ves…

Puedes, por ejemplo, encontrarte coches, bares, semáforos o personas, por citar sólo unos cuantos tipos. Date cuenta de que, cuando digo tipos de objetos, hablo de un modo conceptual y general. Si te resulta chocante referirte a una persona como un objeto, prueba a sustituir la expresión por tipos de entidades, en su lugar.

Tipo y clase son dos términos sinónimos, de modo que vamos a cambiar «tipos de objetos» por «clases de objetos», aproximándonos un poco más al concepto que da pie al artículo de hoy.

¿Qué clases de objetos vemos? Coches, bares, semáforos, personas…

La siguiente transformación lingüística consiste en simplificar clases de objetos por simplemente clases:

¿Qué clases vemos? Coches, bares, semáforos, personas…

Y ahora sí, nos sumergimos plenamente en la terminología de la programación orientada a objetos:

Tenemos la clase Coche, la clase Bar, la clase Semáforo, la clase Persona

Poco interesan ahora los detalles concretos. No importa si esa persona es Marta, está en el bar «Casa Manolo», si tiene un Seat Panda o si el semáforo está en rojo. Estamos pensando en términos clasificatorios.

Vamos a adentrarnos ahora en el interior de cada una de estas clases.

¿Cómo son los coches? ¿Qué características pueden diferenciar uno de otro?

Por ejemplo, podríamos indicar la marca, el modelo, el color, la cilindrada, etc.

A las características las vamos a denominar atributos, término muy utilizado en la programación orientada a objetos.

¿Qué atributos tiene la clase Bar?

Todo bar tiene un nombre, una ubicación, un estado (si está abierto o cerrado), una lista de precios,…

Como atributos de la clase Semáforo podríamos indicar su ubicación y estado (rojo, verde o ámbar).

La clase Persona podría definir como atributos el nombre, sexo, edad, estado civil, altura, etc.

A continuación pensemos en el comportamiento de estas clases. Preguntémonos qué cosas hacen, qué tipo de acciones pueden realizar.

Un coche puede arrancar, detenerse, girar a la izquierda, acelerar, frenar, encender sus luces. Un semáforo puede cambiar de estado. Un bar puede abrir, cerrar, servirte una cerveza, cobrarla, modificar la lista de precios. Una persona puede hablar, dormir, conducir un coche, tomarse una cerveza en un bar.

En terminología de la programación orientada a objetos, a estas funciones que determinan el comportamiento de una clase se las conoce como métodos.

Empleando un lenguaje puramente pythonista, tanto a los atributos como a los métodos aquí descritos se les conoce como simplemente atributos. Para diferenciar unos de otros, Python emplea el término atributos de datos para referirse a los datos característicos de la clase. No obstante, al menos mientras continuemos presentando los conceptos básicos, seguiremos distinguiendo aquí entre atributos y métodos.

Sabemos qué es una clase y que está compuesta de atributos y métodos. Nuestra labor ahora consistirá en modelar en Python estas clases.

Modelar no es otra cosa sino crear una abstracción que represente de algún modo una determinada realidad.

Para crear en Python la clase Coche comenzamos usando la palabra reservada class, seguida del nombre de la clase y del símbolo de dos puntos:

class Coche:
    instrucción 1
    instrucción 2
    ...
    instrucción n

La clase más simple de todas no haría nada:

class Coche:
    pass

La sentencia pass pasa completamente, no hace absolutamente nada. Es útil en contextos en los que se requiere la presencia de al menos una instrucción, hasta que la inspiración acuda y coloquemos código sustituto.

Típicamente, indentados en la definición, introduciremos los atributos y métodos de que consta la clase Coche.

El nombre Coche lo escribimos con la primera letra en mayúsculas, pues es práctica común entre la POO que los nombres de clases empiecen así.

Introduzcamos algunos atributos:

class Coche:

    marca = ''
    modelo = ''
    color = ''
    numero_de_puertas = 0
    cuenta_kilometros = 0
    velocidad = 0
    arrancado = False

Hemos utilizado, provisionalmente, valores iniciales para los atributos: la cadena vacía para los tipo string, cero para los numéricos y False para el booleano, pero podrían haber sido otros cualesquiera. En el momento en que comencemos a fabricar objetos de esta clase todos estos atributos podrán recibir su valor concreto y particular.

Definamos ahora los métodos de la clase Coche:

class Coche:
    
    marca = ''
    modelo = ''
    color = ''
    numero_de_puertas = 0
    cuenta_kilometros = 0
    velocidad = 0
    arrancado = False

    def arrancar(self):
        pass
  
    def parar(self):
        pass
  
    def acelerar(self):
        pass

    def frenar(self):
        pass

    def pitar(self):
        pass

    def consultar_velocimetro(self):
        pass

    def consultar_cuenta_kilometros(self):
        pass

Observa que los métodos se implementan exactamente igual que las funciones. Como tales, junto a la palabra clave def aparece el nombre del método seguido de unos paréntesis con la declaración de parámetros formales, finalizando con dos puntos e indentando el cuerpo del método a continuación. Al igual que las funciones ordinarias, los métodos podrán o no devolver un valor.

Fíjate en self, un parámetro que debe figurar siempre al comienzo de todo método. Su significado quedará completamente claro en el siguiente artículo, cuando expliquemos el concepto de Objeto. Por el momento, como primera toma de contacto, que te vaya sonando que self hace referencia al objeto concreto sobre el que se está invocando el método.

La elección de self como nombre del parámetro es arbitraria, podría servir cualquier otro término. Aquí nos sumaremos a la denominación favorita entre la comunidad pythonista.

Hemos rellenado el cuerpo de los métodos con la instrucción nula pass, pero seamos algo atrevidos y escribamos algo de código:

class Coche:
    
    marca = ''
    modelo = ''
    color = ''
    numero_de_puertas = 0
    cuenta_kilometros = 0
    velocidad = 0
    arrancado = False

    def arrancar(self):
        if not self.arrancado:
            print('Roarrrr')
            self.arrancado = True
        else:
            # Dale al encendido estando el coche arrancado y escucha...
            print('Kriiiiiiiiiiicccc')
  
    def parar(self):
        self.arrancado = False
  
    def acelerar(self):
        if self.arrancado:
            self.velocidad = self.velocidad + 1

    def frenar(self):
        if self.velocidad > 0:
            self.velocidad = self.velocidad - 1

    def pitar(self):
        print('Bip Bip Bip')

    def consultar_velocimetro(self):
        return self.velocidad

    def consultar_cuenta_kilometros(self):
        return self.cuenta_kilometros

Intenta comprender el código aunque aún no hayamos explicado la notación punto ni el uso de self. No te preocupes, en absoluto, si te surgen dudas, pues todo quedará claro en el siguiente artículo. Lo importante ahora es que te quedes con los conceptos de clase, atributo y método.

La siguiente podría ser una primera aproximación simple al modelado de una persona:

class Persona:
    
    sexo = ''
    nombre = ''
    edad = 0
    coche = Coche()   # El coche que conduce esa persona
  
    def saludar(self):
        print('Hola, me llamo', self.nombre)

    def dormir(self):
        print('Zzzzzzzzzzz')

    def obtener_edad(self):
        return self.edad

Fíjate en que uno de los atributos es precisamente de la clase Coche que acabamos de definir:

coche = Coche() # El coche que conduce esa persona

No confundas el nombre del atributo (coche, en minúsculas), con el nombre de la clase (Coche, con la primera en mayúsculas). Recuerda que para Python son identificadores distintos. Nuevamente, no te preocupes si no comprendes la sentencia, que hace mención a la construcción explícita de un objeto de tipo Coche. El propósito es simplemente ilustrar que entre los atributos de una clase, además de tipos comunes (números, strings, listas, etc…), pueden figurar objetos de cualquier clase, incluso de las creadas por nosotros mismos.

Te propongo como ejercicio que te entretengas modelando las otras clases indicadas al comienzo, u otras de tu elección, para asentar estos conceptos primarios.

Las entidades no tienen por qué ser tangibles, necesariamente. El siguiente código modela nuestras emociones:

class Emocion:
    emocion = ''
  
    def obtener_emocion(self):
        return self.emocion
    
    def cambiar_emocion(self, nueva_emocion):
        self.emocion = nueva_emocion

Observa el método cambiar_emocion(), que además de self define un nuevo parámetro.

En el próximo artículo explicaremos el concepto de Objeto, gracias al cual materializaremos nuestras clases en entidades concretas, coches rugientes, personas de carne y hueso o sentidas emociones. Hasta entonces, bienvenido al apasionante mundo de la programación orientada a objetos.

Javier Montero Gabarró


Python – El concepto de Clase


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.

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