Muchos no sabemos bailar salsa o se nos hace un mundo aprender a mover los pies y cuerpo al ritmo de la música. Es usual en algunos casos pero también hay grandes excepciones. Con este primer curso aprenderás a bailar salsa desde la perspectiva de un desarrollador, obteniendo un algoritmo capaz de cumplir un patrón del paso que realizaremos para luego usarlo con actionScript. En esta ocasión mostraremos el paso básico, el primer paso que debes aprender si quieres bailar salsa lineal. Debo aclarar que no soy un experto en el baile (ver vídeo para corroborar) pero la intención es divertirnos y aprender un poco de código.
No pude hacer este tip sin la necesidad de mostrarles lo que vamos a hacer, así que grabé un vídeo donde explico el paso básico, el patrón base, los subPatrones (C, B, A), para luego continuar con el algoritmo que nos ayude a implementarlo. Por su seguridad, aleje a los niños y personas con alteraciones cardíacas antes de ver el vídeo.
Listo! como habrán 'apreciado' en el vídeo, todo está explicado, es hora de pasarlo a actionScript. Para eso, crearemos un timer que me permita definir la velocidad de los pasos, o lo que llamé el Patrón "C". Para eso implementaré una clase que extienda de Timer y nos permita controlarlo sin depender de la clase principal:
Código :
package com.ini4.salsa.utils { import com.ini4.salsa.events.SalsaEvents; import flash.events.TimerEvent; import flash.utils.Timer; public final class SalsaTimerControl extends Timer { private var $__delayS:Number; public function SalsaTimerControl(delay:Number, repeatCount:int=0) { super(delay, repeatCount); this.$__delayS = delay; this.addEventListener(TimerEvent.TIMER, onTimer, false, 0, true); } private function onTimer(e:TimerEvent = null):void{ SalsaEvents.getInstance().step = true; } override public function start() : void{ super.start(); } } }
La clase SalsaTimerControl, nos dará el control de la velocidad o ritmo que usaremos al bailar, la tengo implementada en una clase aparte para poder seguir con las siguientes lecciones o pasos en un futuro.
Ahora, lo que haremos es crear una clase SalsaEvents que nos permita poder disparar los eventos que requiramos, en este caso cuando el timer nos avise el cambio de paso, esta clase nos ayudará también en el resto del curso.
Código :
package com.ini4.salsa.events { import flash.events.Event; import flash.events.EventDispatcher; public class SalsaEvents extends EventDispatcher { private static var $__instance:SalsaEvents; public static const SHOW_STEP:String = "showStep"; private var $__step:Boolean; public function SalsaEvents(e:Enforce){ } public static function getInstance():SalsaEvents{ if($__instance==null)$__instance = new SalsaEvents(new Enforce()); return $__instance; } public function set step(b:Boolean):void{ $__step = b; dispatchEvent(new Event(SalsaEvents.SHOW_STEP)); } } } class Enforce{}
Cuando la clase SalsaTimerControl dispare un evento TimerEvent.TIMER, este avisará a la propiedad step el update y este, a su vez, disparará SalsaEvents.SHOW_STEP que será escuchado por nuestra clase principal del paso básico.
Al inicio, fue fácil hacer el paso porque me basé en if y usando un contador definía cuando lanzar el paso, muy simple pero efectivo, lo dejé en la clase para los que recién empiezan puedan tener una referencia simple.
Código :
//private static const PASS_TIME:Array = [1,2,3,5,6,7]; //private var cont:int = 0; ... //if(cont==0)p1.play(); // if(cont==1 || cont==5)p4.play(); // if(cont==2 || cont==4)p3.play(); //if(cont==3)p6.play();
Muy bien, defino mis propiedades
Código :
private static const FOOT_RIGHT:String = "footRight"; private static const FOOT_LEFT:String = "footLEFT"; private var timer:SalsaTimerControl;
En mi constructor defino el listener que estará atento a los cambios del timer y el constructor de la clase timer
Código :
SalsaEvents.getInstance().addEventListener(SalsaEvents.SHOW_STEP, foo, false, 0, true); timer = new SalsaTimerControl(500); timer.start();
Y cuando el listener sea disparado, ejecutará este método
Código :
//PATRON B var step:Boolean = ( ((timer.currentCount-1)%3)==0)?true:false; //PATRON C var foot:Boolean = ( (((timer.currentCount-1)%2)==0)?true:false); //PATRON B + PATRON C == PATRON A //adelante atras if(((step==true) && (foot== true))) p1.play(); else if(((step==true) && (foot== false))) p6.play(); //centro centro else if(((step==false) && (foot== false))) p4.play(); else if(((step==false) && (foot== true))) p3.play(); else throw new Error("me falta un 3er pie"); campo.text = (foot)?FOOT_LEFT:FOOT_RIGHT;
Para el patrón B, lo que hago es obtener el módulo de 3 segun el currentCount esto nos define el pie adelante o atras
eldervaz :
centro
centro
atrás <aquí el módulo es 0
centro
centro
Para el patrón C, es obtener true y false que son los pies moviéndose constantemente
eldervaz :
izquierda
derecha
izquierda
derecha
Y para obtener el patrón A, solo tienes que sumar ambos y comparar... tal como expliqué en el video
Código :
if(((step==true) && (foot== true))) p1.play(); //PIE IZQUIERDO else if(((step==true) && (foot== false))) p6.play(); //PIE DERECHO else if(((step==false) && (foot== false))) p4.play();//CENTRO else if(((step==false) && (foot== true))) p3.play();//CENTRO else throw new Error("me falta un 3er pie");
Y listo, el código completo está aquí
Código :
package com.ini4.salsa { import com.ini4.salsa.events.SalsaEvents; import com.ini4.salsa.utils.SalsaTimerControl; import flash.display.Sprite; import flash.events.Event; public class ClassSalsa extends Sprite { //private static const PASS_TIME:Array = [1,2,3,5,6,7]; //private var cont:int = 0; private static const FOOT_RIGHT:String = "footRight"; private static const FOOT_LEFT:String = "footLEFT"; private var timer:SalsaTimerControl; public function ClassSalsa() { super(); SalsaEvents.getInstance().addEventListener(SalsaEvents.SHOW_STEP, foo, false, 0, true); timer = new SalsaTimerControl(500); timer.start(); } private function foo(e:Event):void{ //PATRON B var step:Boolean = ( ((timer.currentCount-1)%3)==0)?true:false; //PATRON C var foot:Boolean = ( (((timer.currentCount-1)%2)==0)?true:false); //PATRON B + PATRON C == PATRON A //adelante atras if(((step==true) && (foot== true))) p1.play(); else if(((step==true) && (foot== false))) p6.play(); //centro centro else if(((step==false) && (foot== false))) p4.play(); else if(((step==false) && (foot== true))) p3.play(); else throw new Error("me falta un 3er pie"); campo.text = (foot)?FOOT_LEFT:FOOT_RIGHT; //vesion anterior simple //if(cont==0)p1.play(); // if(cont==1 || cont==5)p4.play(); // if(cont==2 || cont==4)p3.play(); //if(cont==3)p6.play(); //cont++; //if(cont>PASS_TIME.length-1)cont = 0; } } }
Entonces señores, bailar salsa no es más que una suma de cosas, pero al igual como todo, también tiene una lógica, un patrón y sobre todo... un algoritmo.
Nos vemos en la clase 2.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Otaku RzO el 11 de Diciembre de 2009
Y esto:
Código :
es ... (sin palabras)Por eparada el 11 de Diciembre de 2009
Por oxigeno el 11 de Diciembre de 2009
Por Rafeo el 11 de Diciembre de 2009
Por davidlopezgamero el 11 de Diciembre de 2009
Por JCLS el 11 de Diciembre de 2009
Por fredybg el 11 de Diciembre de 2009
Te quedo muy bien la clase
Por master_of_puppetz el 11 de Diciembre de 2009
Por Jorge el 11 de Diciembre de 2009
Por skyybluue el 11 de Diciembre de 2009
muy buena forma de aplicar AS3
jaja le agregaria esta cancion
http://www.youtube.com/watch?v=nMjqGCaaBwM
Por osine el 11 de Diciembre de 2009
Por adrian.coria el 11 de Diciembre de 2009
Por bubudrc el 11 de Diciembre de 2009
te felicito
Por Wanaya el 11 de Diciembre de 2009
Por violetisha el 11 de Diciembre de 2009
A mi esto de la salsa no se me da U.U
Por Freddie el 11 de Diciembre de 2009
Wanaya-blog :
Por Norke el 12 de Diciembre de 2009
Por Usagi el 12 de Diciembre de 2009
Por Reymond el 12 de Diciembre de 2009
Por Zguillez el 12 de Diciembre de 2009
eldervaz :
Lo esperamos con ansia
*1-2-3, 5-6-7, 1-2-3, 5-6-7
Por daz_angie el 12 de Diciembre de 2009
jajajajaja
Esto demuestra que los desarrolladores por lo menos intentan bailar
Por dannyGeek el 12 de Diciembre de 2009
Por Manolito_BCN el 12 de Diciembre de 2009
Por JaLeRu el 12 de Diciembre de 2009
Por andresmaro el 12 de Diciembre de 2009
Por Grakoo el 12 de Diciembre de 2009
Por Camuss el 12 de Diciembre de 2009
Tengo videos que lo prueban
@eldervaz: Esta cool el experimento... aunque a tu patron de baile le faltan 2 tiempos
Es un experimento super... a ver si la siguiente es de como bailar reaggeton...
Por hCanté el 13 de Diciembre de 2009
Por eldervaz el 13 de Diciembre de 2009
Ya empecé con la lógica del paso básico 2 . pronto tendrán noticias
Por Jeimmy el 13 de Diciembre de 2009
Por perros el 13 de Diciembre de 2009
Por The Fricky! el 13 de Diciembre de 2009
Por esutoraiki el 13 de Diciembre de 2009
Sobre todo, excelente tu análisis y tu artículo , pero queremos que en la proxima entrega bailes como en este video:
http://www.youtube.com/watch?v=d9lCzQ0PPAc
Por Tifa^ el 13 de Diciembre de 2009
Por XKlibur el 13 de Diciembre de 2009
Ya no tengo excusa para no aprender a bailar salsa . Ya no me bailarán, ahora yo los bailaré
Por Marcelo el 13 de Diciembre de 2009
Por Core el 14 de Diciembre de 2009
Por Zandy el 14 de Diciembre de 2009
Por Camuss el 14 de Diciembre de 2009
Pero para la salsa se utilizan los 8 tiempos (En el paso basico) que significa un compas de 4/4. Cuando se baila usualmente el conteo solo se refiere a 1 2 3 - 5 6 7 que es el que tu has usado para tu ejemplo...
Pero obvio.. donde esta el 4 y el 8?
Lo que pasa es que en la salsa.. al bailar se usa el paso 4 y 8 como pausas. Eso permite que el que baile tenga un "contrapeso" ritmico entre el moverse de atras a adelante o de lado a lado o en cualquiera de las variaciones que pueden haber de este "basico" con algunas pausas. De no ser asi se veria super mecanico moviendote sin parar.
Definición Salsa
Bueno... solo era una acotacion mas no una critica. Lo que has hecho me parece cool...
Ahora lo que pones del paso basico en 2 me parece woow...
Entender el patron de "On 2" si me parece interesante. Supongo que ahi si usaras para el ejemplo musica de fondo no?
Saludos...
Por eldervaz el 14 de Diciembre de 2009
Yo estoy explicando la salsa LINEAL!!! no me imagino aun hacerlo con la salsa CUBANA, pero ya se me ocurrirá algo...
Y la salsa líneal la puedes bailar en cualquier planeta, porque siempre son 7 tiempos y la persona que te acompañe, de saber, sabrá cada cambio o movimiento de MANO para poder cambiar de paso.
http://www.youtube.com/watch?v=0gpw4qHFoZY
Bueno yaaaa... déjalo así
Gracias a todos por sus comentarios, al parecer tuvo un impacto interesante para todos y lo mejor es que a todos nos sacó una risa
*se va a planear el paso básico 2 en algoritmo
Por Camuss el 14 de Diciembre de 2009
Pero por Dios.... "siempre son 7 tiempos" No WAY!!!!!!
Por macpc01 el 15 de Diciembre de 2009
Por jcruz el 16 de Diciembre de 2009
Por vanvanero el 17 de Diciembre de 2009
Mis repsetos elder como progrmador y por la iniciativa de llevar el arte a los ambitos de la codificación.
Por otro lado esto sirve para entrar en la mecanica de entender pasos pero siempre es bueno la interelación y el entendimiento de la cultura que es lo que pone el "feeling" al baile es el plus!.
Y camus tengo que decirte que el vinculo que pusiste sobre la "salsa" es el artículo mas desfazado que he leido en mi vida nada mas lejos a lo que puede llamrse salsa muy mal por ese wiki, si quieren saber mas busquen por el casino cubano y lo que tu llamas On2 o mejor los norteamericanos, es realmente bailar en tiempo de son.
Ayyay camus si eres programador solamente no te mentas con mi canción!
Por jegm88 el 18 de Diciembre de 2009
Por vanvanero el 19 de Diciembre de 2009
* facebook : http://www.facebook.com/group.php?gid=17343990175
* twitter : http://twitter.com/patakki
* blog : http://www.songoro-cosongo.blogspot.com/
Para que se den cuenta que son puros paradigmas que si uno es programador entonces "uno no puede bailar" en nuestra red de casineros de hecho ya existen bastantes desarrolladores, diseñadores graficos, administradores....
Por [email protected] el 26 de Enero de 2010
Por Acidbjazz el 12 de Marzo de 2010
* Acibjazz se pone de pie y aplaude
Por MEXICANA el 18 de Abril de 2010
Por yuliani rivero el 10 de Junio de 2010
Por virginia el 24 de Julio de 2010
Por curro el 05 de Agosto de 2010
Por Andres de [url=&quo el 21 de Agosto de 2010
http://squidoo.com/aprender-a-bailar-salsa
Por dante el 09 de Diciembre de 2010
Por David el 13 de Diciembre de 2010
Soy de Cali, Colombia, ahora ando por el exterior, y te digo nunca me interese por la salsa aun siendo de Cali porq me gusta mas el rock. Pero se me dio por querer aprender a bailar salsa ahora, y te digo, de todo lo q he visto, entendi mas facil con tu video, esta de pelos, como dicen en Mexico y tambien soy tecnico en computadoras y tus algoritmos estan muy bacanos man. (chidos)Estas reloco parce....jajaja Chevere!
Gracias.