Музыкальные программы

Создаём секвенсор в Max/Msp.

29.06.2009 от admin



Ну вот, Я и созрел для продолжения серии статей по программам модульного программирования звука. Извиняюсь за долгое молчание перед теми, кто ждал чего-нибудь новенького. К сожалению времени, на сайт катастрофически не хватает, сами понимаете – лето на дворе.

И так в этой статье я расскажу про то, как сделать в Max/Msp простенький секвенсор. В принципе в этой программе можно сделать кучу разных секвенсоров и возможности их ограничиваются только вашей фантазией. Моя статья это всего лишь один из способов. Наш секвенсор будет чем-то напоминать шаговый секвенсор в FL studio, но пока только с одним синтезатором.

Начнём.

1. Темп и количество шагов.

Для изменения темпа и количества шагов в секвенции, существует объект [tempo]. Вставим его в наш патч с аргументами [120 1 16], где 120 - темп, 1 – множитель, 16- кол-во шагов. К первому входу объекта подключим [toggle] для запуска секвенции, ко второму и последнему объекты [number] для изменения темпа и количества шагов. Должно получиться так.

sequencer1 Создаём секвенсор в Max/Msp.

Объект [loadbang] и сообщения {set 120} и {set 16} нужны для того, чтобы при запуске патча значения объектов [number] были не нули, а 120 и 16.

Примечание: В квадратных скобках я буду писать объекты, а в фигурных так называемые сообщения, которые пишутся в Message Box.

2. Секвенсор.

Основой нашего секвенсора, т.е. местом, где мы будем отмечать ноты, будет [matrixctrl] этот объект выглядит, как тетрадь в клетку, где на перекрестии можно ставить точку, а информация о местоположении этой точки будет поступать на выход объекта. Эту информацию мы и будем использовать для изменения высоты тона. Я сделал размер матрицы 16x12, т.е. у меня будет 12 нот и 16 шагов. Для изменения размера матрицы нужно схватить её за правый нижний угол и тянуть до нужного размера, количество строк и столбцов показывается при изменении внизу в панели состояния. Для визуализации положения текущего шага, мы используем объекты [route] и [button]. В [route] впишем аргументы от 0 до 15, что соответствует количеству шагов. Таким образом, при поступлении номера шага с выхода [tempo] на вход [route], на соответствующем выходе [route] появляется сигнал, поступающий на кнопку [button] и она загорается жёлтым цветом. Чтобы загорающая кнопка соответствовала шагу в матрице нужно разместить их точно над перекрестиями матрицы и на вход объекта [matrixctrl] послать команду {getcolumn $1}. Эта команда выводит на правый выход матрицы информацию о положении точки активного столбца. В итоге мы получим следующую картину.

sequencer2 260x300 Создаём секвенсор в Max/Msp.

Если мы поставим точку на нижней строчке первого столбца, то при прохождении первого шага на выходе получим сообщение 000000000001, а если на последнем столбце верхней строчки, то 1000000000000 . Вроде всё нормально, но мне бы хотелось, чтобы было всё наоборот, т.е. первая нота 1000000000000, а последняя 1000000000000, не знаю как вы а я привык к возрастанию тона с низу вверх. Чтобы исправить эту ситуацию я воспользовался объектом [zl] с аргументом rev. Вообще этот объект производит разные действия со списками и имеет огромное количество аргументов (смотрите help), в данном случае аргумент rev переворачивает значение, поступающее на его вход, что мне и требуется.

Далее мне нужно из этой информации номер строки от 1 до 12, для этого я использую всё тот же объект [zl], но уже с аргументом sub 1. Объект с этим аргументом ищет в сообщении цифру 1 и сообщает её положение на левый выход. Например, при сообщении на входе 1000000000000 на выходе будет 1, а если на входе 0000000000001, то на выходе будет 12. Одновременно с этим на правом выходе появится 1. Если на входе нули, то на правом выходе тоже будет ноль.

Теперь давайте посмотрим, что нам это всё даёт.

1. Мы имеем на выходе номер строки, на которой поставлена точка от 1 до 12 при прохождении шага.

2. Мы также имеем сигнал 1 с правого выхода [zl sub 1] если точка есть и 0 если её нет на данном шаге.

Таким образом, второй сигнал можно использовать как note on и note off . А первый как информацию о высоте ноты. Например, если мы примем первую снизу строку матрицы за ноту C, высота тона которой равна 60, то нам всего лишь надо прибавить к первому сигналу 59 с помощью объекта [+].

sequencer3 300x175 Создаём секвенсор в Max/Msp.

Если вы захотите начать с другой ноты, то вам надо будет просто изменить слагаемое. В итоге на выходе объекта [+] мы получим значения от 60 до 71, что соответствует одной октаве от C до B. Для удобства я написал ноту напротив каждой строки с помощью комментария.

3. Синтезатор.

