Page 59 - Linux Inside τ. 8

Basic HTML Version

Linux Inside
59
ται μηνύματα. Το μήνυμα «new» είναι η εντολή δημιουργίας
της μεταβλητής syn, που η μορφή της θα είναι μία κλάση
SynthDef. Στη συνέχεια δίνουμε τις παραμέτρους στη μετα-
βλητή syn, που είναι τύπου SynthDef. Για να γίνει πιο εύκολα
κατανοητό, αναφέρουμε παρακάτω ένα παράδειγμα που
ισχύει σε άλλες γλώσσες.
(
αντικείμενο.μήνυμα(παράμετρος1, παράμετρος2, …
παράμετρος8);
)
Στο παράδειγμα με το SynthDef το SynthDef είναι η κλάση,
το new είναι το μήνυμα που «πάει» στην κλάση και οι παράμε-
τροι είναι αυτές που βρίσκονται μεταξύ των αγκυλών {...}. Οι
παράμετροι «λένε» στο SynthDef τι ήχο να παίξει. Στη γλώσσα
SC οτιδήποτε υπάρχει μεταξύ των αγκυλών είναι μία συνάρ-
τηση. Το Out είναι ένα Ugen (Unit Generator). Το Unit
Generator είναι μία κλάση που έχει σκοπό να δημιουργεί ή και
να διαχειρίζεται είτε ήχους είτε εντολές ελέγχου. Ένα ή πε-
ρισσότερα Ugens καθορίζουν ένα SynthDef. To Out, λοιπόν,
στέλνει ένα σήμα στο δίαυλο ήχου, που στη συγκεκριμένη πε-
ρίπτωση στέλνει τον ήχο στο αριστερό κανάλι.
Η εντολή .ar είναι ένα μήνυμα δημιουργίας ενός Ugen που
θα έχει την ταχύτητα ar (Audio Rate) και είναι κάτι συνηθισμέ-
νο όταν δημιουργούνται Ugens. Η πρώτη παράμετρος μετά
το .ar είναι το 0, που σημαίνει αριστερό κανάλι. Αν είχε δοθεί
η παράμετρος 1, τότε θα αναφερόμαστε στο δεξί κανάλι.
Η επόμενη εντολή αναφέρεται στον ήχο που θα παραχθεί.
SinOsc.ar(440) είναι η εντολή που παράγει έναν ημιτονικό ήχο
συχνότητας 440Hz. Η αγκύλη και οι παρενθέσεις κλείνουν τις
προηγούμενες εντολές. Η επόμενη εντολή είναι να φορτωθεί
το SynthDef στο διακομιστή s. Η τελευταία εντολή είναι η δη-
μιουργία ενός συνθεσάιζερ με τις παραμέτρους που έχουν
καθορισθεί στο SynthDef. Έστω ότι θέλουμε να παραγάγουμε
έναν ήχο άλλης συχνότητας, ας πούμε 660Hz. Τότε εκτελού-
με τον ακόλουθο κώδικα:
(
var sdef;
sdef = SynthDef.new("example1", {
Out.ar(0, SinOsc.ar(660));
});
sdef.play;
)
Όπως βλέπουμε, δημιουργούμε μία νέα μεταβλητή, την
sdef, με τις κατάλληλες παραμέτρους. Η εντολή sdef.play δί-
νει εντολή στο διακομιστή για την αναπαραγωγή του ήχου.
Ένας τέτοιος τρόπος, όμως, δεν είναι αποτελεσματικός,
δηλαδή το να δημιουργούμε ένα νέο SynthDef για κάθε νότα
που θέλουμε να παίξει το συνθεσάιζερ, οπότε θα δημιουργή-
σουμε μία δική μας παράμετρο που θα είναι η συχνότητα
αναπαραγωγής. Έτσι, έχουμε τον παρακάτω κώδικα:
(
var syn, sound;
syn = SynthDef.new("example1", { arg freq;
Out.ar(0, SinOsc.ar(freq));
});
syn.load(s);
sound = Synth.new("example1", [\freq, 440]);
)
Η μεταβλητή freq είναι μία ειδική μεταβλητή που παίζει το
ρόλο της παραμέτρου (argument). Έτσι, η εντολή SinOsc δεν
έχει σταθερή παράμετρο, όπως στα προηγούμενα παραδείγ-
ματα, αλλά η συχνότητα ορίζεται από την παράμετρο freq. Συ-
νεπώς, στην τελευταία εντολή ορίζουμε τη συχνότητα στο
440. Στην πράξη, για να σταλούν παράμετροι στο διακομιστή
ήχου, χρησιμοποιείται ειδικό πρωτόκολλο, όμως εδώ βλέπου-
με τη σημασία του να ορίζονται τα πράγματα από πριν. Έτσι,
για να αλλάξουμε συχνότητα, το μόνο που χρειαζόμαστε είναι
η εντολή:
sound = Synth.new("example1", [\freq, 660]);
Με αυτό τον τρόπο, δηλαδή τον ορισμό των συνθεσάιζερ
μέσω της SynthDef, ο διακομιστής γνωρίζει τι θα κάνει και στη
συνέχεια στέλνονται μόνο οι αλλαγές στη συχνότητα που αυ-
ξάνει την ταχύτητα εκτέλεσης. Μέχρι εδώ είδαμε τα πάρα πο-
λύ βασικά για να γίνει αντιληπτή η λειτουργία του SuperCol-
lider στη δημιουργία απλού ήχου.
Ugen (Unit Generators)
To SuperCollider έχει περισσότερα από 200 Unit Genera-
tors, που χωρίζονται σε διάφορες κατηγορίες.
• Πηγές: Μη περιοδικές και περιοδικές
• Φίλτρα
• Παραμορφωτές
• Panning (τοποθέτηση σε αριστερό ή και δεξί κανάλι)
• Reverb (βάθος)
• Γραμμές καθυστέρησης και buffers
• Granular Synthesis
• Ελέγχου
• Spectral
Ugen γεννήτριες χαμηλής συχνότητας χωρίς περιορι-
σμό εύρους
Αυτές είναι οι LFPar, LFCub, LFTri, LFSaw, LFPulse, VarSaw
και SyncSaw. Όλες αυτές οι γεννήτριες παράγουν κυματο-
μορφές χαμηλής συχνότητας με συγκεκριμένο σχήμα. Οι
γεννήτριες που περιέχουν τη λέξη Saw, παράγουν πριονωτές
κυματομορφές, ενώ οι Pulse παράγουν κυματομορφές παλ-
Linux Labs - Μουσική
Οι γεννήτριες Ugen χωρίζονται σε διάφορες
κατηγορίες σύμφωνα με τη λειτουργικότητά
τους. Κάποιες από αυτές παράγουν ακουστικές
κυματομορφές και μπορεί να είναι
περιορισμένου εύρους ή μη.
Το Jardin de Dystopia (Ο κήπος της Δυστοπίας) είναι ένα
καλλιτεχνικό project, στο οποίο ο ήχος έχει παραχθεί με τη
χρήση SuperCollider. Δείτε: http://vimeo.com/27131373.
2