코너 해리스 : 안녕하세요.
나는 코너 해리스입니다.
나는 하버드 CS50의 CA입니다.
스티븐 KREWSON : 나는 스티븐 Krewson입니다.
나는 예일대에서 CS50을위한 TF 해요.
코너 해리스 : 그리고 우리가 이야기하는거야 일부 기술에 대한 당신은 수도
당신이 관심이 있다면 사용하려면 최종 프로젝트를하고 또는 정말
음악과 함께 아무것도.
우리는 처음에 집중 될거야 하스켈라는 프로그래밍 언어.
이 기능의 언어이므로 패러다임
C 또는 PHP는 매우 다르다 또는 다른 명령형 언어
것을 당신은 이미 사용하고, 특히 한 하스켈 작성된 라이브러리에
사람들을 도울 수있는 Euterpea라고 기능적으로 음악을 쓰기와,
원래.
그리고 스티븐 당신을 안내합니다 그 좋은 예를 통해.
>> 이 후, 나는 당신을 소개합니다 LillyPond라는 것을, 어떤
조판 음악에 대한 기술입니다.
그것은 일종의 유액처럼 음악에 대한 당신의있는 경우
수학 수업 라텍스를 사용하고 또는 다른 P 세트 클래스 또는 무엇을해야합니다.
그리고 나는 다시, 당신을 줄 것이다, 그 중 몇 가지 간단한 예
그리고 일반적으로 당신을 가리 킵니다 더 좋은 자원의 방향.
>> 스티븐 KREWSON :에 또한, 우리는 그것을 생각
설정하기 멋진 것 힌트 조금
사이의 파이프 라인을 향해 Euterpea 생성 MIDI 파일
LillyPond에, 그래서 우리는 제공 스크립트에 대한 몇 가지 명령
것을 그렇게 LillyPond 제공
단지 그것을 오픈 소스를 유지하는 가는 파이프 라인을 얻을.
코너 해리스 : 다시, 우리가 강조해야
이 두 가지 기술, 당신 함께 사용할 필요가 없습니다.
그들은 작동하도록 설계하지 않을 함께,하지만 그들은 매우 잘 수행.
>> 스티븐 KREWSON : 오른쪽.
전부 무료입니다.
코너 해리스 : 그래서 감사의 말은, 그냥 읽기.
스티븐 KREWSON : 정식으로 지적했다.
그 사람에게 감사합니다.
이것은 그냥 순간에 남아 있습니다.
설치 프로세스 조금 까다 롭습니다.
우리는 GitHub의 날을 읽고 당신은 좀 걸릴 수있다.
당신은 질문이있는 경우에는 그냥 나에게 이메일을 보내.
그러나 우리는 가정하에이 실행하겠습니다 이 것이 모두를 위해 노력하고 있습니다.
코너 해리스 : 그리고 경우에 당신은 할 수 없습니다 LillyPond는, 더 큰 거래를 작동하지 얻을.
더 라이브 편집이 없다는 것을 적어도 내 말에 포함됩니다.
스티븐 KREWSON : 하스켈과 LillyPond 모두 설치를해야한다.
Euterpea는로 다운로드 패키지, 등등 등등.
그래서 우리는 컴퓨터 음악에 대해 얘기하고.
그리고 이것은 단지이다 매우 50,000 피트보기.
그것의 몇 가지 다른 측면이있다.
그리고이 거친이며 몇 가지 세부 사항을 모호하게하는 것.
그러나 우리는 뭔가 생각할 수있는 알고리즘 구성 등,
알고리즘을 사용하여, 생성하기 위해, 코드를 사용하여
어떤 종류의 동행입니다 아마 자기 유사성 노트, 아니면 노트의 순서
몇 가지 제약 조건 하에서.
그리고 사람들은 될 수 수행 또는 해석
아날로그 악기 또는 그런 아무것도.
그러나 조성은 알고리즘 다.
>> 그러나 물론의, 어쩌면 지역 컴퓨터 음악 또는 디지털 음악
우리는 디지털이다 더 잘 알고 사운드 합성 또는 디지털 샘플링
디지털 녹음.
디지털 기기의 많은입니다 디지털 샘플링을 통해 수행.
사실, 우리는 이들 중 하나를 사용하여 수 있습니다 이후 사운드 폰트 라이브러리의 형태.
>> 뿐만 아니라 뭔가라고 나온 디지털 합성
70 년대 후반과에 '의와 80 년대 스탠포드에서 야마하와 존 Chowning
FM 합성을 수행하거나 주파수 변조 합성,
어디 캐리어를했다 신호 및 변조 신호
모두 오디오 스펙트럼.
그러나 우리는에 집중하는지 오늘은, MIDI라는 뭔가
그리고 물론, 알고리즘 조​​성물.
>> 우리는 악기를 만들려고하지만,하지 않을 우리는 대신에 어떤 음악을 만들려고하고,
그리고 그 해석 얻을 것이다 일부 악기에 의한
도 준수 일반 MIDI 표준.
그래서 미디은 무엇인가?
나는, 너무 깊이 들어갈 않을거야 그러나 MIDI 데이터 전송 프로토콜이다.
그것은에서 가이드의 일종이다 다른 기업과 산업
소리 나 패치를 주관.
그래서 우리는 그것을 볼 수 있습니다 MIDI 표준이있다
모든 다른 타악기를위한 사운드 및 MIDI 권장
신디사이저의 모든 다른 종류의 또는 모든 다른 종류의 악기
오케스트라의 그룹은 말한다.
>> 당신은 아마에 익숙 0에서 127 MIDI 메시지.
MIDI 신호는 전형적 나타내는 하나의 비트
그것은 데이터 또는 여부 상태 패킷은 다음 거기
신호의 일곱 비트.
그리고이 제어 할 수 있습니다 볼륨에서 모든
행동이나 압력 특정 키에
당신은 MIDI로 수행하는 경우 컨트롤러뿐만 아니라, 물론,
노트.
그리고 물론, 미디있다 매우 유용
그것은 와이어 할 수있는 방법이기 때문에 함께 또는 데이지 체인 (daisy chain)
미디 하드웨어 장치의 무리.
내 집에서 7 ~​​ 8 백 있습니다.
그것은 정말 복잡해진다 하지만 정말 강력합니다.
그리고 그것은 정말 오래된이다.
그것은 80 년대 초에서, 그리고 정말 좋은 작은입니다.
코너 해리스 : 네.
모든 고전 닌텐도 비디오 게임은 아마 것
예를 들어 음악 MIDI 파일을 가지고있다.
>> 스티븐 KREWSON : 여기입니다 일반 MIDI의 예,
일종의 MIDI를 보여주는 일반적으로 프로토콜.
그리고 나는 우리가 생각할 수있는 생각 사양의 차이
같은 뭔가해야한다는 이러한 장비는 실제 소리
그 악기의 실현 소리 사운드 글꼴이나 특정 MIDI에
차이 인 것으로 신디사이저 말한다 어쩌면 typeface-- 사이,
일반적으로, 이것은의 디자인 이 특별한 방법으로 표현하기
characters-- 특정 글꼴 즉, 특정 크기 및 음색을 가지고
그리고 짓이야의 실현​​있다
>> 코너 해리스 : 아마 더 나은 비교 것
일 유니 코드 표준은 범 말했죠 모든 문자에 숫자, 정말
세계의 모든 언어, 또는 언어의 스크립트의 광대 한 세트
세계에서하고 그입니다 뭔가 그래픽으로 렌더링
다양한 폰트 패키지로.
그리고 분명히, 당신은 생각할 수 소리의 유니 코드로 MIDI.
그리고 그것은 큰 흐름 동행입니다 단지 목록입니다 이벤트 및 악기와 이것 저것의,
당신은 별도 있어야 프로그램, 서체 등,
로 그 렌더링하기 가청 뭔가.
>> 스티븐 KREWSON : 왜 하스켈?
하스켈은 함수형 프로그래밍입니다 아주 고급 언어,
C는 매우 다른, PHP는 매우 다르다.
그리고 우리는이 있다고 보게 될 것입니다 하스켈 함수의 합성의 용이성
즉, 우리를 통해 산들 바람 수 있습니다 전사, 작성하거나 타이핑,
프레 르 자크 같은, 이 간단한 노래 그
거기에 부품을 많이 가지고 그 자기 유사하거나 반복합니다.
그래서이 일부있을 것입니다 이유에 대한 동기 부여
우리는 하스켈을 사용하는 함수는 일등 시민이다.
>> 그리고 연장하고 싶어 이 조금.
그것은에 조금 쉽다 하스켈에서 프레 르 자크를 표기하기.
하지만 우리가 원한다면 무엇 그것에 드럼 부분을 추가?
우리가 만들려고 노력하기를 원한다면 무엇 롤랜드 808 또는 909 드럼 같은
당신이 기계 약 16 개의 다른 단계?
일반적으로 이들은 으로 16 노트의 생각.
그리고 당신은 세계를 제어 할 수 있습니다 템포는, 당신은 밖으로 선택할 수 있습니다
다른 타악기 부품의 무리 베이스 드럼, 박수, 다른 덫,
개방과 폐쇄 높은 모자 채널이 종류에,
다음은 EQ하거나 자신의 볼륨을 조정합니다.
>> 그리고 우리는 좋은 방법을 볼 수 있습니다 이 단계를 표현 하스켈
모두와 시퀀서 하스켈의 다양한 멋진 일
우리는 생성하여 수행 할 수있는 목록을 통해 목록 및 필터링,
목록을 통해 매핑, 매핑 목록을 통해 기능.
그리고 빠른 사과.
이것은 매우 피상적​​이다 지나치게 빠른 스케치
양태의 일부 하스켈과 Euterpea의,
도메인 별은있다 임베디드 언어 작성
뮤지컬 형식의 하스켈.
그래서 온라인 코드를 확인 바랍니다.
글래스고입니다 불 GHCI, 하스켈 컴파일러 인터프리터.
그리고 나는 어떤 일을 할 것입니다 조금이의
그래서 당신은 어떻게하는지 볼 수 있습니다.
>> 그리고 이것은 당신이에로드 할 수 있습니다 짓이야 구문은 콜론과입니다
명령.
당신은 파일에로드 할 수 있습니다.
당신은 그 파일을 찾아보기를 사용할 수 있습니다 모든 기능을 볼 수 그
특정 모듈에 존재합니다.
그리고 우리는, 유형 및 종류를 볼 수 다음으로 클래스는, 하스켈에서 매우 중요하다
그래서 당신은 항상 특히 check-- 수 있습니다 새를, dscl에서 작업하는 경우
이 같은 음악 유형은 무엇입니까?
나는 길의 숫자에 대해 알고 유형, 하스켈에서 작동
하지만 난 음악에 대해 잘 모른다.
그러나 당신은 그들이있어 길을 탐색 할 수 있습니다 이 T 형 또는 명령을 이용하여 정의
다음 특히 호출 함수 또는 데이터 객체.
코너 해리스 : 네.
당신은 C와 연타를 생각하면 유형에 대한 hardass했다,
당신은 하스켈에 대해 아무 생각이 없습니다.
하스켈에 대한 좋은 점은 것입니다 당신은 컴파일 코드를 얻을 수 있다면
그리고 하스켈 유형 검사의 경우, 그것은 아마 맞아
타입 시스템은 매우 엄격하기 때문이다.
>> 스티븐 KREWSON : 네.
그래서 난 그냥 가고 싶어 다시 through--과,
이것은 몇 justice-- 안하고 하스켈의 특징, 그 이상
그 creators--에 그것을 만들었습니다 사람들의 무리에 의해 1980 년대 후반에,
약 20의위원회 people-- 중요한 생각했다.
그리고 먼저 그들 종이에 나와있는 그
하스켈의 기원을 설명 처음 20 년 정도 이상
이 게으른 것이 었습니다.
그래서 이것은 무엇을 의미합니까?
>> 우리는 어떤 종류가있을 때 음, 의미 식의, 우리는 그것을 평가해야합니다.
그리고 하스켈 통화에서이 작업을 수행 필요 방식 또는 비 엄격한 방법으로.
우리의 무리가있는 경우 즉, 우리의 표현의 구성 요소,
우리는 평가를 지연하려고 그 하위의
절대 마지막 minute--까지 우리가 실제로 필요할 때까지입니다.
>> 그래서이 means-- 인 정말 멋진, 특히
우리는 추상화에 대해 생각하는 경우 음악 스텝 시퀀서의.
당신은 전원을 켜십시오, 당신은 시작 스텝을 실행 sequence--
혹시 드럼 일 경우 machine-- 그리고 그것은 단지 영원히 간다.
그래서 우리의 경우 정말 좋은 것 하스켈에서 그를 에뮬레이트 할 수 있습니다.
그리고 우리는 무한으로 할 수 있습니다 값, 특히 무한리스트에서.
그것은을 입력하는 것은 매우 쉽다 하스켈 무한 목록입니다.
당신은 아래의 구문을 사용할 수 있습니다 여기, 당신이 1-3를 참조하는 경우,
3 1 점의 점을 제거하고, 그 무한 목록
모든 자연수의 확장 지금까지 당신이 상상할 수로.
>> 내가 소개 할 바로 주름의 개념입니다.
그리고 또, 용도 이 세미나는하지의
하스켈에서 주름에 대해 배울 수 또는 고차 함수.
하지만 난 그냥 그것을 소개하고 싶습니다 얼마나 이상한의 정확한 감각을 줄
하스켈이며 얼마나 강력한 그것입니다.
특히, 우리는 이따가거야 우리가 다른 드럼 파트 이렇게하면
우리는 목록을 조작 할거야 숫자들은 서로에 그들을 접는.
이를 위해, 우리는거야 지도와 주름을 사용합니다.
>> 바로 연관이있다 이 하나의 권리 인 배
here-- 1을 뺀 수량, (2) 마이너스 수량, 3 마이너스 0.
그리고 구문 배, 당신은 배를 제공
베이스 값하고 operation-- 이 경우, 추가 또는 감산에.
나는 두 경우 모두를 표시했습니다.
그리고 축적이있다 그 전체리스트를 축적,
그 운영자 플러스를 적용하거나 뺀 후이를 누적.
가 호출 된 경우 그래서이 짓이야있을 것입니다 배 연구 플러스 0으로, 0부터 시작
우리는 모든 합계 것 그 목록에있는 번호.
그리고는 1-3 목록입니다.
코너 해리스 : 그래서 또 다른를 넣어 방법은 배 R은 세 개의 인수를 취합니다.
기능이있다 그 자체는 두 개의 인수를,
다음 선발 값이있다, 및 값의 목록이있다.
그리고 당신이 할 당신이 걸릴 것입니다 스타터 값, 첫 번째 값,
함수에 넣어.
당신은 무엇을 어떻게해야합니까 즉, 공급을 그
의 함수로 두 번째 값, 당신이 밖으로 무엇을 얻을,
그 걸릴로 그 공급 세 번째 값의 기능.
그리고 당신은 아래로 갈 경우 이 모든 목록이 방법으로,
당신은 결국받을거야 의 일부 특이 값
만약 시작했는지의 동일한 유형의 함께 아웃과 동일한 유형의
다음 목록에있는 것들, 그리고 그 배 R.의 반환 결과입니다
스티븐 KREWSON : 특히 그래서, 이러한 고차 함수이며,
그들은 서로를 복용하고 있기 때문에 인수 중 하나로서 기능.
>> 코너 해리스 : 네.
당신은 어떤 다른 사람을 사용했다면 languages​​-- 내가 R을 알고, [들림]
언어는 감소라는이 있습니다.
당신은 유사한 기능이있을 수 있습니다 다른 언어로, 방금 전화
다른 것들.
>> 스티븐 KREWSON : 그리고 무엇 배 연구에 대한 좋은 데요
이 경우에 그 배입니다 R은 무한리스트로 작업 할 수 있습니다.
이 바닥이 P5 그래서 노트를 생성하고 그
대한 스텝 시퀀서에 켜져 일부 드럼 부, 제 드럼 부,
어쩌면 그것은 콩가의 드럼이나 뭐.
그리고 이것은 의도적 인 이 글을 쓰는의 둔각 방법,
하지만 때문에, 재미 그것은 많이 보여줍니다
하스켈과 Euterpea에 대한 것들.
>> 그래서이 colon-- 대장의 R은 배 물건을 밀어 단지 운영자
함께 빈에서 호출 list--에 그냥 빈 괄호입니다 목록.
그리고 나는 그 전화 해요 이 무한 목록.
이것은 실제로 두 개의 목록입니다 여기까지 함께했다.
목록 1 쉼표 6 점 도트는 1, 6, 11, 16이다.
그냥 그래서 Haskell-- 몇 자, 당신
전체를 생성 할 수 있습니다 숫자의 순서
다섯 숫자는 떨어져 그 무한대로 스트레칭.
그리고 그 앞에 추가 이 짧은 작은 list--
3, 8, 21-- 당신을 보여 어떻게 당신이 목록을 연결할 수 있습니다.
>> 그리고 나는 그 자체에 접혀했습니다.
그리고 이것은 단지의 친절 끝 신원 동작하지만, 무한이다.
그리고, R은 그렇게 할 수 배 그것 때문에 게으르게 상기와 같이 평가한다.
우리는 1, 2, 3이있는 경우, 우리는 할 수 단지의 전체 나머지 부분을 괄호.
그것은 작동하지 않습니다 마이너스 또는 플러스,하지만
이 대장에 대해 작동합니다 목록에있는 신원 작업.
>> 그래서 우리는 어떻게 실제적으로 사용 않는 경우 우리 사물의 무한히 긴 목록을 가지고?
음, 하스켈 제공 functions-- 많은
그리고 이들에 더 많은 봐 가지고 같은 당신의 자신의 time--
이는 확인, 우리가있어 말한다 이 무한 목록을 생성,
하지만 우리는 좀 걸릴거야 그것의 그리고이 case--의 수
우리는 나중에이를 볼 수 있습니다 우리의 드럼 머신 code--
GM은 글로벌 단지 어떤 종류 단계의 수에 대한 변수
시퀀서에.
롤의 컴퓨터에서 나는 즉 일반적으로 16, 당신을 보여 주었다
하지만 난 (32)을 구현했습니다.
정말 중요하지 않습니다.
>> 하스켈은 순수한, 그래서 강한있다 코너가 언급 정적 입력합니다.
그래서 기능은 sense--에서 수학
그들은 더 많은 수학있어 그들은 보장하고 있다는
액세스 또는 어떤 종류를 변경하지하도록 또는 가변하는 입력 또는 출력을 수행합니다.
이 기능을 가지고 있다면, 그것은 결정적이다.
그것은 항상 같은를 반환합니다 프로그램의 상태 값
또는 동일하게 남아있다.
모나드 예외는 물론있다 여기에, 그러나 그것은 우리의 범위를 벗어입니다.
>> 코너 해리스 : 네.
이것은 무엇을 의미하지만, 거기 있는 몇 가지 중요한 [들림]
이것의 결과입니다.
하나는 아주 쉽다이다 하스켈 프로그램을 병렬화.
만약 당신이 있기 때문에, 해당하는 기능을 말한다
경우, 만 값을 작동해야 당신은 그 기능이 항상 것입니다 알고
같은 값의 경우를 알려주지 당신은 어떤 value--에 공급
당신의 f를, [들림] F (1) 인 경우에 2, 다음 (F)의 3 또는 1의 F whatnot--
쓰는하지 않을 파일 또는 무언가를
즉, F2의 값을 변경한다.
당신은이 기능을 분할 할 수 있습니다 만 다른 기계 또는 만
다른 스레드 또는 무엇 이건, 다시 모든 응답을 얻을,
모든 반환 값을 얻을 다시 한 다음 그것 뿐이다.
일을 병렬화 할 수 그래서 매우 편리합니다.
>> 단점은 입력 출력 특히
타입 시스템에 적합 매우 복잡한 방법으로.
우리는 지금 그 권리에 가서,하지만하지 않습니다 일부 자원 살펴 보시기 바랍니다
온라인 당신은 그것에 대해 배우고 싶은 경우에.
>> 스티븐 KREWSON : 그래서 입력 classes--이
유형의 전 ... - 클래스 해결하기 위해 발명되었다
연산자 오버로딩의 문제.
그래서 우리는 평등을하고 싶어 가지 유형이 다른.
물론, 우리는 동행입니다 생각할 수 숫자 유형의 평등
에 대해 생각하는 것은 매우 간단하지만, 무엇 목록 평등에 대한?
평등에 대한 어떤 다리 트리 데이터 구조?
그리고이 모든 것이 가능하다 하스켈 타입 클래스의 때문이다.
>> 그래서 당신은 특정 데이터 유형 선택 -을 정의하는 경우 여기에서, 이러한 음악적 피치이다.
우리는 마침내 있어요 일부 컴퓨터 음악.
그래서 우리는 C, C 날카로운있다, 등 등.
그들은 한 무리에 속하는 다른 종류의 클래스.
EQ-- 그들은 EQ 형식의 클래스에 속한다.
즉, 그들이 지원 수단 평등 작업.
그래서 당신은 하나의 여부를 평가할 수 있습니다 음악 프리미티브의 순서
다른 하나와 동일하다.
>> 그들은 순서 클래스에 속한다.
그 순서는 다음에 거기에 의미합니다.
D는 C. C 날카로운 후 제공 뿐만 아니라 C 후에 온다.
그들은 클래스에 속하는 그들이 할 수있는 의미, 표시
콘솔이나 단말기에 출력 될 수있다.
그들은에 속하는 클래스, 열거하는
즉, 비록 이러한 문자입니다,
그들은 기본 숫자를 0에서 시작하는 표현
그리고 단을 통해 오프 것 많은 일들이있어, 20 정도,
아마 30 또는 40.
>> 코너 해리스 : 그리고 때 우리는 데이터 형식이
즉, 해당 키워드와 derives-- "deriving--"특정 유형의 클래스,
그것은 컴파일러가 시도된다는 것을 의미합니다 자동으로 뭔가를 구성합니다.
그래서 아마도 당신이 원하는 것 다른 품질을 정의합니다.
당신은 날카로운 C를 정의 할 수 있습니다 예를 들어, D 평면과 동일있다.
이 구성에 여기에, 나는 C 날카로운 생각하지 않습니다
와 D의 평면은, 때문에 동일 할 것이다 컴파일러 자동 것
모든 다른 가능한 값을 말한다 다른 모든 구별된다.
>> 그래서 오버라이드 (override) 할 수있다 기본 구현
이들 클래스의 타입.
또, 참조하는 경우를 보면 당신은 그것에 대해 배우고 싶어요.
스티븐 KREWSON : 그리고 여기에, 실제로,이거야
우리가 나중에 코딩 할 때 도움이 될.
우리는 중위 연산자의 일부를 볼 순차적 컴포지션,
병렬 구성 등 앞으로 이러한 흑자와 등호
콜론으로 둘러싸여 있습니다.
그것은 우리가 서로 다른 플레이 할 수 있음을 의미 음악 프리미티브 하나씩.
즉, 순차적 인 구성이다.
>> 아니면 우리는 그들을 재생할 수 있습니다 동시에 평행.
그래서 뮤지컬 값을 가질 수 있습니다, 다음이, 동일 및 콜론
병렬 구성 연산자를 삽입 사 와 코드의 일종으로 재생할.
그리고 우리가 사용하는거야 이 때 우리는 결합
우리의 드럼 파트 우리 작은 프레 르 자크의 노래
이 두 시퀀스를 재생 동시에 음악 값.
>> is-- 카레를 무두질하는 것은 마지막 하스켈 카레, 이름있는 사람
하스켈 이미지는 이름을 따서입니다.
그리고 이것은 우리를 수 우리가있어 좋은 우아함
모든 다른 쓰기 기능 또는 우리가있어 필터
우리의 목록을 통해 매핑 될 것이다.
두 가지의 기능 x와 y--의 f를 arguments--
로 표현 될 수있다 X의 F는 Y에 적용.
그래서의 함수이다 반환 하나의 인수
하나의 인수의 또 다른 기능.
그래서 이것은 우리가지도를 할 수 있음을 의미 Y의 목록을 통해 X의 함수 f.
코너 해리스 : 할 이러한 예를 제공?
스티븐 KREWSON : 네.
나는 여기에서 예를 우리가 쓸 것 몇 가지.
그래서 복제 2-- 아니라, 소요됩니다 복제
얼마나 많은 값 중 하나 인, 시간은 무언가를 복제하려면,
다음은 value--를 취할 것 일반적으로 목록 또는 뭔가.
그래서 여기, 우리는 매핑있어 또 다른리스트를 2를 복제합니다.
>> 우리가 2 복제지도 그래서 경우, 우리가 2를 복제하는 경우 적용
이 list--의 첫 번째 요소와 이 뮤지컬 phrases--의 목록입니다
두 가지를 생성합니다 "당신은 sleeping--" 그래서 당신이 자고, 당신은 자고.
그래서 지금 우리는 두 가지가 있습니다.
그러나 복제는 두 소요 인수, 그러나 우리가 있기 때문에
매핑 다음 무두질과, 우리는 복제 2를 나타낼 수 있습니다
의 함수로서 반환 된 것으로 하나 인 공방은 두​​ 번 복제.
그리고 우리는 서로에 그 적용하고 문구의이리스트의 요소입니다.
>> 그리고 CONCAT는 하스켈입니다 목록을 평탄화 작업.
복제 2 것이기 때문에 리스트의리스트를 생성한다.
그리고 이것은이 중간 형태가 여기에있다.
그래서 우리는 CONCAT 수 있습니다 또는 두 배를 평평.
코너 해리스 : 단순한 커링의 예,
당신은 그때 엔하려는 경우 f는 단지 상상 두 소요 곱셈 기능
인수 및 그들의 제품을 반환합니다.
당신이 F 4 5가 있다면, 그것은 20이다.
그러나 당신은이 생각할 수 also-- 당신은 함수 f 4가
즉, 인수 및 반환한다 이 단지 인 공방 네 번
부분 응용하는 한 인수 4.
그리고 당신은 (4)의 f를 공급하는 경우 5, 그것은 당신에게 20를 줄 것이다.
그리고 그것은 간단합니다 커링의 예.
보통 교과서들 중 하나입니다.
>> 스티븐 KREWSON : 람다 식 또는 익명 함수
다른 하스켈 특징이다.
우리를 채찍질 할 필요가 있다면 작은 기능의 삶의 복제,
하지만에없는 말 표준 라이브러리,
우리는 구문을 사용할 수 있습니다 다음과 유사한.
그리고 우리는이를 통해 산들 바람합니다.
당신이에서 많이 볼 것 한 가지 드럼 머신 우리는 호출을하고있다
뭔가라는 이는 같은 전에, 필터링,
함수의 맵핑은 목록을 통해, 그것은하지만입니다
부울 함수의 매핑입니다.
>> 그래서 우리는 여기에 예를 의 익명
정의 부울 기능이 단지 몇 값을합니다.
이것은 엄밀히 말하면 아니다 익명 함수.
그러나 그것은과 정의의 간결함을 위해 그 구문,
이 단지 X 모듈을 필요 N--
코너 해리스 : 네.
따라서 F는의 함수이고 두 개의 인수 n 및 p
그 자체가되는 함수를 반환 하나의 인수의 함수, 즉 X.
스티븐 KREWSON : I 상술 한 중위 연산자.
중위 연산자는 무엇입니까?
음, 중위 연산자이다 우리가 작업을 나타내는 일반적인 방법으로,
mathematics-- 2 플러스, 말 대신 연산자의 2 플러스
다음 두 개의 인수 2, 2.
코너 해리스는 : 그것은이라고 인 역 폴란드 표기법
용어는 내가 너희 중에 누구든지 알 것이다 의심한다.
>> 스티븐 KREWSON : 오른쪽.
광택 또는 접두어 표기법을 역.
하지만 하스켈에 결정 중위 연산자를 사용합니다.
그래서 이들 중 일부 사용자 지정 사람이
대해 정의 된 하스켈 Euterpea를, dscl.
그래서이 순차적으로 구성했다.
이것은 병렬 조성물이고, 이것을 병렬 구성을 절단했다.
그리고 우리는 것이 필요합니다 우리의 드럼 머신과,
우리는 마지막으로 사용하게되므로 거기에 그 작은 튜플 연산자
따라서 드럼 머신을 재생합니다 우리의 프레 르 자크 곡.
그리고 우리의 드럼 머신입니다 무한 될 것이다.
그냥 영원히한다.
그러나 프레 르 자크의 노래는하지 않습니다.
그것은 그 길이 아니다.
단지 몇 바있다.
그래서 우리는 같이 드럼 머신을 중지해야합니다 짧은 뮤지컬 값은 오는 즉시로
끝.
그리고 그 infixed 연산자 그 슈퍼 도움이됩니다.
>> 추천하고 중위 표기 이것은 종류의 좋은
말 때문에 기능 등을 가지고 인용, 이는 정수 나누기를 제공합니다
뭔가에 의해 X의 else-- 죄송합니다, 즉 A와 B를해야합니다.
당신은 B의 견적으로 작성할 수 있습니다.
만약 put-- 원소한다면 이것의 또 다른 예.
일부 목록에서 X 요소, 당신은 넣어 경우 그것은 역 따옴표에, 당신은 그것을 사용할 수 있습니다.
그것은 상징하지 비록 플러스 마이너스 또는 배 등에
당신의 이름을 사용하여 역 따옴표에 그런 기능
꽤 멋진 중위 연산자로.
코너 해리스 : 다시, 이것은이다 모든 단지 문법 설탕, 정말.
그것은 언어의 핵심에 영향을주지 않습니다.
>> 스티븐 KREWSON : 그래서 우리는 여기를 참조하십시오 우리의 프레 르 자크 노래의 마지막 구절,
나는 약간 작은 코드를 연주하거나 병렬 조성물을 사용하여 분
운영자.
이것은 일부를 말하는 또 다른 방법입니다 우리가 말을했습니다 무엇.
그래서 당신은 기능을 매핑 할 수 있습니다 목록을 통해 하나의 인수의.
코너 해리스 : 다시, 참조 Haskell-- 입문 교과서
거기에이 모든 것을해야합니다.
>> 스티븐 KREWSON : 그래서 여기에 꽤있어 스텝 시퀀서의 키 라인
우리는 사용 살펴 보겠습니다 지능형리스트.
그리고 우리는 여기에 해당 요소가된다 참조 다시 따옴표에 고정 된 연산자에.
X는리스트의 요소한다면 X의의는, 우리는 퍼크 함수를 호출합니다.
그래서 퍼크는 타악기 기능입니다.
그것은의 일부 값 P 소요 모두의 경계 세트의 일부
다른 타악기 소리 우리는 이전 슬라이드에서 본 것을,
후 그 제공 분 음표의 기간입니다.
그렇지 않으면 그것을 QNR를 제공하고, QNR 다만 분 음표 휴식입니다.
>> 그래서이 좋은 뭔가를 건물입니다.
우리는 요소들의리스트를 가지고 있고 하나의 일부 목록을 통해 우리는거야 루프
우리 스텝 시퀀서의 최대 값.
그리고 우리는 특정 난에에있을 때 최대 값에 하나의 목록,
그 난이 부재의이면 이 함수에서 만든 세트,
물론, 우리는 전원을 켜 타악기 참고로.
그렇지 않으면, 우리는 단지 휴식을 재생하는 이다는 우리가 침묵, 대답.
그리고 우리는 여기에서 볼에 그 수 이 목록의 이해 구문,
X이에 의해 채워집니다 목록을 구축
시퀀서의 글로벌 크기.
코너 해리스 : 네.
에 대한 기본 구문 지능형리스트입니다
관련된 브래킷, 값 일부 변수, 바,
변수의 가능한 값 자신은 브래킷을 마감했다.
그리고 당신은 설정 빌더 표기법을 수행 한 경우 수학 클래스의 모든 종류의,
당신은 이러한 2N에 설정 한 즉, n은 나에 N Z입니다.
이 표기법 누군지 모르겠지만, 유사 암시하기위한 것입니다
그 수학적 표기.
스티븐 KREWSON : 그리고 당신은 할 수 있습니다 여러 조건을 적용
목록에 여러 필터 아주 좋은 이해.
대수 types-- 우리 여기에 오래 남아되지 않습니다.
좋은 개념에서가 아니다 하스켈 또는 좋은, 명백한 개념
하는 방법을 말하자면, 기본의 함수 또는 뭔가 매개 변수입니다.
파이썬에서,이 매우 쉽습니다.
에 equals와 당신은 말할 수 함수의 선언,
기본 값 케이스 없음 제공되지 않습니다.
>> 하스켈, 당신은 아마 수 어쩌면을 입력 아마 사용
어느 하나 아무것도지지 않습니다 또는 형의 값 단지.
그래서 우리는 드럼 머신이 악용 우리는 선택 볼륨을 제공 할 수 있도록
드럼 부의 각 파라미터.
그것은 우리에게 EQ를 갖는 방법을 제공합니다 그래서 또는 특정 채널의 볼륨.
>> 코너 해리스 :에 다른 하스켈 예,
당신은 아마에 사용되는 볼 수 있습니다 실패 할 수 있습니다 기능.
이 공통의 하나입니다.
>> 스티븐 KREWSON : 그리고 당신은 제공 할 수 있습니다 기본적으로 오류 메시지의 일종.
그리고 그 때 특히 편리합니다 당신은 하스켈의 I / O를 수행하고 있습니다.
그 트릭이 될 수 있습니다.
코너 해리스 : 또는 용 비슷한 예, 생각
부문을 포함하는 기능 0이 될 수있는 매개 변수.
그리고 그 기능을 할 수 어쩌면 어떤 돌아갑니다.
0에 의해 구분 없음 존재하지 않는 경우는 그래서, 그냥 무엇이든 반환합니다.
그리고 부문에 의해 경우가있다 0, 그것은 아무 것도 반환하지 않습니다
에러를 시그널링하는 방법으로.
하나 결과 때문에 하스켈의 매우 엄격한 입력
더 real--가 없습니다 것입니다 예외는, 기본적으로, 어색하다
오류 처리는 어색하다.
그리고 이것은 매우 하나입니다 그것을하는 일반적인 방법.
>> 스티븐 KREWSON : 그래서 지금 우리가 얻을 다른 압도적 인 일에
하스켈에 대해 어떤 패턴입니다 매칭 및 기능을 정의.
나는 마지막 슬라이드에서 당신을 보여 주었다 스텝 시퀀스의 선언
아마 값을했다 기능, 다음 INT, 다음 정수의 목록
다음의 순서를 반환 음악 값이 주석
피치와 볼륨 모두.
>> 그래서이 세 가지 인자가 될 수 있습니다 다음과 같은 방법으로 일치하는 패턴.
그리고 우리는 항상을 확인하려면 먼저 기본 케이스 또는 종료 케이스를 않습니다.
그리고이 밑줄 바로 해석 될 수있다
거기에 어떤 값을 의미합니다.
우리는 순서 단계로 전화를받을 경우에 따라서 일부 값으로, 다른 값,
다음 빈리스트, 우리는 무엇을 할 반환 단지 침묵, 나머지는 0이다.
>> 그리고 대신 그 빈 목록 또는 0 인,
우리가이기 때문에 그것은, 나머지는 0이다 음악 유형을 다루는,
그리고 음악의 빈 목록 형은없는 시간의 휴식입니다.
그것은 어떤 음악 없습니다.
우리는 단계를 얻을 수 있다면 우리는 볼 볼륨 인수에 대해 v를 순서
주의 악기에 대한 P 인수, 다음의 X의 목록을 표시합니다.
>> 그 다음 우리는 몇 가지 물건을한다.
특히, 적용 이 목록의 이해,
우리는 몇 가지를 수행 아마 값에 대한 작업
그래서 숫자 값으로 전원을 켭니다 그러므로 열거되고 사용될 수있다
악기를 선택합니다.
다시이 조금이고 비트 의도적으로 inconcise
다만 모든 이상한 것들을 보여 당신은 당신으로 하스켈에서 할 수있는
자신의 시간에 그것을 좀 봐.
>> 괜찮아.
그래서 우리는 마침내에 있어요 우리가 무엇으로 설정 수행
이는 일부 컴퓨터 음악을 만들 수 있습니다.
그래서 우리는 시도거야 프레 르 자크의 노래를합니다.
그래서 얼마나 많은있다 프레 르 자크의 문구?
네.
큰.
그리고 어떤 좋은 것은이다 그들은 모두 반복하고
2 개인 회 동량.
>> 그래서 우리는 네 개의 구가 각각 두 번 반복.
특히, 그들은 원형에있어.
그리고, 많은있다 여러 가지 방법이 구현
이렇게 재미있을 수있는 라운드.
나는 그것을 한 적이 꽤 여기에 간단한 방법,
이는 단지 라인을 construct--하는 것입니다 함수 값의 음악 목록을 얻어
순차적 인 구성으로 바뀝니다 그 연속 조성물을 도포하여
운영자.
>> 그리고 나는 다른 부분을 지연 하여 그들에게 휴식과 함께 시작합니다.
그래서 두 조치의 나머지 부분과 시작, 다음 4 소절의 휴식,
여섯의 후 휴식 측정 한 다음 둥근
우리 모두가이 노래를 알고, 작동합니다.
우리가 보는 두 개의 주석 또는 음악 값 수정
즉,이 순서에 포함 음악 요소의 배열.
우리는 추가 볼륨이 있습니다.
이것은 주석을 함수 특정 볼륨과 음악.
이 좋은 예입니다 미디 신호 실행의
의 0-127, 일곱 비트 수행 될 수있는 정보.
>> 그리고 then-- 우리는 매우를 보았다 간략하지만 일반 MIDI
모든 다른 악기의 목록입니다.
그리고 이들의 전체 많이하지 않습니다.
당신이 디지털 오디오 워크 스테이션을 사용하는 경우, 을 Ableton 라이브 또는 Pro Tools의 같은,
믿을 수 없을만큼 넓은 범위가있다 신디사이저와 VST 악기.
하지만 MIDI 표준 만 몇 가지, 또는 수십 있습니다.
그리고 그들 중 일부는 재미있다.
우리가 연주하면 나는 그것이 재미있을 것이라고 생각 악기 MIDI 악기
헬리콥터, 다음 라운드를 통해 다음 방법,
우리는 다음의 패드 신디사이저를했다 이 진부 리드 구형파 신디사이저,
다음, 습지 음성있는 내 나쁜 MIDI에 약간 불명료
신디사이저,하지만 확인을 클릭합니다.
>> 그리고 우리는이하자를 참조하십시오 그리고 하스켈에서 구문,
그리고, 우리는 연주 이러한 모든 부분
병렬 구성 연산자.
그리고 우리는 아마이 중 일부를 보여줄 수 있습니다.
여기에 코드입니다.
그리고 당신은 C에서 볼 수있을 것 목구멍 청소 및 설정의 많은
당신 앞에 테이블 코드 이 같은 음악을 만들 수 있습니다.
또는 다른 프로그래밍 언어, 당신은 아마 좋겠
어떤 종류의 상호 작용해야 라이브러리 나 API와 모든 설정,
그리고 당신은 정리해야 할 것이다.
그러나 여기 하스켈은, 나는 한 번 생각 당신은 믿을 수 없을만큼, 그것의 묘리를 터득
읽고 매우 표현.
그래서 구현이있다 프레 르 자크의.
괜찮아.
이제 우리는 타악기를 추가하려면, 이는 약간 지저분이다.
그럼 슬라이드를 살펴 보자.
그래서 큰 생각하는 것입니다 목록 또는 부품의 무리.
그 롤의 컴퓨터에서,이 아마 여덟에 대해 일반적이었다
10 리듬 또는 타악기 부분.
그리고 기술의 무리를 사용합니다.
그리고 우리는 these-- 사용에 대해 얘기했습니다 주름 필터, 람다 함수
값을 생성하기 목록 상에 매핑 일부 범위 1에서 R, R은 16
또는 시퀀서에서 32 단계.
>> 그리고 그 목록의 값이있을 경우 다음 우리는 시퀀서를 통해 실행중인로서,
이상 그것을 통해 실행 이상은 그 노트 온,
그 샘플이 트리거됩니다.
여기에 모든 다른 이상한 방법이 있습니다 나는 노트를 생성하기 위해 함께했다.
자신의 반 합계를보십시오.
그것은 멋진 소리를합니다.
시간은 우리는이를 통해 갈거야, 허용.
하지만 지금, 나는 추측 우리는 우리가 무엇을 데모한다.
의이 확인 간다를 바란다.
>> 그래서이 GHCI이다.
그리고 우리는 파일을로드 할 수 있습니다 나는라고 song.lhs이,
이는 내가 당신을 보여 주었다 파일입니다.
큰 확인.
코너는 앞서 말했듯이, 그것은 컴파일, 그것은 검사 유형,
그래서 쉽게 많이 호흡 할 수 있습니다.
그것은 나에 날려 않을거야.
>> 나는 당신에게 유용한 뭔가를 보여주고 싶은 않았다.
당신은 저를 볼 수 있습니다 로드 모듈 (50)을 불렀다.
당신은 그 모듈을 검색 할 수 있습니다.
그리고 이것은 매우 좋은 doing-- 대한 아마 무슨
하스켈이 아닌 당신이하고있는 소프트웨어 개발이라는
하지만 당신은 많은 작업을 수행 할 수 있습니다 자신의 재미 물건.
그리고 워크 플로우는 정말 좋은 다른 많은 언어에 비해
당신은 정말 볼 수 있기 때문에 무슨 일이 일어나고 있는지 읽을 수있는 방법입니다.
그래서 우리는 우리가 가지고있는 것을 볼 수 이 모든 문구, 어떤
음악 피치의 목록이 있고, 우리 더 큰 무언가로 다음을 구축,
이는 음악 곡.
그것은 음악 장치입니다.
그리고 우리는이 모든 것을 재생할 수 있습니다 함수 호출 놀이 음악.
당신은 여기에 내려 볼 수 있습니다.
어떤 바로 재생됩니다.
>> 내가 이야기하지 않았다 say--한다 어디에나이 달러 기호입니다.
달러 기호는 다른 중위 연산자입니다.
그러나 가장 낮은 우선 순위가 효과적으로 연산자의
에 그 모든 것을 의미합니다 달러 기호의 왼쪽
및 달러 기호의 오른쪽에, 우리는 이전에 평가받을 것입니다.
그래서 다른 같은 종류의의 괄호를 추가하는 방법입니다.
>> 코너 해리스 : 그것은 기본적이다 함수의 합성.
그리고 당신이 경우 잔 마셔요하지 않는 것이 보장 당신은 기능면 또는 중위를 가지고
양쪽에 사업자, 그들은하지 않습니다 가로 질러 연결하고 당신을 줄
예기치 않은 결과.
>> 스티븐 KREWSON : 그래서 우리는 주는거 그를 사용하여, 우리는 호출 할 수 있습니다.
첫째, 우리는 드럼없이 재생할 수 있습니다.
즉, 헬리콥터의 미디 헬기.
>> [음악 재생]
사각 파가있다.
음성 습지.
그리고 당신은 정말이 야생 갈 수 있습니다.
나는 아주 간단 하나를 고른 내가 알고 있기 때문에 내가 뜯어 안
나는 씹을 수있는 것보다 더.
그냥 아주 간단하게 주요 아이디어를 표시합니다.
하지만 내가 좋아하는, 우리가했습니다했다 이 일부 드럼을 추가 할 수있어.
바로이 때문에 조금 꿰 뚫을 수없는,
나는를 사용하지 않은 드럼 파트의 이름,
그들이이기 때문에 나는 them-- 매핑 그 열거 클래스의 일부,
나는 정수로 매핑.
하나는베이스 드럼과 같다.
제로뿐만 아니라입니다.
일곱 높은 모자이다.
그리고 여기 아래에 어디 기능은 좀 더 무작위로 얻을 수
이러한 콩가 드럼 같다.
>> 그래서 당신은 어쩌면 비슷해 생각한다면 드럼 머신을 구현하는 재미있는 방법
매우 질서 사용하는 것입니다 당신의베이스 드럼에 패턴.
그래서 예를 들면, 이상 필터링에 다시주는 모든 것에 목록
이 모듈 04을 촬영하고 1.
그래서 1, 5, 9, 13, 17-- 그래서이 얻을 모든 측정 값의 첫번째 비트이다.
>> 그리고 나서 이는 동일 점은 2 단계에 걸쳐 이동했다.
그래서 엉뚱한를합니다.
그래서이 될 것이다 높은 모자 같은 것을.
그리고 다시, 아래로 여기, 그것은 작은 임의의
우리는 콩가 드럼을하고있는 때문이다.
그리고 나도, 여기에 몇 가지 마라카스를 가지고있다.
>> 그래서, 놀이 드럼 머신을 호출 할 수 있습니다 그러나 그것은 영원히 갈 것입니다,
그것은 위로 잡아 시작될 수 있습니다 시스템 내에서의 모든 메모리를 포함 할 수있다.
그래서이 함수를 호출합니다 우리가 볼 수 있습니다로 음악을 재생
절단 병렬 구성을 사용하여 우리의 작은 프레 르 자크의 노래를 재생합니다
이 이상한 드럼 머신과 함께.
그럼 살펴 보자.
그리고 개선 마십시오 내 모든 드럼 부분의 배열.
나의 전문,하지만 그 일을 재미를 많이했다.
>> [음악 재생]
>> 그래서 물론,이 모든입니다 재미로 좀하지
우리는 변환 할 수없는 경우 점수 그래서 아마 그것을
해석 될 수있다 인간 연기자로.
그래서 난 여기가 실행되지 않습니다.
이미 파일을 생성했습니다.
당신은 거기에 있음을 알 수 점 LilyPond file--이
에 내 SEGUE을 통해 될 것입니다 Connor--과 점 MIDI 파일,
무엇을 도트 PDF 파일, 인 LilyPond는 궁극적으로 생성합니다.
>> 그러나이 그 스크립트, 그리고 나는거야 그들의 도움이 옵션을 실행합니다.
당신은이 일어나 및 실행하는 경우 Euterpea, 당신은 MIDI 파일을 생성 할 수 있습니다.
그리고 미디 파일에서 이 MIDI 2LY 프로그램,
당신은 릴리를 생성 할 수 있습니다 연못 파일, 다음
점수의 PDF를 생성 할 수 있습니다.
그리고 우리는 이것 좀해야합니다.
그래서 코너는 아마 표시됩니다 당신은 어떻게이 더 나은 주석
그러나 이것은 프레 르 자크는 같다 Euterpea 날에 발생.
그냥 C에서 내가 생각해야거야 그것은 실제로의 해킹 무엇인지.
그러나 그것은을위한 파이프 라인이다 당신은 그와 그렇게 할 방법에 대해 설명합니다.
의는 LilyPond에 대한 자세한 내용을 얘기하자.
>> 코너 해리스 : 확인을 보자.
당신은 당신 하스켈 알아 언급 했습니까?
스티븐 KREWSON : 오, 그래.
체크 아웃 당신에게 하스켈 알아보십시오.
그것은 자원입니다.
내가 어떻게 시작 때문이다 학습, 그것은 좋아요.
바보하지 학습.
>> 코너 해리스 : 그래서 온라인입니다.
그래서라는 사람 [들림] learnyouahaskell.com, 공백.
문법 아픈입니다.
스티븐 KREWSON : 그것은 너무, 그림입니다.
코너 해리스 : LilyPond 무엇 그래서인가?
이 선언적 프로그래밍의 음악 조판을위한 언어.
그래서 당신이 할 수있는 declarative-- HTML 같은 것들을 생각,
당신이하지 않은 경우 제 말 HTML 어떻게 웹 브라우저가해야 말하지 않는다
렌더링 페이지는 단계별로.
그냥이 말하는 텍스트 설명입니다
당신이 원하는의 페이지처럼 보이게합니다.
>> 그리고, 그것은 또한 프로그램 즉,이 언어를 컴파일,
또는 실제로 그 다음에 읽고 당신을 위해 조판을 수행,
그리고이 밖으로 뱉어 멋진 찾고 PDF을 기록했다.
또한 PNG 형식 또는 무엇이든을 얻을 수 있습니다.
좋은 방법은 생각하는 이 유추된다
라텍스 일종의 LillyPond 같은 점이다 하지만 평범한 조판합니다.
그래서 그 대신 그렇지 않은 동행입니다 당신은 무엇을보고 WYSIWYG,
당신 말처럼, 무엇을 얻을 피날레, 또는 시벨리우스,
또는 Microsoft Word, 당신은 입력 할 수있는 실시간 실시간 초안 일
그리고 즉시 변경 사항을 참조하십시오.
>> 그것은 텍스트를 기반으로합니다.
당신은 당신을 컴파일해야 별도의 프로그램을 사용하여 점수
나중에 PDF 파일을 얻을.
이것은 조금 작 당신이 인 경우에 사용하기에 편리
직접 작성하려고 당신이있어 및 점수에
컴퓨터를 구성하려고합니다.
그러나 많은있다 그것에 대한 장점.
하나는, 그것은 많은 더 좋은 보여요 LillyPond 실제로 할 수 있기 때문에
할 시간을 제대로 레이아웃 결정,
이 시벨리우스 나 피날레는 달리 그래서 손상된 알고리즘을 만들려면
그들은 디스플레이 할 수 있음 실시간으로 가지.
>> 왜 LilyPond--입니다 컴퓨터 그래픽은 어렵다.
당신은 음악과 함께 아무것도하는 경우 당신은 점수를 기록 할,
당신은 쓰고 싶지 않아 혼자서 모든 것을 알아
그리는 방법부터 시작 직원 및 방법 메모장을 그립니다.
그것은 매우 어렵습니다. 그것은 전에 해본 적이.
당신은 괜찮아요.
>> 당신은 피날레 나 시벨리우스를 사용하려는 경우, 그런 것들에 대한 파일 형식
매우 복잡하고, 당신은 할 수 없습니다 정말 프로그램을 사용합니다.
당신은 피날레와 시벨리우스을 열 수 있습니다 및 파일로 이동, 수출 PDF로 자신,
하지만 당신은 정말 할 수 없습니다 스크립트에서 그를 호출합니다.
LillyPond, 당신은 호출 할 수 있습니다 그 스크립트에서.
당신은 쉽게 반복 할 수있다 라텍스 LillyPond.
내가가는 그 시간이별로 없습니다 지금이 기술로,
하지만 그들은 존재한다.
당신이보고 싶은 경우 LillyPond 책으로,
그것은 함께 제공되는 프로그램 당신의 LillyPond 배포,
그것은 반복하는위한거야 LaTeX의에 LillyPond 조각
당신이 뭔가를 수행하려는 경우 큰 음악학 문서 등
예를 들어 예제와 함께.
그리고 그것은 좋은 기술이다 당신이 어떤 일을하는 경우 생활
음악뿐 아니라 CS50와.
나는 모든 LillyPond를 사용했습니다 내 조성 사업
나는 기본적으로 이후 고등학교 수석.
>> 그래서 여기에 몇 가지 간단한 예입니다.
이것은 기본적으로 대표 난이도의
대부분의 사람들 것 그들이 노력하고 있었다 그것을 직면
간단한 프로젝트에 LilyPond를 사용합니다.
이 첫 번째 시작입니다 바흐의 코랄 전주곡에.
이 아래 하나 발췌 한 것입니다 내 자신의 작품 중 하나에서,
그것은 보여주기 위해 그냥 거기에 [들림] 같은 당신 일
같은 여러 라인을 넣어 직원, 어떻게 가사 undersetting 작동합니다.
가사 언더 아주의 일이다 합창 음악 LilyPond를 사용하기 쉬운.
>> 그리고 다음 몇 가지 더있다 여기에 복잡한 예.
이러한 모든 년 완료 LilyPond 그들은 가능​​한입니다.
첫 번째 발췌에서입니다 [들리지] [들림]에 의해.
그리고이 [들리지]에서 솔로베이스에 대한 조각
[들림]에 의해 플루트, 누가 longtime-- 누구
의 오랜 일원이었다 여기에 음악학과, 나는 생각한다.
나는 그가 떠나는 사라 어디 모르겠어요.
그러나 그는 하버드의 고문이었다 오랫동안 작곡가 협회.
멋진 남자.
그리고 그는 매우 가지고 어떤 음악을 기록 복잡한 표기법이 LillyPond
그럼에도 불구하고 매우 능숙하게 처리 할 수​​ 있습니다.
>> 그러니 당신의 감각을 제공하는 것을 이 물건의 기능은 너무으로 죠
LillyPond의 내부 매우 복잡하다.
그리고 당신은 그것을 사용할 수 있습니다 장시간 포함
꽤 복잡한에 대한 일없이 정말
그들에 대해 많이 알 필요.
그러나 기본 개념에 그입니다 가장 낮은 수준, LillyPonds의 원자
노트입니다.
노트를 포함 컨텍스트라는 목소리.
그래서 음성 콘텍스트 기본적으로 해당
동시 발음 한 줄에.
그리고 상황이 될 수 있습니다 계층 포함
높은 수준의 것들에 그 점수에 직원을 대표
같은 또는 더 큰 그룹 피아노 직원 또는 성가대 직원,
다음 결국 전체 점수 컨텍스트.
그리고 당신은 실제로 포함 할 수 책에서 여러 기록했다.
>> 그리고 모든 상황이있다 첨부 된 조판의 수입니다.
당신은을 통해 보면 문맥의 내용
및 특정 기호 나 인쇄 필요에 따라 심볼의 특정 클래스입니다.
모든 음성 문맥에 따라서, [들림] 노트가있다
기본적으로 기능입니다 조각사 또는 모든 노트를 쓰는 목적
페이지의 오른쪽 부분에 머리.
그리고 갈라진 조각사, 거기에있는 직원에 갈라진 틈을 기록합니다.
그리고 메트로놈이있다 마크 조각사 그
점수 메트로놈 마크를 기록합니다.
이 모든 꽤 맞는 잘 계층에.
그리고 그것은 매우, 매우, 매우있어 사용자 정의, 어떤 당신이 필요로하는
당신은 그런 일을 얻으려면.
>> 그래서 모든 컨텍스트를 다른 속성의 많은
당신은 모든 것을 수정할 수 있습니다 다양한 글꼴 간격에서
사물의 크기에 선택.
당신도하고 싶은 경우 더 복잡한 것,
임베디드 스크립팅 언어가있다.
그들은 체계를 사용하는 LISP의 방언이다.
다음은 아마하지 않습니다 당신에게 아무 의미.
그러나 기본적으로, 계획 다른 기능
프로그래밍 언어, 다소간.
>> 스티븐 KREWSON : 타이입니다.
>> 코너 해리스 : 네.
그것은 좋은 제휴에있어, 나는 가정한다.
그리고 교육 언어로 사용되는, 실제로, 질량 번가 아래로 MIT에서.
그리고 그것은 LillyPond 매우 편리합니다 다양한 기술적 인 이유.
>> 그리고 당신은 간단하게하려면 조건문에 따라 개조하면 되겠 어,
example--에 대한 특정있다 만난 점수의 조건,
에 변경을 레이아웃이나 다음 whatnot--
그 시설이있다.
그들은 복잡한입니다.
그래서 여기 아주 간단한 코드 샘플입니다.
이 다섯 줄을합니다.
기본적으로, 두 직원을 정의하고있다.
그것은 3/4에 있습니다.
첫 번째 직원이 템포 표시가 부착
하지만 그건 사실이야 전체 점수로 이동합니다,
템포 마크 때문에 점수 수준에 있습니다.
메트로놈 마크 조각사 상황에 맞는 점수를 부착된다.
다른 키가 있습니다, [들림] 조각사 때문에
직원 부착되어 있습니다.
당신은 실제로 할 수 있습니다.
내가 쓴 샘플입니다 실제로 C 장조,
하지만 그것은 단지에의 당신은 할 수 있습니다 보여
다른 직원에 다른 키.
그리고 기본 구문은 사용자가 작성하는 것입니다 E, F, G, 무엇으로 이름을 확인합니다.
당신이 임시표를 수행 할 경우, 당신은 IS 또는 ES 접미사.
이것은 네덜란드에서입니다 음악학과 규칙.
>> 그리고 옥타브 도약을 할, 당신은 사용할 필요가 이러한 마크, 쉼표 또는 아포스트로피을 선택합니다.
상대는 의미 당신은 메모를 가지고 무엇이든,
자동으로 plaec 될 이전에 가장 가까운 옥타브.
그리고 당신은 이상을 이동하려면 다섯 번째 또는 more-- 말 fifth--
다음은 [들리지]를 사용합니다.
그러나 그렇지 않으면, 당신은 필요가 없습니다 모든 단일 노트의 옥타브를 지정합니다.
>> 그리고 상대 C, 프라임, 그리고 C는 그냥 중간 C를 지정
베이스 C, 특히 첫 번째 노트.
그럼 당신은 조직이 직원이 이 두 가지 음성이나 음악의 샘플,
당신은 점수가 있습니다.
그리고는 다음과 같습니다.
>> 당신은 시간을하려는 경우 LillyPond의 샘플을 복사
이전에 코드 여기에 아래로 슬라이드하고
LillyPond 자신을 위해 쓸 수 있습니다.
나는 우리가 무언가를 가지고 알고 즉,이처럼 많이 보인다.
그래서 다른 기술이있다 라는 음악 XML은 유지
완전히 다른 사람으로.
XML은 텍스트 데이터 structure-- 내가있다 데이터 말 structure-- 말 안
의 은유지도 정렬.
그리고 그것은 유지하도록 설계 계층 적 데이터를 아주 잘.
HTML은, 예를 들면, XML의 유형이다.
그리고 당신은 XML을하기 때문에 말할 수있는 사람들 가진 모든 각도 브래킷과 각도
브래킷 슬래시 표시 그 쇼 데이터 필드.
>> 나는 코드가없는 음악 XML에서 예.
당신은 스스로를 찾을 수 있습니다.
기본적으로, 이유는 당신은 할 수 있습니다 중간 단계로 XML을 사용하는
우선, 그것의 인 교환 형식
에 대해 기본적으로 내가 말 안 every-- 다른 점수의 모든, 그러나 많은
작가.
당신이 음악을 쓸 경우에 따라서 XML뿐만 아니라 LillyPond 수
이 auxilary의 도움으로 그것을 읽고 프로그램은 LY에 음악 XML을 호출
또한 피날레는 읽을 수 있습니다 그것은, 시벨리우스는 그것을 읽을 수 있습니다.
어떻게 내부 개체에 따라 계층 구조는, 음악을 나타내는 작동
밖으로 쓰기는 더 쉬울 수 있습니다 LillyPond보다 음악을 XML로
그냥 음악 XML에 의존 LY로 변환을 수행합니다.
>> 나는 [들림] 음악 XML을 가지고 있다고 생각하지 않습니다.
스티븐 KREWSON : 그것은하지 않습니다.
누군가는하지만, 그것은 노력하고 있습니다.
>> 코너 해리스 : OK.
Euterpea는이 없습니다 아직 음악 XML 출력 기능.
당신은 최종 프로젝트 아이디어를 원하는 경우, 어쩌면 사람과 연락
스티븐이 알고있는, 그리고 그들은 당신의 도움을 사용할 수 있습니다.
>> 스티븐 KREWSON : 그 사랑 것입니다.
코너 해리스 : 또한, 기본적으로, 모든 프로그래밍 언어
그는 소금의 가치 이미 XML 라이브러리를 가지고
그래서 당신은 내부적으로 모든 변환 할 수 있습니다 일부 객체로 음악의
XML 라이브러리를 쓸 수 있는지 그 적은 필요에서
내부 구조 변경 어떤 음악은 개체
를 작성하는 것보다 쓰고 싶어 직접 LillyPond에서 것이다.
그럼 그냥 XML과 함께 인쇄 해당 언어로 XML 라이브러리,
그건 보장되는 문법적으로 정확하고 모든 것을,
다음 LillyPond로 변환.
그래서 기술을 당신에게 할 수 있습니다 당신이 뭔가를하고있는 경우에 보면
이 같은.
>> [들림], 다른 auxilarry 기술.
이 기술 작품은 기본적으로 또는 LillyPond에 대한 기술 스튜디오.
그래서 도움말을 제공합니다 템플릿 구문,
다양한 일반에 대한 악기의 조합을 포함한다.
너무보기 분할 화면을 수 있습니다 당신은 하나의 창에서 코드를 가질 수있다
다른 창에서 PDF 및 PDF로 장소를 클릭
관련로 이동합니다 소스 코드의 관광 명소입니다.
당신이 실제로 있다면이 더 유용합니다 쓰기 LillyPond 자신을 파일
당신이 발생하는 경우보다 그 프로그램.
그러나 다시,이야 유용한 무언가가있다.
>> 큰.
또 다른 resources-- 난 그냥거야 매우 빠르게이를 통해 이동합니다.
LillyPond manuals-- LillyPond가있다 웹 사이트에 우수한 설명서를 참조하십시오.
그들은 자습서를 가지고있다.
그들은 구문 참조가 있습니다.
그들은 조각의 수백 여러 작은 것들에 대한
요는 입증 할 필요가 있습니다 다양한 기능을 제공합니다.
당신이 사용하고자하는 경우 스크립트 언어
또는 더 광범위하게 사용자 지정하고있다
내부는 해당 URL에서 참조합니다.
음악 XML을 사용하려는 경우, 거기에 해당 URL, musicxml.com/tutorial.
>> 그리고 당신은 계획을 배울 필요가있는 경우 당신은 실제로 사용하려는 때문에
LillyPond에서 스크립트 시설, 다음 [들림]라는있다
구조적 해석 컴퓨터 프로그램,
이는뿐만 아니라 두 번째입니다 이제까지 written-- 큰 CS 교과서
당신이 알고 싶다면 나중에 나를 찾을 나는 가장 큰 하나 is--에게 어떻게 생각하는지
그러나 또한 매우 좋다 적절한 언어 소개.
당신은보다 더 필요하지 않습니다 처음 몇 섹션.
>> 그리고 그것 뿐이다.
질문?
>> 학생 : 나는 다운로드 할 수 있습니다 생성 된 프레 르 자크
그래서 난 내 iPod에 넣어 수 있습니까?
>> 스티븐 KREWSON : 글쎄, 당신은 쓸 수 있습니다 Euterpea의 일부 WAV 파일에 연결할 수 있습니다.
그리고 당신은 코드가 있습니다.
그것은 GitHub의에 있습니다.
당신의 자신의 변화를 확인 CS50 하이브 마음으로 프레 르 자크.
그것은 좋은 것입니다.
코너 해리스 : 다른 사람?
스티븐 KREWSON : 우리가 필요로하는 너무 더 나은베이스 드럼.
정말 나쁘다.
>> 학생 : Euterpea뿐만 아니라이 구성의 측면,하지만 signal--
스티븐 KREWSON : 예.
사실, 작업 I 때 내가 Euterpea에서 한
이 항아리가 존재했다 예일 대학에서 과정을 졸업하는
그건 ... 소리 합성에 있던 사용합니다.
그래서 거기에 정말 화살표를 사용하여 좋은 방법
그리고 우리가 본 표기법의 일부 신호를 함께 구성하는 기능.
가장 특히, 저음에서 그들의 단순한 사인파이다.
하지만 당신은 그 구도를 시작하는 경우 이상한 프로그래밍 방식으로,
당신은 미친 소리를 얻을 수 있습니다 이상한 폭포 같은 효과.
당신은 매우 견실 만들 수 있습니다 변조의 많은 소리.
>> 나는 세부에 프로젝트를했다 이다 합성,
어딘가에 FM 샘플링 사이.
당신은 아주 작은 소요 작은 샘플, 다음
어떤 종류의와 조합 변조기와 풍부한 사운드를 구축 할 수 있습니다.
우리는 또한, 물리적 모델링을했다 물리학에 대해 생각하려고
와 같은의 심리학 트럼펫, 그리고 방법에 대해 생각
사운드가 ​​수신 거부한다 트럼펫의 종
및 음향 방 및 모델링
기본 발진기와 그.
코너 해리스 : 정말 고마워요.
와줘서 고마워.
그리고 나는 항상 기꺼이 email--으로 질문을
connorharris@college.harvard.edu.
>> 스티븐 KREWSON : 네. stephen.krewson@yale.edu.
시원한.