# Live Coding (Programación en vivo)

Uno de los aspectos más excitantes de Sonic Pi es la posibilidad de escribir y modificar código para hacer música en directo, como lo harías al tocar una guitarra. Esto significa que con algo de práctica podrás usar Sonic Pi en directo.

## Abre tu mente

Antes de entrar en detalle de cómo funciona Sonic Pi, me gustaría enseñarte que es programar en directo. No te preocupes si no entiendes mucho (o nada) de esto. Simplemente siéntate y disfruta …

## Un Bucle en Vivo

Para empezar, copia el siguiente código en un buffer vacío:

    live_loop :flibble do
      sample :bd_haus, rate: 1
      sleep 0.5
    end

Ahora, presiona el botón “Ejecutar” y escucharás una batería con un ritmo rápido. Si en cualquier momento deseas parar el sonido, sólo debes presionar el botón “Parar”. Pero no lo pares, aún… antes sigue los siguientes pasos:

1. Asegúrate que el sonido de batería sigue sonando
2. Cambia el valor “sleep” de “0.5” a algo más alto, por ejemplo “1”.
3. Presiona de nuevo el botón “Ejecutar”
4. Fíjate como ha cambiado la velocidad del bombo.
5. Por último, recuerda este momento, esta es la primera vez que has programado en tiempo real con Sonic Pi y seguro que no será la última…

Ok, eso fue fácil. Añadamos algo a la mezcla. Encima de `sample :bd_haus` añade la línea `sample :ambi_choir, rate: 0.3`. Tu código debería ser así:

    live_loop :flibble do
      sample :ambi_choir, rate: 0.3
      sample :bd_haus, rate: 1
      sleep 1
    end

Ahora vamos a jugar. Cambia valores, ¿qué pasa cuando usas valores altos, bajos o negativos? Mira lo que pasa cuando cambias el valor `rate:` por `:ambi_choir` ajústalo mínimamente (digamos a 0.29). ¿Qué pasa si pones un valor muy bajo para `sleep`? prueba a hacerlo sonar tan rápido que tu computadora se cuelgue con un error (si eso sucede, simplemente elige un valor más alto para `sleep` y presiona `Ejecutar` de nuevo).

Intenta comentar una de las líneas del `sample`, añadiendo un `#` al comienzo:

    live_loop :flibble do
      sample :ambi_choir, rate: 0.3
    #  sample :bd_haus, rate: 1
      sleep 1
    end

¿Te das cuenta como le dice al ordenador que lo ignore, y así no lo oímos? Esto se llama “comentar”. En Sonic Pi podemos usar comentarios para quitar y añadir cosas a la mezcla.

Por último, te dejo con algo divertido con lo que jugar. Toma el siguiente código y cópialo en un buffer vacío. Por el momento no intentes comprender demasiado más que darte cuenta que hay dos bucles - lo que significa que hay dos eventos al mismo tiempo - experimenta y juega. Te dejo algunas sugerencias:

- Prueba cambiando el valor en azul de `rate:` para escuchar cambios en el sample.
- Prueba cambiando los tiempos de `sleep` y presta atención a cómo ambos bucles dan vueltas a diferentes valores.
- Oberva que pasa quitando el comentario de la línea de ejemplo (quita `#`) y disfruta del sonido de la guitarra tocada al revés.
- Prueba cambiar cualquiera de los valores azules `mix:` a números entre `0` (no en la mezcla) y `1` (totalmente en la mezcla).

Recuerda que debes presionar ‘Ejecutar’ para escuchar el cambio en el próximo bucle. Si termina siendo un lío, no te preocupes - dale a ‘Parar’, borra el código del buffer y pega una nueva copia del ejemplo para volver a empezar. Cometiendo errores es como aprenderás más rápidamente.

    live_loop :guit do
      with_fx :echo, mix: 0.3, phase: 0.25 do
        sample :guit_em9, rate: 0.5
      end
    #  sample :guit_em9, rate: -0.5
      sleep 8
    end
    live_loop :boom do
      with_fx :reverb, room: 1 do
        sample :bd_boom, amp: 10, rate: 1
      end
      sleep 8
    end

Ahora, sigue tocando y experimentando hasta despertar tu curiosidad y te preguntes qué más puedes hacer. Ya estás listo para leer el resto del tutorial.

¿A qué estás esperando?