CONNOR HARRIS: สวัสดี
ฉันคอนเนอร์แฮร์ริส
ฉัน CA CS50 ที่ Harvard
สตีเฟน KREWSON: ฉันสตีเฟ่น Krewson
ฉัน TF สำหรับ CS50 ที่เยล
CONNOR HARRIS: และเรากำลังจะพูดคุย เกี่ยวกับเทคโนโลยีบางอย่างที่คุณอาจจะ
ต้องการที่จะใช้ถ้าคุณสนใจ ในการทำโครงการหรือสุดท้ายจริงๆ
อะไรกับเพลง
เรากำลังจะมุ่งเน้นไปในครั้งแรก การเขียนโปรแกรมภาษาที่เรียกว่า Haskell
มันเป็นเรื่องการทำงาน ภาษาดังนั้นกระบวนทัศน์
จะแตกต่างจาก C หรือ PHP หรือภาษาที่จำเป็นอื่น ๆ
ที่คุณใช้อยู่แล้วและโดยเฉพาะอย่างยิ่ง ห้องสมุดที่เขียนใน Haskell
เรียกว่า Euterpea ซึ่งสามารถช่วยให้ผู้คน กับการเขียนเพลงหน้าที่
เป็นพื้น
และสตีเฟนจะนำคุณ ผ่านตัวอย่างที่ดีของที่
>> หลังจากนี้ผมจะแนะนำให้ท่านรู้จัก สิ่งที่เรียกว่า LillyPond ซึ่ง
เป็นเทคโนโลยีสำหรับการฟังเพลงเรียงพิมพ์
มันเป็นประเภทเช่นน้ำยาง สำหรับการฟังเพลงถ้าใด ๆ ของคุณ
มีการใช้น้ำยางสำหรับการเรียนคณิตศาสตร์หรือ เรียนชุด P อื่น ๆ หรือสิ่งที่มีคุณ
และดังนั้นผมจึงจะให้คุณอีกครั้ง ตัวอย่างบางส่วนที่เรียบง่ายของที่
และชี้ให้คุณโดยทั่วไป ทิศทางของทรัพยากรที่ดีกว่า
>> สตีเฟน KREWSON: ใน นอกจากนี้เราคิดว่ามัน
จะเย็นในการตั้งค่า นิด ๆ หน่อย ๆ ของคำแนะนำ
ต่อท่อระหว่าง Euterpea สร้างไฟล์ MIDI
ใน LillyPond ดังนั้นเราจึงให้ การเรียนการสอนบางอย่างเกี่ยวกับสคริป
จะทำอย่างนั้นที่มี ให้กับ LillyPond
เพียงเพื่อให้มันเปิดแหล่งที่มา และได้รับท่อไป
CONNOR HARRIS: อีกครั้ง เราควรเน้น
ทั้งสองเทคโนโลยีคุณ จะได้ไม่ต้องใช้พวกเขาร่วมกัน
พวกเขาไม่ได้ออกแบบมาเพื่อทำงาน ร่วมกันแม้ว่าพวกเขาจะทำอย่างมาก
>> สตีเฟน KREWSON: ขวา
และฟรี
CONNOR HARRIS: ดังนั้น กิตติกรรมประกาศอ่านเพียงว่า
สตีเฟน KREWSON: รับรองสำเนาถูกต้องตั้งข้อสังเกต
ขอบคุณที่คนเหล่านั้น
นี้ฉันจะอิทธิพลในเพียงชั่วครู่
กระบวนการติดตั้ง เป็นเล็กน้อยหากิน
เราได้อ่านฉันใน GitHub ที่คุณสามารถดูที่
เพียงแค่ส่งอีเมลฉันหากคุณมีคำถามใด ๆ
แต่เราจะทำงานนี้ภายใต้สมมติฐาน ว่านี่คือการทำงานสำหรับทุกคน
CONNOR HARRIS: และถ้าคุณไม่สามารถ ได้รับ LillyPond ในการทำงานไม่ใช่เรื่องใหญ่
ไม่มีการรวบรวมการถ่ายทอดสดที่ จะมีส่วนร่วมอย่างน้อยในส่วนของฉัน
สตีเฟน KREWSON: Haskell และ LillyPond ควรติดตั้งทั้งสองมี
Euterpea ถูกดาวน์โหลดเป็น แพคเกจอื่น ๆ และอื่น ๆ
ดังนั้นเรากำลังพูดถึงเพลงคอมพิวเตอร์
และนี่เป็นเพียง มุมมอง 50,000 ฟุตมาก
มีแง่มุมที่แตกต่างกันไม่กี่ของมัน
และนี่คือหยาบและเป็น จะปิดบังรายละเอียดบาง
แต่เราอาจจะคิดว่าสิ่งที่ เช่นองค์ประกอบอัลกอริทึม
โดยใช้อัลกอริทึม โดยใช้รหัสในการสร้าง
บางชนิดอาจจะ of-- ตัวเองที่คล้ายกัน ลำดับของการบันทึกหรืออาจจะบันทึก
ภายใต้ข้อ จำกัด บางอย่าง
และแล้วผู้ที่อาจจะ การดำเนินการหรือการตีความ
ด้วยเครื่องมือแบบอะนาล็อก หรืออะไรอย่างนั้น
แต่องค์ประกอบคือ ทำอัลกอริทึม
>> แต่แน่นอนอาจจะเป็นพื้นที่ของ เพลงคอมพิวเตอร์หรือเพลงดิจิตอล
เราคุ้นเคยกับดิจิตอล การสังเคราะห์เสียงหรือการสุ่มตัวอย่างแบบดิจิตอล
และการบันทึกแบบดิจิตอล
จำนวนมากของเครื่องมือดิจิตอล ดำเนินการผ่านการสุ่มตัวอย่างแบบดิจิตอล
ในความเป็นจริงเราจะใช้หนึ่งในผู้ที่อยู่ใน รูปแบบของห้องสมุดเสียงตัวอักษรในภายหลัง
>> แต่ยังมีบางสิ่งบางอย่างที่เรียกว่า การสังเคราะห์ดิจิตอลที่ออกมา
ของยุค 70 และเข้าไปใน 'ช่วงปลายยุค 80 ด้วย ยามาฮ่าและจอห์น Chowning ที่ Stanford
ทำสังเคราะห์เอฟเอ็มหรือ ความถี่ในการสังเคราะห์ Modulation,
ที่คุณมีให้บริการ สัญญาณและสัญญาณเลต
ทั้งในคลื่นความถี่เสียง
แต่สิ่งที่เรากำลังมุ่งเน้นไปที่ ในวันนี้คือสิ่งที่เรียกว่า MIDI,
และแน่นอนองค์ประกอบอัลกอริทึม
>> เราไม่ได้จะทำให้เครื่องมือ แต่ เรากำลังแทนจะทำให้บางเพลง,
แล้วที่จะได้รับการตีความ โดยตราสารบางอย่างที่
มีความสอดคล้องกับ MIDI มาตรฐานทั่วไป
ดังนั้นสิ่งที่เป็น MIDI?
ฉันไม่ได้ไปรับลึกเกินไปในนั้น แต่ MIDI เป็นโปรโตคอลการถ่ายโอนข้อมูล
เป็นชนิดของคู่มือข้าม บริษัท ที่แตกต่างกันและอุตสาหกรรม
สำหรับการจัดระเบียบเสียงหรือแพทช์
ดังนั้นเราจะเห็นว่า มีมาตรฐาน MIDI
สำหรับทุกกระทบที่แตกต่างกัน เสียงและคำแนะนำ MIDI
สำหรับทุกชนิดที่แตกต่างกันของ synth หรือ ชนิดที่แตกต่างของทุกตราสาร
กลุ่มในวงออเคสตรากล่าวว่า
>> คุณอาจคุ้นเคยกับ 0 ถึง 127 ข้อความ MIDI
สัญญาณ MIDI เป็นปกติ หนึ่งบิตที่ระบุ
ไม่ว่าจะเป็นข้อมูลหรือเป็น แพ็คเก็ตสถานะและจากนั้นยังมี
เจ็ดบิตของสัญญาณ
และสิ่งเหล่านี้สามารถควบคุม ทุกอย่างจากปริมาณ
กับการกระทำหรือความดัน ในคีย์โดยเฉพาะอย่างยิ่ง
ถ้าคุณกำลังปฏิบัติกับเสียง MIDI ควบคุมเช่นเดียวกับของหลักสูตร
บันทึก
และแน่นอนมี MIDI รับประโยชน์อย่างมาก
เพราะเป็นวิธีที่จะสาย ด้วยกันหรือโซ่เดซี่
พวงของอุปกรณ์ฮาร์ดแวร์ MIDI
ฉันมีเจ็ดหรือแปดกลับมาที่บ้านของฉัน
จะได้รับความซับซ้อนจริงๆ แต่ก็มีประสิทธิภาพจริงๆ
และมันเก่าจริงๆ
มันมาจากยุค 80 ต้นและ มันเป็นเรื่องดีจริงๆและขนาดเล็ก
CONNOR HARRIS: ใช่
ทั้งหมดที่นินเทนคลาสสิก วิดีโอเกมอาจจะ
มีไฟล์ MIDI สำหรับการฟังเพลงตัวอย่างเช่น
>> สตีเฟน KREWSON: ที่นี่เป็น ตัวอย่างของ MIDI ทั่วไป
แสดง MIDI เป็นชนิด โปรโตคอลทั่วไป
และผมคิดว่าเราสามารถคิดของ ความแตกต่างระหว่างสเปค
ว่าควรจะมีสิ่งที่ต้องการ เครื่องมือเหล่านี้และเสียงที่เกิดขึ้นจริง
สำนึกของเครื่องมือเหล่านั้นเสียง ในตัวอักษรเสียงหรือ MIDI โดยเฉพาะอย่างยิ่ง
สังเคราะห์เป็นความแตกต่าง ระหว่างบางที typeface-- ซึ่งบอกว่าเป็น
โดยทั่วไปนี้คือการออกแบบของ วิธีนี้โดยเฉพาะอย่างยิ่งที่จะเป็นตัวแทน
characters-- และตัวอักษรโดยเฉพาะอย่างยิ่ง ที่มีขนาดที่เฉพาะเจาะจงและต่ำ,
และมีสำนึกของ the--
>> CONNOR HARRIS: บางที ดีกว่าที่จะเปรียบเทียบ
เป็นมาตรฐาน Unicode says-- มันจะช่วยให้ จำนวนที่จะทุกตัวอักษรและจริงๆ
ทุกภาษาในโลกหรือ ชุดใหญ่ของสคริปของภาษา
ในโลกและจากนั้นผู้ที่มี แสดงผลเป็นสิ่งที่กราฟิก
โดยแพคเกจตัวอักษรต่างๆ
และเห็นได้ชัดว่าคุณสามารถคิด MIDI เป็น Unicode ของเสียง
และมันก็เป็นเพียงรายการ of-- กระแสใหญ่ ของเหตุการณ์และเครื่องมือและ whatnot,
และคุณจะต้องมีการแยกจากกัน โปรแกรมเช่นอักษรที่
ในการแสดงผลที่เป็น สิ่งที่ได้ยิน
>> สตีเฟน KREWSON: Haskell ดังนั้นทำไม?
Haskell เป็นโปรแกรมการทำงาน ภาษาสูงมาก
แตกต่างจากซี แตกต่างจาก PHP
และเรากำลังจะไปดูว่ามี ความสะดวกในการทำงานขององค์ประกอบใน Haskell
ที่จะช่วยให้เราสามารถสายลมผ่าน การเขียนหรือพิมพ์ขึ้นถ่ายทอด,
สิ่งที่ต้องการ Frere ฌาคส์ เพลงนี้ง่ายๆที่
มีจำนวนมากของชิ้นส่วนในนั้นที่ ได้ด้วยตนเองที่คล้ายกันหรือการทำซ้ำ
ดังนั้นนี่จะเป็นบางส่วนของ แรงจูงใจสำหรับเหตุผลที่
เรากำลังใช้ Haskell ซึ่ง ฟังก์ชั่นเป็นพลเมืองชั้นแรก
>> และฉันต้องการที่จะขยาย นี้นิด ๆ หน่อย ๆ
มันนิด ๆ หน่อย ๆ ที่ง่ายต่อการ notate Frere ฌาคส์ใน Haskell
แต่ถ้าเราต้องการที่จะ เพิ่มส่วนกลองไปได้หรือไม่
เกิดอะไรขึ้นถ้าเราต้องการที่จะพยายามที่จะทำให้ สิ่งที่ต้องการ Roland 808 หรือ 909 กลอง
เครื่องที่คุณมี ประมาณ 16 ขั้นตอนที่แตกต่างกัน?
เหล่านี้มักจะมี ความคิดของการเป็นบันทึกที่ 16
และคุณสามารถควบคุมโลก จังหวะและคุณสามารถเลือกออก
พวงของชิ้นส่วนที่แตกต่างกันกระทบ กลองเบสตบมือเป็นบ่วงที่แตกต่างกัน
หมวกสูงเปิดและปิด ในการจัดเรียงช่องทางเหล่านี้
และจากนั้นคุณสามารถ EQ หรือ ปรับระดับเสียงของพวกเขา
>> และเราจะเห็นวิธีที่ดีในการ Haskell เป็นตัวแทนของขั้นตอนนี้
ซีเควนกับทุก สิ่งดีๆที่ต่าง ๆ ใน Haskell
เราสามารถทำอะไรกับการสร้าง รายการและการกรองมากกว่ารายการ
การทำแผนที่มากกว่ารายการการทำแผนที่ ฟังก์ชั่นในช่วงรายการ
และขอโทษอย่างรวดเร็ว
นี่คือคร่าวๆมาก และร่างอย่างรวดเร็วเกินไป
ของบางแง่มุม ของ Haskell และ Euterpea,
ซึ่งเป็นโดเมนเฉพาะ ฝังภาษาเขียน
ใน Haskell ชนิดดนตรี
ดังนั้นโปรดอย่าตรวจสอบรหัสออนไลน์
ไฟขึ้น GHCI ซึ่งเป็นกลาสโกว์ คอมไพเลอร์ Haskell ล่าม
และผมจะทำบางอย่าง ในเรื่องนี้นิด ๆ หน่อย ๆ
เพื่อให้คุณสามารถดูวิธีการที่จะทำ
>> และสิ่งนี้ช่วยให้คุณโหลดด้วย the-- ไวยากรณ์ลำไส้ใหญ่แล้ว
คำสั่ง
คุณสามารถโหลดไฟล์
คุณสามารถใช้ในการดูไฟล์เหล่านั้น เพื่อดูฟังก์ชั่นทั้งหมดที่
อยู่ในโมดูลโดยเฉพาะอย่างยิ่ง
และแล้วในขณะที่เราจะเห็นชนิดและประเภท เรียนจึงมีความสำคัญใน Haskell,
เพื่อให้คุณสามารถ check-- โดยเฉพาะอย่างยิ่ง ถ้าคุณกำลังทำงานใน DSCL ใหม่
เช่นนี้สิ่งที่เป็นประเภทเพลงหรือไม่?
ฉันรู้เกี่ยวกับวิธีการที่ตัวเลข ประเภททำงานใน Haskell,
แต่ผมไม่ได้รู้มากเกี่ยวกับเพลง
แต่คุณสามารถสำรวจวิธีที่พวกเขากำลัง ที่กำหนดโดยใช้คำสั่งหรือเสื้อประเภทนี้
แล้วโทรโดยเฉพาะอย่างยิ่ง ฟังก์ชั่นหรือวัตถุข้อมูล
CONNOR HARRIS: ใช่
ถ้าคุณคิดว่าซีและเสียงดังกราว เป็น hardass เกี่ยวกับประเภท
คุณมีความคิดเกี่ยวกับ Haskell ไม่มี
สิ่งที่ดีเกี่ยว Haskell คือว่า ถ้าคุณได้รับรหัสของคุณที่จะรวบรวม
และถ้า Haskell การตรวจสอบชนิด มันอาจจะถูกต้อง
เนื่องจากระบบการพิมพ์เป็นที่เข้มงวดเพื่อให้
>> สตีเฟน KREWSON: ใช่
ดังนั้นฉันเพียงแค่ต้องการที่จะไป through-- และอีกครั้ง
นี้ไม่ได้ทำมัน justice-- ไม่กี่ คุณสมบัติของ Haskell ที่อย่างน้อย
เพื่อ creators-- และมันถูกสร้างขึ้น ในช่วงปลายทศวรรษที่ 1980 โดยพวงของคน
คณะกรรมการประมาณ 20 people-- คิดว่ามีความสำคัญ
และสิ่งแรกที่พวกเขา ที่ระบุไว้ในกระดาษว่า
อธิบายกำเนิดของ Haskell ในช่วงแรก 20 ปีหรือมากกว่านั้น
คือการที่มันขี้เกียจ
ดังนั้นสิ่งนี้หมายความว่าอย่างไร?
>> ดีก็หมายความว่าเมื่อเรามีบางชนิด การแสดงออกของเราต้องประเมิน
และ Haskell ไม่นี้ในการเรียก โดยวิธีการหรือความจำเป็นในทางที่ไม่เข้มงวด
นั่นคือถ้าเรามีพวงของ องค์ประกอบของการแสดงออกของเรา
เราพยายามที่จะชะลอการประเมินผล ของส่วนประกอบย่อยเหล่านั้น
จนสุดท้ายแน่นอน minute-- ที่จริงจนกว่าเราต้องการพวกเขา
>> ดังนั้น means-- นี้ซึ่งเป็น เย็นจริงๆโดยเฉพาะอย่างยิ่ง
ถ้าเรากำลังคิดเกี่ยวกับนามธรรม ขั้นตอนของซีเควนดนตรี
คุณเปิดและคุณเริ่มต้น ทำงาน sequence-- ขั้นตอน
ถ้าคุณเคยทำงานร่วมกับกลอง machine-- และมันก็ไปตลอดกาล
ดังนั้นมันจะเป็นสิ่งที่ดีจริงๆถ้าเรา สามารถเลียนแบบว่าใน Haskell
และเราสามารถทำมันได้ด้วยไม่มีที่สิ้นสุด ค่านิยมในรายการที่ไม่มีที่สิ้นสุดโดยเฉพาะอย่างยิ่ง
มันเป็นเรื่องง่ายมากที่จะพิมพ์ รายการที่ไม่มีที่สิ้นสุดใน Haskell
คุณก็สามารถใช้ไวยากรณ์ลง ที่นี่ที่คุณเห็นที่ 1 ถึง 3
ลบ 3 จุด 1 จุดและ ว่าเป็นรายการที่ไม่มีที่สิ้นสุด
ของทุกจำนวนธรรมชาติขยาย บนเท่าที่คุณสามารถจินตนาการ
>> ฉันต้องการที่จะแนะนำ แนวคิดของการพับทันที
และอีกครั้งวัตถุประสงค์ การสัมมนานี้ไม่ได้
เรียนรู้เกี่ยวกับการพับกระดาษใน Haskell หรือสูงกว่าฟังก์ชั่นการสั่งซื้อ
แต่ผมแค่อยากจะแนะนำให้มัน ให้ความรู้สึกที่ถูกต้องของวิธีการที่แปลก
Haskell และวิธีการที่มีประสิทธิภาพเป็น
และโดยเฉพาะอย่างยิ่งที่เรากำลังจะ be-- เมื่อเราทำชิ้นส่วนกลองที่แตกต่างกันของเรา
เรากำลังจะได้รับการจัดการรายชื่อของ ตัวเลขพับพวกเขาไปยังแต่ละอื่น ๆ
และจะทำอย่างไรที่เราจะ จะมีการใช้แผนที่และเท่า
>> มีความเชื่อมโยงที่เหมาะสมเป็น พับซึ่งเป็นหนึ่งที่เหมาะสมนี้
here-- 1 ลบปริมาณ 2 ลบปริมาณ 3 ลบ 0
และไวยากรณ์ที่ เท่าที่คุณให้พับ
ค่าฐานแล้ว operation-- ในกรณีนี้นอกจากนี้หรือลบ
ผมได้แสดงให้เห็นว่าทั้งสองกรณี
แล้วมีสะสมที่ สะสมมากกว่ารายการทั้งหมด
ใช้ประกอบการบวกหรือ ลบแล้วมันสะสม
ดังนั้นนี้จะเป็น the-- ถ้ามันถูกเรียกว่า เท่าที่มีอาร์บวก 0, เริ่มต้นด้วย 0,
เราก็จะสรุปทั้งหมด ตัวเลขในรายการว่า
และนั่นคือรายการ 1-3
CONNOR HARRIS: ดังนั้นจะนำมันอีก ทางอาเท่าใช้เวลาสามข้อโต้แย้ง
ที่มีฟังก์ชั่นเป็น ตัวเองจะใช้เวลาสองข้อโต้แย้ง
แล้วมีค่าเริ่มต้น, และมีรายการค่า
และสิ่งที่คุณทำคือการที่คุณจะใช้ ค่าเริ่มต้นค่าแรก
ใส่ไว้ในฟังก์ชั่น
สิ่งที่คุณได้รับการออก ใช้เวลาที่อาหารที่
ในการทำงานของ ค่าที่สองสิ่งที่คุณได้รับการออก
ใช้เวลาที่ให้อาหารที่เข้ามาใน ฟังก์ชั่นของมูลค่าที่สาม
และแล้วถ้าคุณลงไป รายการนี​​้ทั้งวิธีนี้
คุณกำลังจะได้รับในที่สุด บางค่าเอกพจน์ที่
ประเภทเดียวกันของสิ่งที่คุณเริ่มต้น ออกมาด้วยและประเภทเดียวกัน
เป็นสิ่งที่อยู่ในรายชื่อแล้ว ที่ผลการกลับมาของอาร์พับ
สตีเฟน KREWSON: ดังนั้นโดยเฉพาะอย่างยิ่ง เหล่านี้เป็นฟังก์ชั่นที่สูงกว่าการสั่งซื้อ
เพราะพวกเขากำลังการอื่น ฟังก์ชั่นเป็นหนึ่งในข้อโต้แย้ง
>> CONNOR HARRIS: ใช่
หากคุณเคยใช้บางอื่น ๆ languages​​-- ฉันรู้ว่า R, [ไม่ได้ยิน]
ภาษาได้นี้เรียกว่าลด
คุณอาจจะมีฟังก์ชั่นที่คล้ายกัน ในภาษาอื่น ๆ ที่เรียกว่าเพียงแค่
สิ่งที่แตกต่าง.
>> สตีเฟน KREWSON: และ สิ่งที่ดีเกี่ยวกับการพับ R
ในกรณีนี้คือเท่าที่ R สามารถทำงานร่วมกับรายการที่ไม่มีที่สิ้นสุด
ดังนั้นในด้านล่างนี้ P5 นี้ มีการสร้างบันทึกที่
จะเปิดในซีเควนขั้นตอนสำหรับ ส่วนกลองบางส่วนกลองที่ห้า
และอาจจะเป็นคอง กลองหรือสิ่งที่
และนี่คือจงใจ วิธีการเขียนป้านนี้
แต่มันก็สนุกเพราะ มันแสดงให้เห็นจำนวนมาก
ของสิ่งที่เกี่ยวกับ Haskell และ Euterpea
>> ดังนั้นพับ R ของลำไส้ใหญ่ colon-- นี้ เพียงแค่ผู้ประกอบการที่ผลักดันสิ่ง
ร่วมกันใน list-- ที่เรียกว่าเมื่อวันที่ว่างเปล่า รายชื่อซึ่งเป็นเพียงวงเล็บที่ว่างเปล่า
และฉันเรียกว่า ในรายการนี​​้ไม่มีที่สิ้นสุด
นี้เป็นจริงทั้งสองรายการ มารวมกันที่นี่
รายการ 1 จุลภาค 6 จุด จุดคือ 1, 6, 11, 16
ดังนั้นในเวลาเพียง Haskell-- ตัวอักษรไม่กี่คุณ
สามารถสร้างทั้งหมด ลำดับของตัวเลข
ที่มีห้าตัวเลขออกจากกัน ยืดเข้าไปในอินฟินิตี้
และฉันย่อหน้าที่ นี้ list-- เล็กน้อยสั้น
3, 8, 21-- เพียงเพื่อแสดงให้คุณเห็น วิธีที่คุณสามารถเชื่อมรายการ
>> และจากนั้นผมได้พับกับตัวเอง
และสิ้นสุดขึ้นนี้เป็นเพียงชนิดของ การดำเนินงานที่เป็นตัวตน แต่ก็ไม่มีที่สิ้นสุด
และพับ R สามารถทำเช่นนั้นเพราะ ซมประเมินในขณะที่ดังกล่าวข้างต้น
ถ้าเรามี 1 และ 2 และ 3 ที่เราสามารถทำได้ เพียงแค่ยึดออกจากส่วนที่เหลือทั้งหมดของมัน
ที่จะไม่ทำงานสำหรับ ลบหรือบวก แต่มัน
จะทำงานให้ลำไส้ใหญ่นี้ การดำเนินงานที่เป็นตัวตนอยู่ในรายชื่อ
>> ดังนั้นวิธีที่เราใช้ในทางปฏิบัติว่าถ้าเรา มีรายชื่อยาวอนันต์สิ่ง?
ดี Haskell ให้ จำนวนมากของ functions--
และมองมากยิ่งขึ้นในเหล่านี้ใน time-- ของคุณเองเช่นการใช้
ซึ่งบอกว่าตกลงเรา การสร้างรายการที่ไม่มีที่สิ้นสุดนี้
แต่เรากำลังจะใช้เวลาบางส่วน จำนวนมันและใน case-- นี้
เราจะเห็นในภายหลัง กลองเครื่องของเรา code--
จีเอ็มเป็นเพียงชนิดของทั่วโลกบาง ตัวแปรสำหรับจำนวนของขั้นตอน
ในซีเควนเซอร์
ในม้วนในเครื่องผม แสดงให้เห็นว่าคุณที่มักจะ 16
แต่ผมได้ดำเนินการกับ 32
มันไม่สำคัญว่าจริงๆ
>> Haskell ยังเป็นที่บริสุทธิ์จึงมีความแข็งแรง การพิมพ์แบบคงที่คอนเนอร์พูดพาดพิงถึง
เพื่อให้มีฟังก์ชั่น ทางคณิตศาสตร์ใน sense--
พวกเขากำลังทางคณิตศาสตร์มากขึ้น ว่าพวกเขาจะรับประกัน
จะไม่สามารถเข้าถึงหรือเปลี่ยนชนิดของใด ๆ ตัวแปรหรือดำเนินการป้อนข้อมูลหรือออก
ดังนั้นถ้าคุณมีฟังก์ชั่น มันกำหนด
มันก็จะกลับมาเหมือนเดิม ค่าในรัฐของโปรแกรม
หรือยังคงเหมือนเดิม
มีแน่นอนข้อยกเว้นเอก นี้ แต่ที่เกินขอบเขตของเรา
>> CONNOR HARRIS: ใช่
สิ่งนี้หมายความว่าแม้จะมี ไม่กี่สำคัญ [ไม่ได้ยิน]
ผลกระทบจากการนี​​้
หนึ่งคือการที่มันเป็นเรื่องง่ายมากที่จะ คู่ขนานโปรแกรม Haskell
เพราะถ้าคุณมี กล่าวว่าการทำงานของว่า
ที่ต้องดำเนินการในล้านค่าถ้า คุณรู้ไหมว่าฟังก์ชั่นจะเสมอ
ให้ออกค่าเดียวกันถ้า คุณฟีดที่ value-- บางอย่าง
ถ้าคุณ [ไม่ได้ยิน] ฉ 1, ฉของ 2 จากนั้นเอฟ 3 หรือ whatnot-- ฉ 1
จะไม่เขียนออก ไปยังแฟ้มหรือทำอะไรบางอย่าง
ที่จะปรับเปลี่ยนค่าของ f2
คุณก็สามารถแยกฟังก์ชั่นนี้ให้ ล้านเครื่องที่แตกต่างหรือเป็นล้าน
หัวข้อที่แตกต่างกันหรืออะไรก็ตาม ขอคำทั้งหมดกลับ
ได้รับทั้งหมดค่าผลตอบแทน กลับมาแล้วที่มัน
ดังนั้นง่ายมากที่จะคู่ขนานสิ่ง
>> ข้อเสียคือการป้อนข้อมูลที่ โดยเฉพาะอย่างยิ่งการส่งออกและ
พอดีกับระบบการพิมพ์ ในรูปแบบที่ซับซ้อนมาก
เราจะไม่ไปในที่ที่เหมาะสมในขณะนี้ แต่ฉัน ขอแนะนำให้คุณมองไปที่ทรัพยากรบางอย่าง
ออนไลน์ถ้าคุณต้องการที่จะเรียนรู้เกี่ยวกับการที่
>> สตีเฟน KREWSON: ดังนั้น พิมพ์ classes-- นี้
เรียน was-- ประเภท ถูกคิดค้นขึ้นเพื่อแก้ปัญหา
ปัญหาของการดำเนินงาน
ดังนั้นเราจึงต้องการที่จะมีความเท่าเทียมกัน ระหว่างประเภทที่แตกต่างกันของสิ่งที่
แน่นอนเราสามารถคิด of-- ความเท่าเทียมกันระหว่างชนิดของตัวเลข
เป็นเรื่องง่ายมากที่จะคิดเกี่ยวกับ แต่ สิ่งที่เกี่ยวกับความเท่าเทียมกันระหว่างรายการ?
สิ่งที่เกี่ยวกับความเท่าเทียมกันระหว่าง โครงสร้างข้อมูลขาต้นไม้?
และนี่คือทั้งหมดที่เป็นไปได้ใน Haskell เพราะเรียนประเภท
>> ดังนั้นถ้าคุณกำหนดข้อมูลบาง type-- และนี่คือเหล่านี้เป็นโหมโรงดนตรี
เราที่สุดที่ได้รับ บางเพลงคอมพิวเตอร์
ดังนั้นเราจึงมี C, C คม และอื่น ๆ และอื่น ๆ.
พวกเขาอยู่ในกลุ่มของ การเรียนแตกต่างกันประเภท
EQ-- พวกเขาอยู่ในชั้นประเภท EQ
นั่นหมายความว่าพวกเขาสนับสนุน การดำเนินงานที่เท่าเทียมกัน
เพื่อให้คุณสามารถประเมินว่าหนึ่ง ลำดับของวิทยาการดนตรี
เป็นเช่นเดียวกับแตกต่างกันหนึ่ง
>> พวกเขาอยู่ในลำดับชั้น
นั่นหมายความว่ามีการสั่งซื้อสินค้าเหล่านี้
D มาหลังจากซีซีชาร์ป มาหลังจาก C เช่นกัน
พวกเขาอยู่ในชั้นเรียน แสดงซึ่งหมายความว่าพวกเขาสามารถ
จะพิมพ์ไปยังคอนโซลหรือขั้ว
พวกเขาอยู่ใน ระดับแจกแจงซึ่ง
หมายความว่าถึงแม้ เหล่านี้เป็นตัวอักษร
พวกเขามีพื้นฐานที่เป็นตัวเลข การแสดงเริ่มต้นที่ 0
และจะออกผ่าน แต่ หลายสิ่งหลายอย่างอยู่ที่นี่ 20 หรือมากกว่านั้น
หรือ 30 หรือ 40 อาจจะ
>> CONNOR HARRIS: และเมื่อ เรามีชนิดข้อมูล
ที่ derives-- กับคำว่า "deriving--" ชั้นชนิดบาง
ก็หมายความว่าคอมไพเลอร์จะพยายาม ที่จะสร้างบางสิ่งบางอย่างโดยอัตโนมัติ
ดังนั้นบางทีคุณอาจจะต้องการที่จะ กำหนดคุณภาพที่แตกต่างกัน
คุณจะต้องการที่จะกำหนดซีชาร์ป เท่ากับ D แบนเช่น
ด้วยการก่อสร้างนี้ ที่นี่ผมไม่คิดว่าซีชาร์ป
และ D แบนจะเท่ากับเพราะ คอมไพเลอร์จะโดยอัตโนมัติ
บอกทุกค่าที่แตกต่างกันไปได้ ที่แตกต่างจากทุกอื่น ๆ
>> ดังนั้นจึงเป็นไปได้ที่จะแทนที่ การใช้งานเริ่มต้น
ประเภทนี้ของชั้นเรียน
อีกครั้งดูที่การอ้างอิงถ้า คุณต้องการที่จะเรียนรู้เกี่ยวกับการที่
สตีเฟน KREWSON: และ ที่นี่จริงนี้จะ
จะเป็นประโยชน์สำหรับเมื่อเรารหัสต่อมา
เราเห็นบางส่วนของผู้ประกอบการมัด สำหรับองค์ประกอบลำดับ
องค์ประกอบขนานและอื่น ๆ มาบวกเหล่านี้และเครื่องหมายเท่ากับ
ล้อมรอบด้วยทวิภาค
นั่นหมายความว่าเราสามารถเล่นที่แตกต่างกันเหล่านี้ วิทยาการดนตรีหนึ่งหลังจากที่อื่น
นั่นเป็นองค์ประกอบตามลำดับ
>> หรือเราสามารถเล่นกับพวกเขาใน ขนานในเวลาเดียวกัน
ดังนั้นผมจึงสามารถมีค่าดนตรี แล้วนี้เท่ากับและทวิภาค
มัดประกอบองค์ประกอบขนาน และเล่นเป็นชนิดของคอร์ด
และเรากำลังจะใช้ นี้เมื่อเรารวม
ส่วนกลองของเรากับของเรา Frere เล็ก ๆ น้อย ๆ เพลงฌาคส์
การเล่นทั้งสองลำดับของ ค่าดนตรีในเวลาเดียวกัน
>> ความดีความชอบ is-- แกงเป็นคนสุดท้าย ชื่อของ Haskell แกงที่
ภาพ Haskell ตั้งชื่อตาม
และนี้จะช่วยให้เรา ความสง่างามมีความสุขเมื่อเราอยู่
เขียนเหล่านี้แตกต่างกัน ฟังก์ชั่นหรือตัวกรองว่าเรา
ไปได้มากกว่าการทำแผนที่รายการของเรา
ฟังก์ชั่นของทั้งสอง arguments-- ฉของ x และ y--
สามารถแสดงเป็น ฉของ x y ที่นำไปใช้
ดังนั้นจึงเป็นหน้าที่ของ อาร์กิวเมนต์หนึ่งที่ส่งกลับ
ฟังก์ชั่นของการโต้เถียงอีก
ดังนั้นนี่หมายความว่าเราสามารถแมป ฟังก์ชั่นของ x ฉมากกว่ารายการของปี
CONNOR HARRIS: ต้องการ ให้เช่นนี้?
สตีเฟน KREWSON: ใช่
ผมมีตัวอย่างจากที่นี่ บางสิ่งที่เราจะเขียน
ดังนั้น 2-- ซ้ำกัน ซ้ำจะใช้เวลา
หนึ่งค่าซึ่งเป็นวิธีการที่หลาย ครั้งที่จะทำซ้ำบางสิ่งบางอย่าง
และจากนั้นก็จะใช้เวลา value-- มักรายการหรือบางสิ่งบางอย่าง
ดังนั้นที่นี่เราทำแผนที่ ทำซ้ำ 2 มากกว่ารายการอื่น
>> ดังนั้นหากเราแผนที่ทำซ้ำ 2 ถ้าเราใช้ทำซ้ำ 2
ไปยังองค์ประกอบแรกของ list-- นี้และ เหล่านี้เป็นรายชื่อของ phrases-- ดนตรี
จะผลิตสองของ "คุณ sleeping--" เพื่อให้คุณนอนหลับคุณนอนหลับ
ดังนั้นตอนนี้เรามีสอง
แต่จะใช้เวลาสองซ้ำ ข้อโต้แย้ง แต่เพราะเรา
ความดีความชอบแล้วการทำแผนที่ เราสามารถเป็นตัวแทนทำซ้ำ 2
ในฐานะที่ได้รับกลับมาเป็นหน้าที่ของ หนึ่ง argument-- เพียงการจำลองเป็นครั้งที่สอง
และจากนั้นเราจะใช้ที่แต่ละ องค์ประกอบของรายการของวลีนี้
>> และ concat เป็น Haskell การดำเนินงานแฟบรายการ
เพราะจะทำซ้ำ 2 ผลิตรายการของรายการ
และนี่คือรูปแบบกลางที่นี่
และอื่น ๆ แล้วเราสามารถ concat หรือที่แผ่ออกมาเป็นครั้งที่สอง
CONNOR HARRIS: เป็นที่เรียบง่าย ตัวอย่างของ currying,
ถ้าคุณต้องการ like-- ฉจินตนาการเป็นเพียง ฟังก์ชั่นที่ใช้เวลาคูณสอง
ข้อโต้แย้งและส่งกลับผลิตภัณฑ์ของพวกเขา
ดังนั้นถ้าคุณมีฉ 4 5 ก็ 20
แต่คุณสามารถคิดว่านี้เป็น also-- คุณมีฟังก์ชั่นเอฟ 4
ที่จะเกิดการโต้แย้งและผลตอบแทน สี่ครั้ง argument-- เพียงแค่นี้
แอพลิเคชันบางส่วนที่ เพียงหนึ่งอาร์กิวเมนต์ 4
และถ้าคุณกินอาหารฉ 4 5 ที่จะให้คุณ 20
และที่เป็นที่เรียบง่าย ตัวอย่างของ currying
ก็มักจะเป็นหนึ่งในคนที่ตำราเรียน
>> สตีเฟน KREWSON: แลมบ์ดา การแสดงออกหรือฟังก์ชั่นที่ไม่ระบุชื่อ
เป็นอีกจุดเด่น Haskell
ดังนั้นหากเราจำเป็นต้องชักขึ้น ชีวิตการทำงานเล็ก ๆ น้อย ๆ ทำซ้ำ,
แต่บอกว่ามันไม่ได้อยู่ใน ห้องสมุดมาตรฐาน
เราสามารถใช้ไวยากรณ์ คล้ายกับต่อไปนี้
และเราจะสายลมมากกว่านี้
สิ่งหนึ่งที่คุณจะเห็นจำนวนมากในการ เครื่องกลองที่เรากำลังการโทร
เพื่อสิ่งที่เรียกว่า กรองซึ่งเหมือนก่อน
คือการทำแผนที่ของฟังก์ชัน มากกว่ารายการ แต่ก็
การทำแผนที่ของฟังก์ชั่นบูลีน
>> ดังนั้นเราได้ที่นี่ตัวอย่าง ของหนึ่งโดยไม่ระบุชื่อ
กำหนดฟังก์ชั่นบูลีนที่ ใช้เวลาเพียงไม่กี่ค่า
นี้ไม่ได้พูดอย่างเคร่งครัด ที่ไม่ระบุชื่อฟังก์ชั่น
แต่มันเป็นเรื่องที่มีการกำหนด ไวยากรณ์ที่กะทัดรัด
และใช้เวลาเพียงโมดูล x n--
CONNOR HARRIS: ใช่
ดังนั้นฉเป็นหน้าที่ของ สองอาร์กิวเมนต์ n p และ
ที่ส่งกลับฟังก์ชันที่ตัวเองเป็น ฟังก์ชั่นหนึ่งอาร์กิวเมนต์คือ x
สตีเฟน KREWSON: ฉัน ผู้ประกอบการดังกล่าวมัด
สิ่งที่ผู้ประกอบการมัด?
ดีผู้ประกอบการมัดเป็น ปกติเราเป็นตัวแทนของการดำเนินงาน
พูดใน mathematics-- 2 บวก 2 แทนของผู้ประกอบการบวก
แล้วสองอาร์กิวเมนต์ที่ 2 และ 2
CONNOR HARRIS: มันเรียกว่า โน้ตโปแลนด์ย้อนกลับซึ่งเป็น
ระยะฉันสงสัยใด ๆ ของคุณจะได้รู้ว่า
>> สตีเฟน KREWSON: ขวา
ขัดย้อนกลับหรือสัญกรณ์คำนำหน้า
แต่ Haskell ตัดสินใจที่จะ ใช้ประกอบการมัด
ดังนั้นเหล่านี้คือบางส่วนของ คนกำหนดเองที่
มีการกำหนดไว้สำหรับ Euterpea DSCL ใน Haskell
ดังนั้นนี้คือองค์ประกอบตามลำดับ
นี่คือองค์ประกอบขนานนี้ ถูกตัดทอนองค์ประกอบขนาน
และเราจะต้องว่า กับกลองเครื่องของเรา
เพราะเราจะใช้ที่ผ่านมา ผู้ประกอบการในการที่มี tuple เล็ก ๆ น้อย ๆ
การเล่นกลองเครื่องพร้อม กับเพลงของเรา Frere ฌาคส์
และกลองเครื่องของเราคือ ไปได้ไม่มีที่สิ้นสุด
มันก็เล่นไปตลอดกาล
แต่เพลง Frere ฌาคส์ไม่ได้
มันไม่ได้มานานแล้วว่า
มันเป็นเพียงไม่กี่บาร์
ดังนั้นเราจึงจำเป็นต้องหยุดเครื่องเคาะเป็น เร็วที่สุดเท่าที่มูลค่าดนตรีสั้นมา
ถึงจุดสิ้นสุด
และผู้ประกอบการที่ infixed เป็นซุปเปอร์ประโยชน์กับว่า
>> และสัญกรณ์มัดเช่น นี้เป็นชนิดที่ดีของ
เพราะบอกว่าคุณมีฟังก์ชั่นเหมือน อ้างซึ่งจะช่วยให้การแบ่งจำนวนเต็ม
ของ x โดยบางสิ่งบางอย่าง else-- ขออภัยที่ควรจะเป็นและ b
คุณสามารถเขียนเป็นคำพูดของข
ดังนั้นหากคุณเป็นองค์ประกอบ put-- ตัวอย่างนี้อีก
x องค์ประกอบในรายการบางอย่างถ้าคุณใส่ ใน Backticks คุณสามารถใช้มัน
แม้ว่าจะไม่ได้เป็นสัญลักษณ์ เช่นบวกหรือลบหรือครั้ง
คุณสามารถใช้ชื่อของที่ ฟังก์ชั่นเช่นเดียวกับที่ใน Backticks
เป็นผู้ประกอบการมัดซึ่งเป็นเย็นสวย
CONNOR HARRIS: อีกครั้งนี้เป็น ทั้งหมดน้ำตาลประโยคเพียงจริงๆ
มันไม่ได้ส่งผลกระทบต่อหลักของภาษา
>> สตีเฟน KREWSON: ดังนั้นเราจะเห็นที่นี่เพื่อ วลีสุดท้ายของเพลงของพวกเรา Frere ฌาคส์
ผมเล่นคอร์ดเล็ก ๆ น้อย ๆ บางส่วนหรือ สามโดยใช้องค์ประกอบขนาน
ผู้ประกอบการ
นี่คือวิธีที่บอกบางอย่างอื่น ของสิ่งที่เราได้รับเพียงแค่บอกว่า
เพื่อให้คุณสามารถฟังก์ชั่นแผนที่ หนึ่งอาร์กิวเมนต์มากกว่ารายการ
CONNOR HARRIS: อีกครั้งอ้างอิง สำหรับตำราเบื้องต้น Haskell--
จะมีทั้งหมดนี้อยู่ในนั้น
>> สตีเฟน KREWSON: ดังนั้นนี่คือสวย สายสำคัญของขั้นตอนที่ซีเควนเซอร์
เราจะดูที่การใช้ ความเข้าใจในรายชื่อ
และเราจะเห็นที่นี่คือองค์ประกอบที่ ในการประกอบการถาวรในเครื่องหมายคำพูดกลับ
ดังนั้นถ้า x เป็นองค์ประกอบของรายการที่ ของ x แล้วเราจะเรียกฟังก์ชั่น PERC
ดังนั้น PERC เป็นเพียงฟังก์ชั่นการกระทบ
มันต้องใช้เวลาพีค่าบางอย่างที่ เป็นส่วนหนึ่งของชุดของทั้งหมดล้อมรอบ
เสียงกระทบที่แตกต่างกัน ที่เราเห็นในสไลด์ก่อนหน้านี้
และจากนั้นก็ให้ว่า ระยะเวลาในการบันทึกไตรมาส
อื่นมันให้มัน QNR และ QNR เป็นเพียงส่วนที่เหลือบันทึกไตรมาส
>> ดังนั้นนี่คือการสร้างสิ่งที่ดีขึ้น
เรามีรายการขององค์ประกอบและ เราจะห่วงมากกว่ารายการบางส่วนจากที่หนึ่ง
ค่าสูงสุดของซีเควนขั้นตอนของเรา
และเมื่อเราอยู่ที่ฉันโดยเฉพาะอย่างยิ่งใน รายการที่หนึ่งถึงค่าสูงสุดที่
ถ้าผมที่เป็นสมาชิกของนี้ ชุดสร้างขึ้นในฟังก์ชั่นนี้
ดีแล้วเราเปิด ลงในบันทึกย่อกระทบ
มิฉะนั้นเราเพียงแค่เล่นส่วนที่เหลือซึ่ง คือจะบอกว่าเราก็ยังคงเงียบ
และเราจะเห็นว่าในที่นี่ รูปแบบนี้เข้าใจรายการ
x มีประชากรนี้ สร้างรายการหนึ่ง
ขนาดระดับโลกของซีเควนเซอร์
CONNOR HARRIS: ใช่
ไวยากรณ์พื้นฐานสำหรับ รายการ comprehensions คือ
ยึดค่าที่เกี่ยวข้องกับ ตัวแปรบางบาร์
ค่าที่เป็นไปของตัวแปร ตัวเองวงเล็บปิด
และถ้าคุณได้ทำสัญกรณ์ตั้งสร้าง ในการเรียงลำดับของการเรียนคณิตศาสตร์ใด ๆ
คุณอาจจะมีการตั้ง 2n ดังกล่าว ที่ n เป็นในหรือ n คือในซี
ที่คล้ายกัน thing-- สัญกรณ์นี้ มีขึ้นเพื่อเป็นแนวทาง
จากการที่ทางคณิตศาสตร์
สตีเฟน KREWSON: และคุณสามารถ ใช้หลายภาค
และตัวกรองหลายในรายการ ความเข้าใจซึ่งเป็นสิ่งที่ดีมากทีเดียว
พีชคณิต types-- เรา จะไม่อู้ยาวที่นี่
มีไม่ความคิดที่ดีในการ Haskell หรือดีความคิดที่เห็นได้ชัด
ของวิธีการที่จะใช้การพูด, การเริ่มต้น พารามิเตอร์การทำงานหรือสิ่งที่
ในหลามนี้ค่อนข้างง่าย
คุณก็สามารถพูดด้วยเท่ากับบน คำประกาศของฟังก์ชั่นที่
ค่าเริ่มต้นใน กรณีที่ไม่มีผู้ใดจะมา
>> ใน Haskell คุณอาจจะสามารถทำได้ อาจจะใช้พิมพ์อาจจะ
ซึ่งจะนำสิ่งใด หรือมูลค่าของประเภทเพียงหนึ่ง
ดังนั้นเราจึงใช้ประโยชน์จากนี้ในเครื่องกลอง เพื่อให้เราสามารถให้ปริมาณตัวเลือก
พารามิเตอร์แต่ละชิ้นส่วนกลอง
เพื่อให้ช่วยให้เรามีวิธีการของการมี EQ หรือไดรฟ์ในช่องทางเฉพาะ
>> CONNOR HARRIS: ใน ตัวอย่าง Haskell อื่น ๆ
คุณอาจเห็นอาจจะใช้สำหรับ ฟังก์ชั่นที่อาจล้มเหลว
นี่คือหนึ่งที่พบบ่อย
>> สตีเฟน KREWSON: และคุณสามารถจัดหา การเรียงลำดับของข้อผิดพลาดเป็นค่าเริ่มต้น
และที่มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อ คุณกำลังทำ I / O ใน Haskell
ที่สามารถเป็นเทคนิค
CONNOR HARRIS: หรือสำหรับ ตัวอย่างที่คล้ายกันคิด
ของการทำงานที่เกี่ยวข้องกับส่วน พารามิเตอร์ที่อาจจะเป็น 0
และฟังก์ชั่นที่สามารถทำได้ สิ่งที่อาจจะกลับมา
ดังนั้นหากมีส่วนที่ไม่มี 0, มันจะกลับมาเพียงแค่สิ่งที่
และหากมีการหารด้วย 0 ก็จะกลับไม่มีอะไร
เป็นวิธีการส่งสัญญาณข้อผิดพลาด
เพราะผลของการ Haskell ของการพิมพ์ที่เข้มงวดมาก
คือว่าไม่มี real-- ข้อยกเว้นที่น่าอึดอัดใจโดยทั่วไป
จัดการข้อผิดพลาดจะอึดอัด
และนี่คือหนึ่งมาก วิธีการทั่วไปในการทำมัน
>> สตีเฟน KREWSON: ดังนั้นตอนนี้เราได้รับ ไปยังอีกสิ่งที่ใจดัด
เกี่ยวกับ Haskell ซึ่งเป็นรูปแบบ การจับคู่และคำจำกัดความของฟังก์ชั่น
ฉันพบคุณในการสไลด์ที่ผ่านมา ประกาศลำดับขั้นตอน
ฟังก์ชั่นที่เอาค่าที่อาจจะ แล้ว int แล้วรายชื่อของ ints,
แล้วส่งกลับลำดับของ ค่าเพลงข้อเขียนมี
ที่มีทั้งสนามและปริมาณ
>> ดังนั้นทั้งสามข้อโต้แย้งสามารถ รูปแบบการจับคู่ในลักษณะดังต่อไปนี้
และเรามักจะต้องการที่จะให้แน่ใจว่า ทำกรณีฐานหรือทางออกกรณีแรก
และขีดเหล่านี้ ก็สามารถจะตีความ
หมายถึงค่าใด ๆ ที่มี
ดังนั้นหากเราได้รับโทรศัพท์ที่จะก้าวลำดับ ที่มีค่าบางค่าอื่น ๆ
แล้วรายการที่ว่างเปล่าสิ่งที่เราต้องการ ที่จะกลับมาเป็นความเงียบเพียงส่วนที่เหลือ 0
>> และแทนที่จะว่า เป็นรายการที่ว่างเปล่าหรือ 0
มันเป็นส่วนที่เหลือ 0, เพราะเรา การจัดการกับประเภทดนตรี
และรายการที่ว่างเปล่าของเพลง ประเภทเป็นเพียงส่วนที่เหลือของระยะเวลาไม่มี
มันเป็นเพลงที่ไม่มี
และจากนั้นเราดูว่าเราจะได้รับขั้นตอน ลำดับด้วย v สำหรับอาร์กิวเมนต์ปริมาณ
พีสำหรับตราสารระมัดระวัง อาร์กิวเมนต์แล้วรายการของเอ็กซ์
>> แล้วเราจะทำสิ่งบางอย่าง
โดยเฉพาะอย่างยิ่งเราใช้ ความเข้าใจในรายการนี​​้
และเราดำเนินการบางอย่าง การดำเนินการกับค่าอาจจะ
ที่จะเปิดเป็นค่าตัวเลขเพื่อให้ มันอาจจะแจกแจงแล้วและใช้
เพื่อเลือกเครื่องมือ
อีกครั้งนี้เป็นเพียงเล็กน้อย บิตจงใจ inconcise
เพียงเพื่อแสดงทุกสิ่งที่แปลก คุณสามารถทำได้ในขณะที่คุณ Haskell
จะดูที่มันเกี่ยวกับเวลาของคุณเอง
>> ทั้งหมดขวา
ดังนั้นเราในที่สุดการเดินทางไปยัง ทำสิ่งที่เราออกไปทำ
ซึ่งเป็นเพลงที่ทำให้คอมพิวเตอร์บาง
ดังนั้นเราจะพยายามที่จะ ทำให้เพลง Frere ฌาคส์
ดังนั้นจึงมีหลายวิธี วลีใน Frere ฌาคส์?
สี่.
ที่ดี
และสิ่งที่ดีคือ พวกเขากำลังทั้งหมดซ้ำแล้วซ้ำอีก
จำนวนเงินเดียวกันของเวลาซึ่งเป็นสอง
>> ดังนั้นเราจึงมีสี่วลี แต่ละซ้ำสองครั้ง
และโดยเฉพาะอย่างยิ่งพวกเขาอยู่ในรอบ
และมีเป็นจำนวนมาก หลายวิธีที่จะดำเนินการ
รอบที่อาจจะสนุกที่จะทำ
ผมเคยทำไว้ใน วิธีที่ง่ายสวยที่นี่
ซึ่งเป็นเพียงเพื่อ construct-- สาย ฟังก์ชั่นใช้รายการของค่าเพลง
และเปลี่ยนมันเป็นองค์ประกอบตามลำดับ โดยการใช้ว่าองค์ประกอบตามลำดับ
ผู้ประกอบการ
>> แล้วฉันล่าช้าชิ้นส่วนที่แตกต่างกัน โดยทำให้พวกเขาเริ่มต้นด้วยการพักผ่อน
ดังนั้นผมจึงเริ่มต้นด้วยส่วนที่เหลือของทั้งสองมาตรการ แล้วส่วนที่เหลือของสี่มาตรการ
แล้วส่วนที่เหลือของหก มาตรการและจากนั้นรอบ
การทำงานในขณะที่เราทุกคนรู้ว่าเพลงนี้
เราเห็นสองหรือคำอธิบายประกอบ การปรับเปลี่ยนของค่าเพลง
ที่มีอยู่ในลำดับนี้ การจัดองค์ประกอบของเพลง
ขณะนี้มีปริมาณเพิ่ม
นี้เป็นฟังก์ชั่นที่จะอธิบาย เพลงที่มีปริมาณโดยเฉพาะอย่างยิ่ง
นี้เป็นตัวอย่างที่ดี ของสัญญาณ MIDI ทำงาน
0-127 เจ็ดบิต ข้อมูลที่สามารถดำเนินการ
>> และ then-- เราเห็นว่ามันมาก สั้น ๆ แต่ MIDI ทั่วไป
รายชื่อของเครื่องมือที่แตกต่างกัน
และมีไม่มากทั้งของพวกเขา
ถ้าคุณใช้เวิร์คสเตชั่เสียงดิจิตอล เช่น Ableton สดหรือ Pro เครื่องมือ
มีช่วงที่กว้างขึ้นอย่างไม่น่าเชื่อ สังเคราะห์และเครื่องมือ VST
แต่มาตรฐาน MIDI เท่านั้น มีไม่กี่หรือหลายโหล
และบางส่วนของพวกเขาเป็นตลก
ฉันคิดว่ามันจะสนุกถ้าเราเล่น เครื่องดนตรีเครื่องดนตรี MIDI
เฮลิคอปเตอร์แล้ว วิธีต่อไปผ่านรอบ
เราทำ synth แผ่นแล้วของ นำนี้ซ้ำซากตาราง synth คลื่น
แล้วเสียงซึ่มซึ่งเป็น นิด ๆ หน่อย ๆ ไม่ชัดใน MIDI ไม่ดีของฉัน
สังเคราะห์ แต่พวกเขาตกลง
>> และจากนั้นก็ปล่อยให้เราเห็นนี้ และไวยากรณ์จาก Haskell,
และจากนั้นเรากำลังเล่น ชิ้นส่วนเหล่านี้ร่วมกัน
กับผู้ประกอบการองค์ประกอบขนาน
และเราอาจจะแสดงบางส่วนของนี้
นี่คือรหัสของ
และคุณสามารถเห็นใน C มีต้องการเป็น จำนวนมากของการล้างลำคอและการตั้งค่า
รหัสตารางก่อนที่คุณจะ สามารถทำให้เพลงเช่นนี้
หรือการเขียนโปรแกรมอื่น ๆ ภาษาที่คุณต้องการอาจ
มีการโต้ตอบกับการจัดเรียงของบางอย่าง ห้องสมุดหรือ API และการตั้งค่าทุกอย่างขึ้น
แล้วคุณจะต้องทำความสะอาด
แต่ที่นี่คือ Haskell ผมคิดว่าครั้งเดียว คุณจะได้รับการแขวนของมันอย่างไม่น่าเชื่อ
สามารถอ่านได้และแสดงออกมาก
เพื่อให้มีการดำเนินการ Frere ของฌาคส์
ทั้งหมดขวา
ตอนนี้เราต้องการที่จะเพิ่มกระทบ และนี่คือ Messier นิด ๆ หน่อย ๆ
ดังนั้นลองมาดูที่สไลด์ได้
ดังนั้นความคิดที่ยิ่งใหญ่คือการทำให้ พวงของรายการหรือชิ้นส่วน
ในบรรดาม้วนในเครื่องมี โดยทั่วไปอาจจะเกี่ยวกับแปด
10 จังหวะหรือชิ้นส่วนที่กระทบ
แล้วใช้พวงของเทคนิค
และเราได้พูดคุยเกี่ยวกับการใช้ these-- เท่ากรอง, ฟังก์ชั่นแลมบ์ดา
แมปมากกว่ารายการที่จะสร้างค่านิยม ในบางช่วง 1 ถึง R, r คือ 16
หรือ 32 ขั้นตอนในซีเควนเซอร์
>> และจากนั้นถ้ามีค่าในรายการว่า ในขณะที่เรากำลังวิ่งผ่านซีเควนที่
วิ่งผ่านมันไปและ มากกว่าก็จะเปิดในวันที่ทราบว่า
และตัวอย่างที่ได้รับการเรียก
ที่นี่มีทุกวิธีที่แปลกแตกต่างกัน ฉันมากับการสร้างบันทึก
ลองบนผลรวมกึ่งของคุณเอง
มันจะเสียงเย็น
เวลาที่อนุญาตให้เราจะผ่านไปนี้
แต่สำหรับตอนนี้ผมคิดว่า เราควรจะสาธิตสิ่งที่เรามี
หวังว่านี้ไปตกลง
>> ดังนั้นนี่คือ GHCI
และเราจะโหลดไฟล์ ฉันมีที่เรียกว่า song.lhs,
ซึ่งเป็นไฟล์ฉันเพียงแค่แสดงให้เห็นว่าคุณ
ตกลงที่ดี
ในฐานะที่เป็นคอนเนอร์กล่าวว่าก่อนหน้านี้ก็ รวบรวมมันพิมพ์การตรวจสอบ
เพื่อให้สามารถหายใจได้ง่ายขึ้นมาก
มันไม่ได้เป็นไปที่จะระเบิดขึ้นกับฉัน
>> ผมไม่ต้องการที่จะแสดงให้คุณเห็นสิ่งที่มีประโยชน์
คุณสามารถดูว่า โมดูลที่เรียกว่าเต็ม 50
คุณสามารถเรียกดูโมดูลที่
และนี่เป็นสิ่งที่ดีดังนั้น เกี่ยวกับสิ่งที่อาจจะ doing--
คุณกำลังทำใน Haskell ไม่ ที่เรียกว่าการพัฒนาซอฟต์แวร์
แต่คุณสามารถทำจำนวนมาก สิ่งที่สนุกด้วยตัวคุณเอง
และขั้นตอนการทำงานที่เป็นจริงดีเป็น เมื่อเทียบกับจำนวนมากของภาษาอื่น ๆ
เพราะคุณจะได้เห็นในจริงๆ วิธีการอ่านสิ่งที่เกิดขึ้น
ดังนั้นเราจะเห็นว่าเรามี วลีทั้งหมดเหล่านี้ซึ่ง
เป็นรายการเพลงของสนามและจากนั้นเรา สร้างขึ้นเหล่านี้เป็นสิ่งที่มีขนาดใหญ่
ซึ่งเป็นเพลงเพลง
มันเป็นหน่วยดนตรี
และจากนั้นเราสามารถเล่นทั้งหมดนี้ ที่มีฟังก์ชั่นที่เรียกว่าการเล่นดนตรี
คุณจะเห็นว่าลงที่นี่
ซึ่งเป็นเพียงการเล่น
>> ฉันควร say-- ผมไม่ได้พูดคุยเกี่ยวกับ เครื่องหมายดอลลาร์ที่ทุกที่
เครื่องหมายดอลลาร์เป็นผู้ดำเนินการมัดอื่น
แต่มันก็มีความสำคัญที่ต่ำที่สุด ของผู้ประกอบการใด ๆ ที่มีประสิทธิภาพ
หมายความว่าทุกอย่างบน ด้านซ้ายของเครื่องหมายดอลลาร์
และด้านขวาของเครื่องหมายดอลลาร์ที่ เรากำลังจะได้รับการประเมินก่อนที่จะ
ดังนั้นจึงเป็นประเภทชอบอีก วิธีการเพิ่มวงเล็บ
>> CONNOR HARRIS: มันเป็นพื้น องค์ประกอบของฟังก์ชั่น
และเพื่อให้แน่ใจว่าคุณไม่ได้ถ้า have-- คุณมีฟังก์ชั่นทั้งสองข้างหรือมัด
ผู้ประกอบการในด้านใดด้านหนึ่งพวกเขาจะไม่ เชื่อมโยงข้ามมันและให้คุณ
ผลที่ไม่คาดคิด
>> สตีเฟน KREWSON: ดังนั้นเรา can-- โดยใช้ที่เราสามารถเรียก
ครั้งแรกที่เราจะเล่นได้โดยไม่ต้องกลอง
นั่นเป็นเฮลิคอปเตอร์ เฮลิคอปเตอร์ MIDI
>> [เล่นเพลง]
มีคลื่นสี่เหลี่ยมคือ
เสียงซึ่ม
และจริงๆคุณสามารถไปป่ากับเรื่องนี้
ฉันเลือกหนึ่งที่ง่ายสวย เพราะผมรู้ว่าผมไม่ควรกัดออก
กว่าฉันจะได้เคี้ยว
เพียงแค่ให้มันง่ายสวย ที่จะแสดงความคิดหลัก
แต่แล้วฉันก็ชอบเราได้ มีการเพิ่มกลองบางนี้
เพียงเพราะนี้เป็น นิด ๆ หน่อย ๆ ไม่ยอมรับ
และผมก็ไม่ได้ใช้ ชื่อของชิ้นส่วนกลอง
ฉันแมป them-- เพราะพวกเขากำลัง ส่วนหนึ่งของที่ระดับนับจำนวน
ฉันแมปให้พวกเขา ints
หนึ่งเป็นเหมือนเสียงกลองเบส
ศูนย์เป็นเช่นกัน
เซเว่นเป็นหมวกสูง
และลงที่นี่ที่ ฟังก์ชั่นได้รับน้อยสุ่มมากขึ้น
เหล่านี้เป็นเหมือนกลองคอง
>> ดังนั้นถ้าคุณคิดว่าอาจจะเป็น about-- วิธีที่สนุกที่จะใช้เครื่องกลอง
คือการใช้เป็นระเบียบเรียบร้อยมาก รูปแบบบนกลองเบสของคุณ
ดังนั้นสำหรับตัวอย่างเช่นในการกรองมากกว่า รายการที่มีทุกอย่างที่จะช่วยให้กลับมา
1 เมื่อมันเอาโมดูล 04
ดังนั้นผมจึงได้รับ 1, 5, 9, 13, 17-- ดังนั้นนี้ เป็นจังหวะแรกของทุกตัวชี้วัด
>> และแล้วนี้ก็เช่นเดียวกัน สิ่งที่เปลี่ยนไปสองขั้นตอน
ดังนั้นที่ผิดปรกติ
ดังนั้นนี้จะเป็น บางสิ่งบางอย่างเช่นหมวกสูง
และแล้วอีกครั้งลงที่นี่ มันเป็นเรื่องเล็ก ๆ น้อย ๆ แบบสุ่ม
เพราะเรากำลังทำกลองคอง
และฉันมี maracas บางลงที่นี่ด้วย
>> ดังนั้นผมจึงสามารถเรียกเครื่องกลองเล่น แต่มันจะไปอยู่กับคุณตลอด
และมันอาจจะเริ่มต้นขึ้นโลภ หน่วยความจำทั้งหมดในระบบของฉัน
ดังนั้นผมจึงจะเรียกฟังก์ชั่นนี้ เล่นเพลงซึ่งในขณะที่เราจะเห็น
ใช้องค์ประกอบขนานตัดทอน การเล่น Frere น้อยของเราเพลงฌาคส์
พร้อมกับเครื่องเคาะแปลกนี้
ดังนั้นลองมาดู
และโปรดอย่าปรับปรุงเกี่ยวกับฉัน การจัดเรียงของทุกชิ้นส่วนกลอง
ไม่ได้พิเศษของฉัน แต่ฉัน มีจำนวนมากสนุกทำมัน
>> [เล่นเพลง]
>> ดังนั้นหลักสูตรนี้ทั้งหมด นิด ๆ หน่อย ๆ ไม่ได้เป็นความสนุกสนาน
ถ้าเราไม่สามารถแปลงเป็น คะแนนดังนั้นบางทีมันอาจจะ
อาจจะตีความ โดยนักแสดงมนุษย์
ดังนั้นผมจะไม่ทำงานที่นี่
ฉันได้สร้างแล้วไฟล์
คุณจะเห็นว่ามี จุด Lilypond file-- นี้
จะทำต่อไปของฉัน Connor-- และไฟล์ MIDI จุด
และไฟล์ PDF จุดซึ่งเป็นสิ่งที่ Lilypond ที่สุดจะสร้าง
>> แต่เหล่านี้เป็นสคริปต์เหล่านั้นและฉันจะ เพียงแค่ใช้พวกเขาด้วยตัวเลือกการช่วยเหลือของพวกเขา
ถ้าคุณได้รับเหล่านี้ขึ้นและทำงานกับ Euterpea คุณสามารถสร้างไฟล์ MIDI
และจากไฟล์ MIDI กับโปรแกรมนี้ MIDI 2LY,
คุณสามารถสร้างลิลลี่ ไฟล์บ่อและจากนั้นคุณ
สามารถสร้างไฟล์ PDF ของคะแนนที่
และเราควรจะดูที่นี้
ดังนั้นคอนเนอร์อาจจะแสดงให้เห็น วิธีการอธิบายที่ดีกว่านี้
แต่นี้เป็น Frere ฌาคส์เป็น ที่สร้างขึ้นโดยฉันใน Euterpea
มันเป็นเพียงแค่ใน C. ฉันควรจะได้คิด สิ่งที่สับเป็นจริงใน
แต่ที่เป็นท่อสำหรับ วิธีการที่คุณทำกับที่
ลองพูดคุยเกี่ยวกับ Lilypond
>> CONNOR HARRIS: OK ลองดู
คุณพูดถึงคุณเรียนรู้ Haskell?
สตีเฟน KREWSON: Oh yeah
ตรวจสอบการเรียนรู้คุณ Haskell
มันอยู่ในทรัพยากร
นั่นเป็นวิธีที่ผมเริ่ม การเรียนรู้และเป็นที่ดี
การเรียนรู้ไม่ได้โง่
>> CONNOR HARRIS: ดังนั้นจึงเป็นออนไลน์
ดังนั้นผู้ชายที่ชื่อ [ไม่ได้ยิน] learnyouahaskell.com ไม่มีช่องว่าง
ไวยากรณ์มีอาการป่วย
สตีเฟน KREWSON: มันแสดงมากเกินไป
CONNOR HARRIS: ดังนั้นสิ่งที่เป็น Lilypond?
มันเป็นที่เปิดเผยการเขียนโปรแกรม ภาษาสำหรับเพลงเรียงพิมพ์
ดังนั้นคุณสามารถ declarative-- คิดว่าสิ่งเช่น HTML,
ที่คุณไม่ saying-- HTML ไม่ได้บอกว่าเว็บเบราเซอร์ที่ควร
ทำให้หน้าทีละขั้นตอน
มันเป็นเพียงแค่คำพูดนี้ เป็นคำอธิบายเกี่ยวกับใจ
สิ่งที่คุณต้องการหน้าจะมีลักษณะเหมือน
>> และจากนั้นก็ยังมีโปรแกรม ที่รวบรวมภาษานี้
หรืออ่านในและแล้วจริง ไม่เรียงพิมพ์สำหรับคุณ
และถ่มน้ำลายออกมาเหล่านี้ มองที่ยอดเยี่ยมคะแนน PDF
นอกจากนี้คุณยังจะได้รับรูปแบบ PNG หรืออะไรก็ตาม
วิธีที่ดีที่จะคิดว่า นี้คือโดยการเปรียบเทียบ
คือน้ำยางเป็นประเภทเช่น LillyPond, แต่เพียงเรียงพิมพ์สามัญ
ดังนั้นแทนที่จะ of-- ก็ไม่ได้ WYSIWYG, สิ่งที่คุณเห็น
คือสิ่งที่คุณได้รับเช่นเดียวกับการพูด ตอนจบเป็นหรือเลียส,
หรือ Microsoft Word, ที่คุณสามารถพิมพ์ใน สิ่งที่เวลาจริงและร่างในเวลาจริง
และเห็นการเปลี่ยนแปลงทันที
>> มันเป็นข้อความตาม
คุณมีการรวบรวมของคุณ คะแนนโดยใช้โปรแกรมแยกต่างหาก
และได้รับการออกไฟล์ PDF ในภายหลัง
นี้เป็นบิตน้อย สะดวกสำหรับการใช้งานถ้าคุณ
พยายามที่จะเขียนโดยตรง เข้าคะแนนและคุณ
พยายามที่จะเขียนในคอมพิวเตอร์
แต่มีจำนวนมาก ข้อดีของมัน
หนึ่งก็ไม่ดูมากดีกว่าที่ เพราะ LillyPond สามารถจริง
ใช้เวลาในการทำ รูปแบบการตัดสินใจที่ถูกต้อง
ซึ่งแตกต่างจาก Sibelius หรือละครที่มี ที่จะทำให้ขั้นตอนวิธีการที่ถูกบุกรุกเพื่อ
ว่าพวกเขาสามารถแสดง สิ่งที่อยู่ในเวลาจริง
>> ดังนั้นทำไม LilyPond-- คอมพิวเตอร์กราฟิกเป็นเรื่องยาก
หากคุณกำลังทำอะไรกับเพลง และคุณต้องการที่จะเขียนออกมาคะแนน,
คุณไม่ต้องการที่จะเขียน ทุกอย่างได้ด้วยตัวเอง
เริ่มต้นด้วยวิธีการวาด บุคคลากรและวิธีการวาด notepads
มันยากมาก. มันเคยทำมาก่อน
คุณไม่เป็นไร.
>> หากคุณต้องการที่จะใช้ Finale หรือเลียส, รูปแบบไฟล์สำหรับสิ่งเหล่านั้น
มีความซับซ้อนมากและคุณไม่สามารถ พวกเขาจริงๆใช้โปรแกรม
คุณสามารถเปิดเลียสกับฟินาเล่ และไปที่ File เพื่อการส่งออกเป็น PDF ด้วยตัวคุณเอง
แต่คุณไม่สามารถจริงๆ เรียกว่าจากสคริปต์
LillyPond คุณสามารถเรียก จากสคริปต์เหล่านั้น
คุณสามารถจะย้ำ LillyPond กับน้ำยาง
ฉันจะไม่ได้มีเวลามากที่จะไป เทคโนโลยีเหล่านี้เข้ามาในตอนนี้
แต่พวกเขามีอยู่
หากคุณต้องการที่จะดู เป็นหนังสือ LillyPond,
มันเป็นโปรแกรมที่มาพร้อมกับ กระจาย LillyPond ของคุณ
และก็สำหรับ iterating ชิ้นส่วนลงไปในน้ำยาง LillyPond
ถ้าคุณต้องการที่จะทำบางสิ่งบางอย่าง เช่นเอกสารการแต่งเพลงที่ยิ่งใหญ่
ด้วยตัวอย่างเช่น
และมันเป็นทักษะที่ดีสำหรับ ชีวิตถ้าคุณกำลังทำอะไร
กับเพลงไม่ได้เป็นเพียง CS50
ผมเคยใช้ LillyPond ทั้งหมด ของโครงการองค์ประกอบของฉัน
ตั้งแต่ผมยังเป็นพื้น อาวุโสในโรงเรียนมัธยม
>> ดังนั้นนี่คือบางตัวอย่างง่ายๆ
นี้เป็นตัวแทนโดยทั่วไป ระดับของความยากลำบาก
ที่คนส่วนใหญ่จะ หน้ามันพวกเขากำลังพยายาม
ที่จะใช้สำหรับโครงการ Lilypond ง่าย
นี้คนแรกคือจุดเริ่มต้น ที่จะนำกลุ่มนักร้องประสานเสียงของ Bach
นี้ล่างคือข้อความที่ตัดตอนมา จากหนึ่งในผลงานของตัวเอง
และเป็นเพียงมีการแสดง สิ่งที่คุณชอบ [ไม่ได้ยิน]
วางหลายบรรทัดในเดียวกัน พนักงานว่าบทกวีงาน undersetting
underlays ละครเป็นสิ่งที่ที่มาก ง่ายต่อการใช้ Lilypond สำหรับเพลงประสานเสียง
>> และอื่น ๆ แล้วมีบางมากขึ้น ตัวอย่างที่ซับซ้อนที่นี่
ทั้งหมดเหล่านี้จะทำใน Lilypond และพวกเขากำลังไปได้
ข้อความที่ตัดตอนมานี้ครั้งแรกจาก [ไม่ได้ยิน] โดย [ไม่ได้ยิน]
และนี่ [ไม่ได้ยิน] จาก ชิ้นส่วนที่ให้เสียงเบสเดี่ยว
ขลุ่ยโดย [ไม่ได้ยิน] ที่เป็น longtime-- ที่
เป็นสมาชิกเก่าแก่ของ ภาควิชาดนตรีที่นี่ผมคิดว่า
ผมไม่แน่ใจว่าที่เขาไปออกไป
แต่เขาก็เป็นที่ปรึกษาของฮาร์วาร์ คีตกวีสมาคมเป็นเวลานาน
คนที่ยอดเยี่ยม
และเขาเขียนเพลงที่มีมาก โน้ตที่ซับซ้อนที่ LillyPond
แต่สามารถจัดการอย่างมาก
>> ดังนั้นเพียงแค่จะให้ความรู้สึกของสิ่งที่ ความสามารถของสิ่งนี้เพื่อ are--
internals ของ LillyPond มีความซับซ้อนมาก
และคุณสามารถใช้งานได้ เป็นเวลานานรวมทั้ง
สำหรับบางคนที่มีความซับซ้อนสวย สิ่งโดยไม่ได้จริงๆ
ต้องรู้มากเกี่ยวกับพวกเขา
แต่ความคิดพื้นฐานคือว่าบน ระดับต่ำสุดอะตอมของ LillyPonds
มีการบันทึก
หมายเหตุมี บริบทที่เรียกว่าเสียง
ดังนั้นบริบทเสียง โดยทั่วไปสอดคล้อง
เพื่อบรรทัดเดียวของพฤกษ์
และแล้วบริบทสามารถ ที่มีลำดับชั้น
คนที่อยู่ในระดับที่สูงขึ้นว่า เป็นตัวแทนของพนักงานในการให้คะแนน
หรือกลุ่มขนาดใหญ่เช่น พนักงานหรือพนักงานเปียโนนักร้อง
และแล้วในที่สุด บริบทคะแนนทั้งหมด
และคุณจริงสามารถครอบคลุม คะแนนหลายในหนังสือ
>> และบริบทที่ทุกคนมี จำนวน engravers ที่แนบมา
ถ้าคุณมองผ่าน เนื้อหาของบริบท
และพิมพ์สัญลักษณ์บางอย่างหรือ ระดับหนึ่งของสัญลักษณ์ตามความจำเป็น
ดังนั้นเพื่อบริบทเสียงทุก มี [ไม่ได้ยิน] บันทึก
ช่างแกะสลักที่เป็นพื้นหรือฟังก์ชั่น วัตถุที่เขียนออกทั้งหมดทราบที่
หัวในส่วนขวาของหน้า
จากนั้นก็มีช่างแกะสลักแหว่งซึ่ง เขียนออกมาจากซอกในพนักงาน
จากนั้นก็มีเครื่องเมตรอนอม ช่างแกะสลักที่ทำเครื่องหมาย
เขียนออกมาในจังหวะเครื่องหมายคะแนน
และสิ่งเหล่านี้พอดีสวย ดีในลำดับชั้น
และมันก็เป็นอย่างมาก ปรับแต่งที่ที่คุณต้องการ
ถ้าคุณต้องการที่จะได้รับสิ่งที่ต้องการที่
>> ดังนั้นบริบททั้งหมดที่มี จำนวนมากของคุณลักษณะที่แตกต่างกัน
ที่คุณสามารถปรับเปลี่ยนทุกอย่าง ระยะห่างจากแบบอักษรต่างๆ
เลือกขนาดของสิ่งที่
หากคุณต้องการที่จะทำแม้กระทั่ง สิ่งที่ซับซ้อนมากขึ้น
มีภาษาสคริปต์ที่ฝังตัว
พวกเขาใช้โครงการซึ่ง เป็นภาษาถิ่นของเสียงกระเพื่อม
เหล่านี้อาจจะไม่ หมายถึงอะไรกับคุณ
แต่โดยทั่วไปโครงการ อีกการทำงาน
การเขียนโปรแกรมภาษามากกว่าหรือน้อยกว่า
>> สตีเฟน KREWSON: ผูกใน
>> CONNOR HARRIS: ใช่
มันเป็นเรื่องที่ดีในการผูกผมคิดว่า
และใช้เป็นเครื่องมือในการเรียนการสอนภาษา, จริงลงมวล Ave. ที่เอ็มไอที
และมันก็เป็นประโยชน์มากสำหรับการ LillyPond ด้วยเหตุผลทางเทคนิคต่างๆ
>> และดังนั้นหากคุณต้องการที่จะทำให้ง่าย ปรับแต่งขึ้นอยู่กับเงื่อนไข,
สำหรับ example-- มีบางอย่าง สภาพของคะแนนที่ได้พบกัน
ปรับเปลี่ยนไป รูปแบบหรือ whatnot-- แล้ว
สิ่งอำนวยความสะดวกเหล่านี้จะมี
พวกเขากำลังมีความซับซ้อน
ดังนั้นนี่คือตัวอย่างรหัสที่ง่ายสวย
มันเป็นห้าสาย
โดยทั่วไปฉันกำหนดสองบุคคลากร
มันอยู่ใน 3/4
พนักงานคนแรกที่มี เครื่องหมายจังหวะที่แนบมา
แต่ที่เกิดขึ้นจริง ไปในการที่จะทำคะแนนทั้งหมด
เพราะเครื่องหมายจังหวะ อยู่ในระดับคะแนน
ช่างแกะสลักเครื่องหมายจังหวะ ที่แนบมากับคะแนนบริบท
มีปุ่มที่แตกต่างกัน เพราะ [ไม่ได้ยิน] แกะสลัก
ที่แนบมาพนักงาน
จริงๆคุณสามารถทำได้คือ
ตัวอย่างที่ผมเขียนคือ จริงใน C ที่สำคัญ
แต่มันก็เป็นเพียงเพื่อ แสดงให้เห็นว่าคุณสามารถมี
คีย์ที่แตกต่างในพนักงานที่แตกต่างกัน
และไวยากรณ์พื้นฐานคือการที่คุณเขียน ทราบชื่อกับ E, F, G, สิ่งที่
หากคุณต้องการที่จะทำ accidentals, คุณต่อท้ายหรือ ES
นี้เป็นจากชาวดัตช์ การประชุม musicological
>> และจะทำอย่างไรกระโดดคู่ที่คุณต้องใช้ เครื่องหมายเหล่านี้ติ๊กเครื่องหมายจุลภาคหรือเครื่องหมายวรรคตอน
ญาติก็หมายความว่า สิ่งที่คุณมีบันทึก
มันจะถูก plaec ในโดยอัตโนมัติ คู่ที่ใกล้เคียงกับก่อนหน้านี้หนึ่ง
และถ้าคุณต้องการที่จะข้ามไปมากกว่า fifth-- กล่าวว่าหนึ่งในห้าหรือ more--
แล้วคุณจะต้องใช้ [ไม่ได้ยิน]
แต่อย่างอื่นที่คุณจะได้ไม่ต้อง ระบุคู่ของทุกบันทึกเดียว
>> และญาติซ​​ีที่สำคัญและ C คุณเพียงแค่ระบุกลาง c
และ C ฐานบันทึกครั้งแรกโดยเฉพาะอย่างยิ่ง
แล้วคุณมีบุคคลากรเหล่านี้ที่จัดระเบียบ ทั้งสองเสียงหรือตัวอย่างของเพลง
และคุณมีคะแนน
และที่มีลักษณะเช่นนี้
>> หากคุณต้องการที่จะใช้เวลาที่จะ คัดลอกตัวอย่าง LillyPond ว่า
โค้ดบนก่อนหน้านี้ เลื่อนลงที่นี่และคุณ
สามารถเขียนให้ตัวเอง LillyPond
ฉันรู้ว่าเราได้มีบางสิ่งบางอย่าง ที่มีลักษณะเป็นจำนวนมากเช่นนี้
เพื่อให้มีเทคโนโลยีอื่น เรียกว่า XML เพลงการบำรุงรักษา
โดยคนที่แตกต่างกันอย่างสิ้นเชิง
XML เป็นข้อมูลเกี่ยวกับใจ structure-- ฉัน ไม่ควรจะพูดว่าข้อมูล structure-- พูด
การเรียงลำดับคำอุปมาของแผนที่
และก็ออกแบบมาเพื่อถือ ข้อมูลแบบลำดับชั้นได้เป็นอย่างดี
HTML, เช่นเป็นชนิดของ XML
และคุณสามารถบอก XML เพราะพวกเขา มีทั้งหมดวงเล็บมุมและมุม
เครื่องหมายวงเล็บเฉือน เขตข้อมูลที่แสดง
>> ฉันไม่ได้มีรหัส เช่นจาก XML เพลง
คุณสามารถค้นหาได้ด้วยตัวคุณเอง
โดยทั่วไปเหตุผลที่คุณอาจต้องการ การใช้ XML เป็นเวทีกลาง
เป็นครั้งแรกของทั้งหมดก็ รูปแบบการแลกเปลี่ยน
สำหรับพื้น every-- ฉันไม่ควรจะพูด ทุกครั้ง แต่จำนวนมากของคะแนนที่แตกต่างกัน
นักเขียน
ดังนั้นถ้าคุณเขียนเพลง XML ไม่เพียง แต่สามารถ LillyPond
อ่านมันด้วยความช่วยเหลือของ auxilary นี้ โปรแกรมที่เรียกว่า XML ดนตรี LY,
แต่ยังสามารถอ่านตอนจบ มันเลียสามารถอ่านได้
ขึ้นอยู่กับว่าวัตถุภายในของคุณ ลำดับชั้นของการทำงานสำหรับตัวแทนของเพลง
มันอาจจะง่ายต่อการเขียนออกมา เพื่อ XML เพลงมากกว่าที่จะ LillyPond
และเพียงแค่พึ่งพา XML เพลง LY เพื่อที่จะทำแปลง
>> ฉันไม่คิดว่า [ไม่ได้ยิน] มี XML เพลง
สตีเฟน KREWSON: มันไม่ได้
คนที่ทำงานเกี่ยวกับมันแม้ว่า
>> CONNOR HARRIS: OK
Euterpea ไม่ได้ ฟังก์ชั่นการส่งออกเพลง XML ยัง
ถ้าคุณต้องการความคิดโครงการสุดท้าย อาจจะได้รับในการติดต่อกับพวก
ที่รู้สตีเฟ่นและ พวกเขาสามารถใช้ความช่วยเหลือของคุณ
>> สตีเฟน KREWSON: ฉันจะรักว่า
CONNOR HARRIS: นอกจากนี้โดยทั่วไป ทุกภาษาโปรแกรม
ที่มีมูลค่าเกลือ แล้วมีห้องสมุดของ XML,
เพื่อให้คุณสามารถแปลงภายในทั้งหมด เพลงของคุณลงในวัตถุบางอย่าง
ที่ห้องสมุด XML สามารถเขียน เห็นว่าจะต้องน้อยลง
การปรับเปลี่ยนโครงสร้างภายในของคุณ สำหรับสิ่งที่เพลงวัตถุที่คุณ
ต้องการที่จะเขียนกว่าการเขียนมัน โดยตรงใน LillyPond จะ
แล้วก็พิมพ์ออกมาด้วย XML ที่มี ห้องสมุด XML ในภาษาของคุณ
ซึ่งจะรับประกันได้ว่ามันเป็น syntactically ถูกต้องและทุกอย่าง
แล้วแปลงเป็น LillyPond
เทคโนโลยีดังนั้นคุณอาจต้องการที่จะ มองเข้าไปในถ้าคุณกำลังทำอะไรบางอย่าง
อย่างนี้.
>> [ไม่ได้ยิน] อีก เทคโนโลยี auxilarry
นี้เป็นพื้นธิเทค หรือเทคสตูดิโอสำหรับ LillyPond
ดังนั้นจึงมีความช่วยเหลือเกี่ยวกับ ไวยากรณ์ที่มีแม่แบบ
สำหรับต่างๆที่พบบ่อย การรวมกันของตราสาร
จะช่วยให้หน้าจอแยกเพื่อให้ดู คุณสามารถมีรหัสของคุณในหน้าต่างเดียว
และ PDF ในหน้าต่างอื่นและ คลิกที่สถานที่ในรูปแบบไฟล์ PDF
เพื่อข้ามไปที่เกี่ยวข้อง จุดในรหัสต้นฉบับของคุณ
นี้จะเป็นประโยชน์มากขึ้นถ้าคุณกำลังจริง เขียน LillyPond ไฟล์ตัวเอง
กว่าถ้าคุณกำลังสร้าง พวกเขาโปรแกรม
แต่อีกครั้งก็ สิ่งที่มีประโยชน์ที่จะมี
>> ที่ดี
resources-- อีกฉันจะเพียง ผ่านไปอย่างรวดเร็วนี้
LillyPond manuals-- LillyPond มี เอกสารที่ดีในเว็บไซต์ของตน
พวกเขามีการกวดวิชา
พวกเขามีการอ้างอิงไวยากรณ์
พวกเขามีหลายร้อยตัวอย่าง สิ่งเล็ก ๆ น้อย ๆ
yo อาจจำเป็นต้องทำเพื่อแสดงให้เห็นถึง ความสามารถต่างๆ
หากคุณต้องการที่จะใช้ ภาษาสคริปต์
หรือทำอย่างกว้างขวางมากขึ้น การปรับแต่งแล้วมี
อ้างอิง internals ที่ URL ที่
หากคุณต้องการที่จะใช้ XML เพลงมี URL ที่ musicxml.com/tutorial
>> และแล้วถ้าคุณต้องการที่จะเรียนรู้รูปแบบ เพราะคุณจริงต้องการที่จะใช้
สิ่งอำนวยความสะดวกในการเขียนสคริปต์ LillyPond, แล้วมี [ไม่ได้ยิน] ที่เรียกว่า
ที่มีโครงสร้างการตีความ โปรแกรมคอมพิวเตอร์
ซึ่งไม่เพียง แต่สอง ที่ยิ่งใหญ่ที่สุดตำรา CS เคยเขียนกัน
หาฉันหลังจากนั้นถ้าคุณต้องการที่จะรู้ว่า สิ่งที่ผมคิดว่าหนึ่งที่ยิ่งใหญ่ที่สุด is--
แต่ก็ยังดีมาก รู้เบื้องต้นเกี่ยวกับภาษาที่เหมาะสม
คุณจะไม่จำเป็นต้องมากกว่า ส่วนแรก
>> และที่มัน
มีคำถามอะไรไหม?
>> นักเรียน: ฉันสามารถดาวน์โหลด สร้างของคุณ Frere ฌาคส์
เพื่อให้สามารถนำมาใส่ใน iPod ของฉัน?
>> สตีเฟน KREWSON: ดีคุณสามารถเขียน ออกไปบางไฟล์ wav ใน Euterpea
และคุณมีรหัส
มันอยู่ใน GitHub
ทำให้รูปแบบของคุณเอง Frere ฌาคส์โดยใจรัง CS50
มันจะดี
CONNOR HARRIS: ใคร?
สตีเฟน KREWSON: เราจำเป็น กลองเบสดีขึ้นอีกด้วย
มันไม่ดีจริงๆ
>> นักเรียน: Euterpea ได้ไม่เพียง แต่ ด้านองค์ประกอบ แต่ signal--
สตีเฟน KREWSON: ใช่
ในความเป็นจริงการทำงานของผม ทำใน Euterpea เมื่อฉัน
เอา this-- มี จบการศึกษาหลักสูตรที่มหาวิทยาลัยเยลที่
ใช้ it-- อยู่ในการสังเคราะห์เสียง
เพื่อให้มีจริงๆ วิธีที่ดีโดยใช้ลูกศร
และบางส่วนของโน้ตที่เราเห็นของ ฟังก์ชั่นการเขียนร่วมกันของสัญญาณ
โดยเฉพาะอย่างยิ่งเสียงเบสให้มากที่สุด พวกเขาเป็นเพียงคลื่นไซน์ที่เรียบง่าย
แต่ถ้าคุณเริ่มเขียนเหล่านั้น ในรูปแบบการเขียนโปรแกรมที่แปลก
คุณจะได้รับเสียงบ้า ผลกระทบเช่นน้ำตกแปลก
คุณสามารถสร้างความกล้าหาญมาก เสียงที่มีจำนวนมากของการปรับ
>> ผมทำโครงการเกี่ยวกับเม็ด การสังเคราะห์ซึ่งเป็น
บางแห่งในระหว่างเอฟเอ็มและการสุ่มตัวอย่าง
คุณจะใช้ขนาดเล็กมาก ตัวอย่างเล็ก ๆ น้อย ๆ แล้ว
รวมกับการจัดเรียงของบางอย่าง โมดูเลเตอร์และสร้างเสียงที่ดียิ่งขึ้น
นอกจากนี้เรายังได้สร้างแบบจำลองทางกายภาพดังนั้น พยายามที่จะคิดเกี่ยวกับฟิสิกส์
และ psychoacoustics ของสิ่งที่ต้องการ แตรและคิดเกี่ยวกับวิธีการ
เสียงที่ใหญ่ปิด ระฆังแตร
และอะคูสติกของ ห้องพักและการสร้างแบบจำลอง
ว่าด้วยการ oscillators พื้นฐาน
CONNOR HARRIS: ขอบคุณมาก
ขอบคุณที่มา.
และผมยินดีเสมอที่จะ โดยใช้คำถาม email--
connorharris@college.harvard.edu
>> สตีเฟน KREWSON: ใช่ stephen.krewson@yale.edu
เย็น.