1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 קונור אריס: היי. 3 00:00:05,930 --> 00:00:06,820 אני קונור האריס. 4 00:00:06,820 --> 00:00:09,729 אני CA CS50 באוניברסיטת הרווארד. 5 00:00:09,729 --> 00:00:11,270 סטפן קרווסון: אני סטיבן קרווסון. 6 00:00:11,270 --> 00:00:12,582 אני TF לCS50 באוניברסיטת ייל. 7 00:00:12,582 --> 00:00:15,790 קונור אריס: ואנחנו הולכים לדבר על כמה טכנולוגיות שאולי 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 אנחנו הולכים להתמקד בראשונים שפת תכנות בשם הסקל. 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 שהשתמשת כבר, ובמיוחד על ספרייה נכתבה בהסקל 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 וסטיבן ינחה אותך באמצעות דוגמא מצוינת לכך. 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 >> סטפן קרווסון: ב בנוסף, חשב שזה 24 00:01:04,319 --> 00:01:06,720 יהיה מגניב להגדיר קצת רמזים 25 00:01:06,720 --> 00:01:10,780 כיוון צינור בין קבצי MIDI-Euterpea נוצר 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 קונור אריס: שוב, אנחנו צריכים להדגיש, 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 >> סטפן קרווסון: ימין. 33 00:01:26,362 --> 00:01:30,116 ולגמרי בחינם. 34 00:01:30,116 --> 00:01:32,240 קונור אריס: אז תודות, רק לקרוא את זה. 35 00:01:32,240 --> 00:01:33,406 סטפן קרווסון: כדין ציין. 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 קונור אריס: ואם אתה לא יכול לקבל LillyPond לעבוד, לא ביג דיל. 43 00:01:55,620 --> 00:02:00,139 אין הידור בשידור חי ש יהיה מעורב, לפחות בצד שלי. 44 00:02:00,139 --> 00:02:02,930 סטפן קרווסון: הסקל ו 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 איזה סוג ל-- אולי עצמי דומה רצף של הערות, או אולי הערות 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 ב ימאהה וג'ון 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 הם conformant ל סטנדרטי. הכללי 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 לכל הסוגים השונים של סינטיסייזר או סוגים שונים של כל המכשיר 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 היא בדרך כלל אחד קצת המציין 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 קונור אריס: כן. 96 00:04:51,950 --> 00:04:54,230 כל נינטנדו הקלאסי משחקי וידאו כנראה הייתם 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 >> סטפן קרווסון: הנה דוגמא של 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 ויש מימוש כל-- 108 00:05:37,240 --> 00:05:39,156 >> קונור אריס: אולי היית השוואה טובה יותר 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 וזה רק רשימה ל-- זרם גדול אירועים ומכשירים ומה לא, 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 >> סטפן קרווסון: אז למה הסקל? 119 00:06:13,780 --> 00:06:19,110 הסקל הוא תכנות פונקציונלי שפה, מתקדמת מאוד, 120 00:06:19,110 --> 00:06:22,770 שונה מאוד מC, שונה מאוד מPHP. 121 00:06:22,770 --> 00:06:28,120 ואנחנו הולכים לראות שיש קלות הרכבת פונקציות בהסקל 122 00:06:28,120 --> 00:06:37,640 שיאפשר לנו רוח באמצעות הלחנה או הקלדה, תמלול, 123 00:06:37,640 --> 00:06:42,160 משהו כמו פררתי ז'אק, השיר הזה פשוט ש 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 אנו משתמשים הסקל, שבי פונקציות הן אזרחים מהשורה הראשונות. 128 00:06:59,400 --> 00:07:01,120 >> ואני רוצה להאריך זה קצת. 129 00:07:01,120 --> 00:07:08,800 זה קצת קל notate פרר ז'אק בהסקל. 130 00:07:08,800 --> 00:07:12,100 אבל מה אנחנו אם רצינו להוסיף חלק תוף לזה? 131 00:07:12,100 --> 00:07:17,320 מה אם אנחנו רוצים לנסות לעשות משהו כמו תוף רולנד 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 ואתה יכול לשלוט בעולם הקצב, ואתה יכול לבחור 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 >> ואנו רואים דרך נחמדה ב הסקל לייצג שלב זה 139 00:07:45,290 --> 00:07:48,810 רצף עם כל דברים מגניבים שונים בהסקל 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 חלק מההיבטים של הסקל וEuterpea, 146 00:08:07,620 --> 00:08:11,760 שהוא תחום ספציפי שפה מוטבעת בכתב 147 00:08:11,760 --> 00:08:14,970 בהסקל לסוגים מוזיקליים. 148 00:08:14,970 --> 00:08:17,350 אז אנא אל לבדוק את הקוד באינטרנט. 149 00:08:17,350 --> 00:08:22,404 לפטר את GHCI, המהווה את גלזגו הסקל מהדר מתורגמן. 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 >> וזה מאפשר לך לטעון בעם כל-- התחביר הוא מעי גס ולאחר מכן 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 ולאחר מכן כפי שנראה, סוגים וסוג שיעורים הם כל כך חשובים בהסקל, 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 אני יודע על הדרך מספרית סוגי העבודה בהסקל, 161 00:08:55,114 --> 00:08:56,530 אבל אני לא יודע הרבה על מוסיקה. 162 00:08:56,530 --> 00:09:01,280 אבל אתה יכול לחקור את הדרך בה הם נמצאים שהוגדר על ידי שימוש בפקודת T או הסוג זה 163 00:09:01,280 --> 00:09:04,577 ולאחר מכן קורא בבפרט פונקציה או אובייקט נתונים. 164 00:09:04,577 --> 00:09:05,410 קונור אריס: כן. 165 00:09:05,410 --> 00:09:09,820 אם חשב C וקלאנג היה קשוח על סוגים, 166 00:09:09,820 --> 00:09:11,230 אין לך מושג על Haskell. 167 00:09:11,230 --> 00:09:14,230 הדבר הטוב הוא שהסקל אם אתה יכול להשיג את הקוד שלך להדר 168 00:09:14,230 --> 00:09:16,790 ואם בודק סוג הסקל, זה כנראה נכון, 169 00:09:16,790 --> 00:09:18,675 כי המערכת היא כל כך קפדנית הסוג. 170 00:09:18,675 --> 00:09:20,090 >> סטפן קרווסון: כן. 171 00:09:20,090 --> 00:09:21,980 אז אני רק רוצה ללכת through-- ושוב, 172 00:09:21,980 --> 00:09:27,160 זה לא עושה את זה justice-- כמה מ התכונות של הסקל כי, לפחות 173 00:09:27,160 --> 00:09:31,780 לcreators-- והוא נוצר בסוף שנתי 1980 על ידי חבורה של אנשים, 174 00:09:31,780 --> 00:09:34,610 ועדה של כ -20 אנשים-- חשב היו חשובים. 175 00:09:34,610 --> 00:09:36,850 והדבר הראשון שהם מופיע בנייר ש 176 00:09:36,850 --> 00:09:41,890 תאר את ראשיתו של הסקל במשך 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 והסקל עושה את זה בשיחה בדרך צורך או דרך שאינה מחמירה. 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 אם אנחנו חושבים על ההפשטה של רצף צעד מוסיקלי. 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 אז זה יהיה ממש נחמד אם יכול לחקות שבהסקל. 189 00:10:24,650 --> 00:10:31,040 ואנחנו יכולים לעשות את זה עם אינסופי ערכים, ברשימות אינסופיות מסוימות. 190 00:10:31,040 --> 00:10:35,860 זה קל מאוד להקליד רשימה אינסופית בהסקל. 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 כדי ללמוד על קפלים בהסקל או פונקציות מסדר גבוהות יותר. 197 00:10:55,770 --> 00:10:59,640 אבל אני רק רוצה להציג את זה ל נותן תחושה של איך מוזר מדויקת 198 00:10:59,640 --> 00:11:03,700 הסקל הוא וכמה חזק זה. 199 00:11:03,700 --> 00:11:08,000 ובפרט, אנחנו הולכים להיות-- כאשר אנו עושים חלקי התוף השונים שלנו, 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 כאן-- 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 אז זה יהיה כל-- אם זה נקרא עם 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 קונור אריס: אז לשים את זה אחר דרך, 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 כדברים ברשימה, ולאחר מכן זה תוצאת חזרתו של ר 'פי 224 00:12:29,147 --> 00:12:31,980 סטפן קרווסון: אז בפרט, אלה הם פונקציות מסדר גבוהות יותר, 225 00:12:31,980 --> 00:12:34,460 בגלל שהם לוקחים עוד פונקציה כאחד מהטיעונים. 226 00:12:34,460 --> 00:12:34,770 >> קונור אריס: כן. 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 >> סטפן קרווסון: ו מה שיפה 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 מופעלים ברצף הצעד ל כמה חלק תוף, תוף החלק החמישי, 235 00:13:03,120 --> 00:13:05,480 ואולי זה קונגה תוף או משהו. 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 דברים על הסקל ו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 ובכן, הסקל מספק הרבה 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 אנחנו אראה את זה בהמשך code-- מכונת תופים שלנו 261 00:14:38,410 --> 00:14:43,740 GM הוא רק סוג מסוים של עולם משתנה למספר הצעדים 262 00:14:43,740 --> 00:14:44,610 ברצף. 263 00:14:44,610 --> 00:14:47,630 על מכונות רול-באני הראיתי לך, זה בדרך כלל 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 >> הסקל הוא גם טהור, כך יש לו חזק הקלדת סטטי שקונור רמז. 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 יש, כמובן, חריגים monadic לזה, אבל זה מעבר להיקף שלנו. 274 00:15:22,940 --> 00:15:23,900 >> קונור אריס: כן. 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 אחת מהן הוא שזה מאוד קל מקבל תוכניות הסקל. 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 >> סטפן קרווסון: אז הקלד 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 כמובן, אנחנו יכולים לחשוב של-- שוויון בין סוגים מספריים 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 וכל זה אפשרי ב הסקל בגלל שיעורי סוג. 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, 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 D מגיע לאחר ג C חד מגיע אחרי 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 >> קונור אריס: וכש יש לנו סוג הנתונים 320 00:17:54,259 --> 00:17:57,050 שderives-- עם מילת המפתח ש "Deriving--" סוג מחלקה מסוימת, 321 00:17:57,050 --> 00:18:01,160 זה אומר שהמהדר ינסה כדי לבנות משהו באופן אוטומטי. 322 00:18:01,160 --> 00:18:05,120 אז אולי אתה רוצה להגדיר איכות שונה. 323 00:18:05,120 --> 00:18:09,450 אתה רוצה להגדיר C החד כשווה לדירת D, למשל. 324 00:18:09,450 --> 00:18:11,560 עם בנייה זה כאן, אני לא חושב שC חד 325 00:18:11,560 --> 00:18:14,940 ושטוח D יהיו שווה, כי מהדר באופן אוטומטי יהיה 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 סטפן קרווסון: ו כאן, למעשה, יהיה זה 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 infix מפעיל הרכב מקביל, ולנגן אותם כסוג של אקורד. 341 00:19:09,669 --> 00:19:11,460 ואנחנו הולכים להשתמש זה כאשר אנו משלבים 342 00:19:11,460 --> 00:19:15,080 חלק התוף שלנו עם שלנו שיר פרר ז'אק קטן 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 >> פרוה קארי הוא-- הייתה אחרון שמו של הסקל קארי, ש 346 00:19:29,250 --> 00:19:31,850 תמונת הסקל נקראת על שמו. 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 קונור אריס: רוצה לתת דוגמא לכך? 356 00:19:58,920 --> 00:19:59,836 סטפן קרווסון: כן. 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 הוא הסקל מבצע לשיטוח רשימה. 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 קונור אריס: פשוט דוגמא של קִרצוּף, 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 אבל אתה יכול לחשוב על זה כ גם-- יש לך פונקצית 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 ואם אתה מאכיל F של 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 >> סטפן קרווסון: מבדה ביטויים או פונקציות אנונימי 386 00:21:42,110 --> 00:21:47,330 הם עוד סימן היכר הסקל. 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 דבר אחד אתה תראה הרבה ב מכונת תופים הוא שאנחנו עושים שיחות 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 מיפוי של פונקציה בוליאנית. 395 00:22:10,260 --> 00:22:13,390 >> אז יש לנו כאן דוגמא של בעילום שם 396 00:22:13,390 --> 00:22:19,150 פונקציה בוליאנית מוגדרת ש פשוט לוקח כמה ערכים. 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 וזה פשוט לוקח מודול x n-- 400 00:22:28,007 --> 00:22:28,840 קונור אריס: כן. 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 סטפן קרווסון: אני מפעילי 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 קונור אריס: זה נקרא להפוך כתיב פולני, שהוא 410 00:22:53,701 --> 00:22:55,330 טווח אני בספק שמישהו מכם יודע. 411 00:22:55,330 --> 00:22:56,288 >> סטפן קרווסון: ימין. 412 00:22:56,288 --> 00:22:58,290 הפוך סימון פולני או קידומת. 413 00:22:58,290 --> 00:23:01,412 אבל הסקל החליט להשתמש מפעילי infix. 414 00:23:01,412 --> 00:23:03,120 אז אלה הם חלק מ אלה מותאמים אישית ש 415 00:23:03,120 --> 00:23:07,770 מוגדרים ל Euterpea DSCL בהסקל. 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 כי אנו נשתמש האחרונים מפעיל שבtuple הקטן יש 420 00:23:22,640 --> 00:23:26,330 לשחק מכונת התופים לאורך עם השיר פרר ז'אק. 421 00:23:26,330 --> 00:23:28,650 ומכונת התופים שלנו היא הולך להיות אינסופי. 422 00:23:28,650 --> 00:23:30,920 זה פשוט משחק לנצח. 423 00:23:30,920 --> 00:23:32,692 אבל השיר פרר ז'אק הוא לא. 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 אז אנחנו צריכים לעצור את מכונת התופים כ ברגע שהערך המוזיקלי הקצר מגיע 427 00:23:43,030 --> 00:23:43,700 לסוף. 428 00:23:43,700 --> 00:23:46,980 וכי מפעיל infixed הוא סופר מועיל עם זה. 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-- מצטער, שצריך להיות וב. 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 כמפעיל infix, וזה די מגניב. 438 00:24:27,045 --> 00:24:29,670 קונור אריס: שוב, זה כל הסוכר פשוט התחבירי, באמת. 439 00:24:29,670 --> 00:24:32,310 זה לא משפיע על הליבה של שפה. 440 00:24:32,310 --> 00:24:37,440 >> סטפן קרווסון: אז אנחנו רואים כאן המשפט האחרון של השיר פרר ז'אק, 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 קונור אריס: שוב, אזכור לספרי לימוד מבוא Haskell-- 447 00:25:02,860 --> 00:25:04,680 יצטרך את כל זה בזה. 448 00:25:04,680 --> 00:25:07,790 >> סטפן קרווסון: אז הנה די קו מרכזי של רצף הצעד 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 הוא אלמנט של רשימה 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 לערך המקסימלי של רצף הצעד שלנו. 460 00:25:54,540 --> 00:25:58,290 וכאשר אנחנו בi מסוימת ב רשימה של אחד לערך המרבי, 461 00:25:58,290 --> 00:26:02,970 אם אני שהוא חבר של זה סט נוצר בפונקציה זו, 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 קונור אריס: כן. 468 00:26:23,295 --> 00:26:26,340 התחביר הבסיסי ל comprehensions הרשימה היא 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 ייתכן שיש להגדיר 2n כזה n שהוא באו n הוא ב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 סטפן קרווסון: ואתה יכול תחול פרדיקטים מרובים 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 יש לא רעיון טוב ב הסקל או רעיון טוב, ברור 479 00:27:04,840 --> 00:27:10,720 איך לקחת, למשל, ברירת מחדל פרמטר לפונקציה או משהו. 480 00:27:10,720 --> 00:27:13,370 בפייתון, זה די קל. 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 >> בהסקל, אתה אולי יכול להשתמש אולי אולי הקלדה, 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 >> קונור אריס: ב דוגמאות הסקל אחרות, 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 >> סטפן קרווסון: ואתה יכול לספק איזה הודעת שגיאה כברירת מחדל. 493 00:28:07,010 --> 00:28:11,020 וזה שימושי במיוחד כאשר אתה עושה קלט / פלט בהסקל. 494 00:28:11,020 --> 00:28:12,044 זה יכול להיות טריקים. 495 00:28:12,044 --> 00:28:13,960 קונור אריס: או ל דוגמא דומה, חושב 496 00:28:13,960 --> 00:28:17,460 של פונקציה שכרוכה החלוקה של פרמטר שעשויה להיות 0. 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 בגלל תוצאה אחת ההקלדה מאוד קפדנית של הסקל 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 >> סטפן קרווסון: אז עכשיו אנחנו מקבלים לדבר כיפוף אחר 506 00:28:42,990 --> 00:28:49,160 על הסקל, אשר הוא דפוס הגדרות פונקצית התאמה ו. 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 למכשיר אמצעי זהירות טיעון, ולאחר מכן רשימה של x של. 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 שוב, זה קצת קצת בכוונה inconcise 530 00:30:16,730 --> 00:30:20,580 רק כדי להראות את כל הדברים המוזרים אתה יכול לעשות בהסקל כמו שאתה 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 אז אנחנו הולכים לנסות להפוך את השיר פרר ז'אק. 536 00:30:32,250 --> 00:30:35,220 אז יש כמה ביטויים בפררו ז'אק? 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 יש לנו להוסיף נפח. 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 0-127, שבע פיסות מידע שיכול להתבצע. 560 00:31:57,510 --> 00:32:00,650 >> ואז-- שראינו את זה מאוד בקצרה, אבל 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 כלים, 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 עשינו סינטיסייזר כרית, ולאחר מכן של סינטיסייזר גל מרובע זה להוביל נדוש, 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 >> ואז אנחנו רואים לתת לזה ובתחביר מהסקל, 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 אבל כאן בהסקל הוא, אני חושב, ברגע ש אתה מקבל את העניין שלו, שלא תיאמן 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 אז יש את היישום של פרר ז'אק. 588 00:33:43,240 --> 00:33:43,740 בסדר. 589 00:33:43,740 --> 00:33:47,557 עכשיו אנחנו רוצים להוסיף כלי הקשה, וזה קצת מבולגן. 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 על מכונות רול-באלה, יש היו בדרך כלל על אולי שמונה 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 שלבים ברצף. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> ואז אם יש ערך ברשימה ש כפי שאנו פועלים ברצף, 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 אבל לעכשיו, אני מניח ש אנחנו צריכים הדגמה מה שיש לנו. 610 00:34:59,200 --> 00:35:01,380 בואו מקווים שזה הולך בסדר. 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 וזה כל כך נחמד על עשות-- אולי מה 623 00:35:32,092 --> 00:35:34,550 אתה עושה בהסקל לא בשם פיתוח תוכנה, 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 ואז אנחנו יכולים לשחק את זה כל עם נגן מוסיקה פונקציה שנקראת. 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 דולר סימן הוא מפעיל infix אחר. 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 >> קונור אריס: זה בעצם הרכבת פונקציות. 642 00:36:36,220 --> 00:36:40,026 והוא מבטיח כי אתה לא נו-- אם יש לך שני צדדי פונקציות או 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 >> סטפן קרווסון: אז אנחנו 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-- כי הם חלק מאותו מעמד הנחקר, 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 אלה הם כמו תופי קונגה. 668 00:38:02,100 --> 00:38:08,360 >> אז אם אתה חושב על-- אולי דרך מהנה ליישם מכונת תופים 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-- אז זה הוא הפעימה הראשונה של כל אמצעי. 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 בגלל שאנחנו עושים תופי קונגה. 678 00:38:41,080 --> 00:38:44,180 ויש לי כמה מראקאס כאן למטה, מדי. 679 00:38:44,180 --> 00:38:50,280 >> אז אני יכול להתקשר למכונת תופי משחק, אבל זה יימשך לנצח, 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 להשתמש ברכב המקביל המקצץ לשחק השיר פרר ז'אק הקטן שלנו 683 00:39:02,020 --> 00:39:04,200 יחד עם מכונת תופים המוזרה הזה. 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 אתה יכול לראות שיש נקודת 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 אתה יכול ליצור לילי קובץ בריכה, ואז אתה 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 אבל זה פרר ז'אק כ נוצר על ידי לי בEuterpea. 707 00:41:02,570 --> 00:41:07,300 זה רק בג אני צריך הבנתי מה זה בעצם לפרוץ ב. 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 >> קונור אריס: אישור בוא לראות. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 האם אתה מזכיר למד אתה הסקל? 713 00:41:21,419 --> 00:41:22,460 סטפן קרווסון: אה, כן. 714 00:41:22,460 --> 00:41:23,480 בדוק את מידע אתה הסקל. 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 >> קונור אריס: אז זה באינטרנט. 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 סטפן קרווסון: זה מאויר, מדי. 722 00:41:38,690 --> 00:41:39,440 קונור אריס: אז מה הוא 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 לא אומר איך דפדפני אינטרנט צריכים 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 אז במקום של-- זה לא WYSIWYG, מה שאתה רואה 736 00:42:20,360 --> 00:42:22,960 האם מה שאתה מקבל, כמו, אומר פינאלה הוא, או סיבליוס, 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 בניגוד סיבליוס או פינאלה, שיש לי כדי להפוך את אלגוריתמים שנפרצו כל כך 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 >> אם אתה רוצה להשתמש בפינאלה או סיבליוס, הפורמטים של קבצים לדברים האלה 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 וזה לiterating שברי 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 underlays הלירי הוא דבר שמאוד קל לשימוש 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 >> אז רק כדי לתת לך תחושה של מה ש היכולות של דבר זה כל כך הן-- 796 00:45:26,030 --> 00:45:28,960 internals של 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 >> סטפן קרווסון: העניבה-ב. 832 00:47:10,800 --> 00:47:12,690 >> קונור אריס: כן. 833 00:47:12,690 --> 00:47:15,390 זה עניבה-בטובה, אני מניח. 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 >> ולכן אם אתה רוצה לעשות פשוט tweaks התלוי בתנאי, 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 בגלל סימני קצב הם ברמת הציון. 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 אם אתה רוצה לעשות מקריות, אתה הסיומת IS או 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 סימני חיתוך הסוגר ששדות נתונים מופע. 883 00:49:44,700 --> 00:49:47,390 >> אין לי קוד דוגמא מ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 זה תכנית בשם XML מוסיקה לLY, 891 00:50:08,080 --> 00:50:11,360 אבל גם יכול לקרוא פינאלה זה, סיבליוס יכול לקרוא אותו. 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 סטפן קרווסון: זה לא. 897 00:50:25,490 --> 00:50:26,340 מישהו עובד על זה, אם כי. 898 00:50:26,340 --> 00:50:27,090 >> קונור אריס: על אישור. 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 שסטיבן יודע, ו הם יכולים להיעזר בכם. 902 00:50:38,620 --> 00:50:40,992 >> סטפן קרווסון: אני אוהב את זה. 903 00:50:40,992 --> 00:50:43,450 קונור אריס: כן, בעצם, כל שפות תכנות 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 זה בעצם עובד טק או טק סטודיו ל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 יש manuals-- LillyPond 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 יו ייתכן שיצטרך לעשות כדי להפגין יכולות שונות. 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 internals התייחסות בכתובת האתר ש. 935 00:52:16,730 --> 00:52:21,950 אם אתה רוצה להשתמש ב- XML ​​מוסיקה, יש כתובת אתר ש, 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 תמצא אותי אחר כך, אם אתה רוצה לדעת מה שאני חושב הוא-- אחד הגדול 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 >> תלמיד: איפה אני יכול להוריד ז'אק פרר נוצר 947 00:52:57,972 --> 00:53:01,050 אז אני יכול לשים אותו על ה- iPod שלי? 948 00:53:01,050 --> 00:53:07,574 >> סטפן קרווסון: ובכן, אתה יכול לכתוב לחלק קובץ 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 הפוך וריאציות משלך פררתי ז'אק על ידי מוח כוורת CS50. 952 00:53:15,590 --> 00:53:17,095 זה יהיה נהדר. 953 00:53:17,095 --> 00:53:18,220 קונור אריס: כל אחד אחר? 954 00:53:18,220 --> 00:53:20,261 סטפן קרווסון: אנחנו צריכים תוף בס טוב יותר, יותר מדי. 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 סטפן קרווסון: כן. 958 00:53:27,440 --> 00:53:30,100 למעשה, אני העבודה עשיתי בEuterpea כש 959 00:53:30,100 --> 00:53:33,450 לקח זה-- יש בוגר קורס באוניברסיטת ייל ש 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 וpsychoacoustics של משהו כמו חצוצרה, ולחשוב על הדרך 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 קונור אריס: תודה רבה. 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@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