CONNOR HARRIS: سلام. من کانر هریس هستم. من یک CA CS50 در دانشگاه هاروارد است. استفان KREWSON: من استفان Krewson هستم. من یک TF برای CS50 در دانشگاه ییل است. CONNOR HARRIS: و ما قصد داریم به بحث در مورد برخی از فن آوری است که شما ممکن است مایل به استفاده از اگر شما علاقه مند در انجام یک پروژه نهایی و یا واقعا هر چیزی را با موسیقی است. ما قصد داریم به تمرکز بر روی اولین زبان برنامه نویسی به نام هاسکل. این یک عملکردی زبان، به طوری که پارادایم بسیار متفاوت از C یا پی اچ پی است یا دیگر زبان های آمرانه که شما استفاده می شود در حال حاضر، و به ویژه در یک کتابخانه نوشته شده در Haskell نام Euterpea، که می تواند به مردم کمک کند با نوشتن موسیقی عملکرد، اساسا. و استفان به شما راه رفتن از طریق یک مثال بزرگ آن. بعد از این، من شما را به شما معرفی چیزی به نام LillyPond که یک تکنولوژی برای موسیقی حروفچینی است. این نوع مانند LATEX برای موسیقی اگر هر کدام از شما لاتک را برای کلاس های ریاضی استفاده کرده اند و یا دیگر کلاس های مجموعه ای P و یا آنچه شما داشته باشد. و بنابراین من به شما، دوباره به من بدهید، نمونه های از که و اشاره شما را در به طور کلی جهت برخی از منابع بهتر است. استفان KREWSON: در علاوه بر این، ما آن را فکر می تواند سرد به راه اندازی یک کمی از نکات به سوی یک خط لوله بین فایل های MIDI-Euterpea تولید در LillyPond، بنابراین ما با ارائه برخی آموزش در اسکریپت برای انجام این کار که ارائه شده با LillyPond فقط آن را نگه دارید منبع باز و یک خط لوله رفتن. CONNOR HARRIS: باز هم، باید تأکید، این دو تکنولوژی، شما می لازم نیست که به استفاده از آنها را با هم. آنها طراحی شده به کار با هم، اگر آنها بسیار خوبی. استفان KREWSON: درست است. و کاملا رایگان است. CONNOR HARRIS: پس تشکر و قدردانی، فقط خواندن است. استفان KREWSON: حسب وظیفه، اشاره کرد. با تشکر از کسانی مردمی. این من در فقط برای یک لحظه معطل. مراحل نصب کمی روی حیله و تزویر. ما یک من در GitHub به عنوان خوانده شده که شما می توانید نگاهی به. فقط به من ایمیل اگر شما هر گونه سوال. اما ما این با فرض اجرا که این کار برای همه. CONNOR HARRIS: و اگر شما می توانید نیست گرفتن LillyPond به کار، هیچ معامله بزرگ. هیچ مجموعه زندگی می کنند وجود دارد که آن شرکت خواهند کرد، حداقل در پایان من است. استفان KREWSON: Haskell و LillyPond باید هر دو نصب داشته باشد. Euterpea به عنوان یک دانلود بسته، غیره و غیره. بنابراین ما در حال صحبت کردن در مورد موسیقی کامپیوتری. و این فقط یک بسیار مشاهده 50،000 پا. یک چند جنبه های مختلف آن وجود دارد. و این خشن است و رفتن به پنهان برخی جزئیات. اما ما می تواند چیزی فکر می کنم مانند ترکیب الگوریتم، با استفاده از الگوریتم، با استفاده از کد، برای تولید برخی از نوع of-- شاید خود مشابه دنباله ای از یادداشت، و یا شاید یادداشت در زیر برخی از محدودیت. و سپس آن می تواند انجام و یا تفسیر با ابزار آنالوگ و یا چیزی شبیه به آن. اما ترکیب شد انجام الگوریتمی. اما البته، شاید این منطقه از موسیقی کامپیوتری یا موسیقی دیجیتال ما بیشتر آشنا با دیجیتال است هستید سنتز صدا و یا نمونه برداری دیجیتال و ضبط دیجیتال. بسیاری از ابزارهای دیجیتال هستند از طریق نمونه برداری دیجیتال انجام می شود. در واقع، ما باید با استفاده از یکی از کسانی که در به شکل یک کتابخانه فونت صدا بعد. اما همچنین چیزی وجود دارد به نام سنتز دیجیتال که بیرون آمد از '70 و به اواخر 80s با یاماها و جان Chowning در دانشگاه استنفورد انجام سنتز و یا FM سنتز مدولاسیون فرکانس، که در آن شما یک حامل حال سیگنال و یک سیگنال مدوله هر دو در طیف های صوتی. اما چیزی که ما در متمرکز امروز چیزی به نام MIDI است، و البته، ترکیب الگوریتم. ما قصد داریم به ابزار است، اما ما در حال به جای رفتن به برخی از موسیقی، و پس از آن است که از تفسیر توسط برخی از ابزار است که مطابق به هستند استاندارد عمومی MIDI. پس چه MIDI است؟ من قصد ندارم به دریافت بیش از حد عمیق به آن، اما MIDI پروتکل انتقال داده است. این نوع از یک راهنمای در سراسر شرکت ها و صنایع مختلف برای سازماندهی برای تلفن های موبایل و یا تکه. بنابراین خواهیم دید که یک استاندارد MIDI وجود دارد برای همه کوبه ای مختلف برای تلفن های موبایل و توصیه MIDI برای همه انواع مختلف مصنوعی و یا انواع مختلف از همه ابزار گروه در یک ارکستر، می گویند. شما احتمالا با آن آشنا هستید 0 تا 127 پیام های MIDI. سیگنال MIDI معمولا یک بیت نشان می دهد آیا آن را یک داده یا وضعیت بسته، و پس از آن وجود دارد هفت بیت از یک سیگنال قرار دارند. و این می تواند کنترل همه چیز از حجم به عمل یا فشار در یک کلید خاص اگر شما در حال انجام با MIDI کنترل و همچنین، البته، یادداشت. و البته، MIDI است بسیار مفید بوده است، زیرا این راه به سیم است با هم و یا زنجیره ای گل مروارید یک دسته از دستگاه های سخت افزاری MIDI. من هفت یا هشت پشت در خانه من است. آن را می شود واقعا پیچیده است، اما واقعا قدرتمند است. و آن را واقعا قدیمی است. آن را از اوایل '80s، و آن را واقعا خوب و کوچک است. CONNOR HARRIS: آره. تمام کلاسیک نینتندو بازی های ویدئویی احتمالا فایل های MIDI برای موسیقی، به عنوان مثال. استفان KREWSON: در اینجا یک به عنوان مثال از MIDI به طور کلی، نشان دادن MIDI به عنوان یک نوع پروتکل به طور کلی. و من فکر می کنم ما می توانیم از فکر می کنم تفاوت بین مشخصات که باید چیزی شبیه به وجود داشته باشد این ابزار برای تلفن های موبایل و واقعی تحقق این ابزار برای تلفن های موبایل در یک فونت صدا و یا یک MIDI خاص سینت سایزر به عنوان تفاوت بین شاید یک typeface-- که می گوید: به طور کلی، این طراحی است این روش خاصی برای نشان characters-- و یک فونت خاص که تا به اندازه و دایره زنگی خاص، و تحقق the-- وجود دارد CONNOR HARRIS: شاید یک مقایسه بهتر شود از استاندارد یونیکد says-- آن را می دهد یک عدد به هر شخصیت، و واقعا هر زبان در جهان است، و یا مجموعه ای گسترده از اسکریپت زبان در جهان، و سپس کسانی هستند ارائه به چیزی گرافیکی توسط بسته های مختلف فونت. و بدیهی است، شما می توانید از فکر می کنم MIDI به عنوان یونیکد صدا. و آن را فقط یک لیست of-- یک جریان بزرگ است از حوادث و ابزار و فلان چیز، و شما باید به یک جداگانه برنامه، مانند فونت، ارائه که به چیزی که قابل شنیدن است. استفان KREWSON: پس چرا هاسکل؟ هاسکل برنامه نویسی کاربردی است زبان، بسیار پیشرفته، بسیار متفاوت از C، بسیار متفاوت از پی اچ پی. و ما قصد داریم برای دیدن وجود دارد که سهولت ترکیب تابع در Haskell که به ما اجازه خواهد نسیم را از طریق آهنگسازی و یا تایپ کردن و نوشتن، چیزی شبیه به فرر ژاک، این آهنگ ساده است که تا به بسیاری از قطعات در آن است که یا تکرار خود مشابه. بنابراین این خواهد شد برخی از باشد انگیزه برای چرا ما با استفاده از هاسکل، که در آن توابع شهروندان درجه اول هستند. و من می خواستم به گسترش این یک کمی. این یک کمی آسان به یادداشت برداشتن فرر ژاک در Haskell. اما اگر ما می خواستیم اضافه کردن بخشی درام به آن؟ چه اگر ما می خواستیم را امتحان کنید تا چیزی شبیه به یک درام رولاند 808 یا 909 ماشین آلات که در آن شما حدود 16 مراحل مختلف؟ معمولا این فکر یادداشت ها به عنوان 16. و شما می توانید جهانی را نیز کنترل سرعت، و شما می توانید انتخاب کنید یک دسته از قطعات کوبه ای مختلف از طبل، صدای دست زدن، تله های مختلف، کلاه باز و بسته در این نوع از کانال، و پس از آن شما می توانید اکولایزر و یا تنظیم حجم را دارند. و ما یک راه خوب در دید هاسکل به نمایندگی از این مرحله ترتیب سنج با تمام همه چیز سرد مختلف در Haskell ما می توانیم با تولید انجام لیست ها و فیلتر بیش از لیست ها، نقشه برداری بیش از لیست، نقشه برداری توابع بیش از لیست. و معذرت خواهی سریع است. این است که بسیار سریع و طرح بیش از حد سریع برخی از جنبه های از Haskell و Euterpea، است که یک دامنه خاص زبان های جاسازی شده نوشته شده است در Haskell برای انواع موسیقی. پس لطفا چک کردن کد آنلاین. آتش تا GHCI است، که گلاسکو هاسکل کامپایلر مترجم. و من انجام برخی از این در کمی بنابراین شما می توانید ببینید که چگونه آن را انجام داده. و این اجازه می دهد تا شما را به بار با the-- نحو روده بزرگ و پس از آن است فرمان. شما می توانید فایل های بارگذاری در. شما می توانید فهرست در آن فایل استفاده برای دیدن همه ی توابع است که در یک ماژول خاص وجود داشته باشد. و سپس به عنوان ما، انواع و نوع دید کلاس ها در Haskell بسیار مهم است، بنابراین شما همیشه می توانید به خصوص check-- اگر شما در حال کار در یک DSCL جدید مثل این، چه نوع موسیقی است؟ من در مورد راه عددی مطمئن شوید انواع در Haskell کار می کنند، اما من نمی دانم در مورد موسیقی. اما شما می توانید راه آنها کشف تعریف با استفاده از این نوع فرمان T یا و پس از آن خواستار در یک خاص تابع یا یک شی داده. CONNOR HARRIS: آره. اگر شما فکر می C و صدای جرنگ جرنگ hardass در مورد انواع بود، شما هیچ ایده ای در مورد هاسکل. چیز خوب در مورد هاسکل است که اگر شما می توانید کد خود را به کامپایل گرفتن و اگر نوع هاسکل چک، آن را احتمالا راست، به دلیل سیستم نوع بسیار سخت است. استفان KREWSON: آره. بنابراین من فقط می خواهم به through-- و دوباره، این انجام شده است نه آن justice-- چند از از ویژگی های هاسکل که حداقل به creators-- خود را و آن ایجاد شد در اواخر 1980s توسط یک دسته از مردم، کمیته ای از حدود 20 people-- فکر مهم بودند. و اولین چیزی که آنها ذکر شده در مقاله ای که توصیف پیدایش هاسکل بیش از 20 سال برای اولین بار و یا پس بود که آن را تنبل بود. پس چه معنی است؟ خب، به این معنی که ما به نوعی بیان، ما نیاز به ارزیابی آن. و Haskell این در یک پاسخ راه نیاز و یا راه های غیر سخت است. این است که اگر ما یک دسته از اجزای بیان ما، ما سعی می کنیم ارزیابی برای به تاخیر انداختن از آن جزء فرعی تا زمانی که مطلق آخرین minute-- است که تا زمانی که ما در واقع به آنها نیاز دارید. بنابراین این means-- است که واقعا سرد، به ویژه اگر ما در حال فکر کردن در مورد انتزاع یک ترتیب سنج گام های موسیقی است. شما آن را روشن، و شما شروع در حال اجرا یک گام sequence-- اگر شما تا به حال با یک درام کار machine-- و آن را فقط می رود برای همیشه. پس از آن می تواند واقعا خوب اگر ما می تواند تقلید که در Haskell. و ما می توانیم آن را با بی نهایت انجام ارزش ها، در لیست بی نهایت خاص است. آن را بسیار آسان به نوع لیست محدود در Haskell. شما فقط می تواند با استفاده از نحو پایین در اینجا، که در آن شما را ببینید 1 تا 3، حذف 3 1 نقطه نقطه، و که یک لیست بی نهایت است از تمام اعداد طبیعی گسترش در تا آنجا که شما می توانید تصور کنید. من می خواهم به شما معرفی مفهوم برابر حق دور. و دوباره، هدف از این سمینار نیست به چین در Haskell یاد بگیرند و یا توابع مرتبه بالاتر. اما من فقط می خواهم به معرفی آن را به را حس دقیق از عجیب و غریب Haskell است و چگونه قدرتمند آن است. و به طور خاص، ما قصد داریم به be-- هنگامی که ما انجام قطعات مختلف درام ما، ما در حال رفتن به دستکاری لیست اعداد، تاشو آنها بر روی یکدیگر. و برای انجام آن، ما با استفاده از نقشه ها و چین و چروک. یک انجمنی سمت راست وجود دارد برابر، که این یک حق است here-- 1 منهای مقدار، 2 منهای مقدار، 3 منهای 0. و نحو برای برابر، شما یک برابر را ارزش پایه و سپس یک operation-- در این مورد، افزودن یا تفریق. من هر دو مورد نشان داده ایم. و پس از آن یک باتری وجود دارد که تجمع بیش از کل لیست، استفاده از آن به همراه اپراتور یا منفی، و سپس جمع آوری آن است. بنابراین این the-- خواهد بود اگر آن بود به نام با R برابر به علاوه از 0، با شروع با 0، ما پس از آن که خلاصه همه اعداد در این لیست. و که یک لیست از 1 تا 3 است. CONNOR HARRIS: پس به آن را یکی دیگر از راه، برابر R سه آرگومان می گیرد. یک تابع وجود دارد که خود دو آرگومان می گیرد، پس از آن یک ارزش استارت وجود دارد، و یک لیست از ارزش وجود دارد. و آنچه شما انجام است شما را ارزش استارتر، ارزش اول، قرار داده و آنها را به تابع. چه چیزی شما را از دریافت، را که، غذایی که به تابع از مقدار دوم، آنچه که شما از دریافت، را که، تغذیه که به تابع از ارزش سوم. و پس از آن اگر شما به پایین این لیست کامل این راه، شما در حال رفتن به نهایت برخی از ارزش منحصر به فرد که از همان نوع از آنچه شما آغاز شده با و از همان نوع به عنوان چیزهایی در لیست، و سپس که در نتیجه بازگشت برابر R. است استفان KREWSON: پس به طور خاص این توابع مرتبه بالاتر، چرا که آنها در حال گرفتن یکی دیگر از تابع به عنوان یکی از استدلال. CONNOR HARRIS: آره. اگر شما خاص دیگر استفاده می شود languages-- من می دانم R، [نامفهوم] زبان، به نام کاهش. شما ممکن است عملکرد مشابهی داشته در زبان های دیگر، فقط به نام چیزهای مختلف. استفان KREWSON: و چه خوب در مورد برابر R در این مثال که برابر است R می توانید با لیست بی نهایت کار می کنند. بنابراین در این پایین، این P5 در حال تولید یک یادداشت ها که در در ترتیب سنج گام برای تبدیل برخی از بخش درام، بخشی درام پنجم، و شاید آن را یک بارتو است درام و یا چیزی. و این است که به عمد راه مبهم نوشتن این مقاله، اما آن را سرگرم کننده است، چرا که آن را نشان می زیادی از همه چیز در مورد Haskell و 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 فقط نوعی از جهانی است متغیر برای تعداد مراحل در ترتیب سنج. در رول ماشین آلات من شما نشان داد، که به طور معمول 16، اما من آن را با 32 اجرا شده است. این واقعا مهم نیست. هاسکل است خالص، پس از آن تا قوی استاتیک که Connor اشاره به. بنابراین توابع ریاضی را در sense-- آنها بیشتر ریاضی هستید که آنها در حال تضمین برای دسترسی به و یا تغییر هر نوع متغیر و یا انجام ورودی یا خروجی. بنابراین اگر شما یک تابع، آن را قطعی. این همیشه همان بازگشت ارزش در دولت از برنامه و یا باقی می ماند همان. هستند، وجود دارد البته استثنا تکین این، اما فراتر از محدوده ما است. CONNOR HARRIS: آره. این بدان معنی است این است که وجود دارد چند مهم [نامفهوم] عواقب ناشی از این. یکی این است که آن را بسیار آسان به موازی سازی برنامه های هاسکل. چرا که اگر شما، می گویند، یک تابع از آن نیاز به یک میلیون ارزش عمل کند، اگر شما می دانید که تابع همیشه را از ارزش همان اگر شما در یک value-- خاص تغذیه اگر شما [نامفهوم] F، از مجموع 1 هستید، F از 2، آنگاه f از 3 یا whatnot-- F، از مجموع 1 رفتن به ارسال به خارج به یک فایل و یا انجام کاری که خواهد شد که ارزش F2 را تغییر دهد. شما فقط می توانید تقسیم کردن این تابع به یک میلیون دستگاه های مختلف و یا یک میلیون موضوعات مختلف و یا هر چیز دیگری، دریافت تمام پاسخ های تماس، دریافت تمام مقادیر بازگشتی تماس، و سپس از آن است. بنابراین بسیار آسان برای موازی سازی است. حرکت نزولی که ورودی است و خروجی ویژه جا به سیستم نوع در راه بسیار پیچیده است. ما نمی خواهد به سمت راست بروید که در حال حاضر، اما من شما را تشویق به در نگاه برخی از منابع آنلاین اگر می خواهید در مورد آن یاد بگیرند. استفان KREWSON: پس نوع classes-- و این کلاس was-- از انواع برای حل اختراع شد مشکل از Overload کردن عملگرها. بنابراین ما می خواستیم به برابری بین انواع مختلف از همه چیز. البته، ما فکر می کنم 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-- F x و y-- می تواند به عنوان نمایندگی F از X به Y استفاده می شود. پس از آن یک تابع از این یک آرگومان که باز می گرداند یکی دیگر از عملکرد یک آرگومان. بنابراین این بدان معناست که ما می توانید یک نقشه تابع f از X Y بیش از است. CONNOR HARRIS: می خواهم به یک مثال از این؟ استفان KREWSON: آره. من یک مثال در اینجا از برخی از چیزهایی که ما ارسال خواهد شد. بنابراین تکرار 2-- خوب، تکرار خواهد یک مقدار است که چگونه بسیاری از بار به تکرار چیزی، و سپس آن را به یک value-- را معمولا یک لیست و یا چیزی. بنابراین در اینجا ما از نقشه کشی هستید تکرار بیش از 2 لیست دیگر. بنابراین اگر ما نقشه تکرار 2، اگر ما تکرار 2 اعمال می شود به عنصر اول این list-- و این لیست از phrases-- موسیقی می باشد دو تن از تولید "شما sleeping--" بنابراین شما خواب هستند، شما خواب. بنابراین در حال حاضر ما دو. اما تکرار طول می کشد دو استدلال، اما از آنجا که ما طننج و سپس نقشه برداری، ما می توانیم تکرار 2 نشان عنوان داشتن شده است به عنوان یک تابع از بازگشت یکی argument-- فقط تکرار دو بار. و سپس ما در حال استفاده از که به هر عنصر از این لیستی از عبارات. و چسبانده Haskell است عملیات برای تراز وسط یک لیست. از آنجا که تکرار 2 تولید یک لیست از لیست. و این این شکل متوسط ​​در اینجا است. و به این ترتیب پس ما می توانیم چسبانده و یا پهن که دو بار. CONNOR HARRIS: A ساده نمونه ای از پرداخت، اگر شما می خواهم like-- تصور F فقط یک تابع ضرب که طول می کشد دو بحث ها و محصول خود را باز می گرداند. بنابراین اگر شما یک F 4 5، آن را 20. اما شما می توانید از این به عنوان فکر می کنم also-- شما یک تابع f 4 که یک استدلال و بازده طول می کشد چهار بار این argument-- فقط نرم افزار های جزئی که فقط یک آرگومان 4. و اگر شما از 4 F تغذیه 5، که به شما 20 است. و این یک ساده به عنوان مثال از طننج. این معمولا یکی از آنهایی که کتاب درسی. استفان KREWSON: لامبدا عبارت و یا توابع بی نام یکی دیگر از مشخصه هاسکل. بنابراین اگر ما نیاز به شلاق تا عملکرد کمی تکرار زندگی، اما می گویند آن را در نیست کتابخانه استاندارد، ما می توانیم یک نحو استفاده کنید شبیه به زیر است. و ما بیش از این نسیم. یک چیزی که شما یک مقدار زیادی از در دید ماشین درام است که ما در حال برقراری تماس به چیزی به نام فیلتر، که مثل قبل، نقشه ای از یک تابع است بیش از یک لیست، اما آن را نقشه ای از یک تابع بولی. بنابراین ما باید در اینجا یک مثال از A یک ناشناس تابع بولی تعریف شده است که فقط چند ارزش طول می کشد. این صرفا صحبت نمی یک تابع بی نام. اما این تعریف با آن نحو برای اختصار، و این فقط طول می کشد ایکس ماژول n-- CONNOR HARRIS: آره. بنابراین f یک تابع است دو آرگومان n و p که یک تابع است که خود را می گرداند یک تابع از یک آرگومان، یعنی x است. استفان KREWSON: من اپراتورهای میانوند ذکر شده است. اپراتورهای میانوند چیست؟ خب، اپراتورهای میانوند هستند راه طبیعی ما نمایندگی عملیات، می گویند، در mathematics-- 2 PLUS 2 به جای اپراتور همراه و پس از آن دو استدلال 2 و 2. CONNOR HARRIS: آن را به نام نشانه گذاری معکوس لهستانی است که یک اصطلاح من شک هر یک از شما را می دانیم. استفان KREWSON: درست است. نماد لهستانی یا پیشوند معکوس می باشد. اما تصمیم به هاسکل استفاده از عملگرهای میانوند. بنابراین چندین هستند آنهایی که سفارشی که برای تعریف Euterpea DSCL در Haskell. بنابراین این ترکیب متوالی بود. این ترکیب موازی بود، و این بود کوتاه کردن ترکیب موازی. و ما باید که با ماشین درام ما، چون ما آخرین استفاده اپراتور که تاپل کمی وجود دارد بازی ماشین درام همراه با آهنگ فرر ژاک ما است. و ماشین درام ما این است که رفتن به بی نهایت است. این فقط برای همیشه لطفا برای بازی می کند. اما ترانه فرر ژاک است. آن است که طولانی نیست. این چند میله تنها. بنابراین ما باید برای جلوگیری از ماشین درام به عنوان به زودی به عنوان ارزش موسیقی کوتاه تر می آید به پایان برسد. و اپراتور infixed فوق العاده با مفید است. و نماد میانوند مانند این نوع از خوب، چون می گویند شما باید یک تابع مانند نقل قول، می دهد که تقسیم عدد صحیح از x با چیزی else-- با عرض پوزش، که باید A و B است. شما می توانید آن را به عنوان یک نقل قول از ب ارسال. بنابراین اگر شما عنصر put-- است یک مثال دیگر از این. X عنصر در برخی از لیست، اگر شما آن را در Backticks، شما می توانید از آن استفاده کنید. حتی اگر آن را یک نماد نیست مانند به اضافه یا منهای یا بار، شما می توانید نام یک استفاده تابع مانند که در Backticks به عنوان عملگر میانوند است که بسیار سرد است. CONNOR HARRIS: باز هم، این است همه قند فقط نحوی، واقعا. آن هسته اصلی زبان تاثیر نمی گذارد. استفان KREWSON: بنابراین ما در اینجا مشاهده کنید برای آخرین عبارت از آهنگ فرر ژاک ما، من بازی برخی از آکورد کم و یا سوم با استفاده از ترکیب موازی اپراتور. این یکی دیگر از راه گفت: برخی از است از آنچه که ما تنها شده ام گفت. بنابراین شما می توانید توابع نقشه یک استدلال بیش از لیست. CONNOR HARRIS: باز هم، مراجع برای کتاب های درسی مقدماتی Haskell-- همه از این در آن است. استفان KREWSON: بنابراین در اینجا خیلی خط کلیدی ترتیب سنج گام را ما یک با استفاده از نگاه میکنم درک لیست. و ما در اینجا دید که عنصر در ثابت اپراتور در نقل قول تماس. بنابراین اگر x یک عنصر از لیست است X است، پس از آن ما تماس بگیرید تا توابع پرک. بنابراین پرک فقط یک تابع سازهای کوبه ای است. طول می کشد برخی P ارزش است که بخشی از مجموعه محدود از همه برای تلفن های موبایل کوبه ای مختلف که ما در یک اسلاید قبلی را دیدم، و سپس آن را می دهد که مدت زمان یک چهارم توجه داشته باشید. دیگری آن را آن را می دهد QNR و QNR فقط یک استراحت سه ماهه توجه داشته است. پس این است که ایجاد چیزی خوب. ما یک لیست از عناصر، و ما بیش از برخی از لیست ها از یک حلقه خواهید به ارزش حداکثر ترتیب سنج گام ما است. و هنگامی که ما در یک من خاص هستید که لیستی از یکی به ارزش حداکثر، در صورتی که من عضو این است مجموعه ای در این تابع ایجاد شده، خب، پس ما آن را روشن توجه داشته باشید به یک سازهای کوبه ای. در غیر این صورت، ما فقط بازی استراحت، که است که می گویند، ما فقط سکوت. و ما در اینجا می توانید ببینید که در این لیست نحو درک، X است که توسط این جمعیت لیست یک ساخته به اندازه جهانی ترتیب سنج. CONNOR HARRIS: آره. نحو اساسی برای یابی لیست است براکت، ارزش شامل برخی از متغیرهای، بار، مقادیر ممکن از متغیرهای خود، براکت بسته شده است. و اگر شما نماد سازنده مجموعه انجام داده ام در هر نوع از کلاس ریاضیات، شما ممکن است 2N چنین مجموعه ای که n یا N است در Z است. مشابه thing-- این نماد به معنای مطرح که نماد ریاضی. استفان KREWSON: و شما می توانید اعمال گزاره های متعدد و فیلترهای متعدد را در یک لیست درک است که کاملا خوب است. جبری ما types-- نمی معطل طولانی در اینجا. یک مفهوم خوب در وجود ندارد هاسکل و یا خوب است، مفهوم آشکار از چگونه به، می گویند، یک پیش فرض پارامتر به یک تابع و یا چیزی. در پایتون، این است کاملا آسان است. شما فقط می توانید می گویند با برابر در اعلامیه از تابع، یک مقدار پیش فرض در مورد هیچ کدام عرضه شده است. در Haskell، شما می توانید شاید استفاده شاید شاید تایپ کنید، که طول می کشد یا چیزی و یا یک مقدار از نوع فقط. بنابراین ما این بهره برداری در ماشین درام به ما اجازه می دهد به حجم اختیاری پارامترهای به هر یک از قطعات درام. به طوری که ما می دهد یک راه داشتن EQ و یا یک حجم بر روی یک کانال خاص است. CONNOR هریس: در دیگر نمونه های هاسکل، شما ممکن است ببینید شاید برای استفاده توابع است که ممکن است شکست بخورد. این یکی از شایع است. استفان KREWSON: و شما می توانید عرضه برخی از پیام خطا به عنوان یک پیش فرض است. و این به هنگام شما در حال انجام I / O در Haskell. است که می تواند کلاهبرداری. CONNOR HARRIS: یا برای یک به عنوان مثال مشابه، فکر می کنم از یک تابع است که شامل بخش از یک پارامتر که ممکن است 0. و تابع می تواند بازگشت شاید هر چیز دیگری. بنابراین اگر تقسیم بندی وجود ندارد که توسط 0، آن را فقط هر چه خواهد گشت. و اگر تقسیم وجود دارد توسط 0، آن را چیزی بازگشت به عنوان یک راه سیگنالینگ خطا. از آنجا که یکی از پیامدهای تایپ کردن بسیار دقیق زبان با Haskell است که هیچ real-- وجود دارد بی دست و پا می استثنا، در واقع، رفع خطا بی دست و پا است. و این یکی بسیار است راه معمول انجام آن است. استفان KREWSON: بنابراین در حال حاضر ما به چیز دیگری که ذهن خم درباره هاسکل، الگوی است که تطبیق و تابع تعاریف. من شما را در آخرین اسلاید نشان داد اعلامیه دنباله گام تابع، که در زمان شاید ارزش، پس از آن یک int، سپس یک لیست از نوع داده int، پس از آن یک دنباله از گرداند ارزش موسیقی وجود دارد مشروح با هر دو زمین و حجم. بنابراین کسانی که سه آرگومان می تواند الگوی همسان در صورت زیر است. و ما همیشه می خواهید مطمئن شوید به انجام یک مورد پایه و یا مورد خروج اولین. و این زیرین فقط می توانید تفسیر شود به معنی هر گونه ارزش است که وجود دارد. بنابراین اگر ما یک تماس به مرحله توالی با برخی از ارزش، برخی از ارزش های دیگر، و پس از آن لیست خالی، آنچه ما می خواهیم به بازگشت فقط سکوت، استراحت 0 است. و به جای آن بودن یک لیست خالی و یا 0، آن استراحت 0 است، چرا که ما برخورد با نوع موسیقی، و لیست خالی از موسیقی نوع فقط یک بقیه هیچ مدت زمان. این هیچ موسیقی است. و سپس ما می بینیم اگر ما یک گام توالی با V برای بحث حجم، P به صورت ابزار احتیاط استدلال، و سپس یک لیست از X است. سپس ما برخی از مسائل است. به طور خاص، ما اعمال می شود این لیست درک، و ما انجام برخی از عملیات بر روی شاید ارزش آن را تبدیل به یک مقدار عددی به طوری که آن را می توان پس از آن برشمرده شده و مورد استفاده قرار برای انتخاب ساز. باز هم، این است که کمی کمی به عمد inconcise فقط برای نشان دادن همه چیز عجیب و غریب شما می توانید در Haskell که شما انجام نگاهی به آن را در زمان خود شما. خیلی خوب. بنابراین ما در حال در نهایت رسیدن به انجام آنچه که ما اقدام به انجام، که است که برخی از موسیقی کامپیوتر است. بنابراین ما قصد داریم به تلاش برای را فرر آهنگ ژاک. بنابراین چگونه بسیاری وجود دارد عبارات در فرر ژاک؟ چهار. عالی. و چه خوب است که همه آنها تکرار همان مقدار از زمان است، که دو. بنابراین ما باید چهار عبارات هر دو بار تکرار شده است. و به طور خاص، آنها را در یک دور است. و بسیاری وجود دارد، راه های بسیاری برای پیاده سازی دور که می تواند سرگرم کننده برای انجام. من آن را در انجام داده ام بسیار ساده و در اینجا راه، که فقط به construct-- خط تابع یک لیستی از مقادیر طول می کشد موسیقی و آن را تبدیل به ترکیب متوالی با استفاده از ترکیب متوالی که اپراتور. و بعد من بخش های مختلف به تاخیر می اندازد با ساخت آنها را با بقیه آغاز خواهد شد. بنابراین من با بقیه دو معیار شروع، و پس از آن استراحت از چهار اقدامات، و پس از آن استراحت شش اقدامات و پس از آن دور کار می کند، همانطور که همه ما می دانیم که این آهنگ. ما می بینیم دو حاشیه نویسی و یا تغییرات ارزش های موسیقی که در این پی در پی موجود ترتیب از عناصر موسیقی. ما یک حجم اضافه کنید. این یک تابع برای حاشیه نویسی است موسیقی با حجم خاص است. این یک مثال خوب است یک MIDI سیگنال در حال اجرا از 0 تا 127، هفت بیت از اطلاعاتی که می توان انجام شده است. و پس از آن ما آن را بسیار دیدم خلاصه، اما به طور کلی MIDI لیست تمام ابزار های مختلف. و در کل بسیاری از آنها وجود ندارد. اگر شما استفاده از یک ایستگاه کاری دیجیتال صوتی، مانند Ableton زنده و یا ابزارهای نرم افزار، یک محدوده فوق العاده گسترده تر وجود دارد از سینت سایزر و سازهای VST. اما تنها استاندارد MIDI دارای چند یا چند ده. و برخی از آنها خنده دار هستند. من فکر کردم این امر می تواند سرگرم کننده است اگر ما بازی ابزار ابزار MIDI هلیکوپتر، و پس از آن راه بعدی از طریق دور، ما مصنوعی پد را انجام داد، و پس از آن این سرب شاخی مصنوعی موج مربعی، و سپس صدای تراوش، که یک کمی تیره در MIDI بد من سینت سایزر، اما آنها OK. و سپس ما این اجازه و در نحو از هاسکل، و سپس ما در حال بازی همه این قطعات با هم با اپراتور ترکیب موازی. و ما احتمالا می تواند برخی از این نشان می دهد. در اینجا کد است. و شما می توانید در C ببینید، آنجا می شود، یک بسیاری از صاف کردن گلو و تنظیم کد جدول قبل از شما می تواند موسیقی شبیه به این را. و یا هر برنامه نویسی دیگر زبان، شما احتمالا می خواهم باید به تعامل با نوعی از کتابخانه و یا API و همه چیز را تعیین می کنند، و پس از آن شما می خواهم که به تمیز کردن. اما در اینجا در Haskell است، من فکر می کنم، یک بار شما از آن آویزان است، فوق العاده قابل خواندن و بسیار رسا. بنابراین اجرای وجود دارد از فرر ژاک. خیلی خوب. در حال حاضر ما خواهید برای اضافه کردن سازهای کوبه ای، و این بیت مسیه کوچک است. بنابراین اجازه دهید نگاهی به اسلاید. بنابراین ایده های بزرگ این است که یک دسته از لیست یا قطعات. در آن رول ماشین آلات، وجود دارد به طور معمول حدود شاید هشت 10 ریتم یا سازهای کوبه ای بخش است. و سپس با استفاده از یک دسته از تکنیک های. و ما در مورد صحبت کردیم با استفاده از these-- چین، فیلتر، توابع لامبدا، نقشه برداری بیش از لیست برای تولید ارزش در برخی از محدوده 1 تا R، R 16، و یا 32 مرحله در ترتیب سنج. و پس از آن اگر یک ارزش در لیست وجود دارد به عنوان ما در حال اجرا از طریق ترتیب سنج، در حال اجرا را از طریق آن و بیش از آن که توجه داشته باشید تبدیل می شود، و نمونه باعث می شود. در اینجا همه راه های مختلف عجیب و غریب هستند من با آمد برای تولید یادداشت ها. سعی کنید آن را در مجموع نیمه خود را. این صدا را سرد. زمان اجازه، ما از طریق این. اما در حال حاضر، من حدس می زنم ما باید نسخه ی نمایشی آنچه ما. بیایید امیدوار باشیم که این می رود OK. بنابراین این GHCI است. و ما یک بار فایل من به نام song.lhs، که فایل من فقط به شما نشان داده است. باشه عالیه. به عنوان کانر قبلا هم گفتم، آن را وارد شده، آن را تایپ چک، بنابراین من می تواند خیلی آسان تر نفس بکشم. آن را نمی برای منفجر کردن بر روی من. من می خواهم چیزی را مفید به شما نشان دهد. شما می توانید ببینید که ماژول لود به نام 50. شما می توانید که ماژول فهرست. و این است که خیلی خوب درباره doing-- شاید آنچه شما در حال انجام در Haskell است به نام توسعه نرم افزار، اما شما می توانید تعداد زیادی از انجام چیزهای سرگرم کننده را در خود. و گردش کار واقعا خوب است در مقایسه با بسیاری از زبان های دیگر، زیرا شما می توانید در یک واقعا راه قابل خواندن چه خبر است. بنابراین می بینیم که ما تمام این عبارات، که لیست رزین، رزین های موسیقی می باشد، و سپس ما ساخت این تا به چیزی بزرگتر، که یک آهنگ موسیقی است. این واحد موسیقی است. و سپس ما می توانید این همه بازی با یک تابع به نام موسیقی بازی. شما می توانید در اینجا ببینید. که فقط به بازی کند. من باید می گویند من صحبت در مورد این علامت دلار است که در همه جا. علامت دلار عملگر میانوند دیگری است. اما آن را تا پایینترین اولویت هر اپراتور، که به طور موثر بدان معنی است که همه چیز را در در سمت چپ علامت دلار و حق علامت دلار، ما قصد داریم به قبل از آن ارزیابی شده است. پس از آن این نوع مانند دیگر راه اضافه کردن پرانتز. CONNOR HARRIS: این اساسا ترکیب توابع است. و آن را تضمین می کند که شما اگر have-- نیست شما توابع دو طرف و یا میانوند اپراتورهای در هر دو طرف، آنها را نه ارتباط در سراسر آن و به شما بدهد نتایج غیر منتظره. استفان KREWSON: بنابراین ما can-- با استفاده از آن، ما می توانید تماس بگیرید. نخست، ما آن را بدون درام بازی کند. که هلیکوپتر، هلیکوپتر MIDI. [موسیقی] این موج مربع وجود دارد. تراوش صدا. و شما واقعا می توانید به وحشی با این. من برداشت یک بسیار ساده است، چون من می دانستم که من باید نیش می زنند کردن بیشتر از من می جویدن. فقط نگه داشتن آن بسیار ساده است برای نشان دادن ایده های اصلی. اما پس از آن من بود مثل، ما کردم به اضافه کردن برخی از طبل به این. فقط به خاطر این است که یک کمی غیر قابل نفوذ، و من استفاده نمی نام قطعات درام، من نقشه برداری them-- زیرا آنها بخشی از این کلاس برشمرده شده، من آنها را به نوع داده int نقشه برداری. یک مانند یک طبل است. صفر است و همچنین. هفت کلاه بالا است. و پایین در اینجا که در آن توابع یک کمی بیشتر تصادفی، این مانند طبل بارتو می باشد. بنابراین اگر شما فکر می کنم شاید یک about-- راه سرگرم کننده برای پیاده سازی یک ماشین درام است به استفاده از بسیار منظم الگوهای در طبل خود را. بنابراین به عنوان مثال، در فیلتر بیش از لیست با همه چیز است که به تماس 1 هنگامی که آن را ماژول 04 گرفته شده است. بنابراین من می 1، 5، 9، 13، 17-- این ضرب و شتم برای اولین بار از هر اندازه گیری است. و سپس این همان است چیزی که بیش از دو مرحله منتقل شده است. به طوری که از آن نامتعارف. بنابراین این امر می تواند چیزی شبیه به یک کلاه بالا. و سپس دوباره، در اینجا، آن را کمی تصادفی، چرا که ما در حال انجام درام بارتو. و من به برخی ماراکاس در اینجا، بیش از حد. بنابراین من می تواند بازی ماشین درام پاسخ، اما آن را برای همیشه لطفا برای رفتن، و آن را ممکن است شروع به گرفتن تا تمام حافظه در سیستم من. بنابراین من این تابع پاسخ پخش موسیقی، که به عنوان خواهیم دید، استفاده از ترکیب موازی کوتاه کردن به بازی کمی آهنگ فرر ژاک ما همراه با این ماشین درام عجیب و غریب. بنابراین اجازه دهید نگاهی به. و لطفا به من در بهبود ترتیب تمام نقاط درام. نمی تخصص من، اما من بسیاری از سرگرم کننده انجام آن بود. [موسیقی] پس از دوره، این است که همه کمی به عنوان سرگرم کننده نیست اگر ما می توانیم آن را تبدیل کند به نمره تا شاید آن می تواند تفسیر شود توسط یک انسان عملکرد. بنابراین من آن را در اینجا اجرا کنید. من در حال حاضر تولید فایل های ام. شما می توانید ببینید که وجود دارد نقطه LilyPond نام file-- و این خواهد بود SEGUE من را به Connor-- و یک فایل نقطه MIDI، و یک فایل PDF نقطه است، که چه LilyPond نام در نهایت تولید خواهد کرد. اما این اسکریپت ها را، و من فقط آنها را با گزینه های کمک خود را اجرا کنید. اگر شما این را به بالا و در حال اجرا با Euterpea، شما می توانید یک فایل MIDI را تولید کند. و سپس از فایل MIDI با این برنامه MIDI 2LY، شما می توانید یک لیلی تولید فایل برکه، و سپس شما می توانید یک PDF از نمره تولید کند. و ما باید یک نگاهی به این است. بنابراین کانر نشان خواهد شما چگونه به این حاشیه نویسی بهتر است، اما این فرر ژاک است تولید شده توسط من در Euterpea. آن را فقط در C. باید می فهمیدم هک کردن آنچه که در واقع در. اما این خط لوله است چگونه شما انجام است که با آن. اجازه دهید صحبت بیشتر در مورد LilyPond نام برد. CONNOR HARRIS: OK بیایید ببینید. آیا شما ذکر بدانید شما هاسکل؟ استفان KREWSON: آه، بله. اتمام به یاد شما هاسکل. آن را در منابع است. این که چگونه من شروع یادگیری و آن را بزرگ. آموزش گنگ نیست. CONNOR HARRIS: پس از آن آنلاین. بنابراین یک پسر به نام [نامفهوم] learnyouahaskell.com، بدون فاصله. دستور زبان بیمار است. استفان KREWSON: این نشان داده شده، بیش از حد. CONNOR HARRIS: پس چه LilyPond نام است؟ این برنامه اعلانی است زبان برای حروفچینی موسیقی. بنابراین شما می توانید declarative-- از چیزهایی مانند HTML فکر می کنم، که در آن شما نیست saying-- HTML نمی گوید چگونه مرورگرهای وب باید رندر صفحات گام به گام. این فقط گفت: این یک توصیف متنی است از آنچه که می خواهید صفحه را مانند نگاه کنید. و سپس آن را نیز یک برنامه که این زبان کامپایل، یا آن را در آن خوانده شده و سپس در واقع کند حروفچینی برای شما، و تف کردن این نمرات PDF به دنبال فوق العاده است. شما همچنین می توانید فرمت PNG و یا هر آنچه را دریافت کنید. یک راه خوب برای فکر می کنم این است با قیاس این است که لاتک نوعی مانند LillyPond، اما فقط برای حروفچینی عادی است. بنابراین به جای of-- آن را WYSIWYG، آنچه می بینید چیزی است که شما، مانند، می گویند آخر است، و یا سیبلیوس، و یا مایکروسافت ورد، که در آن شما می توانید در زمان واقعی و پیش نویس همه چیز را در زمان واقعی و بلافاصله تغییرات. این است که مبتنی بر متن. شما باید کامپایل خود را نمرات با استفاده از یک برنامه جداگانه و خارج فایلهای PDF بعد. این است که کمی کمتر مناسب برای استفاده اگر شما تلاش برای نوشتن به طور مستقیم به یک نمره و شما تلاش برای نوشتن بر روی کامپیوتر. اما هستند بسیاری وجود دارد از مزایای آن است. یکی، آن را به نظر بسیار بهتر، چون در واقع می توانید LillyPond را هم به انجام تصمیم گیری طرح به درستی، بر خلاف سیبلیوس یا آخر، که به الگوریتم به خطر بیافتد تا که آنها می توانند نمایش همه چیز در زمان واقعی است. پس چرا LilyPond-- گرافیک کامپیوتری سخت است. اگر شما در حال انجام هر کاری با موسیقی و شما می خواهید برای نوشتن نمرات، شما نمی خواهید به ارسال از همه چیز توسط خودتان با شروع چگونه به منظور جلب کارکنان و چگونه به منظور جلب فتوکپی. خیلی سخت است. آن را پیش از انجام شده است. شما خوب هستید. اگر شما می خواهید به استفاده از آخر و یا سیبلیوس، فرمت های فایل برای کسانی که همه چیز بسیار پیچیده است، و شما می توانید نیست واقعا آنها را برنامه نویسی استفاده کنید. شما می توانید باز کردن سیبلیوس با آخر و به فایل، صادرات به عنوان PDF خود را، اما شما می توانید واقعا نمی پاسخ که از یک اسکریپت. LillyPond، شما می توانید پاسخ از کسانی که اسکریپت. شما به راحتی می تواند تکرار LillyPond با لاتکس. من خواهد شد که زمان زیادی برای رفتن ندارد به این فن آوری در حال حاضر، اما آنها وجود داشته باشد. اگر می خواهید به نگاه به یک کتاب LillyPond، این یک برنامه است که همراه با این توزیع LillyPond خود را، و آن را برای تکرار قطعات LillyPond به لاتک اگر شما می خواهید برای انجام کاری مانند یک سند بزرگ موسیقی شناسی با مثال، به عنوان مثال. و آن را یک مهارت خوب برای زندگی اگر شما در حال انجام هر کاری با موسیقی، و نه فقط CS50. من LillyPond برای همه استفاده می شود پروژه های آهنگسازی من از آنجایی که من اساسا یک ارشد در دبیرستان. بنابراین در اینجا برخی از نمونه های ساده هستند. این است که اساسا نماینده از سطح دشواری که بیشتر مردم آن صورت آنها در تلاش بودند به استفاده از LilyPond نام برای پروژه های ساده است. این یکی از اولین آغاز است به یک گروه آواز شرکت داشتند مقدمه باخ. این یکی از پایین گزیده ای است از یکی از آثار خود من، و آن را فقط برای نمایش وجود شما چیزهایی مانند [نامفهوم] قرار دادن چند خط در همان کارکنان، چگونه شعر undersetting کار می کند. underlays شعر یک چیزی که خیلی آسان برای استفاده LilyPond نام برای موسیقی مجموعه خوانندگان. و به این ترتیب پس از آن برخی بیشتر وجود دارد نمونه پیچیده است. همه این ها در انجام LilyPond نام و آنها امکان پذیر است. این چکیده ای اول از [نامفهوم] توسط [نامفهوم]. و این [نامفهوم] از یک قطعه باس انفرادی فلوت توسط [نامفهوم]، که longtime-- است که یکی از اعضای قدیمی بود بخش موسیقی در اینجا، من فکر می کنم. من مطمئن هستم که در آن او را به رفته نیست. اما او مشاور از دانشگاه هاروارد بود انجمن آهنگسازان برای مدت زمان طولانی. مرد فوق العاده است. و او برخی از موسیقی است که بسیار می نویسد نماد پیچیده که LillyPond با این وجود می تواند اداره کند بسیار خوبی. بنابراین فقط به شما احساس را به آنچه قابلیت های این چیزی است are-- تا داخلی از LillyPond بسیار پیچیده است. و شما می توانید آن را برای استفاده یک مدت طولانی، از جمله برای برخی از بسیار پیچیده همه چیز، بدون اینکه واقعا نیاز به می دانم که بسیاری در مورد آنها. اما ایده اولیه این است که در پایین ترین سطح، اتم های LillyPonds یادداشت می باشد. یادداشت حاوی زمینه به نام صدای. بنابراین زمینه صدای اساسا مربوط به یک خط از صداهای متعدد و گوناگون. و پس از آن زمینه می توان به شامل سلسله مراتبی در آنهایی که سطح بالاتر که نشان دهنده کارکنان در نمره گروه بندی و یا بزرگتر مانند کارکنان پیانو یا کارکنان گروه کر، و سپس در نهایت کل زمینه نمره. و شما در واقع می تواند شامل نمره های مختلف را در یک کتاب. و هر زمینه دارای یک تعداد دستگاه های حکاکی شده است. اگر شما را از طریق نگاه محتویات یک متن و چاپ یک نماد خاص یا یک کلاس خاصی از علامت در صورت لزوم. بنابراین برای هر زمینه صدا، است [نامفهوم] یادداشت ها وجود دارد قلم زن، این است که اساسا یک تابع و یا یک شی است که می نویسد از همه توجه داشته باشید سر در بخش سمت راست صفحه است. پس از آن یک قلم زن، شکاف، وجود دارد که نویسد شکاف لب و کام در کارکنان. پس از آن یک مترونوم وجود دارد علامت گذاری به عنوان قلم زن، که نویسد علائم مترونوم در یک نمره. و همه این جا بسیار به خوبی به سلسله مراتب. و آن را بسیار، بسیار، بسیار قابل تنظیم، که شما نیاز دارید اگر شما می خواهید برای دریافت این جور چیزها. به طوری که تمام زمینه های یک بسیاری از ویژگی های مختلف که شما می توانید برای همه چیز تغییر از فاصله به فونت های مختلف انتخاب به اندازه از همه چیز. اگر می خواهید به انجام حتی همه چیز پیچیده تر، یک زبان برنامه نویسی تعبیه شده است. آنها با استفاده از طرح، که گویش LISP است. این احتمالا نمی کنند معنی هر چیزی به شما. اما اساسا، یک طرح یکی دیگر از کاربردی زبان برنامه نویسی، بیشتر یا کمتر. استفان KREWSON: کراوات در. CONNOR HARRIS: آره. این یک کراوات در خوب است، گمان می کنم. و آن را به عنوان یک زبان آموزشی استفاده می شود، در واقع، پایین توده خیابان در MIT است. و آن را بسیار مفید برای LillyPond به دلایل مختلف فنی. و بنابراین اگر می خواهید مطمئن ساده ترفند وابسته به شرطی، برای example-- است خاص وجود دارد وضعیت نمره که ملاقات کرد، ایجاد تغییرات به طرح و یا پس از آن whatnot-- این تاسیسات وجود دارد. آنها پیچیده است. بنابراین در اینجا یک نمونه کد بسیار ساده است. این پنج خط است. در واقع، من تعریف دو پرسنل. آن را در 3/4 است. کارکنان برای اولین بار است علامت گذاری به عنوان متصل سرعت، اما است که در واقع برای رفتن به طیف نمره، چون علائم سرعت در سطح نمره می باشد. قلم زن، علامت مترونوم متصل به نمره زمینه. کلید های مختلف وجود دارد، زیرا [نامفهوم] قلم زن، است کارکنان متصل شده است. شما می توانید در واقع انجام است. نمونه نوشتم است در واقع در C بزرگ، اما آن را فقط به نشان شما می توانید کلید های مختلف در کارکنان متفاوت است. و نحو اساسی این است که شما ارسال توجه داشته باشید نام با E، F، G، هر چه. اگر می خواهید به انجام accidentals، شما پسوند و یا ES. این است که از هلندی کنوانسیون musicological. و به انجام جهش اکتاو، شما مجبور به استفاده این تیک تیک علائم، کاما یا علامت. نسبت فقط بدان معناست هر آنچه که شما باید توجه داشته باشید، آن را به طور خودکار در خواهد plaec شود اکتاو نزدیک به یکی از قبلی. و اگر شما می خواهید به پرش بیش از fifth-- می گویند که یک پنجم یا more-- پس از آن شما باید با استفاده از [نامفهوم]. اما در غیر این صورت، شما لازم نیست مشخص اکتاو از هر توجه داشته باشید تنها. و نسبی C، نخست، و C، شما فقط مشخص C میانی و پایه C، یادداشت ویژه برای اولین بار. سپس شما باید این کارکنان که سازماندهی این دو صدای یا نمونه از موسیقی، و شما باید یک نمره. و به نظر می رسد که مثل این. اگر می خواهید وقت به کپی این نمونه از LillyPond کد بر روی قبلی اسلاید در اینجا، و شما می توانید آن را برای LillyPond خودتان ارسال. من می دانم که ما چیزی را که به نظر می رسد بسیاری مانند این. بنابراین یکی دیگر از تکنولوژی وجود دارد به نام موسیقی XML حفظ توسط مردم کاملا متفاوت است. XML متنی داده structure-- من است باید بگویم داده structure-- می گویند نقشه مرتب سازی بر استعاره. و آن را طراحی شده برای برگزاری داده های سلسله مراتبی بسیار خوب است. HTML، برای مثال، یک نوع XML است. و شما می توانید بگویید که آنها به دلیل XML تا به حال تمام براکت زاویه و زاویه علامت اسلش براکت که زمینه های داده های نشان می دهد. من یک کد ندارد به عنوان مثال از موسیقی XML. شما می توانید آن را خودتان پیدا کنید. در واقع، به همین دلیل شما ممکن است بخواهید استفاده از XML به عنوان مرحله میانی است، اول از همه، آن را فرمت تبادل برای اساسا every-- باید بگویم نه هر، اما بسیاری از نمره های مختلف نویسندگان. بنابراین اگر شما در موسیقی ارسال XML، نه تنها می تواند LillyPond خواندن آن را با کمک این های فلش برنامه ای به نام موسیقی 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 فایل های خود را از اگر شما در حال تولید آنها برنامه نویسی. اما باز هم، آن را چیزی مفید داشته باشند. عالی. ذخایر دیگر من فقط رفتن را از طریق این بسیار به سرعت. LillyPond manuals-- LillyPond است اسناد عالی در وب سایت خود. آنها آموزش. آنها یک مرجع نحو. آنها صدها قطعه دارند برای چیزهای مختلف کوچک یو ممکن است نیاز را نشان دهید قابلیت های مختلف. اگر شما می خواهید به استفاده از زبان برنامه نویسی و یا گسترده تر سفارشی، پس از آن وجود دارد داخلی که در آن آدرس های مرجع. اگر شما می خواهید به استفاده از موسیقی XML، وجود دارد که URL، musicxml.com/tutorial. و پس از آن اگر شما نیاز به یادگیری طرح زیرا شما در واقع می خواهید به استفاده امکانات برنامه نویسی در LillyPond، پس از آن یک [نامفهوم] به نام وجود دارد تفسیر یافته از برنامه های کامپیوتری، است که نه تنها دوم بزرگترین کتاب CS تا به حال written-- پیدا کردن من پس از آن اگر شما می خواهید بدانید چه من فکر می کنم یکی از بزرگترین is-- اما آن را نیز بسیار خوب مقدمه ای بر زبان مناسب. شما نمی خواهد بیش از نیاز چند بخش است. و از آن است. هر گونه سؤال؟ دانشجو: از کجا می توانم دانلود خود را تولید فرر ژاک بنابراین من می توانید آن را در آی پاد من قرار داده است؟ استفان KREWSON: خوب، شما می توانید ارسال به برخی فایل WAV به Euterpea. و شما باید کد. این در GitHub است. را تغییرات خود را از فرر ژاک توسط ذهن کندو CS50. آن بزرگ خواهد بود. CONNOR HARRIS: هر کس دیگری؟ استفان KREWSON: ما نیاز درام باس بهتر، TOO. این واقعا بد است. دانشجو: Euterpea نه تنها سمت ترکیب، اما signal-- استفان KREWSON: بله. در واقع، کار من در Euterpea زمانی که من زمان this-- یک وجود دارد دوره های تحصیلات تکمیلی در دانشگاه ییل که با استفاده از it-- در سنتز صدا بود. بنابراین یک واقعا وجود دارد راه خوب با استفاده از فلش و برخی از ما از نماد دیدم آهنگسازی با هم توابع سیگنال قرار دارند. به طور خاص، باس ترین از آنها فقط یک موج ساده سینوسی است. اما اگر شما شروع به آهنگسازی آن در راه برنامه ریزی عجیب و غریب، شما می توانید صدا دیوانه دریافت اثرات، مانند آبشار عجیب و غریب. شما می توانید بسیار ریگ ایجاد برای تلفن های موبایل با بسیاری از مدولاسیون. من یک پروژه در دانه بود سنتز، که جایی در میان FM و نمونه برداری. شما را بسیار کوچک، نمونه کمی، و سپس با نوعی از ترکیب آنها مدولاتور و ایجاد یک صدا غنی تر است. ما همچنین مدل سازی فیزیکی، به طوری که تلاش در مورد فیزیک فکر می کنم و psychoacoustics از چیزی شبیه ترومپت، و فکر کردن در مورد راه صدا قوی کردن زنگ شیپور و آکوستیک اتاق و مدل سازی که با اسیلاتورهای عمومی. CONNOR HARRIS: با تشکر بسیار. ممنونم که اومدی. و من همیشه مایل به من پرسش های توسط email-- connorharris@college.harvard.edu. استفان KREWSON: آره. stephen.krewson@yale.edu. خنک.