1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Hi. 3 00:00:05,930 --> 00:00:06,820 მე Connor ჰარისი. 4 00:00:06,820 --> 00:00:09,729 მე CS50 CA ჰარვარდის. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: მე სტივენ Krewson. 6 00:00:11,270 --> 00:00:12,582 მე TF განთავსების CS50 იელის. 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 რომ თქვენ გამოიყენება უკვე და, განსაკუთრებით, on ბიბლიოთეკა დაწერილი 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 ხოლო სტეფანე იქნება ფეხით თქვენ მეშვეობით დიდი მაგალითია. 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 ეს არის ერთგვარი მოსწონს ლატექსის მუსიკა, თუ თქვენ 20 00:00:50,830 --> 00:00:57,530 არ გამოიყენება ლატექსის მათემატიკის კლასების ან სხვა 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: In გარდა ამისა, გვეგონა, რომ ეს 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, ამიტომ ჩვენ გთავაზობთ რამდენიმე დავალებით on სკრიპტები 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 და ჯონ 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 ყველა სხვადასხვა სახის 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 A 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 იმიტომ, რომ ეს არის გზა მავთული ერთად ან Daisy ჯაჭვი 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 ეს არის ადრეული '80s, და ეს მართლაც ლამაზი და პატარა. 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: აი მაგალითად ზოგადი 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 გმირები და კერძოდ შრიფტის რომ აქვს კონკრეტული ზომა და ტემბრი, 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 იყოს უნიკოდის სტანდარტი 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-- დიდი ნაკადი ღონისძიებები და ინსტრუმენტები და whatnot, 115 00:06:03,250 --> 00:06:06,090 და თქვენ უნდა ჰქონდეს ცალკე პროგრამა, როგორიცაა შრიფტი, 116 00:06:06,090 --> 00:06:08,537 უნდა გამოიტანოს, რომ შევიდა რაღაც რომ audible. 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 ჟაკ in Haskell. 130 00:07:08,800 --> 00:07:12,100 მაგრამ რა, თუ გვინდოდა რჩეულებში ბარაბანი ნაწილი მას? 131 00:07:12,100 --> 00:07:17,320 რა მოხდება, თუ ჩვენ გვინდოდა, რომ ცდილობენ, რათა რაღაც როლანდ 808 ან 909 drum 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 და თქვენ შეგიძლიათ აკონტროლოთ გლობალური ტემპი, და თქვენ შეგიძლიათ აირჩიოთ out 135 00:07:28,640 --> 00:07:34,620 bunch სხვადასხვა დასარტყამი ნაწილები ბასი drum, რომელიც clap, სხვადასხვა snares, 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 ყველა სხვადასხვა cool რამ 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 ზოგიერთი ასპექტები ჰასკელი და 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, რომელიც Glasgow Haskell შემდგენელი თარჯიმანი. 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 მაგრამ ჩასწვდებით გზა ისინი განისაზღვრება გამოყენებით ამ t ან ტიპის ბრძანება 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 მიერ bunch of ადამიანი, 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 ჩვენ ვცდილობთ, რომ გადადება შეფასების იმ subcomponents 183 00:10:00,660 --> 00:10:05,300 სანამ აბსოლუტური ბოლო წუთში რომ არის, სანამ ჩვენ რეალურად უნდა მათ. 184 00:10:05,300 --> 00:10:08,480 >> ასე რომ, ეს ნიშნავს, რომელიც მართლაც მაგარი, განსაკუთრებით 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 თუ თქვენ ოდესმე მუშაობდა drum 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 dot dot და რომ არის უსასრულო სია 193 00:10:42,440 --> 00:10:46,960 ყველა ბუნებრივი ნომრები გაგრძელების რამდენადაც შეგიძლიათ წარმოიდგინოთ. 194 00:10:46,960 --> 00:10:49,925 >> მე მინდა წარმოგიდგინოთ კონცეფცია folds დაუყოვნებლივ. 195 00:10:49,925 --> 00:10:51,800 ისევ და ისევ, იმ მიზნით, სემინარის არ არის 196 00:10:51,800 --> 00:10:55,770 გაეცნონ folds in 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 კერძოდ, ჩვენ ვაპირებთ, რომ იყოს როდესაც ჩვენ გავაკეთებთ სხვადასხვა ბარაბანი ნაწილები, 200 00:11:08,000 --> 00:11:12,790 ჩვენ ვაპირებთ, რომ იყოს მანიპულირების სიები ციფრები, ვეტო მათ გადატანა ერთმანეთს. 201 00:11:12,790 --> 00:11:17,290 და გავაკეთოთ, რომ, ჩვენ გამოყენებით რუკები და folds. 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 ასე რომ, ეს იქნება 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 როგორც რამ სიაში და შემდეგ რომ არის დაბრუნების შედეგად ჯერ რ 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, [INAUDIBLE] 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 არიან ჩართული ნაბიჯი სეკვენსორი ზოგიერთი drum ნაწილი მეხუთე drum ნაწილი, 235 00:13:03,120 --> 00:13:05,480 და იქნებ ეს conga ბარაბანი ან რამე. 236 00:13:05,480 --> 00:13:09,719 და ეს არის გამიზნულად obtuse გზა წერა ამ, 237 00:13:09,719 --> 00:13:11,510 მაგრამ ეს fun, იმიტომ, რომ ეს მეტყველებს იმაზე, რომ ბევრი 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 dot dot 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 და მე prepend რომ ამ მოკლე პატარა list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- მხოლოდ გაჩვენოთ როგორ შეგიძლიათ concatenate სიები. 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 შეგვიძლია გავაკეთოთ, რომ, რადგან ეს lazily აფასებს, როგორც ზემოთ. 252 00:14:06,070 --> 00:14:10,582 თუ ჩვენ გვაქვს 1 და 2 და 3, ჩვენ შეგვიძლია უბრალოდ bracket off მთელი დანარჩენი იგი. 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 უზრუნველყოფს ბევრი ფუნქციები 257 00:14:26,500 --> 00:14:29,450 და უფრო, ამ წელს საკუთარი time-- როგორიცაა მიიღოს 258 00:14:29,450 --> 00:14:32,200 რომელიც ამბობს, OK, ჩვენ მომტანი ამ უსასრულო სია, 259 00:14:32,200 --> 00:14:35,950 მაგრამ ჩვენ მხოლოდ აპირებს გარკვეული ნომერი მას და ამ შემთხვევაში 260 00:14:35,950 --> 00:14:38,410 ჩვენ დავინახავთ, ეს მოგვიანებით ჩვენი ბარაბანი მანქანა კოდი 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 არსებობს, რა თქმა უნდა, monadic გამონაკლისი ამ, მაგრამ ეს სცილდება ჩვენი ფარგლებს. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: ჰო. 275 00:15:23,900 --> 00:15:26,946 ეს კი იმას ნიშნავს, თუმცა, იქ არის რამდენიმე მნიშვნელოვანი [INAUDIBLE] 276 00:15:26,946 --> 00:15:27,820 შედეგების ამ. 277 00:15:27,820 --> 00:15:30,940 ერთი ის, რომ ძალიან ადვილია parallelize 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 თუ თქვენ [INAUDIBLE] f 1, ვ 2, ვ 3 ან whatnot-- ვ 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 ასე რომ, ძალიან ადვილია parallelize რამ. 288 00:15:59,780 --> 00:16:03,140 >> მინუსი ის არის, რომ input და გამომავალი განსაკუთრებით 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 >> ასე რომ, თუ თქვენ განსაზღვრავს გარკვეული მონაცემთა ტიპის და აქ, ეს არის მუსიკალური მოედანი. 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 ისინი მიეკუთვნებიან bunch of სხვადასხვა ტიპის კლასი. 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 ასე რომ, თქვენ შეგიძლიათ შეაფასოთ არა ერთი თანმიმდევრობა მუსიკალური primitives 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 მკვეთრი მას შემდეგ, რაც 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 და აპირებს off მეშვეობით, თუმცა ბევრი რამ აქ, 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 ეს იმას ნიშნავს, რომ შემდგენელი შევეცდებით მშენებლობა რაღაც ავტომატურად. 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 >> ასე რომ, ეს შესაძლებელია override ნაგულისხმები შესრულება 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: და აქ, ფაქტობრივად, ამ ყველაფერს 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 გარშემორტყმული colons. 336 00:18:48,620 --> 00:18:53,330 ეს ნიშნავს, რომ ჩვენ შეუძლია ამ სხვადასხვა მუსიკალური primitives ერთ შემდეგ სხვა. 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 ჩვენი drum ნაწილი ჩვენი პატარა Frere ჟაკ სიმღერა 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 >> Currying is-- Curry გასულ ასახელებს ჰასკელი 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 ფუნქცია ორი არგუმენტი f x და y-- 351 00:19:42,810 --> 00:19:46,630 შეიძლება წარმოდგენილია როგორც ვ 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 ეს ნიშნავს, რომ ჩვენ შეგვიძლია რუკაზე ფუნქცია ვ 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 პირველი ელემენტი ამ სიაში და ეს სიები მუსიკალური 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 currying და შემდეგ რუკების, ჩვენ შეგვიძლია იმეორებს 2 368 00:20:47,100 --> 00:20:52,310 , რომელმაც უკვე დაბრუნდა როგორც ფუნქცია ერთი არგუმენტი უბრალოდ გამრავლების ორჯერ. 369 00:20:52,310 --> 00:20:57,010 და მაშინ ჩვენ მსჯელობა, რომ ყოველი ელემენტი ამ სიაში ფრაზები. 370 00:20:57,010 --> 00:21:01,900 >> და concat არის Haskell ოპერაცია flattening სიაში. 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 ან flatten რომ ორჯერ. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: მარტივი მაგალითია currying, 375 00:21:12,240 --> 00:21:15,323 თუ გსურთ მოსწონს წარმომიდგენია 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 რომ იღებს არგუმენტი და ანაზღაურება ოთხჯერ ეს არგუმენტი მხოლოდ 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 და ეს არის მარტივი მაგალითია currying. 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: ლამბდა გამონათქვამები და ანონიმური ფუნქციები 386 00:21:42,110 --> 00:21:47,330 კიდევ ერთი Haskell ნიშანთვისებად. 387 00:21:47,330 --> 00:21:51,242 ასე რომ, თუ ჩვენ უნდა whip მდე პატარა ფუნქციის ცხოვრება იმეორებს, 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 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: I აღნიშნული 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 plus 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 უკუ polish ან პრეფიქსი ნოტაცია. 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 in Haskell. 416 00:23:07,770 --> 00:23:10,730 ასე რომ, ეს იყო რიგითი შემადგენლობა. 417 00:23:10,730 --> 00:23:16,340 ეს იყო პარალელურად შემადგენლობა, და ეს იყო truncating პარალელურად შემადგენლობა. 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 ითამაშოს ბარაბანი მანქანა ერთად ჩვენი Frere ჟაკ სიმღერა. 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 მაგრამ Frere ჟაკ სიმღერა არ არის. 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 notation მოსწონს ეს არის ერთგვარი ლამაზი, 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 ელემენტს გარკვეული სია, თუ დააყენა იგი Backticks, შეგიძლიათ გამოიყენოთ იგი. 435 00:24:14,730 --> 00:24:20,400 მიუხედავად იმისა, რომ ეს არ არის სიმბოლო როგორც პლუს ან მინუს და ჯერ, 436 00:24:20,400 --> 00:24:24,630 თქვენ შეგიძლიათ გამოიყენოთ სახელი ფუნქცია, როგორიცაა, რომ Backticks 437 00:24:24,630 --> 00:24:27,045 როგორც infix ოპერატორი, რომელიც არის საკმაოდ გრილი. 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 ჟაკ სიმღერა, 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 არის ელემენტს სია x-ს, მაშინ ჩვენ მოვუწოდებთ up perc ფუნქციები. 452 00:25:23,030 --> 00:25:25,100 ასე რომ, perc მხოლოდ პერკუსია ფუნქცია. 453 00:25:25,100 --> 00:25:30,200 იგი იღებს გარკვეული მნიშვნელობა p, რომ ნაწილი შემოსაზღვრული კომპლექტი ყველა 454 00:25:30,200 --> 00:25:35,310 სხვადასხვა პერკუსია ხმები რომ ვნახეთ წინა slide, 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 in რომ სიაში ერთი max ღირებულება, 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 გლობალური ზომა sequencer. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: ჰო. 468 00:26:23,295 --> 00:26:26,340 ძირითადი სინტაქსი სია comprehensions არის 469 00:26:26,340 --> 00:26:30,810 bracket, ღირებულება ჩართვის ზოგიერთი ცვლადის, ბარი, 470 00:26:30,810 --> 00:26:34,260 შესაძლებელი ღირებულებების ცვლადები თავად, დახურული ფრჩხილი. 471 00:26:34,260 --> 00:26:38,545 და თუ ვაკეთებ მითითებული მშენებელი notation ნებისმიერი სახის მათემატიკის კლასის, 472 00:26:38,545 --> 00:26:45,999 თქვენ ალბათ მითითებული 2n ასეთი რომ n ან N არის z. 473 00:26:45,999 --> 00:26:48,290 მსგავსი რამ ამ ნოტაცია იგულისხმება, რომ იყოს დამაფიქრებელი 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-- ჩვენ არ linger ხანგრძლივი აქ. 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 In Python, ეს არის საკმაოდ მარტივია. 481 00:27:13,370 --> 00:27:18,460 შეგიძლიათ უბრალოდ ვთქვა, უდრის on დეკლარაციის ფუნქცია, 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: In სხვა 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: თქვენ შეგიძლიათ მიაწოდოს გარკვეული შეცდომა, როგორც default. 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 ფუნქცია, რომელიც მოიცავს სამმართველოს პარამეტრი, რომელიც შეიძლება იყოს 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 იმის გამო, რომ ერთ-ერთი შედეგი 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: ახლა მივიღებთ სხვა გონება- bending რამ 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 და მაშინ ჩვენ ვხედავთ, თუ კიდევ ნაბიჯი თანმიმდევრობით ერთად v მოცულობა არგუმენტი, 523 00:29:51,460 --> 00:29:57,290 p for precaution ინსტრუმენტი არგუმენტი, და მერე სია 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 უბრალოდ უნდა ნახოთ ყველა უცნაური რამ შეგიძლიათ გააკეთოთ 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 ჟაკ სიმღერა. 536 00:30:32,250 --> 00:30:35,220 ასე რომ, არსებობს, თუ რამდენი ფრაზები Frere ჟაკ? 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 მრგვალი, რომელიც შეიძლება fun უნდა გააკეთოს. 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 თუ თქვენ იყენებთ ციფრული აუდიო Workstation, ისევე როგორც 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 ჩვენ გავაკეთეთ pad Synth, და შემდეგ ამ corny ტყვიის მოედანზე ტალღა Synth, 570 00:32:37,980 --> 00:32:44,240 და შემდეგ დააფიქსიროს ooze, რომლებიც ცოტა გაურკვეველი ჩემი ცუდი MIDI 571 00:32:44,240 --> 00:32:46,410 სინთეზატორი, მაგრამ ისინი OK. 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 ახლა ჩვენ გვინდა, რომ დაამატოთ პერკუსია, და ეს არის ცოტა მძიმეა. 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 ასე რომ დიდი იდეა არის ის, რომ bunch of სიები და ნაწილები. 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 და შემდეგ გამოიყენოთ bunch of ტექნიკა. 596 00:34:10,159 --> 00:34:14,889 და ჩვენ ვისაუბრეთ these-- გამოყენებით folds, ფილტრები, ლამბდა ფუნქციები, 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 ეს თქვენ ჟღერს cool. 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 იმედი ვიქონიოთ, რომ ეს მიდის 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 OK, დიდი. 616 00:35:11,470 --> 00:35:15,010 როგორც Connor ხნის წინ განაცხადა, რომ ეს შედგენილი, ის ტიპის შეამოწმა, 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 ვაკეთებთ Haskell არ არის მოუწოდა პროგრამული უზრუნველყოფის დამუშავება, 624 00:35:34,550 --> 00:35:36,980 მაგრამ შეგიძლიათ ამის ბევრი fun stuff თქვენი საკუთარი. 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 >> მე უნდა ვთქვა, მე არ საუბრობენ ამ დოლარის ნიშანი, რომ ის ყველგან არის. 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 >> CONNOR HARRIS: ეს, ძირითადად, ფუნქცია შემადგენლობა. 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 >> 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 ხმა ooze. 654 00:37:25,490 --> 00:37:27,630 და თქვენ ნამდვილად ველური ამ. 655 00:37:27,630 --> 00:37:30,872 მე აიყვანეს საკმაოდ მარტივი, რადგან ვიცოდი, არ უნდა bite off 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 მხოლოდ იმიტომ, რომ ეს არის ცოტა impenetrable, 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 ჰგავს ბასი drum. 664 00:37:53,120 --> 00:37:54,370 Zero არის ასევე. 665 00:37:54,370 --> 00:37:56,000 Seven მაღალი ქუდი. 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 >> ასე რომ, თუ თქვენ ფიქრობთ ამაზე, შესაძლოა, გართობა გზა განახორციელოს ბარაბანი მანქანა 669 00:38:08,360 --> 00:38:12,830 გამოყენება ძალიან მოწესრიგებული ნიმუშების თქვენი ბას drum. 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 ასე რომ, offbeat. 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 და მაქვს გარკვეული maracas ქვემოთ აქ, ძალიან. 679 00:38:44,180 --> 00:38:50,280 >> ასე რომ, მე ვერ ვუწოდებ პიესა ბარაბანი მანქანა, მაგრამ ეს არ გაგრძელდება, 680 00:38:50,280 --> 00:38:53,700 და ეს შეიძლება დაიწყოს grabbing up ყველა მეხსიერების ჩემი სისტემა. 681 00:38:53,700 --> 00:38:57,090 ასე რომ, მე მოვუწოდებ ამ ფუნქციის ითამაშოს მუსიკა, რომელიც, როგორც ვნახავთ, 682 00:38:57,090 --> 00:39:02,020 გამოიყენოთ truncating პარალელურად შემადგენლობა ითამაშოს ჩვენი პატარა Frere ჟაკ სიმღერა 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 არ არის ჩემი სპეციალობით, მაგრამ მე მქონდა ბევრი fun ვაკეთებთ. 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 >> ასე რომ, რა თქმა უნდა, ეს ყველაფერი ცოტა არ არის, როგორც fun 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 ფაილი და ეს 696 00:40:10,280 --> 00:40:14,500 იქნება ჩემი segue მეტი Connor-- და dot MIDI ფაილი, 697 00:40:14,500 --> 00:40:18,610 და dot 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 თქვენ შეგიძლიათ გენერირება ლილი Pond ფაილი, და მაშინ 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 ასე რომ, Connor სავარაუდოდ ნახოთ თუ როგორ უნდა ანოტირების ეს უკეთესია, 706 00:40:55,140 --> 00:41:02,570 მაგრამ ეს არის Frere ჟაკ როგორც გამომუშავებული ჩემთვის Euterpea. 707 00:41:02,570 --> 00:41:07,300 ეს მხოლოდ C. მე უნდა figured გაირკვეს, თუ რა 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: OK ვნახოთ. 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: Oh yeah. 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 ასე რომ, ბიჭი სახელად [INAUDIBLE] 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 სადაც თქვენ არ ამბობდა 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 და ეს spits out ამ შესანიშნავი ეძებს 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 ის არის, რომ ლატექსის არის ერთგვარი მოსწონს LillyPond, მაგრამ უბრალოდ ტიპოგრაფიული. 735 00:42:16,620 --> 00:42:20,360 ასე რომ, ნაცვლად of-- ეს არ არის WYSIWYG, რას ხედავთ 736 00:42:20,360 --> 00:42:22,960 რა არის თქვენი, როგორც, ვთქვათ, Finale, ან სიბელიუსი, 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 და გავიდნენ PDFs შემდეგ. 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 განსხვავებით სიბელიუსი ან 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 და სიბელიუსის, ფორმატის იმ რამ, 757 00:43:26,200 --> 00:43:30,180 ძალიან რთული, და თქვენ არ შეუძლია ნამდვილად მათი გამოყენება პროგრამულად. 758 00:43:30,180 --> 00:43:35,020 თქვენ შეგიძლიათ გახსნათ სიბელიუსი ერთად Finale და გადადით ფაილი, ექსპორტი 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 თქვენ ადვილად iterate LillyPond ერთად ლატექსის. 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 ფრაგმენტები ლატექსის 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 ეს პირველი არის დასაწყისში რომ chorale პრელუდია ბახი. 779 00:44:29,519 --> 00:44:31,810 ეს ქვემოთა არის ამონაწერი ერთი ჩემი საკუთარი ნამუშევრები, 780 00:44:31,810 --> 00:44:34,650 და ეს მხოლოდ იქ უნდა ნახოთ თუ რამ, როგორიცაა [INAUDIBLE] 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 Lyric underlays არის ის, რომ ძალიან მარტივი LilyPond for საგუნდო მუსიკა. 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 ეს პირველი ნაწყვეტი არის [INAUDIBLE] მიერ [INAUDIBLE]. 787 00:44:55,280 --> 00:44:58,860 და ეს [INAUDIBLE] ეხლა პიესა სოლო ბას 788 00:44:58,860 --> 00:45:03,550 ფლეიტა [INAUDIBLE], ვინ არის longtime-- რომელიც 789 00:45:03,550 --> 00:45:07,101 იყო დიდი ხნის წევრი მუსიკა დეპარტამენტის აქ, ვფიქრობ. 790 00:45:07,101 --> 00:45:08,600 მე არ ვარ დარწმუნებული, სადაც ის წავიდა off to. 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 შინაგანი of 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 >> და ყოველ კონტექსტში აქვს თანდართული engravers. 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 ასე რომ, ყველა ხმა კონტექსტში, იქ [INAUDIBLE] აღნიშნავს 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 მაშინ არსებობს metronome mark ფრეზი, რომ 818 00:46:31,517 --> 00:46:33,100 წერს, რომ metronome ნიშნები ანგარიში. 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 იქ ჩადგმული სკრიფტინგის ენა. 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 ეს არის კარგი ჰალსტუხი-ში, მე ვფიქრობ. 834 00:47:15,390 --> 00:47:20,150 და ის გამოიყენება, როგორც სწავლების ენა, რეალურად, ქვემოთ მასობრივი გამზ 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 განთავსების მაგალითად არსებობს გარკვეული მდგომარეობის ანგარიში, რომელიც შეხვდა, 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 Metronome ნიშნის ფრეზი თან ერთვის გაეტანა გოლი კონტექსტში. 849 00:47:59,044 --> 00:48:01,460 არსებობს სხვადასხვა გასაღებები, იმის გამო, რომ [INAUDIBLE] ფრეზი 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 თუ გსურთ ამის გაკეთება accidentals, თქვენ სუფიქსით ან ES. 857 00:48:18,910 --> 00:48:22,640 ეს არის ჰოლანდიური მუსიკოლოგიური კონვენციები. 858 00:48:22,640 --> 00:48:28,290 >> და ამის octave leaps, თქვენ უნდა გამოიყენოთ ამ tick ნიშნები, მძიმით ან აპოსტროფი. 859 00:48:28,290 --> 00:48:30,580 ნათესავი მხოლოდ იმას ნიშნავს, რასაც თქვენ გაქვთ შენიშვნა, 860 00:48:30,580 --> 00:48:34,080 ეს ავტომატურად plaec წელს octave უახლოესი წინა. 861 00:48:34,080 --> 00:48:37,624 და თუ გვინდა, რომ ხტომა ზე მეტი fifth-- ამბობენ, მეხუთე და more-- 862 00:48:37,624 --> 00:48:39,165 მაშინ თქვენ უნდა გამოიყენოთ [INAUDIBLE]. 863 00:48:39,165 --> 00:48:42,580 მაგრამ სხვაგვარად, თქვენ არ უნდა განსაზღვროს octave თითოეული შენიშვნა. 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 არის ტექსტური მონაცემები სტრუქტურა მე არ უნდა ვთქვა, მონაცემები სტრუქტურა ამბობენ 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 bracket slash ნიშნები შოუ მონაცემების სფეროებში. 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 არამედ Finale შეგიძლიათ წაიკითხოთ ის, სიბელიუსის წაიკითხავს. 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 >> მე არ ვფიქრობ, [INAUDIBLE] აქვს მუსიკა 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 რომ სტივენ იცის, და ისინი შეიძლება გამოიყენოთ თქვენი დახმარება. 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 რომელიც უზრუნველყოფს, რომ ეს syntactically სწორი და ყველაფერი, 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 >> [INAUDIBLE], სხვა auxilarry ტექნოლოგია. 916 00:51:16,370 --> 00:51:21,700 ეს არის ძირითადად ტექნიკური სამუშაოები ან 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 მათ აქვთ tutorial. 929 00:52:02,270 --> 00:52:03,478 მათ აქვთ სინტაქსი მითითება. 930 00:52:03,478 --> 00:52:07,010 მათ აქვთ ასობით snippets სხვადასხვა მცირე რამ 931 00:52:07,010 --> 00:52:09,930 yo ალბათ უნდა გავაკეთოთ, რათა დემონსტრირება სხვადასხვა შესაძლებლობები. 932 00:52:09,930 --> 00:52:12,250 თუ გსურთ გამოიყენოთ სკრიფტინგის ენა 933 00:52:12,250 --> 00:52:14,740 ან უფრო ფართო customizations, მაშინ არსებობს 934 00:52:14,740 --> 00:52:16,730 შინაგანი მითითებას, რომ URL. 935 00:52:16,730 --> 00:52:21,950 თუ გსურთ გამოიყენოთ მუსიკა XML, არსებობს რომ URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> და მაშინ, თუ თქვენ უნდა ვისწავლოთ სქემა იმიტომ, რომ თქვენ რეალურად გსურთ გამოიყენოთ 937 00:52:27,960 --> 00:52:30,960 სკრიფტინგის ობიექტების LillyPond, მაშინ იქ [INAUDIBLE] მოუწოდა 938 00:52:30,960 --> 00:52:32,918 სტრუქტურირებული ინტერპრეტაცია კომპიუტერული პროგრამები, 939 00:52:32,918 --> 00:52:35,820 რომელიც არ არის მხოლოდ მეორე დიდი CS სახელმძღვანელო ოდესმე წერილობითი 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 >> სტუდენტი: სად შემიძლია ჩამოტვირთოთ თქვენი გამომუშავებული Frere ჟაკ 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 ეს on GitHub. 951 00:53:10,000 --> 00:53:15,590 გაახარეთ თქვენი საკუთარი ვარიაციები Frere ჟაკ მიერ CS50 hive გონება. 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: ჩვენ გვჭირდება უკეთესი ბასი drum, ძალიან. 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 აიღო ამას იქ არის დამთავრება რა თქმა უნდა, იელის, რომ 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 და ზოგიერთი notation ჩვენ ვნახეთ საკომპოზიტორო ერთად სიგნალი ფუნქციები. 963 00:53:46,150 --> 00:53:50,610 კერძოდ, ბასი საუკეთესო მათ უბრალოდ მარტივი sine ტალღა. 964 00:53:50,610 --> 00:53:54,240 მაგრამ თუ დაიწყება საკომპოზიტორო იმ უცნაური პროგრამული გზები, 965 00:53:54,240 --> 00:54:00,010 თქვენ შეგიძლიათ მიიღოთ Crazy ხმა მოვლენები, უცნაური კასკადები. 966 00:54:00,010 --> 00:54:04,640 თქვენ შეგიძლიათ შექმნათ ძალიან gritty ხმები ბევრი მოდულაცია. 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 აერთიანებს მათ გარკვეული modulator და დაამყარონ მდიდარი sound. 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 ხმის bouncing off ზარი საყვირის 974 00:54:32,320 --> 00:54:35,200 და აკუსტიკა ოთახში და მოდელირება 975 00:54:35,200 --> 00:54:40,195 რომ ძირითადი oscillators. 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