1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Γεια σου. 3 00:00:05,930 --> 00:00:06,820 Είμαι Κόνορ Harris. 4 00:00:06,820 --> 00:00:09,729 Είμαι CA CS50 στο Χάρβαρντ. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Είμαι Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Είμαι TF για CS50 στο Yale. 7 00:00:12,582 --> 00:00:15,790 CONNOR Harris: Και θα πάμε να μιλήσουμε για ορισμένες τεχνολογίες που μπορεί να 8 00:00:15,790 --> 00:00:18,880 θέλετε να χρησιμοποιήσετε, αν σας ενδιαφέρει για να κάνει έναν τελικό σχέδιο ή πραγματικά 9 00:00:18,880 --> 00:00:20,920 τίποτα με τη μουσική. 10 00:00:20,920 --> 00:00:24,400 Εμείς πάμε για να συγκεντρώσουμε την προσοχή για πρώτη φορά γλώσσα προγραμματισμού που ονομάζεται Haskell. 11 00:00:24,400 --> 00:00:26,280 Είναι μια λειτουργική γλώσσα, έτσι ώστε το παράδειγμα 12 00:00:26,280 --> 00:00:29,620 είναι πολύ διαφορετικό από το C ή PHP ή άλλες προστακτικές γλώσσες 13 00:00:29,620 --> 00:00:33,450 ότι έχετε χρησιμοποιήσει ήδη, και ιδιαίτερα σε μια βιβλιοθήκη γραμμένο σε Haskell 14 00:00:33,450 --> 00:00:40,240 που ονομάζεται Euterpea, η οποία μπορεί να βοηθήσει τους ανθρώπους με λειτουργικά γράφω μουσική, 15 00:00:40,240 --> 00:00:40,780 βασικά. 16 00:00:40,780 --> 00:00:43,400 Και Stephen θα σας καθοδηγήσει μέσα από ένα μεγάλο παράδειγμα γι 'αυτό. 17 00:00:43,400 --> 00:00:46,423 >> Μετά από αυτό, εγώ θα σας παρουσιάσουμε κάτι που ονομάζεται LillyPond, η οποία 18 00:00:46,423 --> 00:00:48,370 είναι μια τεχνολογία για την στοιχειοθεσία μουσική. 19 00:00:48,370 --> 00:00:50,830 Είναι περίπου όπως το LaTeX για τη μουσική αν κάποιος από εσάς 20 00:00:50,830 --> 00:00:57,530 έχουν χρησιμοποιήσει LaTeX για μαθήματα μαθηματικών ή άλλες κατηγορίες σύνολο P ή ό, τι έχετε. 21 00:00:57,530 --> 00:01:00,440 Και γι 'αυτό θα σας δώσω, και πάλι, μερικά απλά παραδείγματα που 22 00:01:00,440 --> 00:01:03,640 και να σας δείξουμε τη γενική κατεύθυνση κάποιων καλύτερα τους πόρους. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: Σε Επιπλέον, έχουμε στη σκέψη μας 24 00:01:04,319 --> 00:01:06,720 θα ήταν δροσερό για να συσταθεί ένα μικρό κομμάτι της συμβουλές 25 00:01:06,720 --> 00:01:10,780 προς έναν αγωγό μεταξύ Euterpea δημιουργούνται αρχεία MIDI 26 00:01:10,780 --> 00:01:13,910 σε LillyPond, έτσι παρέχουμε μερικές οδηγίες για τα σενάρια 27 00:01:13,910 --> 00:01:16,310 για να γίνει αυτό που είναι παρέχονται με LillyPond 28 00:01:16,310 --> 00:01:19,160 ακριβώς για να κρατήσει ανοικτή πηγή και να πάρετε μια αγωγός πηγαίνει. 29 00:01:19,160 --> 00:01:20,910 CONNOR Harris: Και πάλι, θα πρέπει να τονίσουμε, 30 00:01:20,910 --> 00:01:23,100 Αυτές οι δύο τεχνολογίες, θα Δεν χρειάζεται να τα χρησιμοποιούν από κοινού. 31 00:01:23,100 --> 00:01:25,370 Δεν είστε σχεδιαστεί για να λειτουργεί μαζί, αν και το κάνουν πολύ καλά. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Δεξιά. 33 00:01:26,362 --> 00:01:30,116 Και εντελώς δωρεάν. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Λοιπόν αναγνωρίσεις, απλά διαβάστε αυτό. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: δεόντως υπόψη. 36 00:01:33,406 --> 00:01:36,360 Χάρη σε αυτά τα παιδιά. 37 00:01:36,360 --> 00:01:39,180 Αυτό εγώ θα σταθώ σε ένα μόνο για μια στιγμή. 38 00:01:39,180 --> 00:01:41,560 Η διαδικασία εγκατάστασης είναι λίγο δύσκολο. 39 00:01:41,560 --> 00:01:45,420 Έχουμε μια μένα διαβάσει για το GitHub ότι μπορείτε να ρίξετε μια ματιά στο. 40 00:01:45,420 --> 00:01:47,840 Απλά στείλτε μου αν έχετε οποιεσδήποτε ερωτήσεις. 41 00:01:47,840 --> 00:01:52,829 Αλλά θα τρέξει αυτή με την παραδοχή ότι αυτό λειτουργεί για όλους. 42 00:01:52,829 --> 00:01:55,620 CONNOR Harris: Και αν δεν μπορείτε LillyPond πάρει να εργαστεί, δεν είναι μεγάλη υπόθεση. 43 00:01:55,620 --> 00:02:00,139 Δεν υπάρχει καμία ζωντανή συλλογή που θα συμμετέχουν, τουλάχιστον στο τέλος μου. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell και LillyPond θα πρέπει να έχουν και οι δύο εγκαταστάτες. 45 00:02:02,930 --> 00:02:08,497 Euterpea κατεβαίνει ως πακέτο, ούτω καθεξής και ούτω καθεξής. 46 00:02:08,497 --> 00:02:10,080 Έτσι μιλάμε για τη μουσική του υπολογιστή. 47 00:02:10,080 --> 00:02:12,990 Και αυτό είναι μόνο ένα πολύ θέα 50.000 ποδιών. 48 00:02:12,990 --> 00:02:15,700 Υπάρχουν μερικές διαφορετικές πτυχές του. 49 00:02:15,700 --> 00:02:18,120 Και αυτό είναι τραχύ και είναι πρόκειται να επισκιάζει κάποιες λεπτομέρειες. 50 00:02:18,120 --> 00:02:22,090 Αλλά θα μπορούσαμε να σκεφτούμε κάτι όπως αλγοριθμική σύνθεση, 51 00:02:22,090 --> 00:02:24,920 χρησιμοποιώντας αλγόριθμους, χρησιμοποιώντας κώδικα, για τη δημιουργία 52 00:02:24,920 --> 00:02:30,280 κάποιο είδος of-- ίσως ένα αυτο-ομοιότητας ακολουθία των σημειώσεων, ή ίσως σημειώσεις 53 00:02:30,280 --> 00:02:33,330 κάτω από κάποιο εμπόδιο. 54 00:02:33,330 --> 00:02:35,350 Και τότε εκείνοι θα μπορούσε να είναι εκτελούνται ή να ερμηνευθούν 55 00:02:35,350 --> 00:02:38,390 με αναλογικά όργανα, ή κάτι τέτοιο. 56 00:02:38,390 --> 00:02:42,010 Όμως, η σύνθεση ήταν γίνεται αλγοριθμικά. 57 00:02:42,010 --> 00:02:45,120 >> Αλλά βέβαια, ίσως η περιοχή της μουσική του υπολογιστή ή την ψηφιακή μουσική 58 00:02:45,120 --> 00:02:48,870 είμαστε πιο εξοικειωμένοι με την ψηφιακή είναι σύνθεση ήχου ή ψηφιακή δειγματοληψία 59 00:02:48,870 --> 00:02:51,160 και ψηφιακή εγγραφή. 60 00:02:51,160 --> 00:02:55,650 Μια παρτίδα των ψηφιακών μέσων είναι γίνεται μέσω της ψηφιακής δειγματοληψίας. 61 00:02:55,650 --> 00:03:00,110 Στην πραγματικότητα, θα πρέπει να χρησιμοποιούν μία από αυτές η μορφή του ήχου βιβλιοθήκη γραμματοσειρά αργότερα. 62 00:03:00,110 --> 00:03:02,850 >> Αλλά υπάρχει και κάτι που ονομάζεται ψηφιακή σύνθεση που βγήκαν 63 00:03:02,850 --> 00:03:08,650 στα τέλη της δεκαετίας του '70 και στη δεκαετία του '80 με Yamaha και John Chowning στο Πανεπιστήμιο του Στάνφορντ 64 00:03:08,650 --> 00:03:11,990 κάνει σύνθεση FM ή Συχνότητα σύνθεση διαμόρφωσης, 65 00:03:11,990 --> 00:03:15,100 όπου είχατε ένα φορέα σήμα και ένα σήμα διαμόρφωσης 66 00:03:15,100 --> 00:03:18,270 τόσο στο φάσμα ήχου. 67 00:03:18,270 --> 00:03:22,570 Αλλά αυτό που επικεντρώθηκε στην σήμερα είναι κάτι που ονομάζεται MIDI, 68 00:03:22,570 --> 00:03:25,040 και φυσικά, την αλγοριθμική σύνθεση. 69 00:03:25,040 --> 00:03:30,940 >> Εμείς δεν πρόκειται να κάνει μέσα, αλλά είμαστε αντί πρόκειται να κάνει κάποια μουσική, 70 00:03:30,940 --> 00:03:33,940 και, στη συνέχεια, ότι θα πάρει ερμηνεύεται από ορισμένα μέσα τα οποία 71 00:03:33,940 --> 00:03:38,300 είναι σύμφωνο προς το General MIDI πρότυπο. 72 00:03:38,300 --> 00:03:40,830 Έτσι τι είναι MIDI; 73 00:03:40,830 --> 00:03:45,550 Είμαι δεν πρόκειται να πάρει πάρα πολύ βαθιά σε αυτό, αλλά MIDI είναι πρωτόκολλο μεταφοράς δεδομένων. 74 00:03:45,550 --> 00:03:49,250 Είναι ένα είδος ενός οδηγού κατά μήκος διαφορετικές εταιρείες και βιομηχανίες 75 00:03:49,250 --> 00:03:52,250 για την οργάνωση των ήχων ή μπαλώματα. 76 00:03:52,250 --> 00:03:54,170 Έτσι, θα δούμε ότι υπάρχει ένα πρότυπο MIDI 77 00:03:54,170 --> 00:03:57,500 για όλα τα διαφορετικά κρουστά ήχους MIDI και συστάσεις 78 00:03:57,500 --> 00:04:01,360 για όλους τους διαφορετικούς τύπους του synth ή διαφορετικούς τύπους όλων των οργάνων 79 00:04:01,360 --> 00:04:03,650 ομάδες σε μια ορχήστρα, λένε. 80 00:04:03,650 --> 00:04:08,916 >> Είστε πιθανώς εξοικειωμένοι με 0 έως 127 μηνύματα MIDI. 81 00:04:08,916 --> 00:04:12,920 Ένα σήμα MIDI είναι τυπικά ένα bit που υποδεικνύει 82 00:04:12,920 --> 00:04:16,130 είτε πρόκειται για τα δεδομένα ή το πακέτο κατάστασης, και στη συνέχεια υπάρχει 83 00:04:16,130 --> 00:04:18,589 από επτά δυαδικά ψηφία ενός σήματος. 84 00:04:18,589 --> 00:04:21,430 Και αυτά μπορεί να ελέγξει τα πάντα, από τον όγκο 85 00:04:21,430 --> 00:04:25,330 με τη δράση ή την πίεση σε ένα συγκεκριμένο κλειδί 86 00:04:25,330 --> 00:04:29,400 αν είστε επιδόσεις με ένα MIDI ελεγκτής καθώς και, φυσικά, 87 00:04:29,400 --> 00:04:31,250 σημειώσεις. 88 00:04:31,250 --> 00:04:33,450 Και φυσικά, έχει MIDI ήταν εξαιρετικά χρήσιμο, 89 00:04:33,450 --> 00:04:37,550 γιατί είναι ένας τρόπος για να σύρμα μαζί ή αλυσιδωτή 90 00:04:37,550 --> 00:04:41,570 μια δέσμη των συσκευών υλικού MIDI. 91 00:04:41,570 --> 00:04:44,050 Έχω επτά ή οκτώ πίσω στο σπίτι μου. 92 00:04:44,050 --> 00:04:46,610 Παίρνει πραγματικά περίπλοκη, αλλά είναι πραγματικά ισχυρή. 93 00:04:46,610 --> 00:04:47,460 Και είναι πραγματικά παλιά. 94 00:04:47,460 --> 00:04:51,117 Είναι από τις αρχές της δεκαετίας του '80, και Είναι πραγματικά ωραίο και μικρό. 95 00:04:51,117 --> 00:04:51,950 CONNOR Harris: Ναι. 96 00:04:51,950 --> 00:04:54,230 Όλο το κλασικό Nintendo βιντεοπαιχνίδια κατά πάσα πιθανότητα θα 97 00:04:54,230 --> 00:04:56,088 έχουν MIDI αρχεία για τη μουσική, για παράδειγμα. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Εδώ είναι μια παράδειγμα της General MIDI, 100 00:05:01,740 --> 00:05:06,520 δείχνει MIDI ως ένα είδος του γενικού πρωτοκόλλου. 101 00:05:06,520 --> 00:05:13,280 Και νομίζω ότι μπορούμε να σκεφτούμε το διαφορά μεταξύ της προδιαγραφής 102 00:05:13,280 --> 00:05:17,830 ότι θα πρέπει να υπάρχει κάτι σαν αυτά ήχους οργάνων και της πραγματικής 103 00:05:17,830 --> 00:05:21,740 υλοποίηση αυτών των μέσων ακούγεται σε καλή γραμματοσειρά ή ένα συγκεκριμένο MIDI 104 00:05:21,740 --> 00:05:25,740 συνθεσάιζερ ως η διαφορά μεταξύ ίσως ένα typeface-- που λέει, 105 00:05:25,740 --> 00:05:30,350 Σε γενικές γραμμές, αυτό είναι ο σχεδιασμός του αυτό το συγκεκριμένο τρόπο για να αντιπροσωπεύουν 106 00:05:30,350 --> 00:05:35,907 characters-- και μια συγκεκριμένη γραμματοσειρά ότι έχει ένα συγκεκριμένο μέγεθος και χροιά, 107 00:05:35,907 --> 00:05:37,240 και υπάρχει υλοποίηση του the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Ίσως καλύτερη σύγκριση θα ήταν 109 00:05:39,156 --> 00:05:43,430 είναι το πρότυπο Unicode says-- δίνει ένας αριθμός για κάθε χαρακτήρα, και πραγματικά 110 00:05:43,430 --> 00:05:46,830 Κάθε γλώσσα στον κόσμο, ή μια τεράστια σειρά από σενάρια της γλώσσας 111 00:05:46,830 --> 00:05:51,310 στον κόσμο, και στη συνέχεια αυτά είναι καθίσταται σε κάτι γραφικό 112 00:05:51,310 --> 00:05:53,710 από διάφορα πακέτα γραμματοσειρών. 113 00:05:53,710 --> 00:05:56,630 Και προφανώς, μπορείτε να σκεφτείτε MIDI ως Unicode του ήχου. 114 00:05:56,630 --> 00:06:03,250 Και είναι απλά μια λίστα of-- ένα μεγάλο ρεύμα των γεγονότων και των μέσων και εταζέρα, 115 00:06:03,250 --> 00:06:06,090 και πρέπει να έχετε μια ξεχωριστή πρόγραμμα, όπως μια οικογένεια, 116 00:06:06,090 --> 00:06:08,537 να καταστήσει ότι σε κάτι που είναι πολύ έντονα. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Γιατί λοιπόν Haskell; 119 00:06:13,780 --> 00:06:19,110 Haskell είναι ένα λειτουργικό προγραμματισμό γλώσσα, σε πολύ προχωρημένο στάδιο, 120 00:06:19,110 --> 00:06:22,770 πολύ διαφορετικό από C, πολύ διαφορετική από την PHP. 121 00:06:22,770 --> 00:06:28,120 Και θα πάμε να δούμε ότι υπάρχει μια ευκολία της σύνθεσης λειτουργίας σε Haskell 122 00:06:28,120 --> 00:06:37,640 ότι θα μας επιτρέψει να αεράκι μέσα σύνθεση ή την πληκτρολόγηση, μεταγραφή, 123 00:06:37,640 --> 00:06:42,160 κάτι σαν Frere Jacques, αυτό το απλό τραγούδι που 124 00:06:42,160 --> 00:06:46,815 έχει πολλά μέρη σε αυτό που είναι αυτο-όμοια ή επαναλαμβανόμενα. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Έτσι, αυτό θα είναι μερικά από το κίνητρο για τους οποίους 127 00:06:53,250 --> 00:06:59,400 είμαστε χρησιμοποιώντας Haskell, με την οποία λειτουργίες είναι πολίτες πρώτης κατηγορίας. 128 00:06:59,400 --> 00:07:01,120 >> Και ήθελα να επεκτείνει αυτό το λίγο. 129 00:07:01,120 --> 00:07:08,800 Είναι λίγο εύκολο να notate Frere Jacques σε Haskell. 130 00:07:08,800 --> 00:07:12,100 Τι γίνεται όμως αν θέλαμε να προσθέσετε ένα τμήμα τυμπάνου σε αυτό; 131 00:07:12,100 --> 00:07:17,320 Τι θα συμβεί αν θέλαμε να προσπαθήσουμε να κάνουμε κάτι σαν ένα Roland 808 ή 909 τύμπανο 132 00:07:17,320 --> 00:07:20,970 μηχάνημα όπου έχετε περίπου 16 διαφορετικά βήματα; 133 00:07:20,970 --> 00:07:24,590 Συνήθως αυτά είναι θεωρείται ως 16ο σημειώσεις. 134 00:07:24,590 --> 00:07:28,640 Και μπορείτε να ελέγχετε την παγκόσμια tempo, και μπορείτε να διαλέξετε 135 00:07:28,640 --> 00:07:34,620 μια δέσμη των διαφορετικών τμημάτων κρουστά μπάσο τύμπανο, ένα χειροκρότημα, διαφορετικές παγίδες, 136 00:07:34,620 --> 00:07:37,540 ανοικτού και κλειστού υψηλή καπέλα σε τέτοιου είδους κανάλια, 137 00:07:37,540 --> 00:07:41,600 και, στη συνέχεια, μπορείτε να EQ ή ρυθμίσετε την ένταση τους. 138 00:07:41,600 --> 00:07:45,290 >> Και θα δούμε ένα ωραίο τρόπο Haskell να εκπροσωπήσω αυτό το βήμα 139 00:07:45,290 --> 00:07:48,810 sequencer με όλες τις διάφορα δροσερά πράγματα σε Haskell 140 00:07:48,810 --> 00:07:53,100 μπορούμε να κάνουμε με τη δημιουργία λιστών και να φιλτράρουν πάνω από τις λίστες, 141 00:07:53,100 --> 00:07:56,060 χαρτογράφηση πάνω από τις λίστες, χαρτογράφηση λειτουργίες πάνω στις λίστες. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 Και ένα γρήγορο συγγνώμη. 144 00:08:00,760 --> 00:08:05,300 Αυτή είναι μια πολύ βιαστική και υπερβολικά γρήγορο σκίτσο 145 00:08:05,300 --> 00:08:07,620 μερικών από τις πτυχές της Haskell και Euterpea, 146 00:08:07,620 --> 00:08:11,760 το οποίο είναι ένα πεδίο-ειδική ενσωματωμένη γλώσσα γραπτή 147 00:08:11,760 --> 00:08:14,970 σε Haskell για μουσικά είδη. 148 00:08:14,970 --> 00:08:17,350 Επομένως, σας παρακαλώ να δείτε το σε απευθείας σύνδεση κώδικα. 149 00:08:17,350 --> 00:08:22,404 Φωτιά μέχρι GHCI, η οποία είναι η Γλασκώβη Haskell Compiler Διερμηνέας. 150 00:08:22,404 --> 00:08:24,320 Και θα κάνω μερικά από αυτό σε λίγο 151 00:08:24,320 --> 00:08:25,880 ώστε να μπορείτε να δείτε πώς γίνεται. 152 00:08:25,880 --> 00:08:31,021 >> Και αυτό σας επιτρέπει να φορτώσετε με the-- η σύνταξη είναι άνω και κάτω τελεία και, στη συνέχεια, 153 00:08:31,021 --> 00:08:31,520 η εντολή. 154 00:08:31,520 --> 00:08:33,510 Μπορείτε να φορτώσετε σε αρχεία. 155 00:08:33,510 --> 00:08:36,840 Μπορείτε να χρησιμοποιήσετε περιήγηση σε αυτά τα αρχεία για να δείτε όλες τις λειτουργίες που 156 00:08:36,840 --> 00:08:39,169 υπάρχουν σε μια συγκεκριμένη μονάδα. 157 00:08:39,169 --> 00:08:43,850 Και τότε, όπως θα δούμε, τα είδη και τον τύπο τάξεις είναι τόσο σημαντικό σε Haskell, 158 00:08:43,850 --> 00:08:48,850 έτσι ώστε να μπορείτε πάντα να check-- ιδιαίτερα αν εργάζεστε σε ένα νέο DSCL 159 00:08:48,850 --> 00:08:51,600 όπως αυτό, αυτό είναι ένα είδος μουσικής; 160 00:08:51,600 --> 00:08:55,114 Ξέρω για τον τρόπο με αριθμητικό τύποι εργάζονται σε Haskell, 161 00:08:55,114 --> 00:08:56,530 αλλά δεν ξέρω πολλά για τη μουσική. 162 00:08:56,530 --> 00:09:01,280 Αλλά μπορείτε να εξερευνήσετε τον τρόπο που είναι ορίζεται από τη χρήση αυτής της εντολής τ ή τύπο 163 00:09:01,280 --> 00:09:04,577 και, στη συνέχεια, καλώντας σε μια συγκεκριμένη λειτουργία ή ένα αντικείμενο δεδομένων. 164 00:09:04,577 --> 00:09:05,410 CONNOR Harris: Ναι. 165 00:09:05,410 --> 00:09:09,820 Αν νομίζατε C και Clang Ήταν hardass σχετικά με τους τύπους, 166 00:09:09,820 --> 00:09:11,230 δεν έχετε καμία ιδέα για Haskell. 167 00:09:11,230 --> 00:09:14,230 Το καλό πράγμα για Haskell είναι ότι εάν μπορείτε να πάρετε τον κωδικό σας για να συγκεντρώσει 168 00:09:14,230 --> 00:09:16,790 και εάν οι έλεγχοι τύπου Haskell, είναι πιθανώς σωστό, 169 00:09:16,790 --> 00:09:18,675 επειδή το σύστημα τύπος είναι τόσο αυστηρές. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Ναι. 171 00:09:20,090 --> 00:09:21,980 Γι 'αυτό ακριβώς θέλω να πάω through-- και πάλι, 172 00:09:21,980 --> 00:09:27,160 αυτό δεν το κάνει justice-- μερικά από τα χαρακτηριστικά της Haskell ότι, τουλάχιστον 173 00:09:27,160 --> 00:09:31,780 να creators-- του και δημιουργήθηκε στα τέλη της δεκαετίας του 1980 από μια ομάδα ανθρώπων, 174 00:09:31,780 --> 00:09:34,610 μια επιτροπή από περίπου 20 people-- ότι ήταν σημαντικό. 175 00:09:34,610 --> 00:09:36,850 Και το πρώτο πράγμα που που αναφέρονται σε ένα χαρτί ότι 176 00:09:36,850 --> 00:09:41,890 περιέγραψε την γένεση της Haskell κατά τα πρώτα 20 χρόνια ή έτσι 177 00:09:41,890 --> 00:09:43,390 ήταν ότι ήταν τεμπέλης. 178 00:09:43,390 --> 00:09:44,990 Λοιπόν, τι σημαίνει αυτό; 179 00:09:44,990 --> 00:09:49,860 >> Λοιπόν, αυτό σημαίνει ότι όταν έχουμε κάποιο είδος της έκφρασης, θα πρέπει να το αξιολογήσουμε. 180 00:09:49,860 --> 00:09:54,390 Και Haskell κάνει αυτό σε μια κλήση από την ανάγκη τρόπο ή μη αυστηρό τρόπο. 181 00:09:54,390 --> 00:09:57,250 Δηλαδή, αν έχουμε ένα σωρό συστατικά της έκφρασης μας, 182 00:09:57,250 --> 00:10:00,660 προσπαθούμε να καθυστερήσει την αξιολόγηση αυτών των επιμέρους συστατικών 183 00:10:00,660 --> 00:10:05,300 μέχρι την απόλυτη τελευταία minute-- δηλαδή μέχρι τις χρειαζόμαστε πραγματικά. 184 00:10:05,300 --> 00:10:08,480 >> Έτσι, αυτό που είναι means-- πραγματικά δροσερό, ιδίως 185 00:10:08,480 --> 00:10:13,200 αν σκεφτόμαστε την άντληση ένα μουσικό sequencer βήμα. 186 00:10:13,200 --> 00:10:16,740 Μπορείτε να το ενεργοποιήσετε και να αρχίσετε τρέχει ένα βήμα sequence-- 187 00:10:16,740 --> 00:10:20,010 αν εργαστεί ποτέ με ένα τύμπανο machine-- και πηγαίνει ακριβώς για πάντα. 188 00:10:20,010 --> 00:10:24,650 Έτσι, θα ήταν πολύ ωραίο αν θα μπορούσαν να μιμηθούν ότι σε Haskell. 189 00:10:24,650 --> 00:10:31,040 Και μπορούμε να το κάνουμε με το άπειρο αξίες, ιδίως άπειρες λίστες. 190 00:10:31,040 --> 00:10:35,860 Είναι πολύ εύκολο να πληκτρολογήσετε μια άπειρο κατάλογο σε Haskell. 191 00:10:35,860 --> 00:10:39,230 Θα μπορούσατε απλά να χρησιμοποιήσετε τη σύνταξη κάτω Εδώ, όπου θα δείτε 1 έως 3, 192 00:10:39,230 --> 00:10:42,440 αφαιρέστε το 3 1 τελεία τελεία και ότι είναι ένας ατέλειωτος κατάλογος 193 00:10:42,440 --> 00:10:46,960 από όλους τους φυσικούς αριθμούς που εκτείνεται για όσο μπορείτε να φανταστείτε. 194 00:10:46,960 --> 00:10:49,925 >> Θέλω να εισαγάγει μια έννοια της πτυχώσεις αμέσως. 195 00:10:49,925 --> 00:10:51,800 Και πάλι, ο σκοπός από το σεμινάριο αυτό δεν είναι 196 00:10:51,800 --> 00:10:55,770 να μάθουν για πτυχώσεις σε Haskell ή ανώτερες λειτουργίες τάξης. 197 00:10:55,770 --> 00:10:59,640 Αλλά εγώ απλά θέλω να το παρουσιάσουμε να δώσει μια ακριβή αίσθηση του πόσο περίεργα 198 00:10:59,640 --> 00:11:03,700 Haskell είναι και πόσο ισχυρό είναι. 199 00:11:03,700 --> 00:11:08,000 Και κυρίως, θα πάμε να be-- όταν κάνουμε διάφορα μέρη του τυμπάνου μας, 200 00:11:08,000 --> 00:11:12,790 θα πάμε να το χειρισμό των καταλόγων αριθμοί, τους αναδίπλωση πάνω σε κάθε άλλη. 201 00:11:12,790 --> 00:11:17,290 Και για να το κάνουμε αυτό, θα να χρησιμοποιούν χάρτες και πτυχώσεις. 202 00:11:17,290 --> 00:11:21,770 >> Υπάρχει μια δεξιά συνειρμική φορές, το οποίο είναι αυτό το δικαίωμα 203 00:11:21,770 --> 00:11:26,990 here-- 1 μείον την ποσότητα, 2 μείον την ποσότητα, 3 μείον 0. 204 00:11:26,990 --> 00:11:29,170 Και η σύνταξη για ένα φορές, να σας δώσει μια πτυχή 205 00:11:29,170 --> 00:11:34,680 μια τιμή βάσης και στη συνέχεια ένα operation-- σε αυτή την περίπτωση, η προσθήκη ή αφαίρεση. 206 00:11:34,680 --> 00:11:36,280 Έχω δείξει και τις δύο περιπτώσεις. 207 00:11:36,280 --> 00:11:41,760 Και έπειτα υπάρχει ένα συσσωρευτής συσσωρεύεται πάνω από ολόκληρη τη λίστα, 208 00:11:41,760 --> 00:11:46,330 εφαρμογή του εν λόγω φορέα ή συν μείον και, στη συνέχεια συσσωρεύονται. 209 00:11:46,330 --> 00:11:52,680 Έτσι, αυτό θα είναι the-- αν ονομαζόταν με r φορές συν 0, αρχίζοντας με 0, 210 00:11:52,680 --> 00:11:54,720 τότε εμείς θα αθροίσει όλα οι αριθμοί σε αυτή τη λίστα. 211 00:11:54,720 --> 00:11:57,134 Και αυτό είναι μια λίστα με 1 - 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Έτσι, για να το θέσουμε διαφορετικά τρόπο, r φορές διαρκεί τρία επιχειρήματα. 213 00:12:00,050 --> 00:12:02,540 Υπάρχει μια λειτουργία που η ίδια παίρνει δύο επιχειρήματα, 214 00:12:02,540 --> 00:12:05,400 τότε υπάρχει μια τιμή της μίζας, και υπάρχει μια λίστα τιμών. 215 00:12:05,400 --> 00:12:08,570 Και αυτό που κάνετε είναι να πάρετε μίζα αξία, πρώτη τιμή, 216 00:12:08,570 --> 00:12:09,850 βάζουμε σε λειτουργία. 217 00:12:09,850 --> 00:12:11,607 Τι θα βγούμε, Πάρτε ότι, τροφή που 218 00:12:11,607 --> 00:12:13,940 στη λειτουργία του δεύτερη τιμή, τι μπορείτε να πάρετε έξω, 219 00:12:13,940 --> 00:12:16,690 θεωρήσει ότι, τροφοδοτούν το ότι σε λειτουργία της τρίτης τιμής. 220 00:12:16,690 --> 00:12:18,740 Και στη συνέχεια, αν πάει κάτω όλη αυτή η λίστα με αυτόν τον τρόπο, 221 00:12:18,740 --> 00:12:22,970 θα πάμε για να πάρει τελικά κάποια μοναδική αξία που είναι 222 00:12:22,970 --> 00:12:25,720 του ίδιου τύπου για το τι ξεκίνησε με και του ίδιου τύπου 223 00:12:25,720 --> 00:12:29,147 Όπως έχουν τα πράγματα στη λίστα, και στη συνέχεια αυτό είναι το αποτέλεσμα της επιστροφής φορές R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Έτσι συγκεκριμένα, αυτές είναι υψηλότερες λειτουργίες τάξης, 225 00:12:31,980 --> 00:12:34,460 επειδή παίρνετε ένα άλλο λειτουργία ως ένα από τα επιχειρήματα. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR Harris: Ναι. 227 00:12:34,770 --> 00:12:37,820 Εάν έχετε χρησιμοποιήσει ορισμένα άλλα languages-- Ξέρω R, [δεν ακούγεται] 228 00:12:37,820 --> 00:12:41,510 γλώσσα έχει αυτό, που ονομάζεται Μειώστε. 229 00:12:41,510 --> 00:12:45,460 Μπορεί να έχουν παρόμοιες λειτουργίες σε άλλες γλώσσες, απλά ονομάζεται 230 00:12:45,460 --> 00:12:48,160 διαφορετικά πράγματα. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: Και τι είναι ωραίο για φορές R 232 00:12:50,680 --> 00:12:53,880 σε αυτή την περίπτωση είναι ότι η πτυχή R μπορεί να λειτουργήσει με άπειρες λίστες. 233 00:12:53,880 --> 00:12:59,490 Έτσι, σε αυτό το κάτω μέρος, αυτό το P5 δημιουργεί τις σημειώσεις που 234 00:12:59,490 --> 00:13:03,120 είναι ενεργοποιημένες στο sequencer βήμα για την ένα μέρος του τυμπάνου, το πέμπτο τμήμα του τυμπάνου, 235 00:13:03,120 --> 00:13:05,480 και ίσως είναι μια Conga τύμπανο ή κάτι τέτοιο. 236 00:13:05,480 --> 00:13:09,719 Και αυτό είναι μια σκόπιμα αμβλεία τρόπος σύνταξης της παρούσας, 237 00:13:09,719 --> 00:13:11,510 αλλά είναι διασκεδαστικό, γιατί αποδεικνύει πολλά 238 00:13:11,510 --> 00:13:14,460 πράγματα για Haskell και Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Έτσι φορές R αυτού του παχέος εντέρου είναι colon-- μόνο ένας φορέας που ωθεί τα πράγματα 240 00:13:20,650 --> 00:13:25,700 μαζί σε ένα list-- κάλεσε άδειο κατάλογος, ο οποίος είναι μόνο οι κενό μεταξύ παρενθέσεων. 241 00:13:25,700 --> 00:13:28,250 Και καλώ ότι σε αυτό το άπειρο κατάλογο. 242 00:13:28,250 --> 00:13:31,570 Αυτό είναι στην πραγματικότητα δύο λίστες αθροίζονται εδώ κάτω. 243 00:13:31,570 --> 00:13:37,150 Ο κατάλογος 1 κόμμα 6 τελεία κουκίδα είναι 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Έτσι, μέσα σε μόλις Haskell-- λίγα χαρακτήρες, 245 00:13:39,750 --> 00:13:42,420 μπορεί να παράγει το σύνολο της ακολουθία αριθμών 246 00:13:42,420 --> 00:13:46,240 που είναι πέντε αριθμούς εκτός εκτείνεται στο άπειρο σε. 247 00:13:46,240 --> 00:13:49,860 Και εγώ βάζετε μπροστά με αυτήν Αυτή η βραχύτερη λίγο list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- μόνο για να σας δείξω πώς μπορείτε να ενώσετε τις λίστες. 249 00:13:54,370 --> 00:13:55,790 >> Και τότε έχω αναδιπλώνεται. 250 00:13:55,790 --> 00:14:01,510 Και αυτό καταλήγει να είναι απλώς ένα είδος λειτουργία ταυτότητα, αλλά είναι άπειρη. 251 00:14:01,510 --> 00:14:06,070 Και φορές R μπορεί να το κάνει αυτό, επειδή νωχελικά αξιολογεί, όπως στο παραπάνω. 252 00:14:06,070 --> 00:14:10,582 Αν έχουμε μια 1 και 2 και 3, μπορούμε ακριβώς αγκύλη απενεργοποιήσει ολόκληρο το υπόλοιπο. 253 00:14:10,582 --> 00:14:12,290 Αυτό δεν θα λειτουργήσει για μείον ή συν, αλλά 254 00:14:12,290 --> 00:14:17,760 θα εργαστούν για αυτό παχέος εντέρου λειτουργία ταυτότητα στον κατάλογο. 255 00:14:17,760 --> 00:14:24,620 >> Επομένως, πώς θα εφαρμόσω στην πράξη ότι αν έχουν απείρως μακρύ κατάλογο των πραγμάτων; 256 00:14:24,620 --> 00:14:26,500 Λοιπόν, Haskell παρέχει πολλά functions-- 257 00:14:26,500 --> 00:14:29,450 και να εξετάσουμε περισσότερο σε αυτά με τη δική σας time-- όπως λάβει 258 00:14:29,450 --> 00:14:32,200 η οποία λέει, εντάξει, είμαστε δημιουργώντας αυτό το άπειρο κατάλογο, 259 00:14:32,200 --> 00:14:35,950 αλλά είμαστε ακριβώς πρόκειται να πάρει κάποιο τον αριθμό της πληροφορικής και σε αυτό το case-- 260 00:14:35,950 --> 00:14:38,410 θα δούμε αυτό αργότερα σε drum machine μας code-- 261 00:14:38,410 --> 00:14:43,740 GM είναι απλά ένα είδος παγκόσμιου μεταβλητή για τον αριθμό των βημάτων 262 00:14:43,740 --> 00:14:44,610 στο sequencer. 263 00:14:44,610 --> 00:14:47,630 Στις μηχανές roll-Ι που έδειξε, ότι είναι κατά κανόνα 16, 264 00:14:47,630 --> 00:14:51,475 αλλά έχω εφαρμόσει με 32. 265 00:14:51,475 --> 00:14:54,470 Δεν έχει τόση σημασία. 266 00:14:54,470 --> 00:15:00,230 >> Haskell είναι επίσης καθαρό, έτσι ώστε να έχει ισχυρή στατική πληκτρολόγηση που Connor υπαινίχθηκε. 267 00:15:00,230 --> 00:15:03,220 Έτσι, οι λειτουργίες είναι μαθηματικών στο sense-- 268 00:15:03,220 --> 00:15:06,600 ότι είναι περισσότερο μαθηματικές ότι είναι σίγουρο 269 00:15:06,600 --> 00:15:11,530 να μην έχουν πρόσβαση ή να αλλάξετε οποιοδήποτε είδος του μεταβλητή ή να εκτελέσει εισόδου ή εξόδου. 270 00:15:11,530 --> 00:15:14,420 Έτσι, αν έχετε μια συνάρτηση, είναι ντετερμινιστική. 271 00:15:14,420 --> 00:15:17,400 Θα επιστρέψει πάντα το ίδιο αξία στην κατάσταση του προγράμματος 272 00:15:17,400 --> 00:15:19,310 ή να παραμείνει το ίδιο. 273 00:15:19,310 --> 00:15:22,940 Υπάρχουν, βέβαια, εξαιρέσεις Μοναδικής σε αυτό, αλλά αυτό είναι πέρα ​​από το πεδίο εφαρμογής μας. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR Harris: Ναι. 275 00:15:23,900 --> 00:15:26,946 Αυτό σημαίνει, όμως, υπάρχει είναι μερικά σημαντικά [δεν ακούγεται] 276 00:15:26,946 --> 00:15:27,820 συνέπειες αυτού. 277 00:15:27,820 --> 00:15:30,940 Το ένα είναι ότι είναι πολύ εύκολο να παραλληλιστεί προγράμματα Haskell. 278 00:15:30,940 --> 00:15:32,773 Διότι, αν έχετε, λένε, μια λειτουργία που 279 00:15:32,773 --> 00:15:36,064 πρέπει να λειτουργούν σε ένα εκατομμύριο αξίες, εάν Γνωρίζετε ότι η λειτουργία θα είναι πάντα 280 00:15:36,064 --> 00:15:39,280 δίνουν την ίδια τιμή, αν ταΐζετε σε ένα ορισμένο value-- 281 00:15:39,280 --> 00:15:43,055 αν είστε [δεν ακούγεται] f 1, f του 2, τότε f από 3 ή whatnot-- f από 1 282 00:15:43,055 --> 00:15:45,180 δεν πρόκειται να γράψω σε ένα αρχείο ή να κάνουμε κάτι 283 00:15:45,180 --> 00:15:46,850 ότι θα αλλάξει την τιμή της f2. 284 00:15:46,850 --> 00:15:50,220 Μπορείτε απλά να χωρίσουν αυτή τη λειτουργία για ένα εκατομμύρια διαφορετικά μηχανήματα ή ένα εκατομμύριο 285 00:15:50,220 --> 00:15:54,720 διαφορετικά νήματα ή οτιδήποτε άλλο, να πάρετε όλες τις απαντήσεις πίσω, 286 00:15:54,720 --> 00:15:56,900 να πάρετε όλες τις τιμές επιστροφής πίσω, και στη συνέχεια, αυτό είναι όλο. 287 00:15:56,900 --> 00:15:59,780 Έτσι, είναι πολύ εύκολο να παραλληλιστεί πράγματα. 288 00:15:59,780 --> 00:16:03,140 >> Το μειονέκτημα είναι ότι η είσοδος και ιδιαίτερα εξόδου 289 00:16:03,140 --> 00:16:05,720 εντάσσονται στο σύστημα του τύπου σε πολύ πολύπλοκους τρόπους. 290 00:16:05,720 --> 00:16:09,010 Δεν θα μπω σε ότι αυτή τη στιγμή, αλλά εγώ Σας ενθαρρύνουμε να δούμε κάποιους πόρους 291 00:16:09,010 --> 00:16:11,175 σε απευθείας σύνδεση, αν θέλετε να μάθετε γι 'αυτό. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Λοιπόν Τύπος classes-- και αυτό 294 00:16:16,550 --> 00:16:21,610 was-- τάξεις των τύπων εφευρέθηκαν για να λύσει 295 00:16:21,610 --> 00:16:24,160 ένα πρόβλημα της υπερφόρτωσης του χειριστή. 296 00:16:24,160 --> 00:16:27,590 Έτσι θέλαμε να έχουμε ισότητα μεταξύ των διαφόρων τύπων των πραγμάτων. 297 00:16:27,590 --> 00:16:31,040 Φυσικά, θα μπορούσαμε να σκεφτούμε of-- ισότητα μεταξύ αριθμητικών τύπων 298 00:16:31,040 --> 00:16:34,720 Είναι πολύ εύκολο να σκεφτούμε, αλλά Τι γίνεται με την ισότητα ανάμεσα στις λίστες; 299 00:16:34,720 --> 00:16:37,610 Τι γίνεται με την ισότητα μεταξύ δέντρο δομές δεδομένων πόδι; 300 00:16:37,610 --> 00:16:43,130 Και όλα αυτά είναι δυνατόν Haskell, λόγω των τάξεων τύπου. 301 00:16:43,130 --> 00:16:48,000 >> Έτσι, αν ορίσετε μια ορισμένη type-- δεδομένων και εδώ, αυτά είναι τα μουσικά βήματα. 302 00:16:48,000 --> 00:16:50,960 Έχουμε πάρει επιτέλους σε κάποιο μουσικό υπολογιστή. 303 00:16:50,960 --> 00:16:57,420 Έτσι έχουμε C, ντο δίεση, Και ούτω καθεξής και ούτω καθεξής. 304 00:16:57,420 --> 00:17:01,080 Ανήκουν σε μια δέσμη των διαφορετικές κατηγορίες τύπου. 305 00:17:01,080 --> 00:17:03,510 EQ-- ανήκουν στην κατηγορία τύπο EQ. 306 00:17:03,510 --> 00:17:06,780 Αυτό σημαίνει ότι υποστηρίζουν λειτουργίες της ισότητας. 307 00:17:06,780 --> 00:17:12,650 Έτσι, μπορείτε να αξιολογήσει εάν ένα ακολουθία των μουσικών πρωτόγονων 308 00:17:12,650 --> 00:17:15,400 είναι το ίδιο με ένα διαφορετικό. 309 00:17:15,400 --> 00:17:17,280 >> Ανήκουν στην κατηγορία τακτικό. 310 00:17:17,280 --> 00:17:19,479 Αυτό σημαίνει ότι υπάρχει μια διάταξη σ 'αυτά. 311 00:17:19,479 --> 00:17:27,670 Δ έρχεται μετά από Γ ντο δίεση έρχεται μετά C, καθώς και. 312 00:17:27,670 --> 00:17:29,840 Ανήκουν στην κατηγορία δείχνουν, πράγμα που σημαίνει ότι μπορούν να 313 00:17:29,840 --> 00:17:33,000 να εκτυπωθεί σε μια κονσόλα ή τερματικό. 314 00:17:33,000 --> 00:17:36,090 Ανήκουν στην κατηγορία που απαριθμούνται, το οποίο 315 00:17:36,090 --> 00:17:39,770 σημαίνει ότι, ακόμη και αν αυτά είναι χαρακτήρες, 316 00:17:39,770 --> 00:17:45,340 έχουν ένα υποκείμενο αριθμητικό αντιπροσώπευση ξεκινώντας από 0 317 00:17:45,340 --> 00:17:48,960 και πηγαίνει μακριά μέσα όμως πολλά πράγματα εδώ, 20 ή έτσι, 318 00:17:48,960 --> 00:17:51,770 ή 30 ή 40, ίσως. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR Harris: Και όταν έχουμε έναν τύπο δεδομένων 320 00:17:54,259 --> 00:17:57,050 ότι derives-- με την λέξη-κλειδί "deriving--" ένας ορισμένος τύπος τάξη, 321 00:17:57,050 --> 00:18:01,160 αυτό σημαίνει ότι ο compiler θα προσπαθήσει να κατασκευάσει κάτι αυτόματα. 322 00:18:01,160 --> 00:18:05,120 Έτσι ίσως θα θέλετε να προσδιορίζουν ένα ποιοτικό διαφορετικά. 323 00:18:05,120 --> 00:18:09,450 Θα θέλετε να ορίσετε ντο δίεση ίση με D επίπεδη, για παράδειγμα. 324 00:18:09,450 --> 00:18:11,560 Με την κατασκευή αυτή εδώ, δεν νομίζω ντο δίεση 325 00:18:11,560 --> 00:18:14,940 και Δ επίπεδη θα είναι ίσοι, γιατί ο compiler θα αυτόματα 326 00:18:14,940 --> 00:18:19,670 δηλαδή κάθε διαφορετική δυνατή τιμή είναι διαφορετική από κάθε άλλη. 327 00:18:19,670 --> 00:18:22,930 >> Έτσι είναι δυνατό να παρακάμψει Οι προεπιλεγμένες εφαρμογές 328 00:18:22,930 --> 00:18:25,730 αυτών των τύπων των τάξεων. 329 00:18:25,730 --> 00:18:28,640 Και πάλι, να δούμε την αναφορά, αν θέλετε να μάθετε γι 'αυτό. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: Και εδώ, στην πραγματικότητα, αυτό 'll 332 00:18:33,600 --> 00:18:36,930 είναι χρήσιμο για όταν κωδικοποιούμε αργότερα. 333 00:18:36,930 --> 00:18:42,150 Βλέπουμε ορισμένοι από τους επιχειρηματίες InFix για διαδοχική σύνθεση, 334 00:18:42,150 --> 00:18:46,570 παράλληλη σύνθεση, και έτσι εμπρός, αυτά τα συν και τα σημάδια της ίσης 335 00:18:46,570 --> 00:18:48,620 που περιβάλλεται από άνω και κάτω τελεία. 336 00:18:48,620 --> 00:18:53,330 Αυτό σημαίνει ότι μπορούμε να παίξουμε αυτά τα διαφορετικά μουσικά αρχέτυπα ένα μετά το άλλο. 337 00:18:53,330 --> 00:18:54,590 Αυτό είναι διαδοχική σύνθεση. 338 00:18:54,590 --> 00:18:57,170 >> Ή μπορούμε να τους παίξει στο παράλληλα την ίδια στιγμή. 339 00:18:57,170 --> 00:19:05,100 Έτσι μπορώ να έχω μια μουσική αξία, και τότε αυτό ισοδυναμεί με άνω και κάτω τελεία και, 340 00:19:05,100 --> 00:19:09,669 καρφώνουν το χειριστή παράλληλη σύνθεση, και να παίξει ως ένα είδος χορδή. 341 00:19:09,669 --> 00:19:11,460 Και θα πάμε να χρησιμοποιήσετε αυτό όταν συνδυάζουμε 342 00:19:11,460 --> 00:19:15,080 τύμπανο μέρος μας με τους γείτονές μας τραγουδάκι Frere Jacques 343 00:19:15,080 --> 00:19:19,460 να παίξετε αυτά τα δύο ακολουθίες μουσικό τιμές ταυτόχρονα. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Γούνων is-- Κάρι ήταν η τελευταία το όνομα της Haskell Curry, ο οποίος 346 00:19:29,250 --> 00:19:31,850 η εικόνα Haskell ονομάζεται μετά. 347 00:19:31,850 --> 00:19:34,330 Και αυτό μας επιτρέπει μια ωραίο κομψότητα όταν είμαστε 348 00:19:34,330 --> 00:19:36,880 γραπτώς όλες αυτές τις διαφορετικές λειτουργίες ή φίλτρα που είμαστε 349 00:19:36,880 --> 00:19:39,330 πρόκειται να είναι η χαρτογράφηση πάνω από τις λίστες μας. 350 00:19:39,330 --> 00:19:42,810 Μία συνάρτηση δύο arguments-- f του x και y-- 351 00:19:42,810 --> 00:19:46,630 μπορεί να αναπαρασταθεί ως f του x στο y εφαρμόζεται. 352 00:19:46,630 --> 00:19:49,800 Έτσι είναι μια συνάρτηση της ένα επιχείρημα που επιστρέφει 353 00:19:49,800 --> 00:19:51,240 μια άλλη λειτουργία ενός επιχειρήματος. 354 00:19:51,240 --> 00:19:56,962 Έτσι, αυτό σημαίνει ότι μπορούμε να χαρτογραφήσει ένα συνάρτηση f του x πάνω λίστα του Y. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Θέλετε να δώσω ένα παράδειγμα για αυτό; 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Ναι. 357 00:19:59,836 --> 00:20:05,390 Έχω ένα παράδειγμα από εδώ μερικά από τα πράγματα που θα γράψω. 358 00:20:05,390 --> 00:20:10,500 Έτσι αναπαράγουν 2-- καλά, αναπαράγουν θα λάβει 359 00:20:10,500 --> 00:20:13,040 μία τιμή, η οποία είναι πόσα φορές για να αναπαράγουν κάτι, 360 00:20:13,040 --> 00:20:16,690 και στη συνέχεια θα πάρει value-- συνήθως μια λίστα ή κάτι τέτοιο. 361 00:20:16,690 --> 00:20:23,450 Έτσι, εδώ, είμαστε χαρτογράφηση 2 αναπαράγουν σε μια άλλη λίστα. 362 00:20:23,450 --> 00:20:27,440 >> Έτσι, αν έχουμε χαρτογραφήσει αναπαράγουν 2, αν μπορούμε να προσομοιώσουμε 2 εφαρμόζονται 363 00:20:27,440 --> 00:20:31,890 με το πρώτο στοιχείο της παρούσας list-- και αυτά είναι λίστες των μουσικών phrases-- 364 00:20:31,890 --> 00:20:37,650 θα παράγει δύο «εσείς sleeping--" έτσι κοιμάσαι, κοιμάσαι. 365 00:20:37,650 --> 00:20:40,040 Έτσι τώρα έχουμε δύο. 366 00:20:40,040 --> 00:20:42,570 Αλλά επανάληψη διαρκεί δύο επιχειρήματα, αλλά επειδή είμαστε 367 00:20:42,570 --> 00:20:47,100 γούνων και, στη συνέχεια, τη χαρτογράφηση, μπορούμε να αναπαραστήσουμε επαναληπτικές 2 368 00:20:47,100 --> 00:20:52,310 ως έχουν επιστραφεί ως συνάρτηση του ένα argument-- απλά αναπαράγει δύο φορές. 369 00:20:52,310 --> 00:20:57,010 Και τότε θα είστε υποψήφιοι ότι σε κάθε στοιχείο αυτού του καταλόγου των φράσεων. 370 00:20:57,010 --> 00:21:01,900 >> Και concat είναι Haskell λειτουργία για την ισοπέδωση μια λίστα. 371 00:21:01,900 --> 00:21:04,400 Επειδή επαναληπτικές 2 βούληση παράγει μια λίστα καταλόγων. 372 00:21:04,400 --> 00:21:06,660 Και αυτό είναι αυτό ενδιάμεση μορφή εδώ. 373 00:21:06,660 --> 00:21:10,365 Και έτσι, τότε μπορούμε να concat ή ισοπεδώσουν ότι δύο φορές. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Μια απλούστερη παράδειγμα της δέψη, 375 00:21:12,240 --> 00:21:15,323 αν θέλετε like-- φανταστείτε f είναι απλά μια Λειτουργία πολλαπλασιασμού που διαρκεί δύο 376 00:21:15,323 --> 00:21:16,840 επιχειρήματα και επιστρέφει το προϊόν τους. 377 00:21:16,840 --> 00:21:19,320 Έτσι, εάν έχετε ένα F 4 5, είναι 20. 378 00:21:19,320 --> 00:21:22,670 Αλλά μπορείτε να σκεφτείτε αυτό ως also-- έχετε μια συνάρτηση f 4 379 00:21:22,670 --> 00:21:25,560 ότι παίρνει ένα επιχείρημα και αποδόσεις τέσσερις φορές αυτό ακριβώς argument-- 380 00:21:25,560 --> 00:21:27,870 μερική εφαρμογή η οποία ένα μόνο επιχείρημα 4. 381 00:21:27,870 --> 00:21:31,182 Και αν ταΐζετε στ 4 5, που θα σας δώσει 20. 382 00:21:31,182 --> 00:21:32,890 Και αυτό είναι μια απλούστερη παράδειγμα της δέψη. 383 00:21:32,890 --> 00:21:34,473 Είναι συνήθως ένα από αυτά βιβλίο. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda εκφράσεις ή ανώνυμες λειτουργίες 386 00:21:42,110 --> 00:21:47,330 είναι ένα άλλο χαρακτηριστικό γνώρισμα Haskell. 387 00:21:47,330 --> 00:21:51,242 Έτσι, αν χρειαστεί να μαστίγιο μέχρι ένα λίγο λειτουργία αναπαράγουν τη ζωή, 388 00:21:51,242 --> 00:21:52,950 αλλά λένε ότι δεν είναι σε η πρότυπη βιβλιοθήκη, 389 00:21:52,950 --> 00:21:56,150 μπορούμε να χρησιμοποιήσουμε μια σύνταξη παρόμοιο με το ακόλουθο. 390 00:21:56,150 --> 00:21:58,730 Και θα αύρα πάνω από αυτό. 391 00:21:58,730 --> 00:22:02,160 Ένα πράγμα που θα δείτε πολλά στην drum machine είναι ότι πλέον έχουμε την πραγματοποίηση κλήσεων 392 00:22:02,160 --> 00:22:05,790 σε κάτι που ονομάζεται φίλτρο, το οποίο, όπως και πριν, 393 00:22:05,790 --> 00:22:08,185 είναι μια χαρτογράφηση της συνάρτησης πάνω από μια λίστα, αλλά είναι 394 00:22:08,185 --> 00:22:10,260 μια χαρτογράφηση μιας Boolean λειτουργία. 395 00:22:10,260 --> 00:22:13,390 >> Έτσι, έχουμε εδώ ένα παράδειγμα ενός μια ανώνυμα 396 00:22:13,390 --> 00:22:19,150 ορίζεται Boolean λειτουργία που Χρειάζεται μόνο ένα ζευγάρι τιμές. 397 00:22:19,150 --> 00:22:22,990 Αυτό δεν είναι κατά κυριολεξία μια ανώνυμη λειτουργία. 398 00:22:22,990 --> 00:22:25,850 Αλλά είναι με τον καθορισμό ότι σύνταξη για λόγους συντομίας, 399 00:22:25,850 --> 00:22:28,007 και αυτό διαρκεί μόνο χ ενότητα n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR Harris: Ναι. 401 00:22:28,840 --> 00:22:31,330 Έτσι f είναι μία συνάρτηση του δύο επιχειρήματα n και p 402 00:22:31,330 --> 00:22:35,440 ότι επιστρέφει μια συνάρτηση η οποία είναι η ίδια μια λειτουργία ενός επιχειρήματος, δηλαδή x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: Ι προαναφερθείσα φορείς InFix. 405 00:22:40,690 --> 00:22:42,642 Τι είναι οι διαχειριστές InFix; 406 00:22:42,642 --> 00:22:45,710 Λοιπόν, οι φορείς εκμετάλλευσης είναι η InFix φυσιολογικό τρόπο με τον οποίο εκπροσωπεί επιχειρήσεις, 407 00:22:45,710 --> 00:22:49,910 λένε, σε mathematics-- 2 συν 2 αντί του φορέα συν 408 00:22:49,910 --> 00:22:51,202 και στη συνέχεια δύο επιχειρήματα 2 και 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Ονομάζεται αντίστροφη πολωνική σημειογραφία, η οποία είναι 410 00:22:53,701 --> 00:22:55,330 ένας όρος που αμφιβάλλω κάποιος από εσάς θα γνωρίζετε. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Δεξιά. 412 00:22:56,288 --> 00:22:58,290 Αντίστροφη βερνίκι ή το πρόθεμα σημειογραφία. 413 00:22:58,290 --> 00:23:01,412 Αλλά Haskell αποφάσισε να χρησιμοποιούμε τους τελεστές InFix. 414 00:23:01,412 --> 00:23:03,120 Έτσι, αυτά είναι μερικά από οι προσαρμοσμένες αυτές που 415 00:23:03,120 --> 00:23:07,770 ορίζονται για το Euterpea DSCL σε Haskell. 416 00:23:07,770 --> 00:23:10,730 Έτσι, αυτό ήταν διαδοχική σύνθεση. 417 00:23:10,730 --> 00:23:16,340 Αυτό ήταν παράλληλη σύνθεση, και αυτό έγινε περικοπή παράλληλη σύνθεση. 418 00:23:16,340 --> 00:23:18,710 Και θα πρέπει να με μηχανή τυμπάνων μας, 419 00:23:18,710 --> 00:23:22,640 γιατί θα χρησιμοποιήσουμε τον τελευταίο χειριστή σε αυτό το μικρό πλειάδα υπάρχει 420 00:23:22,640 --> 00:23:26,330 να παίξει το drum machine μαζί με το τραγούδι μας Frere Jacques. 421 00:23:26,330 --> 00:23:28,650 Και το drum machine μας είναι πρόκειται να είναι άπειρη. 422 00:23:28,650 --> 00:23:30,920 Είναι απλά παίζει για πάντα. 423 00:23:30,920 --> 00:23:32,692 Αλλά το τραγούδι Frere Jacques δεν είναι. 424 00:23:32,692 --> 00:23:33,510 Δεν είναι τόσο πολύ. 425 00:23:33,510 --> 00:23:36,610 Είναι μόνο μερικά μπαρ. 426 00:23:36,610 --> 00:23:43,030 Γι 'αυτό και πρέπει να σταματήσει το drum machine ως Μόλις η συντομότερη μουσικό αξία προέρχεται 427 00:23:43,030 --> 00:23:43,700 στο τέλος της. 428 00:23:43,700 --> 00:23:46,980 Και αυτό εμπεπηγμένου χειριστή είναι εξαιρετικά χρήσιμη σε αυτό. 429 00:23:46,980 --> 00:23:50,090 >> Και InFix σημειογραφία όπως Αυτό είναι το είδος της Νίκαιας, 430 00:23:50,090 --> 00:23:57,095 επειδή πούμε ότι έχετε μια συνάρτηση όπως η απόσπασμα, το οποίο δίνει τη διαίρεσης 431 00:23:57,095 --> 00:24:01,010 του x από κάτι else-- Συγγνώμη, αυτό θα πρέπει να είναι a και b. 432 00:24:01,010 --> 00:24:04,740 Θα μπορούσατε να το γράψετε ως ένα απόσπασμα του β. 433 00:24:04,740 --> 00:24:09,670 Έτσι, αν put-- στοιχείο είναι Ένα άλλο παράδειγμα αυτού του γεγονότος. 434 00:24:09,670 --> 00:24:14,730 x στοιχείο σε κάποια λίστα, αν βάλετε το σε βαρεία, μπορείτε να το χρησιμοποιήσετε. 435 00:24:14,730 --> 00:24:20,400 Ακόμα κι αν δεν είναι ένα σύμβολο όπως συν ή μείον ή φορές, 436 00:24:20,400 --> 00:24:24,630 μπορείτε να χρησιμοποιήσετε το όνομα ενός λειτουργία, όπως ότι σε βαρεία 437 00:24:24,630 --> 00:24:27,045 ως τελεστή εναλλαγής, το οποίο είναι αρκετά δροσερό. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Και πάλι, αυτό είναι όλα μόνο συντακτική ζάχαρη, πραγματικά. 439 00:24:29,670 --> 00:24:32,310 Δεν επηρεάζει τον πυρήνα της γλώσσας. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Βλέπουμε λοιπόν εδώ για το τελευταία φράση του τραγουδιού μας Frere Jacques, 441 00:24:37,440 --> 00:24:45,740 Έπαιξα μερικά μικρά χορδές ή τρίτα χρησιμοποιείτε την παράλληλη σύνθεση 442 00:24:45,740 --> 00:24:46,240 χειριστής. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Αυτός είναι ένας άλλος τρόπος για να πούμε μερικά από ό, τι έχουμε μόλις πει. 445 00:24:54,950 --> 00:24:59,986 Έτσι, μπορείτε να αντιστοιχίσετε λειτουργίες από ένα επιχείρημα πάνω καταλόγους. 446 00:24:59,986 --> 00:25:02,860 CONNOR Harris: Και πάλι, οι αναφορές για Haskell-- εισαγωγικό σχολικά βιβλία 447 00:25:02,860 --> 00:25:04,680 θα έχουν όλα αυτά σε αυτό. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Τόσο εδώ είναι μια αρκετά κλειδί γραμμή του sequencer βήμα 449 00:25:07,790 --> 00:25:12,820 θα ρίξουμε μια ματιά σε χρήση μια λίστα με κατανόηση. 450 00:25:12,820 --> 00:25:17,810 Και βλέπουμε εδώ είναι ότι το στοιχείο σε σταθερό φορέα στον πίσω εισαγωγικά. 451 00:25:17,810 --> 00:25:23,030 Έτσι, αν το Χ είναι ένα στοιχείο του καταλόγου x, τότε θα καλέσουμε τις λειτουργίες perc. 452 00:25:23,030 --> 00:25:25,100 Έτσι perc είναι απλά μια λειτουργία κρουστά. 453 00:25:25,100 --> 00:25:30,200 Παίρνει κάποια αξία σ που είναι μέρος της φραγμένο σύνολο όλων 454 00:25:30,200 --> 00:25:35,310 οι διαφορετικοί ήχοι κρουστών που είδαμε σε προηγούμενη διαφάνεια, 455 00:25:35,310 --> 00:25:38,840 και στη συνέχεια δίνει ότι διάρκειας ενός τετάρτου. 456 00:25:38,840 --> 00:25:43,190 Αλλιώς θα δίνει μια qnr, και qnr είναι απλά ένα υπόλοιπο τέταρτο σημείωμα. 457 00:25:43,190 --> 00:25:44,970 >> Έτσι, αυτό είναι δημιουργία κάτι ωραίο. 458 00:25:44,970 --> 00:25:52,110 Έχουμε μια λίστα των στοιχείων, και Θα βρόχο πάνω από κάποια λίστα από τη μία 459 00:25:52,110 --> 00:25:54,540 με την μέγιστη τιμή του sequencer βήμα μας. 460 00:25:54,540 --> 00:25:58,290 Και όταν είμαστε σε μια συγκεκριμένη i στο ότι ο κατάλογος του ενός με την μέγιστη τιμή, 461 00:25:58,290 --> 00:26:02,970 αν η i είναι ένα μέλος αυτής της σύνολο που δημιουργείται σε αυτή τη λειτουργία, 462 00:26:02,970 --> 00:26:06,040 καλά, τότε μπορούμε να την ενεργοποιήσετε σε ένα σημείωμα κρουστά. 463 00:26:06,040 --> 00:26:10,960 Διαφορετικά, απλά παίξτε ένα υπόλοιπο, το οποίο Δηλαδή, εμείς απλά παραμένουμε σιωπηλοί. 464 00:26:10,960 --> 00:26:16,050 Και μπορούμε να δούμε εδώ ότι σε Αυτή η σύνταξη κατανόηση λίστα, 465 00:26:16,050 --> 00:26:20,030 x κατοικείται από αυτό κατάλογος κατασκευαστεί ένα 466 00:26:20,030 --> 00:26:22,462 στην παγκόσμια μέγεθος της ακολουθίας. 467 00:26:22,462 --> 00:26:23,295 CONNOR Harris: Ναι. 468 00:26:23,295 --> 00:26:26,340 Η βασική σύνταξη για Η κατανόηση είναι κατάλογος 469 00:26:26,340 --> 00:26:30,810 βραχίονα, τιμή που περιλαμβάνει Ορισμένες μεταβλητές, μπαρ, 470 00:26:30,810 --> 00:26:34,260 πιθανές τιμές των μεταβλητών ίδιοι, έκλεισε βραχίονα. 471 00:26:34,260 --> 00:26:38,545 Και αν έχετε κάνει ορίζεται σημειογραφία οικοδόμος σε οποιοδήποτε είδος της τάξης των μαθηματικών, 472 00:26:38,545 --> 00:26:45,999 ενδέχεται να είχατε ρυθμίσει 2η τέτοια ότι η είναι ή η είναι σε z. 473 00:26:45,999 --> 00:26:48,290 Παρόμοια thing-- αυτό το συμβολισμό εννοείται ότι υποδηλώνουν 474 00:26:48,290 --> 00:26:49,630 του εν λόγω μαθηματική σημειογραφία. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: Και μπορείτε να εφαρμόζουν πολλαπλές κατηγορήματα 476 00:26:51,880 --> 00:26:56,250 και πολλαπλά φίλτρα σε μια λίστα κατανόησης, το οποίο είναι πολύ ωραίο. 477 00:26:56,250 --> 00:27:01,800 Αλγεβρικές types-- μας δεν θα καθυστερήσει πολύ εδώ. 478 00:27:01,800 --> 00:27:04,840 Δεν υπάρχει μια καλή ιδέα σε Haskell ή ένα καλό, προφανές ιδέα 479 00:27:04,840 --> 00:27:10,720 για το πώς να πάρει, ας πούμε, μια προεπιλεγμένη παράμετρος σε μια λειτουργία ή κάτι τέτοιο. 480 00:27:10,720 --> 00:27:13,370 Στην Python, αυτό είναι αρκετά εύκολο. 481 00:27:13,370 --> 00:27:18,460 Μπορείτε απλά να πω με ισοδυναμεί κατά η δήλωση της συνάρτησης, 482 00:27:18,460 --> 00:27:21,420 μια προκαθορισμένη τιμή σε περίπτωση κανένας παρέχεται. 483 00:27:21,420 --> 00:27:27,010 >> Σε Haskell, θα μπορούσατε ίσως χρησιμοποιήσετε ίσως ο τύπος ίσως, 484 00:27:27,010 --> 00:27:32,190 η οποία λαμβάνει είτε τίποτα ή μια τιμή τύπου μόνο ένα. 485 00:27:32,190 --> 00:27:38,630 Έτσι εκμεταλλευόμαστε αυτό στο τύμπανο της μηχανής για να μας επιτρέψει να δώσουμε προαιρετικό όγκο 486 00:27:38,630 --> 00:27:40,730 παράμετροι για κάθε ένα από τα τμήματα του τυμπάνου. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Και αυτό μας δίνει έναν τρόπο που έχει EQ ή ένας όγκος σε ένα συγκεκριμένο κανάλι. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: Σε Άλλα παραδείγματα Haskell, 490 00:27:56,440 --> 00:28:00,450 μπορείτε να δείτε μπορεί να χρησιμοποιηθούν για την λειτουργίες που μπορεί να αποτύχει. 491 00:28:00,450 --> 00:28:03,470 Αυτή είναι μια κοινή. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: Και μπορείτε να δώσετε κάποιου είδους μήνυμα λάθους ως προεπιλογή. 493 00:28:07,010 --> 00:28:11,020 Και αυτό είναι ιδιαίτερα βολικό όταν κάνετε το I / O σε Haskell. 494 00:28:11,020 --> 00:28:12,044 Αυτό μπορεί να είναι κόλπα. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: Ή για ένα παρόμοιο παράδειγμα, σκεφτείτε 496 00:28:13,960 --> 00:28:17,460 μιας λειτουργίας που περιλαμβάνει διαίρεση μιας παραμέτρου που μπορεί να είναι μηδέν. 497 00:28:17,460 --> 00:28:20,020 Και αυτή η λειτουργία θα μπορούσε να ίσως επιστρέψει οτιδήποτε. 498 00:28:20,020 --> 00:28:22,802 Έτσι, αν δεν υπάρχει διαίρεση με το 0, θα επιστρέψει ακριβώς ό, τι. 499 00:28:22,802 --> 00:28:25,010 Και αν υπάρχει διαίρεση με 0, θα επιστρέψει τίποτα 500 00:28:25,010 --> 00:28:26,910 ως ένας τρόπος σηματοδότησης το σφάλμα. 501 00:28:26,910 --> 00:28:30,330 Επειδή μία από τις συνέπειες της Πολύ αυστηρή πληκτρολόγηση του Haskell 502 00:28:30,330 --> 00:28:34,100 είναι ότι δεν υπάρχει real-- εξαιρέσεις είναι δύσκολη, κυρίως, 503 00:28:34,100 --> 00:28:36,160 αντιμετώπιση των λαθών είναι δύσκολη. 504 00:28:36,160 --> 00:28:39,440 Και αυτό είναι ένας πολύ συνηθισμένος τρόπος για να γίνει αυτό. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Έτσι τώρα έχουμε σε ένα άλλο μυαλό κάμψης πράγμα 506 00:28:42,990 --> 00:28:49,160 για Haskell, το οποίο είναι πρότυπο αντιστοίχιση και τη λειτουργία τους ορισμούς. 507 00:28:49,160 --> 00:28:53,390 Που σας έδειξα στην τελευταία διαφάνεια της Δήλωση της ακολουθίας βήμα 508 00:28:53,390 --> 00:28:58,170 λειτουργία, η οποία πήρε μια ίσως αξία, Στη συνέχεια, ένας int, τότε μια λίστα των ints, 509 00:28:58,170 --> 00:29:03,850 τότε επιστρέφει μια ακολουθία τιμές μουσικής εκεί σχολιασμένη 510 00:29:03,850 --> 00:29:05,375 τόσο με ύψος και την ένταση. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Έτσι, τα τρία αυτά επιχειρήματα δεν μπορεί να είναι πρότυπο ταιριάζει με τον ακόλουθο τρόπο. 513 00:29:11,820 --> 00:29:16,660 Και εμείς πάντα θέλουν να είναι βέβαιοι για την κάνουμε μια βασική περίπτωση ή περίπτωση εξόδου πρώτα. 514 00:29:16,660 --> 00:29:19,690 Και αυτές οι υπογραμμίσεις μπορεί απλώς να ερμηνευθεί 515 00:29:19,690 --> 00:29:22,340 να σημαίνει οποιαδήποτε τιμή που δεν υπάρχει. 516 00:29:22,340 --> 00:29:26,580 Έτσι, αν έχουμε μια κλήση στο βήμα αλληλουχία με κάποια αξία, κάποια άλλη τιμή, 517 00:29:26,580 --> 00:29:32,210 και, στη συνέχεια, η άδεια λίστα, αυτό που θέλουμε να επιστρέψει είναι μόνο σιωπή, ένα υπόλοιπο 0. 518 00:29:32,210 --> 00:29:35,110 >> Και αντί για αυτό είναι μια κενή λίστα ή 0, 519 00:29:35,110 --> 00:29:38,150 είναι ένα υπόλοιπο 0, γιατί είμαστε ασχολούνται με τον τύπο της μουσικής, 520 00:29:38,150 --> 00:29:43,230 και ο κενός κατάλογος της μουσικής τύπος είναι απλά ένα υπόλοιπο χωρίς διάρκειας. 521 00:29:43,230 --> 00:29:45,680 Δεν είναι η μουσική. 522 00:29:45,680 --> 00:29:51,460 Και τότε θα δούμε αν θα πάρουμε ένα βήμα ακολουθία με το επιχείρημα κατά του όγκου, 523 00:29:51,460 --> 00:29:57,290 p για τον μέσο προφύλαξης επιχείρημα, και στη συνέχεια μια λίστα με Χ. 524 00:29:57,290 --> 00:29:58,360 >> Στη συνέχεια, κάνουμε κάποια πράγματα. 525 00:29:58,360 --> 00:30:01,290 Ειδικότερα, εφαρμόζουμε Αυτή η λίστα κατανόηση, 526 00:30:01,290 --> 00:30:05,700 και θα εκτελούν ορισμένα εργασίες σχετικά με την αξία ίσως 527 00:30:05,700 --> 00:30:10,050 για να το μετατρέψει σε μια αριθμητική τιμή, έτσι ώστε θα μπορούσε να απαριθμούνται στη συνέχεια και να χρησιμοποιηθεί 528 00:30:10,050 --> 00:30:12,300 για να επιλέξετε το μέσο. 529 00:30:12,300 --> 00:30:16,730 Και πάλι, αυτό είναι ένα μικρό bit σκόπιμα inconcise 530 00:30:16,730 --> 00:30:20,580 απλά για να δείξει όλα τα περίεργα πράγματα μπορείτε να κάνετε σε Haskell, όπως σας 531 00:30:20,580 --> 00:30:23,170 ρίξτε μια ματιά σε αυτό στο δικό σας χρόνο. 532 00:30:23,170 --> 00:30:23,802 >> Εντάξει. 533 00:30:23,802 --> 00:30:26,010 Έτσι είμαστε τελικά να πάρει για να κάνουμε αυτό που ξεκινήσαμε να κάνουμε, 534 00:30:26,010 --> 00:30:28,820 που είναι να κάνει κάποια μουσική του υπολογιστή. 535 00:30:28,820 --> 00:30:32,250 Έτσι θα πάμε να προσπαθήσουμε να κάνει το τραγούδι Frere Jacques. 536 00:30:32,250 --> 00:30:35,220 Έτσι, υπάρχουν πόσα φράσεις στο Frere Jacques; 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Τέσσερα. 539 00:30:39,680 --> 00:30:40,460 Εξαιρετική. 540 00:30:40,460 --> 00:30:42,490 Και τι ωραίο είναι ότι από όπου και αν όλα τα επαναλαμβανόμενα 541 00:30:42,490 --> 00:30:46,990 το ίδιο ποσό των φορές, το οποίο είναι δύο. 542 00:30:46,990 --> 00:30:50,730 >> Έτσι έχουμε τέσσερις φράσεις κάθε επαναλαμβάνεται δύο φορές. 543 00:30:50,730 --> 00:30:53,590 Και ειδικότερα, είναι σε ένα γύρο. 544 00:30:53,590 --> 00:30:55,340 Και υπάρχουν πολλοί, πολλοί τρόποι για την υλοποίηση 545 00:30:55,340 --> 00:30:57,520 ένα γύρο που θα μπορούσε να είναι διασκεδαστικό να το κάνουμε. 546 00:30:57,520 --> 00:31:00,260 Το έχω κάνει σε ένα πολύ απλό τρόπο εδώ, 547 00:31:00,260 --> 00:31:05,760 το οποίο είναι μόνο για να construct-- τη γραμμή συνάρτηση παίρνει μια λίστα με τιμές μουσικής 548 00:31:05,760 --> 00:31:10,390 και το μετατρέπει σε διαδοχική σύνθεση με την εφαρμογή αυτού διαδοχική σύνθεση 549 00:31:10,390 --> 00:31:13,000 χειριστής. 550 00:31:13,000 --> 00:31:19,540 >> Και τότε θα καθυστερήσει τα διάφορα μέρη κάνοντας τους να αρχίζουν με ένα υπόλοιπο. 551 00:31:19,540 --> 00:31:22,770 Έτσι, μπορώ να ξεκινήσω με μια υπόλοιπα δύο μέτρων, και, στη συνέχεια, ένα υπόλοιπο τεσσάρων μέτρων, 552 00:31:22,770 --> 00:31:26,160 και στη συνέχεια ένα υπόλοιπο έξι μέτρα, και στη συνέχεια ο γύρος 553 00:31:26,160 --> 00:31:32,290 λειτουργεί, όπως όλοι γνωρίζουμε, αυτό το τραγούδι. 554 00:31:32,290 --> 00:31:37,180 Βλέπουμε δύο ή σχολιασμούς τροποποιήσεις των τιμών μουσικής 555 00:31:37,180 --> 00:31:43,150 που περιέχονται σε αυτή την διαδοχική μουσική διασκευή στοιχείων. 556 00:31:43,150 --> 00:31:44,810 Έχουμε έναν όγκο add. 557 00:31:44,810 --> 00:31:48,960 Αυτή είναι μια λειτουργία για να σχολιάσετε μουσική με ένα συγκεκριμένο όγκο. 558 00:31:48,960 --> 00:31:51,320 Αυτό είναι ένα καλό παράδειγμα ενός σήματος λειτουργίας MIDI 559 00:31:51,320 --> 00:31:57,510 από μηδέν έως 127, οι επτά δυαδικά ψηφία του πληροφορίες που μπορεί να μεταφερθεί. 560 00:31:57,510 --> 00:32:00,650 >> Και then-- είδαμε πολύ εν συντομία, αλλά η γενική MIDI 561 00:32:00,650 --> 00:32:02,310 κατάλογο όλων των διαφορετικών μέσων. 562 00:32:02,310 --> 00:32:04,450 Και δεν υπάρχει ένα πάρα πολύ από αυτά. 563 00:32:04,450 --> 00:32:11,230 Εάν χρησιμοποιείτε ένα πρόγραμμα επεξεργασίας ψηφιακού ήχου, όπως Ableton Live ή Pro Tools, 564 00:32:11,230 --> 00:32:17,560 υπάρχει ένα απίστευτα ευρύ φάσμα συνθέτες και VST μέσα. 565 00:32:17,560 --> 00:32:21,510 Αλλά το πρότυπο MIDI μόνο έχει λίγες ή πολλές δεκάδες. 566 00:32:21,510 --> 00:32:22,799 Και ορισμένα από αυτά είναι αστεία. 567 00:32:22,799 --> 00:32:25,840 Σκέφτηκα ότι θα ήταν διασκεδαστικό αν παίζαμε το όργανο το MIDI όργανο 568 00:32:25,840 --> 00:32:30,550 ελικόπτερο, και στη συνέχεια το επόμενος τρόπος μέσω του γύρου, 569 00:32:30,550 --> 00:32:37,980 κάναμε ένα synth pad, και στη συνέχεια της Αυτή η τετριμμένη μολύβδου synth τετραγωνικό κύμα, 570 00:32:37,980 --> 00:32:44,240 και στη συνέχεια να εκφράσουν στάζουν, τα οποία αποτελούν λίγο ακαθόριστα σε κακή MIDI μου 571 00:32:44,240 --> 00:32:46,410 συνθεσάιζερ, αλλά ΟΚ. 572 00:32:46,410 --> 00:32:50,030 >> Και τότε θα δείτε αυτό το let και σύνταξη από Haskell, 573 00:32:50,030 --> 00:32:54,030 και στη συνέχεια να παίζουμε όλα αυτά τα μέρη μαζί 574 00:32:54,030 --> 00:32:56,265 με τον φορέα εκμετάλλευσης παράλληλη σύνθεση. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 Και θα μπορούσαμε ίσως δείχνουν κάποια από αυτό. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Εδώ είναι ο κώδικας. 579 00:33:08,340 --> 00:33:14,960 Και μπορείτε να δείτε σε C, θα υπάρξει Πολλοί το καθάρισμα του λαιμού και ρύθμιση 580 00:33:14,960 --> 00:33:19,760 ο κώδικας τραπέζι πριν θα μπορούσε να κάνει τη μουσική σαν αυτό. 581 00:33:19,760 --> 00:33:22,080 Ή οποιαδήποτε άλλη προγραμματισμού γλώσσα, θα ήθελα ίσως 582 00:33:22,080 --> 00:33:27,210 Πρέπει να αλληλεπιδρούν με κάποια βιβλιοθήκη ή API και ρυθμίσετε τα πάντα, 583 00:33:27,210 --> 00:33:28,725 και τότε θα πρέπει να καθαρίσει. 584 00:33:28,725 --> 00:33:33,810 Αλλά εδώ σε Haskell είναι, νομίζω, μία φορά μπορείτε να πάρετε κρεμάστε από το, απίστευτα 585 00:33:33,810 --> 00:33:35,770 ευανάγνωστο και πολύ εκφραστική. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Έτσι, υπάρχει η εφαρμογή της Frere Jacques. 588 00:33:43,240 --> 00:33:43,740 Εντάξει. 589 00:33:43,740 --> 00:33:47,557 Τώρα θέλουμε να προσθέσετε κρουστά, και αυτό είναι λίγο Messier. 590 00:33:47,557 --> 00:33:49,015 Έτσι, ας ρίξουμε μια ματιά στις διαφάνειες. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Συνεπώς, η μεγάλη ιδέα είναι να κάνουμε ένα μάτσο καταλόγους ή τμήματα. 593 00:34:00,540 --> 00:34:04,140 Για τους roll-σε μηχανές, εκεί ήταν τυπικά περίπου οκτώ ίσως 594 00:34:04,140 --> 00:34:08,670 10 ρυθμό ή κρουστά μέρη. 595 00:34:08,670 --> 00:34:10,159 Και στη συνέχεια χρησιμοποιήστε μια δέσμη των τεχνικών. 596 00:34:10,159 --> 00:34:14,889 Και έχουμε μιλήσει για τη χρήση these-- πτυχώσεις, φίλτρα, λάμδα λειτουργίες, 597 00:34:14,889 --> 00:34:19,429 χαρτογραφηθεί πάνω καταλόγους για τη δημιουργία τιμών σε κάποιο εύρος 1 έως r, r είναι 16, 598 00:34:19,429 --> 00:34:20,699 ή 32 βήματα στο sequencer. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> Και στη συνέχεια, αν υπάρχει μια τιμή στον εν λόγω κατάλογο όπως είμαστε τρέχει μέσα από το sequencer, 601 00:34:29,920 --> 00:34:34,190 διατρέχει το πάνω και πάνω, αποδεικνύεται σε αυτό το σημείωμα, 602 00:34:34,190 --> 00:34:36,060 και ότι το δείγμα γίνεται ενεργοποιείται. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Εδώ είναι όλες οι διαφορετικοί τρόποι περίεργα Ήρθα με να δημιουργήσει σημειώσεις. 605 00:34:47,110 --> 00:34:48,940 Δοκιμάστε το με δική σας ημι ποσό. 606 00:34:48,940 --> 00:34:50,360 Θα ακούγεται δροσερό. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Ο χρόνος το επιτρέπει, θα πάμε μέσα από αυτό. 609 00:34:54,690 --> 00:34:59,200 Αλλά για τώρα, υποθέτω θα πρέπει να demo αυτό που έχουμε. 610 00:34:59,200 --> 00:35:01,380 Ας ελπίσουμε ότι αυτό πηγαίνει στο OK. 611 00:35:01,380 --> 00:35:02,670 >> Έτσι, αυτό είναι GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 Και θα φορτώσει ένα αρχείο Έχω κάλεσε song.lhs, 614 00:35:09,121 --> 00:35:10,620 το οποίο είναι το αρχείο που μόλις σας έδειξα. 615 00:35:10,620 --> 00:35:11,470 Εντάξει μια χαρά. 616 00:35:11,470 --> 00:35:15,010 Όπως είπε ο Κόνορ νωρίτερα, καταρτίζονται, πληκτρολογήστε το ελέγξει, 617 00:35:15,010 --> 00:35:18,380 ώστε να μπορώ να αναπνέω πολύ πιο εύκολη. 618 00:35:18,380 --> 00:35:20,010 Δεν πρόκειται να ανατινάξουν σε μένα. 619 00:35:20,010 --> 00:35:22,720 >> Θα ήθελε να σας δείξω κάτι χρήσιμο. 620 00:35:22,720 --> 00:35:25,900 Μπορείτε να δείτε ότι ένα φορτωμένο ενότητα που ονομάζεται 50. 621 00:35:25,900 --> 00:35:28,240 Μπορείτε να περιηγηθείτε την εν λόγω μονάδα. 622 00:35:28,240 --> 00:35:32,092 Και αυτό είναι τόσο ωραία σχετικά με το τι ίσως doing-- 623 00:35:32,092 --> 00:35:34,550 κάνετε σε Haskell δεν είναι κάλεσε την ανάπτυξη λογισμικού, 624 00:35:34,550 --> 00:35:36,980 αλλά μπορείτε να κάνετε πολλά διασκεδαστικά πράγματα για τη δική σας. 625 00:35:36,980 --> 00:35:42,410 Και η ροή εργασίας είναι πολύ ωραία, όπως σε σύγκριση με πολλές άλλες γλώσσες, 626 00:35:42,410 --> 00:35:45,872 επειδή μπορείτε να δείτε σε μια πραγματικά ευανάγνωστο τρόπο τι συμβαίνει. 627 00:35:45,872 --> 00:35:47,830 Βλέπουμε λοιπόν ότι έχουμε Όλες αυτές οι φράσεις, οι οποίες 628 00:35:47,830 --> 00:35:53,760 είναι λίστες μουσικών υψών, και στη συνέχεια θα την κατασκευή αυτών επάνω σε κάτι μεγαλύτερο, 629 00:35:53,760 --> 00:35:55,220 το οποίο είναι ένα τραγούδι μουσική. 630 00:35:55,220 --> 00:35:58,450 Είναι μια μουσική μονάδα. 631 00:35:58,450 --> 00:36:05,545 Και τότε μπορούμε να παίξουμε αυτό το all με μια λειτουργία που ονομάζεται αναπαραγωγή μουσικής. 632 00:36:05,545 --> 00:36:09,040 Μπορείτε να δείτε ότι εδώ κάτω. 633 00:36:09,040 --> 00:36:11,310 Το οποίο απέχει μόλις παίξει. 634 00:36:11,310 --> 00:36:15,040 >> Θα say-- δεν είχα μιλήσει για Αυτό το σύμβολο του δολαρίου που είναι παντού. 635 00:36:15,040 --> 00:36:17,980 Σύμβολο του δολαρίου είναι ένα άλλο τελεστή εναλλαγής. 636 00:36:17,980 --> 00:36:22,500 Αλλά έχει τη χαμηλότερη προτεραιότητα για κάθε επιχείρηση, η οποία ουσιαστικά 637 00:36:22,500 --> 00:36:24,960 σημαίνει ότι τα πάντα σχετικά με η αριστερά το σύμβολο του δολαρίου 638 00:36:24,960 --> 00:36:28,460 και το δικαίωμα του σύμβολο του δολαρίου, θα πάμε για να αξιολογηθούν πριν από αυτό. 639 00:36:28,460 --> 00:36:31,430 Έτσι είναι κάπως σαν ένα άλλο τρόπος της προσθήκης παρένθεση. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR Harris: Είναι βασικά σύνθεση λειτουργία. 642 00:36:36,220 --> 00:36:40,026 Και εξασφαλίζει ότι δεν θα have-- αν Έχετε λειτουργίες κάθε πλευρά ή InFix 643 00:36:40,026 --> 00:36:42,900 φορείς σε κάθε πλευρά, δεν θα συνδέουν πάνω σε αυτό και να σας δώσει 644 00:36:42,900 --> 00:36:46,030 απροσδόκητα αποτελέσματα. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Έτσι can-- χρησιμοποιώντας ότι, μπορούμε να ονομάσουμε. 646 00:36:49,790 --> 00:36:51,415 Κατ 'αρχάς, θα το παίξει χωρίς τα τύμπανα. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Αυτό είναι το ελικόπτερο, το MIDI ελικόπτερο. 649 00:37:03,170 --> 00:37:05,495 >> [Παίζει μουσική] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Υπάρχει το τετραγωνικό κύμα. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Η φωνή στάζουν. 654 00:37:25,490 --> 00:37:27,630 Και μπορείτε πραγματικά να τρελαθούν με αυτό. 655 00:37:27,630 --> 00:37:30,872 Πήρα μια πολύ απλή, γιατί ήξερα ότι δεν θα πρέπει να δαγκώνουν 656 00:37:30,872 --> 00:37:31,830 περισσότερο από ό, τι θα μπορούσα να μασάτε. 657 00:37:31,830 --> 00:37:36,460 Απλά κρατήστε το αρκετά απλή για να δείξει τις βασικές ιδέες. 658 00:37:36,460 --> 00:37:39,952 Αλλά τότε θα ήταν σαν, έχουμε πήρε να προσθέσετε κάποια τύμπανα σε αυτό. 659 00:37:39,952 --> 00:37:41,910 Ακριβώς επειδή πρόκειται για ένα λίγο αδιαπέραστο, 660 00:37:41,910 --> 00:37:45,790 και δεν είχα χρησιμοποιήσει το Όνομα του τύμπανα, 661 00:37:45,790 --> 00:37:49,490 Θα χαρτογραφηθεί them-- επειδή είναι μέρος αυτής της κατηγορίας enumerated, 662 00:37:49,490 --> 00:37:51,500 Τους αντιστοιχίζονται σε ints. 663 00:37:51,500 --> 00:37:53,120 Ο ένας είναι σαν ένα βαθύ τύμπανο. 664 00:37:53,120 --> 00:37:54,370 Μηδέν είναι τόσο καλά. 665 00:37:54,370 --> 00:37:56,000 Επτά είναι ένα υψηλό καπέλο. 666 00:37:56,000 --> 00:38:00,920 Και εδώ κάτω, όπου η λειτουργίες πάρετε μια λίγο πιο τυχαίο, 667 00:38:00,920 --> 00:38:02,100 αυτά είναι σαν Conga τύμπανα. 668 00:38:02,100 --> 00:38:08,360 >> Έτσι, αν νομίζετε ότι ίσως ένα about-- διασκεδαστικός τρόπος για να εφαρμόσει ένα drum machine 669 00:38:08,360 --> 00:38:12,830 είναι να χρησιμοποιούν πολύ ομαλή πρότυπα για μπάσο τύμπανο σας. 670 00:38:12,830 --> 00:38:17,640 Έτσι, για παράδειγμα, σχετικά με το φιλτράρισμα πάνω από το κατάλογο με όλα αυτά που δίνει πίσω 671 00:38:17,640 --> 00:38:20,590 α 1 όταν θα έχει ληφθεί ενότητα 04. 672 00:38:20,590 --> 00:38:27,190 Έτσι παίρνω 1, 5, 9, 13, 17-- έτσι αυτό είναι το πρώτο beat του κάθε μέτρου. 673 00:38:27,190 --> 00:38:32,860 >> Και τότε αυτό είναι το ίδιο πράγμα μετατοπιστεί πάνω από δύο στάδια. 674 00:38:32,860 --> 00:38:33,850 Έτσι, αυτό είναι το εκκεντρικό. 675 00:38:33,850 --> 00:38:37,480 Έτσι, αυτό θα ήταν κάτι σαν ένα υψηλό καπέλο. 676 00:38:37,480 --> 00:38:39,640 Και πάλι, εδώ κάτω, είναι λίγο τυχαίο, 677 00:38:39,640 --> 00:38:41,080 γιατί κάνουμε Conga τύμπανα. 678 00:38:41,080 --> 00:38:44,180 Και έχω κάποιες μαράκες εδώ κάτω, πάρα πολύ. 679 00:38:44,180 --> 00:38:50,280 >> Γι 'αυτό και θα μπορούσε να θέσει το παιχνίδι drum machine, αλλά θα συνεχιστεί επ 'αόριστον, 680 00:38:50,280 --> 00:38:53,700 και θα μπορούσε να αρχίσει αρπάζοντας επάνω όλη η μνήμη στο σύστημά μου. 681 00:38:53,700 --> 00:38:57,090 Γι 'αυτό θα καλέσετε τη συνάρτηση αυτή παίζουν μουσική, η οποία, όπως θα δούμε, 682 00:38:57,090 --> 00:39:02,020 χρησιμοποιήσετε την περικοπή παράλληλη σύνθεση να παίξει το μικρό μας τραγούδι Frere Jacques 683 00:39:02,020 --> 00:39:04,200 μαζί με αυτό το περίεργο το drum machine. 684 00:39:04,200 --> 00:39:06,190 Έτσι, ας ρίξουμε μια ματιά. 685 00:39:06,190 --> 00:39:10,920 Και σας παρακαλώ να βελτιώσουμε μου διευθέτηση όλων των μερών του τυμπάνου. 686 00:39:10,920 --> 00:39:13,375 Δεν είναι η ειδικότητά μου, αλλά εγώ είχε ένα πολύ διασκεδαστικό το κάνουμε αυτό. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Παίζει μουσική] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Έτσι φυσικά, αυτό είναι όλο λίγο δεν είναι τόσο διασκεδαστικό 691 00:39:56,980 --> 00:40:01,100 αν δεν μπορούμε να το μετατρέψει με αποτέλεσμα έτσι ίσως 692 00:40:01,100 --> 00:40:04,650 θα μπορούσε να ερμηνευθεί από έναν άνθρωπο ερμηνευτή. 693 00:40:04,650 --> 00:40:06,535 Γι 'αυτό και δεν θα το τρέξει εδώ. 694 00:40:06,535 --> 00:40:07,910 Έχω ήδη δημιουργούνται τα αρχεία. 695 00:40:07,910 --> 00:40:10,280 Μπορείτε να δείτε ότι υπάρχει μια dot LilyPond file-- και αυτό 696 00:40:10,280 --> 00:40:14,500 θα segue μου πάνω σε Connor-- και ένα αρχείο MIDI τελεία, 697 00:40:14,500 --> 00:40:18,610 και ένα αρχείο PDF τελεία, η οποία είναι ό, τι LilyPond θα δημιουργήσει τελικά. 698 00:40:18,610 --> 00:40:23,770 >> Αλλά αυτά είναι εκείνα τα σενάρια, και εγώ θα απλά να τρέξουν με τις επιλογές βοήθειά τους. 699 00:40:23,770 --> 00:40:28,090 Εάν πάρετε αυτά οργανωθεί και να λειτουργήσει με Euterpea, μπορείτε να δημιουργήσετε ένα αρχείο MIDI. 700 00:40:28,090 --> 00:40:31,160 Και στη συνέχεια από το αρχείο MIDI με αυτό το πρόγραμμα MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 μπορείτε να δημιουργήσετε ένα Lily Αρχείο λίμνη, και στη συνέχεια θα 702 00:40:34,930 --> 00:40:37,974 μπορεί να δημιουργήσει ένα PDF από το σκορ. 703 00:40:37,974 --> 00:40:39,390 Και θα πρέπει να ρίξουμε μια ματιά σε αυτό. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Έτσι Κόνορ θα δείξει κατά πάσα πιθανότητα πώς να σχολιάσετε αυτό καλύτερα, 706 00:40:55,140 --> 00:41:02,570 αλλά αυτό είναι Frere Jacques ως που δημιουργούνται από εμένα Euterpea. 707 00:41:02,570 --> 00:41:07,300 Είναι ακριβώς στο Γ θα έπρεπε να είχα καταλάβει ποιο είναι το hack είναι πραγματικά σε. 708 00:41:07,300 --> 00:41:11,090 Αλλά αυτό είναι ο αγωγός για Πώς το κάνετε αυτό με αυτό. 709 00:41:11,090 --> 00:41:12,950 Ας μιλήσουμε περισσότερο για LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: Εντάξει ας δούμε. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Μήπως σας αναφέρω Μάθετε Μπορείτε Haskell; 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Ω ναι. 714 00:41:22,460 --> 00:41:23,480 Αναχώρηση Μάθετε Μπορείτε Haskell. 715 00:41:23,480 --> 00:41:24,410 Είναι οι πόροι. 716 00:41:24,410 --> 00:41:26,830 Αυτό είναι το πώς άρχισα μάθησης, και είναι μεγάλη. 717 00:41:26,830 --> 00:41:27,580 Δεν χαζή μάθησης. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Έτσι είναι σε απευθείας σύνδεση. 719 00:41:28,829 --> 00:41:34,760 Έτσι, ένας τύπος που ονομάζεται [δεν ακούγεται] learnyouahaskell.com, χωρίς κενά. 720 00:41:34,760 --> 00:41:37,065 Γραμματική είναι άρρωστος. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: Είναι εικονογραφημένα, πάρα πολύ. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Λοιπόν, τι είναι LilyPond; 723 00:41:39,440 --> 00:41:42,480 Είναι μια δηλωτική προγραμματισμό γλώσσα για τη μουσική στοιχειοθεσίας. 724 00:41:42,480 --> 00:41:45,480 Έτσι, μπορείτε να declarative-- σκέφτονται τα πράγματα όπως HTML, 725 00:41:45,480 --> 00:41:50,900 όπου δεν είστε saying-- HTML Δε λέει πώς web browsers θα πρέπει να 726 00:41:50,900 --> 00:41:52,180 καθιστούν σελίδες βήμα προς βήμα. 727 00:41:52,180 --> 00:41:54,096 Είναι απλά το λέω αυτό είναι μια περιγραφή κειμένου 728 00:41:54,096 --> 00:41:56,100 τι θέλετε η σελίδα να μοιάσει. 729 00:41:56,100 --> 00:41:59,310 >> Και τότε είναι επίσης ένα πρόγραμμα που συγκεντρώνει αυτή τη γλώσσα, 730 00:41:59,310 --> 00:42:02,300 ή να το διαβάσετε στην συνέχεια και στην πραγματικότητα την στοιχειοθεσία για σας, 731 00:42:02,300 --> 00:42:05,570 και φτύσει αυτά υπέροχο αναζητούν βαθμολογίες PDF. 732 00:42:05,570 --> 00:42:08,250 Μπορείτε επίσης να πάρετε μορφή PNG ή οτιδήποτε άλλο. 733 00:42:08,250 --> 00:42:10,300 Ένας καλός τρόπος για να σκεφτούμε αυτού είναι κατ 'αναλογίαν 734 00:42:10,300 --> 00:42:16,620 είναι ότι το LaTeX είναι περίπου όπως LillyPond, αλλά μόνο για απλούς στοιχειοθεσίας. 735 00:42:16,620 --> 00:42:20,360 Έτσι, αντί of-- δεν είναι WYSIWYG, τι βλέπετε 736 00:42:20,360 --> 00:42:22,960 Είναι αυτό που παίρνετε, όπως, ας πούμε Finale είναι, ή Sibelius, 737 00:42:22,960 --> 00:42:27,430 ή το Microsoft Word, όπου μπορείτε να πληκτρολογήσετε σε πραγματικό χρόνο και τα σχέδια τα πράγματα σε πραγματικό χρόνο 738 00:42:27,430 --> 00:42:31,340 και να δείτε τις αλλαγές ακαριαία. 739 00:42:31,340 --> 00:42:32,140 >> Είναι βασισμένο σε κείμενο. 740 00:42:32,140 --> 00:42:35,290 Θα πρέπει να συγκεντρώσει σας αποτελέσματα χρησιμοποιώντας ένα ξεχωριστό πρόγραμμα 741 00:42:35,290 --> 00:42:37,090 και να βγει αργότερα αρχεία PDF. 742 00:42:37,090 --> 00:42:43,320 Αυτό είναι λίγο λιγότερο βολικό για χρήση εάν είστε 743 00:42:43,320 --> 00:42:46,520 προσπαθεί να γράψει απευθείας σε βαθμολογία και είστε 744 00:42:46,520 --> 00:42:48,620 επιχειρεί να συνθέσει και στον υπολογιστή. 745 00:42:48,620 --> 00:42:50,830 Αλλά υπάρχουν πολλά πλεονεκτήματα για αυτό. 746 00:42:50,830 --> 00:42:56,110 Ένα, αυτό φαίνεται πολύ καλύτερο, γιατί μπορεί πραγματικά LillyPond 747 00:42:56,110 --> 00:42:58,210 πάρτε το χρόνο να κάνουμε διάταξης αποφάσεις σωστά, 748 00:42:58,210 --> 00:43:02,380 σε αντίθεση με Sibelius ή Finale, τα οποία έχουν να κάνει τόσο επιβαρυμένη αλγορίθμων 749 00:43:02,380 --> 00:43:05,020 ότι μπορεί να εμφανίσει τα πράγματα σε πραγματικό χρόνο. 750 00:43:05,020 --> 00:43:07,660 >> Γιατί λοιπόν είναι LilyPond-- γραφικά υπολογιστών είναι δύσκολο. 751 00:43:07,660 --> 00:43:10,535 Αν κάνεις κάτι με τη μουσική και θέλετε να γράψετε αποτελέσματα, 752 00:43:10,535 --> 00:43:13,900 δεν θέλετε να γράψετε τα πάντα από τον εαυτό σας 753 00:43:13,900 --> 00:43:19,040 ξεκινώντας με το πώς να επιστήσω επιτελεία και πώς να επιστήσω σημειωματάρια. 754 00:43:19,040 --> 00:43:21,020 Είναι πολύ δύσκολο. Αυτό που έχει γίνει παλιότερα. 755 00:43:21,020 --> 00:43:22,170 Είσαι μια χαρά. 756 00:43:22,170 --> 00:43:26,200 >> Αν θέλετε να χρησιμοποιήσετε Finale ή του Sibelius, οι μορφές αρχείων για αυτά τα πράγματα 757 00:43:26,200 --> 00:43:30,180 είναι πολύ περίπλοκη, και δεν μπορείτε πραγματικά να τους χρησιμοποιήσετε με προγραμματισμό. 758 00:43:30,180 --> 00:43:35,020 Μπορείτε να ανοίξει Σιμπέλιους με Φινάλε και πηγαίνετε στο Αρχείο, Εξαγωγή ως PDF εαυτό σας, 759 00:43:35,020 --> 00:43:37,600 αλλά δεν μπορείτε πραγματικά να καλέστε ότι από μια δέσμη ενεργειών. 760 00:43:37,600 --> 00:43:40,440 LillyPond, μπορείτε να καλέσετε από τις εν λόγω σενάρια. 761 00:43:40,440 --> 00:43:44,397 Θα μπορούσατε εύκολα να επαναλάβει LillyPond με το LaTeX. 762 00:43:44,397 --> 00:43:47,230 Δεν θα έχω τόσο πολύ χρόνο για να πάει σε αυτές τις τεχνολογίες τώρα, 763 00:43:47,230 --> 00:43:48,321 αλλά υπάρχουν. 764 00:43:48,321 --> 00:43:50,070 Αν θέλετε να δείτε σε ένα βιβλίο LillyPond, 765 00:43:50,070 --> 00:43:53,760 Είναι ένα πρόγραμμα που έρχεται με διανομής LillyPond σας, 766 00:43:53,760 --> 00:43:57,030 και είναι για την επανάληψη LillyPond θραύσματα σε LaTeX 767 00:43:57,030 --> 00:44:00,340 αν θέλετε να κάνετε κάτι σαν ένα μεγάλο έγγραφο μουσικολογία 768 00:44:00,340 --> 00:44:02,289 με παραδείγματα, για παράδειγμα. 769 00:44:02,289 --> 00:44:04,580 Και είναι μια καλή ικανότητα για ζωή, αν κάνετε κάτι 770 00:44:04,580 --> 00:44:05,770 με τη μουσική, όχι μόνο CS50. 771 00:44:05,770 --> 00:44:09,320 Έχω χρησιμοποιήσει LillyPond για όλους σύνθεση των έργων μου 772 00:44:09,320 --> 00:44:11,880 από τότε που ήταν βασικά ένα ανώτερος στο γυμνάσιο. 773 00:44:11,880 --> 00:44:13,455 >> Τόσο εδώ είναι μερικά απλά παραδείγματα. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 Αυτό είναι βασικά αντιπροσωπευτική από το επίπεδο δυσκολίας 776 00:44:21,060 --> 00:44:23,481 ότι οι περισσότεροι άνθρωποι θα το πρόσωπο αυτό που προσπαθούσαν 777 00:44:23,481 --> 00:44:24,980 να χρησιμοποιούν LilyPond για απλά έργα. 778 00:44:24,980 --> 00:44:29,519 Αυτή πρώτο είναι η αρχή σε ένα χορικό πρελούδιο του Μπαχ. 779 00:44:29,519 --> 00:44:31,810 Αυτό το ένα κάτω είναι ένα απόσπασμα από ένα από τα δικά μου έργα, 780 00:44:31,810 --> 00:44:34,650 και είναι ακριβώς εκεί για να δείξουν Σας πράγματα όπως [δεν ακούγεται] 781 00:44:34,650 --> 00:44:38,550 βάζοντας πολλαπλές γραμμές με τον ίδιο το προσωπικό, πώς λυρική undersetting λειτουργεί. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Λυρική υποστρώματα είναι ένα πράγμα που είναι πολύ εύκολο στη χρήση LilyPond για χορωδιακής μουσικής. 784 00:44:46,110 --> 00:44:48,814 >> Και έτσι τότε δεν υπάρχει κάποια περισσότερα περίπλοκη παραδείγματα εδώ. 785 00:44:48,814 --> 00:44:50,980 Όλα αυτά γίνονται στο LilyPond και είναι εφικτό. 786 00:44:50,980 --> 00:44:55,280 Αυτό το πρώτο απόσπασμα είναι από το [Δεν ακούγεται] από [δεν ακούγεται]. 787 00:44:55,280 --> 00:44:58,860 Και αυτό [δεν ακούγεται] από ένα κομμάτι για σόλο μπάσο 788 00:44:58,860 --> 00:45:03,550 φλάουτο με [δεν ακούγεται], ο οποίος είναι ένας longtime-- που 789 00:45:03,550 --> 00:45:07,101 ήταν ένας μακροπρόθεσμος μέλος της Τμήμα Μουσικών Σπουδών εδώ, νομίζω. 790 00:45:07,101 --> 00:45:08,600 Δεν είμαι σίγουρος πού έχει πάει μακριά για να. 791 00:45:08,600 --> 00:45:12,410 Αλλά ήταν ο σύμβουλος του Χάρβαρντ Σύνδεσμος Συνθετών για μεγάλο χρονικό διάστημα. 792 00:45:12,410 --> 00:45:13,530 Υπέροχος άνθρωπος. 793 00:45:13,530 --> 00:45:16,920 Και γράφει κάποια μουσική που έχει πολύ περίπλοκο συμβολισμό ότι LillyPond 794 00:45:16,920 --> 00:45:20,500 μπορεί, ωστόσο, να χειριστεί πολύ καλά. 795 00:45:20,500 --> 00:45:26,030 >> Έτσι απλά για να σας δώσει μια αίσθηση του τι δυνατότητες Αυτό το πράγμα είναι τόσο are-- 796 00:45:26,030 --> 00:45:28,960 τα εσωτερικά της LillyPond είναι πολύ περίπλοκη. 797 00:45:28,960 --> 00:45:31,060 Και μπορείτε να το χρησιμοποιήσετε για ένα μεγάλο χρονικό διάστημα, συμπεριλαμβανομένων 798 00:45:31,060 --> 00:45:32,520 για κάποιο αρκετά περίπλοκη τα πράγματα, χωρίς πραγματικά να 799 00:45:32,520 --> 00:45:34,060 χρειάζεται να γνωρίζουμε πολλά γι 'αυτούς. 800 00:45:34,060 --> 00:45:38,720 Αλλά η βασική ιδέα είναι ότι για το χαμηλότερο επίπεδο, τα άτομα της LillyPonds 801 00:45:38,720 --> 00:45:39,970 είναι οι σημειώσεις. 802 00:45:39,970 --> 00:45:42,761 Οι σημειώσεις περιέχουν ένα πλαίσιο που ονομάζεται φωνές. 803 00:45:42,761 --> 00:45:44,510 Έτσι, στο πλαίσιο φωνή βασικά αντιστοιχεί 804 00:45:44,510 --> 00:45:47,410 σε μια ενιαία γραμμή της πολυφωνίας. 805 00:45:47,410 --> 00:45:49,410 Και τότε το πλαίσιο μπορεί να περιέχονται ιεραρχικά 806 00:45:49,410 --> 00:45:53,590 σε υψηλότερο επίπεδο, ότι αυτοί αντιπροσωπεύουν επιτελεία στο σκορ 807 00:45:53,590 --> 00:45:56,750 ή μεγαλύτερες ομάδες, όπως επιτελεία πιάνο ή χορωδία επιτελεία, 808 00:45:56,750 --> 00:45:58,990 και στη συνέχεια, τελικά ολόκληρο το σκορ πλαίσια. 809 00:45:58,990 --> 00:46:02,260 Και μπορείτε πραγματικά να συμπεριλάβει πολλαπλά αποτελέσματα σε ένα βιβλίο. 810 00:46:02,260 --> 00:46:05,770 >> Και κάθε πλαίσιο έχει αριθμός συνημμένων χαρακτών. 811 00:46:05,770 --> 00:46:08,340 Αν κοιτάξετε μέσα από το περιεχόμενα του ένα πλαίσιο 812 00:46:08,340 --> 00:46:14,410 και να εκτυπώσετε ένα συγκεκριμένο σύμβολο ή ορισμένη κατηγορία των συμβόλων, όπως απαιτείται. 813 00:46:14,410 --> 00:46:17,840 Έτσι, σε κάθε πλαίσιο ομιλίας, υπάρχει [δεν ακούγεται] σημειώσεις 814 00:46:17,840 --> 00:46:24,270 χαράκτης που είναι βασικά μια λειτουργία ή ένα αντικείμενο που γράφει όλα το σημείωμα 815 00:46:24,270 --> 00:46:26,290 κεφάλια στα σωστά τμήματα μιας σελίδας. 816 00:46:26,290 --> 00:46:29,510 Στη συνέχεια, υπάρχει μια σχισμή χαράκτης, η οποία γράφει έξω σχισμές στο προσωπικό. 817 00:46:29,510 --> 00:46:31,517 Στη συνέχεια, υπάρχει ένα μετρονόμο σήμα χαράκτη ότι 818 00:46:31,517 --> 00:46:33,100 γράφει έξω μετρονόμος σήματα σε ένα αποτέλεσμα. 819 00:46:33,100 --> 00:46:36,410 Και όλα αυτά ταιριάζουν πολύ και μέσα στην ιεραρχία. 820 00:46:36,410 --> 00:46:39,500 Και είναι πολύ, πολύ, πολύ προσαρμόσιμη, η οποία θα πρέπει να 821 00:46:39,500 --> 00:46:42,880 αν θέλετε να πάρετε τα πράγματα όπως αυτό. 822 00:46:42,880 --> 00:46:45,730 >> Έτσι, όλα τα πλαίσια έχουν πολλές διαφορετικές ιδιότητες 823 00:46:45,730 --> 00:46:52,410 ότι μπορείτε να τροποποιήσετε για τα πάντα από την απόσταση σε διάφορα γραμματοσειράς 824 00:46:52,410 --> 00:46:54,942 επιλογή για τα μεγέθη των πραγμάτων. 825 00:46:54,942 --> 00:46:56,900 Αν θέλετε να κάνετε ακόμα πιο περίπλοκα τα πράγματα, 826 00:46:56,900 --> 00:46:59,210 υπάρχει ένα ενσωματωμένο scripting γλώσσα. 827 00:46:59,210 --> 00:47:01,820 Χρησιμοποιούν σύστημα, το οποίο είναι διάλεκτος της LISP. 828 00:47:01,820 --> 00:47:04,960 Αυτά δεν κάνει πιθανώς σημαίνει τίποτα για σένα. 829 00:47:04,960 --> 00:47:06,900 Αλλά βασικά, ένα σύστημα άλλη λειτουργική 830 00:47:06,900 --> 00:47:09,500 γλώσσα προγραμματισμού, περισσότερο ή λιγότερο. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: Η γραβάτα-in. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR Harris: Ναι. 833 00:47:12,690 --> 00:47:15,390 Είναι μια καλή γραβάτα-in, υποθέτω. 834 00:47:15,390 --> 00:47:20,150 Και αυτό είναι που χρησιμοποιείται ως γλώσσα διδασκαλίας, στην πραγματικότητα, κάτω Μαζικής Ave. Στο MIT. 835 00:47:20,150 --> 00:47:26,590 Και είναι πολύ βολικό για LillyPond για διάφορους τεχνικούς λόγους. 836 00:47:26,590 --> 00:47:30,317 >> Και έτσι, αν θέλετε να κάνετε απλές τσιμπήματα εξαρτάται από υποθετικά, 837 00:47:30,317 --> 00:47:32,900 για example-- υπάρχει κάποια κατάσταση της βαθμολογίας που έχει συναντήσει, 838 00:47:32,900 --> 00:47:36,495 να τροποποιήσουν το διάταξη ή whatnot-- συνέχεια 839 00:47:36,495 --> 00:47:37,620 Οι εγκαταστάσεις αυτές υπάρχουν. 840 00:47:37,620 --> 00:47:38,667 Είναι περίπλοκο. 841 00:47:38,667 --> 00:47:40,250 Έτσι, εδώ είναι μια αρκετά απλή δείγμα κώδικα. 842 00:47:40,250 --> 00:47:43,810 Είναι πέντε γραμμές. 843 00:47:43,810 --> 00:47:46,120 Βασικά, είμαι ορίζουν δύο επιτελεία. 844 00:47:46,120 --> 00:47:46,904 Είναι στο 3/4. 845 00:47:46,904 --> 00:47:48,695 Το πρώτο προσωπικό έχει μια συνημμένο σήμα τέμπο, 846 00:47:48,695 --> 00:47:51,110 αλλά αυτό είναι πραγματικά συμβαίνει να πάει σε ολόκληρο το σκορ, 847 00:47:51,110 --> 00:47:54,960 επειδή τα σήματα tempo βρίσκονται στο επίπεδο του σκορ. 848 00:47:54,960 --> 00:47:59,044 Ο χαράκτης σήμα μετρονόμου Επισυνάπτεται να σκοράρει πλαίσιο. 849 00:47:59,044 --> 00:48:01,460 Υπάρχουν διαφορετικά κλειδιά, επειδή το [δεν ακούγεται] χαράκτης 850 00:48:01,460 --> 00:48:02,710 Επισυνάπτεται τα επιτελεία. 851 00:48:02,710 --> 00:48:04,441 Μπορείτε πραγματικά να κάνουμε είναι. 852 00:48:04,441 --> 00:48:06,190 Το δείγμα που έγραψα είναι στην πραγματικότητα σε Ντο μείζονα, 853 00:48:06,190 --> 00:48:07,990 αλλά αυτό είναι μόνο για να αποδεικνύουν μπορείτε να έχετε 854 00:48:07,990 --> 00:48:09,570 διαφορετικά κλειδιά σε διαφορετικές επιτελεία. 855 00:48:09,570 --> 00:48:15,710 Και η βασική σύνταξη είναι να γράψετε σημειώστε τα ονόματα με E, F, G, οτιδήποτε. 856 00:48:15,710 --> 00:48:18,910 Αν θέλετε να κάνετε αλλοιώσεις, Σας επίθημα ή ES. 857 00:48:18,910 --> 00:48:22,640 Αυτό είναι από την ολλανδική μουσικολογικά συνέδρια. 858 00:48:22,640 --> 00:48:28,290 >> Και για να κάνουμε άλματα οκτάβας, θα πρέπει να χρησιμοποιήσετε αυτά τα σημάδια υποδιαίρεσης, κόμμα ή απόστροφο. 859 00:48:28,290 --> 00:48:30,580 Η σχετική σημαίνει μόνο Ό, τι έχει μια σημείωση, 860 00:48:30,580 --> 00:48:34,080 αυτόματα θα plaec στο οκτάβα πλησιέστερα προς την προηγούμενη. 861 00:48:34,080 --> 00:48:37,624 Και αν θέλετε να πηδούν πάνω από α fifth-- πω ένα πέμπτο ή more-- 862 00:48:37,624 --> 00:48:39,165 τότε θα πρέπει να χρησιμοποιήσετε το [δεν ακούγεται]. 863 00:48:39,165 --> 00:48:42,580 Αλλά κατά τα άλλα, δεν χρειάζεται να προσδιορίζει την οκτάβα κάθε νότα. 864 00:48:42,580 --> 00:48:46,130 >> Και σε σχέση C, ο πρωθυπουργός, και C, μπορείτε απλά προσδιορίστε μέση C 865 00:48:46,130 --> 00:48:48,630 και της βάσης C, ιδιαίτερα πρώτες νότες. 866 00:48:48,630 --> 00:48:55,020 Στη συνέχεια, έχετε αυτά τα επιτελεία που οργανώνουν αυτές οι δύο φωνές ή δείγματα της μουσικής, 867 00:48:55,020 --> 00:48:56,730 και έχετε ένα σκορ. 868 00:48:56,730 --> 00:48:58,440 Και αυτό μοιάζει με αυτό. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Αν θέλετε να πάρετε το χρόνο για να αντίγραφο αυτού του δείγματος των LillyPond 871 00:49:05,380 --> 00:49:07,530 κώδικα σχετικά με το προηγούμενο σύρετε προς τα κάτω εδώ, και σας 872 00:49:07,530 --> 00:49:09,030 μπορεί να γράψει για τον εαυτό σας LillyPond. 873 00:49:09,030 --> 00:49:11,280 Ξέρω ότι έχουμε κάτι ότι μοιάζει πολύ με αυτό. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Έτσι, υπάρχει μια άλλη τεχνολογία Μουσική ονομάζεται XML διατηρείται 876 00:49:19,610 --> 00:49:22,030 από εντελώς διαφορετικούς ανθρώπους. 877 00:49:22,030 --> 00:49:28,150 Η XML είναι ένα κείμενο δεδομένων structure-- μου δεν θα πρέπει να λένε ότι τα δεδομένα structure-- πω 878 00:49:28,150 --> 00:49:29,580 αλληγορία χάρτη είδος. 879 00:49:29,580 --> 00:49:33,800 Και αυτό είναι σχεδιασμένο για να κρατήσει ιεραρχική δεδομένων πολύ καλά. 880 00:49:33,800 --> 00:49:37,050 HTML, για παράδειγμα, είναι ένα είδος του XML. 881 00:49:37,050 --> 00:49:41,090 Και μπορείτε να πείτε επειδή XML είχε όλα τα υποστηρίγματα γωνίας και της γωνίας 882 00:49:41,090 --> 00:49:44,700 σημάτων βραχίονα κάθετο ότι τα πεδία δεδομένων show. 883 00:49:44,700 --> 00:49:47,390 >> Δεν έχω έναν κώδικα παράδειγμα από το Music XML. 884 00:49:47,390 --> 00:49:50,450 Μπορείτε να βρείτε τον εαυτό σας. 885 00:49:50,450 --> 00:49:53,735 Βασικά, ο λόγος μπορεί να θέλετε να χρησιμοποιούν XML ως το ενδιάμεσο στάδιο 886 00:49:53,735 --> 00:49:55,980 Είναι, πρώτα απ 'όλα, είναι μια μορφή ανταλλαγής 887 00:49:55,980 --> 00:50:02,301 για βασικά every-- εγώ δεν θα έλεγα κάθε, αλλά πολλά διαφορετικά βαθμολογίας 888 00:50:02,301 --> 00:50:02,800 συγγραφείς. 889 00:50:02,800 --> 00:50:04,966 Έτσι, αν γράψετε στη Μουσική XML, όχι μόνο μπορεί να LillyPond 890 00:50:04,966 --> 00:50:08,080 διαβάστε το με τη βοήθεια αυτού του auxilary πρόγραμμα που ονομάζεται Music XML για να LY, 891 00:50:08,080 --> 00:50:11,360 αλλά επίσης μπορεί να διαβάσει Φινάλε αυτό, Sibelius μπορεί να το διαβάσει. 892 00:50:11,360 --> 00:50:14,770 Ανάλογα με το πόσο εσωτερικό αντικείμενο σας ιεραρχία εργάζεται για την εκπροσώπηση της μουσικής, 893 00:50:14,770 --> 00:50:18,820 θα μπορούσε να είναι πιο εύκολο να γράψω στη Μουσική XML από το να LillyPond 894 00:50:18,820 --> 00:50:22,410 και να στηριχθεί μόνο σε Μουσική XML να LY να κάνετε τη μετατροπή. 895 00:50:22,410 --> 00:50:24,282 >> Δεν νομίζω ότι [δεν ακούγεται] έχει Μουσική XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: Αυτό δεν ισχύει. 897 00:50:25,490 --> 00:50:26,340 Κάποιος εργάζεται σε αυτό, όμως. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea δεν έχουν Λειτουργία εξόδου Μουσική XML ακόμα. 900 00:50:31,040 --> 00:50:35,340 Αν θέλετε μια τελική ιδέα του έργου, ίσως έρθετε σε επαφή με παιδιά 901 00:50:35,340 --> 00:50:38,620 Ο Stephen ξέρει, και θα μπορούσε να χρησιμοποιήσει τη βοήθειά σας. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Θα ήθελα πολύ αυτό. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Επίσης, ουσιαστικά, κάθε γλώσσες προγραμματισμού 904 00:50:43,450 --> 00:50:46,610 ότι αξίζει το άλας της έχει ήδη μια βιβλιοθήκη XML, 905 00:50:46,610 --> 00:50:51,030 ώστε να μπορείτε να μετατρέψετε όλα τα εσωτερικά της μουσικής σας σε κάποιο αντικείμενο 906 00:50:51,030 --> 00:50:54,120 ότι η βιβλιοθήκη XML μπορεί να γράψει ότι θα απαιτούν λιγότερα 907 00:50:54,120 --> 00:50:57,470 μεταβολές στην εσωτερική δομή σας για ό, τι μουσική σας αντικείμενα 908 00:50:57,470 --> 00:51:00,310 θέλω να γράψω ό, τι γράφει το άμεσα σε LillyPond θα. 909 00:51:00,310 --> 00:51:04,380 Στη συνέχεια, απλά να το τυπώσετε έξω με XML με οι βιβλιοθήκες XML στη γλώσσα σας, 910 00:51:04,380 --> 00:51:07,260 η οποία θα εγγυάται ότι είναι συντακτικά σωστά και τα πάντα, 911 00:51:07,260 --> 00:51:08,720 και στη συνέχεια να το μετατρέψει σε LillyPond. 912 00:51:08,720 --> 00:51:11,060 Έτσι, η τεχνολογία μπορεί να θέλετε να εξετάσουμε αν κάνετε κάτι 913 00:51:11,060 --> 00:51:11,650 σαν αυτό. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Δεν ακούγεται], μια άλλη auxilarry τεχνολογία. 916 00:51:16,370 --> 00:51:21,700 Αυτό είναι βασικά Tech Έργων ή Tech Στούντιο για LillyPond. 917 00:51:21,700 --> 00:51:25,380 Έτσι προσφέρει βοήθεια με σύνταξη, με τα πρότυπα 918 00:51:25,380 --> 00:51:28,770 για διάφορα κοινά συνδυασμούς οργάνων. 919 00:51:28,770 --> 00:51:32,780 Επιτρέπει την προβολή της διαίρεσης της οθόνης έτσι μπορείτε να έχετε τον κωδικό σας σε ένα παράθυρο 920 00:51:32,780 --> 00:51:37,350 και PDF σε ένα άλλο παράθυρο και κάντε κλικ για θέσεις στο PDF 921 00:51:37,350 --> 00:51:40,650 για να μεταβείτε στο σχετικό κηλίδες στο πηγαίο κώδικα σας. 922 00:51:40,650 --> 00:51:45,330 Αυτό είναι περισσότερο χρήσιμο αν είστε πραγματικά γραπτώς LillyPond αρχεία εαυτό σας 923 00:51:45,330 --> 00:51:47,400 από ό, τι εάν είστε δημιουργία προγραμματισμού τους. 924 00:51:47,400 --> 00:51:51,230 Αλλά και πάλι, αυτό είναι κάτι χρήσιμο να έχουμε. 925 00:51:51,230 --> 00:51:51,970 >> Εξαιρετική. 926 00:51:51,970 --> 00:51:55,860 Ένα άλλο resources-- απλά θα περνούν από αυτό πολύ γρήγορα. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond έχει εξαιρετική τεκμηρίωση στην ιστοσελίδα της. 928 00:52:01,270 --> 00:52:02,270 Έχουν ένα φροντιστήριο. 929 00:52:02,270 --> 00:52:03,478 Έχουν μια αναφορά σύνταξη. 930 00:52:03,478 --> 00:52:07,010 Έχουν εκατοντάδες αποσπάσματα για διάφορα μικρά πράγματα 931 00:52:07,010 --> 00:52:09,930 yo ίσως χρειαστεί να κάνετε για να αποδείξουν διάφορες δυνατότητες. 932 00:52:09,930 --> 00:52:12,250 Αν θέλετε να χρησιμοποιήσετε η γλώσσα scripting 933 00:52:12,250 --> 00:52:14,740 ή να κάνει πιο εκτεταμένη προσαρμογές, τότε υπάρχει 934 00:52:14,740 --> 00:52:16,730 Εσωτερικά αναφορά σε αυτή τη διεύθυνση URL. 935 00:52:16,730 --> 00:52:21,950 Αν θέλετε να χρησιμοποιήσετε το Music XML, υπάρχει ότι η διεύθυνση URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> Και στη συνέχεια, αν θα πρέπει να μάθετε καθεστώς γιατί πραγματικά θέλετε να χρησιμοποιήσετε 937 00:52:27,960 --> 00:52:30,960 οι scripting εγκαταστάσεις στο LillyPond, τότε υπάρχει μια [δεν ακούγεται] κάλεσε 938 00:52:30,960 --> 00:52:32,918 Δομημένη Ερμηνεία των προγραμμάτων ηλεκτρονικών υπολογιστών, 939 00:52:32,918 --> 00:52:35,820 η οποία δεν είναι μόνο η δεύτερη μεγαλύτερο βιβλίο CS ποτέ written-- 940 00:52:35,820 --> 00:52:39,770 βρείτε μου μετά αν θέλετε να ξέρετε τι Νομίζω ότι το μεγαλύτερο μία is-- 941 00:52:39,770 --> 00:52:43,580 αλλά είναι επίσης ένα πολύ καλό εισαγωγή στη γλώσσα σωστή. 942 00:52:43,580 --> 00:52:46,630 Δεν θα χρειαστεί περισσότερο από ό, τι τα πρώτα τμήματα. 943 00:52:46,630 --> 00:52:47,827 >> Και αυτό είναι όλο. 944 00:52:47,827 --> 00:52:48,410 Καμιά ερώτηση? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> Φοιτητής: Πού μπορώ να κατεβάσω παράγεται σας Frere Jacques 947 00:52:57,972 --> 00:53:01,050 ώστε να μπορώ να το βάλετε στο iPod μου; 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Λοιπόν, μπορείτε να γράψετε έξω σε κάποιο αρχείο wav σε Euterpea. 949 00:53:07,574 --> 00:53:08,490 Και έχετε τον κωδικό. 950 00:53:08,490 --> 00:53:10,000 Είναι στο GitHub. 951 00:53:10,000 --> 00:53:15,590 Φτιάξτε το δικό σας παραλλαγές Frere Jacques από CS50 κυψέλη μυαλό. 952 00:53:15,590 --> 00:53:17,095 Θα ήταν τέλεια. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Οποιοσδήποτε άλλος; 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Χρειαζόμαστε ένα καλύτερο μπάσο τύμπανο, πάρα πολύ. 955 00:53:20,261 --> 00:53:21,935 Είναι πολύ άσχημα. 956 00:53:21,935 --> 00:53:26,565 >> Φοιτητής: Euterpea δεν έχει μόνο η πλευρά σύνθεση, αλλά signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Ναι. 958 00:53:27,440 --> 00:53:30,100 Στην πραγματικότητα, το έργο μου έκανε στο Euterpea όταν 959 00:53:30,100 --> 00:53:33,450 πήρε this-- υπάρχει μια μεταπτυχιακό μάθημα στο Yale ότι 960 00:53:33,450 --> 00:53:35,900 χρησιμοποιεί it-- ήταν στην σύνθεση ήχου. 961 00:53:35,900 --> 00:53:39,810 Έτσι, υπάρχει μια πραγματικά ωραίο τρόπο χρησιμοποιώντας τα βέλη 962 00:53:39,810 --> 00:53:46,150 και μερικά από τα σημειογραφία είδαμε του συνθέτοντας μαζί λειτουργίες του σήματος. 963 00:53:46,150 --> 00:53:50,610 Ειδικότερα, το μπάσο για τους περισσότερους από αυτούς είναι μόνο ένα απλό ημιτονοειδές κύμα. 964 00:53:50,610 --> 00:53:54,240 Αλλά αν ξεκινήσετε τη σύνταξη εκείνων στο προγραμματικό παράξενο τρόπο, 965 00:53:54,240 --> 00:54:00,010 μπορείτε να πάρετε τρελό ήχο εφέ, όπως παράξενο καταρράκτες. 966 00:54:00,010 --> 00:54:04,640 Μπορείτε να δημιουργήσετε πολύ λιθίαση ήχους με πολλά διαφοροποίησης. 967 00:54:04,640 --> 00:54:07,730 >> Έκανα ένα έργο σε κοκκώδη σύνθεση, η οποία είναι 968 00:54:07,730 --> 00:54:12,290 κάπου μεταξύ FM και δειγματοληψίας. 969 00:54:12,290 --> 00:54:15,230 Παίρνετε πολύ μικρό, λίγο δείγματα, και στη συνέχεια 970 00:54:15,230 --> 00:54:20,440 συνδυάστε τα με κάποιο είδος του διαμορφωτή και να δημιουργήσουν ένα πιο πλούσιο ήχο. 971 00:54:20,440 --> 00:54:24,900 Κάναμε επίσης φυσική μοντελοποίηση, έτσι Προσπαθώ να σκεφτώ για την φυσική 972 00:54:24,900 --> 00:54:29,410 και ψυχοακουστική κάτι σαν τρομπέτα, και να σκεφτόμαστε τον τρόπο 973 00:54:29,410 --> 00:54:32,320 ο ήχος που αναπηδούν το κουδούνι της τρομπέτας 974 00:54:32,320 --> 00:54:35,200 και η ακουστική του το δωμάτιο και μοντελοποίηση 975 00:54:35,200 --> 00:54:40,195 ότι με τις βασικές ταλαντωτές. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Ευχαριστώ πολύ. 978 00:54:48,940 --> 00:54:50,140 Ευχαριστώ που ήρθες. 979 00:54:50,140 --> 00:54:52,400 Και είμαι πάντα πρόθυμος να να λάβει ερωτήσεις από email-- 980 00:54:52,400 --> 00:54:55,020 connorharris@college.harvard.edu. 981 00:54:55,020 --> 00:54:57,020 >> STEPHEN KREWSON: Ναι. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Δροσερός. 984 00:55:00,360 --> 00:55:01,667