Page 13 - Linux Inside τ. 8 preview

Basic HTML Version

O
πως είδαμε στο τεύχος 6, το SuperCollider είναι ένα
προηγμένο πρόγραμμα σύνθεσης ήχων. Με αυτό μπο-
ρούν να δημιουργηθούν ήχοι και ολόκληρα μουσικά
κομμάτια. Η δημιουργικότητα κάθε χρήστη απελευθερώνεται
με τη βοήθεια της γλώσσας προγραμματισμού sclang.
Σε αυτό το άρθρο θα δούμε κάποιες βασικές εντολές της
sclang για τη δημιουργία ήχων. Τα παραδείγματα μπορούν να
επεκταθούν για την καλύτερη κατανόηση και εξοικείωση με τη
γλώσσα. Υπάρχουν πολλά παραδείγματα στο Διαδίκτυο που
μπορούν να μας βοηθήσουν. Με τη χρήση επεκτάσεων (plug-
ins) έχει εμπλουτισθεί από πολλούς χρήστες η γλώσσα sclang,
που είναι η γλώσσα προγραμματισμού του SuperCollider.
Η γλώσσα SC
Η γλώσσα SC είναι μία διερμηνευόμενη (interpreted) γλώσ-
σα προγραμματισμού, δηλαδή «τρέχει» εκείνη τη στιγμή και
εκτελεί τις εντολές, σε αντίθεση με άλλες γλώσσες που περ-
νούν τον κώδικα από το μεταγλωττιστή (compiler) μία φορά
και στη συνέχεια τον εκτελούν συνολικά και όχι εντολή-εντο-
λή. Η γλώσσα είναι ανικειμενοστραφής, δηλαδή δημιουργού-
με κλάσεις και στη συνέχεια μεθόδους, που μας επιτρέπουν
να κάνουμε όλες τις λειτουργίες που αφορούν στην κλάση.
Υπάρχουν μεταβλητές, όπως και στις άλλες γλώσσες, που
μπορούν να χρησιμοποιηθούν για την αλλαγή παραμέτρων σε
πραγματικό χρόνο ανάλογα με τη ροή του κώδικα. Για παρά-
δειγμα, μπορούμε να εμφανίσουμε ένα κείμενο στο παράθυ-
ρο διεπαφής με το SuperCollider.
(
"hello world".postln;
)
Με αυτή την εντολή μπορούμε να εμφανίσουμε κάποιο μή-
νυμα στο παράθυρο. Παρατηρούμε ότι στη γλώσσα αυτή τα
τμήματα ορίζονται μεταξύ δύο παρενθέσεων (...) αντί αγκυ-
λών {...}, όπως έχουμε στη γλώσσα C.
Το SuperCollider καταλαβαίνει διάφορες συντάξεις για τα
αντικείμενα, αλλά εμείς θα παραμείνουμε στη σύνταξη που
χρησιμοποιείται και σε άλλες γλώσσες, δηλαδή:
(
αντικείμενο.μήνυμα;
)
Στο προηγούμενο παράδειγμα είχαμε τη σύνταξη «μήνυ-
μα.αντικείμενο», δηλαδή το μήνυμα ήταν «hello world» και το
αντικείμενο ήταν το postln. Το postln φροντίζει να εμφανίζει
το μήνυμα που του αποστέλλεται στην οθόνη. Κάθε εντολή
τελειώνει με το «;», όπως και σε άλλες γλώσσες.
Το αντικείμενο SynthDef
Στο επόμενο παράδειγμα θα δούμε πώς γίνεται η δημιουρ-
γία ενός ήχου:
(
var syn, sound;
syn = SynthDef.new("example1", {
Out.ar(0, SinOsc.ar(440));
});
syn.load(s);
sound = Synth.new("example1");
)
Θα δούμε αναλυτικά τις εντολές για την καλύτερη κατανόη-
ση του κώδικα. Δημιουργούνται δύο μεταβλητές, οι syn και
sound. Στην επόμενη γραμμή, για να το πούμε με απλά ελλη-
νικά, η εντολή σημαίνει: «Θέλω να δημιουργήσω μία αρχιτε-
κτονική συνθετητή με το όνομα example1 και να την αποθη-
κεύσω στη μεταβλητή syn». Η εντολή SynthDef, όπως φαίνε-
ται και από το όνομά της, ορίζει ένα συνθεσάιζερ.
Το SuperCollider, λόγω του ότι είναι δύο προγράμματα,
ένας διακομιστής ήχου και ένα πρόγραμμα–πελάτης, που ζη-
τάει από το διακομιστή να κάνει διάφορες εργασίες, λειτουρ-
γεί κάπως διαφορετικά απ’ ό,τι έχουμε συνηθίσει. Για λόγους
ταχύτητας, ο διακομιστής θέλει να ξέρει μόνο όσα του χρειά-
ζονται. Έτσι, η εντολή SynthDef ορίζει ένα συνθεσάιζερ με τις
παραμέτρους του, χωρίς όμως να παράγει η ίδια κάποιον
ήχο. Ουσιαστικά, η εντολή SynthDef είναι μία κλάση που δέχε-
Linux Inside
58
To 2011 κυκλοφόρησε ένα βιβλίο (MIT Press) ειδικά για το
SuperCollider. Δείτε: http://supercolliderbook.net.
1
Του Κώστα Τσακάλογλου <tsakf@tsakf.org>
Linux Labs - Μουσική
Σε παλαιότερο άρθρο είχαμε παρουσιάσει το
Supercollider. Σε αυτό το lab θα δούμε πώς
μπορούμε να ξεκινήσουμε την παραγωγή ήχων
χρησιμοποιώντας την εκπληκτική γλώσσα
προγραμματισμού ήχων sclang.
Εργαλεία:
SuperCollider
Δυσκολία:
URL:
http://supercollider.sf.net/
Τεκμηρίωση
Supercollider: Tα πρώτα βήματα
Ο Κώστας γράφει προγράμματα και Web εφαρμογές, ενώ στον ελεύθερο χρόνο του ασχολείται με τη δημιουργία μουσικής.