# Programmation interactive (Live Coding)

Un des aspects les plus passionnants de Sonic Pi est qu’il vous permet d’écrire et de modifier du code en “live” pour faire de la musique, comme on peut le faire avec une guitare par exemple. Cela veut dire qu’avec un peu de pratique, vous pourrez jouer avec Sonic Pi sur scène et vous amuser avec.

## Libérez votre créativité

Avant que vous ne plongiez dans les détails réels du fonctionnement de Sonic Pi dans la suite de ce tutoriel, j’aimerais vous faire vivre l’expérience de à quoi ça ressemble de coder en “live”. Ne vous inquiétez pas si vous ne comprenez pas beaucoup ou rien de ceci. Essayez juste de rester assis sur votre siège et de profiter…

## Une boucle live

Commençons, copiez le code suivant dans un “buffer” libre :

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

Maintenant, appuyez sur le bouton `Run` et vous entendrez un joli battement de grosse caisse. Si vous souhaitez arrêter le son à un moment quelconque, pressez simplement le bouton `Stop`. Mais pas tout de suite… suivez ces instructions plutôt :

1. Assurez-vous que le son de la grosse caisse est encore présent
2. Changez la valeur de `sleep` de `0.5` à quelque chose de plus élevé comme `1`.
3. Pressez à nouveau le bouton `Run`
4. Remarquez le changement de vitesse de la batterie.
5. Finalement, rappelez-vous de cet instant, c’est la première fois que vous avez codé en “live” avec Sonic Pi et ce n’est certainement pas la dernière…

Ok, c’était assez simple. Ajoutons quelque chose au mixage. Au dessus de `sample :bd_haus` ajoutez la ligne `sample :ambi_choir, rate: 0.3`. Votre code devrait ressembler à ceci :

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

Maintenant, amusez-vous à modifier le code. Changez la valeur du `rate` - Que se passe-t-il lorsque vous utilisez des grandes valeurs , des petites ou même des négatives ? Regardez ce qui se passe quand vous changez légèrement la valeur de `rate:` pour l’échantillon `:ambi_choir` (disons 0.29). Que se passe-t-il lorsque vous choisissez une valeur vraiment petite de `sleep` ? Regardez si vous arrivez à le faire aller tellement vite que votre ordinateur s’arrêtera avec une erreur parce qu’il ne peut plus continuer comme cela (si cela arrive, choisissez juste une durée `sleep` plus grande et pressez `Run` à nouveau).

Essayez de commenter une des lignes `sample` en ajoutant un `#` au début :

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

Remarquez comment cela indique à l’ordinateur de l’ignorer, ainsi nous ne l’entendons pas. On appelle ça un commentaire. Dans Sonic Pi, nous pouvons utilisez des commentaires pour enlever ou ajouter des choses au mixage.

Finalement, je vous laisse avec quelque chose de sympa à jouer. Prenez le code ci-dessous et copiez-le dans un autre “buffer”. Maintenant n’essayez pas trop de le comprendre, remarquez juste qu’il y a deux boucles - ainsi deux choses marchent en même temps. Maintenant, faites ce que vous faites le mieux : expérimentez et jouez. Voici quelques suggestions :

- Essayez de modifier les valeurs en bleu du `rate:` pour entendre comme le son de l’échantillon change.
- Essayez de changer les durées de `sleep` et découvrez que les deux boucles peuvent tourner à différentes cadences.
- Essayez de décommenter la ligne “sample” (enlevez le `#`) et appréciez le son de la guitare joué à l’envers.
- Essayez de changer une des valeurs en bleu de `mix:` avec des nombres entre `0` (pas dans le mixage) et `1` (entièrement dans le mixage).

Rappelez-vous de presser `Run` et vous entendrez le changement la fois suivante où la boucle tournera. Si vous êtes dans le pétrin, ne vous inquiétez pas : pressez `Stop`, effacez le code dans le “buffer”, collez une copie originale et vous serez prêt à improviser à nouveau. C’est en faisant des fautes que vous apprendrez le plus vite…

    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

Maintenant, continuez à jouer et à expérimenter jusqu’à ce que votre curiosité s’avive réellement et vous commencerez à vous demander ce que vous pouvez faire d’autre. Vous êtes maintenant prêt à lire le reste du tutoriel.

Alors, qu’attendez-vous…