Μουσική & Προγραμματισμός με Η/Υ

Κάνουμε μουσική γράφοντας κώδικα - Μαθαίνουμε προγραμματισμό κάνοντας μουσική.

Ετοιμάζοντας τη νέα γενιά δημιουργών

Το πρόγραμμα Μουσική και Προγραμματισμός έχει σαν στόχο να αναδείξει τις απεριόριστες δυνατότητες του υπολογιστή ως εργαλείου δημιουργίας, έκφρασης, επικοινωνίας και ανακάλυψης. Είναι σχεδιασμένο να επιτύχει αυτό το στόχο χρησιμοποιώντας τον προγραμματισμό ως μέσο για την σύνθεση μουσικής και ήχου. Η καινοτομία αυτής της προσέγγισης έγκειται στο γεγονός ότι οι μαθητές καλούνται να χειριστούν τον Η/Υ σαν εργαλείο για την επίτευξη των δικών τους αναζητήσεων και ενδιαφερόντων.

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

Με την ορθή οργάνωση των μαθημάτων καταφέρνουμε σταδιακά να διδάξουμε τους μαθητές ένα σύνολο από έννοιες όπως είναι:

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

Ας δούμε ορισμένους από τους τρόπους με τους οποίους αποκτούν νόημα οι έννοιες της ακολουθίας, της επανάληψης και της επιλογής.

Κατασκευάζοντας μελωδίες

Το περιβάλλον προγραμματισμού Sonic Pi ενθαρρύνει το μαθητή να γράψει ακολουθίες εντολών. Τα πιο απλά προγράμματα συνίστανται από τη χρήση των εντολών PLAY και SLEEP για την δημιουργία απλών μελωδιών:

play 75
sleep 1
play 70
sleep 0.5
play 82

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

Ρυθμικές επαναλήψεις

Η επανάληψη στο Sonic Pi μπορεί εύκολα να αναπαρασταθεί:

5.times do
  sample :bd_haus
  sleep 1
end

3.times do
  sample :drum_cymbal
  sleep 0.5
end

Στο παραπάνω παράδειγμα ο κώδικας που βρίσκεται μεταξύ των do και end επαναλαμβάνεται 5 φορές στη μια περίπτωση και 3 φορές στην δεύτερη. Στο πρώτο μπλοκ παίζουμε το δείγμα :bd_haus και περιμένουμε 1 δευτερόλεπτο επαναληπτικά πέντε φορές. Αντίστοιχα, στο δεύτερο μπλοκ παίζουμε το δείγμα :drum_cymbal και περιμένουμε μισό δευτερόλεπτο επαναληπτικά τρεις φορές.

Επιλέγοντας ήχους

Η επιλογή μέσω δομών ελέγχου αναπαρίσταται εύκολα στο Sonic Pi. Στο ακόλουθο παράδειγμα επιστρατεύουμε την τυχαιότητα μέσω της οποίας επιλέγεται κατ’ επανάληψη ένας ήχος κουδούνας ή ένας ήχος κύμβαλου με πιθανότητα εναλλαγής ένα προς δυο.

loop do
  if one_in 2
    sample :drum_cowbell
  else
    sample :drum_snare_hard
  end
  sleep 0.125
end

Στο παραπάνω παράδειγμα χρησιμοποιούμε την δήλωση loop μέσα στην οποία καλείται επαναληπτικά η εντολή one_in με την παράμετρο 2. Η εντολή επιστρέφει true η false με πιθανότητα 50%. Χρησιμοποιούμε αυτό το αποτέλεσμα για να επιλέξουμε εναλλακτικά ένα εκ των δυο ηχητικών δειγμάτων. Τέλος περιμένουμε 0.125 δευτερόλεπτα πριν την επόμενη επανάληψη.

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

Εισαγωγή στον Ζωντανό Προγραμματισμό

Ο Ζωντανός Προγραμματισμός (Live coding) αναφέρεται σε μια μέθοδο προγραμματισμού που επιτρέπει την συγγραφή κώδικα και την τροποποίηση ενός προγράμματος κατά το χρόνο εκτέλεσής του (βλ. Wikipedia article on Live Coding).

Χρησιμοποιείται για την δημιουργία εικόνας και ήχου στο πλαίσιο ζωντανών παραστάσεων σας μέσο αυτοσχεδιασμού και επικοινωνίας μεταξύ των συμμετεχόντων ερμηνευτών. Έξω από τις αναπαραστατικές τέχνες, ο Ζωντανός Προγραμματισμός αποτελεί αποτελεσματικό εργαλείο στην διδακτική του προγραμματισμού The effectiveness of live-coding to teach introductory programming .

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

live_loop :beats do
  play chord :C4, :Major
  sleep 0.5
end

Η δήλωση live_loop μας επιτρέπει να τροποποιήσουμε τον κώδικα που περιέχει μεταξύ των do και end χωρίς να διακόψουμε τη ροή του προγράμματος. Με αυτό τον τρόπο ο μαθητής είναι σε θέση να δώσει μια “μουσική παράσταση” σε πραγματικό χρόνο, χρησιμοποιώντας τις γνώσεις του και τον υπολογιστή σας μουσικό όργανο.

Ένα σημαντικό στοιχείο της δήλωσης live_loop είναι ότι μας εισάγει στην έννοια του συγχρονισμού. Αυτό που στη μουσική ονομάζουμε πολυφωνία, όπου πολλοί ήχοι ακούγονται μαζί, συνήθως σε αρμονία και με βάση ορισμένους κανόνες, στην Επιστήμη των Υπολογιστών ονομάζεται συγχρονισμός. Το Sonic Pi μας επιτρέπει να προγραμματίσουμε με αυτό τον τρόπο πολύ εύκολα: χρησιμοποιώντας περισσότερες από μια δηλώσεις live_loop.

live_loop :melody do
  use_synth :fm
  with_fx :echo, phase: 0.5, do
    play (scale :A4, :Minor).tick
  end
  sleep 0.5
end

live_loop :bass do
  use_synth :tb303
  with_fx :distortion do
    play [:C2, :F2, :G2, :B2].tick
  end
  sleep 1
end

Οργάνωση μαθημάτων

Το πρόγραμμά Μουσική και Προγραμματισμός παρέχεται ως εβδομαδιαία δραστηριότητα συνολικής διάρκειας 8 ή 16 διδακτικών ωρών. Απευθύνεται στις τάξεις Ε’ και ΣΤ’ Δημοτικού, και στις τάξεις Α’, Β’ και Γ’ Γυμνασίου.

Παραθέτουμε ενδεικτικά το δομή των μαθημάτων:

Μιλήστε μαζί μας για να φτιάξουμε μια Ροκ μπάντα στο σχολείο σας!

Δεν υπάρχουν λάθη, παρά μόνο ευκαιρίες!