CONNOR HARRIS: Hi.
Mən Connor Harris edirəm.
Mən Harvard CS50 CA edirəm.
STEPHEN KREWSON: Mən Stephen Krewson edirəm.
Mən Yale CS50 üçün TF oldum.
CONNOR HARRIS: Və biz danışmaq olacaq bəzi texnologiyalar haqqında ki, bilər
Əgər istəyirsinizsə istifadə etmək istədiyiniz son layihə bunu ya, həqiqətən,
musiqi ilə bir şey.
Biz ilk bir diqqət olacaq Haskell adlı proqramlaşdırma dili.
Bu funksional dil, belə ki, paradiqma
C və ya PHP çox fərqlidir və ya digər vacib languages
ki, siz artıq istifadə, xüsusilə də etdik Haskell yazılmış bir kitabxana
insanlar kömək edə bilər ki, Euterpea adlı funksional musiqi yazı ilə,
əsasən.
Və Stephen size yol edəcək ki, bir böyük nümunə vasitəsilə.
>> Bundan sonra, mən sizə təqdim edəcəyik LillyPond deyilən bir şey olan
yazıdizim musiqi bir texnologiyadır.
Bu növ lateks kimi musiqi siz əgər varsa
riyaziyyat dərsləri üçün lateks istifadə və ya digər P set dərsləri və ya nə var.
Və mən yenə verəcəyik, ki, bəzi sadə nümunələri
və ümumiyyətlə siz qeyd bəzi yaxşı resurslarının istiqaməti.
>> STEPHEN KREWSON: In Bundan əlavə, biz fikir
qurmaq üçün sərin olardı göstərişlər bir az
arasında boru kəməri doğru Euterpea yaradıldı MIDI faylları
LillyPond, belə ki, biz təmin scripts bəzi təlimat
ki bunu LillyPond təmin
Yalnız açıq mənbə saxlamaq üçün və gedən bir boru kəməri almaq.
CONNOR HARRIS: Yenə biz vurğulamaq lazımdır
bu iki texnologiyaları, siz onlara birlikdə istifadə etmək yoxdur.
Onlar işləmək üçün nəzərdə deyilik birlikdə, baxmayaraq ki, onlar çox gözəl yoxdur.
>> STEPHEN KREWSON: Sağ.
Və tamamilə pulsuz.
CONNOR HARRIS: Belə ki, teşekkürler, yalnız oxumaq.
STEPHEN KREWSON: lazımi qaydada qeyd edib.
O insanlar üçün təşəkkür edirik.
Bu yalnız bir an üçün gecikmək lazımdır.
Quraşdırma prosesi bir az çətin deyil.
Biz Github məni oxumaq Siz nəzər bilər.
Əgər hər hansı bir sualınız varsa, mənə e-poçt.
Amma biz, ehtimal altında bu run lazımdır bu ki, hamı üçün çalışır.
CONNOR HARRIS: Əgər siz bilməzsiniz LillyPond, heç bir böyük iş almaq.
Heç bir canlı yığma var ki, ən azı mənim sonunda, cəlb olunacaq.
STEPHEN KREWSON: Haskell və LillyPond həm yükleyicilerinde olmalıdır.
Euterpea kimi nazil paketi, belə ki, və s.
Belə ki, biz kompüter musiqi haqqında söhbət edirik.
Və bu yalnız bir deyil çox 50.000-ayaq görünüşü.
Bunun bir neçə müxtəlif aspektləri var.
Bu kobud və bir detal gizli gedir.
Amma biz bir şey hesab edə bilər alqoritmik tərkibi kimi,
alqoritmləri istifadə edərək, yaratmaq üçün, kodu istifadə
bir növü of-- bəlkə bir öz-özünə oxşar qeydlər, və ya bəlkə qeydlər ardıcıllığı
bir sıxıntı altında.
Və sonra o ola bilər həyata və ya şərh
analog alətləri ilə ya kimi bir şey.
Amma tərkibi oldu algorithmically edilir.
>> Amma əlbəttə, bəlkə sahəsi kompüter musiqi və ya digital musiqi
biz digital ilə daha yaxından tanış edirik səs sintez və ya digital nümunə
və digital qeyd.
Digital alətləri bir çox var digital nümunə vasitəsilə həyata.
Əslində, biz həmin birini istifadə edərək olacaq sonra bir səs font kitabxana forması.
>> Lakin bir şey var adlı var çıxdı digital sintez
Mərhum '70s və daxil "ilə 80-ci Stanford Yamaha və John Chowning
FM sintez etməklə və ya Tezlik Modulyasiya sintez,
burada daşıyıcı idi siqnal və modulating siqnal
həm də audio spektri.
Amma biz diqqət ne Bu gün, MIDI deyilən bir şey deyil
və əlbəttə ki, alqoritmik tərkibi.
>> Biz alətləri etmək niyyətindədir, lakin deyilik biz əvəzinə bəzi musiqi etmək olacaq,
və sonra şərh edəcək bəzi alətləri ki,
üçün conformant var ümumi MIDI standart.
Belə ki, MIDI nədir?
Mən çox dərin onu almaq fikrində deyiləm lakin MIDI data transfer protokoldur.
Bu arasında bir bələdçi bir növ var müxtəlif şirkətlər və sənaye
səslər və ya yamalar təşkili üçün.
Belə ki, görürsünüz bir MIDI standart var
bütün müxtəlif zərb üçün səslər və MIDI tövsiyələr
synth bütün müxtəlif növləri üçün və ya bütün alətinin müxtəlif növləri
bir orkestr qruplar deyirlər.
>> Siz yəqin ki, ilə tanış edirik 0 vasitəsilə 127 MIDI messages.
A MIDI siqnal adətən ifadə bir az
Bu bir məlumat və ya olub status paket, sonra var
bir siqnal yeddi bit.
Bu nəzarət edə bilərsiniz həcmi hər şey
hərəkət və ya təzyiq xüsusi əsas
Bir MIDI ilə həyata edirsinizsə nəzarətçi eləcə də, əlbəttə,
qeydlər.
Və əlbəttə ki, MIDI var son dərəcə faydalı olmuşdur
Bu tel üçün bir yol var, çünki birlikdə və ya papatya zəncir
MIDI hardware cihazlar bir dəstə.
Mən evimdə yeddi və ya səkkiz geri var.
Bu, həqiqətən, çətin olur lakin bu, həqiqətən güclü.
Və bu həqiqətən köhnə var.
Bu erkən 80-ci olan, və bu, həqiqətən gözəl və kiçik.
CONNOR HARRIS: Bəli.
Bütün klassik Nintendo video oyun yəqin ki,
məsələn musiqi MIDI faylları var.
>> STEPHEN KREWSON: Burada bir var ümumi MIDI nümunə
bir növ kimi MIDI göstərən ümumi protokol.
Və biz hesab edə bilər dəqiqləşdirilməsi arasında fərq
kimi bir şey olmalıdır ki, Bu alət faktiki səslər və
bu alətlərin həyata keçirilməsi səsləri Səs font və ya müəyyən bir MIDI
fərq kimi sintezatoru deyir bəlkə bir typeface-- arasında,
ümumiyyətlə, bu dizayn bu şəkildə təmsil etmək
simvol və xüsusi font ki, müəyyən bir ölçüsü və səs tembri var
və the-- həyata keçirilməsi var
>> CONNOR HARRIS: Bəlkə bir daha yaxşı müqayisə ki
ola Unicode standart verir belə deyir hər xarakter sayı, və həqiqətən
Dünyada hər dil, və ya dil scripts geniş set
Dünyada və sonra həmin bir şey qrafik daxil göstərilən
Müxtəlif font paketləri ilə.
Və təbii ki, siz hesab edə bilər Səs Unicode kimi MIDI.
Və bu böyük bir axın of-- yalnız bir siyahısı hadisələr və alətləri və etajer,
və ayrı var Proqram bir yazı kimi,
ki göstərməyə səsli bir şey.
>> STEPHEN KREWSON: Belə ki, niyə Haskell?
Haskell funksional proqramlaşdırma var çox inkişaf etmiş dil,
C çox fərqli, PHP çox fərqli.
Və biz bir var ki, görmək olacaq Haskell funksiyası tərkibi rahatlığı
bizə vasitəsilə breeze üçün imkan verir transcribing, bəstələmək və ya yazaraq,
Frere Jacques kimi bir şey, Bu sadə mahnı ki,
bu hissələri bir çox var ki, öz-özünə oxşar və ya təkrar var.
Belə ki, bu bir olacaq nə üçün motivasiya
Biz Haskell istifadə etdiyiniz hansı funksiyaları birinci sinif vətəndaşıdır.
>> Mən uzatmaq istədi bu bir az.
Bu bir az asandır Haskell Frere Jak notate.
Amma biz istəyirdi nə bu bir baraban hissəsini əlavə?
Biz etmək üçün cəhd istəyirdi nə Bir Roland 808 və ya 909 baraban kimi bir şey
siz maşın 16 müxtəlif addımlar?
Adətən bu var kimi 16-cı qeydlər düşündüm.
Və qlobal nəzarət edə bilərsiniz temp və siz seçə bilərsiniz
müxtəlif zərb hissələri bir dəstə bas nağara, bir clap, müxtəlif snares,
açıq və qapalı yüksək papaqlar kanalları bu növ,
və sonra EQ və ya onların həcmi seçin.
>> Və biz gözəl bir şəkildə görəcəksiniz Bu addımı təmsil Haskell
bütün sequencer Haskell müxtəlif sərin şeyi
biz yaradan ilə edə bilərsiniz siyahıları üzərində siyahıları və filtreleme,
siyahıları üzərində mapping, mapping siyahıları üzərində fəaliyyət göstərir.
Və tez üzr.
Bu, çox ötəri deyil və hədsiz sürətli eskiz
aspektləri bəzi Haskell və Euterpea ki,
Bir domen xüsusi olan əlaqədar dil yazılı
musiqi növləri üçün Haskell.
Belə ki, online kodunu kontrol edin.
Glasgow qədər yanğın GHCI, Haskell Compiler Interpreter.
Mən bəzi məşğul olacaq bir az bu
belə ki, bunu necə görə bilərsiniz.
>> Və bu ilə yüklemek üçün imkan verir ki, the-- syntax sonra colon və
komanda.
Siz faylları yükləyə bilər.
Siz bu faylları göz istifadə edə bilərsiniz bütün funksiyaları görmək üçün
xüsusi modul mövcuddur.
Və biz, növləri və növü görəcəksiniz sonra dərsləri, Haskell vacibdir
belə ki, həmişə, xüsusilə də yoxlamaq bilər Yeni bir DSCL çalışırıq, əgər
bu kimi bir musiqi növü nədir?
Mən yol ədədi haqqında bilmək növləri, Haskell iş
lakin mən musiqi haqqında çox bilmirəm.
Amma onlar yol tədqiq edə bilərsiniz Bu t və ya növü komandasindan istifadə edərək, müəyyən
və sonra xüsusilə zəng funksiyası və ya məlumat obyekt.
CONNOR HARRIS: Bəli.
C və cingilti fikir varsa növləri haqqında hardass idi,
Siz Haskell haqqında heç bir fikrim yoxdur.
Haskell haqqında yaxşı şey ki, Siz tərtib etmək kodu edə bilərsiniz
və Haskell növü çek əgər, Bu, yəqin ki, doğru
type sistemi belə ciddi çünki.
>> STEPHEN KREWSON: Bəli.
Mən yalnız getmək istəyirəm daha through-- və,
bu bir neçə ədalətlə etmir Haskell xüsusiyyətləri, ən azı
onun creators-- və bu yaradılmışdır insanların bir dəstə ilə mərhum 1980-ci ildə,
20 bir komitə xalqımAğır vacib idi düşündüm.
Və ilk şey onlar bir kağız listelenen
Haskell genezisi təsvir ilk 20 il və ya artıq
Bu tənbəl idi.
Belə ki, bu nə deməkdir?
>> Biz bir növ zaman Bəli, bu o deməkdir ifadə, biz bunu qiymətləndirmək lazımdır.
Və Haskell zəng bu yoxdur ehtiyac yol və ya qeyri-ciddi yolu ilə.
Biz bir dəstə var ki, əgər Bizim ifadə komponentləri,
biz qiymətləndirilməsi gecikdirmək üçün cəhd o alt of
mütləq son minute-- qədər biz, həqiqətən, onlara ehtiyac qədər ki.
>> Belə ki, bu vasitələri olan həqiqətən, sərin, xüsusilə
biz abstraksiya haqqında düşünür edirsinizsə musiqi addım sequencer edir.
Siz yandırmaq və siz başlamaq bir addım sequence-- çalışan
Heç bir nağara ilə çalışıb əgər machine-- və yalnız əbədi gedir.
Belə ki, biz, həqiqətən, gözəl olardı Haskell ki yarışmaq bilər.
Və biz sonsuz ilə bunu edə bilərsiniz dəyərlər, xüsusilə sonsuz siyahıları.
Bu yazın çox asandır Haskell sonsuz siyahısı.
Siz yalnız aşağı sintaksis istifadə edə bilər Burada siz 3 ilə 1 görmək,
3 1 dot dot aradan qaldırılması və ki, sonsuz siyahısı
bütün təbii nömrələri uzanan qədər siz təsəvvür edə bilərsiniz kimi.
>> Mən təqdim etmək istəyirəm hemen katlanmalarda anlayışı.
Və yenə, məqsədi Bu seminar deyil,
Haskell katlanmalarda haqqında məlumat və ya ali məqsədi fəaliyyət göstərir.
Amma yalnız onu təqdim etmək istəyirəm necə qəribə dəqiq hissi verir
Haskell və necə güclü deyil.
Və xüsusilə, biz fikrində deyilik Biz müxtəlif baraban hissələri nə zaman,
biz siyahıları manipulyasiya etmək olacaq ədəd bir-birinə üzərində onlara qatlama.
Bunu etmək üçün, biz lazımdır xəritələr və katlanmalarda istifadə ola bilər.
>> Düzgün assosiativ var bu bir doğru olan, qat
burada 1 minus miqdarı, 2 minus miqdarı, 3 minus 0.
Və üçün syntax qat, bir dəfə vermək
baza dəyəri və sonra operation-- Bu halda, əlavə və ya toplama işlemi.
Mən də hallarda göstərilən etdik.
Və sonra bir akkumulyator var ki, Bütün siyahı üzərində toplanır,
ki, operator plus tətbiq və ya minus, və sonra yığılan.
Bu adlanır əgər Belə ki, bu the-- olacaq qat r plus 0 ilə 0 başlayaraq,
biz sonra bütün yekunlaşdırmaq olardı ki, siyahıda nömrələri.
Və 1-dən 3-ə bir siyahısı.
CONNOR HARRIS: Belə ki, başqa bir qoymaq üçün yol qat r üç dəlilləri.
Bir funksiyası var ki, özü iki dəlilləri edir,
sonra bir başlanğıc dəyəri var, və dəyərlərin siyahısı var.
Və siz nə sizi deyil starter dəyəri, ilk dəyəri,
funksiyası onları qoydu.
Siz nə almaq yoxdur ki, feed almaq
funksiyası daxil İkinci dəyəri, siz almaq nə,
almaq, ki, yem Üçüncü dəyər funksiyası.
Və sonra aşağı getmək əgər Bu bütün siyahısı bu şəkildə,
Siz nəhayət almaq olacaq bəzi tək dəyəri
Siz başlamaq nə eyni tipli ilə və eyni tipli
sonra siyahıdan şeyi, və ki qat R. qaytarılması nəticə
STEPHEN KREWSON: xüsusilə Belə ki, bu ali məqsədi funksiyaları,
onlar başqa alaraq edirik, çünki arqumentlərdən biri kimi fəaliyyət göstərir.
>> CONNOR HARRIS: Bəli.
Siz müəyyən digər istifadə varsa dillərdə I R bilirəm, [işitilemez]
dil azaltmaq adlanan bu var.
Siz oxşar funksiyaları ola bilər digər dillərdə, yalnız adlı
fərqli şeylər.
>> STEPHEN KREWSON: And nə qat R gözəl
bu halda ki, qat R sonsuz siyahıları ilə işləyə bilər.
Bu alt, bu P5 belə qeydlər yaradan ki,
üçün addım sequencer açıq bir baraban hissəsi, beşinci drum hissəsi,
və bəlkə bir Conga var nağara və ya bir şey.
Bu qəsdən deyil Bu yazı obtuse yolu,
lakin, çünki, əyləncə var bir çox nümayiş etdirir
Haskell və Euterpea haqqında hər şeyi.
>> Belə ki, bu colon-- kolon R qat şeyi itme yalnız bir operator
birlikdə boş adlı list-- haqqında yalnız boş mötərizədə var siyahısı.
Və mən zəng edirəm Bu sonsuz siyahıda.
Bu, həqiqətən, iki siyahıları aşağı burada birlikdə əlavə.
siyahısı 1 vergül 6 dot dot 1, 6, 11, 16.
Yalnız belə Haskell-- bir neçə simvol, siz
ümumiliklə yarada nömrələri ardıcıllıqla
Beş ədəd ayrı var ki, sonsuzluğa uzanan.
Mən ki, başına Bu qısa az list--
3, 8, 21-- yalnız sizə göstərmək üçün necə siyahıları concatenate bilər.
>> Və sonra mən özü qatlanmış etdik.
Və bu, yalnız bir növ olan qədər başa şəxsiyyət əməliyyat, lakin sonsuz deyil.
Və R bunu edə bilərsiniz qat çünki tənbəlcəsinə yuxarıda kimi qiymətləndirir.
Biz 1 və 2 və 3 varsa, biz yalnız bütün qalan off bracket.
Ki, iş deyil minus və ya plus, lakin o,
bu kolon üçün işləyəcək siyahıda şəxsiyyət əməliyyat.
>> Belə ki, necə biz praktiki istifadə edə bilərəm ki, əgər biz şeyi sonsuz uzun bir siyahı var?
Yaxşı, Haskell təmin edir funksiyaların bir çox
və bu daha çox baxmaq almaq kimi öz sýrada
olan OK, biz istəyirik deyir Bu sonsuz siyahısı yaradan,
lakin biz yalnız bəzi almaq olacaq Bunun Və Bu halda sayı
Biz sonra bu görürsünüz Bizim drum machine kod
GM qlobal yalnız bir növ addımlar sayı dəyişən
sequencer edir.
Roll-in maşın I ki, adətən 16 var, sizə göstərdi
amma 32 ilə həyata keçirdik.
Bu, həqiqətən etməz.
>> Haskell də təmiz, belə ki, güclü var Connor alluded statik yazaraq.
Belə ki, funksiyaları sense-- riyazi
daha riyazi istəyirik onlar təmin edirik ki,
daxil olmaq və ya hər hansı bir dəyişiklik deyil və ya dəyişən giriş və ya çıxış həyata keçirir.
Bir funksiyası varsa, Bu deterministic var.
O, həmişə eyni qayıdacaqlar Proqramın dövlət dəyəri
və ya eyni qalır.
Monadic istisnalar, əlbəttə, var Bu, lakin bizim kənara var.
>> CONNOR HARRIS: Bəli.
Bu nə deməkdir, baxmayaraq ki, var bir neçə mühüm [işitilemez]
Bu nəticələri.
Biri üçün çox asandır ki, Haskell proqramları parallelize.
Varsa Çünki, ki, bir funksiyası demək
əgər bir milyon dəyərlər fəaliyyət lazımdır ki, funksiyası həmişə olacaq bilirik
eyni dəyər əgər vermək Müəyyən bir dəyər feed
Siz f, [Işitilemez] f 1 değilseniz 2, sonra f 3 və ya 1 f whatnot--
yazmaq niyyətində deyil bir fayl və ya bir şey
ki, F2 dəyəri dəyişəcək.
Siz yalnız bir bu funksiyası split bilər milyon müxtəlif maşın və ya bir milyon
müxtəlif mövzuları və ya nə olursa olsun, geri bütün cavab almaq,
bütün geri dəyərlər almaq geri, sonra bu.
Şeyi parallelize Belə ki, çox asandır.
>> İşin mənfi tərəfi odur ki, giriş və çıxış xüsusilə
növü sisteminə uyğun çox mürəkkəb yolları.
Biz indi ki, doğru getmək, amma deyil Bəzi resursları baxmaq üçün təşviq
online Bu barədə öyrənmək istəyirsinizsə.
>> STEPHEN KREWSON: Belə ki, yazın classes-- və bu
növləri was-- dərsləri həll etmək üçün icad edildi
operator həddindən artıq bir problem.
Beləliklə, biz bərabərlik etmək istəyirdi şeyi müxtəlif növləri arasında.
Əlbəttə ki, biz of-- hesab edə bilər rəqəmli növləri arasında bərabərlik
, düşünmək üçün çox asandır, lakin nə siyahıları arasında bərabərlik haqqında?
Bərabərliyi haqqında nə ağac ayaq data strukturları?
Bu bütün mümkün deyil Haskell növü dərsləri, çünki.
>> Belə ki, müəyyən bir məlumat tipli müəyyən əgər və burada bu musiqi sahasi var.
Biz nəhayət alırıq bəzi kompüter musiqi.
Beləliklə, biz C, C kəskin var, və s və s.
Onlar bir dəstə aid müxtəlif növü dərsləri.
EQ-- onlar EQ növü sinfinə aiddir.
Yəni onlar dəstək deməkdir bərabərlik əməliyyatları.
Belə ki, bir olub qiymətləndirmək olar musiqi primitives ardıcıllığı
fərqli biri kimi eyni.
>> Onlar sıra sinfinə aiddir.
Ki, bir sifariş, bu var deməkdir.
D C. C kəskin sonra gəlir eləcə də C sonra gəlir.
Onlar sinif aid onlar deməkdir ki, göstərmək
Bir konsol və ya terminal üçün çap edilə.
Onlar aid sinif, sadalanan hansı
o deməkdir ki, baxmayaraq ki, Bu simvol,
Onlar əsas rəqəmli var 0 başlayan nümayəndəliyi
və lakin vasitəsilə gediş çox şey burada, 20 və ya belə,
ya bəlkə 30 və ya 40,.
>> CONNOR HARRIS: zaman Biz data növü
ki, söz ilə derives-- "Deriving--" müəyyən bir növü sinif,
Bu compiler çalışacağıq o deməkdir ki, avtomatik bir şey tikmək.
Belə ki, bəlkə lazımdır fərqli bir keyfiyyət müəyyən edir.
Siz kəskin C müəyyən etmək lazımdır məsələn, D düz bərabər.
Bu tikinti ilə burada, mən C kəskin düşünmürəm
və D düz, çünki bərabər olacaq compiler avtomatik olaraq
hər müxtəlif mümkün dəyər demək hər fərqli deyil.
>> Belə ki, yalnış mümkündür default applications
dərsləri bu cür.
Yenə yalnız əgər baxmaq Bu barədə öyrənmək istəyirəm.
STEPHEN KREWSON: And Burada, həqiqətən, bu lazımdır
biz sonra kod zaman üçün faydalı ola bilər.
Biz infix operatorların bəzi görmək ardıcıl tərkibi,
paralel tərkibi, və s irəli, bu müsbət və bərabər əlamətləri
colons ilə əhatə.
Yəni, biz bu müxtəlif oynaya bilər deməkdir musiqi primitives digər sonra bir.
Ki, ardıcıl tərkibi var.
>> Və ya biz onları oynaya bilər Eyni zamanda paralel.
Belə ki, bir musiqi dəyər ola bilər, və sonra bu, bərabərdir və colons
, paralel tərkibi operator Infix və akkord bir növ kimi oynayır.
Və biz istifadə etmək olacaq Bu zaman biz birləşdirmək
ilə drum hissəsi bizim az Frere Jacques mahnı
bu iki ardıcıllığı oynamaq eyni zamanda musiqi dəyərlər.
>> Is-- Curry tumar edilib Haskell Curry, adı kim
Haskell image adını daşıyır.
Bu bizi bir imkan verir biz istəyirik gözəl zəriflik
bütün bu müxtəlif yazılı funksiyaları və ya biz istəyirik filtreler
Bizim siyahıları üzərində Xəritəçəkmə olacaq.
Iki funksiyası x və y-- f arqumentlər
kimi təmsil oluna bilər x f y müraciət edib.
Belə ki, bir funksiyası var qaytarır bir arqument
bir arqument bir funksiyası.
Belə ki, bu biz bir xəritəyə bilər deməkdir y-in siyahısına üzərində x funksiyası f.
CONNOR HARRIS: istəyir bu bir nümunə vermək?
STEPHEN KREWSON: Bəli.
Mən burada bir nümunə biz yazacaq bəzi şeyləri.
Belə ki, kopya 2-- yaxşı, olacaq kopya
neçə bir dəyəri, dəfə bir şey kopya,
və sonra bir dəyər olacaq adətən bir siyahısı və ya bir şey.
Odur ki, biz mapping istəyirik başqa siyahı üzərində 2 kopya.
>> Biz 2 kopya xəritəsi Belə ki, biz 2 kopya əgər tətbiq
bu list-- ilk element və bu musiqi phrases-- siyahıları var
iki istehsal edəcək "Siz sleeping--" belə ki, yuxu, yuxu.
Belə ki, indi biz iki var.
Amma təkrar iki edir dəlilləri, lakin biz istəyirik, çünki
mapping sonra tumar və, biz Çoğaltma 2 təmsil edə bilər
bir funksiyası kimi geri edilmiş kimi bir dəlil yalnız iki dəfə təkrarlanmağa.
Və sonra biz hər ki, tətbiq edirik söz bu siyahının element.
>> Və Concat bir Haskell deyil bir siyahısını flattening üçün əməliyyat.
Kopya 2 Çünki siyahıları siyahısını istehsal edir.
Və bu ara forma burada.
Və sonra biz Concat bilər və ya iki dəfə ki, dümdüz.
CONNOR HARRIS: A sadə tumar nümunəsi,
Siz like-- etsəniz f yalnız bir təsəvvür iki edir vurma funksiyası
arqumentlər və öz məhsul qaytarır.
Siz bir F 4 5 varsa, 20 var.
Amma bu hesab edə bilər also-- bir funksiyası f 4 var
ki, bir dəlil və yekunları edir Bu yalnız dəlil dörd dəfə
qismən tətbiq edən Yalnız bir arqument 4.
Və 4 f qidalandırmaq 5, ki, siz 20 verəcək.
Və bir sadə deyil tumar nümunəsi.
Bu adətən dərslik olanları biridir.
>> STEPHEN KREWSON: Lambda ifadələri və ya anonim funksiyaları
başqa Haskell əyar edir.
Biz bir qızışdırmaq lazımdır, əgər belə az funksiyası həyat kopya,
lakin bu deyil demək standart kitabxana,
biz sintaksis istifadə edə bilərsiniz Aşağıdakı bənzər.
Və biz bu artıq Meltem lazımdır.
Siz bir çox görəcəksiniz Bir şey drum machine biz zəng edirik ki,
bir şey çağırıb olan kimi əvvəl, filter,
bir funksiyası mapping edir bir siyahı üzərində, ancaq var
bir Boolean funksiyası bir mapping.
>> Beləliklə, biz burada nümunə var bir bir anonim
müəyyən Boolean funksiyası yalnız bir neçə dəyərlər edir.
Bu ciddi danışan deyil anonim funksiyası.
Amma bu ilə müəyyən deyil müxtəsərlik üçün sintaksis,
və bu, yalnız x modul edir n--
CONNOR HARRIS: Bəli.
Belə ki, f bir funksiyası iki dəlilləri n və p
ki, özü bir funksiyası qaytarır bir arqument bir funksiyası, yəni x.
STEPHEN KREWSON: I sözügedən infix operatorları.
Infix operatorları hansılardır?
Yaxşı, infix operatorları biz əməliyyatları təmsil normal şəkildə,
mathematics-- 2 plus, demək Əvəzinə operatorun 2 plus
və sonra iki dəlilləri 2 və 2.
CONNOR HARRIS: Bu deyirlər olan polish notation geri
bir müddət Mən sizə hər hansı bir bilirik ki, şübhə.
>> STEPHEN KREWSON: Sağ.
Polish və ya prefiks notation Reverse.
Amma Haskell qərar verdi infix operatorları istifadə edin.
Belə ki, bu bəzi xüsusi olanları ki,
üçün müəyyən edilir Haskell Euterpea DSCL.
Belə ki, bu ardıcıl tərkibi idi.
Bu paralel tərkibi idi və bu paralel tərkibi truncating edilib.
Və biz lazımdır Bizim drum maşın ilə,
Biz son istifadə edəcəyik, çünki orada ki, az Tuple operatoru
birlikdə baraban maşın oynamaq Bizim Frere Jacques mahnı ilə.
Və baraban maşın sonsuz olacaq.
Bu, sadəcə əbədi oynayır.
Amma Frere Jacques mahnı deyil.
Bu uzun deyil.
Bu, yalnız bir neçə bar var.
Beləliklə, biz kimi baraban maşın dayandırmaq lazımdır qısa musiqi dəyəri gəlir qısa müddətdə
sona.
Və infixed operator ki, super faydalıdır.
>> Kimi və infix notation Bu cür gözəl
demək, çünki bir funksiyası kimi var quote olan tam bölgüsü verir
bir şey x else-- sorry, bir və b olmalıdır.
Siz b quote kimi yazmaq bilər.
Siz put-- element, əgər belə bu bir nümunəsidir.
bəzi siyahısında x element, siz qoymaq əgər Bu Backticks, siz istifadə edə bilərsiniz.
Bu rəmzi deyil, baxmayaraq Plus və ya minus və ya dəfə kimi,
Bir adını istifadə edə bilərsiniz Backticks belə funksiyası
olduqca sərin infix operatoru kimi.
CONNOR HARRIS: Yenə də, bu yalnız sintaktik şəkər, həqiqətən.
Bu dil əsas təsir etmir.
>> STEPHEN KREWSON: Belə ki, biz burada bax Bizim Frere Jacques mahnı son söz,
Mən bir az ton ifa və ya paralel tərkibi istifadə üçdə
operator.
Bu, bəzi deyərək bir yoldur biz yalnız deyərək olduğunuz nə.
Belə ki, funksiyaları xəritəsi bilər siyahıları üzərində bir mübahisə.
CONNOR HARRIS: Yenə istinadlar Haskell-- giriş dərslik
bu bütün bu olacaq.
>> STEPHEN KREWSON: Belə ki, burada olduqca var addım sequencer əsas xətt
Biz istifadə nəzər lazımdır siyahısı anlama.
Və biz burada element görmək geri quotes sabit operator.
X siyahısı bir element, əgər belə x-nin, sonra biz perc funksiyaları zəng edəcəyik.
Belə ki, Perc yalnız bir zərb funksiyası var.
Bu bəzi dəyəri p edir bütün Məhdud dəsti hissəsi
müxtəlif zərb səslər Biz bir əvvəlki slide gördüm ki,
və sonra verir dörddə qeyd müddəti.
Else bu bir QNR verir, QNR yalnız dörddə qeyd istirahət edir.
>> Belə ki, bu gözəl bir şey bina var.
Biz elementləri bir siyahısı var, və bir bir siyahı ərzində biz lazımdır loop
Bizim addım sequencer max dəyəri.
Və biz xüsusi i olduğunuzda max dəyəri bir ki, siyahısı,
Mən bu üzvüdür əgər Bu funksiya yaradılmış set,
yaxşı, sonra biz onu açmaq zərb qeyd daxil.
Əks halda, biz yalnız istirahət, oynamaq biz yalnız səssiz qalması, demək.
Və biz burada görə ki, bilər bu siyahı anlama syntax,
x bu yaşayır siyahısı bir inşa
sequencer qlobal ölçüsü.
CONNOR HARRIS: Bəli.
əsas syntax siyahısı comprehensions edir
cəlb bracket, dəyəri bəzi dəyişənlər, bar,
dəyişənlərin mümkün dəyərlər özləri bracket bağlanıb.
Və siz təyin builder notation etdik əgər riyaziyyat sinif hər cür,
Əgər belə 2n müəyyən ola bilər ki, n və ya n z edir.
Bu notation şey edir oxşar nalayiq olmaq deməkdir
ki, riyazi notation.
STEPHEN KREWSON: Və siz Çox predicates tətbiq
siyahısı və çox filtreler olduqca gözəl anlama.
Cəbri məlumat növləri biz Burada uzun uzanmaq deyil.
Yaxşı anlayışı var deyil Haskell və ya yaxşı, aşkar anlayışı
etmək necə, demək, bir defolt bir funksiyası və ya bir şey parametri.
Python, bu çox asandır.
On bərabərdir ilə Siz yalnız demək olar funksiyası bəyannamə,
bir default dəyəri ilə hal heç verilir.
>> Haskell, bəlkə bilər bəlkə yazın bəlkə istifadə,
olan ya heç bir şey edir və ya növü dəyəri yalnız bir.
Beləliklə, biz nağara maşın bu istismar Bizə isteğe həcmi vermək üçün imkan
drum hissələrinin hər parametrləri.
Bizə EQ olan bir yol verir, belə ki, və ya müəyyən bir kanal həcmi.
>> CONNOR HARRIS: In digər Haskell nümunələri,
bəlkə istifadə bax bilər uğursuz ola bilər fəaliyyət göstərir.
Bu ümumi biridir.
>> STEPHEN KREWSON: Və təmin edə bilər bir default kimi səhv mesajı bir növ.
Və xüsusilə lazımlı Siz Haskell I / O edirik.
Bu tövsiyələr ola bilər.
CONNOR HARRIS: Və ya üçün oxşar Məsələn, hesab edirəm ki,
bölmə daxildir ki, funksiyası 0 ola bilər ki, bir parametr.
Və funksiyası ola bilər bəlkə nə qayıtmaq.
0 heç bölmə var Belə ki, yalnız nə qayıdacaqlar.
Və bölmə ilə əgər var 0, heç bir şey qayıdacaqlar
səhv siqnal bir yol kimi.
Biri nəticəsi Çünki HASKELL çox ciddi yazaraq
heç bir real-- var ki istisnalar əsasən, yöndəmsiz edir
səhv rəftar yöndəmsiz.
Və bu çox biri bunu ümumi yol.
>> STEPHEN KREWSON: Belə ki, indi biz almaq başqa mind-əyilmə şey
Haskell, haqqında olan model uyğun və funksiyası anlayışlar.
Mən son slayd göstərdi addım ardıcıllıqla elan
bir bəlkə dəyər aldı funksiyası, sonra bir int, sonra ints siyahısı
sonra bir ardıcıllıqla qaytarır musiqi dəyərlər var not
meydança və həcmi, həm də.
>> Belə ki, həmin üç arqumentlər ola bilər Aşağıdakı şəkildə uyğunlaşdı model.
Və biz həmişə əmin olmaq istəyirəm ilk baza halda və ya çıxış işi yoxdur.
Və bu çizgi yalnız təfsir edilə bilər
var hər hansı bir dəyəri demək.
Biz ardıcıllıqla addım zəng almaq əgər Belə ki, bəzi dəyəri ilə, bəzi digər dəyər,
və sonra boş siyahısı, biz nə istəyirik qayıtmaq üçün yalnız sükut, istirahət 0.
>> Əvəzinə ki, boş siyahısı və ya 0 olmaqla,
biz istəyirik, çünki bu, istirahət 0 var musiqi növü ilə məşğul,
və musiqi boş siyahısı növü yalnız heç bir müddəti bir istirahət edir.
Bu, heç bir musiqi var.
Biz bir addım almaq, onda biz görürük həcmi arqument üçün bir v ardıcıllıqla,
tədbir aləti üçün p dəlil və sonra x-nin verilmişdir.
>> Sonra biz bəzi məhsulları yoxdur.
Xüsusilə tətbiq bu siyahı anlama,
və biz bəzi yerinə yetirmək bəlkə dəyəri əməliyyatları
ki, bir dəyər rəqəmli çevirmək sonra sadalanan və istifadə edilə bilər
aləti seçin.
Yenə də, bu bir az bit qəsdən inconcise
yalnız bütün qəribə şeylər göstərmək Siz kimi Haskell edə bilərsiniz
öz vaxtında ona nəzər.
>> Oldu.
Belə ki, biz nəhayət əldə edirik biz nə müəyyən nə,
olan bəzi kompüter musiqi olun.
Beləliklə, biz üçün cəhd olacaq Frere Jacques mahnı etmək.
Belə ki, necə var Frere Jacques ifadələr?
Dörd.
Great.
Və nə gözəl ki, onlar bütün təkrar edirik
iki dəfə eyni məbləği.
>> Belə ki, biz dörd ifadələr tərcümə var Hər iki dəfə təkrarladı.
Və xüsusilə, onlar dəyirmi istəyirik.
Və çox var bir çox yolları həyata keçirilməsi üçün
etmək fun ola bilər bir tur.
Mən onu etdik olduqca burada sadə yolu,
olan yalnız xətt construct-- etmək funksiyası musiqi dəyərlər siyahısını edir
və ardıcıl tərkibi onu çevrilir ki, ardıcıl tərkibi tətbiq
operator.
>> Və sonra mən müxtəlif gecikdirmək edərək onlara istirahət ilə başlayır.
Belə ki, iki tədbirlər qalan ilə başlamaq, və sonra dörd tədbirlər istirahət,
və altı sonra qalan tədbirlər, sonra dəyirmi
biz bütün bu mahnı bildiyiniz kimi, işləyir.
Biz görürük iki ek və ya musiqi dəyərlərin dəyişikliklər
bu ardıcıl əks olunur musiqi elementləri təşkili.
Biz əlavə həcmi var.
Bu annotasiya yazmaq üçün bir funksiyası var xüsusi həcmi musiqi.
Bu yaxşı bir nümunə bir MIDI siqnal çalışan
0-dan 127, yeddi bit keçirilə bilər məlumat.
>> Və then-- biz çox onu gördüm qısa, lakin ümumi MIDI
bütün müxtəlif alətlər siyahısı.
Onların bir çox yoxdur.
Bir digital audio workstation istifadə etsəniz, Ableton Live və ya Pro Tools kimi,
inanılmaz geniş var synthesizers və VST alətləri.
Lakin MIDI standart yalnız bir neçə və ya bir neçə onlarla var.
Və onların bəziləri funny edir.
Oynadıq əgər mən əyləncə olacağını düşündüm aləti MIDI aləti
vertolyot və sonra dəyirmi vasitəsilə növbəti yol,
biz və sonra, bir pad synth etdi Bu corny aparıcı kvadrat dalğa synth,
və sonra, lil səs olan bir mənim pis MIDI az küt
sintezatoru, lakin onlar OK.
>> Və sonra biz bu imkan görmək Haskell olan sintaksis,
sonra biz oynayırıq birlikdə bütün bu hissələr
paralel tərkibi operatoru ilə.
Və biz yəqin ki, bu, bəzi göstərə bilər.
Burada kodu var.
Və C bilərsiniz, bir var olarıq boğaz rəsmiləşdirilməsi və qəbulu çox
səndən əvvəl masa code bu kimi musiqi edə bilər.
Və ya hər hansı digər proqramlaşdırma dil, siz yəqin ki, istədiyiniz
bir növ ilə qarşılıqlı var kitabxana və ya API və hər şeyi qurmaq,
və sonra təmizləmək lazımdır ediyorum.
Amma burada Haskell edir, mən bir dəfə, hesab edirəm ki, Siz olduqca, onun asmaq almaq
oxunaqlı və çox ifadəli.
Belə ki, həyata keçirilməsi var Frere Jacques.
Oldu.
İndi biz zərb əlavə etmək istəyirəm, və bu bir az messier edir.
Belə ki, slaydlar bir nəzər salaq.
Belə ki, böyük fikir etmək siyahıları və ya hissələri bir dəstə.
Bu roll-in maşın var bəlkə səkkiz haqqında adətən idi
10 ritm və ya zərb hissələri.
Və sonra texnikanın bir dəstə istifadə edin.
Və biz these-- istifadə haqqında söhbət etdik katlanmalarda, filtreler, Lambda funksiyaları,
dəyərləri yaratmaq üçün siyahıları üzərində eşlenen bəzi sıra 1 r, r, 16
və ya sequencer 32 addımlar.
>> Və siyahısında dəyəri var sonra əgər biz sequencer keçən etdiyiniz kimi,
artıq onun vasitəsilə çalışan və üzərində, bu qeyd çevrilir,
ki, nümunə səbəb olur.
Burada müxtəlif qəribə yolları Mən qeyd yaratmaq üçün ilə gəldi.
Öz yarı məbləğ keçir.
Bu sərin səs lazımdır.
Time biz bu yolu getmək lazımdır, icazə.
Amma indi üçün, hərhalda Biz nə demo olmalıdır.
Bu OK gedir ümid edirik.
>> Belə ki, bu GHCI edir.
Və biz bir fayl yükləmək lazımdır Mən adlı song.lhs var,
Mən yalnız siz göstərdi fayl.
OK, böyük.
Connor əvvəllər dediyi kimi, bu, tərtib yoxlanılır növü,
mən bir çox asan nəfəs almaq olar.
Bu mənə partlatmaq niyyətində deyil.
>> Mən sizə faydalı bir şey göstərmək istəyirəm idi.
Siz ki, görə bilərsiniz yüklü modul 50 çağırıb.
Siz modulu bilərsiniz.
Və bu qədər gözəl əməlindəndir haqqında bəlkə nə
Haskell deyil siz edirik proqram inkişaf çağırıb
ancaq bir çox edə bilərsiniz Öz fun stuff.
Və iş kimi həqiqətən gözəl Başqa dillərdə bir çox müqayisədə,
Bir həqiqətən edə bilərsiniz, çünki neler oxunaqlı bir şəkildə.
Belə ki, biz var ki, görəcəksiniz Bütün bu ifadələr olan
musiqi sahasi siyahıları var, və sonra böyük bir şey bu qurmaq,
olan musiqi mahnı deyil.
Bu musiqi vahid var.
Və sonra biz bütün bu oynaya bilər bir funksiyası adlanır play musiqi ilə.
Siz burada görə bilərsiniz.
Hansı yalnız oynamaq edir.
>> Mən haqqında danışmaq etməyib demək lazımdır hər yerdə ki, bu dollar işarəsi.
Dollar işarəsi başqa infix operatorudur.
Lakin bu ən aşağı üstün var səmərəli hər hansı bir operatorun
ki, hər şey deməkdir dollar işarəsi sol
və dollar işarəsi sağ, biz əvvəl qiymətləndirdi almaq olacaq.
Belə ki, başqa kimi növ var mötərizə əlavə yol.
>> CONNOR HARRIS: Bu əsasən funksiyası tərkibi.
Və əgər yaxşıdır deyil ki, təmin edir Siz funksiyaları yan və ya infix ya var
hər tərəfdən operatorları, onlar deyil bu arasında şərik vermək
gözlənilməz nəticələri.
>> STEPHEN KREWSON: Beləliklə, biz can-- istifadə edərək, biz zəng edə bilərsiniz.
Birincisi, biz zərb alətləri olmadan oynamaq lazımdır.
Ki, vertolyot var MIDI vertolyot.
>> [MUSIC PLAYING]
Kvadrat dalğa var.
səs lil.
Və həqiqətən, bu ilə vəhşi bilərsiniz.
Mən olduqca sadə bir seçilmiş, Mən bilirdim, çünki mən off yemək lazım deyil
Mən çeynəmək bilər çox daha çox.
Yalnız olduqca sadə saxlamaq əsas ideyaları göstərmək üçün.
Lakin sonra mən kimi, biz idi Bu bəzi zərb alətləri əlavə etmək üçün var.
Məhz bu bir deyil, çünki az keçilməz,
Mən istifadə etməyib drum hissələrinin adı,
Onlar çünki mən Odur eşlenen ki, sadalanan sinif hissəsi,
Mən ints onları eşlenen.
Bir bas nağara kimi.
Zero həmçinin.
Seven yüksək hat edir.
Və aşağı burada olduğu funksiyaları, bir az daha təsadüfi almaq
Bu Conga zərb alətləri kimi.
>> Belə ki, bəlkə bir about-- hesab edirəm ki, əgər bir baraban maşın həyata keçirilməsi üçün fun yolu
çox nizamlı istifadə etmək bas nağara nümunələri.
Belə ki, məsələn, artıq filtreleme haqqında geri verir hər şey ilə siyahısı
Bu modul 04 qəbul 1.
Belə ki, 1, 5, 9, 13, 17-- bu almaq hər tədbirin ilk beat edir.
>> Və sonra bu eyni şey iki addımlar üzərində keçdikdə.
Belə ki, offbeat var.
Belə ki, bu olacaq yüksək papaq kimi bir şey.
Və sonra, aşağı burada, Bu, bir az təsadüfi deyil
biz Conga zərb alətləri edirik, çünki.
Mən də burada bəzi Maracas aşağı var.
>> Mən play baraban maşın zəng edə bilər lakin əbədi getmək olardı,
və onu qənimətçilik başlaya bilər Mənim sistem bütün yaddaş.
Beləliklə, mən bu funksiya zəng edəcəyik , biz görəcəksiniz kimi musiqi oynamaq
truncating paralel tərkibi istifadə Bizim kiçik Frere Jacques mahnı oynamaq üçün
Bu qəribə nağara maşın ilə birlikdə.
Belə ki, bir nəzər salaq.
Və yaxşılaşdırılması edin my bütün drum hissələri təşkili.
Mənim ixtisas, amma bunu fun bir çox idi.
>> [MUSIC PLAYING]
>> Əlbəttə ki, bu bütün əyləncə kimi bir az deyil
biz çevirə bilməz, əgər bir hesab belə ki, bəlkə
şərh edilə bilər bir insan ifaçı tərəfindən.
Belə ki, mən burada çalışmaz.
Mən artıq faylları yaradılan etdik.
Siz var ki, görə bilərsiniz dot LilyPond fayl və bu
mənim Segue artıq olacaq Connor-- və dot MIDI fayl,
və nə bir dot PDF file, olan LilyPond nəticədə yaradacaq.
>> Lakin bu o scripts və mən lazımdır yalnız onların yardım variantları ilə axır.
Bu almaq və ilə çalışan əgər Euterpea, bir MIDI fayl yarada.
Və sonra MIDI fayl Bu MIDI 2LY proqramı ilə,
Bir Lily yarada Pond fayl, və sonra
hesab bir PDF yarada.
Və biz bu nəzər almaq lazımdır.
Belə ki, Connor yəqin göstərəcək Siz necə, bu daha yaxşı annotasiya yazmaq
lakin bu Frere Jacques kimi Euterpea mənə tərəfindən.
Bu, sadəcə C. I fiqurlu olmalıdır ki, bu həqiqətən hack nə.
Amma ki, boru kəməridir Siz ki, bunu necə.
Nin LilyPond haqqında daha ətraflı danışaq.
>> CONNOR HARRIS: OK Baxaq.
Siz Haskell əldə edin qeyd mi?
STEPHEN KREWSON: Bəli Oh.
Kontrol You Haskell əldə edin.
Bu resursları var.
Mən açılmış necə ki öyrənmək və bu, böyük deyil.
Lal Not təlim.
>> CONNOR HARRIS: Belə ki, online.
Belə ki, adlı bir oğlan [işitilemez] learnyouahaskell.com, heç bir boşluq.
Grammar xəstədir.
STEPHEN KREWSON: Bu da illüstrasiyalı var.
CONNOR HARRIS: LilyPond Belə ki, nə var?
Bu deklarativ proqramlaşdırma var musiqi yazıdizim üçün dil.
Belə ki, siz declarative-- HTML kimi şeylər hesab edirəm ki,
Siz olduğunuz saying-- HTML necə web browser lazımdır demək deyil
göstərmək pages addım-addım.
Bu, sadəcə bu söyləyərək bir mətn təsviri
Istədiyiniz nə səhifə kimi baxmaq.
>> Və sonra da bir proqram ki, bu dil tərtib,
və ya, həqiqətən, sonra onun oxumaq və Sizin üçün yazıdizim yoxdur,
və bu spits gözəl axtarır PDF puanları.
Siz həmçinin PNG formatında və ya hər hansı əldə edə bilərsiniz.
Yaxşı yol hesab edirəm ki, Bu analogiya üzrə deyil
, lateks növ LillyPond kimi ki, ancaq adi yazıdizim üçün.
Belə ki, əvəzinə bu deyil of-- Siz baxın nə WYSIWYG,
Siz demək kimi alın nədir Finale, və ya Sibelius,
və ya Microsoft Word, siz yazın edə bilərsiniz real vaxt real vaxt və layihə şeyi
və dərhal dəyişikliklər oldu.
>> Bu mətn əsaslanır.
Siz tərtib etmək ayrı-ayrı proqram istifadə puanları
və sonra PDF çıxmaq.
Bu bir az azdır Siz əgər istifadə üçün rahat
birbaşa yazmaq üçün çalışırıq Siz etdiyiniz və hesab daxil
kompüter yaratmaq üçün çalışırıq.
Amma bir çox var bunun üçün üstünlükləri.
One, bu, çox gözəl görünür LillyPond həqiqətən çünki
etmək üçün vaxt Düzgün layout qərarlar,
var Sibelius və ya Finale fərqli olaraq belə güzəşt alqoritmlər etmək
Onlar bilərsiniz ki, real vaxt şeylər.
>> Belə ki, niyə LilyPond-- deyil kompüter qrafikası çətindir.
Siz musiqi ilə bir şey edirik, əgər və puanları yazmaq istəyirəm,
yazmaq istəmirəm özünüz hər şeyi
çəkmək üçün necə başlayaraq kurmayları və notepads cəlb etmək.
Bu, çox çətindir. Bu əvvəl görülən edilmişdir.
Siz gözəl istəyirik.
>> Siz Finale ya Sibelius istifadə etmək istəyirsinizsə, o şey üçün fayl formatları
çox mürəkkəb və siz bilməzsiniz həqiqətən program istifadə edin.
Siz Finale ilə Sibelius aça bilər və Fayl gedin Export PDF olaraq özünüz,
ancaq həqiqətən bilməz bir script zəng.
LillyPond, siz zəng edə bilərsiniz o scripts.
Siz asanlıqla təkrarlamaq bilər Lateks ilə LillyPond.
Mən getmək üçün çox vaxt yoxdur İndi bu texnologiyaları,
lakin onlar mövcuddur.
Siz baxmaq istəyirsinizsə bir LillyPond kitab daxil,
Bu ilə gəlir proqramı Sizin LillyPond distribution,
və iterating üçün deyil Lateks daxil LillyPond fraqmentləri
Əgər bir şey istəyirsinizsə, böyük Musiqişünaslıq sənəd kimi
Məsələn nümunələri ilə.
Və bu üçün yaxşı bir bacarıq var bir şey edirik, əgər həyat
musiqi, yalnız CS50 ilə.
Mən bütün LillyPond istifadə etdiyiniz Mənim tərkibi layihələrin
Mən əsasən bəri bir orta məktəbdə baş.
>> Belə ki, burada bir neçə sadə nümunələridir.
Bu əsasən nümayəndəsi Çətinlik səviyyəsi
ki, insanların çoxu olardı çalışdıqlarını bu üzləşirlər
Sadə layihələr üçün LilyPond istifadə etmək.
Bu ilk bir başlanğıcdır Bax bir koral müqəddimə üçün.
Bu alt bir bir pasaj edir öz işlərinin biri,
və göstərmək üçün yalnız var [Işitilemez] kimi şeylər
eyni çox xətləri qoyulması heyəti, necə lirik undersetting işləyir.
Lyric underlays çox bir şey var xor musiqi LilyPond istifadə üçün asandır.
>> Və sonra bir daha çox var Burada mürəkkəb nümunələri.
Bütün bu edilir LilyPond və onlar mümkün istəyirik.
Bu ilk pasaj edir [Işitilemez] [işitilemez] tərəfindən.
Bu [işitilemez] olan solo bas üçün bir parça
[Işitilemez] tərəfindən fleyta, olan bir longtime-- olan
bir uzun süreli üzv oldu Burada musiqi şöbəsinin düşünürəm.
Mən o off getdi harada əmin deyiləm.
Lakin o, Harvard məsləhətçisi idi Uzun müddət Bəstəkarlar İttifaqı.
Wonderful man.
Və o, çox var bəzi musiqi yazır mürəkkəb notation ki LillyPond
yenə çox gözəl idarə edə bilərsiniz.
>> Belə ki, yalnız siz hissi vermək nə Bu şey imkanları belə are--
LillyPond of daxili çox mürəkkəbdir.
Və üçün istifadə edə bilərsiniz uzun müddət, o cümlədən
bəzi olduqca mürəkkəb üçün şeylər olmadan həqiqətən
onlar haqqında bir çox bilmək üçün olan.
Amma əsas fikir üzərində ki, aşağı səviyyədə LillyPonds of atomları
qeydlər.
qeydlər ehtiva kontekstində adlı səsləri.
Səs kontekstində belə əsasən uyğundur
polifoniya bir xətt.
Və sonra kontekstində ola bilər hiyerarşik olan
yüksək səviyyədə olanları ki, hesab kurmayları təmsil
kimi və ya böyük qruplar piano kurmayları və ya xor kurmayları,
və sonra nəhayət bütün hesab kontekstlərdə.
Və həqiqətən əhatə edə bilər bir kitab çox puanları.
>> Və hər kontekstində bir əlavə oyma sayı.
Vasitəsilə baxsaq kontekstində məzmunu
və müəyyən bir simvolu və ya çap zəruri rəmzləri müəyyən sinif.
Hər səs kontekstində Belə ki, [Işitilemez] qeydlər var
əsasən bir funksiyası var qravüraçı və ya bütün qeydi yazır bir obyekt
Bir səhifə sağ hissələri rəhbərləri.
Sonra bir yarıq qravüraçı var ki, heyəti çatlar yazır.
Sonra metronome var mark qravüraçı ki
hesabı ilə metronome işarələri yazır.
Və bütün bu olduqca uyğun yaxşı iyerarxiya daxil.
Və bu çox, çox, çox var özelleştirilebilir, siz ehtiyac
bu kimi şeylər almaq istəyirsinizsə.
>> Belə ki, bütün kontekstlərdə bir var müxtəlif atributları çox
hər şey üçün dəyişə bilərsiniz ki, müxtəlif font spacing olan
şeyi ölçüləri seçimi.
Hətta etmək istəyirsinizsə daha mürəkkəb şeyi,
əlaqədar scripting dili var.
Onlar sxemi, istifadə edən lisp dialekti vardır.
Bu yəqin ki, yoxdur sizə bir şey demək.
Amma əsasən, bir sxem başqa funksional
proqramlaşdırma dili az və ya çox.
>> STEPHEN KREWSON: tie-in.
>> CONNOR HARRIS: Bəli.
Bu yaxşı tie-in, mən güman edirlər.
Və bir tədris dili kimi istifadə olunur, həqiqətən, Mass Ave aşağı MİT-in.
Və LillyPond üçün çox lazımlı müxtəlif texniki səbəblərdən.
>> Və belə ki, sadə etmək istəyirsinizsə conditionals asılı tweaks,
misal üçün müəyyən var görüşüb bir hesab vəziyyəti,
dəyişiklik etmək layout və ya sonra whatnot--
bu obyektlər var.
Onlar mürəkkəb istəyirik.
Belə ki, burada olduqca sadə kodu nümunə var.
Bu beş xətləri var.
Ümumiyyətlə, mən iki kadrların müəyyən edirəm.
Bu 3/4 var.
ilk heyət bir var tempi mark əlavə,
lakin həqiqətən gedir bütün hesab getmək üçün,
tempi nişanları çünki hesab səviyyədədir.
metronome mark qravüraçı kontekstində hesab əlavə edilir.
Müxtəlif düymələri var, [Işitilemez] qravüraçı, çünki
kadrların əlavə olunur.
Siz, həqiqətən, bu edə bilərsiniz.
yazdım nümunəsidir həqiqətən C major,
lakin bu, yalnız var Siz ola bilər nümayiş
müxtəlif kurmayları müxtəlif düymələri.
Və əsas sintaksis yazmaq deyil E, F, G, nə ilə adları qeyd.
Siz accidentals etmək istəyirsinizsə, siz və ya ES şəkilçi.
Bu Holland deyil musicological konvensiyalar.
>> Və oktava leaps etmək üçün, siz istifadə etmək lazımdır bu nişanları, vergül və ya apostrof işarələyin.
nisbi yalnız deməkdir Bir qeyd var nə olursa olsun,
Bu avtomatik olaraq plaec olunacaq əvvəlki ən yaxın oktava.
Və daha çox jump istəyirsinizsə bir beşinci və ya more-- demək fifth--
sonra [Işitilemez] istifadə etmək lazımdır.
Lakin başqa, siz yoxdur hər bir qeyd oktava daxil.
>> Və nisbi C, baş, və C, yalnız orta C daxil
və baza C, xüsusilə ilk qeydlər.
Sonra təşkil bu kadrların var Bu iki səsləri və ya musiqi nümunələri,
və bir hesab var.
Və bu kimi görünür.
>> Zaman almaq istəyirsinizsə LillyPond ki, nümunə surəti
Əvvəlki kod Burada aşağı uçmaq, və siz
LillyPond özünüz üçün yaza bilərsiniz.
Düşünürəm ki, biz bir şey var bilirəm bu kimi bir çox görünür.
Belə ki, bir texnologiya var adlı Music XML saxlanılır
tamamilə müxtəlif insanlar tərəfindən.
XML mətn data quruluşu mən data demək strukturu demək deyil
məcaz xəritəsi sort.
Və keçirilməsi üçün nəzərdə tutulmuşdur iyerarxik data çox yaxşı.
HTML, məsələn, XML bir növüdür.
Və XML çünki demək olar ki, onlar idi bütün bucaq mötərizədə və bucaq
bracket çizgi nişanları ki, şou data alanlar.
>> Mən bir kod yoxdur Musiqi XML-dən nümunəsidir.
Siz özünüz tapa bilərsiniz.
Əsasən, səbəbi istədiyiniz bilər aralıq mərhələ kimi XML istifadə etmək
ilk növbədə, bu, var mübadilə format
əsasən demək olmaz every-- fərqli hesabla hər, lakin bir çox
yazıçı.
Siz Musiqi yazmaq Belə ki XML yalnız LillyPond bilər
bu Auxilary köməyi ilə oxumaq proqramı LY Musiqi XML adlı
həm də Finale oxuya bilərsiniz Bu, Sibelius oxuya bilərsiniz.
Necə daxili obyekt asılı olaraq iyerarxiya, musiqi ifadə üçün çalışır
yazmaq üçün asan ola bilər LillyPond çox Music XML
və yalnız Music XML etibar LY dönüşüm etmək.
>> I [işitilemez] Musiqi XML var düşünmürəm.
STEPHEN KREWSON: Bu deyil.
Biri də, üzərində işləyir.
>> CONNOR HARRIS: OK.
Euterpea bir yoxdur Hələ Music XML çıxış funksiyası.
Bir final layihə fikir istəyirsinizsə, bəlkə uşaqlar ilə əlaqə almaq
Stephen bilir ki, onlar yardım istifadə edə bilər.
>> STEPHEN KREWSON: Mən istərdim.
CONNOR HARRIS: Həmçinin, əsasən, hər proqramlaşdırma dilləri
ki, onun duz dəyər artıq XML kitabxana var,
belə ki, məcburi bütün çevirə bilərsiniz bir obyekt sizin musiqi
XML kitabxana yaza bilərsiniz ki, ki, az tələb həyata
daxili strukturuna dəyişiklik nə üçün musiqi sizə obyektləri
yazılı daha yazmaq istəyirəm birbaşa LillyPond olduğu.
Sonra XML ilə çap Sizin dilində XML kitabxana,
bu ki, təmin edəcək syntactically düzgün və hər şey,
və sonra LillyPond onu çevirmək.
Belə ki, texnologiya istədiyiniz bilər Əgər bir şey edirik, əgər baxmaq
bunun kimi.
>> [Işitilemez], başqa auxilarry texnologiyası.
Bu Tech Works əsasən və ya LillyPond üçün Tech Studio.
Belə ki, yardım təklif edir şablonları ilə sintaksis,
müxtəlif ümumi üçün alətlərinin birləşməsi.
Bu, belə görüntü split ekran imkan verir bir pəncərə kodu ola bilər
və başqa pəncərə PDF və PDF yerlərdə basın
müvafiq atlamak üçün mənbə kodu ləkələr.
Siz, həqiqətən, əgər bu daha faydalıdır yazı LillyPond özünüzü faylları
Siz yaradan edirsinizsə çox Onlara program.
Ancaq yenə də, bu faydalı bir şey var.
>> Great.
Başqa resources-- Mən yalnız lazımdır çox tez keçir.
LillyPond manuals-- LillyPond var öz saytında əla sənədlər.
Onlar tutorial var.
Onlar syntax istinad var.
Onlar parçalarını yüzlərlə var müxtəlif kiçik şeylər üçün
yo nümayiş üçün nə lazımdır bilər müxtəlif imkanları.
Siz istifadə etmək istəyirsinizsə scripting dili
və ya daha çox geniş etmək customizes, sonra var
daxili ki, URL istinad.
Siz Music XML istifadə etmək istəyirsinizsə, var ki, URL, musicxml.com/tutorial.
>> Və sonra sxem öyrənmək lazımdır, əgər Siz, həqiqətən, istifadə etmək istəyirəm, çünki
LillyPond scripting obyektləri, sonra [işitilemez] adlı var
Strukturlaşdırılmış Şərh Kompüter Proqramları,
olan yalnız ikinci edir Heç yazdırmışdır böyük CS dərslik
Siz bilmək istəyirsinizsə sonra mənim Mən böyük bir is-- nə düşündüklərini
lakin bu da çox yaxşı müvafiq dil giriş.
Siz daha çox ehtiyac yoxdur ilk bir neçə bölmələr.
>> Və bu.
Hər hansı sual?
>> TƏLƏBƏ: Mən yükləyə bilərsiniz yaradılan Frere Jacques
mən iPod onu qoya bilər?
>> STEPHEN KREWSON: Yaxşı, siz yaza bilərsiniz Euterpea bəzi wav fayl həyata.
Və siz kodu var.
Bu GitHub var.
Öz varyasyonları etmək CS50 hive mind tərəfindən Frere Jacques.
Bu, böyük olardı.
CONNOR HARRIS: Hər kəsdən?
STEPHEN KREWSON: Biz lazımdır çox yaxşı bas nağara.
Bu, həqiqətən pis.
>> TƏLƏBƏ: Euterpea yalnız var tərkibi yan, lakin signal--
STEPHEN KREWSON: Bəli.
Əslində, mənim mən Euterpea etdi
şeylərdir bir var etmişdir Yale kurs məzun ki,
pseudocode səs sintez idi istifadə edir.
Belə ki, bir həqiqətən var okları istifadə edərək gözəl yoludur
və biz gördük notation bəzi siqnal funksiyaları birlikdə tərtib.
Ən xüsusilə, bas Onlardan yalnız bir sadə sine dalğa edir.
Amma bu bəstələmək başlamaq əgər qəribə proqram yollarla,
Siz crazy səs əldə edə bilərsiniz qəribə cascades kimi təsiri.
Siz çox gritty yarada modulyasiya bir çox səslənir.
>> Mən dənəvər layihəsi etdi edir sintez,
haradasa FM və nümunə arasında.
Siz çox kiçik almaq az nümunələri, və sonra
bir növ ilə onları birləşdirmək modulator və zəngin səs qurmaq.
Biz də belə, fiziki modelləşdirmə etdi fizika haqqında düşünməyə çalışır
və kimi bir şey psychoacoustics bir truba və yol haqqında düşünür
səs off dönen truba zəng
və akustika otaq və modelləşdirmə
Əsas osilatörler ilə.
CONNOR HARRIS: Thanks qədər.
Gələn üçün təşəkkür edirik.
Mən həmişə istəyən edirəm email-- suallar almaq
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Bəli. stephen.krewson@yale.edu.
Cool.