2010-12-05 2 views
2

Я пишу небольшое веб-приложение для проекта психологии музыки, которое будет воспроизводить серию звуковых образцов для предмета и попросить их оценить каждый. Мне нужно создать серию тонов (возможно, все синусоидальные волны) с одним или двумя базовыми фильтрами/эффектами, такими как искажение. По сути, мне нужна простая библиотека синтезатора.Базовая библиотека генерации звука/синтеза, любой язык

Поскольку это веб-приложение, мне нужно, чтобы он мог выплеснуть аудиофайлы (играть через аудио HTML5), а не просто воспроизводить звуки в реальном времени. Я буду генерировать эти файлы заранее, а не во время работы приложения, поэтому производительность не является проблемой.

Мне удобнее всего на Python, но приложение прост, поэтому я готов работать практически на любом языке. Популярная библиотека Snack для Python/Tcl имеет некоторые базовые возможности синтеза, но не имеет никаких эффектов, о которых можно говорить, помимо формант.

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

ответ

0

Поскольку вы делаете это заранее, просто используйте Audacity. Он способен генерировать синусоидальные/квадратные/пилообразные волны (Generate > Chirp) и имеет несколько эффектов. Затем вы можете сохранить в несколько сжатых форматов.

Если вы собираетесь создавать большое количество файлов, вы, вероятно, не хотите сидеть и генерировать каждый из них вручную. К счастью, Audacity is scriptable.

+0

Это выглядит очень прилично, но в идеале я хотел бы иметь сценарий, который может работать на стороне сервера и генерировать звуковые файлы, а также файл JSON для отправки клиенту со списком файлов , их пути и некоторые другие данные о них. С Audacity каждый раз, когда я хочу изменить звуки, мне нужно запустить настольное приложение, закрутить скрипты автоматизации и повторно загрузить вывод. Спасибо, хотя, возможно, это то, что я делаю, если не могу получить то, что я действительно хочу. – Alex 2010-12-05 02:07:44

0

Я не уверен, как вы определяете «просто», но вы должны посмотреть библиотеку Synthesis Toolkit. Это на C++, и у одного из его авторов также есть хорошая книга «Real Sound Synthesis for Interactive Applications», которая также может стоить потратить некоторое время.

2

Я закончил тем, что придерживался Закуски. Я подозреваю, что ничего не существует, что соответствует моим критериям. Я скомпрометировал, создав условие «сурового тембра», которое я хотел произвести с искажением, смешав квадратную волну и немного шума. Звучит не здорово, но нет конкретного определения «суровости», которое я должен использовать для проекта.

Смежные вопросы