CONNOR HARRIS: Γεια σου.
Είμαι Κόνορ Harris.
Είμαι CA CS50 στο Χάρβαρντ.
STEPHEN KREWSON: Είμαι Stephen Krewson.
Είμαι TF για CS50 στο Yale.
CONNOR Harris: Και θα πάμε να μιλήσουμε για ορισμένες τεχνολογίες που μπορεί να
θέλετε να χρησιμοποιήσετε, αν σας ενδιαφέρει για να κάνει έναν τελικό σχέδιο ή πραγματικά
τίποτα με τη μουσική.
Εμείς πάμε για να συγκεντρώσουμε την προσοχή για πρώτη φορά γλώσσα προγραμματισμού που ονομάζεται Haskell.
Είναι μια λειτουργική γλώσσα, έτσι ώστε το παράδειγμα
είναι πολύ διαφορετικό από το C ή PHP ή άλλες προστακτικές γλώσσες
ότι έχετε χρησιμοποιήσει ήδη, και ιδιαίτερα σε μια βιβλιοθήκη γραμμένο σε Haskell
που ονομάζεται Euterpea, η οποία μπορεί να βοηθήσει τους ανθρώπους με λειτουργικά γράφω μουσική,
βασικά.
Και Stephen θα σας καθοδηγήσει μέσα από ένα μεγάλο παράδειγμα γι 'αυτό.
>> Μετά από αυτό, εγώ θα σας παρουσιάσουμε κάτι που ονομάζεται LillyPond, η οποία
είναι μια τεχνολογία για την στοιχειοθεσία μουσική.
Είναι περίπου όπως το LaTeX για τη μουσική αν κάποιος από εσάς
έχουν χρησιμοποιήσει LaTeX για μαθήματα μαθηματικών ή άλλες κατηγορίες σύνολο P ή ό, τι έχετε.
Και γι 'αυτό θα σας δώσω, και πάλι, μερικά απλά παραδείγματα που
και να σας δείξουμε τη γενική κατεύθυνση κάποιων καλύτερα τους πόρους.
>> STEPHEN KREWSON: Σε Επιπλέον, έχουμε στη σκέψη μας
θα ήταν δροσερό για να συσταθεί ένα μικρό κομμάτι της συμβουλές
προς έναν αγωγό μεταξύ Euterpea δημιουργούνται αρχεία MIDI
σε LillyPond, έτσι παρέχουμε μερικές οδηγίες για τα σενάρια
για να γίνει αυτό που είναι παρέχονται με LillyPond
ακριβώς για να κρατήσει ανοικτή πηγή και να πάρετε μια αγωγός πηγαίνει.
CONNOR Harris: Και πάλι, θα πρέπει να τονίσουμε,
Αυτές οι δύο τεχνολογίες, θα Δεν χρειάζεται να τα χρησιμοποιούν από κοινού.
Δεν είστε σχεδιαστεί για να λειτουργεί μαζί, αν και το κάνουν πολύ καλά.
>> STEPHEN KREWSON: Δεξιά.
Και εντελώς δωρεάν.
CONNOR HARRIS: Λοιπόν αναγνωρίσεις, απλά διαβάστε αυτό.
STEPHEN KREWSON: δεόντως υπόψη.
Χάρη σε αυτά τα παιδιά.
Αυτό εγώ θα σταθώ σε ένα μόνο για μια στιγμή.
Η διαδικασία εγκατάστασης είναι λίγο δύσκολο.
Έχουμε μια μένα διαβάσει για το GitHub ότι μπορείτε να ρίξετε μια ματιά στο.
Απλά στείλτε μου αν έχετε οποιεσδήποτε ερωτήσεις.
Αλλά θα τρέξει αυτή με την παραδοχή ότι αυτό λειτουργεί για όλους.
CONNOR Harris: Και αν δεν μπορείτε LillyPond πάρει να εργαστεί, δεν είναι μεγάλη υπόθεση.
Δεν υπάρχει καμία ζωντανή συλλογή που θα συμμετέχουν, τουλάχιστον στο τέλος μου.
STEPHEN KREWSON: Haskell και LillyPond θα πρέπει να έχουν και οι δύο εγκαταστάτες.
Euterpea κατεβαίνει ως πακέτο, ούτω καθεξής και ούτω καθεξής.
Έτσι μιλάμε για τη μουσική του υπολογιστή.
Και αυτό είναι μόνο ένα πολύ θέα 50.000 ποδιών.
Υπάρχουν μερικές διαφορετικές πτυχές του.
Και αυτό είναι τραχύ και είναι πρόκειται να επισκιάζει κάποιες λεπτομέρειες.
Αλλά θα μπορούσαμε να σκεφτούμε κάτι όπως αλγοριθμική σύνθεση,
χρησιμοποιώντας αλγόριθμους, χρησιμοποιώντας κώδικα, για τη δημιουργία
κάποιο είδος of-- ίσως ένα αυτο-ομοιότητας ακολουθία των σημειώσεων, ή ίσως σημειώσεις
κάτω από κάποιο εμπόδιο.
Και τότε εκείνοι θα μπορούσε να είναι εκτελούνται ή να ερμηνευθούν
με αναλογικά όργανα, ή κάτι τέτοιο.
Όμως, η σύνθεση ήταν γίνεται αλγοριθμικά.
>> Αλλά βέβαια, ίσως η περιοχή της μουσική του υπολογιστή ή την ψηφιακή μουσική
είμαστε πιο εξοικειωμένοι με την ψηφιακή είναι σύνθεση ήχου ή ψηφιακή δειγματοληψία
και ψηφιακή εγγραφή.
Μια παρτίδα των ψηφιακών μέσων είναι γίνεται μέσω της ψηφιακής δειγματοληψίας.
Στην πραγματικότητα, θα πρέπει να χρησιμοποιούν μία από αυτές η μορφή του ήχου βιβλιοθήκη γραμματοσειρά αργότερα.
>> Αλλά υπάρχει και κάτι που ονομάζεται ψηφιακή σύνθεση που βγήκαν
στα τέλη της δεκαετίας του '70 και στη δεκαετία του '80 με Yamaha και John Chowning στο Πανεπιστήμιο του Στάνφορντ
κάνει σύνθεση FM ή Συχνότητα σύνθεση διαμόρφωσης,
όπου είχατε ένα φορέα σήμα και ένα σήμα διαμόρφωσης
τόσο στο φάσμα ήχου.
Αλλά αυτό που επικεντρώθηκε στην σήμερα είναι κάτι που ονομάζεται MIDI,
και φυσικά, την αλγοριθμική σύνθεση.
>> Εμείς δεν πρόκειται να κάνει μέσα, αλλά είμαστε αντί πρόκειται να κάνει κάποια μουσική,
και, στη συνέχεια, ότι θα πάρει ερμηνεύεται από ορισμένα μέσα τα οποία
είναι σύμφωνο προς το General MIDI πρότυπο.
Έτσι τι είναι MIDI;
Είμαι δεν πρόκειται να πάρει πάρα πολύ βαθιά σε αυτό, αλλά MIDI είναι πρωτόκολλο μεταφοράς δεδομένων.
Είναι ένα είδος ενός οδηγού κατά μήκος διαφορετικές εταιρείες και βιομηχανίες
για την οργάνωση των ήχων ή μπαλώματα.
Έτσι, θα δούμε ότι υπάρχει ένα πρότυπο MIDI
για όλα τα διαφορετικά κρουστά ήχους MIDI και συστάσεις
για όλους τους διαφορετικούς τύπους του synth ή διαφορετικούς τύπους όλων των οργάνων
ομάδες σε μια ορχήστρα, λένε.
>> Είστε πιθανώς εξοικειωμένοι με 0 έως 127 μηνύματα MIDI.
Ένα σήμα MIDI είναι τυπικά ένα bit που υποδεικνύει
είτε πρόκειται για τα δεδομένα ή το πακέτο κατάστασης, και στη συνέχεια υπάρχει
από επτά δυαδικά ψηφία ενός σήματος.
Και αυτά μπορεί να ελέγξει τα πάντα, από τον όγκο
με τη δράση ή την πίεση σε ένα συγκεκριμένο κλειδί
αν είστε επιδόσεις με ένα MIDI ελεγκτής καθώς και, φυσικά,
σημειώσεις.
Και φυσικά, έχει MIDI ήταν εξαιρετικά χρήσιμο,
γιατί είναι ένας τρόπος για να σύρμα μαζί ή αλυσιδωτή
μια δέσμη των συσκευών υλικού MIDI.
Έχω επτά ή οκτώ πίσω στο σπίτι μου.
Παίρνει πραγματικά περίπλοκη, αλλά είναι πραγματικά ισχυρή.
Και είναι πραγματικά παλιά.
Είναι από τις αρχές της δεκαετίας του '80, και Είναι πραγματικά ωραίο και μικρό.
CONNOR Harris: Ναι.
Όλο το κλασικό Nintendo βιντεοπαιχνίδια κατά πάσα πιθανότητα θα
έχουν MIDI αρχεία για τη μουσική, για παράδειγμα.
>> STEPHEN KREWSON: Εδώ είναι μια παράδειγμα της General MIDI,
δείχνει MIDI ως ένα είδος του γενικού πρωτοκόλλου.
Και νομίζω ότι μπορούμε να σκεφτούμε το διαφορά μεταξύ της προδιαγραφής
ότι θα πρέπει να υπάρχει κάτι σαν αυτά ήχους οργάνων και της πραγματικής
υλοποίηση αυτών των μέσων ακούγεται σε καλή γραμματοσειρά ή ένα συγκεκριμένο MIDI
συνθεσάιζερ ως η διαφορά μεταξύ ίσως ένα typeface-- που λέει,
Σε γενικές γραμμές, αυτό είναι ο σχεδιασμός του αυτό το συγκεκριμένο τρόπο για να αντιπροσωπεύουν
characters-- και μια συγκεκριμένη γραμματοσειρά ότι έχει ένα συγκεκριμένο μέγεθος και χροιά,
και υπάρχει υλοποίηση του the--
>> CONNOR HARRIS: Ίσως καλύτερη σύγκριση θα ήταν
είναι το πρότυπο Unicode says-- δίνει ένας αριθμός για κάθε χαρακτήρα, και πραγματικά
Κάθε γλώσσα στον κόσμο, ή μια τεράστια σειρά από σενάρια της γλώσσας
στον κόσμο, και στη συνέχεια αυτά είναι καθίσταται σε κάτι γραφικό
από διάφορα πακέτα γραμματοσειρών.
Και προφανώς, μπορείτε να σκεφτείτε MIDI ως Unicode του ήχου.
Και είναι απλά μια λίστα of-- ένα μεγάλο ρεύμα των γεγονότων και των μέσων και εταζέρα,
και πρέπει να έχετε μια ξεχωριστή πρόγραμμα, όπως μια οικογένεια,
να καταστήσει ότι σε κάτι που είναι πολύ έντονα.
>> STEPHEN KREWSON: Γιατί λοιπόν Haskell;
Haskell είναι ένα λειτουργικό προγραμματισμό γλώσσα, σε πολύ προχωρημένο στάδιο,
πολύ διαφορετικό από C, πολύ διαφορετική από την PHP.
Και θα πάμε να δούμε ότι υπάρχει μια ευκολία της σύνθεσης λειτουργίας σε Haskell
ότι θα μας επιτρέψει να αεράκι μέσα σύνθεση ή την πληκτρολόγηση, μεταγραφή,
κάτι σαν Frere Jacques, αυτό το απλό τραγούδι που
έχει πολλά μέρη σε αυτό που είναι αυτο-όμοια ή επαναλαμβανόμενα.
Έτσι, αυτό θα είναι μερικά από το κίνητρο για τους οποίους
είμαστε χρησιμοποιώντας Haskell, με την οποία λειτουργίες είναι πολίτες πρώτης κατηγορίας.
>> Και ήθελα να επεκτείνει αυτό το λίγο.
Είναι λίγο εύκολο να notate Frere Jacques σε Haskell.
Τι γίνεται όμως αν θέλαμε να προσθέσετε ένα τμήμα τυμπάνου σε αυτό;
Τι θα συμβεί αν θέλαμε να προσπαθήσουμε να κάνουμε κάτι σαν ένα Roland 808 ή 909 τύμπανο
μηχάνημα όπου έχετε περίπου 16 διαφορετικά βήματα;
Συνήθως αυτά είναι θεωρείται ως 16ο σημειώσεις.
Και μπορείτε να ελέγχετε την παγκόσμια tempo, και μπορείτε να διαλέξετε
μια δέσμη των διαφορετικών τμημάτων κρουστά μπάσο τύμπανο, ένα χειροκρότημα, διαφορετικές παγίδες,
ανοικτού και κλειστού υψηλή καπέλα σε τέτοιου είδους κανάλια,
και, στη συνέχεια, μπορείτε να EQ ή ρυθμίσετε την ένταση τους.
>> Και θα δούμε ένα ωραίο τρόπο Haskell να εκπροσωπήσω αυτό το βήμα
sequencer με όλες τις διάφορα δροσερά πράγματα σε Haskell
μπορούμε να κάνουμε με τη δημιουργία λιστών και να φιλτράρουν πάνω από τις λίστες,
χαρτογράφηση πάνω από τις λίστες, χαρτογράφηση λειτουργίες πάνω στις λίστες.
Και ένα γρήγορο συγγνώμη.
Αυτή είναι μια πολύ βιαστική και υπερβολικά γρήγορο σκίτσο
μερικών από τις πτυχές της Haskell και Euterpea,
το οποίο είναι ένα πεδίο-ειδική ενσωματωμένη γλώσσα γραπτή
σε Haskell για μουσικά είδη.
Επομένως, σας παρακαλώ να δείτε το σε απευθείας σύνδεση κώδικα.
Φωτιά μέχρι GHCI, η οποία είναι η Γλασκώβη Haskell Compiler Διερμηνέας.
Και θα κάνω μερικά από αυτό σε λίγο
ώστε να μπορείτε να δείτε πώς γίνεται.
>> Και αυτό σας επιτρέπει να φορτώσετε με the-- η σύνταξη είναι άνω και κάτω τελεία και, στη συνέχεια,
η εντολή.
Μπορείτε να φορτώσετε σε αρχεία.
Μπορείτε να χρησιμοποιήσετε περιήγηση σε αυτά τα αρχεία για να δείτε όλες τις λειτουργίες που
υπάρχουν σε μια συγκεκριμένη μονάδα.
Και τότε, όπως θα δούμε, τα είδη και τον τύπο τάξεις είναι τόσο σημαντικό σε Haskell,
έτσι ώστε να μπορείτε πάντα να check-- ιδιαίτερα αν εργάζεστε σε ένα νέο DSCL
όπως αυτό, αυτό είναι ένα είδος μουσικής;
Ξέρω για τον τρόπο με αριθμητικό τύποι εργάζονται σε Haskell,
αλλά δεν ξέρω πολλά για τη μουσική.
Αλλά μπορείτε να εξερευνήσετε τον τρόπο που είναι ορίζεται από τη χρήση αυτής της εντολής τ ή τύπο
και, στη συνέχεια, καλώντας σε μια συγκεκριμένη λειτουργία ή ένα αντικείμενο δεδομένων.
CONNOR Harris: Ναι.
Αν νομίζατε C και Clang Ήταν hardass σχετικά με τους τύπους,
δεν έχετε καμία ιδέα για Haskell.
Το καλό πράγμα για Haskell είναι ότι εάν μπορείτε να πάρετε τον κωδικό σας για να συγκεντρώσει
και εάν οι έλεγχοι τύπου Haskell, είναι πιθανώς σωστό,
επειδή το σύστημα τύπος είναι τόσο αυστηρές.
>> STEPHEN KREWSON: Ναι.
Γι 'αυτό ακριβώς θέλω να πάω through-- και πάλι,
αυτό δεν το κάνει justice-- μερικά από τα χαρακτηριστικά της Haskell ότι, τουλάχιστον
να creators-- του και δημιουργήθηκε στα τέλη της δεκαετίας του 1980 από μια ομάδα ανθρώπων,
μια επιτροπή από περίπου 20 people-- ότι ήταν σημαντικό.
Και το πρώτο πράγμα που που αναφέρονται σε ένα χαρτί ότι
περιέγραψε την γένεση της Haskell κατά τα πρώτα 20 χρόνια ή έτσι
ήταν ότι ήταν τεμπέλης.
Λοιπόν, τι σημαίνει αυτό;
>> Λοιπόν, αυτό σημαίνει ότι όταν έχουμε κάποιο είδος της έκφρασης, θα πρέπει να το αξιολογήσουμε.
Και Haskell κάνει αυτό σε μια κλήση από την ανάγκη τρόπο ή μη αυστηρό τρόπο.
Δηλαδή, αν έχουμε ένα σωρό συστατικά της έκφρασης μας,
προσπαθούμε να καθυστερήσει την αξιολόγηση αυτών των επιμέρους συστατικών
μέχρι την απόλυτη τελευταία minute-- δηλαδή μέχρι τις χρειαζόμαστε πραγματικά.
>> Έτσι, αυτό που είναι means-- πραγματικά δροσερό, ιδίως
αν σκεφτόμαστε την άντληση ένα μουσικό sequencer βήμα.
Μπορείτε να το ενεργοποιήσετε και να αρχίσετε τρέχει ένα βήμα sequence--
αν εργαστεί ποτέ με ένα τύμπανο machine-- και πηγαίνει ακριβώς για πάντα.
Έτσι, θα ήταν πολύ ωραίο αν θα μπορούσαν να μιμηθούν ότι σε Haskell.
Και μπορούμε να το κάνουμε με το άπειρο αξίες, ιδίως άπειρες λίστες.
Είναι πολύ εύκολο να πληκτρολογήσετε μια άπειρο κατάλογο σε Haskell.
Θα μπορούσατε απλά να χρησιμοποιήσετε τη σύνταξη κάτω Εδώ, όπου θα δείτε 1 έως 3,
αφαιρέστε το 3 1 τελεία τελεία και ότι είναι ένας ατέλειωτος κατάλογος
από όλους τους φυσικούς αριθμούς που εκτείνεται για όσο μπορείτε να φανταστείτε.
>> Θέλω να εισαγάγει μια έννοια της πτυχώσεις αμέσως.
Και πάλι, ο σκοπός από το σεμινάριο αυτό δεν είναι
να μάθουν για πτυχώσεις σε Haskell ή ανώτερες λειτουργίες τάξης.
Αλλά εγώ απλά θέλω να το παρουσιάσουμε να δώσει μια ακριβή αίσθηση του πόσο περίεργα
Haskell είναι και πόσο ισχυρό είναι.
Και κυρίως, θα πάμε να be-- όταν κάνουμε διάφορα μέρη του τυμπάνου μας,
θα πάμε να το χειρισμό των καταλόγων αριθμοί, τους αναδίπλωση πάνω σε κάθε άλλη.
Και για να το κάνουμε αυτό, θα να χρησιμοποιούν χάρτες και πτυχώσεις.
>> Υπάρχει μια δεξιά συνειρμική φορές, το οποίο είναι αυτό το δικαίωμα
here-- 1 μείον την ποσότητα, 2 μείον την ποσότητα, 3 μείον 0.
Και η σύνταξη για ένα φορές, να σας δώσει μια πτυχή
μια τιμή βάσης και στη συνέχεια ένα operation-- σε αυτή την περίπτωση, η προσθήκη ή αφαίρεση.
Έχω δείξει και τις δύο περιπτώσεις.
Και έπειτα υπάρχει ένα συσσωρευτής συσσωρεύεται πάνω από ολόκληρη τη λίστα,
εφαρμογή του εν λόγω φορέα ή συν μείον και, στη συνέχεια συσσωρεύονται.
Έτσι, αυτό θα είναι the-- αν ονομαζόταν με r φορές συν 0, αρχίζοντας με 0,
τότε εμείς θα αθροίσει όλα οι αριθμοί σε αυτή τη λίστα.
Και αυτό είναι μια λίστα με 1 - 3.
CONNOR HARRIS: Έτσι, για να το θέσουμε διαφορετικά τρόπο, r φορές διαρκεί τρία επιχειρήματα.
Υπάρχει μια λειτουργία που η ίδια παίρνει δύο επιχειρήματα,
τότε υπάρχει μια τιμή της μίζας, και υπάρχει μια λίστα τιμών.
Και αυτό που κάνετε είναι να πάρετε μίζα αξία, πρώτη τιμή,
βάζουμε σε λειτουργία.
Τι θα βγούμε, Πάρτε ότι, τροφή που
στη λειτουργία του δεύτερη τιμή, τι μπορείτε να πάρετε έξω,
θεωρήσει ότι, τροφοδοτούν το ότι σε λειτουργία της τρίτης τιμής.
Και στη συνέχεια, αν πάει κάτω όλη αυτή η λίστα με αυτόν τον τρόπο,
θα πάμε για να πάρει τελικά κάποια μοναδική αξία που είναι
του ίδιου τύπου για το τι ξεκίνησε με και του ίδιου τύπου
Όπως έχουν τα πράγματα στη λίστα, και στη συνέχεια αυτό είναι το αποτέλεσμα της επιστροφής φορές R.
STEPHEN KREWSON: Έτσι συγκεκριμένα, αυτές είναι υψηλότερες λειτουργίες τάξης,
επειδή παίρνετε ένα άλλο λειτουργία ως ένα από τα επιχειρήματα.
>> CONNOR Harris: Ναι.
Εάν έχετε χρησιμοποιήσει ορισμένα άλλα languages-- Ξέρω R, [δεν ακούγεται]
γλώσσα έχει αυτό, που ονομάζεται Μειώστε.
Μπορεί να έχουν παρόμοιες λειτουργίες σε άλλες γλώσσες, απλά ονομάζεται
διαφορετικά πράγματα.
>> STEPHEN KREWSON: Και τι είναι ωραίο για φορές R
σε αυτή την περίπτωση είναι ότι η πτυχή R μπορεί να λειτουργήσει με άπειρες λίστες.
Έτσι, σε αυτό το κάτω μέρος, αυτό το P5 δημιουργεί τις σημειώσεις που
είναι ενεργοποιημένες στο sequencer βήμα για την ένα μέρος του τυμπάνου, το πέμπτο τμήμα του τυμπάνου,
και ίσως είναι μια Conga τύμπανο ή κάτι τέτοιο.
Και αυτό είναι μια σκόπιμα αμβλεία τρόπος σύνταξης της παρούσας,
αλλά είναι διασκεδαστικό, γιατί αποδεικνύει πολλά
πράγματα για Haskell και Euterpea.
>> Έτσι φορές R αυτού του παχέος εντέρου είναι colon-- μόνο ένας φορέας που ωθεί τα πράγματα
μαζί σε ένα list-- κάλεσε άδειο κατάλογος, ο οποίος είναι μόνο οι κενό μεταξύ παρενθέσεων.
Και καλώ ότι σε αυτό το άπειρο κατάλογο.
Αυτό είναι στην πραγματικότητα δύο λίστες αθροίζονται εδώ κάτω.
Ο κατάλογος 1 κόμμα 6 τελεία κουκίδα είναι 1, 6, 11, 16.
Έτσι, μέσα σε μόλις Haskell-- λίγα χαρακτήρες,
μπορεί να παράγει το σύνολο της ακολουθία αριθμών
που είναι πέντε αριθμούς εκτός εκτείνεται στο άπειρο σε.
Και εγώ βάζετε μπροστά με αυτήν Αυτή η βραχύτερη λίγο list--
3, 8, 21-- μόνο για να σας δείξω πώς μπορείτε να ενώσετε τις λίστες.
>> Και τότε έχω αναδιπλώνεται.
Και αυτό καταλήγει να είναι απλώς ένα είδος λειτουργία ταυτότητα, αλλά είναι άπειρη.
Και φορές R μπορεί να το κάνει αυτό, επειδή νωχελικά αξιολογεί, όπως στο παραπάνω.
Αν έχουμε μια 1 και 2 και 3, μπορούμε ακριβώς αγκύλη απενεργοποιήσει ολόκληρο το υπόλοιπο.
Αυτό δεν θα λειτουργήσει για μείον ή συν, αλλά
θα εργαστούν για αυτό παχέος εντέρου λειτουργία ταυτότητα στον κατάλογο.
>> Επομένως, πώς θα εφαρμόσω στην πράξη ότι αν έχουν απείρως μακρύ κατάλογο των πραγμάτων;
Λοιπόν, Haskell παρέχει πολλά functions--
και να εξετάσουμε περισσότερο σε αυτά με τη δική σας time-- όπως λάβει
η οποία λέει, εντάξει, είμαστε δημιουργώντας αυτό το άπειρο κατάλογο,
αλλά είμαστε ακριβώς πρόκειται να πάρει κάποιο τον αριθμό της πληροφορικής και σε αυτό το case--
θα δούμε αυτό αργότερα σε drum machine μας code--
GM είναι απλά ένα είδος παγκόσμιου μεταβλητή για τον αριθμό των βημάτων
στο sequencer.
Στις μηχανές roll-Ι που έδειξε, ότι είναι κατά κανόνα 16,
αλλά έχω εφαρμόσει με 32.
Δεν έχει τόση σημασία.
>> Haskell είναι επίσης καθαρό, έτσι ώστε να έχει ισχυρή στατική πληκτρολόγηση που Connor υπαινίχθηκε.
Έτσι, οι λειτουργίες είναι μαθηματικών στο sense--
ότι είναι περισσότερο μαθηματικές ότι είναι σίγουρο
να μην έχουν πρόσβαση ή να αλλάξετε οποιοδήποτε είδος του μεταβλητή ή να εκτελέσει εισόδου ή εξόδου.
Έτσι, αν έχετε μια συνάρτηση, είναι ντετερμινιστική.
Θα επιστρέψει πάντα το ίδιο αξία στην κατάσταση του προγράμματος
ή να παραμείνει το ίδιο.
Υπάρχουν, βέβαια, εξαιρέσεις Μοναδικής σε αυτό, αλλά αυτό είναι πέρα ​​από το πεδίο εφαρμογής μας.
>> CONNOR Harris: Ναι.
Αυτό σημαίνει, όμως, υπάρχει είναι μερικά σημαντικά [δεν ακούγεται]
συνέπειες αυτού.
Το ένα είναι ότι είναι πολύ εύκολο να παραλληλιστεί προγράμματα Haskell.
Διότι, αν έχετε, λένε, μια λειτουργία που
πρέπει να λειτουργούν σε ένα εκατομμύριο αξίες, εάν Γνωρίζετε ότι η λειτουργία θα είναι πάντα
δίνουν την ίδια τιμή, αν ταΐζετε σε ένα ορισμένο value--
αν είστε [δεν ακούγεται] f 1, f του 2, τότε f από 3 ή whatnot-- f από 1
δεν πρόκειται να γράψω σε ένα αρχείο ή να κάνουμε κάτι
ότι θα αλλάξει την τιμή της f2.
Μπορείτε απλά να χωρίσουν αυτή τη λειτουργία για ένα εκατομμύρια διαφορετικά μηχανήματα ή ένα εκατομμύριο
διαφορετικά νήματα ή οτιδήποτε άλλο, να πάρετε όλες τις απαντήσεις πίσω,
να πάρετε όλες τις τιμές επιστροφής πίσω, και στη συνέχεια, αυτό είναι όλο.
Έτσι, είναι πολύ εύκολο να παραλληλιστεί πράγματα.
>> Το μειονέκτημα είναι ότι η είσοδος και ιδιαίτερα εξόδου
εντάσσονται στο σύστημα του τύπου σε πολύ πολύπλοκους τρόπους.
Δεν θα μπω σε ότι αυτή τη στιγμή, αλλά εγώ Σας ενθαρρύνουμε να δούμε κάποιους πόρους
σε απευθείας σύνδεση, αν θέλετε να μάθετε γι 'αυτό.
>> STEPHEN KREWSON: Λοιπόν Τύπος classes-- και αυτό
was-- τάξεις των τύπων εφευρέθηκαν για να λύσει
ένα πρόβλημα της υπερφόρτωσης του χειριστή.
Έτσι θέλαμε να έχουμε ισότητα μεταξύ των διαφόρων τύπων των πραγμάτων.
Φυσικά, θα μπορούσαμε να σκεφτούμε of-- ισότητα μεταξύ αριθμητικών τύπων
Είναι πολύ εύκολο να σκεφτούμε, αλλά Τι γίνεται με την ισότητα ανάμεσα στις λίστες;
Τι γίνεται με την ισότητα μεταξύ δέντρο δομές δεδομένων πόδι;
Και όλα αυτά είναι δυνατόν Haskell, λόγω των τάξεων τύπου.
>> Έτσι, αν ορίσετε μια ορισμένη type-- δεδομένων και εδώ, αυτά είναι τα μουσικά βήματα.
Έχουμε πάρει επιτέλους σε κάποιο μουσικό υπολογιστή.
Έτσι έχουμε C, ντο δίεση, Και ούτω καθεξής και ούτω καθεξής.
Ανήκουν σε μια δέσμη των διαφορετικές κατηγορίες τύπου.
EQ-- ανήκουν στην κατηγορία τύπο EQ.
Αυτό σημαίνει ότι υποστηρίζουν λειτουργίες της ισότητας.
Έτσι, μπορείτε να αξιολογήσει εάν ένα ακολουθία των μουσικών πρωτόγονων
είναι το ίδιο με ένα διαφορετικό.
>> Ανήκουν στην κατηγορία τακτικό.
Αυτό σημαίνει ότι υπάρχει μια διάταξη σ 'αυτά.
Δ έρχεται μετά από Γ ντο δίεση έρχεται μετά C, καθώς και.
Ανήκουν στην κατηγορία δείχνουν, πράγμα που σημαίνει ότι μπορούν να
να εκτυπωθεί σε μια κονσόλα ή τερματικό.
Ανήκουν στην κατηγορία που απαριθμούνται, το οποίο
σημαίνει ότι, ακόμη και αν αυτά είναι χαρακτήρες,
έχουν ένα υποκείμενο αριθμητικό αντιπροσώπευση ξεκινώντας από 0
και πηγαίνει μακριά μέσα όμως πολλά πράγματα εδώ, 20 ή έτσι,
ή 30 ή 40, ίσως.
>> CONNOR Harris: Και όταν έχουμε έναν τύπο δεδομένων
ότι derives-- με την λέξη-κλειδί "deriving--" ένας ορισμένος τύπος τάξη,
αυτό σημαίνει ότι ο compiler θα προσπαθήσει να κατασκευάσει κάτι αυτόματα.
Έτσι ίσως θα θέλετε να προσδιορίζουν ένα ποιοτικό διαφορετικά.
Θα θέλετε να ορίσετε ντο δίεση ίση με D επίπεδη, για παράδειγμα.
Με την κατασκευή αυτή εδώ, δεν νομίζω ντο δίεση
και Δ επίπεδη θα είναι ίσοι, γιατί ο compiler θα αυτόματα
δηλαδή κάθε διαφορετική δυνατή τιμή είναι διαφορετική από κάθε άλλη.
>> Έτσι είναι δυνατό να παρακάμψει Οι προεπιλεγμένες εφαρμογές
αυτών των τύπων των τάξεων.
Και πάλι, να δούμε την αναφορά, αν θέλετε να μάθετε γι 'αυτό.
STEPHEN KREWSON: Και εδώ, στην πραγματικότητα, αυτό 'll
είναι χρήσιμο για όταν κωδικοποιούμε αργότερα.
Βλέπουμε ορισμένοι από τους επιχειρηματίες InFix για διαδοχική σύνθεση,
παράλληλη σύνθεση, και έτσι εμπρός, αυτά τα συν και τα σημάδια της ίσης
που περιβάλλεται από άνω και κάτω τελεία.
Αυτό σημαίνει ότι μπορούμε να παίξουμε αυτά τα διαφορετικά μουσικά αρχέτυπα ένα μετά το άλλο.
Αυτό είναι διαδοχική σύνθεση.
>> Ή μπορούμε να τους παίξει στο παράλληλα την ίδια στιγμή.
Έτσι μπορώ να έχω μια μουσική αξία, και τότε αυτό ισοδυναμεί με άνω και κάτω τελεία και,
καρφώνουν το χειριστή παράλληλη σύνθεση, και να παίξει ως ένα είδος χορδή.
Και θα πάμε να χρησιμοποιήσετε αυτό όταν συνδυάζουμε
τύμπανο μέρος μας με τους γείτονές μας τραγουδάκι Frere Jacques
να παίξετε αυτά τα δύο ακολουθίες μουσικό τιμές ταυτόχρονα.
>> Γούνων is-- Κάρι ήταν η τελευταία το όνομα της Haskell Curry, ο οποίος
η εικόνα Haskell ονομάζεται μετά.
Και αυτό μας επιτρέπει μια ωραίο κομψότητα όταν είμαστε
γραπτώς όλες αυτές τις διαφορετικές λειτουργίες ή φίλτρα που είμαστε
πρόκειται να είναι η χαρτογράφηση πάνω από τις λίστες μας.
Μία συνάρτηση δύο arguments-- f του x και y--
μπορεί να αναπαρασταθεί ως f του x στο y εφαρμόζεται.
Έτσι είναι μια συνάρτηση της ένα επιχείρημα που επιστρέφει
μια άλλη λειτουργία ενός επιχειρήματος.
Έτσι, αυτό σημαίνει ότι μπορούμε να χαρτογραφήσει ένα συνάρτηση f του x πάνω λίστα του Y.
CONNOR HARRIS: Θέλετε να δώσω ένα παράδειγμα για αυτό;
STEPHEN KREWSON: Ναι.
Έχω ένα παράδειγμα από εδώ μερικά από τα πράγματα που θα γράψω.
Έτσι αναπαράγουν 2-- καλά, αναπαράγουν θα λάβει
μία τιμή, η οποία είναι πόσα φορές για να αναπαράγουν κάτι,
και στη συνέχεια θα πάρει value-- συνήθως μια λίστα ή κάτι τέτοιο.
Έτσι, εδώ, είμαστε χαρτογράφηση 2 αναπαράγουν σε μια άλλη λίστα.
>> Έτσι, αν έχουμε χαρτογραφήσει αναπαράγουν 2, αν μπορούμε να προσομοιώσουμε 2 εφαρμόζονται
με το πρώτο στοιχείο της παρούσας list-- και αυτά είναι λίστες των μουσικών phrases--
θα παράγει δύο «εσείς sleeping--" έτσι κοιμάσαι, κοιμάσαι.
Έτσι τώρα έχουμε δύο.
Αλλά επανάληψη διαρκεί δύο επιχειρήματα, αλλά επειδή είμαστε
γούνων και, στη συνέχεια, τη χαρτογράφηση, μπορούμε να αναπαραστήσουμε επαναληπτικές 2
ως έχουν επιστραφεί ως συνάρτηση του ένα argument-- απλά αναπαράγει δύο φορές.
Και τότε θα είστε υποψήφιοι ότι σε κάθε στοιχείο αυτού του καταλόγου των φράσεων.
>> Και concat είναι Haskell λειτουργία για την ισοπέδωση μια λίστα.
Επειδή επαναληπτικές 2 βούληση παράγει μια λίστα καταλόγων.
Και αυτό είναι αυτό ενδιάμεση μορφή εδώ.
Και έτσι, τότε μπορούμε να concat ή ισοπεδώσουν ότι δύο φορές.
CONNOR HARRIS: Μια απλούστερη παράδειγμα της δέψη,
αν θέλετε like-- φανταστείτε f είναι απλά μια Λειτουργία πολλαπλασιασμού που διαρκεί δύο
επιχειρήματα και επιστρέφει το προϊόν τους.
Έτσι, εάν έχετε ένα F 4 5, είναι 20.
Αλλά μπορείτε να σκεφτείτε αυτό ως also-- έχετε μια συνάρτηση f 4
ότι παίρνει ένα επιχείρημα και αποδόσεις τέσσερις φορές αυτό ακριβώς argument--
μερική εφαρμογή η οποία ένα μόνο επιχείρημα 4.
Και αν ταΐζετε στ 4 5, που θα σας δώσει 20.
Και αυτό είναι μια απλούστερη παράδειγμα της δέψη.
Είναι συνήθως ένα από αυτά βιβλίο.
>> STEPHEN KREWSON: Lambda εκφράσεις ή ανώνυμες λειτουργίες
είναι ένα άλλο χαρακτηριστικό γνώρισμα Haskell.
Έτσι, αν χρειαστεί να μαστίγιο μέχρι ένα λίγο λειτουργία αναπαράγουν τη ζωή,
αλλά λένε ότι δεν είναι σε η πρότυπη βιβλιοθήκη,
μπορούμε να χρησιμοποιήσουμε μια σύνταξη παρόμοιο με το ακόλουθο.
Και θα αύρα πάνω από αυτό.
Ένα πράγμα που θα δείτε πολλά στην drum machine είναι ότι πλέον έχουμε την πραγματοποίηση κλήσεων
σε κάτι που ονομάζεται φίλτρο, το οποίο, όπως και πριν,
είναι μια χαρτογράφηση της συνάρτησης πάνω από μια λίστα, αλλά είναι
μια χαρτογράφηση μιας Boolean λειτουργία.
>> Έτσι, έχουμε εδώ ένα παράδειγμα ενός μια ανώνυμα
ορίζεται Boolean λειτουργία που Χρειάζεται μόνο ένα ζευγάρι τιμές.
Αυτό δεν είναι κατά κυριολεξία μια ανώνυμη λειτουργία.
Αλλά είναι με τον καθορισμό ότι σύνταξη για λόγους συντομίας,
και αυτό διαρκεί μόνο χ ενότητα n--
CONNOR Harris: Ναι.
Έτσι f είναι μία συνάρτηση του δύο επιχειρήματα n και p
ότι επιστρέφει μια συνάρτηση η οποία είναι η ίδια μια λειτουργία ενός επιχειρήματος, δηλαδή x.
STEPHEN KREWSON: Ι προαναφερθείσα φορείς InFix.
Τι είναι οι διαχειριστές InFix;
Λοιπόν, οι φορείς εκμετάλλευσης είναι η InFix φυσιολογικό τρόπο με τον οποίο εκπροσωπεί επιχειρήσεις,
λένε, σε mathematics-- 2 συν 2 αντί του φορέα συν
και στη συνέχεια δύο επιχειρήματα 2 και 2.
CONNOR HARRIS: Ονομάζεται αντίστροφη πολωνική σημειογραφία, η οποία είναι
ένας όρος που αμφιβάλλω κάποιος από εσάς θα γνωρίζετε.
>> STEPHEN KREWSON: Δεξιά.
Αντίστροφη βερνίκι ή το πρόθεμα σημειογραφία.
Αλλά Haskell αποφάσισε να χρησιμοποιούμε τους τελεστές InFix.
Έτσι, αυτά είναι μερικά από οι προσαρμοσμένες αυτές που
ορίζονται για το Euterpea DSCL σε Haskell.
Έτσι, αυτό ήταν διαδοχική σύνθεση.
Αυτό ήταν παράλληλη σύνθεση, και αυτό έγινε περικοπή παράλληλη σύνθεση.
Και θα πρέπει να με μηχανή τυμπάνων μας,
γιατί θα χρησιμοποιήσουμε τον τελευταίο χειριστή σε αυτό το μικρό πλειάδα υπάρχει
να παίξει το drum machine μαζί με το τραγούδι μας Frere Jacques.
Και το drum machine μας είναι πρόκειται να είναι άπειρη.
Είναι απλά παίζει για πάντα.
Αλλά το τραγούδι Frere Jacques δεν είναι.
Δεν είναι τόσο πολύ.
Είναι μόνο μερικά μπαρ.
Γι 'αυτό και πρέπει να σταματήσει το drum machine ως Μόλις η συντομότερη μουσικό αξία προέρχεται
στο τέλος της.
Και αυτό εμπεπηγμένου χειριστή είναι εξαιρετικά χρήσιμη σε αυτό.
>> Και InFix σημειογραφία όπως Αυτό είναι το είδος της Νίκαιας,
επειδή πούμε ότι έχετε μια συνάρτηση όπως η απόσπασμα, το οποίο δίνει τη διαίρεσης
του x από κάτι else-- Συγγνώμη, αυτό θα πρέπει να είναι a και b.
Θα μπορούσατε να το γράψετε ως ένα απόσπασμα του β.
Έτσι, αν put-- στοιχείο είναι Ένα άλλο παράδειγμα αυτού του γεγονότος.
x στοιχείο σε κάποια λίστα, αν βάλετε το σε βαρεία, μπορείτε να το χρησιμοποιήσετε.
Ακόμα κι αν δεν είναι ένα σύμβολο όπως συν ή μείον ή φορές,
μπορείτε να χρησιμοποιήσετε το όνομα ενός λειτουργία, όπως ότι σε βαρεία
ως τελεστή εναλλαγής, το οποίο είναι αρκετά δροσερό.
CONNOR HARRIS: Και πάλι, αυτό είναι όλα μόνο συντακτική ζάχαρη, πραγματικά.
Δεν επηρεάζει τον πυρήνα της γλώσσας.
>> STEPHEN KREWSON: Βλέπουμε λοιπόν εδώ για το τελευταία φράση του τραγουδιού μας Frere Jacques,
Έπαιξα μερικά μικρά χορδές ή τρίτα χρησιμοποιείτε την παράλληλη σύνθεση
χειριστής.
Αυτός είναι ένας άλλος τρόπος για να πούμε μερικά από ό, τι έχουμε μόλις πει.
Έτσι, μπορείτε να αντιστοιχίσετε λειτουργίες από ένα επιχείρημα πάνω καταλόγους.
CONNOR Harris: Και πάλι, οι αναφορές για Haskell-- εισαγωγικό σχολικά βιβλία
θα έχουν όλα αυτά σε αυτό.
>> STEPHEN KREWSON: Τόσο εδώ είναι μια αρκετά κλειδί γραμμή του sequencer βήμα
θα ρίξουμε μια ματιά σε χρήση μια λίστα με κατανόηση.
Και βλέπουμε εδώ είναι ότι το στοιχείο σε σταθερό φορέα στον πίσω εισαγωγικά.
Έτσι, αν το Χ είναι ένα στοιχείο του καταλόγου x, τότε θα καλέσουμε τις λειτουργίες perc.
Έτσι perc είναι απλά μια λειτουργία κρουστά.
Παίρνει κάποια αξία σ που είναι μέρος της φραγμένο σύνολο όλων
οι διαφορετικοί ήχοι κρουστών που είδαμε σε προηγούμενη διαφάνεια,
και στη συνέχεια δίνει ότι διάρκειας ενός τετάρτου.
Αλλιώς θα δίνει μια qnr, και qnr είναι απλά ένα υπόλοιπο τέταρτο σημείωμα.
>> Έτσι, αυτό είναι δημιουργία κάτι ωραίο.
Έχουμε μια λίστα των στοιχείων, και Θα βρόχο πάνω από κάποια λίστα από τη μία
με την μέγιστη τιμή του sequencer βήμα μας.
Και όταν είμαστε σε μια συγκεκριμένη i στο ότι ο κατάλογος του ενός με την μέγιστη τιμή,
αν η i είναι ένα μέλος αυτής της σύνολο που δημιουργείται σε αυτή τη λειτουργία,
καλά, τότε μπορούμε να την ενεργοποιήσετε σε ένα σημείωμα κρουστά.
Διαφορετικά, απλά παίξτε ένα υπόλοιπο, το οποίο Δηλαδή, εμείς απλά παραμένουμε σιωπηλοί.
Και μπορούμε να δούμε εδώ ότι σε Αυτή η σύνταξη κατανόηση λίστα,
x κατοικείται από αυτό κατάλογος κατασκευαστεί ένα
στην παγκόσμια μέγεθος της ακολουθίας.
CONNOR Harris: Ναι.
Η βασική σύνταξη για Η κατανόηση είναι κατάλογος
βραχίονα, τιμή που περιλαμβάνει Ορισμένες μεταβλητές, μπαρ,
πιθανές τιμές των μεταβλητών ίδιοι, έκλεισε βραχίονα.
Και αν έχετε κάνει ορίζεται σημειογραφία οικοδόμος σε οποιοδήποτε είδος της τάξης των μαθηματικών,
ενδέχεται να είχατε ρυθμίσει 2η τέτοια ότι η είναι ή η είναι σε z.
Παρόμοια thing-- αυτό το συμβολισμό εννοείται ότι υποδηλώνουν
του εν λόγω μαθηματική σημειογραφία.
STEPHEN KREWSON: Και μπορείτε να εφαρμόζουν πολλαπλές κατηγορήματα
και πολλαπλά φίλτρα σε μια λίστα κατανόησης, το οποίο είναι πολύ ωραίο.
Αλγεβρικές types-- μας δεν θα καθυστερήσει πολύ εδώ.
Δεν υπάρχει μια καλή ιδέα σε Haskell ή ένα καλό, προφανές ιδέα
για το πώς να πάρει, ας πούμε, μια προεπιλεγμένη παράμετρος σε μια λειτουργία ή κάτι τέτοιο.
Στην Python, αυτό είναι αρκετά εύκολο.
Μπορείτε απλά να πω με ισοδυναμεί κατά η δήλωση της συνάρτησης,
μια προκαθορισμένη τιμή σε περίπτωση κανένας παρέχεται.
>> Σε Haskell, θα μπορούσατε ίσως χρησιμοποιήσετε ίσως ο τύπος ίσως,
η οποία λαμβάνει είτε τίποτα ή μια τιμή τύπου μόνο ένα.
Έτσι εκμεταλλευόμαστε αυτό στο τύμπανο της μηχανής για να μας επιτρέψει να δώσουμε προαιρετικό όγκο
παράμετροι για κάθε ένα από τα τμήματα του τυμπάνου.
Και αυτό μας δίνει έναν τρόπο που έχει EQ ή ένας όγκος σε ένα συγκεκριμένο κανάλι.
>> CONNOR HARRIS: Σε Άλλα παραδείγματα Haskell,
μπορείτε να δείτε μπορεί να χρησιμοποιηθούν για την λειτουργίες που μπορεί να αποτύχει.
Αυτή είναι μια κοινή.
>> STEPHEN KREWSON: Και μπορείτε να δώσετε κάποιου είδους μήνυμα λάθους ως προεπιλογή.
Και αυτό είναι ιδιαίτερα βολικό όταν κάνετε το I / O σε Haskell.
Αυτό μπορεί να είναι κόλπα.
CONNOR HARRIS: Ή για ένα παρόμοιο παράδειγμα, σκεφτείτε
μιας λειτουργίας που περιλαμβάνει διαίρεση μιας παραμέτρου που μπορεί να είναι μηδέν.
Και αυτή η λειτουργία θα μπορούσε να ίσως επιστρέψει οτιδήποτε.
Έτσι, αν δεν υπάρχει διαίρεση με το 0, θα επιστρέψει ακριβώς ό, τι.
Και αν υπάρχει διαίρεση με 0, θα επιστρέψει τίποτα
ως ένας τρόπος σηματοδότησης το σφάλμα.
Επειδή μία από τις συνέπειες της Πολύ αυστηρή πληκτρολόγηση του Haskell
είναι ότι δεν υπάρχει real-- εξαιρέσεις είναι δύσκολη, κυρίως,
αντιμετώπιση των λαθών είναι δύσκολη.
Και αυτό είναι ένας πολύ συνηθισμένος τρόπος για να γίνει αυτό.
>> STEPHEN KREWSON: Έτσι τώρα έχουμε σε ένα άλλο μυαλό κάμψης πράγμα
για Haskell, το οποίο είναι πρότυπο αντιστοίχιση και τη λειτουργία τους ορισμούς.
Που σας έδειξα στην τελευταία διαφάνεια της Δήλωση της ακολουθίας βήμα
λειτουργία, η οποία πήρε μια ίσως αξία, Στη συνέχεια, ένας int, τότε μια λίστα των ints,
τότε επιστρέφει μια ακολουθία τιμές μουσικής εκεί σχολιασμένη
τόσο με ύψος και την ένταση.
>> Έτσι, τα τρία αυτά επιχειρήματα δεν μπορεί να είναι πρότυπο ταιριάζει με τον ακόλουθο τρόπο.
Και εμείς πάντα θέλουν να είναι βέβαιοι για την κάνουμε μια βασική περίπτωση ή περίπτωση εξόδου πρώτα.
Και αυτές οι υπογραμμίσεις μπορεί απλώς να ερμηνευθεί
να σημαίνει οποιαδήποτε τιμή που δεν υπάρχει.
Έτσι, αν έχουμε μια κλήση στο βήμα αλληλουχία με κάποια αξία, κάποια άλλη τιμή,
και, στη συνέχεια, η άδεια λίστα, αυτό που θέλουμε να επιστρέψει είναι μόνο σιωπή, ένα υπόλοιπο 0.
>> Και αντί για αυτό είναι μια κενή λίστα ή 0,
είναι ένα υπόλοιπο 0, γιατί είμαστε ασχολούνται με τον τύπο της μουσικής,
και ο κενός κατάλογος της μουσικής τύπος είναι απλά ένα υπόλοιπο χωρίς διάρκειας.
Δεν είναι η μουσική.
Και τότε θα δούμε αν θα πάρουμε ένα βήμα ακολουθία με το επιχείρημα κατά του όγκου,
p για τον μέσο προφύλαξης επιχείρημα, και στη συνέχεια μια λίστα με Χ.
>> Στη συνέχεια, κάνουμε κάποια πράγματα.
Ειδικότερα, εφαρμόζουμε Αυτή η λίστα κατανόηση,
και θα εκτελούν ορισμένα εργασίες σχετικά με την αξία ίσως
για να το μετατρέψει σε μια αριθμητική τιμή, έτσι ώστε θα μπορούσε να απαριθμούνται στη συνέχεια και να χρησιμοποιηθεί
για να επιλέξετε το μέσο.
Και πάλι, αυτό είναι ένα μικρό bit σκόπιμα inconcise
απλά για να δείξει όλα τα περίεργα πράγματα μπορείτε να κάνετε σε Haskell, όπως σας
ρίξτε μια ματιά σε αυτό στο δικό σας χρόνο.
>> Εντάξει.
Έτσι είμαστε τελικά να πάρει για να κάνουμε αυτό που ξεκινήσαμε να κάνουμε,
που είναι να κάνει κάποια μουσική του υπολογιστή.
Έτσι θα πάμε να προσπαθήσουμε να κάνει το τραγούδι Frere Jacques.
Έτσι, υπάρχουν πόσα φράσεις στο Frere Jacques;
Τέσσερα.
Εξαιρετική.
Και τι ωραίο είναι ότι από όπου και αν όλα τα επαναλαμβανόμενα
το ίδιο ποσό των φορές, το οποίο είναι δύο.
>> Έτσι έχουμε τέσσερις φράσεις κάθε επαναλαμβάνεται δύο φορές.
Και ειδικότερα, είναι σε ένα γύρο.
Και υπάρχουν πολλοί, πολλοί τρόποι για την υλοποίηση
ένα γύρο που θα μπορούσε να είναι διασκεδαστικό να το κάνουμε.
Το έχω κάνει σε ένα πολύ απλό τρόπο εδώ,
το οποίο είναι μόνο για να construct-- τη γραμμή συνάρτηση παίρνει μια λίστα με τιμές μουσικής
και το μετατρέπει σε διαδοχική σύνθεση με την εφαρμογή αυτού διαδοχική σύνθεση
χειριστής.
>> Και τότε θα καθυστερήσει τα διάφορα μέρη κάνοντας τους να αρχίζουν με ένα υπόλοιπο.
Έτσι, μπορώ να ξεκινήσω με μια υπόλοιπα δύο μέτρων, και, στη συνέχεια, ένα υπόλοιπο τεσσάρων μέτρων,
και στη συνέχεια ένα υπόλοιπο έξι μέτρα, και στη συνέχεια ο γύρος
λειτουργεί, όπως όλοι γνωρίζουμε, αυτό το τραγούδι.
Βλέπουμε δύο ή σχολιασμούς τροποποιήσεις των τιμών μουσικής
που περιέχονται σε αυτή την διαδοχική μουσική διασκευή στοιχείων.
Έχουμε έναν όγκο add.
Αυτή είναι μια λειτουργία για να σχολιάσετε μουσική με ένα συγκεκριμένο όγκο.
Αυτό είναι ένα καλό παράδειγμα ενός σήματος λειτουργίας MIDI
από μηδέν έως 127, οι επτά δυαδικά ψηφία του πληροφορίες που μπορεί να μεταφερθεί.
>> Και then-- είδαμε πολύ εν συντομία, αλλά η γενική MIDI
κατάλογο όλων των διαφορετικών μέσων.
Και δεν υπάρχει ένα πάρα πολύ από αυτά.
Εάν χρησιμοποιείτε ένα πρόγραμμα επεξεργασίας ψηφιακού ήχου, όπως Ableton Live ή Pro Tools,
υπάρχει ένα απίστευτα ευρύ φάσμα συνθέτες και VST μέσα.
Αλλά το πρότυπο MIDI μόνο έχει λίγες ή πολλές δεκάδες.
Και ορισμένα από αυτά είναι αστεία.
Σκέφτηκα ότι θα ήταν διασκεδαστικό αν παίζαμε το όργανο το MIDI όργανο
ελικόπτερο, και στη συνέχεια το επόμενος τρόπος μέσω του γύρου,
κάναμε ένα synth pad, και στη συνέχεια της Αυτή η τετριμμένη μολύβδου synth τετραγωνικό κύμα,
και στη συνέχεια να εκφράσουν στάζουν, τα οποία αποτελούν λίγο ακαθόριστα σε κακή MIDI μου
συνθεσάιζερ, αλλά ΟΚ.
>> Και τότε θα δείτε αυτό το let και σύνταξη από Haskell,
και στη συνέχεια να παίζουμε όλα αυτά τα μέρη μαζί
με τον φορέα εκμετάλλευσης παράλληλη σύνθεση.
Και θα μπορούσαμε ίσως δείχνουν κάποια από αυτό.
Εδώ είναι ο κώδικας.
Και μπορείτε να δείτε σε C, θα υπάρξει Πολλοί το καθάρισμα του λαιμού και ρύθμιση
ο κώδικας τραπέζι πριν θα μπορούσε να κάνει τη μουσική σαν αυτό.
Ή οποιαδήποτε άλλη προγραμματισμού γλώσσα, θα ήθελα ίσως
Πρέπει να αλληλεπιδρούν με κάποια βιβλιοθήκη ή API και ρυθμίσετε τα πάντα,
και τότε θα πρέπει να καθαρίσει.
Αλλά εδώ σε Haskell είναι, νομίζω, μία φορά μπορείτε να πάρετε κρεμάστε από το, απίστευτα
ευανάγνωστο και πολύ εκφραστική.
Έτσι, υπάρχει η εφαρμογή της Frere Jacques.
Εντάξει.
Τώρα θέλουμε να προσθέσετε κρουστά, και αυτό είναι λίγο Messier.
Έτσι, ας ρίξουμε μια ματιά στις διαφάνειες.
Συνεπώς, η μεγάλη ιδέα είναι να κάνουμε ένα μάτσο καταλόγους ή τμήματα.
Για τους roll-σε μηχανές, εκεί ήταν τυπικά περίπου οκτώ ίσως
10 ρυθμό ή κρουστά μέρη.
Και στη συνέχεια χρησιμοποιήστε μια δέσμη των τεχνικών.
Και έχουμε μιλήσει για τη χρήση these-- πτυχώσεις, φίλτρα, λάμδα λειτουργίες,
χαρτογραφηθεί πάνω καταλόγους για τη δημιουργία τιμών σε κάποιο εύρος 1 έως r, r είναι 16,
ή 32 βήματα στο sequencer.
>> Και στη συνέχεια, αν υπάρχει μια τιμή στον εν λόγω κατάλογο όπως είμαστε τρέχει μέσα από το sequencer,
διατρέχει το πάνω και πάνω, αποδεικνύεται σε αυτό το σημείωμα,
και ότι το δείγμα γίνεται ενεργοποιείται.
Εδώ είναι όλες οι διαφορετικοί τρόποι περίεργα Ήρθα με να δημιουργήσει σημειώσεις.
Δοκιμάστε το με δική σας ημι ποσό.
Θα ακούγεται δροσερό.
Ο χρόνος το επιτρέπει, θα πάμε μέσα από αυτό.
Αλλά για τώρα, υποθέτω θα πρέπει να demo αυτό που έχουμε.
Ας ελπίσουμε ότι αυτό πηγαίνει στο OK.
>> Έτσι, αυτό είναι GHCI.
Και θα φορτώσει ένα αρχείο Έχω κάλεσε song.lhs,
το οποίο είναι το αρχείο που μόλις σας έδειξα.
Εντάξει μια χαρά.
Όπως είπε ο Κόνορ νωρίτερα, καταρτίζονται, πληκτρολογήστε το ελέγξει,
ώστε να μπορώ να αναπνέω πολύ πιο εύκολη.
Δεν πρόκειται να ανατινάξουν σε μένα.
>> Θα ήθελε να σας δείξω κάτι χρήσιμο.
Μπορείτε να δείτε ότι ένα φορτωμένο ενότητα που ονομάζεται 50.
Μπορείτε να περιηγηθείτε την εν λόγω μονάδα.
Και αυτό είναι τόσο ωραία σχετικά με το τι ίσως doing--
κάνετε σε Haskell δεν είναι κάλεσε την ανάπτυξη λογισμικού,
αλλά μπορείτε να κάνετε πολλά διασκεδαστικά πράγματα για τη δική σας.
Και η ροή εργασίας είναι πολύ ωραία, όπως σε σύγκριση με πολλές άλλες γλώσσες,
επειδή μπορείτε να δείτε σε μια πραγματικά ευανάγνωστο τρόπο τι συμβαίνει.
Βλέπουμε λοιπόν ότι έχουμε Όλες αυτές οι φράσεις, οι οποίες
είναι λίστες μουσικών υψών, και στη συνέχεια θα την κατασκευή αυτών επάνω σε κάτι μεγαλύτερο,
το οποίο είναι ένα τραγούδι μουσική.
Είναι μια μουσική μονάδα.
Και τότε μπορούμε να παίξουμε αυτό το all με μια λειτουργία που ονομάζεται αναπαραγωγή μουσικής.
Μπορείτε να δείτε ότι εδώ κάτω.
Το οποίο απέχει μόλις παίξει.
>> Θα say-- δεν είχα μιλήσει για Αυτό το σύμβολο του δολαρίου που είναι παντού.
Σύμβολο του δολαρίου είναι ένα άλλο τελεστή εναλλαγής.
Αλλά έχει τη χαμηλότερη προτεραιότητα για κάθε επιχείρηση, η οποία ουσιαστικά
σημαίνει ότι τα πάντα σχετικά με η αριστερά το σύμβολο του δολαρίου
και το δικαίωμα του σύμβολο του δολαρίου, θα πάμε για να αξιολογηθούν πριν από αυτό.
Έτσι είναι κάπως σαν ένα άλλο τρόπος της προσθήκης παρένθεση.
>> CONNOR Harris: Είναι βασικά σύνθεση λειτουργία.
Και εξασφαλίζει ότι δεν θα have-- αν Έχετε λειτουργίες κάθε πλευρά ή InFix
φορείς σε κάθε πλευρά, δεν θα συνδέουν πάνω σε αυτό και να σας δώσει
απροσδόκητα αποτελέσματα.
>> STEPHEN KREWSON: Έτσι can-- χρησιμοποιώντας ότι, μπορούμε να ονομάσουμε.
Κατ 'αρχάς, θα το παίξει χωρίς τα τύμπανα.
Αυτό είναι το ελικόπτερο, το MIDI ελικόπτερο.
>> [Παίζει μουσική]
Υπάρχει το τετραγωνικό κύμα.
Η φωνή στάζουν.
Και μπορείτε πραγματικά να τρελαθούν με αυτό.
Πήρα μια πολύ απλή, γιατί ήξερα ότι δεν θα πρέπει να δαγκώνουν
περισσότερο από ό, τι θα μπορούσα να μασάτε.
Απλά κρατήστε το αρκετά απλή για να δείξει τις βασικές ιδέες.
Αλλά τότε θα ήταν σαν, έχουμε πήρε να προσθέσετε κάποια τύμπανα σε αυτό.
Ακριβώς επειδή πρόκειται για ένα λίγο αδιαπέραστο,
και δεν είχα χρησιμοποιήσει το Όνομα του τύμπανα,
Θα χαρτογραφηθεί them-- επειδή είναι μέρος αυτής της κατηγορίας enumerated,
Τους αντιστοιχίζονται σε ints.
Ο ένας είναι σαν ένα βαθύ τύμπανο.
Μηδέν είναι τόσο καλά.
Επτά είναι ένα υψηλό καπέλο.
Και εδώ κάτω, όπου η λειτουργίες πάρετε μια λίγο πιο τυχαίο,
αυτά είναι σαν Conga τύμπανα.
>> Έτσι, αν νομίζετε ότι ίσως ένα about-- διασκεδαστικός τρόπος για να εφαρμόσει ένα drum machine
είναι να χρησιμοποιούν πολύ ομαλή πρότυπα για μπάσο τύμπανο σας.
Έτσι, για παράδειγμα, σχετικά με το φιλτράρισμα πάνω από το κατάλογο με όλα αυτά που δίνει πίσω
α 1 όταν θα έχει ληφθεί ενότητα 04.
Έτσι παίρνω 1, 5, 9, 13, 17-- έτσι αυτό είναι το πρώτο beat του κάθε μέτρου.
>> Και τότε αυτό είναι το ίδιο πράγμα μετατοπιστεί πάνω από δύο στάδια.
Έτσι, αυτό είναι το εκκεντρικό.
Έτσι, αυτό θα ήταν κάτι σαν ένα υψηλό καπέλο.
Και πάλι, εδώ κάτω, είναι λίγο τυχαίο,
γιατί κάνουμε Conga τύμπανα.
Και έχω κάποιες μαράκες εδώ κάτω, πάρα πολύ.
>> Γι 'αυτό και θα μπορούσε να θέσει το παιχνίδι drum machine, αλλά θα συνεχιστεί επ 'αόριστον,
και θα μπορούσε να αρχίσει αρπάζοντας επάνω όλη η μνήμη στο σύστημά μου.
Γι 'αυτό θα καλέσετε τη συνάρτηση αυτή παίζουν μουσική, η οποία, όπως θα δούμε,
χρησιμοποιήσετε την περικοπή παράλληλη σύνθεση να παίξει το μικρό μας τραγούδι Frere Jacques
μαζί με αυτό το περίεργο το drum machine.
Έτσι, ας ρίξουμε μια ματιά.
Και σας παρακαλώ να βελτιώσουμε μου διευθέτηση όλων των μερών του τυμπάνου.
Δεν είναι η ειδικότητά μου, αλλά εγώ είχε ένα πολύ διασκεδαστικό το κάνουμε αυτό.
>> [Παίζει μουσική]
>> Έτσι φυσικά, αυτό είναι όλο λίγο δεν είναι τόσο διασκεδαστικό
αν δεν μπορούμε να το μετατρέψει με αποτέλεσμα έτσι ίσως
θα μπορούσε να ερμηνευθεί από έναν άνθρωπο ερμηνευτή.
Γι 'αυτό και δεν θα το τρέξει εδώ.
Έχω ήδη δημιουργούνται τα αρχεία.
Μπορείτε να δείτε ότι υπάρχει μια dot LilyPond file-- και αυτό
θα segue μου πάνω σε Connor-- και ένα αρχείο MIDI τελεία,
και ένα αρχείο PDF τελεία, η οποία είναι ό, τι LilyPond θα δημιουργήσει τελικά.
>> Αλλά αυτά είναι εκείνα τα σενάρια, και εγώ θα απλά να τρέξουν με τις επιλογές βοήθειά τους.
Εάν πάρετε αυτά οργανωθεί και να λειτουργήσει με Euterpea, μπορείτε να δημιουργήσετε ένα αρχείο MIDI.
Και στη συνέχεια από το αρχείο MIDI με αυτό το πρόγραμμα MIDI 2LY,
μπορείτε να δημιουργήσετε ένα Lily Αρχείο λίμνη, και στη συνέχεια θα
μπορεί να δημιουργήσει ένα PDF από το σκορ.
Και θα πρέπει να ρίξουμε μια ματιά σε αυτό.
Έτσι Κόνορ θα δείξει κατά πάσα πιθανότητα πώς να σχολιάσετε αυτό καλύτερα,
αλλά αυτό είναι Frere Jacques ως που δημιουργούνται από εμένα Euterpea.
Είναι ακριβώς στο Γ θα έπρεπε να είχα καταλάβει ποιο είναι το hack είναι πραγματικά σε.
Αλλά αυτό είναι ο αγωγός για Πώς το κάνετε αυτό με αυτό.
Ας μιλήσουμε περισσότερο για LilyPond.
>> CONNOR HARRIS: Εντάξει ας δούμε.
Μήπως σας αναφέρω Μάθετε Μπορείτε Haskell;
STEPHEN KREWSON: Ω ναι.
Αναχώρηση Μάθετε Μπορείτε Haskell.
Είναι οι πόροι.
Αυτό είναι το πώς άρχισα μάθησης, και είναι μεγάλη.
Δεν χαζή μάθησης.
>> CONNOR HARRIS: Έτσι είναι σε απευθείας σύνδεση.
Έτσι, ένας τύπος που ονομάζεται [δεν ακούγεται] learnyouahaskell.com, χωρίς κενά.
Γραμματική είναι άρρωστος.
STEPHEN KREWSON: Είναι εικονογραφημένα, πάρα πολύ.
CONNOR HARRIS: Λοιπόν, τι είναι LilyPond;
Είναι μια δηλωτική προγραμματισμό γλώσσα για τη μουσική στοιχειοθεσίας.
Έτσι, μπορείτε να declarative-- σκέφτονται τα πράγματα όπως HTML,
όπου δεν είστε saying-- HTML Δε λέει πώς web browsers θα πρέπει να
καθιστούν σελίδες βήμα προς βήμα.
Είναι απλά το λέω αυτό είναι μια περιγραφή κειμένου
τι θέλετε η σελίδα να μοιάσει.
>> Και τότε είναι επίσης ένα πρόγραμμα που συγκεντρώνει αυτή τη γλώσσα,
ή να το διαβάσετε στην συνέχεια και στην πραγματικότητα την στοιχειοθεσία για σας,
και φτύσει αυτά υπέροχο αναζητούν βαθμολογίες PDF.
Μπορείτε επίσης να πάρετε μορφή PNG ή οτιδήποτε άλλο.
Ένας καλός τρόπος για να σκεφτούμε αυτού είναι κατ 'αναλογίαν
είναι ότι το LaTeX είναι περίπου όπως LillyPond, αλλά μόνο για απλούς στοιχειοθεσίας.
Έτσι, αντί of-- δεν είναι WYSIWYG, τι βλέπετε
Είναι αυτό που παίρνετε, όπως, ας πούμε Finale είναι, ή Sibelius,
ή το Microsoft Word, όπου μπορείτε να πληκτρολογήσετε σε πραγματικό χρόνο και τα σχέδια τα πράγματα σε πραγματικό χρόνο
και να δείτε τις αλλαγές ακαριαία.
>> Είναι βασισμένο σε κείμενο.
Θα πρέπει να συγκεντρώσει σας αποτελέσματα χρησιμοποιώντας ένα ξεχωριστό πρόγραμμα
και να βγει αργότερα αρχεία PDF.
Αυτό είναι λίγο λιγότερο βολικό για χρήση εάν είστε
προσπαθεί να γράψει απευθείας σε βαθμολογία και είστε
επιχειρεί να συνθέσει και στον υπολογιστή.
Αλλά υπάρχουν πολλά πλεονεκτήματα για αυτό.
Ένα, αυτό φαίνεται πολύ καλύτερο, γιατί μπορεί πραγματικά LillyPond
πάρτε το χρόνο να κάνουμε διάταξης αποφάσεις σωστά,
σε αντίθεση με Sibelius ή Finale, τα οποία έχουν να κάνει τόσο επιβαρυμένη αλγορίθμων
ότι μπορεί να εμφανίσει τα πράγματα σε πραγματικό χρόνο.
>> Γιατί λοιπόν είναι LilyPond-- γραφικά υπολογιστών είναι δύσκολο.
Αν κάνεις κάτι με τη μουσική και θέλετε να γράψετε αποτελέσματα,
δεν θέλετε να γράψετε τα πάντα από τον εαυτό σας
ξεκινώντας με το πώς να επιστήσω επιτελεία και πώς να επιστήσω σημειωματάρια.
Είναι πολύ δύσκολο. Αυτό που έχει γίνει παλιότερα.
Είσαι μια χαρά.
>> Αν θέλετε να χρησιμοποιήσετε Finale ή του Sibelius, οι μορφές αρχείων για αυτά τα πράγματα
είναι πολύ περίπλοκη, και δεν μπορείτε πραγματικά να τους χρησιμοποιήσετε με προγραμματισμό.
Μπορείτε να ανοίξει Σιμπέλιους με Φινάλε και πηγαίνετε στο Αρχείο, Εξαγωγή ως PDF εαυτό σας,
αλλά δεν μπορείτε πραγματικά να καλέστε ότι από μια δέσμη ενεργειών.
LillyPond, μπορείτε να καλέσετε από τις εν λόγω σενάρια.
Θα μπορούσατε εύκολα να επαναλάβει LillyPond με το LaTeX.
Δεν θα έχω τόσο πολύ χρόνο για να πάει σε αυτές τις τεχνολογίες τώρα,
αλλά υπάρχουν.
Αν θέλετε να δείτε σε ένα βιβλίο LillyPond,
Είναι ένα πρόγραμμα που έρχεται με διανομής LillyPond σας,
και είναι για την επανάληψη LillyPond θραύσματα σε LaTeX
αν θέλετε να κάνετε κάτι σαν ένα μεγάλο έγγραφο μουσικολογία
με παραδείγματα, για παράδειγμα.
Και είναι μια καλή ικανότητα για ζωή, αν κάνετε κάτι
με τη μουσική, όχι μόνο CS50.
Έχω χρησιμοποιήσει LillyPond για όλους σύνθεση των έργων μου
από τότε που ήταν βασικά ένα ανώτερος στο γυμνάσιο.
>> Τόσο εδώ είναι μερικά απλά παραδείγματα.
Αυτό είναι βασικά αντιπροσωπευτική από το επίπεδο δυσκολίας
ότι οι περισσότεροι άνθρωποι θα το πρόσωπο αυτό που προσπαθούσαν
να χρησιμοποιούν LilyPond για απλά έργα.
Αυτή πρώτο είναι η αρχή σε ένα χορικό πρελούδιο του Μπαχ.
Αυτό το ένα κάτω είναι ένα απόσπασμα από ένα από τα δικά μου έργα,
και είναι ακριβώς εκεί για να δείξουν Σας πράγματα όπως [δεν ακούγεται]
βάζοντας πολλαπλές γραμμές με τον ίδιο το προσωπικό, πώς λυρική undersetting λειτουργεί.
Λυρική υποστρώματα είναι ένα πράγμα που είναι πολύ εύκολο στη χρήση LilyPond για χορωδιακής μουσικής.
>> Και έτσι τότε δεν υπάρχει κάποια περισσότερα περίπλοκη παραδείγματα εδώ.
Όλα αυτά γίνονται στο LilyPond και είναι εφικτό.
Αυτό το πρώτο απόσπασμα είναι από το [Δεν ακούγεται] από [δεν ακούγεται].
Και αυτό [δεν ακούγεται] από ένα κομμάτι για σόλο μπάσο
φλάουτο με [δεν ακούγεται], ο οποίος είναι ένας longtime-- που
ήταν ένας μακροπρόθεσμος μέλος της Τμήμα Μουσικών Σπουδών εδώ, νομίζω.
Δεν είμαι σίγουρος πού έχει πάει μακριά για να.
Αλλά ήταν ο σύμβουλος του Χάρβαρντ Σύνδεσμος Συνθετών για μεγάλο χρονικό διάστημα.
Υπέροχος άνθρωπος.
Και γράφει κάποια μουσική που έχει πολύ περίπλοκο συμβολισμό ότι LillyPond
μπορεί, ωστόσο, να χειριστεί πολύ καλά.
>> Έτσι απλά για να σας δώσει μια αίσθηση του τι δυνατότητες Αυτό το πράγμα είναι τόσο are--
τα εσωτερικά της LillyPond είναι πολύ περίπλοκη.
Και μπορείτε να το χρησιμοποιήσετε για ένα μεγάλο χρονικό διάστημα, συμπεριλαμβανομένων
για κάποιο αρκετά περίπλοκη τα πράγματα, χωρίς πραγματικά να
χρειάζεται να γνωρίζουμε πολλά γι 'αυτούς.
Αλλά η βασική ιδέα είναι ότι για το χαμηλότερο επίπεδο, τα άτομα της LillyPonds
είναι οι σημειώσεις.
Οι σημειώσεις περιέχουν ένα πλαίσιο που ονομάζεται φωνές.
Έτσι, στο πλαίσιο φωνή βασικά αντιστοιχεί
σε μια ενιαία γραμμή της πολυφωνίας.
Και τότε το πλαίσιο μπορεί να περιέχονται ιεραρχικά
σε υψηλότερο επίπεδο, ότι αυτοί αντιπροσωπεύουν επιτελεία στο σκορ
ή μεγαλύτερες ομάδες, όπως επιτελεία πιάνο ή χορωδία επιτελεία,
και στη συνέχεια, τελικά ολόκληρο το σκορ πλαίσια.
Και μπορείτε πραγματικά να συμπεριλάβει πολλαπλά αποτελέσματα σε ένα βιβλίο.
>> Και κάθε πλαίσιο έχει αριθμός συνημμένων χαρακτών.
Αν κοιτάξετε μέσα από το περιεχόμενα του ένα πλαίσιο
και να εκτυπώσετε ένα συγκεκριμένο σύμβολο ή ορισμένη κατηγορία των συμβόλων, όπως απαιτείται.
Έτσι, σε κάθε πλαίσιο ομιλίας, υπάρχει [δεν ακούγεται] σημειώσεις
χαράκτης που είναι βασικά μια λειτουργία ή ένα αντικείμενο που γράφει όλα το σημείωμα
κεφάλια στα σωστά τμήματα μιας σελίδας.
Στη συνέχεια, υπάρχει μια σχισμή χαράκτης, η οποία γράφει έξω σχισμές στο προσωπικό.
Στη συνέχεια, υπάρχει ένα μετρονόμο σήμα χαράκτη ότι
γράφει έξω μετρονόμος σήματα σε ένα αποτέλεσμα.
Και όλα αυτά ταιριάζουν πολύ και μέσα στην ιεραρχία.
Και είναι πολύ, πολύ, πολύ προσαρμόσιμη, η οποία θα πρέπει να
αν θέλετε να πάρετε τα πράγματα όπως αυτό.
>> Έτσι, όλα τα πλαίσια έχουν πολλές διαφορετικές ιδιότητες
ότι μπορείτε να τροποποιήσετε για τα πάντα από την απόσταση σε διάφορα γραμματοσειράς
επιλογή για τα μεγέθη των πραγμάτων.
Αν θέλετε να κάνετε ακόμα πιο περίπλοκα τα πράγματα,
υπάρχει ένα ενσωματωμένο scripting γλώσσα.
Χρησιμοποιούν σύστημα, το οποίο είναι διάλεκτος της LISP.
Αυτά δεν κάνει πιθανώς σημαίνει τίποτα για σένα.
Αλλά βασικά, ένα σύστημα άλλη λειτουργική
γλώσσα προγραμματισμού, περισσότερο ή λιγότερο.
>> STEPHEN KREWSON: Η γραβάτα-in.
>> CONNOR Harris: Ναι.
Είναι μια καλή γραβάτα-in, υποθέτω.
Και αυτό είναι που χρησιμοποιείται ως γλώσσα διδασκαλίας, στην πραγματικότητα, κάτω Μαζικής Ave. Στο MIT.
Και είναι πολύ βολικό για LillyPond για διάφορους τεχνικούς λόγους.
>> Και έτσι, αν θέλετε να κάνετε απλές τσιμπήματα εξαρτάται από υποθετικά,
για example-- υπάρχει κάποια κατάσταση της βαθμολογίας που έχει συναντήσει,
να τροποποιήσουν το διάταξη ή whatnot-- συνέχεια
Οι εγκαταστάσεις αυτές υπάρχουν.
Είναι περίπλοκο.
Έτσι, εδώ είναι μια αρκετά απλή δείγμα κώδικα.
Είναι πέντε γραμμές.
Βασικά, είμαι ορίζουν δύο επιτελεία.
Είναι στο 3/4.
Το πρώτο προσωπικό έχει μια συνημμένο σήμα τέμπο,
αλλά αυτό είναι πραγματικά συμβαίνει να πάει σε ολόκληρο το σκορ,
επειδή τα σήματα tempo βρίσκονται στο επίπεδο του σκορ.
Ο χαράκτης σήμα μετρονόμου Επισυνάπτεται να σκοράρει πλαίσιο.
Υπάρχουν διαφορετικά κλειδιά, επειδή το [δεν ακούγεται] χαράκτης
Επισυνάπτεται τα επιτελεία.
Μπορείτε πραγματικά να κάνουμε είναι.
Το δείγμα που έγραψα είναι στην πραγματικότητα σε Ντο μείζονα,
αλλά αυτό είναι μόνο για να αποδεικνύουν μπορείτε να έχετε
διαφορετικά κλειδιά σε διαφορετικές επιτελεία.
Και η βασική σύνταξη είναι να γράψετε σημειώστε τα ονόματα με E, F, G, οτιδήποτε.
Αν θέλετε να κάνετε αλλοιώσεις, Σας επίθημα ή ES.
Αυτό είναι από την ολλανδική μουσικολογικά συνέδρια.
>> Και για να κάνουμε άλματα οκτάβας, θα πρέπει να χρησιμοποιήσετε αυτά τα σημάδια υποδιαίρεσης, κόμμα ή απόστροφο.
Η σχετική σημαίνει μόνο Ό, τι έχει μια σημείωση,
αυτόματα θα plaec στο οκτάβα πλησιέστερα προς την προηγούμενη.
Και αν θέλετε να πηδούν πάνω από α fifth-- πω ένα πέμπτο ή more--
τότε θα πρέπει να χρησιμοποιήσετε το [δεν ακούγεται].
Αλλά κατά τα άλλα, δεν χρειάζεται να προσδιορίζει την οκτάβα κάθε νότα.
>> Και σε σχέση C, ο πρωθυπουργός, και C, μπορείτε απλά προσδιορίστε μέση C
και της βάσης C, ιδιαίτερα πρώτες νότες.
Στη συνέχεια, έχετε αυτά τα επιτελεία που οργανώνουν αυτές οι δύο φωνές ή δείγματα της μουσικής,
και έχετε ένα σκορ.
Και αυτό μοιάζει με αυτό.
>> Αν θέλετε να πάρετε το χρόνο για να αντίγραφο αυτού του δείγματος των LillyPond
κώδικα σχετικά με το προηγούμενο σύρετε προς τα κάτω εδώ, και σας
μπορεί να γράψει για τον εαυτό σας LillyPond.
Ξέρω ότι έχουμε κάτι ότι μοιάζει πολύ με αυτό.
Έτσι, υπάρχει μια άλλη τεχνολογία Μουσική ονομάζεται XML διατηρείται
από εντελώς διαφορετικούς ανθρώπους.
Η XML είναι ένα κείμενο δεδομένων structure-- μου δεν θα πρέπει να λένε ότι τα δεδομένα structure-- πω
αλληγορία χάρτη είδος.
Και αυτό είναι σχεδιασμένο για να κρατήσει ιεραρχική δεδομένων πολύ καλά.
HTML, για παράδειγμα, είναι ένα είδος του XML.
Και μπορείτε να πείτε επειδή XML είχε όλα τα υποστηρίγματα γωνίας και της γωνίας
σημάτων βραχίονα κάθετο ότι τα πεδία δεδομένων show.
>> Δεν έχω έναν κώδικα παράδειγμα από το Music XML.
Μπορείτε να βρείτε τον εαυτό σας.
Βασικά, ο λόγος μπορεί να θέλετε να χρησιμοποιούν XML ως το ενδιάμεσο στάδιο
Είναι, πρώτα απ 'όλα, είναι μια μορφή ανταλλαγής
για βασικά every-- εγώ δεν θα έλεγα κάθε, αλλά πολλά διαφορετικά βαθμολογίας
συγγραφείς.
Έτσι, αν γράψετε στη Μουσική XML, όχι μόνο μπορεί να LillyPond
διαβάστε το με τη βοήθεια αυτού του auxilary πρόγραμμα που ονομάζεται Music XML για να LY,
αλλά επίσης μπορεί να διαβάσει Φινάλε αυτό, Sibelius μπορεί να το διαβάσει.
Ανάλογα με το πόσο εσωτερικό αντικείμενο σας ιεραρχία εργάζεται για την εκπροσώπηση της μουσικής,
θα μπορούσε να είναι πιο εύκολο να γράψω στη Μουσική XML από το να LillyPond
και να στηριχθεί μόνο σε Μουσική XML να LY να κάνετε τη μετατροπή.
>> Δεν νομίζω ότι [δεν ακούγεται] έχει Μουσική XML.
STEPHEN KREWSON: Αυτό δεν ισχύει.
Κάποιος εργάζεται σε αυτό, όμως.
>> CONNOR HARRIS: OK.
Euterpea δεν έχουν Λειτουργία εξόδου Μουσική XML ακόμα.
Αν θέλετε μια τελική ιδέα του έργου, ίσως έρθετε σε επαφή με παιδιά
Ο Stephen ξέρει, και θα μπορούσε να χρησιμοποιήσει τη βοήθειά σας.
>> STEPHEN KREWSON: Θα ήθελα πολύ αυτό.
CONNOR HARRIS: Επίσης, ουσιαστικά, κάθε γλώσσες προγραμματισμού
ότι αξίζει το άλας της έχει ήδη μια βιβλιοθήκη XML,
ώστε να μπορείτε να μετατρέψετε όλα τα εσωτερικά της μουσικής σας σε κάποιο αντικείμενο
ότι η βιβλιοθήκη XML μπορεί να γράψει ότι θα απαιτούν λιγότερα
μεταβολές στην εσωτερική δομή σας για ό, τι μουσική σας αντικείμενα
θέλω να γράψω ό, τι γράφει το άμεσα σε LillyPond θα.
Στη συνέχεια, απλά να το τυπώσετε έξω με XML με οι βιβλιοθήκες XML στη γλώσσα σας,
η οποία θα εγγυάται ότι είναι συντακτικά σωστά και τα πάντα,
και στη συνέχεια να το μετατρέψει σε LillyPond.
Έτσι, η τεχνολογία μπορεί να θέλετε να εξετάσουμε αν κάνετε κάτι
σαν αυτό.
>> [Δεν ακούγεται], μια άλλη auxilarry τεχνολογία.
Αυτό είναι βασικά Tech Έργων ή Tech Στούντιο για LillyPond.
Έτσι προσφέρει βοήθεια με σύνταξη, με τα πρότυπα
για διάφορα κοινά συνδυασμούς οργάνων.
Επιτρέπει την προβολή της διαίρεσης της οθόνης έτσι μπορείτε να έχετε τον κωδικό σας σε ένα παράθυρο
και PDF σε ένα άλλο παράθυρο και κάντε κλικ για θέσεις στο PDF
για να μεταβείτε στο σχετικό κηλίδες στο πηγαίο κώδικα σας.
Αυτό είναι περισσότερο χρήσιμο αν είστε πραγματικά γραπτώς LillyPond αρχεία εαυτό σας
από ό, τι εάν είστε δημιουργία προγραμματισμού τους.
Αλλά και πάλι, αυτό είναι κάτι χρήσιμο να έχουμε.
>> Εξαιρετική.
Ένα άλλο resources-- απλά θα περνούν από αυτό πολύ γρήγορα.
LillyPond manuals-- LillyPond έχει εξαιρετική τεκμηρίωση στην ιστοσελίδα της.
Έχουν ένα φροντιστήριο.
Έχουν μια αναφορά σύνταξη.
Έχουν εκατοντάδες αποσπάσματα για διάφορα μικρά πράγματα
yo ίσως χρειαστεί να κάνετε για να αποδείξουν διάφορες δυνατότητες.
Αν θέλετε να χρησιμοποιήσετε η γλώσσα scripting
ή να κάνει πιο εκτεταμένη προσαρμογές, τότε υπάρχει
Εσωτερικά αναφορά σε αυτή τη διεύθυνση URL.
Αν θέλετε να χρησιμοποιήσετε το Music XML, υπάρχει ότι η διεύθυνση URL, musicxml.com/tutorial.
>> Και στη συνέχεια, αν θα πρέπει να μάθετε καθεστώς γιατί πραγματικά θέλετε να χρησιμοποιήσετε
οι scripting εγκαταστάσεις στο LillyPond, τότε υπάρχει μια [δεν ακούγεται] κάλεσε
Δομημένη Ερμηνεία των προγραμμάτων ηλεκτρονικών υπολογιστών,
η οποία δεν είναι μόνο η δεύτερη μεγαλύτερο βιβλίο CS ποτέ written--
βρείτε μου μετά αν θέλετε να ξέρετε τι Νομίζω ότι το μεγαλύτερο μία is--
αλλά είναι επίσης ένα πολύ καλό εισαγωγή στη γλώσσα σωστή.
Δεν θα χρειαστεί περισσότερο από ό, τι τα πρώτα τμήματα.
>> Και αυτό είναι όλο.
Καμιά ερώτηση?
>> Φοιτητής: Πού μπορώ να κατεβάσω παράγεται σας Frere Jacques
ώστε να μπορώ να το βάλετε στο iPod μου;
>> STEPHEN KREWSON: Λοιπόν, μπορείτε να γράψετε έξω σε κάποιο αρχείο wav σε Euterpea.
Και έχετε τον κωδικό.
Είναι στο GitHub.
Φτιάξτε το δικό σας παραλλαγές Frere Jacques από CS50 κυψέλη μυαλό.
Θα ήταν τέλεια.
CONNOR HARRIS: Οποιοσδήποτε άλλος;
STEPHEN KREWSON: Χρειαζόμαστε ένα καλύτερο μπάσο τύμπανο, πάρα πολύ.
Είναι πολύ άσχημα.
>> Φοιτητής: Euterpea δεν έχει μόνο η πλευρά σύνθεση, αλλά signal--
STEPHEN KREWSON: Ναι.
Στην πραγματικότητα, το έργο μου έκανε στο Euterpea όταν
πήρε this-- υπάρχει μια μεταπτυχιακό μάθημα στο Yale ότι
χρησιμοποιεί it-- ήταν στην σύνθεση ήχου.
Έτσι, υπάρχει μια πραγματικά ωραίο τρόπο χρησιμοποιώντας τα βέλη
και μερικά από τα σημειογραφία είδαμε του συνθέτοντας μαζί λειτουργίες του σήματος.
Ειδικότερα, το μπάσο για τους περισσότερους από αυτούς είναι μόνο ένα απλό ημιτονοειδές κύμα.
Αλλά αν ξεκινήσετε τη σύνταξη εκείνων στο προγραμματικό παράξενο τρόπο,
μπορείτε να πάρετε τρελό ήχο εφέ, όπως παράξενο καταρράκτες.
Μπορείτε να δημιουργήσετε πολύ λιθίαση ήχους με πολλά διαφοροποίησης.
>> Έκανα ένα έργο σε κοκκώδη σύνθεση, η οποία είναι
κάπου μεταξύ FM και δειγματοληψίας.
Παίρνετε πολύ μικρό, λίγο δείγματα, και στη συνέχεια
συνδυάστε τα με κάποιο είδος του διαμορφωτή και να δημιουργήσουν ένα πιο πλούσιο ήχο.
Κάναμε επίσης φυσική μοντελοποίηση, έτσι Προσπαθώ να σκεφτώ για την φυσική
και ψυχοακουστική κάτι σαν τρομπέτα, και να σκεφτόμαστε τον τρόπο
ο ήχος που αναπηδούν το κουδούνι της τρομπέτας
και η ακουστική του το δωμάτιο και μοντελοποίηση
ότι με τις βασικές ταλαντωτές.
CONNOR HARRIS: Ευχαριστώ πολύ.
Ευχαριστώ που ήρθες.
Και είμαι πάντα πρόθυμος να να λάβει ερωτήσεις από email--
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Ναι. stephen.krewson@yale.edu.
Δροσερός.