<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Palmera blog</title>
	<atom:link href="http://www.pablogindel.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pablogindel.com</link>
	<description>robots, música, cosas raras con electricidad</description>
	<lastBuildDate>Mon, 24 May 2010 00:00:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lista de canciones con la armonía del Canon de Pachelbel</title>
		<link>http://www.pablogindel.com/2010/04/lista-de-canciones-con-la-armonia-del-canon-de-pachelbel/</link>
		<comments>http://www.pablogindel.com/2010/04/lista-de-canciones-con-la-armonia-del-canon-de-pachelbel/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 07:07:43 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Música]]></category>
		<category><![CDATA[1980]]></category>
		<category><![CDATA[acordes]]></category>
		<category><![CDATA[acusada]]></category>
		<category><![CDATA[alberto triunfo]]></category>
		<category><![CDATA[armonía]]></category>
		<category><![CDATA[basket case]]></category>
		<category><![CDATA[beto triunfo]]></category>
		<category><![CDATA[canon en Re Mayor]]></category>
		<category><![CDATA[canon in D major]]></category>
		<category><![CDATA[cantante]]></category>
		<category><![CDATA[compás]]></category>
		<category><![CDATA[corchea]]></category>
		<category><![CDATA[da silva]]></category>
		<category><![CDATA[demanda]]></category>
		<category><![CDATA[dominante]]></category>
		<category><![CDATA[dominio público]]></category>
		<category><![CDATA[El Sabalero]]></category>
		<category><![CDATA[española]]></category>
		<category><![CDATA[estribillo]]></category>
		<category><![CDATA[federico garcia vigil]]></category>
		<category><![CDATA[fundamental]]></category>
		<category><![CDATA[futbolístico]]></category>
		<category><![CDATA[grados]]></category>
		<category><![CDATA[green day]]></category>
		<category><![CDATA[himno]]></category>
		<category><![CDATA[Jorge Nasser]]></category>
		<category><![CDATA[José Carbajal]]></category>
		<category><![CDATA[judicial]]></category>
		<category><![CDATA[juicio]]></category>
		<category><![CDATA[Julio Frade]]></category>
		<category><![CDATA[litigio]]></category>
		<category><![CDATA[mayor]]></category>
		<category><![CDATA[melodía]]></category>
		<category><![CDATA[menor]]></category>
		<category><![CDATA[mundialito]]></category>
		<category><![CDATA[navidad]]></category>
		<category><![CDATA[negra]]></category>
		<category><![CDATA[nota]]></category>
		<category><![CDATA[pachelbel]]></category>
		<category><![CDATA[pachelbel's canon]]></category>
		<category><![CDATA[plagio]]></category>
		<category><![CDATA[punk]]></category>
		<category><![CDATA[roberto da silva]]></category>
		<category><![CDATA[rock]]></category>
		<category><![CDATA[rosana]]></category>
		<category><![CDATA[rosana arbelo]]></category>
		<category><![CDATA[séptima]]></category>
		<category><![CDATA[soñaré]]></category>
		<category><![CDATA[subdominante]]></category>
		<category><![CDATA[tónica]]></category>
		<category><![CDATA[triunfo]]></category>
		<category><![CDATA[uruguay]]></category>
		<category><![CDATA[uruguay te queremos ver campeón]]></category>
		<category><![CDATA[villancico]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=683</guid>
		<description><![CDATA[I) Introducción.
Entre las tantas obsesiones que me persiguen desde temprana edad, figura la de buscar y encontrar permanentemente similitudes de todo tipo entre canciones y músicas en general, poniendo especial énfasis en lo que tiene que ver con la armonía, cosa que a su vez me ha inclinado a practicar una clasificación de la música [...]]]></description>
			<content:encoded><![CDATA[<h4 style="TEXT-ALIGN: justify">I) Introducción.</h4>
<p style="TEXT-ALIGN: justify">Entre las tantas obsesiones que me persiguen desde temprana edad, figura la de buscar y encontrar permanentemente similitudes de todo tipo entre canciones y músicas en general, poniendo especial énfasis en lo que tiene que ver con la armonía, cosa que a su vez me ha inclinado a practicar una clasificación de la música un tanto distinta de la habitual. <span id="more-683"></span>Es así como solía ver supuestos plagios aquí y allá, y, hasta no hace mucho, tendía a rechazar cualquier música que no tuviera una secuencia armónica 100% “original” (cosa que era, sin dudas, un gran error; en la actualidad, en cambio, soy de los que cuestionan la exagerada importancia que se le da, en el análisis musical occidental tradicional, al tema de las alturas; para ser exactos, pienso que este tipo de análisis es aplicable, en mayor o menor medida, a buena parte de la música, pero definitivamente, no a <em>toda</em> la música, y además, cuando lo es, no es el único tipo de análisis aplicable, ni el más significativo en todos los casos).</p>
<p style="TEXT-ALIGN: justify">Tenía una larga lista de temas harto parecidos armónicamente, algunos de los cuales eran plagios reconocidos, y otros no. Por ejemplo, me acuerdo de casos como el de las canciones “We used to know” y “Hotel California”, de Jethro Tull y Eagles, respectivamente, así como el de “All day and all of the night” y “Hello, I love you” de Kinks / Doors, (y el auto-plagio “Destroyer”, de los mismos Kinks, talvez para reafirmar la propiedad intelectual de ese notable <em>riff</em> [en este caso se trataba de un riff, no de una secuencia de acordes]). Y hablando de los Kinks, no olvidemos el gran parecido de su canción “Lost and found” con la de los Smiths “The boy with the thorn in his side”, ambas de 1986. Uno de los blancos favoritos de mis críticas era Fito Páez, a quien solía adjudicar numerosos plagios; por ejemplo su “A rodar mi vida” calcada de “Honky tonk women” o “Soy un hippie” peligrosamente similar a “Have a talk with God” de Stevie Wonder (en realidad, toda la obra de Fito me sigue resultando demasiado parecida a <em>todo</em>). Otro gran ejemplo: la canción española “Resistiré” de Carlos Toro y Manolo de la Calva, no sólo tiene la misma armonía que “I will survive”, sino que tranquilamente puede hablarse aquí de un auténtico “plagio conceptual” (de hecho, cuando la escuché por primera vez, pensé que se trataba de una versión en español de aquel tema; por otro lado, sospecho que podríamos hacer otra lista igual de larga con canciones que usen una armonía similar a “I will survive”, cuyo original talvez sea la francesa “Les feullies mortes”). Y así sucesivamente. (Cabe destacar que, en el repertorio de rock clásico de 60-70&#8217;s, que es el terreno en el que yo me movía, tenía cierto sentido hablar de este tipo de <em>plagios</em>, pero resultaría absurdo hacerlo en el contexto de la música <em>pop</em> actual, en gran parte de la cual parece haber una manifiesta intención de que las canciones se parezcan, hay un uso generalizado del <em>reciclaje</em> y las estructuras armónicas se repiten hasta el hartazgo).</p>
<p style="TEXT-ALIGN: justify">Por supuesto, mi deleite era mayor cuando descubría semejanzas entre alguna música pretendidamente profunda, <em>cool</em> o de vanguardia, y otra lo más antagónica posible. Por ejemplo, la que existe entre las canciones “Hallowed be thy name” de Iron Maiden y “Ocho letras” de Larbanois-Carrero, como puede verse en YouTube bajo el título de “Peter Capusotto y Pomelo presentan El Gran Reencuentro del Rock Uruguayo &#8211; Iron Carrero” (nótese que este ejemplo es perfectamente simétrico). Y hablando de Capusotto, éste utiliza como presentación de su programa, una versión <em>murga</em> de “Sympathy for the devil”, lo que viene a constituir un excelente ejemplo de ese tipo de “desmitificación” que a mí me divertía practicar (citas obligadas: el “Concerto Grosso alla Rustica” de Les Luthiers, una de las obras más sublimes que se han escrito, en este sentido, y “No necesitamos otro héroe, Valderrama” de Leo Maslíah).</p>
<p style="TEXT-ALIGN: justify">Otro caso de músicas antagónicas y similares fue el que encontré a mediados de los 90, cuando empezó a sonar el tema “Basket case” de Green Day. Inmediatamente lo asocié con la tristemente célebre canción “Uruguay, te queremos ver campeón”, himno futbolístico de nuestra selección desde el Mundialito de 1980, compuesta por los jingleros Beto Triunfo y Roberto da Silva. Lo más interesante es que no cabían dudas respecto a la cronología de los hechos, una de las canciones era 15 años anterior a la otra. De más está decir que yo no perdía oportunidad de utilizar esta coincidencia para burlarme de Green Day y de su postura pretendidamente punk/rockera: en mi concepción, ninguna cosa podía ser suficientemente agresiva, radical, violenta, rebelde, rockera, pesada, profunda, o lo que sea, si tenía la misma armonía de “Uruguay, te queremos ver campeón”&#8230; pero, como verán, estaba parcialmente equivocado.</p>
<p style="TEXT-ALIGN: justify">No mucho tiempo más tarde, un amigo me prestó un <em>cassette</em> de música barroca, que quería recuperar a formato digital porque afirmaba que las versiones en él contenidas eran únicas. ¿Y qué me encuentro al escucharlo? Una hermosa versión de “Uruguay, te queremos ver campeón”, interpretada con instrumentos barrocos. Nunca me preocupé en recordar el nombre del autor, ni el de la obra en cuestión, pero hoy todos sabemos que se trataba del “Canon y Giga en Re mayor para tres violines y bajo continuo” de Johann Christoph Pachelbel, circa 1680.</p>
<p style="TEXT-ALIGN: justify">Pasaron los años, todo siguió su curso normalmente, aparecían algunos “plagios” de vez en cuando, unos más divertidos que otros, nada por lo que perder el sueño, pero me enteré un día de que los autores de “Uruguay, te queremos ver campeón” habían demandado a la cantante española Rosana Arbelo, reclamándole nada menos que un millón de dólares, por el supuesto plagio de su canción “Soñaré” al mencionado himno. Escuché la canción de Rosana, y efectivamente, se parecía… tanto a “Uruguay, te queremos ver campeón”, como al propio Cannon de Pachelbel, y, en mayor o menor medida, a muchas otras canciones que yo ya había venido reconociendo como poseedoras de esa misma secuencia armónica, entre ellas, por supuesto, “Basket Case”. (Claro que la canción de Rosana tiene además cierto parecido melódico con nuestro himno, pero si escuchan los temas de la lista de abajo, notarán que no es la única canción que lo posee, de hecho, hay varios temas anteriores a 1980 que también coinciden melódicamente, lo cual no es de extrañar, dado que hubiera sido difícil que se hicieran 70 músicas sobre la misma armonía sin que se repitiera nada).</p>
<p style="TEXT-ALIGN: justify">No dudé en juzgar el reclamo de Triunfo y Da Silva como una gran “avivada” de estos compatriotas; sin embargo, este hecho aun no me quitaba el sueño. Lo que realmente me motivó a investigar y finalmente publicar este artículo, fue que me extrañó que los asesores y/o abogados de Rosana, si bien acertaron a argüir que ambas canciones se parecían a una tercera, aparentemente no advirtieron que lo que había detrás de ellas, así como de cientos de otras obras, no era otra cosa que el archi-plagiado y versionado una y mil veces, Canon de Pachelbel. Lo que esta gente encontró, en cambio, fue el villancico “The first noel”, que según ellos dataría del siglo XIII, y que, efectivamente, tiene una similitud más melódica que armónica (lo cual tendría sentido en caso de ser verdadera la historia). Por cierto, lo que <span style="text-decoration: underline;">no</span> se les escapó, es el parecido con la canción de Green Day, hecho que me sigue provocando cierta jocosidad.</p>
<h4 style="TEXT-ALIGN: justify"> </h4>
<h4 style="TEXT-ALIGN: justify">II) Investigación.</h4>
<p style="TEXT-ALIGN: justify">Lo primero que encontré sobre el Canon de Pachelbel, al iniciar mi investigación en internet, fue este divertido video, a cargo de un tal Rob Paravonian:</p>
<p style="TEXT-ALIGN: justify"><a href="http://www.youtube.com/watch?v=ybe4P9fbeqA" target="_blank">http://www.youtube.com/watch?v=ybe4P9fbeqA</a></p>
<p style="TEXT-ALIGN: justify">En él se da cuenta de algo que yo ya sospechaba: que la cantidad de canciones basadas en la secuencia armónica del Canon (y, por ende, de “Uruguay, te queremos ver campeón”) podía llegar a ser realmente grande, e incluir unos cuantos <em>hits</em> comerciales.</p>
<p style="TEXT-ALIGN: justify">Posteriormente un amigo, Tomás Laurenzo (quien es además, colaborador en numerosos proyectos y corrector de este artículo) me pasó un par de direcciones de sitios de internet abocados a la enumeración de músicas con esta misma propiedad. Ellos son:</p>
<p style="TEXT-ALIGN: justify"><a href="http://www.pachelbelcanon.com/" target="_blank">http://www.pachelbelcanon.com/</a></p>
<p style="TEXT-ALIGN: justify"><a href="http://www.listology.com/lukeprog/list/songs-based-pachelbels-canon" target="_blank">http://www.listology.com/lukeprog/list/songs-based-pachelbels-canon</a></p>
<p style="TEXT-ALIGN: justify">Estas listas están bastante bien, la segunda de ellas mejor que la primera, y tienen algunos títulos en común entre sí y con el video de Paravonian. No obstante, en ninguna de ellas figuran “Uruguay te queremos ver campeón” ni la polémica “Soñaré”; en realidad, hay una gran carencia de canciones <em>hispanas</em>, y hay también, tanto en el video como en ambas listas, sobre todo en la primera, canciones que, a mi entender, no deberían estar, como por ejemplo “Let it be” (no porque sea fanático de los Beatles; en realidad encontré una canción de The Beatles mucho más apropiada y que no figura en las listas). La explicación de por qué dejo afuera a “Let it be”, &#8220;With or without you&#8221;, &#8220;No woman no cry&#8221; y otros conocidos temas, se encuentra al final del artículo.</p>
<p style="TEXT-ALIGN: justify">Mi verdadera intención es que la gente que no tiene conocimientos de teoría musical, pueda entender lo que tienen en común dos cosas en apariencia tan radicalmente distintas como Green Day y Rosana. El análisis armónico es un artificio triplemente abstracto, y es algo que me ha fascinado prácticamente desde mis primeros contactos con la música. Utilizo aquí la palabra “abstracto” con el mismo sentido que se le da en informática, y también en su significado más general. ¿Por qué digo que es <em>triplemente</em> abstracto? Veamos:</p>
<ol style="TEXT-ALIGN: justify">
<li>La armonía hace referencia a las alturas, las notas de una canción, pero no a las notas concretas, sino a las relaciones entre ellas. No importa si una canción está en Re y otra está en Si bemol, ambas pueden tener la misma armonía. He aquí la primera abstracción.</li>
<li>El análisis armónico es abstracto con respecto al tiempo. Se trata de asociar <em>acordes</em> (o mejor dicho, <em>grados</em>, o incluso más abstractamente hablando, <em>funciones tonales</em>) con <em>compases</em> o unidades métricas arbitrarias. Una canción puede estar a tempo 190 y otra a tempo 60, una puede ser en 6/8 y la otra en 7/4 y sin embargo tener la misma armonía. Una puede ser un canon barroco y lento, la otra un punk-rock furioso, y ambas compartir la misma armonía.</li>
<li>Y lo más abstracto y artificial de todo: si bien el análisis armónico presupone la presencia de <em>grados</em>, es decir “acordes abstractos”, acordes <em>relativos</em>, sin referencia a notas concretas, distribuidos en una cuadrícula de compases o unidades métricas, no es necesario que en la música misma ningún instrumento <em>toque</em> realmente los acordes. Se trata de una especie de “ambiente de simultaneidad sonora” bastante discutible, que puede extraerse incluso de una simple melodía, no habiendo simultaneidad sonora alguna en los hechos. En una composición barroca, por ejemplo, los acordes se forman por la superposición accidental de las distintas líneas melódicas, mientras que en “Basket case” hay una guitarra tocando explícitamente grupos de notas simultáneas, las mismas notas que, siglos antes, algún teórico musical señaló como las más importantes o las definidoras de un <em>grado</em> o función armónica, y entre ellas, una especialmente importante y que siempre debe estar en su lugar: la nota más grave, el bajo, la <em>fundamental</em> de cada acorde (es quizás por eso que quienes tocamos el bajo tenemos una natural inclinación hacia la armonía, y viceversa).</li>
</ol>
<p style="TEXT-ALIGN: justify">Procederé entonces a exponer mi propia lista de canciones y músicas basadas en la armonía del Canon de Pachelbel, tratando de aportar algún dato más sobre cada una, y analizando hasta qué punto respetan o no la armonía y estructura originales. Sólo me resta decir que, tras haber escuchado y analizado cada una de estas 70 obras, y sabiendo que deben existir muchísimas más, puedo afirmar sin temor a equivocarme que, de las secuencias armónicas “no triviales” que pueden hallarse en la llamada música <em>culta</em>, esta es, por lejos, la más reutilizada en música popular.</p>
<h4> </h4>
<h4>III) La lista.</h4>
<p style="TEXT-ALIGN: justify">Aquí va la lista, espero que la disfruten (sugerencia: busquen las referencias en YouTube, están todas ahí).</p>
<p style="text-align: left;"><strong>1) Pachelbel &#8211; Canon y Giga en Re Mayor para tres violines y bajo continuo (Alemania, 1680)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">El original. Su armonía podría escribirse así: I – V – VI – III – IV – I – IV – V de una tonalidad mayor. Para quienes no están familiarizados con esta notación, es fácil: los números romanos hacen referencia a los <em>grados</em>, y los guiones marcan las divisiones entre <em>compases</em> o unidades métricas arbitrarias. En el caso concreto del Canon, se trata de los acordes Re, La, Si menor, Fa# menor, Sol, Re, Sol, La (todos acordes mayores, excepto cuando está señalado; en la notación en grados no se especifica si los acordes son mayores o menores, porque se sobreentiende que, salvo expresa indicación, los grados I, IV y V son mayores y los II, III y VI son menores [el VII dejémoslo para otra ocasión]) distribuidos en 2 compases, es decir, cada acorde tiene una <em>negra </em>de duración, pero en la mayoría de los ejemplos de esta lista, cada acorde ocupa medio o un compás entero.</p>
<p style="text-align: left;"><strong>2)</strong> <strong>Beto Triunfo &amp; Roberto Da Silva &#8211; Uruguay, te queremos ver campeón (Uruguay, 1980)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">La variante de Triunfo y Da Silva (en adelante “T&amp;DS”) es la siguiente: I – V – VI – III – IV – I – II7 – V, es decir, conserva la misma estructura, prácticamente la misma secuencia armónica, sólo que sustituyendo el ultimo IV por un II7, o sea -como me enseñó el maestro Klísich- un <em>dominante secundario</em> para ir al V. (II7 significa que se reemplazó el acorde de segundo grado, que normalmente sería menor, por un acorde de tipo <em>dominante</em>, es decir un quinto grado “prestado” de la tonalidad del V; puede resultar complicado, pero lo importante es que se trata de una sustitución muy clásica, igual que las que veremos en los siguientes temas, es decir, que seguimos estando siempre dentro de la estructura básica del Canon).</p>
<p style="TEXT-ALIGN: justify"><strong>3)</strong> <strong>Rosana &#8211; Soñaré (España, 2005)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">El pasaje en cuestión aparece recién en el estribillo, como pasa en varias canciones de esta lista, y, a diferencia del himno mundialitero, la armonía utilizada aquí es perfectamente fiel al original.</p>
<p style="TEXT-ALIGN: justify"><strong>4) Vox Dei &#8211; Presente (Argentina, 1972)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esta canción es mucho más conocida por su versión de 1995, en la película Tango Feroz. Atención porque la melodía es bastante parecida a la de T&amp;DS. Desde el punto de vista armónico, apenas una sutil diferencia con el original: I – V – VI – III – IV – III – IV – V. Como vemos, sustituye un I por un III (y en ocasiones, por un I con bajo en la 3ª.), es decir, prácticamente idéntica al Canon.</p>
<p style="TEXT-ALIGN: justify"><strong>5) Green Day &#8211; Basket case (USA, 1995)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esta es la canción más universalmente citada como deudora del Canon, ya que aparece en las dos listas, en el video, en mi memoria y en boca de los abogados de Rosana; sin embargo, no es de las más fieles a él. Observemos su secuencia: I – V – VI – III – IV – I – V. Hay una diferencia importante porque es estructural: directamente, se saltea un acorde, aunque la “función armónica” podríamos decir que se conserva, ya que termina en V igual que el original.</p>
<p style="TEXT-ALIGN: justify"><strong>6) Aerosmith &#8211; Cryin&#8217; (USA, 1993)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra de las que aparecen en ambas listas y en el video. Observen qué curioso, es exactamente igual a la de Green Day, se saltea el último IV y cae directamente en V. Cuando repite, introduce una nueva variante, también presente en otras canciones que veremos, la mayorización del III, lo cual es otra forma de <em>acorde de pasaje</em> para ir al IV.</p>
<p style="TEXT-ALIGN: justify"><strong>7) Enanitos Verdes &#8211; Amigos (Argentina, 1992)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Muy interesante versión, ya que conjuga unas cuantas variantes de las que veremos en otros temas. Estructuralmente pertenece al grupo de Green Day y Aerosmith, o sea, de las que se saltean el penúltimo acorde, pero además introduce los siguientes cambios: I – V/3ª – VI – III – IV – IV#dim – V. El primero es el V con bajo en la 3ª, lo que hace el clásico efecto de “bajadita” en el bajo, pero el más interesante es el pasaje cromático para ir al V final, sustituyendo al I. Qué fineza, ¿eh?</p>
<p style="TEXT-ALIGN: justify"><strong> <img src='http://www.pablogindel.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> The Beatles &#8211; I want to hold your hand (UK, 1963)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">La única contribución de los Beatles a la lista es esta canción, que, como veremos, es por lejos la más distinta al original, entre todas las restantes. Analicemos: I – V – VI – III;  I – V – VI – III7. En definitiva, sólo coinciden los 4 primeros acordes, pero la estructura es completamente diferente.</p>
<p style="TEXT-ALIGN: justify"><strong>9) Silvio Rodríguez &#8211; Resumen de noticias (Cuba, 1975)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">I – V – VI – V – IV – III – II – V. Con esta canción volvemos a las estructuralmente idénticas al original, aunque introduce sus propias variantes. Yo la calificaría como una mezcla entre la de Vox Dei y la de T&amp;DS, aunque más suave que esta última, ya que el II es natural.</p>
<p style="TEXT-ALIGN: justify"><strong>10) Original Caste &#8211; One tin soldier (Canada, 1969)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esta canción, perteneciente a Dennis Lambert &amp; Brian Potter (mucho gusto), aparece en ambas listas y en el video, a veces en su versión de 1971 a cargo del grupo Coven. Tiene la bajadita, tiene al V sustituyendo al III como en la de Silvio, y tiene el II sustituyendo al IV como en la de Silvio también; cuando repite se come un acorde, igual que en las del grupo Aerosmith/Green Day. No hay nada nuevo bajo el Sol.</p>
<p style="TEXT-ALIGN: justify"><strong>11) Vitamin C &#8211; Graduation (Friends forever) (USA, 1998)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra de las que aparecen en el video, y también, creo, en ambas listas. Bueno, esta canción pertenece al grupo de lo que yo llamaría “versiones”, es decir, creo que ni llega a la categoría de composición. Sencillamente, como en otros casos que veremos, es un pastiche, es decir una música con cuerdas equivalente al propio Canon (en versiones más recientes, incluso, ni se molestan en hacer tal pastiche y le ponen directamente el original), una máquina de ritmos y una mina hablando arriba, con un estribillo que deja mucho que desear.</p>
<p style="TEXT-ALIGN: justify"><strong>12) Blues Traveler &#8211; Hook (USA, 1994)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra del video y alguna lista. Fiel al original, excepto por la mayorización del III, alla Aerosmith.</p>
<p style="TEXT-ALIGN: justify"><strong>13) Coolio &#8211; I&#8217;ll c u when u get there (USA, 1997)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra versión, como la de Vitamin C, pero mejor, no sólo por la rapeada inobjetable de Artis Leon Ivey Jr., sino por el estribillo un poco más canchero.</p>
<p style="TEXT-ALIGN: justify"><strong>14) The Future Sound of London &#8211; Domain (UK, 1994)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esto lo puse porque aparece por ahí en las listas, pero es claramente una versión, no tiene misterio.</p>
<p style="TEXT-ALIGN: justify"><strong>15) Spiritualized &#8211; Ladies and gentlemen, we are floating in space (</strong><strong>UK</strong><strong>, 1997)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">El tema está en el estribillo, y la verdad, ni tengo ganas de analizar qué tipo de variante es, pero es el Canon, no cabe duda. Green Day es Béla Bartók al lado de esto. ¿Qué digo? T&amp;DS son Béla Bartók.</p>
<p style="TEXT-ALIGN: justify"><strong>16) Village People &#8211; Go west (USA, 1979) </strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Excelente versión <em>disco</em> de la obra que nos ocupa, re-versionada en 1992 por los Pet Shop Boys. Fusionaron el Canon de Pachelbel con “YMCA”. ¿Qué más se puede pedir? Como dijo Vinicius de Moraes: si Pachelbel se levantara de su tumba, estaría orgulloso.</p>
<p style="TEXT-ALIGN: justify"><strong>17) Joe Jackson &#8211; Hometown (UK, 1986)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Versión picadita, completamente fiel.</p>
<p style="TEXT-ALIGN: justify"><strong>18) Los Pop Tops - Oh Lord, why Lord (España, 1968)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Este grupo, del que se dice que fue el primero en fusionar música barroca con <em>pop, </em>nos muestra aquí una de las tantas canciones en las que los acordes del Canon son utilizados para crear una atmósfera <em>religiosa</em>, ya que se prestan perfectamente para ello. Existe otra versión posterior (1970) a cargo de los maestros del funk Parliament.</p>
<p style="TEXT-ALIGN: justify"><strong>19) Aphrodite&#8217;s Child &#8211; Rain and tears (Francia, 1968)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">El grupo de Vangelis, ni más ni menos. Atención porque esta canción contiene un pasaje peligrosamente igual a la melodía de T&amp;DS. Yo si fuera Vangelis les metía una demanda, les metía. Sabelo, cabeza.</p>
<p style="TEXT-ALIGN: justify"><strong>20) Roger Whittaker &#8211; Streets of London (UK, 1971)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Baladita bastante aburrida, similar a las primeras que vimos. Algún dominantecito por ahí, más de lo mismo.</p>
<p style="TEXT-ALIGN: justify"><strong>21) 2pac &#8211; Life goes on (USA, 1996)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otro rap. No parece ser una versión directa del Canon, sino de otra música idéntica a éste, que podría estar o no en esta lista.</p>
<p style="TEXT-ALIGN: justify"><strong>22) Catch 22 &#8211; On &amp; On &amp; On (USA, 1998)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Una versión ska, ¿qué me contursi?</p>
<p style="TEXT-ALIGN: justify"><strong>23) Ricardo Arjona &#8211; Señora de las cuatro décadas (Guatemala, 1994)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">I – V/3a. – VI – III – IV – I – III7 – IV – II7 – II7 – V. Por fin algo digno de analizar. Se parece más que “I want to hold your hand”, de manera que su presencia en la lista está plenamente justificada.</p>
<p style="TEXT-ALIGN: justify"><strong>24) Dragonforce &#8211; Valley of the damned (UK, 2003)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Ohio, el “asunto” está en el estribo; para decirlo en términos de YouTube, minuto 1:43. Fiel al original. Siempre respeto a las bandas de metal, aunque tengan cero creatividad.</p>
<p style="TEXT-ALIGN: justify"><strong>25) Belle &amp; Sebastian &#8211; Get me away from here, I&#8217;m dying (UK, 1996)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Textual la primera vuelta, cuando repite introduce una variante para enganchar con la parte B. Igual te digo que ya me estoy cansando de estos grupetes, es hora de dejar de currar, muchachos.</p>
<p style="TEXT-ALIGN: justify"><strong>26) The Polyphonic Spree &#8211; Light &amp; Day / Reach for the Sun / Section 9 (USA, 2002)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Ya estoy harto, y quedan como cuarenta temas más.</p>
<p style="TEXT-ALIGN: justify"><strong>27) Focus &#8211; Sylvia (Holanda, 1972)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Vamos con una banda buena, para matizar un cacho. La bajadita de la primer vuelta de Sylvia se parece mucho a la de Silvio Rodríguez, con el II7 igual que la de T&amp;DS, así que se ganó su lugar en la lista. Por cierto, el resto del tema no tiene nada que ver.</p>
<p style="TEXT-ALIGN: justify"><strong>28) The Boom &#8211; Shima uta (Japón, 1992)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Bueno, esto sí que es una sorpresa. Esta canción, conocida en nuestro pais y en Argentina, gracias a la excelente versión de Alfredo Casero (que, de todas maneras, no es muy distinta a la original), presenta en su estribillo una armonía que, para que no queden dudas, me dispongo a analizar: I – V – VI – III – IV – V – I – V. Claramente, está mucho más cerca del Canon, que de cualquier otra cosa.</p>
<p style="TEXT-ALIGN: justify"><strong>29) The Farm &#8211; All together now (UK, 1990)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esto es el Canon mismo, con un estribillo que consiste en la misma frase del título (afanada a su vez a los Beatles) repetida tres veces, con la misma métrica y un par de notas de diferencia, a lo sumo, más las 3 palabras finales. Vale decir que “Uruguay, te queremos ver campeón” parece <em>Il cimento dell&#8217;armonia e dell&#8217;invenzione</em>, al lado de esto. De hecho, por la temática futbolera que rodea a este tema, yo en el lugar de T&amp;DS hubiera demandado a estos ladrones y no a la pobre Rosana. Llama la atención, por otro lado, cómo todas estas canciones basadas en el Canon de Pachelbel suelen ser los principales <em>hits</em> de todas estas bandas. Este hecho realmente llama a la reflexión… por lo pronto, ya lo saben, si quieren triunfar, inténtenlo ustedes mismos.</p>
<p style="TEXT-ALIGN: justify"><strong>30) Menelik &#8211; Je me souviens (Francia, 1997)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra versión rap, pero en franchute.</p>
<p style="TEXT-ALIGN: justify"><strong>31) Brian Eno &#8211; Three variations on the Canon in D Major (UK, 1975)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Ni Brian Eno se abstuvo de hacer su propia versión, pero por lo menos lo dejó bien claro en el título, presumo que debido a que es el único que sabe realmente lo que está versionando.</p>
<p style="TEXT-ALIGN: justify"><strong>32) Libera &#8211; Sanctus (UK, 2006)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esto es una especie de grupo coral infantil, que hace una música papal. No podía faltar, entonces, alguna cosa con los acordes del maestro Johann en su repertorio.</p>
<p style="TEXT-ALIGN: justify"><strong>33) Alain Barriere &#8211; Tout s&#8217;en va déjà (Francia, 1968)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">La <em>chanson française</em> rinde culto al Canón de Pachelbél. En el propio comentario de YouTube de esto, decía: &#8220;même ligne harmonique que <em>La maladie d&#8217;amour</em> de Michel Sardou&#8221;, y en efecto, si la buscan encontrarán otra interesantísima versión del Canon, con unos coros que parecen cantar &#8220;Uruguay, te queremos&#8230;&#8221;, y una bajadita del del IV al I igualita a la de &#8220;Let it be&#8221;.</p>
<p style="TEXT-ALIGN: justify"><strong>34)</strong> <strong>Sweetbox &#8211; Life is cool (USA, 2004)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Hay una cosa que es clara: cuanto más nos aproximamos al presente, menos se preocupan los productores por disimular las “fuentes de inspiración” de sus productos. Es lo que decía más arriba con respecto al concepto de plagio, que perdió vigencia con las nuevas reglas de la creación moderna. La melodía, por su parte, me hace acordar a mil cosas, entre ellas “Hard to say I’m sorry” de Chicago y “La isla Bonita” de Madonna, obviamente con otras notas, pero no me hagan caso, ya les advertí que me voy fácilmente al carajo con las analogías.</p>
<p style="TEXT-ALIGN: justify"><strong>35) 2 Brothers on the 4th Floor &#8211; There is a key (Holanda, 1996)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Y seguimos currando, que hay para rato todavía. (Melodía igual a la del ejemplo 19).</p>
<p style="TEXT-ALIGN: justify"><strong>36) First Class &#8211; Beach baby (UK, 1974)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Como dije más arriba, estas canciones de los 70’s no dejan de ser una mierda, pero su parentezco con el Canon es meramente formal; en cambio, muchos de los ejemplos más recientes pertenecen a la categoría de “versiones”, es decir, copiaron no sólo la armonía textualmente, sino la “onda” misma de la obra, no aportando absolutamente nada nuevo al escucha.</p>
<p style="TEXT-ALIGN: justify"><strong>37) Happa-tai &#8211; Yatta (Japón, 2001)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Juas! Talvez esté basada en “Go west” (ejemplo 16), o directamente en “YMCA”.</p>
<p style="TEXT-ALIGN: justify"><strong>38) Relient K – Operation (USA, 2001)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Le metieron dos variantes a la fórmula original: 1) igual que Aerosmith, el III mayor; 2) el V del final está sustituido por VIbM – VIIbM – I, subidita clásica si las hay, pero única entre los temas de esta lista. La melodía es virtualmente idéntica a la de “One tin Soldier” (ejemplo 10). La verdá que no sé a dónde vamo’a parar si seguimo’así.</p>
<p style="TEXT-ALIGN: justify"><strong>39) Delerium – Paris (Canadá, 2004)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Muy lindo, pero sacámela 1/3.</p>
<p style="TEXT-ALIGN: justify"><strong>40) Lutricia McNeal – Rise (USA, 2004)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Me cae simpática esta mina, pero basta loco, ¿en serio no hay mejores ideas en la vuelta?</p>
<p style="TEXT-ALIGN: justify"><strong>41) Arianne &#8211; Komm, susser tod (Japón, 1997)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Esto aparentemente es la música de una película de animación japonesa. Sea como sea, no se gastaron mucho.</p>
<p style="TEXT-ALIGN: justify"><strong>42) Oscar Benton Blues Band &#8211; I believe in love (Holanda, 1972)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Extraña mezcla de estilos, pero con el sello inconfundible de Juan Carlos Pachelbel.</p>
<p style="TEXT-ALIGN: justify"><strong>43) Byul &#8211; Like a star (Korea, 2005)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">¿Es mi impresión, o los asiáticos le están dando una <em>waska</em> tremenda al Canon?</p>
<p style="TEXT-ALIGN: justify"><strong>44) </strong><strong>Emiri Miyamoto – Break (Japón, 2009)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">¿No te digo? Esta es la nueva violinista-popstar, al estilo Vanessa Mae, y obviamente no puede faltar en su repertorio de clásicos reciclados, algo que rinda tributo a nuestro amigo JCP.</p>
<p style="TEXT-ALIGN: justify"><strong>45) Reik &#8211; Noviembre sin tí (Mexico, 2005)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Vamo’a matizar ahora con algo “latino”. Esta canción pertenece a la clase Green Day/Aerosmith; de hecho, se le puede cantar “Basket Case” arriba, y queda fenómeno.</p>
<p style="TEXT-ALIGN: justify"><strong>46) Alejandro Sanz &#8211; Toca para mí (España, 1991)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Y tengo varios latinazos más. Escuchen este. Empieza con una intro muy correcta, después en el verso ya arranca con una secuencia sospechosamente similar al Canon, pero se va para otro lado, parece que va a safar, y de repente… llega el estribo, y se terminan las dudas, Canon de Pachelbel a cara de perro.</p>
<p style="TEXT-ALIGN: justify"><strong>47) twenty4-7 &#8211; Get a life again (Japón, 2009)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra versión rap, esta vez en ponja.</p>
<p style="TEXT-ALIGN: justify"><strong>48) Eternity &#8211; Wonderful world / Love / You smile (USA, 2009)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">¡Esto es lo que yo llamo CURRAR! Al parecer, este proyecto fue emprendido por gente que se fue de Sweetbox (ejemplo 34), que venían de meter aquel <em>hit</em> “Everything&#8217;s gonna be alright” basado en el “Aria para la cuerda de Sol” de J. S. Bach, y dijeron: “ma’si, vamo’hacer lo mismo pero con el Canon de Pachelbel, y nos rinde pa’ 3 temas, lo menos”. Y así fue. El resto del disco ensaya la misma fórmula con diversos autores, en un estilo que ellos mismos definen como “pop meets classic”.</p>
<p style="TEXT-ALIGN: justify"><strong>49) My Chemical Romance &#8211; Welcome to the Black Parade (USA, 2006)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Incuestionable tufo a Pachelbel.</p>
<p style="TEXT-ALIGN: justify"><strong>50) MDO &#8211; Sin tí (Puerto Rico, 2000)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Grupo lanzado por el productor de “Menudo”, ¿se acuerdan? Este tema tiene la misma bajada de Silvio Rodríguez, Focus y otros, que en sí, son técnicamente equivalentes al Canon, en el sentido de que se podría cantar arriba de esta armonía cualquiera de las canciones de la lista, pero no son copias al nivel de las que yo llamo “versiones”.</p>
<p style="TEXT-ALIGN: justify"><strong>51) Fahrenheit &#8211; Xin li you shu (Taiwan, 2007)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Y acá tenés a los Menudo Chinaski. A diferencia del caso anterior, esto sí es una “versión”.</p>
<p style="TEXT-ALIGN: justify"><strong>52) </strong><strong>Valensia &#8211; Bruxelles (Holanda, 2000)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra mezcolanza de cosas raras, en la que no faltan los pasajes inspirados en el Canon.</p>
<p style="TEXT-ALIGN: justify"><strong>53) Son by Four &#8211; A puro dolor (Puerto Rico, 2000)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Lo mismo que el ejemplo 50 y varios de la categoría <em>latin pop</em>, que, de todas maneras, son todos muy parecidos entre sí.</p>
<p style="TEXT-ALIGN: justify"><strong>54) Die Firma &#8211; Die eine (Alemania, 1996)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Otra agrupación hip-hopera, esta vez germana. Tienen otra versión del 2005, más fiel al original aun, si es esto realmente posible.</p>
<p style="TEXT-ALIGN: justify"><strong>55) DJ Angel &#8211; Flowrish</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Imposible saber quién hizo esto, ni cuándo, ni dónde, ni por qué (sobre todo: por qué), como pasa con cualquier producto en cuyo título aparezcan las palabras “DJ” o “remix”, pero sirva como ejemplo de las infinitas versiones más que se pueden encontrar poniendo en el search de YouTube las palabras “canon pachelbel remix”.</p>
<p style="TEXT-ALIGN: justify"><strong>56) Terry WU &#8211; Two different worlds</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Lo mismo puede decirse de esta otra pieza. Saquen sus propias conclusiones.</p>
<p style="TEXT-ALIGN: justify"><strong>57) Luca Zeta &#8211; Over the clouds (Italia, 2008)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Una de las obras más reconocidas de este DJ italiano.</p>
<p style="TEXT-ALIGN: justify"><strong>58) Karnak &#8211; Juvenar (Brasil, 2000)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Para resumirlo, esta armonía es igual a la de “Shima uta” (ejemplo 28) pero con el III mayor, como ya hemos visto en varias canciones.</p>
<p style="TEXT-ALIGN: justify"><strong>59) Leftöver Crack &#8211; Crack city rockers (USA, 2001)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Una mezcla de ska, punk, metal y reggae. Tocan también la secuencia de “Shima uta”, pero con todos los acordes mayores, porque el punk es así.</p>
<p style="TEXT-ALIGN: justify"><strong>60) </strong><strong>Bond – Lullaby (UK, 2004)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Más <em>pop meets classics,</em> de la mano de este cuarteto de cuerdas británico/australiano, formado por 4 hermosas chicas a las que no he logrado ver tocando <em>de verdad</em> en ningún video.</p>
<p style="TEXT-ALIGN: justify"><strong>61) Jon Secada – Angel (Cuba/USA, 1992)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">La misma bajadita de los ejemplos 9, 27, 50, 53 y alguno más, a un tempo muy lento.</p>
<p style="TEXT-ALIGN: justify"><strong>62) Alex Ubago – A gritos de esperanza (España, 2001) </strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">En el estribillo, la secuencia es esta: I – V – VI – III – IV – V – I / (VII) – VI. O sea, del grupo de las que se parecen a “Shima uta”, aunque con un final distinto y además, no repite.</p>
<p style="TEXT-ALIGN: justify"><strong>63) All Angels &#8211; Salve Regina (UK, 2006)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Acá tenemos otra variante del concepto de mezclar <em>pop</em> con música clásica. En este caso se trata de un cuarteto vocal de bellas mujeres, que chaparon el Canon de Pachelbel, le metieron no sé qué letra eclesiástica, y dale que es tarde.</p>
<p style="TEXT-ALIGN: justify"><strong>64) Fleetwood Mac &#8211; Eyes of the world (UK/USA, 1982)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Este grupo, considerado por muchos como uno de los pilares del <em>pop</em>, utiliza brevemente la armonía que nos ocupa, en un pasaje vocal que puede oirse claramente en este tema, al menos en su versión en vivo de 1982.</p>
<p style="TEXT-ALIGN: justify"><strong>65) Redsox &#8211; Sweet dream (Korea, 2005)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Qué lindas que son las coreanas.</p>
<p style="TEXT-ALIGN: justify"><strong>66) Sarah Connor &#8211; Love is color blind (Alemania, 2003)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Con la participación de TQ y toda su onda R&amp;B, el asunto es que el amor será daltónico pero nuestros oídos no: esto es el Canon acá y en Tanganika.</p>
<p style="TEXT-ALIGN: justify"><strong>67) Theresia &#8211; Moonlight.</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Difícil saber de dónde proviene esto, al parecer, podría ser de Indonesia. Como decía más arriba, realmente copados los asiáticos con Juan Carlos.</p>
<p style="TEXT-ALIGN: justify"><strong>68) Oasis &#8211; Don&#8217;t look back in anger (UK, 1996)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Los que critican a Oasis por su falta de creatividad (no es mi caso, a mí Oasis directamente no me gusta nada), pueden utilizar este <em>hit</em> como ejemplo: la armonía es la misma de &#8220;Shima Uta&#8221; (ejemplo 28), y la melodía del estribillo se parece mucho a otra canción de esta lista, el que la descubra se lleva un premio. Por cierto, su canción &#8220;Whatever&#8221; de 1994 también utiliza esta armonía.</p>
<p style="TEXT-ALIGN: justify"><strong>69) Fastball &#8211; Out of my head (USA, 1999)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Talvez esta sea la versión más disimulada de la armonía del Canon que podamos encontrar en toda la lista, ya que sustituye el III por un II-V secundarios para ir al IV, y luego el segundo IV por un dominante secundario para ir al V –como ya habían hecho nuestros hermanos T&amp;DS– y para rematarla, le agrega un IV al final de todo, que la deja picando…</p>
<p style="TEXT-ALIGN: justify"><strong>70) Silvio Rodríguez &#8211; Por quien merece amor (Cuba, 1982)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Y apareció otra de Silvio, a último momento. La armonía del principio de la estrofa es: I &#8211; V &#8211; VI &#8211; III &#8211; IV &#8211; III &#8211; II &#8211; VI7. Como vemos, es el propio Canon, excepto por el último acorde, un dominante secundario del II, que utiliza justamente para resolver la segunda mitad de la estrofa sobre este grado, o sea que no vuelve a repetir los acordes de Pachelbel.</p>
<p style="TEXT-ALIGN: justify"><strong>71) Claire Hamill &#8211; Someday we will all be together (UK, 1990)</strong></p>
<p style="TEXT-ALIGN: justify; PADDING-LEFT: 30px">Para finalizar, nos vamos con esta inglesa que estuvo muy vinculada a la movida musical de los 70’s. Su versión del Canon se usó para un video con pingüinos.</p>
<p style="TEXT-ALIGN: justify"><strong> </strong> </p>
<h4 style="text-align: left;">IV) Apéndice: temas frecuentemente referidos como similares al Canon, pero que en realidad no lo son.</h4>
<ul style="TEXT-ALIGN: justify">
<li>The Beatles &#8211; Let it be</li>
<li>Bob Marley &#8211; No woman no cry</li>
<li>U2 &#8211; With or without you</li>
<li>Avril Lavigne &#8211; Sk8ter Boy</li>
<li>Natalie Imbruglia &#8211; Torn</li>
<li>Ozone &#8211; Dragostea Din Tei</li>
<li>Akon &#8211; Don&#8217;t Matter</li>
<li>Matchbox Twenty &#8211; Push</li>
<li>Better Than Ezra &#8211; Good</li>
<li>Alfaville &#8211; Forever young</li>
<li>Blink 182 – Damnit</li>
<li>Bonnie Taylor Shakedown – Hellogoodbye</li>
</ul>
<p style="TEXT-ALIGN: justify">Todos estos temas tienen los tres primeros acordes del Canon, y el cuarto acorde casi siempre es IV, lo cual los hace a todos muy parecidos entre sí, pero considerablemente distintos a la obra de Pachelbel. “Dragostea din tei” es un caso especial, porque posee estos mismos acordes, pero en un orden distinto, por lo que se parece menos aun, aunque tiene cierto aire que por alguna razón nos recuerda al Canon.</p>
<p style="text-align: right;"><span><span id="_marker"> Pablo Gindel, 4/4/2010 (con la colaboración de Tomás Laurenzo)</span></span></p>
<p style="text-align: right;"><span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2010/04/lista-de-canciones-con-la-armonia-del-canon-de-pachelbel/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Proyecto Butiá</title>
		<link>http://www.pablogindel.com/2010/03/proyecto-butia/</link>
		<comments>http://www.pablogindel.com/2010/03/proyecto-butia/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 03:12:25 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[anep]]></category>
		<category><![CDATA[ANII]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[AX-12]]></category>
		<category><![CDATA[bioloid]]></category>
		<category><![CDATA[butiá]]></category>
		<category><![CDATA[codicen]]></category>
		<category><![CDATA[Dynamixel]]></category>
		<category><![CDATA[fing]]></category>
		<category><![CDATA[INCO]]></category>
		<category><![CDATA[mina]]></category>
		<category><![CDATA[plan ceibal]]></category>
		<category><![CDATA[robótica]]></category>
		<category><![CDATA[robótica educativa]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[sumo.uy]]></category>
		<category><![CDATA[XO]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=640</guid>
		<description><![CDATA[El Proyecto Butiá es un proyecto impulsado por el grupo mina (Network Management &#124; Artificial Intelligence) del Instituto de Computación de la Facultad de Ingeniería (UdelaR) y financiado por la ANII, que se desarrolla en coordinación con la Inspección de Informática de Educación Secundaria, ANEP-CODICEN.
El objetivo de este proyecto es crear una plataforma simple y económica, que permita a alumnos de liceos públicos, en [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp mceIEcenter" style="TEXT-ALIGN: justify">El <a href="http://www.fing.edu.uy/inco/proyectos/butia/" target="_blank">Proyecto Butiá</a> es un proyecto impulsado por el grupo <strong><a href="http://www.fing.edu.uy/inco/grupos/mina/" target="_blank">mina</a></strong> (Network Management | Artificial Intelligence) del Instituto de Computación de la Facultad de Ingeniería (UdelaR) y financiado por la <a href="http://www.anii.org.uy/web/" target="_blank">ANII</a>, que se desarrolla en coordinación con la Inspección de Informática de Educación Secundaria, ANEP-CODICEN.<span id="more-640"></span></div>
<p style="TEXT-ALIGN: justify">El objetivo de este proyecto es crear una plataforma simple y económica, que permita a alumnos de liceos públicos, en coordinación con docentes e inspectores de Enseñanza Secundaria, interiorizarse con la programación del comportamiento de robots; de esta manera, se pretende transmitir a los profesores, estudiantes, y a sus familias, conocimientos básicos sobre las nuevas tecnologías y sus aplicaciones.</p>
<p style="TEXT-ALIGN: justify">La propuesta aspira a incorporar estos sistemas robóticos de bajo costo en todos los liceos públicos con bachillerato tecnológico del país, organizando charlas y actividades extra-curriculares, en donde se explique el manejo, las características y las posibilidades del sistema.</p>
<div class="wp-caption alignright" style="width: 290px"><a href="http://www.pablogindel.com/imagenes/butia_fotog.jpg"><img class="        " title="Plataforma de acrílico del Butiá-Bot" src="http://www.pablogindel.com/imagenes/butia_foto.jpg" alt="Plataforma de acrílico del Butiá-Bot, con los 2 motores AX-12+" width="280" height="210" /></a><p class="wp-caption-text">Plataforma de acrílico con los 2 motores AX-12+</p></div>
<p style="TEXT-ALIGN: justify"><strong>El Butiá-Bot</strong></p>
<p style="TEXT-ALIGN: justify">En octubre del año pasado me enteré de la existencia de este proyecto, y tuve la suerte de que me dejaran participar en él. Desde entonces tengo el honor de trabajar junto a Gonzalo Tejera, Santiago Margni, Andrés Aguirre, Jorge Visca y Federico Andrade, en todo lo que es el hardware y software del robot (hay más gente trabajando en otras áreas). En estos meses el avance ha sido paulatino; ello se debe a que cada decisión que se toma es analizada y discutida cuidadosamente.</p>
<p style="TEXT-ALIGN: justify">A diferencia de los robots que yo había venido desarrollando por mi cuenta, los cuales funcionan integramente con un único microcontrolador, el Butiá-Bot consta de 2 niveles de procesamiento: el &#8220;bajo nivel&#8221;, gestionado por un microcontrolador, que se encarga del manejo básico de sensores y actuadores, y por encima de éste, el &#8220;alto nivel&#8221;, es decir, una computadora que se encarga de la conducta propiamente dicha del robot. Esto permite su programación en lenguajes de alto nivel de abstracción, así como, eventualmente, el procesamiento avanzado de imágenes y sonido, lo que a su vez nos posibilitaría el uso de cámaras web, micrófonos, y otros periféricos sofisticados. </p>
<p style="TEXT-ALIGN: justify">El sistema estaría diseñado de tal modo que permita usar como soporte hardware del &#8220;alto nivel&#8221; tanto una SBC (single-board computer), como cualquier dispositivo móvil, celular, netbook, incluso un router, capaz de correr alguna distribución de <strong>Linux</strong>, pero apuntando principalmente a las computadoras del <a href="http://www.ceibal.edu.uy/" target="_blank">Plan Ceibal</a>, las <a href="http://es.wikipedia.org/wiki/OLPC" target="_blank">XO</a>.</p>
<p style="TEXT-ALIGN: justify">En materia de hardware de bajo nivel, es decir el &#8220;microcontrolador&#8221;, teníamos que decidir entre 2 opciones: la ya conocida tarjeta <a href="http://www.arduino.cc/" target="_blank">Arduino</a>, y el USB4ALL, un interfaz USB genérico basado en <a href="http://es.wikipedia.org/wiki/Microcontrolador_PIC" target="_blank">PIC</a>, desarrollado en el propio seno del <strong>mina</strong>. Finalmente se optó por comenzar el desarrollo usando Arduino, dada la facilidad que nos ofrecía la <a href="http://www.pablogindel.com/2010/01/biblioteca-de-arduino-para-ax-12/" target="_blank">biblioteca</a> para controlar motores <a href="http://www.robotis.com/zbxe/dynamixel_en" target="_blank">AX-12+</a>, pero sin descartar una futura implementación usando USB4ALL.</p>
<p style="TEXT-ALIGN: justify">El software de &#8220;alto nivel&#8221;, por su parte, consta de 2 &#8220;capas&#8221;: una capa &#8220;inferior&#8221; que se comunica con el &#8220;bajo nivel&#8221;, y la capa &#8220;superior&#8221; implementada en el lenguaje de programación propiamente dicho. Con respecto a esta capa &#8220;inferior&#8221;, se decidió finalmente usar el LuBot (<a href="http://www.lua.org/" target="_blank">Lua</a> for roBots), otro poyecto del <strong>mina</strong> emparentado con USB4ALL, por lo tanto el protocolo de comunicación que usamos entre esta capa y el <em>firmware </em>(el software de &#8220;bajo nivel&#8221; que corre en el microcontrolador), terminó siendo una versión del protocolo USB4ALL pero &#8220;encapsulado&#8221; para viajar por <a href="http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter" target="_blank">serial</a> (una diferencia entre los micros <a href="http://es.wikipedia.org/wiki/AVR" target="_blank">AVR</a> usados por Arduino y el <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf" target="_blank">PIC18F4550</a> usado en USB4ALL, es que este último tiene soporte USB nativo, mientras que las Arduino utilizan un chip <a href="http://www.ftdichip.com/" target="_blank">FTDI</a> que emula un puerto serial sobre USB).</p>
<p style="TEXT-ALIGN: justify">Físicamente hablando, el robot consiste en un &#8220;carrito&#8221;, &#8220;chata&#8221; o &#8220;tortuga&#8221;, como quieran llamarle, es decir una plataforma con dos motores y dos &#8220;ruedas locas&#8221;, una de ellas amortiguada, capaz de sostener una computadora XO, además de sus propios componentes, entre ellos el pack de 8 baterías recargables de <a href="http://es.wikipedia.org/wiki/Bater%C3%ADa_de_n%C3%ADquel_e_hidruro_met%C3%A1lico" target="_blank">Ni-MH</a>. Respecto a los sensores, habrá un set de ellos y el usuario podrá elegir qué sensores quiere conectar, cuántos de ellos y la disposición espacial de los mismos. Entre los sensores que vendrán en el kit, estarán los clásicos <a href="http://www.superrobotica.com/download/sharp/gp2d12.pdf" target="_blank">Sharp GP2D12</a> (medidor de distancia infrarrojo) pero en su variante <a href="http://atc.ugr.es/~afdiaz/fich/bus_i2c.pdf" target="_blank">I2C</a>, más algunos medidores de inclinación, de luz, de tacto, de temperatura, etc.</p>
<p style="TEXT-ALIGN: justify">Les dejo ahora un par de videos del Butiá-Bot en una fase precaria (primeras pruebas hechas a mediados de febrero, con una rueda de menos) y la presentación del proyecto a cargo de Santiago Margni. No olviden visitar la página del Butiá <a href="http://www.fing.edu.uy/inco/proyectos/butia/">http://www.fing.edu.uy/inco/proyectos/butia/</a>, mantenida por Federico Andrade, quien es además el que subió los videos a YouTube.</p>
<p style="TEXT-ALIGN: center"> </p>
<p style="TEXT-ALIGN: center"><a href="http://www.pablogindel.com/2010/03/proyecto-butia/"><p><em>Click here to view the embedded video.</em></p></a> </p>
<p style="TEXT-ALIGN: center"><a href="http://www.pablogindel.com/2010/03/proyecto-butia/"><p><em>Click here to view the embedded video.</em></p></a></p>
<p style="TEXT-ALIGN: center"> </p>
<p style="TEXT-ALIGN: center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=papi2009-v0-5-100317143220-phpapp01&amp;stripped_title=sistema-robtico-constructivo-de-bajo-costo-para-uso-educativo" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=papi2009-v0-5-100317143220-phpapp01&amp;stripped_title=sistema-robtico-constructivo-de-bajo-costo-para-uso-educativo" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="TEXT-ALIGN: center"> </p>
<p style="TEXT-ALIGN: center"> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2010/03/proyecto-butia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XY Motion Control</title>
		<link>http://www.pablogindel.com/2010/03/xy-motion-control/</link>
		<comments>http://www.pablogindel.com/2010/03/xy-motion-control/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 22:50:56 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[arai moleri]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[AX-12]]></category>
		<category><![CDATA[dynamixel ax-12]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[pablo gindel]]></category>
		<category><![CDATA[pan & tilt]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[robotic]]></category>
		<category><![CDATA[robotic cam]]></category>
		<category><![CDATA[stop motion]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[tatitos]]></category>
		<category><![CDATA[uruguay]]></category>
		<category><![CDATA[walter tournier]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=621</guid>
		<description><![CDATA[&#8220;XY Motion Control&#8221; fue el proyecto de grado de la Lic. en diseño industrial Araí Moleri, en el cual yo intervine desarrollando el sistema de control de los servos AX-12 con Arduino y la aplicación Java con la que se maneja desde el PC.
El proyecto consiste en un soporte robótico para cámaras, que realiza los movimientos de PAN y TILT y es capaz de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">&#8220;XY Motion Control&#8221; fue el proyecto de grado de la Lic. en diseño industrial Araí Moleri, en el cual yo intervine desarrollando el sistema de control de los servos AX-12 con Arduino y la aplicación Java con la que se maneja desde el PC.<span id="more-621"></span></p>
<p style="text-align: justify;">El proyecto consiste en un soporte robótico para cámaras, que realiza los movimientos de PAN y TILT y es capaz de moverse en incrementos de 0,3º, para usar en películas de stop-motion. También cuenta con un sistema de movimientos continuos automatizados, y están previstas varias mejoras como ser: captura de movimientos, modo autónomo y sincronización con el programa &#8220;Dragon Stop Motion&#8221;.</p>
<p style="text-align: justify;">A continuación les dejo los videos oficiales del producto y una documentación de la parte informática del mismo. Las animaciones 3D y los videos fueron hechos por Juan Pablo Colasso. En el segundo video puede verse el aparato funcionando, y al maestro Walter Tournier (el creador de Los Tatitos) haciendo una animación con el mismo.</p>
<p style="text-align: justify;"> </p>
<a href="http://www.pablogindel.com/2010/03/xy-motion-control/"><p><em>Click here to view the embedded video.</em></p></a> <a href="http://www.pablogindel.com/2010/03/xy-motion-control/"><p><em>Click here to view the embedded video.</em></p></a>
<p> </p>
<p style="TEXT-ALIGN: center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=xymotioncontrol-100306095606-phpapp01&amp;stripped_title=xy-motion-control" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=xymotioncontrol-100306095606-phpapp01&amp;stripped_title=xy-motion-control" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="TEXT-ALIGN: center"> </p>
<p style="TEXT-ALIGN: center"> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2010/03/xy-motion-control/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Reconocimiento de voz en SAMSA</title>
		<link>http://www.pablogindel.com/2010/03/reconocimiento-de-voz-novedades-de-samsa-2/</link>
		<comments>http://www.pablogindel.com/2010/03/reconocimiento-de-voz-novedades-de-samsa-2/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 02:38:08 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Artículos técnicos, etc.]]></category>
		<category><![CDATA[Audio e Informática]]></category>
		<category><![CDATA[ANN]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[artificial neural network]]></category>
		<category><![CDATA[atmega128]]></category>
		<category><![CDATA[atmel]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[backpropagation]]></category>
		<category><![CDATA[gradient descent]]></category>
		<category><![CDATA[hexapod]]></category>
		<category><![CDATA[hexápodo]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[montevideo]]></category>
		<category><![CDATA[neural network]]></category>
		<category><![CDATA[pablo gindel]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[reconocimiento de voz]]></category>
		<category><![CDATA[red neuronal]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[robótica]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[SAMSA]]></category>
		<category><![CDATA[sigmoid]]></category>
		<category><![CDATA[speech recognition]]></category>
		<category><![CDATA[steepest descent]]></category>
		<category><![CDATA[TCFM]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[uruguay]]></category>
		<category><![CDATA[wiring]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=548</guid>
		<description><![CDATA[
 
En setiembre del año pasado, luego de su presentación en el marco de los workshops del 6º Campeonato de Sumo Robótico, todavía no tenía muy claro qué hacer con SAMSA, hacia dónde orientar su programación.
Finalmente decidí que SAMSA tenía que ser un robot capaz de un nivel más sofisticado de sensibilidad auditiva, ya que en [...]]]></description>
			<content:encoded><![CDATA[<h4><a href="http://www.pablogindel.com/2010/03/reconocimiento-de-voz-novedades-de-samsa-2/"><p><em>Click here to view the embedded video.</em></p></a></h4>
<p> </p>
<p style="TEXT-ALIGN: justify">En setiembre del año pasado, luego de su presentación en el marco de los workshops del <a href="http://www.pablogindel.com/2009/09/sexto-campeonato-uruguayo-de-sumo-robotico/" target="_blank">6º Campeonato de Sumo Robótico</a>, todavía no tenía muy claro qué hacer con SAMSA, hacia dónde orientar su programación.</p>
<p style="TEXT-ALIGN: justify">Finalmente decidí que SAMSA tenía que ser un robot capaz de un nivel más sofisticado de sensibilidad auditiva, ya que en mis robots anteriores había experimentado más que nada con diversos tipos de dispositivos ópticos (con mayor o menor suerte), y de emisores de sonido. Esto podría darme la excusa, por ejemplo, para desarrollar un sistema de reconocimiento del ritmo, que le permitiera al robot bailar al compás de la música (y de paso me serviría para el momentáneamente abandonado proyecto <a href="http://www.pablogindel.com/2009/08/el-zappator/" target="_blank">Zappator</a>). Por otro lado, me interesaba también experimentar con redes neuronales, ya que suponía que éstas podrían constituir una alternativa a tener que programar línea por línea todo el comportamiento de un robot.</p>
<p style="TEXT-ALIGN: justify">Tal como había publicado en la <a href="http://www.pablogindel.com/2009/09/documentacion-de-samsa-1ª-entrega/" target="_blank">1ª etrega de la documentación de SAMSA</a>, la distribución total de tareas del robot a cargo de un sólo y modesto ATmega128 (microcontrolador de 8bit/128KB/16MHz) dejaba, en lo que respecta al audio, tan sólo la posibilidad de medir la intensidad del sonido cada cierto lapso, y ni soñar siquiera con algún tipo de análisis de frecuencias.</p>
<p style="TEXT-ALIGN: justify">La única alternativa parecía ser la de incluir un segundo procesador hardware, exclusivamente dedicado al procesamiento de sonido; pero eso implicaba agregar más componentes, en definitiva, exigirle más al ya sobrecargado sistema electro-mecánico del robot. Era mucho trabajo, y no me convencía.</p>
<p style="TEXT-ALIGN: justify">Se me ocurrió entonces otra solución: al mejor estilo “<a href="http://es.wikipedia.org/wiki/Sinclair_ZX81" target="_blank">ZX-81</a>”, el robot entraría temporalmente en un modo “escucha”, durante el cual no podría moverse, mostrar gráficos ni hacer ninguna otra cosa; utilizaría todos sus recursos para “analizar” el audio y actuar en consecuencia. La idea sería aumentar la frecuencia de las interrupciones (a 8KHz, de hecho), y sustituir la actual ISR (interrupt service routine), por otra que sólo procesara audio.</p>
<p style="TEXT-ALIGN: justify">Bien, y cuando decimos “procesar audio”, lo primero que nos viene a la mente es analizar frecuencias. ¿Por qué? Por muchísimas razones, talvez la más importante es que nuestro cerebro mismo percibe el sonido de esa manera. Como no soy para nada experto en <a href="http://es.wikipedia.org/wiki/Transformada_r%C3%A1pida_de_Fourier" target="_blank">FFT</a>, ni estaba seguro de que fuera realmente posible su implementación con estos escasos recursos de cómputo, busqué algún tipo de proceso más liviano, hasta que llegué a un algoritmo que yo mismo bauticé “<strong>filtros por correlation recursivos</strong>”, que ya debe estar inventado, con otro o con el mismo nombre, y que veremos en breve.</p>
<p style="TEXT-ALIGN: justify">Una vez implementados los 4 filtros de frecuencias fijas (o bandas, no me pregunten.. por cierto, es probable que toda la implementación esté plagada de errores de <a href="http://es.wikipedia.org/wiki/Aliasing" target="_blank">aliasing</a> y distorsiones de todo tipo; no obstante, contra todo pronóstico, funciona) mirando en la pantalla las gráficas que estos filtros producían, tuve la intuición de que era posible intentar un reconocimiento de palabras, y eso me iba a dar la excusa para “entrarle” a las redes neuronales.</p>
<p style="TEXT-ALIGN: justify">Pasaron un poco más de 6 meses, durante los cuales primero desarrollé la herramienta de diseño y entrenamiento de redes neuronales (<a href="http://www.pablogindel.com/2009/12/palmer-neural-networks/" target="_blank">Palmer Neural Networks</a>), pero después, al momento de usarla, me daba cuenta de que faltaba algo y no podía avanzar, estaba bloqueado. Por un lado no disponía de mucho tiempo para pensar en esta idea, y por otro lado había empezado a dudar de que fuera posible cumplir con el objetivo. Finalmente a fines de febrero de este año, comencé a dedicarle horas al proyecto, hasta que llegué a este resultado, que dista de ser ideal, pero que nos ilustra claramente qué podemos esperar y qué no, de un sistema con estas características.</p>
<p style="TEXT-ALIGN: justify">Los invito a compartir un viaje por la arquitectura interna de un sistema de reconocimiento de palabras implementado íntegramente en un microcontrolador ATmega128.</p>
<p style="TEXT-ALIGN: justify"> </p>
<p style="TEXT-ALIGN: justify"><span style="color: #000000;"><strong>Siguiente sección &#8211;&gt; </strong><a href="http://www.pablogindel.com/informacion/Reconocimiento-de-voz/" target="_self"><strong>Reconocimiento de voz en un ATmega128</strong></a></span></p>
<p style="TEXT-ALIGN: justify"><span style="color: #000000;"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2010/03/reconocimiento-de-voz-novedades-de-samsa-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Síntesis Modular con Processing</title>
		<link>http://www.pablogindel.com/2010/01/sintesis-modular-con-processing/</link>
		<comments>http://www.pablogindel.com/2010/01/sintesis-modular-con-processing/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 00:08:28 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Audio e Informática]]></category>
		<category><![CDATA[Música]]></category>
		<category><![CDATA[AM]]></category>
		<category><![CDATA[chebyshev]]></category>
		<category><![CDATA[convolution]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[envelope]]></category>
		<category><![CDATA[envolvente]]></category>
		<category><![CDATA[FFT]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[filtro]]></category>
		<category><![CDATA[FM]]></category>
		<category><![CDATA[fourier]]></category>
		<category><![CDATA[IIR]]></category>
		<category><![CDATA[javasound]]></category>
		<category><![CDATA[MIDI]]></category>
		<category><![CDATA[minim]]></category>
		<category><![CDATA[modular]]></category>
		<category><![CDATA[oscilador]]></category>
		<category><![CDATA[oscillator]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[síntesis]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[synthesis]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=276</guid>
		<description><![CDATA[Introducción.
Buscando una herramienta para programar y experimentar con audio, efectos y síntesis, decidí probar la biblioteca Minim de Processing. Existen muchos entornos informáticos interesantes para diseñar sonido, algunos son gráficos, otros son de escribir código, algunos son libres, otros son pagos; cito algunos ejemplos: Reaktor, Max-MSP, PureData, SynthEdit, SynthMaker, JSyn, Csound, SuperCollider, ChucK.
Dentro de Processing, [...]]]></description>
			<content:encoded><![CDATA[<h4><span style="color: #000000;">Introducción.</span></h4>
<p style="TEXT-ALIGN: justify">Buscando una herramienta para programar y experimentar con audio, efectos y síntesis, decidí probar la biblioteca <a href="http://code.compartmental.net/tools/minim/" target="_blank">Minim</a> de Processing. Existen muchos entornos informáticos interesantes para diseñar sonido, algunos son gráficos, otros son de escribir código, algunos son libres, otros son pagos; cito algunos ejemplos: Reaktor, Max-MSP, PureData, SynthEdit, SynthMaker, JSyn, Csound, SuperCollider, ChucK.<span id="more-276"></span></p>
<p style="TEXT-ALIGN: justify">Dentro de <a href="http://processing.org/" target="_blank">Processing</a>, existen varias bibliotecas para manejar sonido, entre ellas: Ess, Sonia y Minim, siendo esta última la que viene con la distribución oficial del producto. Rápidamente, repasemos las principales ventajas e inconvenientes -a mi modesto entender- de Minim:</p>
<ul style="TEXT-ALIGN: justify">
<li>Ventajas: es simple, transparente, bastante bien documentada y Open Source.</li>
<li>Inconvenientes: utiliza <a href="http://java.sun.com/products/java-media/sound/" target="_self">Java Sound</a> para comunicarse con el hardware de audio.</li>
</ul>
<p style="TEXT-ALIGN: justify">Muchas de las bibliotecas de Processing son justamente &#8220;wrappers&#8221; de las funcionalidades de Java. Minim utiliza Java Sound para el audio I/O, partes de otras bibliotecas para otras tareas -como reproducir mp3, por ejemplo- pero también agrega cosas propias e interesantes, en materia de análisis, procesamiento y generación de sonido. A su vez, uno de los principales inconvenientes del sistema de audio de Java es que no soporta <a href="http://www.steinberg.net/en/company/steinberg_technology.html" target="_blank">ASIO</a>, que como todos sabemos, es la única manera de obtener baja<em> latencia</em>, al menos bajo Windows XP.</p>
<p style="TEXT-ALIGN: justify"><span style="color: #000000;"><strong>¿Cómo funciona la generación de sonido a nivel de software?</strong></span></p>
<p style="TEXT-ALIGN: justify">El audio digital, a nivel del software, se maneja en <em>buffers</em>. Un buffer es un conjunto de muestras -por ejemplo, 1024 muestras- que se envían o se reciben en bloque hacia o desde el hardware. Mientras la tarjeta de audio reproduce esas 1024 muestras (lo que le llevará 23ms, si el muestreo es de 44,1KHz), el programa tiene tiempo de calcular el bloque siguiente. Cuanto más grande sea el buffer, o sea cuantas más muestras contenga, mayor será la latencia de la que hablábamos en el párrafo anterior (más información sobre buffers y latencia <a href="http://www.pablogindel.com/2009/07/manual-de-audio-2008/">aqui</a>).</p>
<p style="TEXT-ALIGN: justify">En Minim, la clase <a href="http://code.compartmental.net/tools/minim/manual-oscillator/" target="_blank">Oscillator</a> es la base de los generadores de sonido. Cuando se llama al método &#8220;<em>generate&#8221;</em>, este &#8220;llena&#8221; un buffer con una forma de onda calculada de alguna manera, por ejemplo con la función trigonométrica seno.</p>
<p style="TEXT-ALIGN: justify">Una consecuencia interesante de esta naturaleza de Minim, es que si nosotros intentamos modificar un parámetro de la onda que se está generando -por ejemplo su amplitud o su frecuencia- desde el módulo principal (la Draw() de Processing) ya sea a partir de un control externo o de una función prefijada, los cambios se van a manifestar de a &#8220;saltos&#8221; equivalentes a la duración del buffer (23ms, en el ejemplo que veíamos). Esto nos impide hacer un cambio gradual y continuo de cierto parámetro, por ejemplo una <a href="http://es.wikipedia.org/wiki/Envolvente_ac%C3%BAstico" target="_blank">envolvente de amplitud</a>. Para lograr este tipo de control, necesitamos implementar otro &#8220;Oscillator&#8221; que genere la señal de control, y que el primer &#8220;Oscillator&#8221; consulte a esa señal al calcular cada muestra que pone en el buffer.</p>
<p style="TEXT-ALIGN: justify">Aplicando esta idea a diversos módulos de la biblioteca, e implementando algunos módulos nuevos, surgió la <strong>Minim 2.02 PE</strong> (palmer edition), con la cual podemos hacer una modesta síntesis modular, que paso a describir y ejemplificar en la página a continuación.</p>
<h4 style="TEXT-ALIGN: justify"><span style="color: #000000;"> </span></h4>
<p style="TEXT-ALIGN: justify"><span style="color: #000000;"><strong>Siguiente sección &#8211;&gt; </strong><a href="http://www.pablogindel.com/informacion/minim-2-02-palmer-edition/" target="_self"><strong>Minim 2.02 Palmer Edition</strong></a></span></p>
<p style="TEXT-ALIGN: justify"><span style="color: #000000;"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2010/01/sintesis-modular-con-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Biblioteca de Arduino para AX-12</title>
		<link>http://www.pablogindel.com/2010/01/biblioteca-de-arduino-para-ax-12/</link>
		<comments>http://www.pablogindel.com/2010/01/biblioteca-de-arduino-para-ax-12/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 10:39:12 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Artículos técnicos, etc.]]></category>
		<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[1mbps]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[atmega]]></category>
		<category><![CDATA[atmel]]></category>
		<category><![CDATA[AX-12]]></category>
		<category><![CDATA[digital]]></category>
		<category><![CDATA[Dynamixel]]></category>
		<category><![CDATA[half duplex]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[robótica]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[robotis]]></category>
		<category><![CDATA[servo]]></category>
		<category><![CDATA[USART]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=270</guid>
		<description><![CDATA[El Dinamyxel AX-12+ es un un servo digital &#8220;inteligente&#8221;, fabricado por la empresa Robotis e implementado en sus kits robóticos Bioloid (que cuando pueda me voy a comprar uno); es lo que podríamos llamar un &#8220;superservo&#8221;.
Algunas de sus características, que me vienen a la mente ahora:

soporta rotación continua y modo servo standard, este último con un radio [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">El <a href="http://www.robotis.com/zbxe/dynamixel_en" target="_blank">Dinamyxel</a> AX-12+ es un un servo digital &#8220;inteligente&#8221;, fabricado por la empresa <a href="http://www.robotis.com/zbxe/main" target="_blank">Robotis</a> e implementado en sus kits robóticos Bioloid (que cuando pueda me voy a comprar uno); es lo que podríamos llamar un &#8220;superservo&#8221;.<span id="more-270"></span></p>
<p style="TEXT-ALIGN: justify">Algunas de sus características, que me vienen a la mente ahora:</p>
<ul style="TEXT-ALIGN: justify">
<li>soporta rotación continua y modo servo standard, este último con un radio de giro de 300 grados</li>
<li>velocidad y torque ajustables</li>
<li>velocidad máxima: 300 grados/seg. Torque máximo: 16Kg/cm</li>
<li>comunicación serial a 1Mb/s, half duplex. Se pueden conectar varios motores en cadena a un mismo bus.</li>
<li>usa un microcontrolador ATmega8 (vale decir que adentro de cada motor hay una Arduino de las viejas)</li>
<li>10 bits de resolución en todos los parámetros (0-1023)</li>
<li>alimentación de 7-10V (los servos standard funcionan entre 4,5-6V)</li>
<li>feedback de todo tipo de información: posición angular, temperatura, voltaje, fuerza, velocidad, sobrecarga, errores, etc.  a través del bus serial, y posee además un led de notificación.</li>
<li style="TEXT-ALIGN: justify">y lo que más me gusta: viene con los famosos &#8220;brackets&#8221; en forma de &#8220;U&#8221;, de un plástico muy resistente, tornillos, y otras piezas mecánicas de gran interés, por sólo 45 dólares.</li>
</ul>
<p style="TEXT-ALIGN: justify">Cuando me enteré de la existencia de tan maravilloso actuador, comencé a buscar información sobre su control mediante <a href="http://www.arduino.cc/" target="_blank">Arduino</a>. Dado que el propio motor implementa un ATmega8 y que el microcontrolador central de los Bioloid es un ATmega128, pensé que tenía que ser más que posible dicha combinación.</p>
<p style="TEXT-ALIGN: justify">Afortunadamente encontré este proyecto, el <a href="http://code.google.com/p/arbotix/" target="_blank">ArbotiX RoboController</a>, que es justamente una placa controladora de robots capaz de manejar los AX-12, basada en ATmega644 y de código abierto. La ArbotiX está basada en <a href="http://sanguino.cc/start" target="_blank">Sanguino</a>, y no en la Arduino propiamente dicha. La principal diferencia es que estas placas, al igual que la CM-5 del Bioloid, tienen dos puertos USART, mientras que la Arduino &#8220;clásica&#8221; tiene solamente uno.</p>
<p style="TEXT-ALIGN: justify">Si usamos los AX-12 en un proyecto, siempre nos va a convenir tener un segundo puerto serial, para comunicar con la PC u otro hardware &#8220;superior&#8221;. En el caso de la Arduino clásica, esto se resuelve usando la biblioteca <a href="http://arduino.cc/en/Reference/SoftwareSerial" target="_blank">SoftwareSerial</a>, que fue lo que yo hice en el video de más abajo. Hay que tener en cuenta que la SoftwareSerial está limitada a 9600 baudios, y que consume memoria y tiempo del procesador, pero en muchos casos esto no representa mayor problema.</p>
<p style="TEXT-ALIGN: justify">En resumen, la adaptación de la biblioteca de ArbotiX a una Arduino clásica consistió simplemente en cambiar el nombre de algunos registros. Una vez que probé que esto funcionaba, aproveché para ampliar y mejorar la funcionalidad de la librería, y actualmente estoy trabajando con mi propia versión, que pueden descargar <strong><a href="http://www.pablogindel.com/images/ax12.rar" target="_blank">aquí</a></strong>.</p>
<p style="TEXT-ALIGN: justify">En el video de prueba, el setup es el siguiente:</p>
<ul style="TEXT-ALIGN: justify">
<li>los pines 0 y 1 (RX y TX) van unidos entre sí y conectados al pin de datos del AX-12</li>
<li>la alimentación del AX-12 se extrae de los mismos 9V que alimentan a la tarjeta</li>
<li style="TEXT-ALIGN: justify">los pines 2 y 3 se utilizan con la &#8220;software serial&#8221;, y van conectados a un convertidor serial-USB (FTDI) el cual a su vez se conecta al PC y es monitoreado con el Putty. No es posible usar para esto el propio convertidor serial-USB incluido en la Arduino, ya que el mismo se encuentra físicamente soldado a los pines 0 y 1.</li>
</ul>
<p style="TEXT-ALIGN: justify">Bueno, aquí les dejo el video. Saludos!</p>
<p style="TEXT-ALIGN: justify"><a href="http://www.pablogindel.com/2010/01/biblioteca-de-arduino-para-ax-12/"><p><em>Click here to view the embedded video.</em></p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2010/01/biblioteca-de-arduino-para-ax-12/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Palmer Neural Networks</title>
		<link>http://www.pablogindel.com/2009/12/palmer-neural-networks/</link>
		<comments>http://www.pablogindel.com/2009/12/palmer-neural-networks/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 02:17:44 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Artículos técnicos, etc.]]></category>
		<category><![CDATA[Audio e Informática]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[algoritmo de entrenamiento]]></category>
		<category><![CDATA[ANN]]></category>
		<category><![CDATA[artificial neural network]]></category>
		<category><![CDATA[backpropagation]]></category>
		<category><![CDATA[bias]]></category>
		<category><![CDATA[feedforward]]></category>
		<category><![CDATA[gradiente descendente]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[mínimo local]]></category>
		<category><![CDATA[montevideo]]></category>
		<category><![CDATA[neural network]]></category>
		<category><![CDATA[pablo gindel]]></category>
		<category><![CDATA[perceptron]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[red neuronal]]></category>
		<category><![CDATA[redes neuronales]]></category>
		<category><![CDATA[sigmoide]]></category>
		<category><![CDATA[uruguay]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=234</guid>
		<description><![CDATA[Como decíamos en artículos anteriores, existen -en principio- dos caminos para lograr que un programa se comporte de determinada manera en función de ciertas variables de entrada: elaborando una tabla con todas las posibles combinaciones de esas variables y sus respectivas acciones asociadas, o econtrando algún tipo de modelo matemático, una fórmula o un algoritmo [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Como decíamos en artículos anteriores, existen -en principio- dos caminos para lograr que un programa se comporte de determinada manera en función de ciertas variables de entrada: elaborando una <strong>tabla</strong> con todas las posibles combinaciones de esas variables y sus respectivas acciones asociadas, o econtrando algún tipo de modelo matemático, una fórmula o un <strong>algoritmo</strong> que aplicado a dichas variables nos dé el resultado buscado en cada caso.</p>
<p style="TEXT-ALIGN: justify"><span id="more-234"></span>Cuando la cantidad de combinaciones de variables de entrada es demasiado grande como para elaborar una tabla, y la función es demasiado compleja como para encontrar un algoritmo, las <strong>Redes Neuronales Artificiales </strong>constituyen una manera distinta de abordar el problema, sumamente efectiva aunque no perfecta, como ya veremos.</p>
<p style="TEXT-ALIGN: justify">Podríamos considerar a la RNA como una especie de &#8220;algoritmo universal&#8221;, capaz de responder de muchísimas maneras distintas, y al que podemos &#8220;enseñar&#8221; el comportamiento deseado &#8220;mostrándole&#8221; ejemplos del mismo (una tabla parcial), para luego esperar que se comporte de la manera buscada frente a todos los casos posibles. Precisamente en esto radican sus principales virtud y defecto: el porcentaje de <em>aciertos</em> puede ser increíblemente grande (teniendo en cuenta lo general que es el método) pero no tenemos ninguna garantía de la <em>exactitud</em> del resultado. La analogía con un &#8220;cerebro&#8221; animal surge inmediatamente.</p>
<p style="TEXT-ALIGN: justify">Existen en internet numerosos artículos introductorios y avanzados, que explican claramente el funcionamiento de una RNA, mucho mejor que cualquier cosa que yo pudiera escribir aquí al respecto (empezando por <a href="http://es.wikipedia.org/wiki/Red_neuronal_artificial" target="_blank">este</a>). Mi aporte, en cambio, consistirá en presentar un programa mediante el cual podemos tener una aproximación práctica a la materia, experimentar con redes neuronales, introducir ejemplos reales, lidiar con el entrenamiento y visualizar el proceso de aprendizaje. <strong>PNN</strong> nos permite &#8220;sentir&#8221; las redes neuronales artificiales en nuestra propia experiencia, y también resolver algún caso práctico, que fue lo que originalmente me motivó a desarrollarlo.</p>
<p style="TEXT-ALIGN: justify"><strong>Características técnicas del programa.</strong></p>
<p style="TEXT-ALIGN: justify">Este programa  se basa en el artículo de Steven W. Smith sobre redes neuronales artificiales, en el capítulo 26 de su excelente <a href="http://www.dspguide.com/ch26.htm" target="_blank">The Scientist and Engineer&#8217;s Guide to DSP</a>. La red presentada vendría a ser un <em>perceptrón multicapa</em>, con una <em>capa de entrada</em>, una <em>capa oculta</em> y una <em>capa de salida</em>, cada una de ellas interconectada totalmente con la siguiente, con neuronas de <em>bias</em> en las dos primeras capas  y con función de transferencia <em>sigmoide</em> en cada neurona.  El algoritmo de entrenamiento es el que propone dicho autor, al que llama <em>steepest descent</em>, pero que también podemos encontrar bajo el nombre de <em>gradient descent</em> o simplemente <strong>backpropagation</strong>.</p>
<p style="TEXT-ALIGN: justify"><strong>Instrucciones</strong></p>
<p style="TEXT-ALIGN: justify">Para invocar el applet, hagan click <a title="Palmer Neural Networks" href="http://www.pablogindel.com/applets/PNN.html" target="_blank"><strong>aquí</strong></a>.</p>
<p style="TEXT-ALIGN: justify">Al hacerlo, aparecerán 2 ventanas: la ventana de <em>visualización</em>, hecha en <a href="http://processing.org/" target="_blank">Processing</a>, y el <em>panel de control</em> flotante, hecho en <a href="http://www.java.com/" target="_blank">Java</a> (que a veces queda oculto tras aquella).</p>
<p style="TEXT-ALIGN: justify">Lo primero que debemos hacer es <em>dimensionar</em> nuestra red. Escribimos el número de neuronas o <em>nodos</em> de cada capa, y apretamos el botón &#8220;Dimensionar&#8221;. Al hacerlo aparecerá en la ventana de visualización un modelo 3D en el que las neuronas de cada capa están representadas por esferas de distinto color (y las de <em>bias</em>, de un tamaño ligeramente mayor y blancas [ya nos ocuparemos de las opciones de esa visualización, antes de eso, sigamos con la parte "científica"]).</p>
<p style="TEXT-ALIGN: justify">Al apretar el botón &#8220;Aleatorizar pesos&#8221; aparecen las conexiones entre las neuronas; las verdes son positivas y las azules negativas, y su diámetro es proporcional al <em>peso</em> de la conexión correspondiente.</p>
<p style="TEXT-ALIGN: justify">A continuación deberíamos ir a &#8220;Archivo&#8221; y seleccionar &#8220;Cargar set de ejemplos&#8221;, pero lamentablemente esta opción no está habilitada en las <em>applets</em> de internet, por razones de seguridad. En su lugar podemos ir a &#8220;Ayuda&#8221; y seleccionar &#8220;Demo&#8221;. Esto tendrá el efecto de dimensionar una red con 7 entradas y 3 salidas, y cargar 3 sets de ejemplos.</p>
<p style="TEXT-ALIGN: justify">Para simplificar las cosas, todos los ejemplos están &#8220;asociados&#8221; a una salida; esto quiere decir que se asume que producen &#8220;<strong>1</strong>&#8221; en dicha salida y &#8220;<strong>0</strong>&#8221; en todas las demás. En la lista podemos ver a qué salida está asignado cada ejemplo. Los ejemplos se pueden sacar, seleccionándolos y apretando la tecla &#8220;suprimir&#8221;. Si apretamos &#8220;Enter&#8221; sobre un ejemplo, éste se carga arriba, y podemos testear el comportamiento de la red apretando &#8220;Procesar salida&#8221;. También es posible ingresar valores manualmente en ese campo y probarlos, y una vez ingresados se pueden agregar a la lista con el botón &#8220;Agregar ejemplo&#8221;. Los valores en las entradas pueden ser <em>enteros</em> de cualquier tamaño; los pesos son números de <em>coma flotante</em>, y los valores de salida son de coma flotante entre <strong>0</strong> y <strong>1</strong>.</p>
<p style="TEXT-ALIGN: justify">Si ahora probamos cualquier grupo de valores de entrada, el resultado en las tres salidas va a ser siempre aproximadamente 0,5. Eso se debe a que la red no está <em>entrenada</em> aun. Para entrenarla debemos apretar el botón &#8220;Iniciar aprendizaje&#8221;. Al hacerlo, los pesos se irán modificando, y un número grande a la derecha nos irá indicando la <em>suma del error</em> que producen todos los ejemplos al ser procesados en la red actual. El objetivo del &#8220;juego&#8221; (si usted decide aceptarlo) consiste en dejar ese valor lo más bajo posible. El proceso de optimización se repite 1000 veces cada vez que apretamos &#8220;Iniciar aprendizaje&#8221;, pero habitualmente esto no es suficiente; la cantidad de repeticiones se puede subir a 10000 con el deslizador de abajo a la izquierda. En todo momento podemos ir probando el comportamiento de la red, entre aprendizaje y aprendizaje.</p>
<p style="TEXT-ALIGN: justify">Hasta aquí la operación general del programa. Veamos ahora los detalles.</p>
<p style="TEXT-ALIGN: justify"><strong>Redimensionar la red</strong></p>
<p style="TEXT-ALIGN: justify">Al cambiar el número de neuronas en las capas de entrada o de salida, se pierden todos los ejemplos y el aprendizaje realizado. No así al redimensionar la <strong>capa oculta</strong>. De hecho, es un buen recurso, si notamos que nuestra red tiene &#8220;dificultades para aprender&#8221;, dotarla de más &#8220;capacidad&#8221; aumentando el número de neuronas de la capa oculta.</p>
<p style="TEXT-ALIGN: justify"><strong>Factor de aprendizaje</strong></p>
<p style="TEXT-ALIGN: justify">Al aumentar este número, hacemos que el aprendizaje sea más rápido, pero también inestable; en ocasiones el error puede quedar oscilando o incluso aumentar. Al disminuir el valor, el aprendizaje se vuelve lento pero seguro.</p>
<p style="TEXT-ALIGN: justify"><strong>Aprendizaje extra</strong></p>
<p style="TEXT-ALIGN: justify">La idea de este parámetro está sacada del antes citado libro de S. W. Smith, y consiste darle más importancia, en el aprendizaje, a los ejemplos &#8220;positivos&#8221; o a los &#8220;negativos&#8221; (un ejemplo destinado a la salida <strong>2</strong> es un ejemplo &#8220;negativo&#8221; para la salida <strong>1</strong>). Sinceramente yo no encontré ningún resultado con esto, lo voy a revisar para la próxima versión.</p>
<p style="TEXT-ALIGN: justify"><strong>Menú Archivo</strong></p>
<p style="TEXT-ALIGN: justify">Todas las opciones del menú Archivo están desactivadas, algunas por razones de seguridad del Java, otras porque no están implementadas aun. La más importante sería la de salvar los pesos una vez concluido el entrenamiento. También podríamos volverlos a cargar para usarlos como punto de partida de una siguiente sesión de aprendizaje.</p>
<p style="TEXT-ALIGN: justify"><strong>Menú Configuración</strong></p>
<p style="TEXT-ALIGN: justify">El &#8220;Modo Automático&#8221; va a estar implementado en la próxima versión. Consistiría en que el propio programa tome nota de cómo va decreciendo o aumentando el <strong>error</strong>, ajuste automáticamente los parámetros de entrenamiento, y siga actuando solo hasta llegar a un mínimo de error prefijado.</p>
<p style="TEXT-ALIGN: justify">Los distintos &#8220;modos de aleatorización&#8221; afectan al comportamiento del botón &#8220;Aleatorizar pesos&#8221;. El algoritmo de aprendizaje parte de un estado aleatorio de los pesos y va modificando sus valores en el sentido en que el error decrece. Puede pasar que en determinado momento el error no descienda más, pero aun continúe alto: estaríamos frente a lo que llaman un <em>mínimo local</em>. Aquí viene al caso la aleatorización <em>relativa</em>, que lo que hace es modificar levemente los pesos pero en relación a su valor actual (introduce una pequeña &#8220;mutación&#8221;). Con esto conseguimos, a veces, que el error aumente un poco pero luego siga disminuyendo, es algo así como  &#8221;un paso atrás, dos adelante&#8221;.</p>
<p style="TEXT-ALIGN: justify"><strong>Respecto al error</strong></p>
<p style="TEXT-ALIGN: justify">El dato mostrado a la derecha como &#8220;error&#8221; se calcula de la siguiente manera:</p>
<p style="TEXT-ALIGN: justify">cada uno de los ejemplos que están en la lista se pasa por la red, y se mide la diferencia entre el valor que debe producir en cada salida y el que realmente produce. Todos estos valores elevados al cuadrado, sumados entre sí y sumados con los provenientes del resto de los ejemplos, nos dan el <strong>error</strong> total para un estado en particular de la red (media cuadrática). Esto quiere decir que cuanto mayores sean el número de salidas y el número de ejemplos cargados, mucho más difícil va a ser llevar ese valor a <strong>0 </strong>(y por supuesto, esto también depende del <em>contenido </em>de los ejemplos mismos). En el caso del problema que viene como <em>demo</em> (que, dicho sea de paso, consiste en diversas versiones de las palabras &#8220;uno&#8221;, &#8220;dos&#8221; y &#8220;tres&#8221; capturadas y codificadas por un nuevo programa de procesamiento de audio que estoy desarrollando para <a href="http://www.pablogindel.com/2009/07/samsa-el-hexapodo/" target="_blank">SAMSA</a>) la red se desempeña aceptablemente bien con el error en <strong>20</strong>, más o menos.</p>
<p style="TEXT-ALIGN: justify"><strong>Opciones de visualización</strong></p>
<p style="TEXT-ALIGN: justify">Por último, la parte &#8220;coqueta&#8221; del programa.</p>
<p style="TEXT-ALIGN: justify">Al hacer foco en la ventana de visualización, quedan disponibles las siguientes opciones:</p>
<ul style="TEXT-ALIGN: justify">
<li>haciendo click con el botón derecho del mouse, detenemos o reanudamos la rotación automática del modelo. Cuando la rotación automática está detenida, podemos rotarlo libremente con el botón izquierdo del mouse.</li>
<li>con las teclas de dirección seleccionamos un parámetro, que va a aparecer detallado en el ángulo inferior izquierdo de la pantalla, y con las teclas &#8220;<strong>+</strong>&#8221; y &#8220;<strong>&#8211;</strong>&#8221; modificamos ese parámetro.</li>
<li>los parámetros que se pueden modificar son: la disposición espacial de las neuronas en cada capa, el espaciado de las mismas, la rotación de todo el plano de la capa y la cantidad de caras de la sección de los &#8220;caños&#8221; que interconectan a las neuronas, que por defecto es 20, pero puede ir de 2 a 50, generando la sensación cilíndrica.</li>
</ul>
<p style="TEXT-ALIGN: justify"><strong>Mejoras para el futuro</strong></p>
<p style="TEXT-ALIGN: justify">Esta es una lista de las mejoras que podrían implementarse en futuras versiones del <strong>PNN</strong>, algunas de las cuales fueron sugeridas por mis amigos Alvaro y Tomás  (y otras pueden ser un divague, también).</p>
<ul style="TEXT-ALIGN: justify">
<li>que las neuronas se muevan, respondiendo a leyes físicas, y que las fuerzas de atracción y repulsión dependan de los pesos.</li>
<li>ponerle sonido (con la biblioteca <em>minim</em> de Processing)</li>
<li>esferas texturadas que giren sobre sí mismas</li>
<li>que las conexiones cambien de color cuando son modificadas</li>
<li>que las neuronas vibren según su &#8220;energía&#8221;</li>
<li>que unas bolas circulen por adentro de los caños</li>
<li>rotación de las conexiones</li>
<li>hay que inventar algo para que no haya que apretar 200 veces &#8220;Iniciar aprendizaje&#8221;</li>
<li>salvar y cargar pesos</li>
<li style="TEXT-ALIGN: justify">modo automático: que combine algoritmos genéticos con el backpropagation.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2009/12/palmer-neural-networks/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Documentación de SAMSA, 1ª entrega.</title>
		<link>http://www.pablogindel.com/2009/09/documentacion-de-samsa-1%c2%aa-entrega/</link>
		<comments>http://www.pablogindel.com/2009/09/documentacion-de-samsa-1%c2%aa-entrega/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 21:52:18 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Artículos técnicos, etc.]]></category>
		<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[pablo gindel]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[SAMSA]]></category>
		<category><![CDATA[servo]]></category>
		<category><![CDATA[wiring]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=225</guid>
		<description><![CDATA[Aquí va el slide que preparé para la presentación en el Sumo Robótico, que al final no pude mostrar. Es una primera aproximación a los aspectos técnicos de la construcción y programación de SAMSA, con algunas partes de código analizadas. Espero que lo disfruten.

 

 
]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Aquí va el slide que preparé para la presentación en el Sumo Robótico, que al final no pude mostrar. Es una primera aproximación a los aspectos técnicos de la construcción y programación de SAMSA, con algunas partes de código analizadas. Espero que lo disfruten.</p>
<p style="TEXT-ALIGN: justify"><span id="more-225"></span></p>
<p style="TEXT-ALIGN: center"> </p>
<div id="__ss_2075691" style="text-align: center; width: 425px;"><object style="MARGIN: 0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=samsa-documentacin-090927111927-phpapp01&amp;stripped_title=samsa-documentacin" /><param name="allowfullscreen" value="true" /><embed style="MARGIN: 0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=samsa-documentacin-090927111927-phpapp01&amp;stripped_title=samsa-documentacin" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p style="TEXT-ALIGN: center"> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2009/09/documentacion-de-samsa-1%c2%aa-entrega/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>6º campeonato uruguayo de sumo robótico</title>
		<link>http://www.pablogindel.com/2009/09/sexto-campeonato-uruguayo-de-sumo-robotico/</link>
		<comments>http://www.pablogindel.com/2009/09/sexto-campeonato-uruguayo-de-sumo-robotico/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 02:14:14 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[hexápodo]]></category>
		<category><![CDATA[INCO]]></category>
		<category><![CDATA[pablo gindel]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[sumo robótico]]></category>
		<category><![CDATA[sumo.uy]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=216</guid>
		<description><![CDATA[Se viene el 6º Campeonato Uruguayo de Sumo Robótico, organizado por el grupo MINA del Instituto de Computación / Facultad de Ingeniería, Universidad de la República, los días 24 al 26 de setiembre de 2009, o sea jueves a sábado de esta semana, en el Edificio Polifuncional Faro, Senda Nelson Landoni (al costado de Facultad de [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Se viene el 6º Campeonato Uruguayo de Sumo Robótico, organizado por el grupo MINA del Instituto de Computación / Facultad de Ingeniería, Universidad de la República, los días 24 al 26 de setiembre de 2009, o sea <strong>jueves a sábado de esta semana</strong>, en el Edificio Polifuncional Faro, Senda Nelson Landoni (al costado de Facultad de Ingeniería: Julio Herrera y Reissig 565, entre la cancha de Maeso y el Estadio Luis Franzini. Teléfono: 711 4244)<span id="more-216"></span></p>
<p style="TEXT-ALIGN: justify">Toda la información aquí: <a href="http://www.fing.edu.uy/inco/eventos/sumo.uy/">http://www.fing.edu.uy/inco/eventos/sumo.uy/</a></p>
<p style="TEXT-ALIGN: justify">El evento incluye las tradicionales competencias de sumo en varias categorías, el Concurso Uruguayo de Robótica 2009 y los Workshops. En estos últimos estaremos exponiendo el trabajo &#8220;Robótica Recreativa&#8221;, con la participación de nuestros amigos &#8220;el robotito&#8221; y &#8220;SAMSA&#8221;. Todavía no sé el dia ni la hora exactas, pero presumo que será el jueves a eso de las 19:00 hs. </p>
<p style="TEXT-ALIGN: justify">Tuve el honor de participar también en los Workshops el año pasado, y todo el evento estuvo buenísimo, no se lo pierdan.</p>
<p style="TEXT-ALIGN: justify">A propósito, vieron la última muestra de talento de SAMSA? Se nos va pa&#8217; Hollywood, se nos va&#8230;</p>
<p style="TEXT-ALIGN: justify"> </p>
<a href="http://www.pablogindel.com/2009/09/sexto-campeonato-uruguayo-de-sumo-robotico/"><p><em>Click here to view the embedded video.</em></p></a>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2009/09/sexto-campeonato-uruguayo-de-sumo-robotico/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Novedades de SAMSA</title>
		<link>http://www.pablogindel.com/2009/08/novedades-de-samsa/</link>
		<comments>http://www.pablogindel.com/2009/08/novedades-de-samsa/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 05:30:35 +0000</pubDate>
		<dc:creator>pabloxid</dc:creator>
				<category><![CDATA[Artículos técnicos, etc.]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[hexapod]]></category>
		<category><![CDATA[hexápodo]]></category>
		<category><![CDATA[pablo gindel]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[uruguay]]></category>
		<category><![CDATA[wiring]]></category>

		<guid isPermaLink="false">http://www.pablogindel.com/?p=159</guid>
		<description><![CDATA[Pasaron casi 2 meses desde los últimos videos de SAMSA, aquellos de la caminata, y tal vez pueda parecer que son pocos los avances para 2 meses. Voy a comentar los puntos en los que estuve trabajando.]]></description>
			<content:encoded><![CDATA[<p>Por fin algo para subir al blog!</p>
<a href="http://www.pablogindel.com/2009/08/novedades-de-samsa/"><p><em>Click here to view the embedded video.</em></p></a> <a href="http://www.pablogindel.com/2009/08/novedades-de-samsa/"><p><em>Click here to view the embedded video.</em></p></a>
<p style="TEXT-ALIGN: justify">Pasaron casi 2 meses desde los últimos videos de SAMSA, aquellos de la caminata, y tal vez pueda parecer que son pocos los avances para 2 meses. Voy a comentar los puntos en los que estuve trabajando:</p>
<p style="TEXT-ALIGN: justify"><strong>1) Idea central</strong>: todavía no tengo una idea central fuerte, que dé coherencia a todo el conjunto. SAMSA todavía no tiene una personalidad definida, pero ya presenta algunos rasgos. No es para inquietarse, a veces la &#8220;idea&#8221; me viene bastante tiempo después de tener armado todo el hardware, y a veces directamente no me viene. Siempre está la posibilidad de invitar a algún amigo y anotar en un papelito todas las ideas que se le escapan.</p>
<p style="TEXT-ALIGN: justify"><span id="more-159"></span></p>
<div class="mceTemp" style="TEXT-ALIGN: justify">
<dl class="wp-caption alignright" style="width: 292px;">
<dt class="wp-caption-dt"><a href="http://www.pablogindel.com/imagenes/bateria.jpg"><img class="     " title="batería" src="http://www.pablogindel.com/imagenes/bateriap.jpg" alt="Fuente de energía de SAMSA: batería LiPo de 7.4V/730mAh. Otra batería más grande y el cargador." width="282" height="183" /></a></dt>
<dd class="wp-caption-dd">Fuente de energía de SAMSA: batería LiPo de 7.4V/730mAh. Otra batería más grande y el cargador.</dd>
</dl>
</div>
<p style="TEXT-ALIGN: justify"><strong>2) Autonomía</strong>: no fue fácil dar con la batería adecuada para SAMSA. El robot necesita como mínimo una tensión de 6V, y, no tengo amperímetro, pero mis cálculos daban que debía consumir unos 3.6A, ya que la especificación del servo HiTec HS-55 -del cual los que yo usé son una copia berreta- dice que el motor andando pero <em>en el vacío</em> (no load) consume unos 150mA. Los 18 servos andando a la vez y con el robot apoyado, generarían un consumo considerable, al que habría que sumar el del resto de la electrónica. Evidentemente me quedé corto, ya que el primer intento con baterías de 2000mAh/2C (el &#8220;2C&#8221; indica que admiten una descarga de 2 veces su carga, en este caso 4A) fue un fracaso. Necesitaba baterías de más &#8220;polenta&#8221;, pero ojo con aumentar el tamaño y el peso, dado que SAMSA es un robot más bien debilucho. El factor que hubo que sacrificar es la carga misma, es decir el tiempo de autonomía. Finalmente terminé usando la batería que se ve en la foto, de 730mAh/20C, que admite descargas puntuales (&#8221;burst&#8221;) de hasta 40C, o sea: un disparate, y pesa nada más que 35g. Estimo que la autonomía no será de más de 15 minutos, pero hasta ahora no lo he probado. </p>
<div class="mceTemp">
<div class="wp-caption alignright" style="width: 252px"><a href="http://www.pablogindel.com/imagenes/encoder2.jpg"><img class=" " title="encoder 2" src="http://www.pablogindel.com/imagenes/encoder2p.jpg" alt="Antenas." width="242" height="322" /></a><p class="wp-caption-text">Antenas y medidor de distancia Sharp GP2D12</p></div>
<dl class="wp-caption alignnone" style="width: 267px;">
<dt class="wp-caption-dt"><a href="http://www.pablogindel.com/imagenes/encoder1.jpg"><img class=" " title="encoder 1" src="http://www.pablogindel.com/imagenes/encoder1p.jpg" alt="Motor DC y encoder óptico de las antenas" width="257" height="199" /></a></dt>
<dd class="wp-caption-dd">Motor DC y encoder óptico de las antenas.</dd>
</dl>
</div>
<p style="TEXT-ALIGN: justify"><strong>3) Sensores y periféricos</strong>: para el tiempo en que filmé la caminata, los sensores ni estaban conectados. Los dos cables del motor DC que mueve las antenas estaban colgando sueltos, el medidor de distancia estaba puesto &#8220;de adorno&#8221; y el resto de las cosas no existían. Conectar todas estas cosas dio un gran trabajo, en especial la parte de audio. Todos los periféricos -excepto el display, que para aquel entonces ya estaba perfectamente funcional aunque no tenía software que lo explotara- van conectados a un mini-circuito que está en la parte de abajo del tronco, el que muestra la foto. Ese circuito maneja las siguientes cosas:</p>
<ul style="TEXT-ALIGN: justify">
<li><strong>motor DC de las antenas</strong>, controlado por un puente en &#8220;H&#8221; a transistores, que ocupa menos espacio que un L293D.</li>
<li><strong>rotary encoder óptico</strong> de las antenas (sacado de un mouse viejo). Esto permite usar las antenas también como dispositivo de entrada, y ya tengo rutinas que explotan el recurso.</li>
<li><strong>micrófono</strong>, amplificado por un operacional diminuto que no se ve, porque está tapado por los componentes pasivos.</li>
<li style="TEXT-ALIGN: justify"><strong>acelerómetro y medidor de distancia</strong> Sharp GP2D12; éstos van directo a la Wiring, el circuito sólo se encarga de conectarlos. (El acelerómetro es para hacer trucos como que detecte cuando lo levantás, etc., por el momento no se está usando.)</li>
</ul>
<p style="TEXT-ALIGN: justify"><a href="http://www.pablogindel.com/imagenes/circuito2.jpg"></a></p>
<div class="mceTemp" style="TEXT-ALIGN: justify">
<dl class="wp-caption alignright" style="width: 272px;">
<dt class="wp-caption-dt"><a href="http://www.pablogindel.com/imagenes/circuito1.jpg"><img title="circuito 1" src="http://www.pablogindel.com/imagenes/circuito1p.jpg" alt="A escala." width="262" height="190" /></a></dt>
<dd class="wp-caption-dd">A escala.</dd>
</dl>
</div>
<div class="mceTemp" style="TEXT-ALIGN: justify">
<dl class="wp-caption alignnone" style="width: 258px;">
<dt class="wp-caption-dt"><a href="http://www.pablogindel.com/imagenes/circuito3.jpg"><img title="circuito 3" src="http://www.pablogindel.com/imagenes/circuito3p.jpg" alt="Mini-circuito." width="248" height="164" /></a></dt>
<dd class="wp-caption-dd">Mini-circuito.</dd>
</dl>
</div>
<p style="TEXT-ALIGN: justify"> </p>
<div class="mceTemp" style="TEXT-ALIGN: justify">
<div class="wp-caption alignright" style="width: 276px"><a href="http://www.pablogindel.com/imagenes/circuito4.jpg"><img title="circuito 4" src="http://www.pablogindel.com/imagenes/circuito4p.jpg" alt="Inserción en el robot." width="266" height="184" /></a><p class="wp-caption-text">Inserción en el robot.</p></div>
<dl class="wp-caption alignnone" style="width: 251px;">
<dt class="wp-caption-dt"><a href="http://www.pablogindel.com/imagenes/circuito2.jpg"><img class="   " title="circuito 2" src="http://www.pablogindel.com/imagenes/circuito2p.jpg" alt="Vista trasera." width="241" height="184" /></a></dt>
<dd class="wp-caption-dd">Vista trasera.</dd>
</dl>
</div>
<p style="TEXT-ALIGN: justify">Lo que realmente me dio trabajo acá fue el audio, tanto en el hardware como en el software. En el hardware, porque la electrónica analógica nunca fue mi fuerte, y ajustar ese circuito, a ojímetro como hago todo, fue casi imposible. Sabiendo además que el LM324 no era la mejor elección, lo hice así porque quería aprender de una vez a usar operacionales. Otro problema que tuve fue el ruido infernal que mete el Sharp GP2D12 en la línea de alimentación, el cual fue atenuado a base de sacar la alimentación de un punto lo más lejano posible al circuito de audio, y meter condensadores por todos lados a lo bestia.</p>
<p style="TEXT-ALIGN: justify">El software también aportó lo suyo, pero de eso hablaremos más en detalle cuando encare la documentación &#8220;posta&#8221; del robot. Resumiendo, el tema con los sensores es que hay que actualizar la lectura con cierta frecuencia, y el tiempo que tenemos para tareas periódicas no es demasiado, una gran parte del mismo es consumida en manejar los 18 servos. En el caso del audio, además, hay que hacer otras cosas que recayeron finalmente en el software, como filtrar el componente de corriente continua (DC), rectificar, &#8220;logaritmizar&#8221; e integrar, lo que finalmente también consume abundante tiempo, y estamos hablando sólo de trabajar con la intensidad del sonido, no sueñen con una FFT ni con reconocimiento de palabras ni nada. De más está decir que toda la gracia del proyecto es hacerlo con un sólo procesador.</p>
<div class="wp-caption alignright" style="width: 332px"><a href="http://www.pablogindel.com/imagenes/pata.jpg"><img title="pata" src="http://www.pablogindel.com/imagenes/patap.jpg" alt="Pata del robot." width="322" height="242" /></a><p class="wp-caption-text">Pata del robot.</p></div>
<p style="TEXT-ALIGN: justify">4) <strong>La &#8220;cinemática inversa&#8221;</strong> es lo que permitió hacer movimientos del tronco, dejando las patas fijas en un punto, como se ve en el segundo video. Los servos trabajan con ángulos, su posición angular es proporcional al ancho del pulso que reciben, y dentro del programa, yo puedo controlar linealmente el ancho de ese puso, y por ende manejar con exactitud -e independencia- los 18 ángulos (excepto por las limitaciones mecánicas, que hacen que para adoptar ciertas posiciones, lo tenga que &#8220;ayudar&#8221; con todas las patas haciendo fuerza a la vez). Las rutinas de caminata fueron hechas como secuencias de ángulos, experimentalmente (y me sigue resultando asombroso que pueda caminar tan rápido) pero para hacer movimientos con el tronco la cosa ya no es tan fácil. Por ejemplo, si quiero poner la punta de una pata 4cm por debajo de la altura del tronco, y mantenerla a esa altura mientras la alejo o la acerco perpendicularmente al mismo, necesariamente tengo que variar en forma continua 2 ángulos, y hacerlo de acuerdo a una fórmula matemática no evidente.</p>
<p style="TEXT-ALIGN: justify">Utilizando el teorema de Pitágoras y el teorema del Coseno, encontré la manera de calcular los ángulos necesarios para poner cada pata en unas coordenadas dadas, en cm. También me valí de unas fórmulas que encontré en internet para calcular las funciones trigonométricas inversas utilizando sólo arcotangente, que es lo que la &#8216;math&#8217; de Wiring tiene. Hice el siguiente <a title="Programa de simulación" href="http://www.pablogindel.com/applets/cinematica_inversa.html" target="_blank">programa de simulación</a> en Processing, y la parte de &#8220;offsets&#8221; para que los resultados quedaran en el cuadrante y con el signo correcto también fue experimental, metiéndole &#8220;a mano&#8221; valores como PI/2, -PI/4, etc., a ver qué pasaba.</p>
<p style="TEXT-ALIGN: justify">Una vez pronta esta rutina (que en mi programa se llama &#8220;alfabetagama&#8221;), calcular las 3 traslaciones y las 3 rotaciones del tronco fue tarea relativamente sencilla, casi todo con sumas y restas, excepto una de las rotaciones en la que usé la fórmula de la rotación en el plano, que involucra senos y cosenos. Todo esto lo voy a explicar detenidamente en la prometida documentación.</p>
<div class="mceTemp" style="TEXT-ALIGN: justify">
<div class="wp-caption alignright" style="width: 267px"><a href="http://www.pablogindel.com/imagenes/display2.jpg"><img title="display 2" src="http://www.pablogindel.com/imagenes/display2p.jpg" alt="Vista trasera del circuito controlador del display." width="257" height="189" /></a><p class="wp-caption-text">Vista trasera del circuito controlador del display.</p></div>
<dl class="wp-caption alignnone" style="width: 269px;">
<dt class="wp-caption-dt"><a href="http://www.pablogindel.com/imagenes/display1.jpg"><img title="display 1" src="http://www.pablogindel.com/imagenes/display1p.jpg" alt="Display LED matricial de 8x8 monocromático." width="259" height="177" /></a></dt>
<dd class="wp-caption-dd">Display LED matricial de 8&#215;8 monocromático.</dd>
</dl>
</div>
<p style="TEXT-ALIGN: justify"><strong>5) Display</strong>: varias personas me sugirieron que no perdiera tiempo con el display, que nadie lo iba a mirar, llegando incluso a cuestionar la presencia del mismo en el proyecto, pero a mí me gusta. Hice todo tipo de adornitos, rutinas que miden un parámetro y lo expresan como líneas o barras verticales y horizontales, como círculos, como escaleritas, como cuadrados, como puntos &#8220;aleatorio-probabilísticos&#8221;, rutinas que muestran y desplazan texto, rutinas que giran, que borran, que invierten, que mezclan, etc., y hasta le programé una versión del clásico juego de la vida de Conway.</p>
<p style="TEXT-ALIGN: justify">Por último debo aclarar que lo que se ve en los videos no forma parte de la idea central sino que son cosas programadas &#8220;ad-hoc&#8221; al momento de la filmación, con la ayuda de mi amigo Daniel Lopes, el KBZA, como una forma de mostrar más o menos las posibilidades con que cuenta SAMSA hoy en día, aunque alguna idea ya estoy sacando de todo eso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pablogindel.com/2009/08/novedades-de-samsa/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
