# Ζωντανή κωδικοποίηση

Μια από τις πιο συναρπαστικές πτυχές του Sonic Pi είναι ότι σας επιτρέπει να γράφετε και να τροποποιείτε τον κώδικα ζωντανά για να παίξετε μουσική, ακριβώς όπως μπορείτε να παίξετε ζωντανά μια κιθάρα. Αυτό σημαίνει ότι με κάποια εξάσκηση μπορείτε να πάρετε Sonic Pi στη σκηνή και να κάνετε μια συναυλία με αυτό.

## Ελευθερώστε το μυαλό σας

Πριν πάμε στις πραγματικές λεπτομέρειες για το πώς λειτουργεί το Sonic Pi στο υπόλοιπο αυτών των μαθημάτων, θα ήθελα να σας δώσω μια εμπειρία για το πώς είναι να γράφετε κώδικα ζωντανά. Μην ανησυχείτε αν δεν καταλαβαίνετε πολλά (ή κάποια) από αυτά. Απλά προσπαθήστε να κρατηθείτε στις θέσεις σας και να απολαύσετε …

## Ένας ζωντανός βρόχος

Ας ξεκινήσουμε, αντιγράψτε τον παρακάτω κώδικα σε ένα κενό buffer πιο πάνω:

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

Τώρα, πατήστε το κουμπί “Εκτέλεση” και θα ακούσετε ένα ωραίο μπάσο με γρήγορο ρυθμό να παίζει. Εάν οποιαδήποτε στιγμή θέλετε να σταματήσετε τον ήχο απλά πατήστε το πλήκτρο `Διακοπή`. Αλλά μην το χτυπήσετε ακόμα … Αντ ‘αυτού, ακολουθήστε τα παρακάτω βήματα:

1. Βεβαιωθείτε ότι ο ήχος των μπάσων είναι ακόμα σε λειτουργία
2. Αλλάξτε την τιμή `sleep 'από το` 0.5`σε κάτι υψηλότερο όπως` 1`.
3. Πατήστε το κουμπί “Εκτέλεση” ξανά
4. Παρατηρήστε πως άλλαξε η ταχύτητα του τυμπάνου.
5. Τέλος, θυμηθείτε αυτή τη στιγμή, αυτή είναι η πρώτη φορά που γράφετε κώδικα ζωντανά με το Sonic Pi και είναι απίθανο να είναι η τελευταία σας …

Εντάξει, αυτό ήταν αρκετά απλό. Ας προσθέσουμε κάτι άλλο στο μίγμα. Πάνω από το `sample :bd_haus` προσθέστε τη γραμμή `sample :ambi_choir, rate: 0.3`. Ο κωδικός σας θα πρέπει να έχει την εξής μορφή:

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

Τώρα παίξτε. Αλλάξτε τους ρυθμούς - τι συμβαίνει όταν χρησιμοποιείτε υψηλές τιμές ή μικρές τιμές ή αρνητικές τιμές; Δείτε τι συμβαίνει όταν αλλάζετε ελαφρά την τιμή `rate:` για το δείγμα `: ambi_choir` (π.χ.`0.29`). Τι συμβαίνει αν επιλέξετε μια πολύ μικρή τιμή `sleep`; Δείτε αν μπορείτε να πάτε τόσο γρήγορα που ο υπολογιστής σας θα σταματήσει με ένα σφάλμα επειδή δεν μπορεί να τα βγάλει πέρα (αν συμβεί αυτό, απλά επιλέξτε μεγαλύτερο χρόνο `sleep` και χτυπήστε ξανά το`Εκτέλεση`).

Δοκιμάστε να σχολιάσετε μία από τις γραμμές `sample 'προσθέτοντας ένα` #` στην αρχή:

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

Παρατηρήστε πώς λέει στον υπολογιστή να το αγνοήσει, έτσι δεν το ακούμε. Αυτό ονομάζεται σχόλιο. Στο Sonic Pi μπορούμε να χρησιμοποιήσουμε σχόλια για να καταργήσουμε και να προσθέσουμε πράγματα στην μίξη.

Τέλος, επιτρέψτε μου να σας αφήσω κάτι διασκεδαστικό να παίξει. Πάρτε τον παρακάτω κώδικα και αντιγράψτε τον σε ένα εφεδρικό buffer. Τώρα, μην προσπαθήστε να το καταλάβετε πάρα πολύ άλλο από το να δείτε ότι υπάρχουν δύο βρόχοι - έτσι τα δύο πράγματα θα πάνε γύρω από την ίδια στιγμή. Τώρα, κάντε ό, τι κάνετε καλύτερα - πειραματιστείτε και παίξτε. Ακολουθούν μερικές προτάσεις:

- Δοκιμάστε να αλλάξετε τις μπλε τιμές `rate:` για να ακούσετε την αλλαγή του δείγματος ήχου.
- Δοκιμάστε να αλλάξετε τους χρόνους `sleep` και ακούστε ότι και οι δύο βρόχοι μπορούν να περιστρέφονται με διαφορετικούς ρυθμούς.
- Δοκιμάστε να αφαιρέσετε την δίεση στην γραμμή δείγματος και απολαύστε τον ήχο της κιθάρας που παίζει ανάποδα.
- Προσπαθήστε να αλλάξετε οποιαδήποτε από τις μπλε τιμές `mix:` σε αριθμούς μεταξύ του `0` (όχι στην μίξη) και του `1` (πλήρως στην μίξη).

Θυμηθείτε να πατήσετε `Εκτέλεση 'και θα ακούσετε την αλλαγή την επόμενη φορά που ο βρόχος περιστρέφεται. Αν καταλήξετε σε κάτι που δεν σας αρέσει, μην ανησυχείτε - πατήστε` Διακοπή`, διαγράψτε τον κώδικα στο buffer και επικολλήστε ένα νέο αντίγραφο και είστε έτοιμοι να αυτοσχεδιάσετε ξανά. Κάνοντας λάθη είναι το πώς θα μάθετε το ταχύτερο…

    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

Τώρα, συνεχίστε να παίζετε και να πειραματίζετε έως ότου η περιέργειά σας για το πώς όλα αυτά πραγματικά δουλεύουν πάρει μπρος και αρχίζετε να αναρωτιέστε τι άλλο μπορείτε να κάνετε με αυτό. Είστε πλέον έτοιμοι να διαβάσετε το υπόλοιπο των μαθημάτων.

Λοιπόν, τι περιμένετε…