CONNOR हैरिस: हाय। मैं धक्का देकर हैरिस हूँ। मैं हार्वर्ड में एक CS50 सीए कर रहा हूँ। स्टीफन KREWSON: मैं स्टीफन Krewson हूँ। मैं येल में CS50 के लिए एक टीएफ हूँ। CONNOR हैरिस: और हम बात करने जा रहे हैं कुछ तकनीकों के बारे में है कि तुम हो सकता है अगर आप रुचि रखते उपयोग करना चाहते हैं एक अंतिम परियोजना पूरी करने में या सच संगीत के साथ कुछ भी। हम पहले एक पर ध्यान केंद्रित करने जा रहे हैं हास्केल बुलाया प्रोग्रामिंग भाषा। यह एक कार्यात्मक है भाषा, इसलिए प्रतिमान सी या पीएचपी से बहुत अलग है या अन्य जरूरी भाषाओं कि आप पहले से ही उपयोग किया जाता है, और विशेष रूप से दिया है हास्केल में लिखा एक पुस्तकालय पर लोगों की मदद कर सकते हैं, जो Euterpea बुलाया कार्यात्मक संगीत लेखन के साथ, मूल रूप से। और स्टीफन से चलना होगा इस बात का एक बड़ा उदाहरण के माध्यम से। इस के बाद, मैं तुम से मिलवा देंगे LillyPond बुलाया कुछ है, जो टाइप बैठना संगीत के लिए एक तकनीक है। यह एक तरह से लेटेक्स की तरह है संगीत के लिए आप में से यदि कोई हो गणित की कक्षाओं के लिए लेटेक्स का इस्तेमाल किया है या अन्य पी सेट वर्ग या तुम क्या है। और इसलिए मैं फिर से, आप दे देंगे, उस के कुछ सरल उदाहरण और सामान्य में बात कुछ बेहतर संसाधनों की दिशा। स्टीफन KREWSON: में इसके अलावा, हम यह सोचा स्थापित करने के लिए शांत हो जाएगा संकेत का एक छोटा सा के बीच एक पाइप लाइन की ओर Euterpea जनित मिडी फ़ाइलों LillyPond में है, इसलिए हम प्रदान स्क्रिप्ट पर कुछ अनुदेश हैं कि ऐसा करने के लिए LillyPond के साथ प्रदान की सिर्फ यह खुला स्रोत रखने के लिए और जा रहा है एक पाइपलाइन मिलता है। CONNOR हैरिस: फिर, हम, पर जोर देना चाहिए इन दो प्रौद्योगिकियों, आप उन्हें एक साथ उपयोग करने के लिए नहीं है। वे काम करने के लिए तैयार नहीं कर रहे हैं एक साथ, हालांकि वे बहुत अच्छी तरह से करते हैं। स्टीफन KREWSON: ठीक है। और पूरी तरह से मुक्त। CONNOR हैरिस: तो स्वीकृतियां, सिर्फ इतना है कि पढ़ा। स्टीफन KREWSON: विधिवत उल्लेख किया। उन लोगों के लिए धन्यवाद। यह मैं बस एक पल के लिए पर अभी भी ताजा करेंगे। स्थापना प्रक्रिया थोड़ा मुश्किल है। हम एक GitHub पर मुझे पढ़ा है आप पर एक नज़र ले जा सकते हैं। आप किसी भी प्रश्न हैं, बस मुझे ईमेल। लेकिन हम इस धारणा के तहत इस भाग लेंगे मतलब यह है कि हर किसी के लिए काम कर रहा है। CONNOR हैरिस: और अगर तुम नहीं कर सकते LillyPond, कोई बड़ी बात नहीं काम करने के लिए मिलता है। कोई लाइव संकलन नहीं है कि कम से कम अपने अंत पर, शामिल किया जाएगा। स्टीफन KREWSON: हास्केल और LillyPond दोनों installers होनी चाहिए। Euterpea एक के रूप में डाउनलोड किया जाता है पैकेज, इतने पर और आगे। इसलिए हम कंप्यूटर संगीत के बारे में बात कर रहे हैं। और यह सिर्फ एक है बहुत 50,000 फुट देखें। इसके बारे में कुछ अलग पहलू है। और यह किसी न किसी तरह है और है कुछ विस्तार से अस्पष्ट करने के लिए जा रहा है। लेकिन हम कुछ सोच भी नहीं सकते एल्गोरिथम रचना की तरह है, एल्गोरिदम का उपयोग, उत्पन्न करने के लिए, कोड का उपयोग कुछ प्रकार of-- शायद एक स्व-समान नोट्स, या शायद नोटों के अनुक्रम कुछ बाधा के तहत। और फिर उन हो सकता है प्रदर्शन या व्याख्या एनालॉग उपकरणों के साथ या ऐसा कुछ। लेकिन रचना था एल्गोरिदम किया। लेकिन ज़ाहिर की है, हो सकता क्षेत्र कंप्यूटर संगीत या डिजिटल संगीत हम डिजिटल है साथ अधिक परिचित हो ध्वनि संश्लेषण या डिजिटल नमूने और डिजिटल रिकॉर्डिंग। डिजिटल उपकरणों की एक बहुत हैं डिजिटल नमूने के माध्यम से किया। वास्तव में, हम में से उन में से एक का उपयोग कर सकता हूँ बाद में एक ध्वनि फ़ॉन्ट पुस्तकालय के रूप में। लेकिन वहाँ भी कुछ कहा जाता है बाहर आया था कि डिजिटल संश्लेषण देर से 70 के दशक में और 'के साथ 80 के दशक स्टैनफोर्ड में यामाहा और जॉन Chowning एफएम संश्लेषण कर रही है या आवृत्ति मॉडुलन संश्लेषण, जहां आप एक वाहक था संकेत और एक modulating संकेत दोनों ऑडियो स्पेक्ट्रम में। लेकिन हम पर ध्यान केंद्रित कर रहे हैं क्या आज, मिडी बुलाया कुछ है और जाहिर है, एल्गोरिथम रचना। हम उपकरणों बनाने जा रही है, लेकिन नहीं कर रहे हैं हम बजाय कुछ संगीत बनाने जा रहे हैं, और फिर उस व्याख्या हो जाएगी कुछ उपकरणों से कि करने के लिए अनुरूप हैं जनरल मिडी मानक। तो मिडी क्या है? मैं भी गहरी इसे पाने के लिए नहीं जा रहा हूँ लेकिन मिडी डेटा ट्रांसफर प्रोटोकॉल है। इसे भर में एक गाइड का एक प्रकार है विभिन्न कंपनियों और उद्योगों लगता है या पैच के आयोजन के लिए। तो हम देखेंगे कि एक मिडी मानक नहीं है सभी विभिन्न टक्कर के लिए लगता है और मिडी सिफारिशें synth के सभी विभिन्न प्रकार के लिए या सभी उपकरण के विभिन्न प्रकार एक ऑर्केस्ट्रा में समूहों, कहते हैं। तुम्हें शायद के साथ परिचित हो 0 के माध्यम से 127 मिडी संदेश। एक मिडी संकेत आम तौर पर है यह दर्शाता है एक बिट यह एक एक डेटा या है कि क्या स्थिति पैकेट, और फिर वहाँ है एक संकेत के सात बिट्स। और इन पर नियंत्रण कर सकते हैं मात्रा से सब कुछ कार्रवाई या दबाव को एक विशेष कुंजी पर आप एक मिडी के साथ प्रदर्शन कर रहे हैं नियंत्रक के रूप में अच्छी तरह के रूप में, ज़ाहिर है, नोटों। और हां, मिडी है , बेहद उपयोगी यह तार करने का एक तरीका है, क्योंकि एक साथ या डेज़ी श्रृंखला मिडी हार्डवेयर उपकरणों का एक गुच्छा। मैं अपने घर में सात या आठ वापस है। यह वास्तव में, जटिल हो जाता है लेकिन यह वास्तव में शक्तिशाली है। और यह सच पुराना है। यह 80 के दशक से है, और यह वास्तव में अच्छा है और छोटा है। CONNOR हैरिस: हाँ। सभी क्लासिक Nintendo वीडियो गेम शायद होगा उदाहरण के लिए संगीत के लिए मिडी फ़ाइलों को दिया है। स्टीफन KREWSON: यहाँ एक है जनरल मिडी का उदाहरण है, एक प्रकार के रूप मिडी दिखा सामान्य प्रोटोकॉल की। और मुझे लगता है कि हम के बारे में सोच सकते हैं लगता है विनिर्देश के बीच का अंतर वहाँ ऐसा कुछ होना चाहिए कि इन साधन वास्तविक लगता है और उन उपकरणों की प्राप्ति लगता है एक ध्वनि फ़ॉन्ट या एक विशेष मिडी में अंतर होने के रूप में सिंथेसाइज़र जो कहते हैं, हो सकता है एक typeface-- के बीच, सामान्य रूप में, इस के डिजाइन है इस खास तरह का प्रतिनिधित्व करने के लिए characters-- और एक विशेष फ़ॉन्ट कि, एक विशिष्ट आकार और लय है और the-- की प्राप्ति भी नहीं है CONNOR हैरिस: हो सकता है कि एक बेहतर तुलना होगा होना यूनिकोड मानक यह देता है says-- एक हर चरित्र के लिए संख्या है, और वास्तव में दुनिया में हर भाषा, या भाषा की स्क्रिप्ट का एक विशाल सेट दुनिया में, और उसके बाद उन लोगों के हैं कुछ चित्रमय में प्रदान की गई विभिन्न फ़ॉन्ट संकुल द्वारा। और जाहिर है, आप सोच सकते हैं ध्वनि की यूनिकोड के रूप में मिडी। और यह एक बड़ा धारा of-- सिर्फ एक सूची है घटनाओं और उपकरणों और whatnot की, और आपको एक अलग के लिए है कार्यक्रम, एक टाइपफेस की तरह, में है कि प्रस्तुत करने के लिए सुनाई देती है कि कुछ और। स्टीफन KREWSON: तो क्यों हास्केल? हास्केल एक कार्यात्मक प्रोग्रामिंग है बहुत ही उन्नत भाषा, सी से बहुत अलग है, पीएचपी से बहुत अलग है। और हम एक यह है कि वहाँ देखने के लिए जा रहे हैं हास्केल में समारोह रचना की आसानी कि हमें के माध्यम से हवा करने की अनुमति देगा transcribing, रचना या टाइपिंग, Frere जैक्स तरह कुछ है, इस साधारण गीत है कि इसे में भागों का एक बहुत है कि स्व-समान या दोहरा रहे हैं। तो क्या इस से कुछ हो जाएगा क्यों के लिए प्रेरणा हम हास्केल का उपयोग कर रहे हैं, जिसमें कार्यों प्रथम श्रेणी के नागरिक हैं। और मैं विस्तार करना चाहता था यह एक छोटा सा। यह करने के लिए एक छोटा सा आसान है हास्केल में Frere जैक्स notate। लेकिन हम चाहते थे, तो क्या यह करने के लिए एक ड्रम हिस्सा जोड़ सकते हैं? हम बनाने के लिए कोशिश करना चाहता है, तो क्या एक रोलाण्ड 808 या 909 ड्रम की तरह कुछ तुम्हारे पास है, जहां मशीन के बारे में 16 विभिन्न चरणों? आमतौर पर इन कर रहे हैं के रूप में 16 वीं नोटों के बारे में सोचा। और अगर आप वैश्विक नियंत्रित कर सकते हैं टेम्पो, और आप बाहर ले सकते हैं विभिन्न टक्कर भागों का एक गुच्छा बास ड्रम की, एक ताली, अलग फन्दे, खुले और बंद उच्च टोपी चैनलों के इन प्रकार पर, और फिर आप EQ कर सकते हैं या उनकी मात्रा समायोजित करें। और हम एक अच्छी तरह से देखेंगे इस कदम का प्रतिनिधित्व करने का हास्केल सभी के साथ Sequencer हास्केल में विभिन्न ठंडी चीजें हम पैदा करने के साथ क्या कर सकते हैं सूची पर सूचियों और छानने, सूची पर मानचित्रण, मानचित्रण सूची पर कार्य करता है। और एक त्वरित माफी। यह एक बहुत ही सरसरी है और पीढ़ी त्वरित स्केच पहलुओं में से कुछ की हास्केल और Euterpea की, एक डोमेन विशिष्ट जो है एम्बेडेड भाषा में लिखा संगीत प्रकार के लिए हास्केल में। ऑनलाइन तो कोड की जांच करो। ग्लासगो है जो ऊपर फायर GHCI, हास्केल संकलक दुभाषिया। और मैं कुछ कर रही हो जाएगा एक छोटा सा में इस बात का तो आप यह कैसे किया है देख सकते हैं। और यह तुम्हारे साथ में लोड करने के लिए अनुमति देता है the-- वाक्य रचना तो पेट के और है आदेश। आप फाइलों में लोड कर सकते हैं। आप उन फ़ाइलों पर ब्राउज़ उपयोग कर सकते हैं सभी कार्यों को देखने के लिए कि एक विशेष मॉड्यूल में मौजूद हैं। और हम, प्रकार और प्रकार देखेंगे तब के रूप में कक्षाएं, हास्केल में बहुत महत्वपूर्ण हैं ताकि आप हमेशा विशेष रूप से check-- कर सकते हैं आप एक नया डीएससीएल में काम कर रहे हैं इस तरह, एक संगीत प्रकार क्या है? मैं जिस तरह से सांख्यिक के बारे में पता प्रकार, हास्केल में काम लेकिन मैं संगीत के बारे में ज्यादा पता नहीं है। लेकिन अगर आप वे कर रहे हैं जिस तरह से तलाश कर सकते हैं इस टी या प्रकार आदेश का उपयोग करके परिभाषित और फिर एक विशेष रूप से बुला समारोह या एक डेटा वस्तु। CONNOR हैरिस: हाँ। आप सी और बजना सोचा प्रकार के बारे में hardass था, आप हास्केल के बारे में पता नहीं है। हास्केल के बारे में अच्छी बात यह है कि आप संकलन करने के लिए अपने कोड प्राप्त कर सकते हैं और हास्केल प्रकार की जाँच करता है, तो यह शायद सही है प्रकार की प्रणाली इतनी सख्त है। स्टीफन KREWSON: हाँ। तो मैं बस जाना चाहता हूँ फिर through-- और, इस इसके बारे में कुछ justice-- नहीं कर रही है हास्केल की सुविधाओं, कि कम से कम इसकी creators-- करने के लिए और इसे बनाया गया था लोगों का एक समूह द्वारा 1980 के दशक में, के बारे में 20 की एक समिति people-- महत्वपूर्ण थे। और पहली बात यह है कि वे एक समाचार पत्र में सूचीबद्ध कि हास्केल की उत्पत्ति का वर्णन किया पहले 20 या इतने वर्षों यह आलसी था। अच्छा तो इसका क्या मतलब है? हम किसी तरह का है, जब ठीक है, इसका मतलब यह है अभिव्यक्ति की है, हम यह मूल्यांकन करने की जरूरत है। और Haskell एक कॉल में इस करता है जरूरत है जिस तरह या एक गैर सख्त माध्यम से। हम का एक गुच्छा है, तो यही है, हमारी अभिव्यक्ति के घटकों, हम मूल्यांकन में देरी करने की कोशिश उन उपघटक की निरपेक्ष अंतिम minute-- तक हम वास्तव में उन्हें जरूरत है जब तक कि है। इसलिए इस means-- है जो वास्तव में अच्छा है, खासकर हम अमूर्त के बारे में सोच रहे हैं एक संगीत कदम sequencer की। आप यह मोड़ पर है, और आप शुरू एक कदम sequence-- चल क्या तुमने कभी एक ड्रम के साथ काम किया है, तो machine-- और यह सिर्फ हमेशा के लिए चला जाता है। तो यह है कि हम वास्तव में अगर अच्छा होगा हास्केल में उस का अनुकरण कर सकता है। और हम अनंत साथ कर सकते हैं मूल्यों, विशेष रूप से अनंत सूचियों में। यह एक टाइप करने के लिए बहुत आसान है हास्केल में अनंत की सूची। तुम बस नीचे सिंटैक्स का उपयोग कर सकता है यहाँ, आप 1 से 3 को देख जहां, 3 1 डॉट डॉट को हटाने, और कि एक अनंत सूची है सभी प्राकृतिक संख्या का विस्तार जहाँ तक आप कल्पना कर सकते हैं पर। मैं एक परिचय कराना चाहता हूँ सही दूर परतों की अवधारणा। और फिर, उद्देश्य इस संगोष्ठी में नहीं है की हास्केल में परतों के बारे में जानने के लिए या उच्च आदेश कार्य करता है। लेकिन मैं सिर्फ करने के लिए इसे लागू करना चाहते हैं कैसे अजीब का सही भावना दे हास्केल है और कैसे शक्तिशाली यह है। और विशेष रूप से, हम be-- लिए जा रहे हैं हम अपने अलग अलग ड्रम भागों करते हैं, हम की सूची में हेर-फेर करने जा रहे हैं नंबर, एक-दूसरे पर उन्हें तह। ऐसा करने के लिए और, हम करेंगे नक्शे और परतों का उपयोग किया। एक सही साहचर्य नहीं है यह एक सही है, जो गुना here-- शून्य से 1 मात्रा, 2 शून्य मात्रा, 3 शून्य से 0। और एक के लिए वाक्य रचना गुना, आप एक गुना देना एक आधार मूल्य और फिर एक operation-- इस मामले में, इसके अलावा या घटाव में। मैं दोनों ही मामलों दिखाया गया है। और फिर एक संचायक है कि वहाँ पूरे सूची पर जम जाता है, कि ऑपरेटर के साथ साथ लागू करने या शून्य, और फिर इसे जमते। यह कहा जाता था तो अगर इस the-- होगी गुना आर प्लस 0 से साथ, 0 के साथ शुरू हम तो सभी योग होता उस सूची में संख्या। और कहा कि 1-3 एक सूची है। CONNOR हैरिस: तो यह एक और डाल करने के लिए रास्ता, गुना आर तीन तर्क लेता है। एक समारोह है कि वहाँ खुद को दो तर्क लेता है, फिर एक स्टार्टर मूल्य नहीं है, और मूल्यों की एक सूची है। और तुम क्या तुम ले लो स्टार्टर मूल्य, पहले मान, समारोह में डाल दिया। आप क्या बाहर मिलता है कि, चारा ले कि के समारोह में दूसरा मूल्य, तुम बाहर क्या हो, ले कि, में है कि फ़ीड तीसरे मूल्य का कार्य करते हैं। और फिर आप नीचे जाना है, तो इस पूरी सूची इस तरह से, आप अंततः पाने के लिए जा रहे हैं है कि कुछ विलक्षण मूल्य आप क्या शुरू की इसी प्रकार की साथ बाहर और एक ही प्रकार की तब सूची में बातें करते हैं, और के रूप में कि गुना आर की वापसी के परिणाम स्टीफन KREWSON: विशेष रूप से तो, इन उच्च आदेश कार्य कर रहे हैं, वे एक और ले जा रहे हैं, क्योंकि तर्क के रूप में कार्य करते हैं। CONNOR हैरिस: हाँ। आप कुछ अन्य का इस्तेमाल किया गया है languages-- मैं आर पता है, [सुनाई] भाषा में कमी कहा जाता है, यह है। आप समान कार्य हो सकता है अन्य भाषाओं में, बस बुलाया अलग अलग बातें। स्टीफन KREWSON: और क्या गुना आर के बारे में अच्छा है इस उदाहरण में है कि गुना है आर अनंत सूचियों के साथ काम कर सकते हैं। यह नीचे में, यह पी -5 तो नोटों पैदा कर रहा है कि के लिए कदम sequencer में चालू हैं कुछ हिस्सा ड्रम, पांचवां हिस्सा ड्रम, और शायद यह एक conga है ड्रम या कुछ और। और यह एक जानबूझकर है इस लेखन के कुंठित तरह से, लेकिन इसकी वजह यह मजेदार है, यह एक बहुत दर्शाता हास्केल और Euterpea के बारे में बातें की। इसलिए इस colon-- पेट के आर गुना चीजों को धक्का लगता है कि सिर्फ एक ऑपरेटर एक साथ एक खाली पर बुलाया एक list-- पर बस खाली कोष्ठक है जो सूची। और मुझे लगता है कि बुला रहा हूँ इस अनंत सूची पर। यह वास्तव में दो सूचियों है यहाँ नीचे एक साथ जोड़ा गया। सूची 1 अल्पविराम 6 डॉट डॉट 1, 6, 11, 16 है। बस में तो Haskell-- कुछ वर्ण, आप पूरे उत्पन्न कर सकते हैं संख्या के अनुक्रम पांच नंबर के अलावा हैं कि अनंत में पर खींच रहा है। और मुझे लगता है कि करने के लिए पहले जोड़ें इस छोटी छोटी list-- 3, 8, 21-- सिर्फ तुम्हें दिखाने के लिए कैसे आप सूचियों जुटना कर सकते हैं। और फिर मैं खुद पर मुड़ा हुआ है। और यह सिर्फ का एक प्रकार समाप्त होता जा रहा पहचान आपरेशन, लेकिन यह अनंत है। और, आर कर सकते हैं कि गुना इसकी वजह यह lazily ऊपर, के रूप में मूल्यांकन करता है। हम एक 1 और 2 और 3 है, तो हम कर सकते हैं अभी इसके बारे में पूरी बाकी बंद ब्रैकेट। उस के लिए काम नहीं करेगा शून्य या अधिक है, लेकिन यह इस पेट के लिए काम करेंगे सूची पर पहचान आपरेशन। तो कैसे हम व्यावहारिक रूप से प्रयोग करते हैं कि यदि हम चीजों की एक असीम लंबी सूची है? खैर, हास्केल प्रदान करता है functions-- का एक बहुत और इन में और अधिक देखने लेने के लिए इस तरह के रूप में अपने खुद time-- जो ठीक है, हम कर रहे हैं, कहते हैं, इस अनंत सूची पैदा करने, लेकिन हम सिर्फ कुछ लेने के लिए जा रहे हैं इसके बारे में और इस case-- में नंबर हम बाद में इस देखेंगे हमारे मशीन ड्रम code-- जीएम वैश्विक के कुछ प्रकार है चरणों की संख्या के लिए चर sequencer में। रोल में मशीनों पर मैं , कि आम तौर पर 16 है, तुम से पता चला लेकिन मैं 32 के साथ इसे लागू कर दिया है। यह वास्तव में कोई फर्क नहीं पड़ता। हास्केल भी शुद्ध है, तो यह मजबूत है धक्का देकर के लिए alluded कि स्थिर टाइपिंग। तो कार्य कर रहे हैं sense-- में गणितीय वे और अधिक गणितीय रहे वे गारंटी हो कि उपयोग या किसी भी तरह का बदलाव नहीं करने के लिए या चर इनपुट या उत्पादन करते हैं। आप एक समारोह है, तो यह निर्धारक है। यह हमेशा एक ही वापस आ जाएगी कार्यक्रम के राज्य में मूल्य या ही रहते हैं। Monadic अपवाद है, ज़ाहिर है, कर रहे हैं यह करने के लिए, लेकिन लगता है कि हमारे दायरे से परे है। CONNOR हैरिस: हाँ। क्या इसका मतलब यह है, हालांकि, वहाँ हैं कुछ महत्वपूर्ण [सुनाई] इस का परिणाम हैं। एक यह बहुत आसान है कि है हास्केल कार्यक्रमों parallelize। अगर आपके पास है, इसलिए , इस बात का एक समारोह का कहना है यदि एक लाख मूल्यों पर काम करने की जरूरत है आपको लगता है कि समारोह हमेशा होगा पता एक ही मूल्य है, तो बाहर दे आप एक निश्चित value-- पर फ़ीड आप में से एफ, [सुनाई] एफ 1 का कर रहे हैं 2, तो च के 3 या 1 च whatnot-- लिखने के लिए बाहर नहीं जा रहा है एक फाइल करने के लिए या कुछ करना कि F2 का मूल्य बदल जाएगा। तुम सिर्फ एक करने के लिए इस समारोह में विभाजित कर सकते हैं लाख विभिन्न मशीनों या एक लाख अलग धागे या जो कुछ भी, वापस सभी की प्रतिक्रियाएं मिल, सभी वापसी मान प्राप्त पीठ, और फिर यह बात है। बातें parallelize करने के लिए तो बहुत आसान है। नकारात्मक पक्ष यह है कि इनपुट है और उत्पादन में विशेष रूप से प्रकार की प्रणाली में फिट बहुत जटिल तरीके में। हम अब लगता है कि सही में जाना है, लेकिन मैं नहीं होंगे कुछ संसाधनों को देखने के लिए प्रोत्साहित करते हैं ऑनलाइन आप उस के बारे में जानने के लिए चाहते हैं। स्टीफन KREWSON: तो टाइप classes-- और इस प्रकार के was-- कक्षाएं हल करने के लिए आविष्कार किया गया ऑपरेटर ओवरलोडिंग की समस्या है। इसलिए हम समानता है चाहता था चीजों के विभिन्न प्रकार के बीच। बेशक, हम of-- सोच भी नहीं सकते न्यूमेरिक प्रकार के बीच समानता के बारे में सोचने के लिए बहुत आसान है, लेकिन क्या सूचियों के बीच समानता के बारे में? के बीच समानता के बारे में क्या पेड़ पैर डेटा संरचनाओं? और इस में सब संभव है हास्केल प्रकार वर्गों की वजह से। तो आप एक निश्चित डेटा type-- को परिभाषित करता है, तो और यहाँ, इन संगीत पिचों हैं। हम अंत में हो रही है कुछ कंप्यूटर संगीत के लिए। इसलिए हम सी, सी तेज है, इत्यादि इत्यादि। वे का एक गुच्छा के हैं विभिन्न प्रकार के वर्गों। EQ-- वे ईक्यू प्रकार वर्ग के हैं। यही कारण है कि वे समर्थन का मतलब समानता आपरेशनों। तो अगर आप एक मूल्यांकन क्या कर सकते हैं संगीतमय पुरातन के अनुक्रम एक अलग से एक के रूप में ही है। वे क्रमसूचक वर्ग के हैं। यही कारण है कि एक आदेश इन करने के लिए नहीं है इसका मतलब। डी सी सी तेज बाद आता है के रूप में अच्छी तरह से सी के बाद आता है। वे वर्ग के हैं वे कर सकते हैं, जिसका मतलब है दिखाने एक सांत्वना या टर्मिनल के लिए मुद्रित किया। वे के हैं वर्ग गिनाए, जो इसका मतलब है कि भले ही इन पात्रों हैं, वे एक अंतर्निहित संख्यात्मक है 0 से शुरू प्रतिनिधित्व और फिर भी माध्यम से बंद रहा बहुत सी बातें यहाँ हैं, 20 या तो, या शायद 30 या 40,। CONNOR हैरिस: और जब हम एक डेटा प्रकार है कि उस कीवर्ड के साथ derives-- "Deriving--" एक खास प्रकार वर्ग, यह संकलक की कोशिश करेंगे कि इसका मतलब है स्वचालित रूप से कुछ का निर्माण करने के लिए। इसलिए हो सकता है आप के लिए चाहता हूँ अलग ढंग से एक गुणवत्ता को परिभाषित। आप तेज सी परिभाषित करने के लिए चाहता हूँ उदाहरण के लिए, डी फ्लैट के बराबर है। इस निर्माण के साथ यहाँ, मैं सी तेज नहीं लगता और डी फ्लैट, क्योंकि बराबर होगा संकलक स्वचालित रूप से होगा हर अलग संभव मूल्य का कहना है हर दूसरे से अलग है। तो यह ओवरराइड करने के लिए संभव है डिफ़ॉल्ट कार्यान्वयन वर्गों के इन प्रकार के। फिर, संदर्भ यदि को देखो आप इस बारे में जानने के लिए चाहते हैं। स्टीफन KREWSON: और यहाँ, वास्तव में, इस करेंगे हम बाद में कोड के लिए जब सहायक हो। हम इन्फ़िक्स ऑपरेटरों में से कुछ देखने अनुक्रमिक संरचना के लिए, समानांतर संरचना, और इसलिए आगे, इन pluses और समान लक्षण कॉलन से घिरा हुआ है। यही कारण है कि हम इन विभिन्न खेल सकते हैं इसका मतलब संगीतमय पुरातन एक के बाद एक। यही कारण है कि अनुक्रमिक संरचना है। या फिर हम में उन्हें खेल सकते हैं एक ही समय में समानांतर। तो मैं एक संगीत मूल्य हो सकता है, और फिर इस, के बराबर होती है और कोलन समानांतर रचना ऑपरेटर इन्फ़िक्स और राग का एक प्रकार के रूप में उन्हें खेलते हैं। और हम का उपयोग करने के लिए जा रहे हैं इस जब हम गठबंधन साथ हमारे ड्रम हिस्सा हमारे थोड़ा Frere जैक्स गीत के इन दो दृश्यों खेलने के लिए एक ही समय में संगीत मूल्यों। है- करी Currying पिछले था हास्केल करी के नाम कौन हास्केल की छवि के नाम पर है। और यह हमें एक की अनुमति देता है हम कर रहे हैं जब अच्छा लालित्य इन सभी विभिन्न लेखन कार्य या हम कर रहे हैं कि फिल्टर हमारी सूची पर मानचित्रण होने जा रहा। दो के एक समारोह एक्स और y-- की च arguments-- के रूप में प्रतिनिधित्व किया जा सकता एक्स के एफ y के लिए आवेदन किया। इसलिए इसके बारे में एक समारोह है रिटर्न कि एक तर्क एक तर्क का एक अन्य समारोह। तो यह है कि हम एक नक्शा कर सकते हैं इसका मतलब Y की सूची पर एक्स के समारोह च। CONNOR हैरिस: करना चाहते हैं इस का एक उदाहरण दे सकते हैं? स्टीफन KREWSON: हाँ। मैं यहीं से एक उदाहरण है हम लिखेंगे चीजों में से कुछ। तो दोहराने 2-- अच्छी तरह से, ले जाएगा दोहराने कितने है जो एक मूल्य है, कई बार कुछ दोहराने के लिए, और फिर इसे एक value-- ले जाएगा आम तौर पर एक सूची या कुछ और। यहाँ तो, हम मानचित्रण रहे एक और सूची पर 2 को दोहराने। हम 2 को दोहराने के लिए नक्शे यदि हां, तो हम 2 दोहराने यदि लागू इस list-- के पहले तत्व के और इन संगीत phrases-- की सूची रहे हैं के दो उत्पादन होगा "आप sleeping--" इसलिए आप सो रहे हैं, तो आप सो रहे हैं। तो अब हम दो है। लेकिन दोहराने दो लेता है तर्क है, लेकिन हम कर रहे हैं, क्योंकि मानचित्रण तो currying और, हम दोहराने 2 प्रतिनिधित्व कर सकते हैं के एक समारोह के रूप में वापस आ गया के रूप में एक argument-- सिर्फ दो बार नकल। और फिर हम एक करने के लिए कि आवेदन कर रहे हैं मुहावरों की इस सूची के तत्व। और concat एक हास्केल है एक सूची सपाट करने के लिए आपरेशन। दोहराने 2 जाएगा, क्योंकि सूची की एक सूची का उत्पादन। और यह इस मध्यवर्ती रूप में यहाँ है। और इतना तो हम concat कर सकते हैं या दो बार लगता है कि बाहर समतल। CONNOR हैरिस: एक सरल currying का उदाहरण है, आप like-- चाहते हैं, तो च सिर्फ एक कल्पना दो लेता है कि गुणा समारोह तर्क और अपने उत्पाद को लौटाता है। आप एक एफ 4 5 है, तो यह 20 है। लेकिन आप के रूप में इस के बारे में सोच सकते हैं also-- आप एक समारोह च 4 है एक तर्क है कि और रिटर्न लेता है यह सिर्फ argument-- चार बार आंशिक आवेदन जो सिर्फ एक ही तर्क 4। और आप 4 की च फ़ीड 5, कि आप 20 दे देंगे। और कहा कि एक आसान है currying का उदाहरण है। यह आमतौर पर पाठ्यपुस्तक लोगों में से एक है। स्टीफन KREWSON: लैम्ब्डा भाव या गुमनाम कार्यों एक और हास्केल पहचान कर रहे हैं। हम एक कोड़ा की जरूरत है तो अगर थोड़ा समारोह जीवन को दोहराने, लेकिन यह नहीं है कहना मानक पुस्तकालय, हम एक सिंटैक्स का उपयोग कर सकते हैं निम्नलिखित के समान है। और हम इस पर हवा हूँ। आप में से एक बहुत देखेंगे एक बात मशीन ड्रम हम फोन कर रहे है कुछ करने के लिए बुलाया जो पहले की तरह, फिल्टर, एक समारोह के एक मानचित्रण है एक सूची से अधिक है, लेकिन यह है एक बूलियन समारोह के एक मानचित्रण। तो हम यहाँ एक उदाहरण है की एक गुमनाम परिभाषित बूलियन समारोह कि सिर्फ एक जोड़े को मान लेता है। यह सच पूछिये तो नहीं है एक गुमनाम समारोह। लेकिन इसके साथ परिभाषित है संक्षिप्तता के लिए है कि वाक्य रचना, और यह सिर्फ एक्स मॉड्यूल लेता N-- CONNOR हैरिस: हाँ। इसलिए एफ के एक समारोह है दो तर्क और एन पी वह अपने आप है कि एक समारोह रिटर्न एक तर्क के एक समारोह है, अर्थात् x। स्टीफन KREWSON: मैं उल्लेख इन्फ़िक्स ऑपरेटरों। इन्फ़िक्स ऑपरेटरों क्या हैं? खैर, इन्फ़िक्स ऑपरेटरों रहे हम संचालन प्रतिनिधित्व सामान्य तरीके से, mathematics-- 2 प्लस में कहते हैं, बजाय ऑपरेटर के 2 प्लस और फिर दो तर्क 2 और 2। CONNOR हैरिस: यह कहा जाता है जो है, पोलिश संकेतन रिवर्स एक शब्द मैं आप में से किसी को पता होगा शक है। स्टीफन KREWSON: ठीक है। पॉलिश या उपसर्ग संकेतन उल्टा। लेकिन हास्केल का फैसला इन्फ़िक्स ऑपरेटरों का उपयोग करें। तो इनमें से कुछ हैं कस्टम वालों कि के लिए परिभाषित कर रहे हैं हास्केल में Euterpea डीएससीएल। इसलिए इस अनुक्रमिक रचना थी। इस समानांतर रचना था, और इस समानांतर रचना छोटा था। और हम उस की आवश्यकता होगी हमारे ड्रम मशीन के साथ, हम पिछले इस्तेमाल करेंगे क्योंकि वहाँ उस छोटे टपल में ऑपरेटर साथ मशीन ड्रम खेलने के लिए हमारे Frere जैक्स गीत के साथ। और हमारे ड्रम मशीन है अनंत होने जा रहा। यह बस हमेशा के लिए खेलता है। लेकिन Frere जैक्स गीत नहीं है। ऐसा लगता है कि लंबे समय नहीं है। यह केवल कुछ ही सलाखों है। इसलिए हम के रूप में ढोल मशीन रोकने की जरूरत है छोटे कद के संगीतमय मूल्य आता है जल्द ही के रूप में एक समाप्ति के लिए। और कहा कि infixed ऑपरेटर उस के साथ सुपर उपयोगी है। जैसे और इन्फ़िक्स संकेतन इस तरह का है अच्छा है का कहना है कि क्योंकि आप एक समारोह की तरह है बोली, जो पूर्णांक विभाजन देता है कुछ ने एक्स के else-- क्षमा करें, कि एक और ख होना चाहिए। आप बी के एक बोली के रूप में यह लिख सकता है। आप put-- तत्व है तो अगर इस बात का एक और उदाहरण है। कुछ सूची में एक्स तत्व, तुम डाल यह Backticks में, आप इसका इस्तेमाल कर सकते हैं। यह एक प्रतीक नहीं है, भले ही प्लस या माइनस या बार की तरह, आप एक के नाम का उपयोग कर सकते हैं Backticks में ऐसा समारोह जो बहुत अच्छा है इन्फ़िक्स ऑपरेटर के रूप में। CONNOR हैरिस: फिर, यह है सब सिर्फ वाक्यात्मक चीनी, वास्तव में। यह भाषा का मूल प्रभावित नहीं करता। स्टीफन KREWSON: तो हम के लिए यहाँ देखें हमारे Frere जैक्स गीत के अंतिम वाक्यांश, मैं कुछ छोटी chords खेला या समानांतर संरचना का उपयोग कर तिहाई ऑपरेटर। यह कुछ कहने का एक और तरीका है हम तो बस क्या कह रहा हूँ की। तो अगर आप कार्यों नक्शा कर सकते हैं सूची पर एक बहस के। CONNOR हैरिस: फिर, संदर्भों Haskell-- परिचयात्मक पाठ्यपुस्तकों के लिए उस में यह सब होगा। स्टीफन KREWSON: तो यहाँ एक सुंदर है कदम sequencer की कुंजी लाइन हम प्रयोग पर एक नज़र रखेंगे एक सूची समझ। और हम यहाँ उस तत्व है देखते हैं वापस उद्धरण में निश्चित ऑपरेटर में। एक्स की सूची का एक तत्व है तो अगर एक्स की, तो हम PERC कार्यों को फोन करता हूँ। तो PERC सिर्फ एक टक्कर समारोह है। ऐसा लगता है कि कुछ मूल्य पी लेता है सभी की घिरा सेट का हिस्सा विभिन्न टक्कर ध्वनियों हम पिछले एक स्लाइड में देखा था कि, और फिर यह कि देता है एक चौथाई नोट की अवधि। वरना यह है कि यह एक QNR देता है, और QNR सिर्फ एक चौथाई नोट बाकी है। तो यह कुछ अच्छा का निर्माण होता है। हम तत्वों की एक सूची है, और एक से कुछ की सूची पर हम करेंगे पाश हमारे कदम sequencer का अधिकतम मूल्य के लिए। और हम एक विशेष मैं में कम कर रहे हैं जब अधिकतम मूल्य के लिए एक की उस सूची, कि मैं इस का एक सदस्य है इस समारोह में बनाए गए सेट, ठीक है, तो हम इसे बारी एक टक्कर नोट में। अन्यथा, हम सिर्फ एक बाकी है, कौन-सा खेल है कि हम सिर्फ मूक बने हुए हैं, कहने के लिए। और हम यहाँ देखने में लगता है कि कर सकते हैं इस सूची समझ वाक्य रचना, एक्स इस की आबादी है सूची से एक का निर्माण Sequencer के वैश्विक आकार के लिए। CONNOR हैरिस: हाँ। के लिए बुनियादी वाक्यविन्यास सूची comprehensions है शामिल ब्रैकेट, मूल्य कुछ चर, बार, चर के संभावित मान खुद को, ब्रैकेट बंद हुआ। और आप सेट बिल्डर के अंकन किया है गणित वर्ग के किसी भी प्रकार में, आप इस तरह के 2n स्थापित हो सकता है कि एन या में है एन जेड में है। इस संकेतन thing-- इसी विचारोत्तेजक होने का मतलब है कि गणितीय संकेतन की। स्टीफन KREWSON: और आप कर सकते हैं कई predicates लागू एक सूची में और कई फिल्टर काफी अच्छा है जो समझ,। बीजीय types-- हम यहां लंबे समय से भटकती नहीं होंगे। एक अच्छी धारणा में नहीं है हास्केल या एक अच्छा है, स्पष्ट धारणा कैसे लेने के लिए कहते हैं, एक डिफ़ॉल्ट की एक समारोह या कुछ और करने के लिए पैरामीटर। अजगर में, यह काफी आसान है। पर बराबर होती है के साथ आप सिर्फ कह सकते हैं समारोह की घोषणा डिफ़ॉल्ट मान में मामले में कोई भी आपूर्ति की जाती है। हास्केल में, आप शायद कर सकता है शायद टाइप हो सकता है का उपयोग करें, जो या तो कुछ भी नहीं लेता या प्रकार का एक मूल्य के सिर्फ एक। इसलिए हम ड्रम मशीन में इस शोषण हमें वैकल्पिक मात्रा देने के लिए अनुमति देने के लिए ड्रम भागों में से प्रत्येक के लिए मानकों। कि हमें ईक्यू होने का एक तरीका देता है तो या एक खास चैनल पर एक मात्रा। CONNOR हैरिस: में अन्य हास्केल उदाहरण हैं, आप शायद के लिए इस्तेमाल देख सकते हैं असफल हो सकता है कि कार्य करता है। यह एक आम एक है। स्टीफन KREWSON: और आपूर्ति कर सकते हैं एक डिफ़ॉल्ट के रूप में त्रुटि संदेश को किसी प्रकार का। और कहा कि जब विशेष रूप से काम है आप हास्केल में आई / ओ कर रहे हैं। चाल है कि हो सकता है। CONNOR हैरिस: या एक के लिए इसी तरह के उदाहरण है, लगता है प्रभाग शामिल है कि एक समारोह के 0 हो सकता है कि एक पैरामीटर की। और कहा कि कार्य कर सके शायद जो कुछ भी वापसी। 0 द्वारा कोई विभाजन नहीं है, यदि ऐसा है तो, यह अभी जो कुछ भी वापस आ जाएगी। और विभाजन के द्वारा अगर नहीं है 0, यह कुछ भी नहीं वापस आ जाएगी त्रुटि के संकेत के एक तरीके के रूप में। का एक परिणाम यह क्योंकि हास्केल के बहुत सख्त टाइपिंग कोई real-- है कि वहाँ है अपवादों को छोड़कर, मूल रूप से, अजीब हैं त्रुटि हैंडलिंग अजीब है। और यह बहुत ही एक है इसे करने का आम तरीका है। स्टीफन KREWSON: तो अब हम मिल एक और मन झुका बात करने के लिए हास्केल, के बारे में जो पैटर्न है मिलान और समारोह परिभाषा। मैं पिछले स्लाइड में दिखाया कदम अनुक्रम की घोषणा एक शायद मान लिया है, जो समारोह, फिर एक पूर्णांक, तो ints की एक सूची है, तब के एक दृश्य के लिए रिटर्न संगीत मूल्यों वहाँ एनोटेट पिच और मात्रा दोनों के साथ। तो उन तीन तर्क हो सकता है निम्नलिखित तरीके में मिलान पैटर्न। और हम हमेशा के लिए सुनिश्चित होना चाहते हैं पहले एक आधार का मामला हो या बाहर निकलने के मामले से करते हैं। और इन अंडरस्कोर सिर्फ व्याख्या की जा सकती वहाँ है कि किसी भी मूल्य मतलब है। हम अनुक्रम कदम करने के लिए एक कॉल मिलता है तो अगर कुछ मूल्य के साथ कुछ अन्य मूल्य, और उसके बाद खाली सूची है, हम क्या चाहते हैं लौटने के लिए बस चुप्पी, एक 0 आराम है। और इसके बजाय इस बात का एक खाली सूची या 0 जा रहा है, हम कर रहे हैं, क्योंकि यह एक 0 आराम है संगीत प्रकार से निपटने, और संगीत की खाली सूची प्रकार अभी कोई अवधि का एक बाकी है। यह कोई संगीत है। हम एक कदम मिलता है और फिर हम देखेंगे मात्रा तर्क के लिए एक वी के साथ अनुक्रम, एहतियात के साधन के लिए पी तर्क है, और फिर एक्स की एक सूची। तो फिर हम कुछ सामान करना। विशेष रूप से, हम लागू इस सूची समझ, और हम कुछ प्रदर्शन शायद मूल्य पर कार्रवाई इतना है कि एक अंकीय मूल्य में बदल जाते हैं यह तो प्रगणित और इस्तेमाल किया जा सकता है साधन का चयन करने के लिए। फिर, यह एक छोटी सी है बिट जानबूझ inconcise बस सब अजीब बातें दिखाने के लिए आप के रूप में हास्केल में कर सकते हैं अपने समय पर इस पर एक नज़र रखना। ठीक है। तो हम अंत में करने के लिए हो रही है हम ऐसा करने की क्या बाहर सेट करते हैं, जो कुछ कंप्यूटर संगीत बनाना है। तो हम करने की कोशिश करने के लिए जा रहे हैं Frere जैक्स गीत बनाते हैं। तो आप कैसे देखते हैं Frere जैक्स में वाक्यांशों? चार। अच्छा है। और क्या अच्छा है यह है कि वे सब दोहराया रहे दो है, जो समय की एक ही राशि। इसलिए हम चार वाक्यांश है प्रत्येक दो बार दोहराया। और विशेष रूप से, वे एक दौर में हैं। और, देखते हैं कई मायनों में लागू करने के लिए ऐसा करने के लिए मजेदार हो सकता है कि एक दौर। मैं एक में इसे किया है सुंदर यहाँ आसान तरीका जो सिर्फ लाइन construct-- करने के लिए किया जाता है समारोह संगीत मूल्यों की एक सूची लेता है और अनुक्रमिक संरचना में बदल जाता है कि अनुक्रमिक संरचना को लागू करने से ऑपरेटर। और फिर मैं अलग-अलग हिस्सों में देरी बनाकर उन्हें एक आराम के साथ शुरू करते हैं। इसलिए मैं दो उपायों की एक आराम के साथ शुरू करते हैं, और फिर चार उपायों की एक बाकी है, और छह में से तो एक आराम उपायों, और फिर दौर हम सभी को इस गीत के रूप में जानते हैं, काम करता है। हम देखते हैं दो एनोटेशन या संगीत मूल्यों के संशोधनों कि इस अनुक्रमिक में समाहित कर रहे हैं संगीत तत्वों की व्यवस्था। हम एक ऐड की मात्रा है। यह व्याख्या करने के लिए एक समारोह है एक विशेष मात्रा के साथ संगीत। यह एक अच्छा उदाहरण है एक मिडी संकेत चलाने का के 0-127, सात बिट्स किया जा सकता है कि जानकारी। और then-- हम बहुत इसे देखा संक्षेप में, लेकिन सामान्य मिडी सभी विभिन्न उपकरणों की सूची। और उनमें से एक पूरी बहुत कुछ नहीं है। आप एक डिजिटल ऑडियो कार्य केंद्र का उपयोग करते हैं, Ableton जीते या प्रो उपकरण की तरह, एक अविश्वसनीय रूप से व्यापक रेंज है सिंथेसाइज़र और वीएसटी उपकरणों की। लेकिन मिडी मानक केवल कुछ, या कई दर्जन है। और उनमें से कुछ मज़ाक कर रहे हैं। हम खेला है, तो मैं यह मजेदार होगा साधन मिडी साधन हेलीकाप्टर, और उसके बाद दौर के माध्यम से अगले तरह से, हम और उसके बाद की, एक पैड सिंथ किया इस बकवास नेतृत्व वर्ग तरंग सिंथ, और फिर, रसना आवाज कर रहे हैं जो एक मेरा बुरा मिडी पर थोड़ा सा अस्पष्ट सिंथेसाइज़र, लेकिन वे ठीक हैं। और फिर हम इस चलो देखते हैं और हास्केल से वाक्य रचना में, और फिर हम खेल रहे हैं एक साथ इन सभी भागों समानांतर रचना ऑपरेटर के साथ। और हम शायद इस में से कुछ दिखा सकता है। यहाँ कोड है। और आप सी में देख सकते हैं, वहाँ एक होगा गले समाशोधन और सेटिंग का बहुत कुछ इससे पहले कि आप तालिका कोड इस तरह संगीत बना सकता है। या किसी अन्य प्रोग्रामिंग भाषा, तो आप शायद चाहते हैं किसी प्रकार के साथ बातचीत करने के लिए है पुस्तकालय या एपीआई और सब कुछ तय, और फिर आप को साफ करने के लिए होगा। लेकिन यहाँ हास्केल है, मैं एक बार लगता है कि, आप अविश्वसनीय रूप से, इसे भांप पठनीय और बहुत अर्थपूर्ण। तो कार्यान्वयन नहीं है Frere जैक्स की। ठीक है। अब हम टक्कर जोड़ना चाहते हैं, और यह एक छोटा सा मेसियर है। तो चलो स्लाइड पर एक नजर डालते हैं। इसलिए बड़ा विचार कर रहा है सूचियों या भागों का एक गुच्छा। उन रोल में मशीनों पर, वहाँ शायद आठ के बारे में आम तौर पर थे 10 लय या टक्कर भागों में। और फिर तकनीकों का एक गुच्छा का उपयोग करें। और हम these-- उपयोग करने के बारे में बात की है सिलवटों, फिल्टर, लैम्ब्डा काम करता है, मूल्यों को उत्पन्न करने के लिए सूची पर मैप किया कुछ रेंज में एक अनुसंधान के लिए, आर, 16 है या sequencer में 32 कदम। और उस सूची में एक मूल्य नहीं है तो यदि हम Sequencer के माध्यम से चल रहे हैं, से अधिक के माध्यम से यह चल रहा है और से अधिक है, यह उस पर ध्यान दें बदल जाता है, और कहा कि नमूना शुरू हो जाता है। यहाँ सब अलग अलग अजीब तरीके हैं मैं नोट उत्पन्न करने के साथ आया था। अपने खुद के सेमीफाइनल योग पर कोशिश करें। यह शांत ध्वनि हूँ। समय है कि हम इस माध्यम से जाना होगा, की अनुमति। लेकिन अभी के लिए, मुझे लगता है हम क्या हम प्रदर्शन करना चाहिए। चलो इस ठीक हो जाता है आशा करते हैं। इसलिए इस GHCI है। और हम एक फ़ाइल लोड हूँ मैंने फोन song.lhs है, जो मैं सिर्फ तुम्हें दिखाया फाइल है। ठीक है अच्छा है। धक्का देकर जैसा कि पहले कहा, यह संकलित, यह जाँच प्रकार, इसलिए मैं एक बहुत आसान सांस ले सकते हैं। यह मुझ पर उड़ा करने के लिए नहीं जा रहा है। मैं तुम्हें कुछ उपयोगी दिखाने के लिए करना चाहता था। आपको लगता है कि एक देख सकते हैं भरी हुई मॉड्यूल 50 बुलाया। आपको लगता है कि मॉड्यूल ब्राउज़ कर सकते हैं। और यह बहुत अच्छा है doing-- के बारे में हो सकता है क्या हास्केल नहीं है में आप क्या कर रहे हैं सॉफ्टवेयर विकास कहा जाता है, लेकिन आप में से बहुत कुछ कर सकते अपने दम पर मज़ा सामान। और कार्यप्रवाह के रूप में वास्तव में अच्छा है अन्य भाषाओं का एक बहुत की तुलना में, आप वास्तव में एक में देख सकते हैं क्योंकि क्या हो रहा है पठनीय तरीका है। तो हम देखते हैं कि इन सभी वाक्यांशों, जो संगीत पिचों की सूची रहे हैं, और फिर हम बड़ा कुछ में इन का निर्माण, जो एक संगीत गीत है। यह एक संगीतमय इकाई है। और फिर हम सब इस खेल सकते हैं एक समारोह में कहा जाता खेलने के संगीत के साथ। आप यहाँ कि नीचे देख सकते हैं। जो सिर्फ खेलना है। मैं मैं के बारे में बात नहीं की say-- चाहिए हर जगह है कि यह डॉलर के हस्ताक्षर। डॉलर के हस्ताक्षर एक और इन्फ़िक्स ऑपरेटर है। लेकिन यह सबसे कम पूर्वता है जो प्रभावी रूप से किसी भी ऑपरेटर के पर लगता है कि सब कुछ है डॉलर के हस्ताक्षर के बाईं और डॉलर के हस्ताक्षर का अधिकार, हम यह पहले से मूल्यांकन करने के लिए जा रहे हैं। तो यह एक और तरह तरह की है कोष्ठक जोड़ने का तरीका है। CONNOR हैरिस: यह मूल रूप से है समारोह रचना। और यह आप यदि have-- नहीं है कि यह सुनिश्चित करता है आप कार्यों पक्ष या इन्फ़िक्स या तो है दोनों तरफ ऑपरेटरों, वे नहीं करेंगे इसे भर में सहयोगी और तुम्हें दे अप्रत्याशित परिणाम है। स्टीफन KREWSON: तो हम can-- उस का उपयोग कर, हम कह सकते हैं। सबसे पहले, हम ड्रम के बिना खेलेंगे। यही कारण है कि हेलिकॉप्टर मिडी हेलीकाप्टर। [संगीत बजाना] वर्ग लहर नहीं है। आवाज रसना। और तुम सच में इस के साथ जंगली जा सकते हैं। मैं एक बहुत साधारण से एक उठाया, मैं जानता था क्योंकि मैं काट नहीं करना चाहिए मैं जुगल सकता है की तुलना में अधिक है। सिर्फ सुंदर इसे सरल रखने मुख्य विचारों को दिखाने के लिए। लेकिन तब मैं की तरह, हम है था इस के लिए कुछ ड्रम जोड़ने के लिए मिला है। बस इस एक है क्योंकि थोड़ा सा अभेद्य, और मैं का उपयोग नहीं किया ड्रम भागों के नाम वे कर रहे हैं, क्योंकि मैं them-- मैप किया कि enumerated वर्ग का हिस्सा है, मैं ints करने के लिए उन्हें मैप किया। एक एक बास ड्रम की तरह है। शून्य के रूप में अच्छी तरह से है। सात एक उच्च टोपी है। और यहाँ नीचे में जहां काम करता है, एक छोटे से अधिक यादृच्छिक मिल इन conga ड्रम की तरह हैं। तो आप शायद एक about-- अगर आपको लगता एक ड्रम मशीन को लागू करने के लिए मजेदार तरीका बहुत व्यवस्थित उपयोग करने के लिए है अपने बास ड्रम पर पैटर्न। तो उदाहरण के लिए, पर छानने पर वापस देता है कि सब कुछ के साथ सूची यह मॉड्यूल 04 ले लिया है जब एक 1। इसलिए मुझे लगता है 1, 5, 9, 13, 17-- तो यह मिलता है हर उपाय की पहली हरा है। और फिर यह एक ही है बात यह है कि दो चरणों में स्थानांतरित कर दिया। तो यह है कि लीक से हटकर है। तो यह होगा एक उच्च टोपी की तरह कुछ। और फिर, यहाँ नीचे, यह एक छोटे से यादृच्छिक है हम conga ड्रम कर रहे हैं क्योंकि। और मैं भी, यहाँ कुछ मराकास नीचे है। तो मैं खेलने के ड्रम मशीन कह सकते हैं लेकिन यह हमेशा के लिए पर जाना होगा, और इसे हथियाने शुरू हो सकता है अपने सिस्टम में सभी स्मृति। इसलिए मैं इस समारोह फोन करता हूँ , हम देखेंगे के रूप में जो संगीत, खेलने छोटा समानांतर संरचना का उपयोग हमारे छोटे Frere जैक्स गाना खेलने के लिए इस अजीब मशीन ड्रम के साथ। तो चलो एक नज़र रखना। और पर सुधार करते कृपया मेरी सभी ड्रम भागों की व्यवस्था। नहीं मेरी विशेषता है, लेकिन मैं यह क्या कर रही मज़ा की एक बहुत कुछ था। [संगीत बजाना] तो ज़ाहिर है, यह सब है मजाक के रूप में एक छोटा सा नहीं हम इसे नहीं बदल सकते हैं, तो एक अंक के लिए तो शायद यह व्याख्या की जा सकती एक मानव कलाकार द्वारा। इसलिए मैं यहां यह नहीं चलेगा। मैं पहले से ही फाइलों को उत्पन्न किया है। आप एक है कि वहाँ देख सकते हैं डॉट LilyPond file-- और इस करने के लिए मेरे segue खत्म हो जाएगा Connor-- और एक डॉट मिडी फ़ाइल, और क्या एक डॉट पीडीएफ फाइल है, जो LilyPond अंततः उत्पन्न होगा। लेकिन इन उन लिपियों रहे हैं, और मैं हूँ बस उनकी मदद के विकल्पों के साथ उन्हें चला रहे हैं। आप इन उठो और साथ चल रहे हैं Euterpea, आप एक मिडी फ़ाइल उत्पन्न कर सकते हैं। और फिर मिडी फ़ाइल से इस मिडी 2LY कार्यक्रम के साथ, आप एक लिली उत्पन्न कर सकते हैं तालाब फ़ाइल, और फिर आप स्कोर के एक पीडीएफ उत्पन्न कर सकते हैं। और हम इस पर एक नज़र रखना चाहिए। तो धक्का देकर शायद दिखाएगा आप कैसे, यह बेहतर व्याख्या करने के लिए लेकिन इस Frere जैक्स के रूप में है Euterpea में मेरे द्वारा उत्पन्न। यह सिर्फ सी में मैं सोचा जाना चाहिए है यह वास्तव में है हैक क्या बाहर। लेकिन उसके लिए पाइपलाइन है आप उस के साथ कि कैसे करते हैं। के LilyPond के बारे में अधिक बात करते हैं। CONNOR हैरिस: ठीक चलो देखते हैं। आप आप हास्केल जानें उल्लेख किया था? स्टीफन KREWSON: अरे हाँ। बाहर की जाँच करें आप हास्केल जानें। यह संसाधनों में है। मैं शुरू कर दिया है कि कैसे सीखने, और यह बहुत अच्छी बात है। बेवकूफ नहीं सीखने। CONNOR हैरिस: तो यह ऑनलाइन है। तो एक आदमी का नाम [सुनाई] learnyouahaskell.com, कोई रिक्त स्थान। व्याकरण बीमार है। स्टीफन KREWSON: यह बहुत, सचित्र है। CONNOR हैरिस: LilyPond क्या ऐसा है? यह एक घोषणात्मक प्रोग्रामिंग है संगीत टाइप बैठना के लिए भाषा। तो आप कर सकते हैं declarative-- HTML की तरह चीजों के बारे में सोचना, आप नहीं कर रहे हैं, जहां saying-- एचटीएमएल कैसे वेब ब्राउज़र चाहिए नहीं कहना है प्रस्तुत करना पृष्ठों कदम से कदम। यह सिर्फ यह कह रहा है एक शाब्दिक वर्णन है क्या आप चाहते हैं की पेज की तरह देखने के लिए। और फिर यह भी एक कार्यक्रम है कि इस भाषा का संकलन करता है, या यह वास्तव में तो अपने में पढ़ सकते हैं और आप के लिए टाइप बैठना करता है, और यह इन बाहर spits अद्भुत लग पीडीएफ स्कोर। तुम भी PNG प्रारूप या जो कुछ भी प्राप्त कर सकते हैं। एक अच्छी तरह से लगता है इस सादृश्य द्वारा होता है की लेटेक्स तरह की LillyPond की तरह है लेकिन सिर्फ साधारण टाइप बैठना के लिए। तो बजाय यह नहीं है of-- क्या तुम देखो WYSIWYG, आप कहते हैं, जैसे, क्या हो रहा है समापन है, या Sibelius, या माइक्रोसॉफ्ट वर्ड, आप टाइप कर सकते हैं जहां वास्तविक समय में वास्तविक समय और मसौदा बातें और तत्क्षण परिवर्तन देखते हैं। यह पाठ आधारित है। आप अपने संकलन करने के लिए है एक अलग कार्यक्रम का उपयोग कर के स्कोर और बाद में पीडीएफ़ बाहर निकलते हैं। यह थोड़ा कम है अगर आप उपयोग के लिए सुविधाजनक सीधे लिखने की कोशिश आप कर रहे हैं और एक अंक में कंप्यूटर पर रचना करने के लिए कोशिश कर रहा है। लेकिन एक बहुत हैं इसके लिए फायदे की। एक, यह एक बहुत अच्छे दिखते हैं LillyPond वास्तव में कर सकते हैं क्योंकि ऐसा करने के लिए समय लेने के लिए ठीक से लेआउट निर्णय, है जो Sibelius या समापन, के विपरीत इसलिए समझौता एल्गोरिदम बनाने के लिए वे प्रदर्शित कर सकते हैं वास्तविक समय में बातें। तो क्यों LilyPond-- है कंप्यूटर ग्राफिक्स कठिन है। आप संगीत के साथ कुछ भी कर रहे हैं और आप स्कोर बाहर लिखना चाहते हैं, आप लिखना नहीं करना चाहते हैं अपने आप से सब कुछ बाहर कैसे आकर्षित करने के साथ शुरू कर्मचारी और कैसे notepads आकर्षित करने के लिए। यह बहुत मुश्किल है। यह पहले किया गया है। तुम ठीक हो। आप समापन या Sibelius उपयोग करना चाहते हैं, उन बातों के लिए फ़ाइल स्वरूपों बहुत जटिल हैं, और तुम नहीं कर सकते वास्तव में प्रोग्राम के लिए उन्हें इस्तेमाल करते हैं। आप समापन के साथ Sibelius खोल सकते हैं और फाइल करने के लिए जाना है, निर्यात पीडीएफ के रूप में अपने आप को, लेकिन क्या तुम सच में नहीं कर सकते एक स्क्रिप्ट से कि कहते हैं। LillyPond, आप कह सकते हैं उन लिपियों से। आप आसानी से पुनरावृति सकता लेटेक्स के साथ LillyPond। मैं जाने के लिए है कि ज्यादा समय नहीं होगा अभी इन तकनीकों के रूप में, लेकिन वे मौजूद हैं। आप देखना चाहते हैं एक LillyPond पुस्तक में, इसके साथ आता है कि एक कार्यक्रम है अपने LillyPond वितरण, और यह पुनरावृति के लिए है लेटेक्स में LillyPond टुकड़े आप कुछ करना चाहते हैं, तो एक बड़े संगीत की विद्या दस्तावेज की तरह उदाहरण के लिए उदाहरण हैं, के साथ। और इसके लिए एक अच्छा कौशल है आप कुछ भी कर रहे हैं, तो जीवन संगीत में ही नहीं, CS50 के साथ। मैं सभी के लिए LillyPond का उपयोग किया है मेरी रचना परियोजनाओं की मैं मूल रूप से था के बाद से एक हाई स्कूल में वरिष्ठ। तो यहाँ कुछ सरल उदाहरण हैं। यह मूल रूप से प्रतिनिधि है कठिनाई के स्तर का कि ज्यादातर लोगों को होगा वे कोशिश कर रहे थे यह चेहरा सरल परियोजनाओं के लिए LilyPond का उपयोग करने के लिए। यह पहली बार एक शुरुआत है बाख द्वारा एक कोरल प्रस्तावना करने के लिए। यह नीचे एक एक अंश है मेरे अपने कार्यों में से एक से, और यह दिखाने के लिए सिर्फ वहाँ है [अश्राव्य] की तरह आप चीजों को उसी में कई लाइनें डालने स्टाफ, कैसे गीत undersetting काम करता है। गीत underlays बहुत है कि बात कर रहे हैं भजन संगीत के लिए LilyPond प्रयोग करने में आसान। और तो फिर कुछ और भी है यहां जटिल उदाहरण हैं। इन सभी में किया जाता है LilyPond और वे संभव हो। यह पहला अंश से है [अश्राव्य] [अश्राव्य] द्वारा। और इस [अश्राव्य] से एकल बास के लिए एक टुकड़ा [अश्राव्य] द्वारा बांसुरी, जो एक longtime-- कौन है के एक पुराने सदस्य थे यहाँ संगीत विभाग, मुझे लगता है। मुझे लगता है वह करने के लिए बंद कर चला गया है, जहां यकीन नहीं है। लेकिन उन्होंने कहा कि हार्वर्ड के सलाहकार था एक लंबे समय के लिए संगीतकार एसोसिएशन। अद्भुत आदमी। और वह बहुत है कि कुछ संगीत लिखता है जटिल संकेतन कि LillyPond फिर भी बहुत अच्छी तरह से संभाल सकते हैं। तो बस आप की भावना देने के लिए क्या इस बात की क्षमताओं इसलिए are-- LillyPond के internals बहुत जटिल हैं। और आप के लिए इसका इस्तेमाल कर सकते हैं एक लंबे समय, सहित कुछ बहुत जटिल के लिए बातें, बिना सच उनके बारे में बहुत कुछ पता करने के लिए कर रही है। लेकिन मूल विचार पर यह है कि सबसे कम स्तर, LillyPonds के परमाणुओं नोट कर रहे हैं। नोट एक शामिल संदर्भ बुलाया आवाज। आवाज संदर्भ तो मूल रूप से मेल खाती है polyphony के एक भी लाइन करने के लिए। और फिर प्रसंग हो सकता है पदानुक्रम निहित उच्च स्तर के लोगों में है कि स्कोर पर कर्मचारी का प्रतिनिधित्व जैसे या बड़े समूहों पियानो कर्मचारी या गाना बजानेवालों कर्मचारी, और फिर अंत पूरे स्कोर संदर्भों। और अगर आप वास्तव में शामिल कर सकते हैं एक किताब में कई स्कोर। और हर प्रसंग है एक संलग्न नक्काशीकारों की संख्या। आप के माध्यम से देखें तो एक संदर्भ की सामग्री और एक निश्चित प्रतीक या एक प्रिंट आवश्यक के रूप में प्रतीकों के खास वर्ग। हर आवाज संदर्भ के लिए तो, [अश्राव्य] नोटों वहाँ मूल रूप से एक समारोह है कि उकेरक या सभी नोट बाहर लिखते हैं कि एक वस्तु एक पेज के सही भागों पर सिर। फिर एक फांक उकेरक, वहाँ जो कर्मचारियों पर clefts बाहर लिखते हैं। फिर एक metronome वहाँ मार्क उकेरक कि एक अंक में तालमापनी के निशान बाहर लिखते हैं। और इन सब बहुत फिट अच्छी तरह से पदानुक्रम में। और यह बहुत, बहुत, बहुत है अनुकूलन, जो आप की जरूरत है आप इस तरह बातें प्राप्त करना चाहते हैं। इसलिए सभी संदर्भों एक है अलग विशेषताओं के बहुत आप सब कुछ के लिए संशोधित कर सकते हैं विभिन्न फ़ॉन्ट के लिए रिक्ति से चीजों के आकार के लिए चयन। आप भी ऐसा करना चाहते हैं अधिक जटिल बातें, एक एम्बेडेड स्क्रिप्टिंग भाषा नहीं है। वे योजना, का उपयोग करें जो लिस्प की बोली है। ये शायद नहीं है आप कुछ भी मतलब। लेकिन असल में, एक योजना एक और कार्यात्मक प्रोग्रामिंग भाषा, अधिक या कम है। स्टीफन KREWSON: टाई में। CONNOR हैरिस: हाँ। यह एक अच्छा टाई में है, मुझे लगता है। और यह एक शिक्षण भाषा के रूप में प्रयोग किया जाता है, वास्तव में, मास एवेन्यू नीचे एमआईटी में। और यह LillyPond के लिए बहुत ही आसान है विभिन्न तकनीकी कारणों के लिए। और तो आप सरल बनाना चाहते हैं सशर्त पर निर्भर तोड़ मरोड़, example-- के लिए कुछ भी नहीं है मुलाकात है कि एक स्कोर की हालत के लिए परिवर्तन बनाने लेआउट या तो whatnot-- उन सुविधाएं हैं। वे जटिल कर रहे हैं। तो यहाँ एक बहुत आसान कोड नमूना है। यह पांच लाइनों है। असल में, मैं दो कर्मचारी परिभाषित कर रहा हूँ। यह 3/4 में है। पहले कर्मचारियों के एक है टेम्पो निशान जुड़ा है, लेकिन लगता है कि वास्तव में हो रहा है पूरे स्कोर पर जाने के लिए, टेम्पो के निशान क्योंकि स्कोर के स्तर पर हैं। तालमापनी निशान उकेरक संदर्भ स्कोर करने के लिए जुड़ा हुआ है। अलग चाबियाँ हैं, [अश्राव्य] उकेरक क्योंकि कर्मचारी जुड़ा हुआ है। आप वास्तव में है क्या कर सकते हैं। मैंने लिखा नमूना है वास्तव में सी प्रमुख में, लेकिन यह सिर्फ करने के लिए है हो सकता है आप का प्रदर्शन विभिन्न कर्मचारी में अलग चाबियाँ। और बुनियादी वाक्य रचना आप लिखना है ई, एफ, जी, के साथ जो कुछ नामों पर ध्यान दें। आप accidentals करना चाहते हैं, तुम हो या ते प्रत्यय। इस डच से है musicological सम्मेलनों। और सप्तक आती है ऐसा करने के लिए, आप का उपयोग करने के लिए है ये निशान, अल्पविराम या अपॉस्ट्रॉफ़ी टिक। रिश्तेदार बस का अर्थ आप एक नोट है, जो कुछ भी यह स्वचालित रूप में plaec हो जाएगा पिछले एक करने के लिए करीब सप्टक। और आप की तुलना में अधिक कूद करना चाहते हैं एक एक पांचवें या more-- कहना fifth-- तो आप [अश्राव्य] का प्रयोग किया है। लेकिन अन्यथा, आप की जरूरत नहीं है हर एक नोट के सप्तक निर्दिष्ट करें। और रिश्तेदार सी, प्रधानमंत्री, और सी, तुम सिर्फ मध्यम सी निर्दिष्ट और बेस सी, विशेष रूप से पहले नोटों। तो फिर आप को संगठित कि इन कर्मचारी है इन दो आवाज या संगीत के नमूने, और तुम एक स्कोर है। और कहा कि इस तरह दिखता है। आप समय के लिए लेना चाहते हैं LillyPond की है कि नमूना कॉपी पिछले पर कोड यहाँ नीचे स्लाइड, और आप LillyPond इसे खुद के लिए लिख सकते हैं। मुझे लगता है हम कुछ मिल गया है कि इस तरह एक बहुत लग रहा है। तो एक और तकनीक है कहा जाता संगीत एक्सएमएल बनाए रखा पूरी तरह से अलग अलग लोगों द्वारा। एक्सएमएल एक शाब्दिक डेटा structure-- मैं है डेटा कहना structure-- नहीं कहना चाहिए के रूपक नक्शा तरह। और उसे पकड़ के लिए तैयार है श्रेणीबद्ध डेटा बहुत अच्छी तरह से। एचटीएमएल, उदाहरण के लिए, एक्सएमएल का एक प्रकार है। और अगर आप एक्सएमएल क्योंकि बता सकते हैं कि वे सब था कोण कोष्ठक और कोण ब्रैकेट स्लेश के निशान उस शो डेटा फ़ील्ड्स। मैं एक कोड की जरूरत नहीं है संगीत एक्सएमएल से उदाहरण है। आप इसे अपने आप को मिल सकता है। असल में, कारण तुम चाहते हो सकता है मध्यवर्ती चरण के रूप में XML का उपयोग करने के लिए सब से पहले, यह बात है, है एक इंटरचेंज प्रारूप के लिए मूल रूप से मैं नहीं कहना चाहिए every-- अलग स्कोर के हर, लेकिन एक बहुत लेखकों। आप संगीत में लिखते हैं तो एक्सएमएल, न केवल LillyPond कर सकते हैं इस auxilary की मदद से इसे पढ़ा कार्यक्रम, भंडारण करने के लिए संगीत एक्सएमएल बुलाया लेकिन यह भी समापन पढ़ सकते हैं यह, Sibelius इसे पढ़ सकते हैं। कैसे अपने आंतरिक वस्तु पर निर्भर करता है पदानुक्रम, संगीत का प्रतिनिधित्व करने के लिए काम करता है लिखने के लिए बाहर यह आसान हो सकता है LillyPond करने से संगीत एक्सएमएल के लिए और सिर्फ संगीत एक्सएमएल पर भरोसा भंडारण के लिए रूपांतरण करने के लिए। मैं [अश्राव्य] संगीत एक्सएमएल है नहीं लगता है। स्टीफन KREWSON: यह नहीं करता है। किसी ने हालांकि, इस पर काम कर रहा है। CONNOR हैरिस: ठीक है। Euterpea एक भी नहीं है अभी तक संगीत एक्सएमएल उत्पादन कार्य करते हैं। आप एक अंतिम परियोजना के विचार चाहते हैं, शायद लोगों के साथ संपर्क में मिलता है स्टीफन जानता है कि, और वे आपकी मदद इस्तेमाल कर सकते हैं। स्टीफन KREWSON: मुझे लगता है कि प्यार होता है। CONNOR हैरिस: इसके अलावा, मूल रूप से, हर प्रोग्रामिंग भाषाओं कि अपने नमक लायक है पहले से ही एक एक्सएमएल पुस्तकालय है, इसलिए यदि आप आंतरिक रूप से सभी परिवर्तित कर सकते हैं किसी वस्तु में अपने संगीत का एक्सएमएल पुस्तकालय लिख सकते हैं कि कम आवश्यकता होगी बाहर अपने आंतरिक संरचना के लिए परिवर्तन जो कुछ भी संगीत आप वस्तुओं यह लिखने से लिखना चाहते हैं सीधे LillyPond में होगा। तो फिर सिर्फ एक्सएमएल के साथ साथ इसे बाहर प्रिंट अपनी भाषा में एक्सएमएल पुस्तकालयों, यह है कि गारंटी होगी जो वाक्य रचना की दृष्टि से सही है और सब कुछ, और फिर LillyPond के लिए इसे बदलना। तो तकनीक आप के लिए चाहते हो सकता है आप कुछ कर रहे हैं, तो इस पर गौर इस तरह। [अश्राव्य], एक और auxilarry प्रौद्योगिकी। इस टेक वर्क्स मूल रूप से है या LillyPond के लिए टेक स्टूडियो। तो इसके साथ सहायता प्रदान करता है टेम्पलेट्स के साथ वाक्य रचना, विभिन्न आम के लिए उपकरणों के संयोजन। यह तो देखने विभाजित स्क्रीन की अनुमति देता है आप एक विंडो में अपने कोड हो सकता है और अन्य विंडो में पीडीएफ और पीडीएफ में स्थानों पर क्लिक करें प्रासंगिक करने के लिए कूद करने के लिए अपने स्रोत कोड में स्पॉट। आप वास्तव में कर रहे हैं तो यह अधिक उपयोगी है लेखन LillyPond खुद फाइलें तुम पैदा कर रहे हैं की तुलना उन्हें प्रोग्राम के। लेकिन फिर, यह है कुछ उपयोगी है। अच्छा है। एक अन्य resources-- मैं बस हूँ बहुत जल्दी इस माध्यम से जाना। LillyPond नियमावली LillyPond है अपनी वेबसाइट पर उत्कृष्ट प्रलेखन। वे एक ट्यूटोरियल है। वे एक वाक्य रचना संदर्भ है। वे के टुकड़े के सैकड़ों है विभिन्न छोटी-छोटी बातों के लिए यो प्रदर्शित करने के लिए क्या आवश्यकता हो सकती है विभिन्न क्षमताओं। आप उपयोग करना चाहते हैं पटकथा भाषा या अधिक व्यापक बनाने के अनुकूलन, फिर वहाँ है आंतरिक कि URL पर संदर्भ। आप संगीत एक्सएमएल का उपयोग करना चाहते हैं, तो वहाँ कि यूआरएल, musicxml.com/tutorial। और फिर आप योजना जानने की जरूरत है आप वास्तव में उपयोग करना चाहते हैं क्योंकि LillyPond में पटकथा की सुविधा, फिर एक [सुनाई] कहा जाता है वहाँ संरचित व्याख्या कंप्यूटर प्रोग्राम की, जो न केवल दूसरे नंबर पर है कभी written-- सबसे बड़ी सीएस पाठ्यपुस्तक आप जानना चाहते हैं, तो बाद में मुझे मिल मैं सबसे बड़ा एक है- क्या सोचते हैं लेकिन यह भी एक बहुत ही अच्छा है उचित भाषा का परिचय। आप अधिक से अधिक की जरूरत नहीं होगी पहले कुछ वर्गों। और यह बात है। कोई सवाल? छात्र: मैं कहां से डाउनलोड कर सकते हैं अपने उत्पन्न Frere जैक्स इसलिए मैं अपने आइपॉड पर डाल सकते हैं? स्टीफन KREWSON: ठीक है, आप लिख सकते हैं Euterpea में कुछ wav फाइल करने के लिए बाहर। और आप कोड है। यह GitHub पर है। की अपनी खुद की विविधताओं बनाओ CS50 छत्ता मन से Frere जैक्स। यह बेहतर होगा। CONNOR हैरिस: कोई और? स्टीफन KREWSON: हम की जरूरत है भी एक बेहतर बास ड्रम,। यह वास्तव में बुरा है। छात्र: Euterpea ही नहीं है रचना पक्ष, लेकिन signal-- स्टीफन KREWSON: हाँ। वास्तव में, काम मैं जब मैं Euterpea में किया था है- एक वहाँ ले ली येल में पाठ्यक्रम स्नातक कि it-- ध्वनि संश्लेषण पर था का उपयोग करता है। तो एक सच है तीर का उपयोग कर अच्छा तरीका और हम में से देखा अंकन के कुछ संकेत कार्यों को एक साथ रचना। अधिकांश के लिए विशेष रूप से, बास में उनमें से सिर्फ एक सरल साइन लहर है। लेकिन अगर आप उन रचना शुरू करता है, तो अजीब कार्यक्रम संबंधी मायनों में, तुम पागल ध्वनि प्राप्त कर सकते हैं अजीब झरने की तरह प्रभाव,। तुम बहुत किरकिरा बना सकते हैं मॉडुलन के साथ एक बहुत लगता है। मैं बारीक पर एक परियोजना था है जो संश्लेषण, कहीं एफएम और नमूने के बीच में। तुम बहुत छोटे लेने के लिए थोड़ा नमूने, और उसके बाद किसी प्रकार का साथ उनके गठबंधन न्यूनाधिक और एक अमीर ध्वनि का निर्माण। हम भी तो, शारीरिक मॉडलिंग किया भौतिकी के बारे में सोचने के लिए कोशिश कर रहा है और की तरह कुछ के मनो एक तुरही, और जिस तरह के बारे में सोच ध्वनि से उछल रहा है तुरही की घंटी की और ध्वनिकी कमरे और मॉडलिंग बुनियादी oscillators के साथ है। CONNOR हैरिस: बहुत बहुत धन्यवाद। आने के लिए धन्यवाद। और मैं हमेशा के लिए तैयार हूँ email-- द्वारा प्रश्नों का उत्तर connorharris@college.harvard.edu। स्टीफन KREWSON: हाँ। stephen.krewson@yale.edu। कूल।