В первой статье, я уже рассказывал, как создать синтезатор и поэтому здесь останавливаться на этом не буду. Сделаем простейший FM синтезатор и с выхода [+] подадим сигнал на вход объекта [mtof], который, как вы помните, преобразует информацию о высоте MIDI ноты в частоту.

sequencer4 300x210 Создаём секвенсор в Max/Msp.

Для запуска объекта [function] используем сигнал с правого выхода [zl sub 1]. Для этого подключим его на левый вход объекта [gate], а на правый вход этого объекта подадим команду {bang}. [gate] пропустит команду {bang}на вход [function] при 1 на его левом входе.

Заключение.

В итоге получился вот такой секвенсор.

sequencer5 300x251 Создаём секвенсор в Max/Msp.

Ставим точки на матрице и запускаем. В принципе можно использовать его по-разному. Например, с помощью сигнала с [zl sub 1] запускать воспроизведение аудиофайла соответствующего номеру строки  и т.д.

Файл патча можно скачать здесь. Сделанов Max/MSP 4.5 .

Экспериментируйте, комментируйте, задавайте вопросы и делайте замечания.


Рубрики: Извлечение звука | Комментарии (18) »

Комментарии (18)

  1. Вячеслав пишет:

    Огромное спасибо =))

  2. admin пишет:

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

  3. Вячеслав пишет:

    Здравствуйте =) Извиняюсь за нубский вопрос,буду благодарен если поможите разобраться с уравнениями каторые пишутся вкачестве аргументов у обьектов [if]и [expr],как их составлять? Как определить значения? что озачают символы и.т.д

  4. Вячеслав пишет:

    Вот бы таблетку найти на max5=),ничего не слышали про такое?

  5. admin пишет:

    Рано ещё я думаю, но как только так сразу :) почта ваша есть, если что сообщу. По вашему предыдущему вопросу почитайте Max45ReferenceManual там описания всех объектов max. Сачать можно с оф сайта http://www.cycling74.com или отсюда. Может быть сделаю перевод по некоторым объектам.

  6. Вячеслав пишет:

    Спасибо!Я правда в aнглийском не силён,но ничего, разберусь=)

  7. Вячеслав пишет:

    А вы начните делать перевод с первых обьектов по несколко штук и постепенно переведёте весь Referencе manual и ваш сайт станет неоценимой помощью для юзеров Max\Msp =))

  8. admin пишет:

    Может быть начну. Если это действительно интересно.

  9. Вячеслав пишет:

    Очень интересно и думаю не мне однаму.Извиняюсь за навязчивость , недавно попытался скомбинировать два autechre участка, добавил секвенсор по вашей технологии вобщем вот что получилось=))http://files.mail.ru/ZO491E

  10. admin пишет:

    Хорошая комбинация получилась. Вообще в этих патчах аля autechre, можно многое подчерпнуть. Вы использовали интересную идею, использовав секвенсор для изменения огибающей. Вот об этом я и говорю, использование технологий ограничивается только фантазией.

  11. Александр пишет:

    а нет ли в планах, рассмотреть вопрос конвертирования патчей в vst?

  12. admin пишет:

    Конечно мне бы хотелось рассмотреть все вопросы касающие Max, но к сожалению времени на сайт не так много. Да и сам я многого не знаю. По вашему вопросу попробую помочь, как только найду рабочую версию Pluggo. Если у вас есть ссылка сообщите пожалуйста ;-) .

  13. Александр пишет:

    Pluggo 3.5.4
    http://torrents.ru/forum/viewtopic.php?t=1368919
    оно?
    есть ещё вот такая информация, может будет полезна в этом вопросе
    http://www.cycling74.com/story/2006/3/8/124756/7496
    а тут про plugbuilder http://www.cycling74.com/story/2007/3/22/11219/9075

    и ещё у меня при попытке сохранения любого патча как Build Collective / Application, max выдаёт ошибку и закрывается. вы не сталкивались с такой проблеммой?

  14. admin пишет:

    С торентов скачать не смогу. вы если можете пришлите свой патч на почту admin[собака]muzprog.ru, я у себя посмотрю. У меня таких проблем не было. Скорее всего проблема в max/msp, может версия max не совместима с версией pluggo.

  15. Вячеслав пишет:

    Тот же Pluggo, что на торренте.ру
    http://ifolder.ru/13374378

  16. admin пишет:

    Спасибо большое. Сейчас скачаю, попробую.

  17. Вячеслав пишет:

    Ни пойму, Max for Live вышел уже или его ещё нет? У меня при загрузке Ableton Max вылетает =(
    Кто нить пробовал их интегрировать?

  18. admin пишет:

    Нет. Он ещё не вышел. Он как я понял будет отдельным дистрибутивом распространяться. А Max 5 для его работы не нужен будет. Так что ждём.

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.

Дизайн: eCore Локализация: Музыкальные программы