CONNOR HARRIS: مرحبا.
أنا كونور هاريس.
أنا CA CS50 في جامعة هارفارد.
ستيفن KREWSON: أنا ستيفن Krewson.
أنا TF لCS50 في جامعة ييل.
CONNOR HARRIS: ونحن في طريقنا للحديث حول بعض التكنولوجيات التي قد
تريد استخدامها إذا كنت مهتما في القيام المشروع النهائي أو حقا
أي شيء مع الموسيقى.
ونحن في طريقنا إلى أن التركيز على الأول لغة البرمجة دعا هاسكل.
انها وظيفية اللغة، وبالتالي فإن النموذج
يختلف كثيرا عن C أو PHP أو لغات أخرى ملحة
ان كنت قد استخدمت بالفعل، وخاصة على مكتبة كتب في هاسكل
دعا Euterpea، والتي يمكن أن تساعد الناس مع كتابة الموسيقى وظيفيا،
في الأساس.
وسوف ستيفن المشي لكم من خلال مثال عظيم على ذلك.
>> بعد هذا، وأنا سوف أعرض لكم ل ما يسمى LillyPond، التي
هي تقنية للموسيقى التنضيد.
انها نوع من مثل مطاط للموسيقى إذا كان أي منكم
استخدمت اللاتكس لدروس الرياضيات أو الفئات الأخرى P مجموعة أو ما إلى ذلك.
وذلك سأعطيك، مرة أخرى، بعض الأمثلة البسيطة على ذلك
وتوجيهك في عام اتجاه بعض موارد أفضل.
>> ستيفن KREWSON: في بالإضافة إلى ذلك، كنا نظن أنه
سوف يكون باردا لاقامة قليلا من تلميحات
نحو خط أنابيب بين ملفات MIDI ولدت Euterpea
في LillyPond، لذلك نحن نقدم بعض التعليمات على مخطوطات
للقيام بذلك التي هي قدمت مع LillyPond
فقط للحفاظ على أنها مفتوحة المصدر والحصول على خط أنابيب الذهاب.
CONNOR HARRIS: مرة أخرى، علينا أن نؤكد،
هذه التقنيات اثنين، ل لم يكن لديك لاستخدامها جنبا إلى جنب.
انهم لا مصمم للعمل معا، على الرغم من أنها تفعل بشكل جيد للغاية.
>> ستيفن KREWSON: الحق.
وخال تماما.
CONNOR HARRIS: حتى شكر وتقدير، مجرد قراءة ذلك.
وأشار حسب الأصول: ستيفن KREWSON.
بفضل هؤلاء الناس.
هذا سوف نطيل على مجرد لحظة.
عملية التثبيت هو صعب قليلا.
لقد قراءة لي على جيثب يمكنك أن نلقي نظرة على.
البريد الالكتروني لي فقط إذا كان لديك أي أسئلة.
ولكن سنقوم بتشغيل هذا على افتراض أن هذا العمل من أجل الجميع.
CONNOR HARRIS: وإذا كنت لا تستطيع الحصول على LillyPond للعمل، ليست صفقة كبيرة.
ليس هناك تجميع الحية التي سوف تشارك، على الأقل على نهايتي.
ستيفن KREWSON: حزقيل و يجب LillyPond على حد سواء والتركيب.
يتم تحميل Euterpea باعتباره حزمة، هلم جرا وهكذا دواليك.
لذلك نحن نتحدث عن الموسيقى الكمبيوتر.
وهذا هو مجرد جدا نظرا 50000 قدم.
هناك عدد قليل من جوانب مختلفة منه.
وهذا هو تقريبي وغير الذهاب إلى حجب بعض التفاصيل.
لكننا يمكن أن نفكر في شيء مثل تكوين حسابي،
باستخدام خوارزميات، باستخدام رمز، لتوليد
نوع of-- ربما تشبه المصير سلسلة من الملاحظات، أو ربما الملاحظات
تحت بعض القيود.
ثم تلك يمكن أن تكون إجراء أو تفسير
مع الصكوك التناظرية أو أي شيء من هذا القبيل.
ولكن تركيبة كان به حسابيا.
>> لكن بطبيعة الحال، ربما منطقة الموسيقى الكمبيوتر أو الموسيقى الرقمية
نحن أكثر دراية غير الرقمية توليف الصوت أو أخذ العينات الرقمية
والتسجيل الرقمي.
وهناك الكثير من الأدوات الرقمية هي يتم ذلك من خلال أخذ العينات الرقمية.
في الواقع، ونحن سوف يكون باستخدام واحدة من تلك في شكل مكتبة الخط سليمة في وقت لاحق.
>> ولكن هناك أيضا ما يسمى التوليف الرقمي التي خرجت
في أواخر '70s و في "80S مع ياماها وجون Chowning في جامعة ستانفورد
القيام التوليف FM أو توليف التردد التحوير،
حيث كان لديك الناقل إشارة وإشارة تحوير
سواء في الطيف الصوت.
ولكن ما نركز عليه اليوم هو ما يسمى MIDI،
وبطبيعة الحال، تكوين حسابي.
>> نحن لن نجعل الأدوات، ولكن نحن بدلا من ذلك الذهاب الى جعل بعض الموسيقى،
وبعد ذلك سوف تحصل على تفسير بعض الأدوات التي
هي المطابق لل عام MIDI القياسية.
لذلك ما هو MIDI؟
أنا لن تحصل على عميق جدا في ذلك، ولكن MIDI هو بروتوكول نقل البيانات.
انها نوع من دليل عبر الشركات والصناعات المختلفة
لتنظيم الأصوات أو بقع.
لذلك سنرى أن هناك معيار MIDI
لجميع قرع مختلفة الأصوات وتوصيات MIDI
لجميع أنواع مختلفة من المركب أو أنواع مختلفة من كل الصك
المجموعات في الأوركسترا، يقول.
>> وربما كنت على دراية من 0 إلى 127 رسائل ميدي.
إشارة MIDI عادة حرف واحد مما يدل
سواء كان ذلك في البيانات أو حزمة حالة، ثم هناك
سبع قطع من إشارة.
وهذه يمكن السيطرة كل شيء من حجم
إلى العمل أو الضغط على مفتاح معين
إذا كنت المنفذ مع MIDI تحكم وكذلك، بطبيعة الحال،
الملاحظات.
وبطبيعة الحال، MIDI لديها كانت مفيدة للغاية،
لأنه وسيلة لسلك معا أو سلسلة ديزي
مجموعة من الأجهزة MIDI.
لدي سبعة أو ثمانية إلى الوراء في بيتي.
فإنه يحصل معقدة حقا، ولكن انها قوية حقا.
وانها حقا القديمة.
انها من أوائل 80s "، و انها حقا جميلة وصغيرة.
CONNOR HARRIS: نعم.
جميع نينتندو الكلاسيكية ألعاب الفيديو ربما
لديك ملفات ميدي للموسيقى، على سبيل المثال.
>> ستيفن KREWSON: ها هي مثال MIDI العام،
تظهر MIDI كنوع من البروتوكول العام.
وأعتقد أننا يمكن أن نفكر في الفرق بين مواصفات
ينبغي أن يكون هناك شيء من هذا القبيل هذه الأداة الأصوات والفعلية
تحقيق تلك الصكوك الأصوات في خط الصوت أو MIDI معين
المزج وهي الفرق بين ربما typeface-- الذي يقول:
بشكل عام، وهذا هو تصميم هذه طريقة معينة لتمثيل
characters-- وخط معين لها حجم معين وجرس،
وهناك تحقيق the--
>> CONNOR HARRIS: ربما مقارنة أفضل شأنه
يكون says-- معيار يونيكود أنه يعطي رقم إلى كل حرف، وحقا
كل لغة في العالم، أو مجموعة واسعة من البرامج النصية من لغة
في العالم، ومن ثم تلك هي المقدمة إلى شيء الرسومية
قبل حزم الخط المختلفة.
وبالطبع، يمكن ان يخطر لك MIDI باسم يونيكود الصوت.
وانها مجرد قائمة of-- تيار كبير الأحداث والصكوك وغيرها،
ويكون لديك منفصلة برنامج، مثل محرف،
لجعل ذلك في شيء أن يكون مسموع.
>> ستيفن KREWSON: إذن لماذا هاسكل؟
هاسكل هو البرمجة الوظيفية اللغة ومتقدمة جدا،
مختلفة جدا من C، تختلف كثيرا عن PHP.
ونحن في طريقنا لمعرفة أن هناك ل سهولة التركيب وظيفة في هاسكل
التي من شأنها أن تسمح لنا يمرون بسرعة يؤلف أو كتابة ما يصل، الكتابة،
شيء من هذا القبيل فرير جاك، هذه الأغنية البسيطة التي
لديه الكثير من أجزاء في أن هي أو تكرار مماثل النفس.
ولذلك فإن هذا سيكون بعض الدافع لماذا
نستخدمه هاسكل، الذي وظائف هم مواطنون من الدرجة الأولى.
>> وكنت أريد أن أتقدم هذا قليلا.
فإنه من السهل قليلا ل يرمز فرير جاك في هاسكل.
ولكن ماذا لو أردنا أن إضافة جزء طبل لذلك؟
ماذا لو أردنا في محاولة لجعل شيء مثل رولاند 808 أو 909 طبل
الجهاز حيث لديك حوالي 16 خطوات مختلفة؟
عادة ما تكون هذه هي فكرت في الملاحظات ال16 كما.
ويمكنك التحكم العالمي الإيقاع، ويمكنك انتقاء
حفنة من أجزاء مختلفة قرع من طبل البص، التصفيق، الافخاخ مختلفة،
القبعات العالية المفتوحة والمغلقة في هذا النوع من القنوات،
ثم يمكنك مكافئ أو ضبط حجمها.
>> وسنرى طريقة لطيفة في هاسكل لتمثيل هذه الخطوة
المنظم مع جميع مختلف تهدئة الامور في هاسكل
يمكننا القيام به مع توليد القوائم والترشيح على القوائم،
رسم الخرائط على القوائم، ورسم الخرائط وظائف على القوائم.
واعتذار سريع.
هذا هو سطحية جدا ورسم سريع بشكل مفرط
من بعض الجوانب من هاسكل وEuterpea،
وهو محددة النطاق اللغة جزءا لا يتجزأ من كتب
في هاسكل لأنواع الموسيقية.
لذا يرجى التحقق من رمز على الانترنت.
اطلاق النار حتى GHCI، وهو غلاسكو هاسكل مترجم مترجم.
وسأكون القيام ببعض هذا في قليلا
حتى تستطيع أن ترى كيف يتم ذلك.
>> وهذا يسمح لك لتحميل في مع the-- بناء الجملة القولون ومن ثم
الامر.
يمكنك تحميل في ملفات.
يمكنك استخدام الاستعراض على تلك الملفات لمعرفة جميع وظائف هذا
موجودة في وحدة نمطية معينة.
ثم كما سنرى، وأنواع والنوع دروس هامة جدا في هاسكل،
حتى تتمكن من check-- دائما خاصة إذا كنت تعمل في DSCL جديدة
مثل هذا، ما هو نوع الموسيقى؟
أعرف عن طريقة رقمية أنواع العمل في هاسكل،
ولكن أنا لا أعرف الكثير عن الموسيقى.
ولكن يمكنك استكشاف الطريقة التي كنت تعريفه باستخدام هذه ر أو نوع القيادة
ثم استدعاء في الخصوص وظيفة أو كائن البيانات.
CONNOR HARRIS: نعم.
إذا كنت تعتقد C ورنة كان hardass حول أنواع،
لا يوجد لديك فكرة عن هاسكل.
والشيء الجيد هو أن هاسكل إذا كان يمكنك الحصول التعليمات البرمجية لتجميع
وإذا كان نوع هاسكل الشيكات، انها على الارجح حق،
لأن النظام هو نوع صارمة جدا.
>> ستيفن KREWSON: نعم.
لذلك أنا فقط أريد أن أذهب through-- ومرة ​​أخرى،
هذا لا تفعل ذلك justice-- عدد قليل من ملامح هاسكل أنه، على الأقل
لcreators-- وتم إنشاؤه في أواخر 1980s من قبل حفنة من الناس،
لجنة من 20 people-- يعتقد كانت مهمة.
وأول ما المدرجة في ورقة
وصف نشأة هاسكل على مدى السنوات ال 20 الأولى أو نحو ذلك
وأنه كان كسولا.
فماذا يعني هذا؟
>> كذلك، فهذا يعني عندما يكون لدينا نوع التعبير، ونحن بحاجة لتقييمها.
وهاسكل يفعل ذلك في مكالمة بواسطة بحاجة الى وسيلة أو بطريقة غير صارمة.
وهذا هو، إذا كان لدينا مجموعة من مكونات التعبير لدينا،
نحن نحاول أن تأخير تقييم من تلك المكونات الفرعية
حتى المطلق minute-- آخر أي حتى أننا فعلا في حاجة إليها.
>> لذلك هذا means-- وهو رائع حقا، وخاصة
إذا نحن نفكر حول التجريد من الموسيقي المنظم خطوة.
تقوم بتشغيله، وتبدأ تشغيل خطوة sequence--
إذا كنت قد عملت من أي وقت مضى مع طبل machine-- وغني فقط إلى الأبد.
لذلك سيكون من الرائع حقا إذا نحن يمكن تكرار هذا في هاسكل.
ويمكننا ان نفعل ذلك مع لانهائي القيم، وبخاصة قوائم لا نهائية.
فمن السهل جدا للكتابة قائمة لا نهائية في هاسكل.
هل يمكن أن مجرد استخدام بناء الجملة أسفل هنا، حيث ترى من 1 إلى 3،
إزالة نقطة نقطة 3 1، و هذا هو قائمة لانهائية
جميع الأعداد الطبيعية تمديد على قدر يمكنك أن تتخيل.
>> أريد أن أعرض ل مفهوم طيات على الفور.
ومرة أخرى، فإن الغرض هذه الندوة ليست
لمعرفة المزيد عن طيات في هاسكل أو وظائف الدرجة الأعلى.
ولكن أريد فقط أن ندخله الى إعطاء إحساس دقيق لكيفية غريب
هاسكل هو ومدى قوته.
وعلى وجه الخصوص، ونحن في طريقنا إلى be-- عندما نفعل لدينا أجزاء مختلفة طبل،
ونحن في طريقنا إلى أن قوائم التلاعب أرقام، قابلة للطي لهم على بعضها البعض.
وللقيام بذلك، وسوف نقوم يكون استخدام الخرائط والطيات.
>> هناك النقابي الصحيح أضعاف، وهو هذا الحق واحد
here-- 1 ناقص الكمية، 2 ناقص الكمية، 3 ناقص 0.
وبناء الجملة ل أضعاف، كنت تعطي أضعاف
القيمة الأساسية وبعد ذلك operation-- في هذه الحالة، الجمع أو الطرح.
لقد أظهرت كلتا الحالتين.
وبعد ذلك هناك من تراكم التي يتراكم على القائمة بأكملها،
تطبيق هذا المشغل زائد أو ناقص، ومن ثم تتراكم عليه.
ولذلك فإن هذا سيكون the-- إذا كان يطلق عليه مع أضعاف ص زائد 0، بدءا 0،
فإننا ثم جمع كل الأرقام في تلك القائمة.
وهذا هو قائمة 1-3.
CONNOR HARRIS: إذن لوضعها أخرى طريقة، أضعاف ص يأخذ ثلاث حجج.
هناك وظيفة أن نفسه يأخذ حجتين،
ثم هناك قيمة مطلقة، وهناك قائمة من القيم.
وما عليك فعله هو أن تأخذ قيمة بداية، القيمة الأولى،
وضعها في وظيفة.
ماذا الخروج، تأخذ ذلك، الأعلاف التي
في وظيفة القيمة الثانية، ما تحصل عليه،
تأخذ ذلك، وإطعام التي في وظيفة من قيمة الثالثة.
ثم إذا ذهبت إلى أسفل هذه اللائحة بأكملها بهذه الطريقة،
وأنت تسير لتحصل في نهاية المطاف بعض القيمة المفرد هذا
من نفس نوع ما كنت بدأت خارجا مع ومن نفس النوع
كما الأشياء في القائمة، ومن ثم هذا هو العائد نتيجة لأضعاف R.
ستيفن KREWSON: لذلك على وجه الخصوص، هذه هي وظائف الدرجة الأعلى،
لأنهم يأخذون أخرى وظيفة واحدة من الحجج.
>> CONNOR HARRIS: نعم.
إذا كنت قد استخدمت بعض الآخر languages-- أعرف R، (غير مسموع)
لغة لها هذا، ودعا الحد.
قد يكون لديك وظائف مماثلة في لغات أخرى، ودعا فقط
أشياء مختلفة.
>> ستيفن KREWSON: و ما هو لطيف حول أضعاف R
في هذه الحالة هو أن أضعاف R يمكن أن تعمل مع قوائم لا نهائية.
حتى في هذا القاع، وهذا P5 يولد الملاحظات التي
قيد التشغيل في خطوة المنظم ل جزء طبل، طبل الجزء الخامس،
وربما انها الكونغا طبل أو شيء من هذا.
وهذا هو عمدا طريقة منفرجة كتابة هذا،
ولكن انها متعة، ل فإنه يدل على الكثير
من الأشياء عن هاسكل وEuterpea.
>> لذلك أضعاف R من هذه القولون هو colon-- مجرد المشغل أن يدفع الأمور
معا على list-- دعا فارغة القائمة، التي ليست سوى الأقواس فارغة.
وادعو ان في هذه القائمة لا حصر لها.
هذا هو في الواقع القائمتين وأضاف معا إلى هنا.
قائمة 1 فاصلة 6 نقطة نقطة هي 1 و 6 و 11 و 16.
Haskell-- حتى في مجرد عدد قليل من الشخصيات، كنت
يمكن أن تولد كامل تسلسل الأرقام
أن خمسة أرقام بصرف النظر تمتد على إلى ما لا نهاية.
وأنا prepend إلى أن هذا list-- قليلا أقصر
3، 8، 21-- فقط لتظهر لك كيف يمكنك سلسلة القوائم.
>> ثم لقد مطوية على نفسها.
وهذا ينتهي به الأمر مجرد نوع من عملية هوية، ولكن هذا لا حصر له.
وأضعاف R تستطيع أن تفعل ذلك، لأنه تقييم بتكاسل، كما في أعلاه.
إذا كان لدينا 1 و2 و 3، يمكننا فقط قوس من بقية كاملة منه.
هذا لن تعمل ل زائد أو ناقص، لكنه
ستعمل هذه القولون عملية هوية على القائمة.
>> لذلك كيف نستخدم عمليا أنه إذا كنا لدينا قائمة طويلة من الأشياء ما لا نهاية؟
كذلك، يوفر هاسكل الكثير من functions--
وتبدو أكثر إلى هذه في time-- الخاصة بك مثل اتخاذ
التي تقول، حسنا، نحن توليد هذه القائمة لا حصر لها،
لكننا ذاهبون لمجرد اتخاذ بعض عدد منه وفي هذا case--
سنرى ذلك لاحقا في لدينا code-- آلة الطبل
GM هو مجرد نوع من العالمية متغير لعدد من الخطوات
في التسلسل.
على آلات لفة في I أظهر لكم، وهذا عادة 16،
ولكن لقد نفذت مع 32.
لا يهم حقا.
>> هاسكل هو أيضا نقية، لذلك فقد قوي الكتابة الثابتة التي كونور ألمح إلى.
لذلك هي وظائف الرياضية في sense--
انهم أكثر الرياضي انهم مضمونة
لعدم الوصول أو تغيير أي نوع من متغير أو إجراء الإدخال أو الإخراج.
حتى إذا كان لديك وظيفة، انها حتمية.
فإنه سيعود نفسه دائما القيمة في حالة البرنامج
أو سيبقى على حاله.
هناك، بالطبع، استثناءات monadic لهذا، ولكن هذا خارج نطاق عملنا.
>> CONNOR HARRIS: نعم.
ماذا يعني هذا، على الرغم من وجود هي عدد قليل من المهم (غير مسموع)
عواقب ذلك.
واحد هو أنه من السهل جدا ل parallelize برامج هاسكل.
لأنه إذا كان لديك، أقول، وهي وظيفة من ذلك
يجب أن تعمل على مليون القيم، إذا هل تعلم أن وظيفة سوف أكون دائما
نعطيه نفس القيمة إذا يمكنك إطعام في value-- معينة
إذا كنت [غير مسموع] و 1، و من 2، ثم و من 3 أو whatnot-- و من 1
لا أريد أن أكتب خارج إلى ملف أو تفعل شيئا
التي من شأنها أن تغير قيمة F2.
يمكنك تقسيم للتو هذه الوظيفة إلى مليون مختلف الآلات أو مليون
المواضيع المختلفة أو أيا كان، الحصول على جميع الردود الوراء،
الحصول على جميع القيم العودة مرة أخرى، وبعد ذلك كل شيء.
لذلك من السهل جدا أن parallelize الأشياء.
>> الجانب السلبي هو أن المدخلات والمخرجات خاصة
تنسجم مع نظام نوع بطرق معقدة للغاية.
ونحن لن نذهب إلى هذا الحق الآن، ولكن أنا ندعوك للنظر في بعض الموارد
على الانترنت إذا كنت ترغب في معرفة المزيد عن ذلك.
>> ستيفن KREWSON: حتى اكتب classes-- وهذا
دروس was-- من أنواع اخترعت لحل
مشكلة المشغل الحمولة الزائدة.
لذلك أردنا أن يكون المساواة بين أنواع مختلفة من الأشياء.
بالطبع، يمكن أن نفكر of-- المساواة بين أنواع رقمية
من السهل جدا للتفكير، ولكن ماذا عن المساواة بين القوائم؟
ماذا عن المساواة بين هياكل البيانات ساق الشجرة؟
وهذا هو كل شيء ممكن في هاسكل بسبب نوع الطبقات.
>> لذلك إذا قمت بتعريف type-- بيانات معينة وهنا، وهذه هي الملاعب الموسيقية.
نحن نحصل في النهاية الى بعض الموسيقى الكمبيوتر.
لذلك لدينا C، C حادة، وهلم جرا وهكذا دواليك.
وهم ينتمون إلى مجموعة من فصول نوع مختلف.
EQ-- أنهم ينتمون إلى فئة نوع EQ.
وهذا يعني أنها تدعم عمليات المساواة.
حتى تتمكن من تقييم ما إذا كانت واحدة سلسلة من الأوليات الموسيقية
هو نفس واحدة مختلفة.
>> وهم ينتمون إلى فئة الترتيبية.
وهذا يعني ان هناك ويأمرون هذه.
D يأتي بعد C. C شارب يأتي بعد C كذلك.
وهم ينتمون إلى فئة عرض، وهو ما يعني أنها يمكن
سيتم طباعتها إلى وحدة تحكم أو محطة.
انهم ينتمون الى الفئة المذكورة، التي
يعني أنه على الرغم من هذه هي الشخصيات،
لديهم رقمية الكامنة التمثيل ابتداء من الساعة 0
والخروج من خلال بيد أشياء كثيرة هنا، 20 أو نحو ذلك،
أو 30 أو 40، ربما.
>> CONNOR HARRIS: وعندما لدينا نوع البيانات
أن derives-- مع هذه الكلمة "deriving--" فئة نوع معينة،
فهذا يعني أن المترجم ستحاول لبناء شيء تلقائيا.
لذلك ربما سترغب في تحديد نوعية مختلفة.
فأنت تريد أن تعرف C حاد كما يساوي D شقة، على سبيل المثال.
مع هذا البناء هنا، وأنا لا أعتقد C شارب
وD شقة ستكون على قدم المساواة، ل سوف المترجم تلقائيا
أقول كل قيمة ممكنة مختلفة يختلف عن كل الآخرين.
>> ولذلك فمن الممكن تجاوز وتطبيقات الافتراضية
هذه الأنواع من الطبقات.
مرة أخرى، أن ننظر في إشارة إذا تريد معرفة المزيد عن ذلك.
ستيفن KREWSON: و هنا، في الواقع، وهذا سوف
تكون مفيدة لأننا عندما رمز في وقت لاحق.
ونحن نرى بعض مشغلي أقحم لتكوين متتابعة،
تكوين مواز، وهكذا إيابا، هذه الإيجابيات وعلامات المساواة
وتحيط بها كولون.
هذا يعني أننا يمكن أن تقوم به هذه مختلفة البدائيون الموسيقية واحدا تلو الآخر.
هذا هو تكوين متسلسلة.
>> أو يمكننا اللعب بها في موازية في نفس الوقت.
لذلك أنا يمكن أن يكون لها قيمة الموسيقية، ثم وهذا يساوي وكولون،
أقحم مشغل تكوين مواز، واللعب بها كنوع من وتر.
ونحن في طريقنا للاستخدام هذا عندما كنا الجمع
جزء طبل مع شركائنا قليلا فرير جاك أغنية
للعب هذه السلاسل اثنين من القيم الموسيقية في نفس الوقت.
>> التمشيط كاري is-- كان الماضي اسم هاسكل كاري، الذي
يدعى الصورة هاسكل بعد.
وهذا يسمح لنا أناقة جميلة عندما نكون
كتابة كل هذه مختلفة وظائف أو الفلاتر التي نحن
سيكون رسم الخرائط على قوائمنا.
وظيفة من اثنين arguments-- و x و y--
يمكن تمثيل و من س إلى ص تطبيقها.
لذلك فمن وظيفة وسيطة واحدة وترجع
وظيفة أخرى من وسيطة واحدة.
ولذلك فإن هذا يعني أننا يمكن تعيين وظيفة و من العاشر على قائمة ذ ل.
CONNOR HARRIS: هل تريد أن تعطي مثالا على ذلك؟
ستيفن KREWSON: نعم.
لدي مثال هنا من بعض الأشياء سوف نكتب.
حتى تكرار 2-- جيدا، تكرار سيأخذ
قيمة واحدة، وهو كيف كثير مرات لتكرار شيء،
وبعد ذلك سيتم اتخاذ value-- عادة ما تكون قائمة أو شيء من هذا.
حتى هنا، نحن رسم الخرائط تكرار 2 على قائمة أخرى.
>> حتى إذا كنا الخريطة تكرار 2، إذا كان لنا أن تكرار 2 تطبيق
إلى العنصر الأول من هذا list-- و هذه هي قوائم phrases-- الموسيقية
سوف تنتج اثنين من "أنت sleeping--" حتى أنت نائم، وأنت نائم.
حتى الآن لدينا اثنين.
لكن تكرار يأخذ اثنين الحجج، ولكن لأننا
التمشيط ثم رسم الخرائط، نحن يمكن أن تمثل تكرار 2
على أنها قد عاد بوصفها وظيفة من argument-- واحد فقط بتكرار مرتين.
ومن ثم نقوم بتطبيق ذلك على كل عنصر من هذه القائمة من العبارات.
>> وCONCAT هو حزقيل عملية لتسطيح قائمة.
بسبب تكرار 2 الإرادة إنتاج قائمة من القوائم.
وهذا هو هذا النموذج وسيطة هنا.
وحتى ذلك الحين يمكننا CONCAT أو تتسطح أنه من مرتين.
CONNOR HARRIS: A بساطة مثال على الضمادة،
إذا كنت like-- تصور و هو مجرد وظيفة الضرب يأخذ اثنين
الحجج ويعود منتجاتها.
حتى إذا كان لديك و 4 5، انها 20.
ولكن يمكنك التفكير في هذا الأمر also-- لديك وظيفة و 4
أن يأخذ حجة والعوائد أربع مرات هذا argument-- فقط
التطبيق الجزئي الذي وسيطة واحدة فقط 4.
وإذا كنت تغذية و من 4 5، من شأنها أن تعطيك 20.
وهذا هو أبسط مثال على الضمادة.
انها عادة ما تكون واحدة من تلك الكتب.
>> ستيفن KREWSON: لامبدا التعبيرات أو وظائف مجهول
هي السمة المميزة آخر هاسكل.
حتى إذا كنا بحاجة إلى اثارة وظيفة القليل تكرار الحياة،
ولكنهم يقولون انها ليست في المكتبة القياسية،
يمكننا استخدام جملة مشابهة لما يلي.
وسنقوم نسيم على هذا.
شيء واحد سوف نرى الكثير من في آلة الطبل ونحن إجراء المكالمات
إلى ما يسمى تصفية، الذي مثل من قبل،
هو تعيين وظيفة أكثر من قائمة، ولكنها ل
تعيين في وظيفة منطقية.
>> لذلك لدينا هنا مثال من ومجهول
وظيفة منطقية المعرفة التي فقط يأخذ القيم الزوجين.
هذه ليست بالمعنى الدقيق للكلمة وظيفة غير معروفة.
لكنه مع تعريف أن بناء الجملة من أجل الإيجاز،
وهذا يستغرق سوى X وحدة n--
CONNOR HARRIS: نعم.
لذلك و هي وظيفة حجتين ن وع
وترجع وظيفة التي هي في حد ذاتها وظيفة من وسيطة واحدة، س هما.
ستيفن KREWSON: I مشغلي أقحم المذكورة أعلاه.
ما هي مشغلي أقحم؟
حسنا، مشغلي أقحم هي بالطريقة العادية التي نمثلها العمليات،
أقول، في mathematics-- 2 زائد 2 بدلا من المشغل زائد
ثم حجتين 2 و 2.
CONNOR HARRIS: انه دعا عكس تدوين البولندية، الذي هو
فترة أشك في أن أي منكم يعرف.
>> ستيفن KREWSON: الحق.
عكس تدوين البولندية أو البادئة.
ولكن هاسكل قررت استخدام مشغلي أقحم.
لذلك فان هذه هي بعض تلك المخصصة التي
يتم تعريف ل Euterpea DSCL في هاسكل.
لذلك كان هذا التكوين تسلسلي.
كان هذا التكوين الموازي، وهذا تم اقتطاع تكوين متوازي.
وسنحتاج أن مع آلة الطبل لدينا،
لأننا سنستخدم آخر مشغل في ذلك الصفوف (tuple) قليلا هناك
العزف على آلة الطبل على طول مع شركائنا فرير جاك أغنية.
وآلة الطبل لدينا سيكون لانهائي.
أنه يلعب فقط إلى الأبد.
لكن الأغنية فرير جاك ليست كذلك.
انها ليست طويلة.
انها ليست سوى عدد قليل من الحانات.
لذلك نحن بحاجة لوقف آلة الطبل كما حالما تأتي قيمة الموسيقية أقصر
لنهاية.
وأن المشغل infixed غير مفيدة السوبر مع ذلك.
>> وتدوين أقحم مثل هذا هو نوع من لطيفة،
لأن نقول لديك وظيفة مثل الاقتباس، الذي يعطي قسمة عدد صحيح
x عن طريق شيء else-- آسف، التي ينبغي أن تكون أ و ب.
هل يمكن الكتابة عليه كما اقتبس من ب.
لذلك إذا كنت عنصر put-- هو مثال آخر على ذلك.
س عنصر في بعض القائمة، إذا وضعت في Backticks، يمكنك استخدامها.
على الرغم من انها ليست رمزا مثل زائد أو ناقص أو مرات،
يمكنك استخدام اسم وظيفة من هذا القبيل في Backticks
كمشغل أقحم، وهو بارد جدا.
CONNOR HARRIS: مرة أخرى، وهذا هو كل السكر فقط النحوي، حقا.
أنها لا تؤثر على جوهر اللغة.
>> ستيفن KREWSON: لذلك نحن نرى هنا ل العبارة الأخيرة لدينا فرير جاك أغنية،
لقد لعبت بعض الحبال قليلا أو ثلثي باستخدام تكوين الموازي
المشغل.
هذا هو طريقة أخرى للقول بعض ما أننا كنا في قوله.
لذلك يمكنك تعيين وظائف من حجة واحدة على القوائم.
CONNOR HARRIS: مرة أخرى، والمراجع للكتب المدرسية التمهيدية Haskell--
سيكون لديك كل هذا في ذلك.
>> ستيفن KREWSON: حتى هنا جميلة خط رئيسي في خطوة المنظم
سوف نلقي نظرة على استخدام قائمة على الفهم.
ونحن نرى هنا هو ذلك العنصر في المشغل الثابت في الاقتباس الظهر.
لذلك إذا كان x عنصرا من قائمة في العاشر، ثم سنقوم باستدعاء وظائف الايثيلين.
لذلك الايثيلين هو مجرد وظيفة قرع.
الأمر يحتاج إلى بعض ص قيمة هذا جزء من مجموعة يحدها من جميع
أصوات قرع مختلفة التي رأيناها في الشريحة السابقة،
وبعد ذلك يعطي أن مدة مذكرة الربع.
إلا فإنه يعطيها رقم الإستمارة، ورقم الإستمارة هو مجرد بقية الربع المذكرة.
>> لذلك هذا هو بناء شيء جميل.
لدينا قائمة من العناصر، و وسوف نقوم حلقة على بعض من قائمة واحدة
إلى قيمة الحد الأقصى من خطوتنا المنظم.
وعندما نكون في ط معين في أن قائمة واحدة إلى قيمة الحد الأقصى،
إذا أنني عضو في هذا مجموعة إنشاؤها في هذه الوظيفة،
جيدا، ثم ننتقل عليه في مذكرة قرع.
خلاف ذلك، ونحن مجرد لعب قسطا من الراحة، والتي هذا يعني، نحن فقط يبقى صامتا.
ويمكننا أن نرى هنا أنه في هذه القائمة فهم لغوي،
س يتم ملؤها من قبل هذا شيدت لائحة واحدة
لحجم العالمي للالمنظم.
CONNOR HARRIS: نعم.
بناء الجملة الأساسية لل comprehensions القائمة
قوس، والقيمة التي تنطوي بعض المتغيرات، وبار،
القيم الممكنة للمتغيرات أنفسهم، أغلقت قوس.
وإذا كنت قد فعلت مجموعة تدوين البناء في أي نوع من حصة الرياضيات،
كنت قد وضعت 2N مثل أن n هو في أو n هو في ض.
تشبه thing-- هذه الرموز من المفترض أن تكون موحية
من هذا التدوين الرياضي.
ستيفن KREWSON: ويمكنك تطبيق المسندات متعددة
ومرشحات متعددة في قائمة الفهم، وهو لطيف جدا.
جبري نحن types-- لن تبقى طويلا هنا.
ليس هناك فكرة جيدة في هاسكل أو جيدة، فكرة واضحة
كيفية اتخاذ، مثلا، الافتراضي المعلمة إلى وظيفة أو شيء من هذا.
في بيثون، وهذا في غاية السهولة.
يمكنك فقط أن أقول مع يساوي على إعلان وظيفة،
قيمة افتراضية في يتم توفير حالة لا شيء.
>> في هاسكل، هل يمكن ربما استخدام ربما اكتب ربما،
الذي يأخذ إما لا شيء أو قيمة من نوع مجرد.
لذلك نحن استغلال ذلك في آلة الطبل لإتاحة الفرصة لنا لإعطاء حجم اختياري
المعلمات إلى كل جزء من الأجزاء البرميل.
حتى يعطينا وسيلة من وجود EQ أو وحدة تخزين على قناة معينة.
>> CONNOR HARRIS: في أمثلة هاسكل أخرى،
قد نرى ربما تستخدم ل الوظائف التي قد تفشل.
هذا هو واحد مشترك.
>> ستيفن KREWSON: ويمكنك تزويد نوعا من رسالة الخطأ كإعداد افتراضي.
وهذا مفيد خصوصا عندما كنت تفعل I / O في هاسكل.
يمكن أن تكون الحيل.
CONNOR HARRIS: أو ل مثال مشابه، والتفكير
وظيفة ينطوي على تقسيم معلمة التي قد تكون 0.
ويمكن أن ظيفة العودة ربما أيا كان.
حتى اذا لم يكن هناك القسمة على 0، فإنه سيعود فقط أيا كان.
وإذا كان هناك القسمة 0، فإنه سيعود شيء
كوسيلة ليشير إلى الخطأ.
لأن ذلك أحد كتابة الصارمة جدا هاسكل ل
غير أنه لا يوجد real-- الاستثناءات هي مربكة، في الأساس،
معالجة الخطأ هو حرج.
وهذا هو واحد جدا طريقة شائعة للقيام بذلك.
>> ستيفن KREWSON: حتى الآن نحصل إلى شيء آخر العقل والانحناء
حول هاسكل، الذي هو نمط مطابقة وظيفة التعاريف.
وأظهر لي كنت في الشريحة الأخيرة الإعلان عن تسلسل خطوة
وظيفة، والتي أخذت القيمة ربما، ثم عدد صحيح، ثم قائمة [إينتس]،
ثم يعود سلسلة من قيم الموسيقى هناك المشروح
مع كل الملعب وحجم.
>> حتى تلك الحجج الثلاث يمكن أن يكون نمط يقابل بالطريقة التالية.
ونحن دائما نريد أن تأكد من قيام حالة قاعدة أو حالة الخروج أولا.
وهذه سفلية يمكن فقط تفسيره
بمعنى أي القيمة التي هناك.
لذلك إذا أردنا الحصول على دعوة إلى الخطوة تسلسل مع بعض القيمة، قيمة أخرى،
ثم قائمة فارغة، ما نريد للعودة هو الصمت عادل وبقية 0.
>> وبدلا من ذلك كونها قائمة فارغة أو 0،
انها باقي 0، لأننا التعامل مع نوع الموسيقى،
والقائمة فارغة من الموسيقى النوع هو مجرد بقية من أي مدة.
فإنه ليس من الموسيقى.
ومن ثم فإننا نرى اذا حصلنا على خطوة تسلسل مع الخامس للحجة الحجم،
ص لأداة احترازي الحجة، ثم قائمة في العاشر.
>> ثم نقوم به بعض الاشياء.
على وجه الخصوص، ونحن نطبق هذه القائمة الفهم،
ونحن أداء بعض العمليات على القيمة ربما
لتحويله إلى قيمة رقمية بحيث فإنه يمكن ثم المذكورة واستخدامها
لتحديد الصك.
مرة أخرى، وهذا هو قليلا قليلا عمدا inconcise
فقط لاظهار كل الأشياء غريبة يمكنك القيام به في هاسكل كما كنت
نلقي نظرة على ذلك في الوقت الخاص بك.
>> حسنا.
لذلك نحن في النهاية الحصول على ل تفعل ما شرعنا في القيام به،
وهو جعل بعض الموسيقى الكمبيوتر.
لذلك نحن ذاهبون لمحاولة جعل الأغنية فرير جاك.
لذلك هناك كم عدد عبارات في فرير جاك؟
أربعة.
رائعة.
وما هو لطيف هو أن انهم المتكررة كل
على نفس القدر من الأوقات، التي هي سنتان.
>> لذلك لدينا أربع عبارات كل المتكررة مرتين.
وعلى وجه الخصوص، وانهم في جولة.
وهناك الكثير، العديد من الطرق لتنفيذ
جولة يمكن أن يكون متعة القيام به.
لقد فعلت ذلك في جميلة طريقة بسيطة هنا،
الذي هو مجرد لconstruct-- الخط الدالة تأخذ على قائمة من القيم الموسيقى
ويحولها إلى تكوين متسلسل عن طريق تطبيق هذا التكوين متسلسل
المشغل.
>> وبعد ذلك تأخير مناطق مختلفة عن طريق جعلها تبدأ مع بقية.
لذا أبدأ مع بقية اثنين من التدابير، وبعد ذلك بقية أربعة تدابير،
وبعد ذلك بقية ستة التدابير، ثم الجولة
يعمل، وكما نعلم جميعا هذه الأغنية.
ونحن نرى اثنين من شروح أو إدخال تعديلات على القيم الموسيقى
المضمنة في هذا متسلسلة ترتيب عناصر الموسيقى.
لدينا حجم الوظيفة.
هذه هي وظيفة لتعليم الموسيقى مع حجم معين.
هذا هو مثال جيد من MIDI إشارة تشغيل
0-127، بت سبعة المعلومات التي يمكن حملها.
>> وthen-- رأيناه جدا لفترة وجيزة، ولكن MIDI العام
قائمة بجميع الأدوات المختلفة.
وليس هناك مجموعة كبيرة منهم.
إذا كنت تستخدم محطة عمل الصوت الرقمي، مثل ابلتون لايف أو أدوات برو،
هناك مجموعة واسعة بشكل لا يصدق من تخليق والصكوك VST.
ولكن مستوى MIDI فقط لديه قليلة، أو عدة عشرات.
وبعضها مضحك.
اعتقدت أنه سيكون من المرح إذا لعبنا الصك صك MIDI
طائرة هليكوبتر، ثم الطريق المقبلة من خلال الجولة،
فعلنا لوحة موالفة، ثم من هذا الاعلان مبتذل موجة مربع موالفة،
ومن ثم التعبير عن طين، والتي هي غير واضحة قليلا على بلدي MIDI سيئة
المزج، لكنهم موافق.
>> ومن ثم فإننا نرى هذا اسمحوا وفي جملة من هاسكل،
ثم أننا نلعب كل هذه الأجزاء معا
مع المشغل تكوين متوازي.
وربما نتمكن من اظهار بعض من ذلك.
وهنا رمز.
ويمكنك ان ترى في C، سأكون هناك الكثير من تطهير الحلق ووضع
رمز الجدول قبل يمكن جعل الموسيقى من هذا القبيل.
أو أي برمجة أخرى اللغة، وكنت على الأرجح
يجب أن تتفاعل مع نوع من مكتبة أو API، ووضع كل شيء،
ثم عليك أن تنظيف.
ولكن هنا في هاسكل هو، كما أعتقد، مرة واحدة يمكنك الحصول على تعليق منه، لا يصدق
قراءة ومعبرة جدا.
لذلك ليس هناك تنفيذ من فرير جاك.
حسنا.
الآن نريد أن نضيف قرع، وهذا هو قليلا أكثر فوضوية.
لذلك دعونا نلقي نظرة على الشرائح.
وبالتالي فإن الفكرة الكبيرة هي لجعل حفنة من القوائم أو أجزاء.
على تلك الآلات لفة في، هناك كانت عادة حوالي ربما ثمانية
إلى 10 أو إيقاع قرع أجزاء.
ومن ثم استخدام مجموعة من التقنيات.
وتحدثنا عن these-- باستخدام طيات، والمرشحات، وظائف امدا،
تعيين أكثر من القوائم لتوليد القيم في بعض مجموعة 1 إلى ص، ص 16،
أو 32 خطوات في التسلسل.
>> ثم إذا كان هناك قيمة في هذه القائمة كما أننا من خلال تشغيل المنظم،
الذي يمر بها مرارا و أكثر، فإنه يتحول على تلك المذكرة،
ويحصل أثار تلك العينة.
هنا جميع طرق غريبة مختلفة خطرت لي لتوليد الملاحظات.
في محاولة على مبلغ نصف بنفسك.
انها سوف تبدو باردة.
إذا سمح الوقت، سوف نذهب من خلال ذلك.
لكنه الآن حق، وانا اعتقد علينا أن التجريبي ما لدينا.
دعونا نأمل أن يكون هذا يذهب موافق.
>> لذلك هذا هو GHCI.
ونحن سوف تحميل ملف لدي دعا song.lhs،
وهو ملف أنا فقط يظهر لك.
OK، عظيم.
كما قال كونور في وقت سابق، أنه المترجمة، IT نوع فحص،
لذلك أنا أستطيع التنفس أسهل كثيرا.
انها ليست الذهاب الى تفجير لي.
>> أنا لم أريد أن تظهر لك شيئا مفيدا.
يمكنك أن ترى أن ل وحدة تحميل دعت 50.
يمكنك تصفح تلك الوحدة.
وهذا هو لطيف جدا حول doing-- ربما ما
تفعلونه في هاسكل ليس دعا وتطوير البرمجيات،
ولكن يمكنك أن تفعل الكثير من الاشياء متعة بنفسك.
والعمل هو لطيف حقا كما مقارنة مع الكثير من لغات أخرى،
لأنك يمكن أن ترى في الواقع طريقة قراءة ما يجري.
ولذا فإننا نرى أن لدينا كل هذه العبارات، التي
هي قوائم الملاعب الموسيقى، وبعد ذلك بناء هذه تصل إلى شيء أكبر،
وهي أغنية الموسيقى.
انها وحدة الموسيقية.
وبعد ذلك يمكن أن تقوم به كل هذا مع وظيفة تسمى تشغيل الموسيقى.
يمكنك أن ترى أن إلى هنا.
الذي لعب فقط.
>> وأود أن say-- لم أتحدث عن هذه علامة الدولار هذا في كل مكان.
الدولار هو المشغل أقحم آخر.
لكنه لا يملك أدنى الأسبقية أي مشغل، والتي بفعالية
يعني أن كل شيء على يسار الدولار
والحق من الدولار، ونحن في طريقنا للحصول على تقييم قبل ذلك.
لذلك نوع من مثل آخر طريقة إضافة قوسين.
>> CONNOR HARRIS: انها في الاساس وظيفة التكوين.
ويضمن لك لا have-- إذا لديك وظائف جانبي أو أقحم
المشغلين على جانبي، فإنها لن ربط عبرها وتعطيك
نتائج غير متوقعة.
>> ستيفن KREWSON: لذلك نحن can-- استخدام هذا، يمكن أن نطلق عليه.
أولا، فإننا سوف يلعب من دون الطبول.
هذا هو هليكوبتر، المروحية MIDI.
>> [عزف الموسيقى]
هناك موجة مربع.
طين صوت.
ويمكن أن تذهب حقا البرية مع هذا.
أنا اختار واحد بسيط جدا، لأنني كنت أعرف لا ينبغي لي أن قضم
أكثر مما يمكن أن مضغه.
فقط يبقيه بسيط جدا لعرض الأفكار الرئيسية.
ولكن بعد ذلك كنت مثل، لدينا حصلت على إضافة بعض الطبول على ذلك.
فقط لأن هذا هو قليلا لا يمكن اختراقها،
وأنا لم تستخدم اسم الأجزاء طبل،
I تعيين them-- لأنهم جزء من تلك الفئة تعدادها،
I معين لهم [إينتس].
واحد هو وكأنه طبل البص.
الصفر هو كذلك.
سبعة هو قبعة عالية.
وهبوطا في المكان الذي يكون فيه وظائف الحصول على أكثر من ذلك بقليل عشوائية،
هذه هي مثل الطبول الكونغا.
>> لذلك إذا كنت تعتقد about-- ربما المتعة وسيلة لتنفيذ آلة الطبل
هو استخدام منظم للغاية أنماط على الطبل باس الخاص.
هكذا على سبيل المثال، على تصفية على قائمة بكل ما يعيد
1 عندما انها اتخذت الوحدة 04.
حتى أحصل على 1، 5، 9، 13، 17-- هذا حتى هو أول فوز كل التدبير.
>> ثم هذا هو نفسه تحولت شيء أكثر من خطوتين.
لذلك هذا هو شاذ.
ولذلك فإن هذا سيكون ما يشبه قبعة عالية.
ثم مرة أخرى، إلى هنا، انها عشوائي قليلا،
لأننا نقوم الطبول الكونغا.
ولدي بعض maracas إلى هنا، أيضا.
>> حتى أتمكن من استدعاء لعب آلة الطبل، ولكن سيكون تستمر إلى الأبد،
وأنه قد بدء الاستيلاء على ما يصل كافة الذاكرة في نظام بلدي.
ولذا فإنني سوف استدعاء هذه الدالة تلعب الموسيقى، والتي كما سنرى،
استخدام تكوين مواز اقتطاع للعب دينا القليل فرير جاك أغنية
جنبا إلى جنب مع هذا الجهاز غريبة البرميل.
لذلك دعونا نلقي نظرة.
ويرجى تحسين بلدي ترتيب جميع أجزاء البرميل.
لا تخصصي، ولكني كان الكثير من المرح القيام بذلك.
>> [عزف الموسيقى]
>> وذلك بطبيعة الحال، هذا هو كل شيء قليلا لا متعة
إذا لم نتمكن من تحويله إلى درجة ذلك ربما
يمكن تفسيرها قبل أداء البشري.
ولذا فإنني لن تشغيله هنا.
لقد ولدت بالفعل الملفات.
يمكنك أن ترى أن هناك نقطة يليبوند الملف-- وهذا
سوف يكون لي سغ] على ل Connor-- وملف نقطة MIDI،
وملف PDF نقطة، وهو ما سوف يليبوند تولد في نهاية المطاف.
>> ولكن هذه هي تلك الكتابات، وسوف أكون مجرد تشغيلها مع خيارات مساعدتهم.
إذا كنت تحصل على هذه والتي تعمل مع Euterpea، يمكنك إنشاء ملف MIDI.
ثم من ملف MIDI مع هذا البرنامج MIDI 2LY،
يمكنك إنشاء ليلى ملف البركة، ثم
يمكن أن تولد PDF من النتيجة.
وينبغي لنا أن نلقي نظرة على هذا.
لذلك سوف كونور ربما تظهر كيفية تعليم هذا أفضل،
ولكن هذا هو فرير جاك كما التي تم إنشاؤها بواسطة لي في Euterpea.
مجرد في C. I يجب أن أحسب أنه ما هذا الإختراق انها فعلا في.
ولكن هذا هو خط أنابيب ل كيف يمكنك أن تفعل ذلك مع ذلك.
دعونا نتحدث أكثر عن يليبوند.
>> CONNOR HARRIS: OK دعونا نرى.
لم أذكر لكم تعلم أنت هاسكل؟
ستيفن KREWSON: أوه نعم.
تحقق من تعلم أنت هاسكل.
انها في الموارد.
هذه هي الطريقة التي بدأت التعلم، وانه لشيء رائع.
التعلم ليس البكم.
>> CONNOR HARRIS: حتى انها على الانترنت.
حتى رجل يدعى (غير مسموع) learnyouahaskell.com، بدون مسافات.
قواعد مريض.
ستيفن KREWSON: إنه يتضح، أيضا.
CONNOR HARRIS: فما هي يليبوند؟
انها البرمجة المعلن لغة الموسيقى التنضيد.
لذلك يمكنك declarative-- التفكير في أشياء مثل HTML،
حيث كنت لا saying-- HTML لا يقول كيف ينبغي متصفحات الويب
تقديم صفحات خطوة بخطوة.
انها مجرد هذا القول هو وصفا نصيا
ما تريد صفحة لتبدو وكأنها.
>> وبعد ذلك أيضا برنامج أن يجمع هذه اللغة،
أو قراءتها في وثم في الواقع لا التنضيد بالنسبة لك،
ويبصق هذه رائعة أبحث عشرات PDF.
يمكنك أيضا الحصول على شكل PNG أو أيا كان.
وهناك طريقة جيدة للتفكير من هذا قياسا
غير أن اللثي هو نوع من مثل LillyPond، ولكن لمجرد التنضيد العادي.
وذلك بدلا of-- انها ليست WYSIWYG، ما تراه
هو ما تحصل عليه، مثل، ويقول خاتمة هو، أو سيبيليوس،
أو Microsoft Word، حيث يمكنك كتابة في في الوقت الحقيقي ومشروع الأمور في الوقت الحقيقي
ونرى تغييرات على الفور.
>> ويستند ذلك النص.
لديك لجمع الخاصة بك عشرات باستخدام برنامج منفصل
والخروج ملفات PDF في وقت لاحق.
هذا هو أقل قليلا ومريحة للاستخدام إذا كنت
يحاول الكتابة مباشرة في النتيجة، وكنت
يحاول أن يؤلف على الكمبيوتر.
ولكن هناك الكثير من المزايا لذلك.
واحد، وأنها لا تبدو أجمل كثيرا، لأن LillyPond يمكن في الواقع
تأخذ من الوقت للقيام قرارات تخطيط سليم،
على عكس سيبيليوس أو النهاية، والتي لها لجعل الخوارزميات للخطر لذلك
أنها يمكن عرض الأشياء في الوقت الحقيقي.
>> ذلك هو السبب في LilyPond-- رسومات الحاسوب صعبة.
إذا كنت تريد أن تفعل أي شيء مع الموسيقى وتريد كتابة عشرات،
كنت لا تريد أن تكتب كل شيء بنفسك
بدءا من كيفية رسم الموظفين وكيفية رسم دفاتر الملاحظات.
إنه صعب جدا. تم القيام به من قبل.
أنت بخير.
>> إذا كنت ترغب في استخدام النهاية أو سيبيليوس، تنسيقات الملفات لتلك الأشياء
هي معقدة للغاية، وأنت لا تستطيع حقا استخدامها برمجيا.
يمكنك فتح سيبيليوس مع خاتمة وانتقل إلى ملف والتصدير كما PDF نفسك،
ولكن لا يمكنك حقا نسمي ذلك من السيناريو.
LillyPond، يمكنك الاتصال من تلك النصوص.
هل يمكن تكرار بسهولة LillyPond مع مطاط.
وأنا لا تملك الكثير من الوقت للذهاب في هذه التقنيات في الوقت الراهن،
ولكن وجدت.
إذا كنت تريد أن تبدو في كتاب LillyPond،
انها البرنامج الذي يأتي مع توزيع LillyPond الخاص بك،
وانها لبالتكرار شظايا LillyPond في اللثي
إذا كنت تريد أن تفعل شيئا مثل وثيقة علم الموسيقى كبيرة
مع الأمثلة، على سبيل المثال.
وانها مهارة جيدة ل الحياة إذا كنت تفعل أي شيء
مع الموسيقى، وليس فقط CS50.
لقد استعملت LillyPond للجميع مشاريع تكوين بلدي
منذ أن كنت في الأساس كبار في المدرسة الثانوية.
>> حتى هنا بعض الأمثلة البسيطة.
هذا هو التمثيل أساسا مستوى الصعوبة
أن معظم الناس سوف مواجهة ذلك كانوا يحاولون
استخدام يليبوند لمشاريع بسيطة.
هذا واحد الأول هو بداية إلى تمهيدا الترنيمة التي كتبها باخ.
هذا واحد أسفل مقتطف من واحد من الأعمال الخاصة،
وهناك فقط لاظهار لك أشياء مثل (غير مسموع)
وضع خطوط متعددة في نفس الموظفين، كيف غنائي يعمل undersetting.
التحتية الغنائية هي شيء وهذا جدا سهلة الاستخدام يليبوند للموسيقى الكورال.
>> وحتى ذلك الحين هناك بعض أكثر أمثلة معقدة هنا.
تتم كل هذه في يليبوند وانهم ممكنا.
هذا المقتطف الأول من [غير مسموع] من [غير مسموع].
وهذا (غير مسموع) من قطعة لباس منفردا
الفلوت التي كتبها [غير مسموع]، وهو الذي longtime--
كان عضوا لفترة طويلة من قسم الموسيقى هنا، على ما أعتقد.
أنا لست متأكدا من حيث انه ذهب بعيدا ل.
لكنه كان مستشارا لجامعة هارفارد جمعية الملحنين لفترة طويلة.
رجل رائع.
ويكتب بعض الموسيقى التي لديها جدا تدوين المعقد الذي LillyPond
يمكن مع ذلك تعامل بشكل جيد جدا.
>> وذلك فقط لتعطيك شعورا ما قدرات هذا الشيء لذلك are--
الأجزاء الداخلية من LillyPond هي معقدة للغاية.
ويمكنك استخدامه ل لفترة طويلة، بما في ذلك
بالنسبة لبعض معقدة جدا الأشياء، دون حقا
الحاجة إلى معرفة الكثير عنهم.
ولكن الفكرة الأساسية هي أن على أدنى مستوى، ذرات LillyPonds
هي الملاحظات.
الملاحظات تحتوي على السياق دعا الأصوات.
حتى سياق صوت يتوافق أساسا
إلى سطر واحد من تعدد الأصوات.
وبعد ذلك السياق يمكن أن يكون الواردة هرميا
في تلك المستوى العالي التي تمثيل الموظفين على النتيجة
أو التجمعات الكبيرة مثل الموظفين البيانو أو الموظفين جوقة،
ثم في النهاية سياقات النتيجة بأكملها.
ويمكنك يشمل في الواقع عشرات متعددة في الكتاب.
>> وكل سياق لديه عدد النقاشون المرفقة.
إذا كنت تبحث عن طريق محتويات السياق
وطباعة رمز أو معين فئة معينة من الرموز حسب الضرورة.
ذلك أن كل سياق صوت، هناك [غير مسموع] الملاحظات
حفارة التي هي في الأساس وظيفة أو كائن يكتب خارج كل المذكرة
رؤساء على الأجزاء اليمنى من الصفحة.
ثم هناك حفارة المشقوق، والتي يكتب من شقوق على الموظفين.
ثم هناك المسرع علامة حفارة أن
يكتب من علامات المسرع في النتيجة.
وجميع هذه تناسب جدا كذلك في التسلسل الهرمي.
وانها جدا، جدا، جدا للتخصيص، والتي تحتاج
إذا كنت ترغب في الحصول على اشياء من هذا القبيل.
>> لذلك كل السياقات لها الكثير من سمات مختلفة
التي يمكنك تعديلها في كل شيء من التباعد لمختلف الخط
اختيار أحجام الأشياء.
إذا كنت تريد أن تفعل حتى الأمور أكثر تعقيدا،
هناك لغة البرمجة المضمنة.
التي يستخدمونها المخطط الذي هو لهجة من اللثغة.
هذه ربما لا يعني أي شيء لك.
ولكن في الأساس، مخطط وظيفية أخرى
لغة البرمجة، أكثر أو أقل.
>> ستيفن KREWSON: إن في التعادل.
>> CONNOR HARRIS: نعم.
انها التعادل في حالة جيدة، وأفترض.
وانها تستخدم كلغة التدريس، في الواقع، بانخفاض قداس افي. في معهد ماساتشوستس للتكنولوجيا.
وانها مفيد جدا لLillyPond لأسباب فنية مختلفة.
>> وحتى إذا كنت تريد أن تجعل بسيطة القرص تعتمد على الشرطية،
لexample-- هناك بعض حالة من النقاط التي التقى،
إجراء تعديلات على ل تخطيط أو whatnot-- ثم
هذه المرافق هناك.
انهم تعقيدا.
حتى هنا عينة رمز بسيط جدا.
انها خمسة أسطر.
في الأساس، وأنا تحديد اثنين من الموظفين.
انها في 3/4.
موظفو الأول له تعلق علامة الإيقاع،
ولكن ما يجري في الواقع للذهاب إلى درجة كاملة،
لأن علامات الإيقاع هي على نتيجة التعادل.
حفارة علامة المسرع ويرد ليسجل السياق.
هناك مفاتيح مختلفة، لأن (غير مسموع) حفارة
يتم إرفاق الموظفين.
يمكنك القيام به في الواقع هو.
العينة كتبت ل في الواقع في C الكبرى،
ولكن هذا فقط ل تثبت أنك يمكن أن يكون
مفاتيح مختلفة في مختلف الموظفين.
وبناء الجملة الأساسي هو أن تكتب ملاحظة أسماء مع E، F، G، أيا كان.
إذا كنت تريد أن تفعل accidentals، كنت احقة IS أو ES.
هذا هو من الهولندية الاتفاقيات موسيكولوغيكال.
>> وللقيام قفزات اوكتاف، لديك لاستخدام هذه علامات التجزئة، فاصلة أو الفاصلة العليا.
نسبة يعني فقط كل ما لديك ملاحظة،
سيتم تلقائيا plaec ذلك في اوكتاف الأقرب لسابقتها.
وإذا كنت تريد أن تقفز أكثر من وfifth-- القول خمس أو more--
ثم لديك لاستخدام (غير مسموع).
لكن على خلاف ذلك، لم يكن لديك ل تحديد اوكتاف من كل ملاحظة واحدة.
>> وبالنسبة C، رئيس الوزراء، و C، عليك فقط تحديد المتوسطة C
وقاعدة C، الملاحظات الأولى على وجه الخصوص.
ثم لديك هذه الموظفين التي تنظم هذه الأصوات اثنين أو عينات من الموسيقى،
وكان لديك درجة.
ويشبه هذا.
>> إذا كنت تريد أن تأخذ من الوقت ل نسخ تلك عينة من LillyPond
كود في السابق تنزلق هنا، وأنت
يمكن الكتابة عليه لLillyPond نفسك.
وأنا أعلم أننا قد حصلت على شيء التي تبدو كثيرا مثل هذا.
لذلك هناك تقنية أخرى حافظ دعا الموسيقى XML
قبل أشخاص مختلفين تماما.
XML هو البيانات النصية structure-- I لا ينبغي أن نقول البيانات 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 في اللغة الخاصة بك،
الذي يضمن أنه نحويا صحيحا وكل شيء،
ومن ثم تحويله إلى LillyPond.
وهكذا فإن التكنولوجيا قد ترغب في ننظر إلى إذا كنت تفعل شيئا
مثله.
>> (غير مسموع)، وآخر التكنولوجيا auxilarry.
وهذا هو الأساس للتكنولوجيا الأشغال أو ستوديو تك للLillyPond.
لذلك يقدم المساعدة مع لغوي، مع قوالب
لمختلف شيوعا مزيج من الصكوك.
لأنها تتيح تقسيم الشاشة عرض ذلك هل يمكن أن يكون التعليمات البرمجية الخاصة بك في نافذة واحدة
وPDF في نافذة أخرى و انقر على الأماكن في PDF
للانتقال إلى ذات صلة البقع في التعليمات البرمجية المصدر.
هذا هو أكثر فائدة إذا كنت فعلا كتابة LillyPond ملفات نفسك
مما لو كنت توليد منهم برمجيا.
ولكن مرة أخرى، انها شيء مفيد لديهم.
>> رائعة.
resources-- آخر أنا فقط تذهب من خلال هذا بسرعة كبيرة.
LillyPond manuals-- LillyPond له وثائق ممتازة على موقعها على الانترنت.
لديهم البرنامج التعليمي.
لديهم مرجعية بناء الجملة.
لديهم مئات القصاصات لأشياء صغيرة مختلفة
يو قد تحتاج القيام به لإثبات قدرات مختلفة.
إذا كنت ترغب في استخدام لغة البرمجة
أو جعل أكثر اتساعا التخصيصات، ثم هناك
مرجع الداخلية في ذلك URL.
إذا كنت ترغب في استخدام الموسيقى XML، هناك أن URL، musicxml.com/tutorial~~gender=M.
>> ثم إذا كنت بحاجة لمعرفة مخطط لأنك فعلا تريد استخدام
مرافق البرمجة في LillyPond، ثم هناك (غير مسموع) دعا
تفسير منظم برامج الحاسوب،
وهي ليست فقط في الثانية أكبر CS كتاب written-- من أي وقت مضى
تجد لي بعد ذلك إذا كنت تريد أن تعرف ما أعتقد أن أعظم is-- واحد
لكنه أيضا جيد جدا مقدمة إلى اللغة المناسبة.
فإنك لن تحتاج إلى أكثر من المقاطع القليلة الأولى.
>> وهذا كل شيء.
أي أسئلة؟
>> الطالب: أين يمكنني تحميل الخاصة بك ولدت فرير جاك
حتى أتمكن من وضعه على بلدي آي بود؟
>> ستيفن KREWSON: حسنا، يمكنك كتابة إلى بعض الملفات الرعايا في Euterpea.
وكان لديك رمز.
انها على جيثب.
جعل الاختلافات الخاصة بك من فرير جاك بواسطة CS50 اعتبارها الخلية.
سيكون أمرا رائعا.
CONNOR HARRIS: أي شخص آخر؟
ستيفن KREWSON: نحن بحاجة طبل باس أفضل أيضا.
انها سيئة حقا.
>> الطالب: Euterpea ليس فقط الجانب التكوين، ولكن signal--
ستيفن KREWSON: نعم.
في الواقع، فإن العمل I حدث في Euterpea عندما كنت
تولى this-- هناك تخريج دورة في جامعة ييل أن
يستخدم كان it-- على توليف الصوت.
لذا فإن هناك حقا طريقة لطيفة باستخدام السهام
وبعض من تدوين رأينا من يؤلف معا ظائف إشارة.
ولا سيما، لباس لمعظم منهم هو مجرد موجة جيبية بسيطة.
ولكن إذا كنت البدء في تأليف تلك بطرق البرنامجية غريبة،
يمكنك الحصول على صوت مجنون الآثار، مثل شلالات غريبة.
يمكنك إنشاء شجاع جدا يبدو مع الكثير من التحوير.
>> لقد فعلت ذلك المشروع على الحبيبية التوليف، وهو
في مكان ما بين FM وأخذ العينات.
كنت تأخذ صغيرة جدا، عينات قليلا، ثم
الجمع بينها وبين نوع من المغير وبناء صوت أكثر ثراء.
كما فعلنا النمذجة المادية، لذلك في محاولة للتفكير في الفيزياء
وعلم النفس المسموعي من شيء من هذا القبيل البوق، والتفكير في الطريقة
الصوت هو كذاب قبالة الجرس البوق
والصوتيات الغرفة والنمذجة
أنه مع مؤشرات التذبذب الأساسية.
CONNOR HARRIS: شكرا جزيلا.
شكرا لقدومك.
وأنا دائما على استعداد ل تلقي الأسئلة من قبل email--
connorharris@college.harvard.edu.
>> ستيفن KREWSON: نعم. stephen.krewson@yale.edu.
رائع.