2009-02-03 2 views
30

Я хотел бы написать интерактивную песню. Он будет содержать состояние и логику. Слушатель/пользователь должен иметь возможность изменять некоторые государственные вары, используя графический интерфейс или MIDI-интерфейс. Доступным для просмотра слушателям не требуется прямое представление темпа, высоты тона или любого другого музыкального свойства. Они скорее будут представлять ценности, которые логика будет обрабатывать, чтобы внести изменения в песню.Язык программирования высокого уровня для композиции музыки

Должен ли я писать такую ​​платформу самостоятельно или что-то подходящее для моего воображения уже существует?

ответ

11

Посмотрите на cSounds и PureData.

+0

[Max MSP] (http://cycling74.com/products/max/) очень симпатичен PureData. – Kevin

+0

SuperCollider значительно превосходит любой (см. Ответ ниже). – cmc

1

Я не уверен, что он охватывает то, за чем вы находитесь, но взгляните на Java Sound API. Часто задаваемые вопросы о том, что он может сделать, см. В here. Преимущества, которые уже включены в SDK и JRE, являются кросс-платформенными. Кроме того, вы можете создать графический интерфейс с помощью любого инструментария Java.

7

Если вы счастливы использовать Java, ознакомьтесь с JFugue.

+0

Или еще JMusic обладает гораздо более сильными функциями по сравнению с JFugue и большей гибкостью, см. [1] для приложений, созданных JMusic [1] http://explodingart.com/jmusic/applications .html – poohdedoo

+0

Проблема с jfugue заключается в том, что для этого нужен супер быстрый процессор, иначе музыка будет удалена. Вот что со мной произошло. Он не может использовать midi timestamps или что-то еще. – DankMemes

0

Я действительно не получить то, что вы хотите сделать, но вот список некоторых музыкального программного обеспечения CL, как для композиции и познания: http://www.cliki.net/Music

3

Посмотрите Strasheela:

Это композиционная система, основанная на языке программирования Oz. Изучение Оз непросто, так как оно сочетает в себе функциональную и логическую парадигму программирования. Однако, если вам понравилась книга SICP, вам также, возможно, понравится.

Strasheela рассматривает музыкальную композицию как проблему ограничения ограничений (CSP) и ищет для нее «решения». Это означает, что стиль музыки определяется как математические ограничения на целочисленные числа (конечный домен), которые должны быть удовлетворены, а встроенная система решения ограничений автоматически вычисляет решения.

P.S .: Я не могу программировать в Оз, но я нахожусь на пути к его изучению.

0

Вы ищете Audio Programming Language. Другой вариант, который вы должны рассмотреть, - Processing - используется многими художниками и музыкантами для такого рода работ.

-Adam

1

Если бы это было не для интерактивных бит, я предлагаю смотреть на Haskore или Nyquist, как эффективно будучи для генерации DSL, музыки.

Определенно взгляните на Alex McLean's livecoding демо. Это более гибко и интерактивно, как вы можете себе представить, используя SuperCollider через OpenSoundControl.

+0

DSL = язык, специфичный для домена – endolith

1

Ответ для .NET:
я нашел что-то, Checkout NAudio по Mark Heath, большой музыкальной библиотеки .NET, я бы сказал, что должно содержаться в BCL.

midi-dot-net - еще один отличный проект C# Тома Локовича.

1

Для взаимодействия с музыкой лучше всего использовать PureData, Max/MSP и OpenMusic (эти два последних из IRCAM). PureData - бесплатная программа. Google их!

6

Я пробовал PureData, CSound и SuperCollider.

Csound очень громоздким программировать, и имел серьезные проблемы со стабильностью для моих требований (24bit/96кГц в режиме реального времени с низким Линукс латентность) в версии 4.

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

Победитель вручает SuperCollider, потому что это небольшой ориентированный на объект объектно-ориентированный язык, с которым приятно работать. Он разделен на управляемый OSC звуковой сервер и язык клиента. Я могу рекомендовать сервер синтеза звука и использовать язык для создания инструментов без оговорок для его отличной стабильности, большой гибкости и невероятной мощности. Я использовал его на сцене, и производительность невероятно хороша.

Язык создания оценки страдает синдромом многих рук; в отсутствие четкого руководства в последнее время слишком много способов сделать слишком много вещей со слишком большим количеством ограничений, но это все же лучше, чем CSound, потому что по крайней мере вы можете использовать разумные структуры высокого уровня.

Все еще ищут язык композиции, который просто прав.

+0

Отличный ответ! Как SuperCollider сравнивается с ChucK? Любой опыт с этим? –

+0

Я не пробовал патрон, но, исследуя его, я бы предположил, что это адекватная низкоуровневая обработка звука, но не так хорошо подходит как язык звука общего назначения. – cmc

0

Его позор, что никто не сказал о Чак ................ Chuck - это язык программирования, специально созданный для генерации и композиции музыки/звука. Вы можете скачать Chuck на http://chuck.stanford.edu его намного проще в использовании, и он очень знаком с c, C++, java и т. Д., Однако его также легче изучить. Вы можете найти в Coursera о chuck бесплатно из Калифорнийского университета искусств, ссылку here.