Unknown - haskell-notes

Здесь есть возможность читать онлайн «Unknown - haskell-notes» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на английском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

haskell-notes: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «haskell-notes»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

haskell-notes — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «haskell-notes», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

часто в сравнении с высотой и длительностью, поэтому для обозначения громкости введены специальные

символы, которые пишутся под нотным станом, только когда громкость изменяется.

Из этого обзора мы поняли, что единицей музыкальной записи является нота, она состоит из обозначения

длительности, высоты и громкости. Высота в свою очередь состоит из обозначения октавы и ступени лада.

Теперь давайте посмотрим крупным планом на протокол midi.

Протокол midi

Протокол midi появился в ответ на бурное развитие синтезаторов. Каждый из синтезаторов предлагал

свои тембры, при этом люди задумались, а нужна ли синтезатору клавиатура? Вопрос кажется абсурдным,

если мы думаем об одном синтезаторе, но представьте, что у вас их десять, в каждом свой чем-то особенный

тембр. При этом нам нужно десять разных тембров, но мы вынужденны таскать за собой десять примерно

одинаковых клавиатур. Для того чтобы отделить тембр от управления (нажатия на клавиши игроком) был

придуман протокол midi. Протокол midi описывает специфическую для нажатия на клавиши информацию.

Производители тембров или генераторов тона, могут научить генератор тона понимать midi. При этом мы

можем сделать отдельную клавиатуру, которая не имеет собственного генератора тона, но умеет посылать

сообщения протокола midi, так мы сможем управлять десятью генераторами тона от разных производителей

с помощью одной клавиатуры. Такие клавиатуры называют midi-клавиатурами.

Познакомимся с терминологией midi. Протокол midi рассчитан на управление синтезаторами в режиме

реального времени. Можно сказать, что midi-файл – это история концерта или выступления, низкоуровневая

нотная запись. Каждое движение игрока кодируется событием. Например нажатие на клавишу, отпускание

клавиши, сила давления на клавишу в определённый момент времени, нажатие педали, поворот реле или

смена тэмбра.

Протокол midi изначально задумывался как расширяемый протокол. Каждый производитель тембров

имеет возможность добавить какие-то особенные настройки. При этом те сообщения, которые данный ге-

нератор тона не понимает просто игнорируются. Наш секвенсор будет понимать такие события как нажатие

на клавишу и отпускание клавиши. Также у нас будут разные инструменты.

Установим библиотеку HCodecsс Hackage:

cabal install HCodecs

Теперь заглянем на страницу документации этого пакета (на сайте Hackage), нас интересует модуль

Codec.Midi, ведь мы хотим создавать именно midi-файлы. Здесь мы видим описание протокола midi, за-

кодированное в типах. Посмотрим на тип Message, он описывает midi-сообщения. В первую очередь нас ин-

тересуют конструкторы:

NoteOn{

channel

:: !Channel,

key

:: !Key,

velocity :: !Velocity}

NoteOff

{

channel

:: !Channel,

key

:: !Key,

velocity :: !Velocity}

Восклицательные знаки перед типами означают взрывные шаблоны, о которых мы говорили в главах о

ленивых вычислениях. Конструктор NoteOnобозначает нажатие клавиши на канале Channelс высотой Keyи

уровнем громкости Velocity. Конструктор NoteOffобозначает отпускание клавиши, параметры имеют тот

же смысл, что и в случае NoteOn.

Думаю что такое высота и громкость примерно понятно, но что такое канал? Считается, что один испол-

нитель может управлять сразу несколькими генераторами тона. Управление распределяется по каналам. На

каждом канале мы можем управлять отдельным инструментом. Немного о высоте и громкости. Они кодиру-

ются целыми числами из диапазона от 0 до 127. Ноте до первой октавы ( C ) соответствует цифра 60, ноте ля

первой октавы ( A ) соответствует номер 69. Одно число кодирует сразу и октаву и ступень лада.

Может показаться странным параметр Velocityв конструкторе NoteOff, он обозначает отпускание клави-

ши с определённой громкостью. Обычно этот параметр игнорируется и в него записывают среднее значение

64 или начальное значение 0.

Также мы будем играть разными инструментами. Инструменты в протоколе midi называются програм-

мами. Мы можем установить определённый инструмент на данном канале с помощью сообщения:

306 | Глава 21: Музыкальный пример

ProgramChange{

channel :: !Channel,

preset

:: !Preset}

Целое число Presetуказывает на код инструмента. Теперь посмотрим, что же такое midi-файл:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «haskell-notes»

Представляем Вашему вниманию похожие книги на «haskell-notes» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «haskell-notes»

Обсуждение, отзывы о книге «haskell-notes» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x