CONNOR HARRIS: Ahoj.
Jsem Connor Harris.
Jsem CS50 CA na Harvardu.
STEPHEN KREWSON: Já jsem Stephen Krewson.
Jsem TF pro CS50 na Yale.
CONNOR HARRIS: A budeme mluvit o některých technologií, které byste mohli
chcete použít, pokud máte zájem v tom závěrečný projekt nebo opravdu
cokoliv s hudbou.
Budeme se zaměřením na Nejdřív programovací jazyk nazvaný Haskell.
Je to funkční jazyk, takže paradigma
je velmi odlišný od C nebo PHP nebo z jiných naléhavých jazyky
že jste použili už, a to zejména na knihovny napsané v jazyce Haskell
volal Euterpea, které mohou pomoci lidem s psaním hudby funkčně,
v podstatě.
A Stephen budou chodit vás přes skvělý příklad toho, že.
>> Po tomto, budu vám představit něco, co nazývá LillyPond, který
je technologie pro sazbu hudbu.
Je to něco jako LaTeXu pro hudbu, pokud někdo z vás
Použili LaTeX pro matematické třídy, nebo ostatní P set třídy nebo to, co tě mít.
A tak jsem tě dát, znovu, několik jednoduchých příkladů, které
a bod, který v obecné Směr některých lepších zdrojů.
>> STEPHEN KREWSON: V Kromě toho, že jsme si mysleli
by být v pohodě nastavit trochu rad
směrem k potrubí mezi Euterpea generované MIDI soubory
v LillyPond, takže zajišťujeme nějaký návod na skriptech
k tomu, že jsou opatřen LillyPond
Jen aby to open source a získat potrubí děje.
CONNOR HARRIS: Opět, měli bychom zdůraznit,
tyto dvě technologie, vy Nemusíte je používat dohromady.
Oni nejsou určeny pro práci spolu, ačkoli oni přece velmi pěkně.
>> STEPHEN KREWSON: Správně.
A zcela zdarma.
CONNOR HARRIS: So poděkování, jen číst, že.
STEPHEN KREWSON: Řádně poznamenal.
Díky těmto lidi.
To budu prodlévat na jen na chvíli.
Proces instalace je trochu složitější.
Máme mě přečíst na GitHub že můžete se podívat na.
Jen mi e-mail, pokud máte nějaké otázky.
Ale my spustit to za předpokladu, že to funguje pro všechny.
CONNOR HARRIS: A pokud si nemůžete dostat se LillyPond do práce, žádný velký problém.
Neexistuje žádná živá kompilace, že se bude podílet, alespoň z mé strany.
STEPHEN KREWSON: Haskell a LillyPond by oba mají instalátory.
Euterpea se stáhne jako balíček, tak dále a tak dále.
Takže mluvíme o počítačové hudby.
A to je jen Velmi pohled 50.000 stop.
K dispozici je několik různých aspektů toho.
A to je hrubý a je jít zatemnit nějaký detail.
Ale mohli bychom něco vymyslet jako algoritmické složení,
pomocí algoritmů, pomocí kódu, pro generování
nějaký typ of-- možná self-podobný sled tónů, nebo možná poznámky
pod nějakým omezením.
A pak ty, které by mohly být provedený nebo interpretovány
s analogových přístrojů nebo něco takového.
Avšak směs provádí algoritmicky.
>> Ale samozřejmě, možná oblast Počítač hudbu nebo digitální hudby
jsme blíže seznámit s je digitální zvukové syntézy nebo digitální vzorkování
a digitální záznam.
Mnoho digitálních přístrojů jsou provádí prostřednictvím digitálního vzorkování.
Ve skutečnosti, budeme pomocí jednoho z těch v forma zvukového knihovny písma později.
>> Ale je tu také něco volal digitální syntéza, že vyšel
z konce 70. let, a do 80. let se Yamaha a John Chowning na Stanfordu
dělá syntézu FM nebo Frequency Modulation syntéza,
kde jste měli dopravce signálu a modulační signál
a to jak v zvukového spektra.
Ale to, co se zaměřujeme na dnes je něco, co nazývá MIDI,
a samozřejmě, algoritmické složení.
>> Nebudeme dělat nástroje, ale budeme místo toho chystá udělat nějakou hudbu,
a pak to dostane interpretován některými nástroji, které
jsou konformní k Standardní General MIDI.
Takže to, co je MIDI?
Nebudu se dostat příliš hluboko do ní, ale MIDI je přenos dat protokol.
Je to jakýsi průvodce napříč různé firmy a odvětví
pro pořádání zvuků nebo opravy.
Tak uvidíme, že tam je standardní MIDI
pro všechny různé bicí zvuky a doporučení MIDI
pro všechny různé typy synth, nebo různé typy všech nástroje
skupiny v orchestru, říkají.
>> Vy jste pravděpodobně obeznámeni s 0 až 127 MIDI zprávy.
MIDI signál je typicky jeden bit s uvedením
ať už je to dat nebo stav paket, a pak je tu
sedm bitů signálu.
A ty mohou kontrolovat vše z objemu
na akci nebo tlaku na konkrétní klíč
pokud si vedete s MIDI regulátoru, jakož i, samozřejmě,
poznámky.
A samozřejmě, MIDI má Byl velmi užitečné,
protože je to způsob, jak drát společně nebo sedmikráska řetěz
banda hardwarových zařízení MIDI.
Mám sedm nebo osm zpátky v mém domě.
To dostane opravdu složité, ale je to opravdu silný.
A je to opravdu starý.
To je od počátku 80. let, a je to opravdu pěkné a malý.
CONNOR HARRIS: Jo.
Všechny klasické Nintendo video hry by pravděpodobně
mají MIDI soubory pro hudbu, například.
>> STEPHEN KREWSON: Tady je Příkladem General MIDI,
ukazující midi jako druh obecného protokolu.
A myslím, že můžeme myslet na Rozdíl mezi specifikaci
že by měl být něco jako Tyto zvuky nástrojů a skutečnou
realizace těchto nástrojů zvuků ve zdravém písmem nebo na konkrétní MIDI
syntetizátor jako rozdíl Mezi možná i typeface-- který říká,
Obecně, toto je návrh tento konkrétní způsob, jak reprezentovat
characters-- a konkrétní písmo že má specifickou velikost a zabarvení,
a tam je realizace the--
>> CONNOR HARRIS: Možná lepší srovnání by
být standard Unicode says-- dává číslo na každý znak, a opravdu
každý jazyk na světě, nebo obrovská sada skriptů jazyka
ve světě, a pak to jsou poskytnutý do něčeho grafický
různými balíčky písem.
A samozřejmě, můžete si myslíte, MIDI jako Unicode zvuku.
A je to jen seznam of-- velký proud akcí a nástrojů a kdoví co ještě,
a musíte mít samostatný Program, jako písmo,
k tomu, že do něco, co je slyšet.
>> STEPHEN KREWSON: Tak proč Haskell?
Haskell je funkcionální programování jazyka, velmi pokročilý,
velmi odlišný od C, velmi odlišný od PHP.
A budeme vidět, že je tu snadnost skládání funkcí v Haskell
že nám umožní vánek prostřednictvím skládání nebo psaní nahoru, přepis,
něco jako Frere Jacques, tento jednoduchý píseň, která
má mnoho dílů v tom, že jsou self-podobný nebo opakování.
Takže to bude některá motivace, proč
jsme pomocí Haskell, v němž Funkce jsou občané první třídy.
>> A já jsem chtěl prodloužit to trochu.
Je to trochu snadné notate Frere Jacques v Haskell.
Ale co když jsme chtěli přidat část bubnu na to?
Co kdybychom chtěli snažit, aby něco jako Roland 808 nebo 909 bubnu
Stroj kde musíte asi 16 různé kroky?
Obvykle se jedná o myšlenka jako 16. poznámky.
A můžete ovládat globální tempo, a můžete si vybrat
spoustu různých bicích částí z basový buben, tleskat, různé Snares,
otevřené a uzavřené vysokými klobouky na tyto druh kanálů,
a pak můžete EQ, nebo přizpůsobit jejich objemu.
>> A uvidíme pěkný cestu Haskell reprezentovat tento krok
sekvencer se všemi různé chladné věci v Haskell
můžeme dělat s generováním seznamy a filtrování přes seznamů,
mapování nad seznamy, mapování funkce, které seznamy.
A rychlá omluva.
Jedná se o velmi povrchní a příliš rychlá skica
některých aspektů Haskell a Euterpea,
což je doména specifická vložený jazyk psaný
v Haskell pro hudební typy.
Takže, prosím, podívejte se na kód on-line.
Oheň ghci, což je Glasgow Haskell Compiler Interpreter.
A já budu dělat některé tohoto v trochu
takže můžete vidět, jak se to dělá.
>> A to vám umožní nahrát se the-- syntaxe je dvojtečka a pak
příkaz.
Můžete vložit do souboru.
Můžete použít Procházet na ty soubory vidět všechny funkce, které
existují v určitém modulu.
A pak jak uvidíme, typy a typ třídy jsou tak důležité v Haskell,
takže můžete vždy check-- zvláště pokud pracujete v novém DSCL
jako je tento, jaký je druh hudební?
Vím, že o tom, jak numerické typy pracují v Haskell,
ale já nevím, moc o hudbě.
Ale můžete prozkoumat toho, jak jsou definován pomocí tohoto T nebo typ příkazu
a pak volání v konkrétní Funkce nebo datový objekt.
CONNOR HARRIS: Jo.
Pokud jste si mysleli, C a Clang Byl hardass o typy,
nemáte žádnou představu o Haskell.
Dobrou věc, o Haskell je, že pokud můžete získat váš kód kompilovat
a pokud kontroly typu Haskell, je to asi v pořádku,
protože typ systém je tak přísný.
>> STEPHEN KREWSON: Jo.
Tak jsem jen chci jít through-- a znovu,
to není, jak to udělat justice-- pár rysy Haskell, že přinejmenším
k jeho creators-- a byl vytvořen v pozdní 1980 bandou lidí,
výbor asi 20 people-- považoval za důležité.
A první věc, kterou uvedeny v papíru, který
popsal genezi Haskell během prvních 20 let nebo tak
bylo, že líný.
Takže co to znamená?
>> No, to znamená, když máme nějaký druh projevu, musíme hodnotit.
A Haskell dělá toto v hovoru potřebou cestě nebo non-přísné způsobem.
To znamená, že pokud budeme mít spoustu součásti našeho projevu,
snažíme odložit hodnocení z těch dílčích komponent
až do absolutní posledního minute-- to je, dokud jsme skutečně potřebují je.
>> Tak tohle means-- která je opravdu cool, a to zejména
pokud budeme přemýšlet o abstrakce hudebního kroku sekvenceru.
Můžete ji zapnout, a začnete běh krok sequence--
Pokud jste někdy pracovali s bubnem machine-- a to jen jde věčně.
Tak to by bylo opravdu hezké, kdybychom mohl napodobit, že v Haskell.
A můžeme to udělat s nekonečným hodnoty, zejména nekonečnými seznamy.
Je to velmi jednoduché k zadání nekonečný seznam v Haskell.
Dalo by se stačí použít syntaxi dolů tady, kde je vidět 1 až 3,
odstranit 3 1 dot dot, a že je nekonečný seznam
ze všech přirozených čísel prodloužení Na co si dokážete představit.
>> Chci se představit Koncept záhybů hned.
A opět, účel na tento seminář není
dozvědět se o záhyby v Haskell nebo vyšších řádů funkce.
Ale chci představit ji poskytnout přesný pocit, jak divný
Haskell je a jak silný to je.
A zejména, budeme be-- když budeme dělat naše různé bicí party,
budeme se manipuluje seznamy Čísla, skládání na sebe.
A k tomu, že budeme se používají mapy a záhyby.
>> Je tu právo asociativní složit, což je tenhle pravdu
here-- 1 se sníží o množství, 2 se sníží o množství, 3 mínus 0.
A Syntaxe pro fold, dáte fold
základní hodnota a pak operation-- v tomto případě, sčítání nebo odčítání.
Já jsem je znázorněno oba případy.
A pak je tu akumulátor, které hromadí po celé seznamu
použití tohoto operátora Plus nebo minus, a pak ji hromadí.
Takže to bude the--, když se mu říkalo s rozkládacím R plus 0, počínaje 0,
pak bychom sečíst všechny Čísla v tomto seznamu.
A to je seznam od 1 do 3.
CONNOR HARRIS: Tak, aby to dát další cesta, fold r trvá tři argumenty.
K dispozici je funkce, která sám přijímá dva argumenty,
pak je tu hodnotu startér, a tam je seznam hodnot.
A to, co děláte, je si vzít startér hodnoty, první hodnota,
dát je do funkce.
Co dostanete ven, vezmu, krmivo, které
do funkce z druhá hodnota, co dostanete ven,
vzít, nakrmit, že do Funkce třetího hodnoty.
A pak, když jdete dolů celý tento seznam tímto způsobem,
budete mít nakonec někteří singulární to je
stejného typu, co začali se s a stejného typu
jako věci v seznamu a potom že je to návrat výsledek fold R.
STEPHEN KREWSON: Tak především, to jsou funkce vyššího řádu,
protože bereš další Funkce jako jednu z úvah.
>> CONNOR HARRIS: Jo.
Pokud jste použili některé další languages-- Vím, že R, [neslyšitelných]
jazyk má to, tzv snížit.
Ty by mohly mít podobné funkce v jiných jazycích, jen volal
různé věci.
>> STEPHEN KREWSON: A co je hezké o fold R
v tomto případě je, že záhyb R může pracovat s nekonečnými seznamy.
Takže v tomto dnu, tento P5 vytváří poznámky
jsou zapnuté v kroku sekvenceru pro některá část bubnu, pátá část bubnu,
a možná je to conga buben, nebo tak něco.
A to je záměrně tupé způsob psaní tohoto,
ale je to zábava, protože demonstruje hodně
z věcí, o Haskell a Euterpea.
>> Takže složit R této colon-- tlustého střeva je jen operátor, který tlačí věci
spolu na list-- vyzvala prázdný seznam, což je jen prázdné závorky.
A volám, že na tomto nekonečný seznam.
To je vlastně dva seznamy sčítají tady dole.
Seznam 1 čárka 6 tečka dot je 1, 6, 11, 16.
Takže Haskell-- v právě několik znaků, vy
můžete vygenerovat celokrajné posloupnost čísel
které jsou od sebe pět čísel rozkládající se na do nekonečna.
A já jsem se, že předřadit tento malý kratší list--
3, 8, 21-- jen proto, aby vám ukázat, jak můžete zřetězit seznamy.
>> A pak jsem složil na sebe.
A to skončí být jen jakousi Provoz identity, ale je to nekonečné.
A fold R může udělat, protože to líně hodnotí, jak je ve výše uvedeném.
Pokud máme 1 a 2 a 3, můžeme jen závorka mimo celý zbytek.
To nebude fungovat minus nebo plus, ale
bude pracovat pro tento tlustého střeva Provoz identity na seznamu.
>> Tak jak jsme se prakticky použít, že pokud budeme mají nekonečně dlouhý seznam věcí?
No, Haskell poskytuje hodně functions--
a dívat se více do nich v vlastní time-- jako je vzít
který říká, OK, my jsme generování tohoto nekonečný seznam,
ale my jsme jen tak, aby se některé počet IT a v tomto case--
uvidíme později v naše bicí automat code--
GM je jen nějaký druh globálního proměnná pro počtu kroků
v sekvenceru.
Na strojích Roll-in I vám ukázal, že je to typicky 16,
ale jsem implementoval ji s 32.
Je to opravdu nezáleží.
>> Haskell je také čistý, takže to má silný statické psaní, že Connor zmiňoval.
Takže funkce matematické v sense--
oni jsou více matematický že jsou zaručena
se nelze přistupovat nebo změnit jakékoliv proměnná nebo provést vstup nebo výstup.
Takže pokud máte funkci, to je deterministický.
To bude vždy vrátit stejný hodnota ve stavu programu
nebo zůstávají stejné.
Existují, samozřejmě, Monadické výjimky k tomu, ale to je mimo naši působnost.
>> CONNOR HARRIS: Jo.
Co to znamená, když je tam jsou málo důležité [neslyšitelných]
Důsledky této.
Jedním z nich je, že je to velmi snadné paralelizovat programů Haskell.
Vzhledem k tomu, máte-li, říkají, funkci, která
musí fungovat na milion hodnotách, pokud víte, že funkce bude vždy
rozdávat stejnou hodnotu, pokud krmíte v určitém value--
pokud jste [neslyšitelné] f 1, f 2, pak f 3 nebo whatnot-- f 1
se nebude psát ven do souboru nebo dělat něco
, který bude měnit hodnotu f2.
Stačí si jen rozdělit tuto funkci do A milionů různých strojů nebo milion
různé závity nebo cokoliv, získat všechny odpovědi zpět,
získat všechny návratové hodnoty dozadu, a pak je to.
Takže velmi snadno paralelizovat věci.
>> Nevýhodou je, že vstup a výstup zvláště
zapadají do systému typu ve velmi složitých způsoby.
Nebudeme zacházet do tohoto práva, ale já Doporučujeme vám podívat se na některé zdroje
on-line, pokud se chcete dozvědět o tom.
>> STEPHEN KREWSON: So zadejte classes-- a to
was-- třídy typů byly vynalezeny řešit
problém operátora přetížení.
Takže jsme chtěli mít rovnost mezi různými typy věcí.
Samozřejmě, že si myslíme, že of-- rovnost mezi typy číselných
je velmi snadné si myslet o tom, ale co o rovnosti mezi seznamy?
Co rovnosti stromové datové struktury noha?
A to vše je možné v Haskell protože tříd typu.
>> Takže pokud definujete určité údaje type-- a tady, to jsou hudební hřiště.
Jsme konečně dostává nějaké počítačové hudby.
Takže máme C, C ostrý, a tak dále a tak dále.
Patří k banda Různé typové třídy.
EQ-- oni patří k typu EQ třídy.
To znamená, že podporují Operace rovnosti.
Takže si můžete vyhodnotit, zda jeden sled hudebních primitiv
je stejné jako jiné.
>> Patří do řadové třídy.
To znamená, že tam je uspořádání na ně.
D přichází poté, co C. C ostrý přichází poté, C i.
Patří do třídy ukazují, což znamená, že mohou
být vytištěna na konzole nebo terminálu.
Oni patří k třída vyjmenoval, který
Znamená to, že i když to jsou znaky,
mají podkladové číselný zastoupení začínajícího na 0
a jít pryč přes nicméně mnoho věcí se zde, 20 nebo tak,
nebo 30 nebo 40, možná.
>> CONNOR HARRIS: A kdy máme datový typ
že derives-- se dané klíčové slovo "deriving--" určitý druh třídy,
to znamená, že kompilátor bude snažit postavit něco, co automaticky.
Takže možná budete chtít definovat kvalitu jinak.
Budete chtít definovat C ostrý jako rovná D byt, například.
U této konstrukce tady, nemyslím si, že C ostrý
a D ploché bude stejná, protože kompilátor automaticky
říkají, každý jinou možnou hodnotu se liší od každé jiné.
>> Je tedy možné, aby přepsat Výchozí implementace
z těchto typů tříd.
Opět platí, podívejte se na odkaz, pokud Chcete se dozvědět o tom.
STEPHEN KREWSON: A Zde, ve skutečnosti, to bude
být užitečné, když jsme se kód později.
Vidíme některé z operátorů infix pro sekvenční složení,
paralelní složení, a proto dále, tyto plusy a rovné znaky
obklopen dvojtečkami.
To znamená, že můžeme hrát tyto různé hudební primitiva jeden po druhém.
To je sekvenční složení.
>> Nebo můžeme hrát je v paralelně ve stejné době.
Takže můžu mít hudební hodnotu, a pak se to rovná a dvojtečky,
infix paralelní operátor složení, a přehrát je jako druh akordu.
A budeme používat to, když jsme se spojit
Naše část bubnu s našimi málo Frere Jacques song
hrát tyto dvě sekvence hudební hodnoty ve stejnou dobu.
>> Mazání, je-- Curry byl naposledy jméno Haskell Curry, který
obraz Haskell je pojmenoval.
A to nám umožní si pěkné elegance když jsme
psát všechny tyto různé funkcí nebo filtry, které jsme
Bude mapování přes naše stránky.
Funkce dvou arguments-- f x a y-
může být reprezentován jako f x aplikován na y.
Takže je to funkce jeden argument, že se vrátí
Další funkcí jedním argumentem.
Takže to znamená, že můžeme mapovat funkce f x nad seznamem y je.
CONNOR HARRIS: Chci dát příklad to?
STEPHEN KREWSON: Jo.
Mám příklad tady od některé z věcí, budeme psát.
Takže replikovat 2-- dobře, replikovat bude trvat
jedna hodnota, která je, kolik časy replikovat něco,
a pak to bude trvat value-- obvykle seznam nebo tak něco.
Tak tady, my jsme mapování replikovat 2 přes jiného seznamu.
>> Takže pokud budeme map replikovat 2, pokud bychom replikovat 2 platí
na první prvek tohoto list-- a to jsou seznamy hudebního phrases--
bude vyrábět dva "vy sleeping--" takže spíte, spíte.
Takže teď máme dvě.
Ale replikát trvá dva argumenty, ale proto, že jsme
mazání, a pak mapování, můžeme reprezentovat replikovat 2
jako by byla vrácena jako funkce jedním argument-- jen replikaci dvakrát.
A pak jsme se ucházíte, že pro každý prvkem tohoto seznamu frází.
>> A concat je Haskell Operace pro sloučení seznamu.
Vzhledem k tomu, replikát 2, bude vytvoří seznam seznamů.
A to je tady to přechodná forma.
A tak pak můžeme concat nebo vyrovnat, že dvakrát.
CONNOR HARRIS: Jednodušší mazání, na příklad,
pokud byste jako-- představit, f je jen Funkce násobení, která bere dva
argumenty a vrátí jejich produktu.
Takže pokud máte F 4 5, to je 20.
Ale můžete myslet na to, jak also-- máte funkci f 4
který bere argument a vrací čtyřnásobek této argument-- jen
částečná aplikace, která jen jeden argument 4.
A jestli krmíte f 4 5, který vám dá 20.
A to je jednodušší Příkladem mazání, na.
Je to obvykle jedna z učebnice ty.
>> STEPHEN KREWSON: Lambda výrazy nebo anonymní funkce
jsou další Haskell znakem.
Takže pokud budeme potřebovat, aby vybičovat málo funkce život replikát,
ale říkají, že to není Standardní knihovna,
můžeme použít syntax podobné následujícím.
A budeme vánek nad tím.
Jedna věc, kterou uvidíte hodně v bicí automat je děláme hovorů
k něčemu volal filtr, která je stejně jako dříve,
je zobrazení funkce nad seznamu, ale je to
mapování logický funkce.
>> Takže tu máme příklad standardu A anonymně
definovaná booleovská funkce, které Stačí jen pár hodnot.
To není přísně vzato anonymní funkce.
Ale je to definovat s že syntaxe pro stručnost,
a to prostě trvá x modul n-
CONNOR HARRIS: Jo.
Takže f je funkcí dva argumenty n a p
že vrátí funkci, která je sama funkce jednoho argumentu, a to x.
STEPHEN KREWSON: I Uvedené operátory infix.
Jaké jsou operátoři infix?
No, operátoři infix jsou Normální způsob zastupujeme operace,
říkají, v mathematics-- 2 plus 2 místo provozovatele a
a pak dva argumenty 2 a 2.
CONNOR HARRIS: Jmenuje se to Reverzní polská notace, což je
termín Pochybuji, někdo z vás bude vědět.
>> STEPHEN KREWSON: Správně.
Reverzní polská notace nebo předpony.
Ale rozhodl se Haskell používat operátory infix.
Tak to jsou některé z Vlastní ty, které
jsou definovány pro Euterpea DSCL v Haskell.
Tak tohle je sekvenční složení.
Toto bylo paralelní složení, a to se zkracovat paralelní složení.
A budeme potřebovat s naším automatem,
protože budeme používat poslední operátor v tom, že malé tice
hrát na bicí automat podél s naší Frere Jacques píseň.
A naše bicí automat je Bude nekonečný.
Je to jen hraje navždy.
Ale píseň Frere Jacques není.
Není to tak dlouho.
Je to jen pár barů.
Takže potřebujeme zastavit bicí automat as Jakmile je kratší hudební hodnota vychází
do konce.
A to infixed operátor je super užitečné, s tím.
>> A infix notace jako To je docela hezké,
proto, že říkají, že máte funkci jako citát, který dává celočíselné dělení
x něčím else-- Omlouvám se, že by měl být, a b.
Dalo by se napsat, jako citace b.
Takže pokud jste put-- prvek Dalším příkladem.
x element v nějakém seznamu, pokud jste dal to v backticks, můžete jej použít.
I když to není symbol jako plus nebo minus nebo časy,
můžete použít jméno Funkce, jako že v backticks
jako zaváděcí operátor, což je docela v pohodě.
CONNOR HARRIS: Znovu, toto je všechno jenom syntaktický cukr, opravdu.
To nemá vliv na jádro jazyka.
>> STEPHEN KREWSON: Takže zde vidíme pro Poslední věta našeho Frere Jacques písně,
Hrál jsem nějaké malé nebo akordy třetiny pomocí paralelní složení
operátor.
To je další způsob, jak říkat některé z toho, co jsme právě říkali.
Takže si můžete mapovat funkce jednoho argumentu nad seznamy.
CONNOR HARRIS: Opět odkazy pro Haskell-- úvodních učebnice
bude mít vše v něm.
>> STEPHEN KREWSON: Tak tady je docela Klíčovým řádek kroku sekvenceru
budeme se podívat na použití seznam porozumění.
A zde vidíme, je, že prvek V provozovatele pevných vzadu uvozovkách.
Takže pokud x je prvkem seznamu x je, pak budeme vyvolat Perc funkce.
Takže perc je jen funkce bicí.
To trvá nějakou hodnotu p, který je část ohraničené množiny všech
různé bicí zvuky že jsme viděli v předchozím snímku,
a pak to, že dává Doba trvání čtvrt poznámky.
Jinak to mu dává qnr, a qnr je jen odpočinek čtvrťová nota.
>> Tak tohle je budování něco pěkného.
Máme seznam prvků, a my budeme smyčku nad nějakou seznamu od jednoho
na maximální hodnoty našeho kroku sekvenceru.
A když jsme v určitém i v že seznam jednoho do maximální hodnoty,
pokud, že i je členem této sada byla vytvořena v této funkci,
dobře, pak jsme to otočit do perkusní poznámky.
Jinak jsme jen hrát odpočinek, který znamená, že jsme prostě mlčí.
A vidíme zde, že v Tento seznam porozumění syntax,
x je obýván to Seznam postavil jednoho
ke globálnímu velikosti sekvenceru.
CONNOR HARRIS: Jo.
Základní syntaxe Seznam je comprehension
držák, hodnota zahrnující některé proměnné, bar,
Možné hodnoty proměnných sám, uzavřený držák.
A pokud jste udělali nastavit stavitel notace v nějakém druhu matematiky třídy,
můžete mít nastaveno jako 2n že n je nebo n je v z.
Podobné thing-- tomto zápisu má být podnětný
tohoto matematického zápisu.
STEPHEN KREWSON: A můžete použít více predikáty
a více filtrů v seznamu porozumění, což je docela pěkné.
Algebraická types-- jsme nebude otálet tady dlouho.
Tam to není dobrý pojem v Haskell nebo dobrý, zřejmý pojem
o tom, jak vzít, řekněme, ve výchozím nastavení parametr funkci nebo tak něco.
V Pythonu, je to docela snadné.
Stačí si jen říci rovná na prohlášení o funkce,
výchozí hodnota v Případ nikdo je dodáván.
>> V Haskell, mohl byste možná použijte možná možná typ,
který bere buď nic nebo hodnotu typu jen.
Tak jsme to využít v bubnu pračky , abychom mohli dát volitelného objemu
parametry na každé z částí bubnu.
Tak, že nám dává způsob, jak mít EQ nebo objem na konkrétní kanál.
>> CONNOR HARRIS: V další příklady Haskell,
můžete vidět mohou být použity pro funkce, které by mohly selhat.
To je obyčejný.
>> STEPHEN KREWSON: A můžete doplnit jakési chybové zprávy jako výchozí.
A to je obzvláště vhod, když děláte I / O v Haskell.
To může být triky.
CONNOR HARRIS: nebo pro Podobným příkladem, myslím,
funkce, která zahrnuje rozdělení parametru, která může být 0.
A tato funkce mohla vrátí možná cokoliv.
Takže v případě, že to není dělení 0, vrátí prostě cokoliv.
A v případě, že se dělení 0, vrátí se nic
jako způsob signalizující chybu.
Vzhledem k tomu, jeden důsledku Haskell má velmi přísná psaní
je to, že neexistuje žádný real-- Výjimkou jsou trapné, v podstatě,
zpracování chyb je trapné.
A to je jeden velmi obyčejný způsob, jak dělat to.
>> STEPHEN KREWSON: Takže teď dostaneme na jinou mysl ohýbání věc
o Haskell, který je vzorem odpovídající a funkční definice.
Ukázal jsem tě v poslední nasuňte Prohlášení sekvence kroku
Funkce, které trvalo možná hodnota, pak int, pak seznam ints,
pak vrací sekvenci hudební hodnoty tam komentovaný
s oběma výšky a hlasitosti.
>> Takže tyto tři argumenty mohou být vzor uzavřeno v následujícím způsobem.
A vždy chceme být jisti, dělat základní věci ani ukončovat případ jako první.
A tyto podtržítka stačí být vykládány
znamenat nějakou hodnotu, která tam je.
Takže pokud se dostaneme volání do kroku sekvence s určitou hodnotou, nějaká jiná hodnota,
a pak se prázdný seznam, co chceme, Pro návrat je jen ticho, odpočinek 0.
>> A místo toho, aby bytí prázdný seznam nebo 0,
to je zbytek 0, protože jsme jednání s typem hudby,
a prázdný seznam hudby Typ je jen zbytek ne trvání.
To není hudba.
A pak uvidíme, jestli dostaneme o krok sekvenci s obj pro objemovou argumentu,
p pro předběžné opatrnosti nástroj Argument, a pak seznam x let.
>> Pak jsme udělat nějaké věci.
Především aplikujeme tento seznam s porozuměním,
a provádíme některé operace na možná hodnota
přeměnit ji na číselnou hodnotu, takže to by mohlo být pak výčtu a používány
vyberte nástroj.
Opět platí, že se jedná o málo bit úmyslně inconcise
jen aby ukázal všechny divné věci můžete udělat v Haskell jako vy
podívejte se na to ve svém volném čase.
>> Dobře.
Takže jsme se konečně dostat do to, co jsme se vydali k tomu,
což je vydělat nějaké počítačové hudby.
Takže budeme snažit aby píseň Frere Jacques.
Takže tam jsou, kolik fráze ve Frere Jacques?
Čtyři.
Skvělý.
A co je hezké, je, že všichni jsou opakovány
stejné množství časů, který je dva.
>> Takže máme čtyři fráze každý opakuje dvakrát.
A zejména, jsou v jednom kole.
A existuje mnoho, mnoho způsobů, jak realizovat
kolo, která by mohla být legrace dělat.
Udělal jsem to v velmi jednoduchý způsob, jak tady,
který je jen construct-- linku Funkce vezme seznam hudebních hodnot
a stáčí se do sekvenční kompozice použitím této sekvenční složení
operátor.
>> A pak jsem odložit jednotlivé části tím, že je začít s odpočinku.
Tak jsem se začít s ostatními dvou opatření, a pak zbytek čtyř opatření,
a pak zbytek šesti opatření, a pak kolo
funguje, jak všichni víme, tuto píseň.
Vidíme dvě poznámky nebo modifikace hudebních hodnot
které jsou obsaženy v této sekvenční Uspořádání hudebních prvků.
Máme objem doplňku.
Jedná se o funkci pro anotaci hudba s určitým objemem.
To je dobrý příklad signálního provozu MIDI
od 0 do 127, sedm bitů informace, které mohou být prováděny.
>> A then-- jsme to viděli velmi krátce, ale obecné MIDI
Seznam všech různých nástrojů.
A že to není celá spousta z nich.
Pokud používáte digitální audio pracovní stanice, jako Ableton Live nebo Pro Tools,
je tu neuvěřitelně širší rozsah syntezátorů a VST nástrojů.
Ale jen standardní MIDI má několik nebo několik desítek.
A některé z nich jsou zábavné.
Myslel jsem, že by bylo zábavné, když jsme hráli přístroji Přístroj MIDI
vrtulník, a poté další cesta přes kolo,
jsme udělali pad syntezátor, a pak to banální vedení náměstí vlna synth,
a pak hlasem sliz, které jsou trochu nejasný na mé špatné MIDI
syntezátor, ale OK.
>> A pak jsme se vidět tento LET a v syntaxi z Haskell,
a pak hrajeme všechny tyto části dohromady
s paralelním operátorem složení.
A mohli bychom pravděpodobně ukázat něco z toho.
Zde je kód.
A můžete vidět v C, že by bylo Hodně krku zúčtování a nastavení
tabulku kód před vámi mohl dělat hudbu takhle.
Nebo jakékoliv jiné programovací jazyk, to by asi
muset spolupracovat s nějakým druhem knihovna nebo API a nastavit vše,
a pak budete muset uklidit.
Ale tady v Haskell je, myslím, jednou se dostanete na kloub, neuvěřitelně
čitelný a velmi expresivní.
Takže tam je implementace z Frere Jacques.
Dobře.
Nyní chceme přidat bicí, a to je trochu Messier.
Takže pojďme se podívat na snímky.
Tak velká myšlenka je, aby se banda seznamů nebo jejich částí.
Z těchto válců-in strojích, tam byly typicky asi možná osmi
10 rytmu bicích nebo částí.
A pak použít spoustu technik.
A my jsme mluvili o these-- použití záhyby, filtry, lambda funkce,
mapované přes seznamy k výrobě hodnoty v nějakém rozsahu 1 až r, r je 16,
nebo 32 kroky v sekvenceru.
>> A pak, jestli je hodnota v tomto seznamu jak jsme běh přes sekvenceru,
běh přes to a přes nad, se ukáže v takovém případě,
a tento vzorek dostane spuštěna.
Tady jsou všechny různé podivné způsoby Přišel jsem s generovat poznámky.
Zkuste to na vlastní semifinále částky.
Bude to znít v pohodě.
Čas dovolí, půjdeme přes to.
Ale právě teď, myslím, že bychom měli demo, co máme.
Doufejme, že to jde OK.
>> Tak to je GHCi.
A budeme načíst soubor Nazval jsem song.lhs,
což je soubor jsem vám ukázal.
OK skvěle.
Jak řekl Connor dříve, zkompilovaný, napište ji zkontrolovat,
takže mohu dýchat mnohem jednodušší.
Nebude to vyhodit do vzduchu na mě.
>> Chtěl jsem vám ukázat něco užitečného.
Můžete vidět, že modul načten nazývá 50.
Můžete procházet tento modul.
A to je tak pěkné o tom, co možná doing--
děláte v Haskell není volal vývoj software,
ale můžete udělat hodně zábavné věci na vlastní pěst.
A workflow je opravdu pěkné as ve srovnání s mnoha jiných jazycích,
protože můžete vidět v opravdu čitelný způsob, jak co se děje.
Vidíme tedy, že máme všechny tyto věty, které
jsou seznamy hudebních hřišť, a pak jsme stavět tyto se do něčeho většího,
což je hudební skladba.
Je to hudební přehrávač.
A pak to můžeme hrát všechny s funkcí tzv přehrávání hudby.
Můžete vidět, že tady dole.
Což je jen hrát.
>> Měl bych say-- jsem neměl mluvit o Tento znak dolaru, který je všude.
Znak dolaru je další zaváděcí operátor.
Ale to má nejnižší přednost libovolného operátora, který účinně
znamená, že vše, co na levá strana se znak dolaru
a právo na znak dolaru, budeme dostat vyhodnoceny před ním.
Takže je to něco jako další způsob přidávání závorka.
>> CONNOR HARRIS: Je to v podstatě skládání funkcí.
A to zaručuje, že vy, ne-li have-- Máte funkce obou stranách, nebo infix
operátoři na obou stranách, nebudou sdružovat přes něj a dá vám
neočekávané výsledky.
>> STEPHEN KREWSON: Takže jsme can-- pomocí které můžeme zavolat.
Za prvé, budeme hrát bez bubnů.
To je vrtulník, MIDI vrtulník.
>> [Přehrávání hudby]
Tam je náměstí vlna.
Hlas sliz.
A opravdu můžete jít volně žijících s tím.
Vzal jsem docela jednoduchý, protože jsem věděl, že bych neměla ukousnout
víc, než jsem mohl žvýkat.
Jen aby to docela jednoduché ukázat hlavní myšlenky.
Ale pak jsem byl rád, máme musím přidat nějaké bicí v této oblasti.
Právě proto, že se jedná o trochu neproniknutelný,
a já jsem neměl používat název bicích částí,
I mapovány them-- proto, že jsou část tohoto výčtového třídy,
Mapována jsem je ints.
Jedním z nich je jako basový buben.
Nula je také.
Sedm je vysoký klobouk.
A v tu, kde se Funkce trochu víc náhodný,
tito jsou jako conga bubny.
>> Takže pokud si myslíte, about-- možná zábavný způsob, jak realizovat bicí automat
je použití velmi spořádaný vzory na vašem basový buben.
Tak například, na filtrování přes Seznam se vším, co dává zpět
1 když je to vzít modul 04.
Tak jsem si 1, 5, 9, 13, 17-- takže to je první porazit každého opatření.
>> A pak je to stejné věc posunula ve dvou krocích.
Tak to je nekonvenční.
Takže by to bylo něco jako vysoké klobouk.
A tady opět, dolů, je to trochu náhodný,
protože děláme Conga bubny.
A já mám nějaké maracas tady taky.
>> Takže jsem mohl zavolat hrát bicí automat, ale to by trvat věčně,
a to by mohlo začít popadl celá paměť v mém systému.
Takže já zavolám tuto funkci přehrávat hudbu, která, jak uvidíme,
použijte zkracování paralelní složení hrát naši malou Frere Jacques píseň
spolu s této podivné automatem.
Takže pojďme se podívat.
A prosím tě, zlepšení na mém Uspořádání všech bubnových částí.
Ne moje specialita, ale já Měl spoustu legrace dělat to.
>> [Přehrávání hudby]
>> Tak samozřejmě, je to vše trochu ne jako zábavu
když nemůžeme převést na skóre, takže možná to
by mohla být vykládána lidským umělec.
Tak jsem se nebude pracovat zde.
Už jsem generované soubory.
Můžete vidět, že je tu dot LilyPond file-- a to
bude můj segue se k Connor-- a soubor tečka MIDI,
a soubor tečka PDF, což je to, co LilyPond nakonec generovat.
>> Ale to jsou ty skripty, a budu stačí spustit je s jejich možnostmi nápovědy.
Pokud se vám tyto nahoru a běží s Euterpea, můžete vygenerovat soubor MIDI.
A pak z MIDI souboru s tímto programem MIDI 2LY,
můžete vygenerovat Lily Rybník soubor, a pak
mohou generovat ve formátu PDF skóre.
A měli bychom se podívat na tohle.
Takže Connor bude pravděpodobně ukáže , jak anotace lépe,
ale to je Frere Jacques as generované mnou v Euterpea.
Je to jen v C. Měl jsem přišel out co hack to je vlastně v.
Ale to je pro potrubí jak to děláte, že s tím.
Pojďme mluvit víc o LilyPond.
>> CONNOR HARRIS: OK Pojďme se podívat.
Zmínila jste se dozvíte Vy Haskell?
STEPHEN KREWSON: Ach jo.
Podívejte se na Naučte You Haskell.
Je to ve zdrojích.
To je, jak jsem začal učení, a je to skvělé.
Není hloupý učení.
>> CONNOR HARRIS: Takže je to on-line.
Takže chlápek jménem [neslyšitelných] learnyouahaskell.com, žádné mezery.
Gramatika je nemocný.
STEPHEN KREWSON: Je to ilustroval, taky.
CONNOR HARRIS: Takže to, co je LilyPond?
Je to deklarativní programování jazyka k Music sazbu.
Takže declarative-- můžete myslet na věci, jako je HTML,
kde nejste saying-- HTML neříká, jak se webové prohlížeče by měly
vykreslení stránky krok za krokem.
Je to jen, že to říkám je textový popis
o tom, co chcete, aby stránky vypadat.
>> A pak je to také program který překládá tento jazyk,
nebo si přečtěte jeho, a potom vlastně dělá sazbu pro vás,
a to vyplivne tito nádherné vypadající skóre PDF.
Můžete také získat ve formátu PNG nebo cokoliv jiného.
Dobrým způsobem, jak myslet toho je, obdobně
je, že LaTeX je něco jako LillyPond, ale jen pro obyčejné sazbu.
Takže místo toho, of-- to není WYSIWYG to, co vidíte
Je to, co dostanete, stejně jako, řekněme Finale je, nebo Sibelius,
nebo Microsoft Word, kde můžete zadat v reálném čase a návrhy věci v reálném čase
a vidět změny okamžitě.
>> Je založena textu.
Musíte kompilovat skóre pomocí zvláštní program
a dostat se ven PDF později.
To je o něco méně vhodný k použití, jestliže jste
snaží psát přímo do skóre a vy jste
se snaží skládat na počítači.
Ale existuje spousta výhod pro něj.
Jednou, to vypadá mnohem hezčí, protože LillyPond může ve skutečnosti
mít čas na to rozvržení rozhodnutí správně,
Na rozdíl od Sibelius nebo Finale, které mají aby se tak ohrožena algoritmy
že se mohou zobrazovat věci v reálném čase.
>> Tak proč je LilyPond-- počítačová grafika je těžké.
Pokud děláte cokoliv s hudbou a chcete vypsat skóre,
nechcete psát out všechno sami:
počínaje jak kreslit štáby a jak kreslit poznámkové bloky.
Je velmi obtížné. Bylo to předtím.
Jsi v pořádku.
>> Chcete-li používat Finale nebo Sibelius, formáty souborů pro ty věci,
jsou velmi komplikované, a nemůžete Opravdu používat programově.
Můžete otevřít Sibelius s Finale a přejděte na Soubor, Export jako PDF sami,
ale můžete opravdu volat, že ze skriptu.
LillyPond, můžete volat z těchto skriptů.
Dalo by se snadno opakovat LillyPond s LaTeXu.
Nebudu mít tolik času jít do těchto technologií právě teď,
ale, že existují.
Pokud se chcete podívat do LillyPond knihy,
je to program, který je dodáván s vaše distribuce LillyPond,
a je to pro iteraci LillyPond fragmenty do LaTeXu
Pokud chcete udělat něco jako velký musicology dokumentu
s příklady, například.
A je to dobrý skill pro Život pokud děláte něco
s hudbou, ne jen CS50.
Použil jsem LillyPond pro všechny mých složení projektů
protože jsem byl v podstatě senior na střední škole.
>> Tak tady je pár jednoduchých příkladů.
To je v podstatě reprezentativní úrovně obtížnosti
že většina lidí by tváří, že se snažili
používat LilyPond pro jednoduché projekty.
První z nich je začátek na chorale předehru Bach.
To dno jeden je výňatek od jednoho z mých vlastních prací,
a je to jen tam ukázat vám věci, jako je [neslyšitelných]
uvedení více řádků ve stejném personál, jak lyrická undersetting funguje.
Lyrické podložky jsou věc, která je velmi snadné použití lilypond pro sborové hudby.
>> A tak pak je tu víc Složitější příklady zde.
Všechny tyto jsou prováděny v LilyPond a jsou proveditelné.
První úryvek je z [Neslyšitelný] podle [neslyšitelných].
A toto [neslyšitelných] z kus pro sólový bas
flétna podle [neslyšitelných], který je longtime-- který
Byl dlouholetým členem hudební oddělení tady, myslím.
Nejsem si jistý, kde on odjel do.
Ale on byl poradcem Harvardu Skladatelé Association po dlouhou dobu.
Báječný člověk.
A píše hudbu, která má velmi komplikovaný zápis že LillyPond
lze nicméně zvládnout velmi pěkně.
>> Takže jen, aby vám smysl toho, co schopnosti ta věc je tak are--
internals LillyPond jsou velmi komplikované.
A můžete použít pro dlouhá doba, včetně
pro některé docela složité věci, aniž by skutečně
museli vědět hodně o nich.
Ale základní myšlenkou je, že na Nejnižší úroveň, atomy LillyPonds
jsou poznámky.
Poznámky obsahují kontext volal hlasy.
Takže hlasové kontextu v zásadě odpovídá
na jeden řádek polyfonie.
A pak kontext může být obsahoval hierarchicky
ve vyšších ty úrovně, které představují štáby na skóre
nebo větší seskupení, jako je piano štáby nebo sbor štáby,
a pak nakonec Celý skóre kontexty.
A můžete skutečně zahrnovat více skóre v knize.
>> A každý kontext má počet připojených rytců.
Podíváte-li se prostřednictvím Obsah kontextu
a vytisknout určitý symbol nebo Určitá třída symbolů podle potřeby.
Tak, aby každý hlasový souvislosti tam je [neslyšitelných] poznámky
Rytec, že ​​je v podstatě funkce nebo objekt, který vypíše všechny poznámky
hlavy na pravé části stránky.
Pak je tu trhlina rytec, který píše se rozštěpy na zaměstnance.
Pak je tu metronom Značka rytec, že
vypíše metronom stopy v skóre.
A všechny tyto vešly pěkně dobře do hierarchie.
A je to velmi, velmi, velmi přizpůsobitelné, který budete potřebovat
pokud chcete získat takové věci.
>> Takže všechny kontexty mají mnoho různých atributů
že můžete změnit všechno z odstupu k různým písmo
výběru, aby velikostí věcí.
Pokud si chcete udělat ještě složitější věci,
tam je vestavěný skriptovací jazyk.
Oni používají schéma, které je dialekt LISP.
Ty pravděpodobně ne ti něco.
Ale v podstatě, schéma další funkční
programovací jazyk, více nebo méně.
>> STEPHEN KREWSON: vázanka-in.
>> CONNOR HARRIS: Jo.
Je to dobrý tie-in, řekl bych.
A to je používáno jako vyučovacím jazykem, ve skutečnosti, dolů Mass Ave. Na MIT.
A to je velmi užitečné pro LillyPond z různých technických důvodů.
>> A tak, pokud chcete, aby jednoduchý vylepší závislé na conditionals,
pro example-- tam je jisté stav skóre, které je splněna,
provádět změny uspořádání nebo whatnot-- poté
Tato zařízení jsou tam.
Jsou to složité.
Tak tady je docela jednoduchý ukázkový kód.
Je to pět řádků.
V podstatě, já definovat dvě hole.
Je to v 3/4.
První zaměstnanci má připojený tempo značka,
ale to je ve skutečnosti děje Pro přechod na celé partitury,
protože tempa značek jsou na úrovni skóre.
Metronom značka rytec je připojen ke skóre kontext.
K dispozici jsou různé klíče, protože [neslyšitelných] rytce
je připojen štáby.
Můžete si skutečně udělat, je.
Vzorek jsem napsal, je vlastně v C dur,
ale je to jen proto, aby demonstrovat můžete mít
různé klíče v různých štábů.
A Základní syntaxe je píšete na vědomí, jména s E, F, G, cokoliv.
Pokud si chcete udělat posuvek, vy přípona je nebo ES.
To je z nizozemského muzikologického konvence.
>> A k tomu oktávy skoky, budete muset použít Tyto dílky, čárky nebo apostrof.
Relativní prostě znamená, co máte na vědomí,
bude automaticky plaec v oktávy nejblíže k předchozí.
A pokud si chcete skočit více než fifth-- říkají pátém či dokonce more--
pak budete muset použít [neslyšitelných].
Ale jinak, nemusíte se specifikovat oktávu každou notu.
>> A relativní C, prime a C, stačí zadat střed C
a základní C, zejména první tóny.
Pak budete mít tyto štáby, které organizují tyto dva hlasy nebo vzorky hudby,
a máte skóre.
A to vypadá takto.
>> Chcete-li mít čas na kopírovat, že vzorek LillyPond
kód na předchozí klouzat dolů tady, a vy
Můžete napsat to pro LillyPond sami.
Vím, že jsme něco která vypadá hodně jako je tento.
Takže je tu další technologie volal Music XML zachovány
zcela jinými lidmi.
XML je textová data structure-- I neměl říkat údaje structure-- říkají
mapa metafora druh.
A to je navržen tak, aby držení hierarchických dat velmi dobře.
HTML, například, je typ XML.
A můžete říct, XML, protože byly všechny ostré závorky a úhel
držák lomítka které ukazují, datových polí.
>> Nemám kód příklad z Music XML.
Můžete jej najít sami.
V podstatě, důvod, proč byste mohli chtít používat XML jako mezistupně
je v první řadě je to výměnný formát
pro v podstatě every-- bych neřekl každý, ale hodně odlišné skóre
spisovatelé.
Takže pokud píšete v hudbě XML, a to nejen může LillyPond
přečtěte si to s pomocí tohoto Přídavné program s názvem Music XML do LY,
ale také Finale můžete přečíst to, Sibelius jej přečíst.
V závislosti na tom, jak ve vnitřní objekt hierarchie pracuje pro reprezentovat hudbu,
to by mohlo být jednodušší vypsat Hudební XML než k LillyPond
a jen spoléhat na hudbu XML do LY dělat konverze.
>> Nemyslím si, že [neslyšitelný] má hudební XML.
STEPHEN KREWSON: to není.
Někdo pracuje na tom, ačkoli.
>> CONNOR HARRIS: OK.
Euterpea není vybaven Výstupní funkce ještě Music XML.
Chcete-li konečné nápad na projekt, Možná, že dostat do kontaktu s muži
že Stephen ví, a oni mohli použít vaši pomoc.
>> STEPHEN KREWSON: Rád bych to.
CONNOR HARRIS: Také, v podstatě, každý programovací jazyky
že to stojí za jeho soli již má knihovnu XML,
takže můžete interně převést všechny vaší hudby do nějaký předmět
že knihovna XML může psát na to, že by vyžadoval méně
změny na váš vnitřní struktury cokoliv, co můžete hudební objekty
chcete napsat, než psaní přímo v LillyPond by.
Pak už stačí jen vytisknout s XML s XML knihovny v češtině,
, která zaručí, že je to syntakticky správné a všechno,
a pak ji převést na LillyPond.
Takže technologie budete chtít podívat do pokud děláte něco,
takhle.
>> [Neslyšitelný], další auxilarry technologie.
To je v podstatě Tech Works nebo Tech Studio pro LillyPond.
Tak to nabízí pomoc s syntax, se šablonami
pro různé běžné kombinace nástrojů.
To umožňuje prohlížení tak rozdělená obrazovka můžete mít svůj kód v jednom okně
a PDF v jiném okně a klikněte na místech v PDF
přejít na příslušné skvrny ve zdrojovém kódu.
To je mnohem užitečnější, pokud jste opravdu psaní LillyPond soubory sami
než když jste generování je programově.
Ale na druhou stranu, je to něco užitečné mít.
>> Skvělý.
Další resources-- budu projít to velmi rychle.
LillyPond manuals-- LillyPond má Vynikající dokumentace na svých internetových stránkách.
Mají tutorial.
Mají odkaz syntaxe.
Mají stovky fragmentů pro různé drobnosti
yo může být nutné udělat, aby prokázat různé schopnosti.
Chcete-li použít skriptovací jazyk
nebo provést rozsáhlejší přizpůsobení, pak je tu
vnitřní zařízení odkazovat na této adrese URL.
Chcete-li použít Music XML, je tu že URL, musicxml.com/tutorial.
>> A pak, pokud budete muset naučit systému proto, že jste vlastně chcete použít
skriptovací zařízení v LillyPond, pak je tu [neslyšitelných] nazvaný
Strukturované Tlumočení počítačových programů,
která je nejen druhým Největší CS učebnice vůbec written--
najít mi potom, pokud chcete vědět, co si myslím Největší jednu je--
ale je to také velmi dobrý Úvod do jazyka správné.
Nebudete potřebovat více než několik prvních profily.
>> A to je vše.
Nějaké otázky?
>> STUDENT: Kde mohu stáhnout Váš generované Frere Jacques
tak jsem si dal to na můj iPod?
>> STEPHEN KREWSON: No, můžete psát out na některé wav soubor v Euterpea.
A máte kód.
Je to na GitHub.
Vytvořte si vlastní variace Frere Jacques by CS50 mysl úlu.
To by bylo skvělé.
CONNOR HARRIS: někdo?
STEPHEN KREWSON: Potřebujeme lepší basový buben, taky.
Je to opravdu špatné.
>> STUDENT: Euterpea má nejen složení straně, ale signal--
STEPHEN KREWSON: Ano.
Ve skutečnosti, se práce I dělal, když jsem v Euterpea
vzal tohle-- je tu Absolvent kurzu na Yale, že
používá to-- byl na syntézu zvuku.
Takže tam je opravdu příjemný způsob, jak pomocí šipek
a některé z notace jsme viděli z skládání dohromady signální funkce.
Zejména basy pro většinu z nich je jen jednoduchý sinusoida.
Ale pokud začnete skládat ty v podivné programové způsoby,
můžete získat šílený zvuk efekty, jako podivných kaskádami.
Můžete vytvořit velmi odvážný zvuky se spoustou modulace.
>> Udělal jsem projekt na granulované syntéza, která je
někde mezi FM a odběru vzorků.
Budete mít velmi malý, malé vzorky, a pak
kombinovat je s nějakým druhem modulátor a vybudovat bohatší zvuk.
Také jsme fyzikální modelování, tak se snaží přemýšlet o fyzice
a psychoakustika něco jako trubka, a přemýšlet o tom, jak
zvuk je odráží od zvon polnice
a akustika místnost a modelování
že se základními oscilátorů.
CONNOR HARRIS: Díky moc.
Díky, že jsi přišel.
A já jsem vždy ochoten trvat otázky podle email--
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Jo. stephen.krewson@yale.edu.
Bezva.