Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Abu Idris ([info]zhd)
@ 2016-03-09 21:44:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: calm
Музыка:Chromatics -- Candy

Worse than random generated syntax
Пользователь [info]ketmar вновь поднимает важный вопрос. От себя добавлю ссылку на статью Subtleties of the ANSI/ISO C standard. Краткое содержание: ``there is no C program for which the standard can guarantee that it will not crash''. Типа, все что нужно знать о языке С.

Язык С -- не для людей, но есть области, в которых он хорош. Поэтому его можно использовать в качестве целевого языка, работая внутри другого языка. В Haskell, например, для этого можно использовать механизм QuasiQuotes. Очень удобно. Экспериментирую тут с музыкальными модульными синтами. Каждый модуль это небольшой кусочек С-кода, прописывается вручную. Есть комбинаторы для разных видов композиции модулей. Haskell-программа делает из кусочков полноценные функции. Плюс следит за совместимостью модулей, строит (когда возможно) преобразование синтаксически неэквивалентных структур и т.п. Плюс возможность иметь модули, параметризованные более-менее чем угодно. Ну и так далее. Пока я в самом начале; иншаллах, здесь будет синтостроительный блог. Называться будет ``Против аналогового секвенсора не попрешь'', конечно же.

Tip: Когда вы знакомитесь с языком, смотрите как в нем реализована (если вообще) прямая сумма.

Такие дела, на фото я.



(Читать комментарии) - (Добавить комментарий)


(Анонимно)
2016-03-09 22:51 (ссылка)
А в виде чего ты будешь эти синты реализовывать? Это не ты ли тут против VSTi топил, лалка?

(Ответить) (Ветвь дискуссии)


[info]zhd
2016-03-10 10:44 (ссылка)
А по хардкору. Каждый модуль генерируется в виде отдельной С функции. Потом с ними можно делать различные интересные вещи. В простейшем случае модуль по входной последовательности генерирует выходную, которая, если возможно, преобразуется в аудио-файл. Входные последовательности, полифония и т.п. также реализуют С функции, которые являются результатом работы главной Haskell-программы.

Дело в том, что товарищи, которые угорают по модульным синтам, слишком много внимания уделяют звуковому дизайну и мало -- композиции. Нужно попытаться изменить баланс. Думаю, что сам процесс композиции тоже можно оформить в виде модулей, каждый из которых делает что-то простое, но оперирует не аудио сигналами, нотами (в обобщенном смысле), информацией о длительности и динамике и т.п. Вот эту часть обычно неудобно реализовать в системах типа Pure Data (не говоря уже о Reaktor), потому что у них тот же bias на работу с ``непрерывными'' сигналами.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2016-03-10 12:12 (ссылка)
Ну ты программист ёба, хардкор реально.
Я хер его знает, зачем это нужно, секвенсер для атари панк консоли состоит из двух микрух и восьми ручек, и вместе с самой консолью умещается в жестянку от папирос "богатыри".

я хер знает, надо попробывать. по идее прототип софтовой реализации можно собрать прямо сразу в Max/MSP, а может даже тупо во фрути-лупсах забить, попердолившись предварительно с прикручиванием контроллера (у меня как раз в контроллере восемь энкодеров, плюс ещё один с кнопкой, шесть фейдеров, и куча мелких других кнопок под всякое говно, по идее хоть чё забить можно)
или даже заебенить прожект в матлабе (си я просто не знаю абсолютно)

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

(Ответить) (Уровень выше)


(Читать комментарии) -