Аудио микшер на стороне сервера. Что доступно? (Может ли Csound сделать это?) - PullRequest
1 голос
/ 26 ноября 2009

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

Задача заключается в следующем: у меня есть набор аудиофайлов, и у меня есть некоторые данные о том, когда каждый аудиофайл должен начать воспроизводиться на временной шкале. Программа должна вывести аудиофайл, представляющий собой микс входного аудиосигнала, объединенный с использованием данных временной шкалы. То есть я хочу аудио микшер, который работает в пакетном режиме , а не в реальном времени.

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

Надеюсь, этот вопрос имеет смысл.

Редактировать: Кто-то прокомментировал Csound , а затем удалил его. Что такое Csound? Это относительно просто сделать то, что я спрашиваю? Имейте в виду, что мои входные звуковые файлы могут длиться от 10 до 50 секунд, и меня не интересует искажение высоты звука.

Как бы вы достигли этого в Csound?

Есть ли что-то еще, кроме Csound, которое может делать подобные вещи?

Ответы [ 6 ]

2 голосов
/ 03 декабря 2009

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

Однако я бы предположил, что файл оркестра вашего проекта (часть программы Csound, которая содержит информацию о синтезе и обработке звука, содержащуюся в модулях, называемых instruments ), будет включать soundin код операции, который считывает из аудиофайла, а затем масштабирует амплитуду различных потоков и смешивает их перед передачей на выход.

Временная шкала, вероятно, будет обрабатываться в файле результатов (часть программы Csound, которая обрабатывает инициализацию инструментов и таблиц функций), которая будет переводить данные вашей временной шкалы в время воспроизведения.

Вы также можете найти подпрограмму Csound GEN01, которая считывает аудиоданные из файла в таблицу функций.

2 голосов
/ 26 ноября 2009

Если вы хотите рассмотреть запуск пакетных сценариев как часть этого процесса, вам может пригодиться SoX . Его команды «mixer» и «remix» выглядят так, как будто они могут быть полезны, хотя вам, возможно, потребуется обработать пустые места в начале звуковых файлов для обработки смещений.

1 голос
/ 26 ноября 2009

Вы должны взглянуть на SuperCollider . Может быть, это поможет тебе.

0 голосов
/ 03 декабря 2009

Вы можете посмотреть на BASS Audio Library .Я не могу понять, может ли он смешиваться быстрее, чем в реальном времени, так как он заблокирован на брандмауэре, но я нашел его удобным для использования в прошлом.

0 голосов
/ 27 ноября 2009

Вы, вероятно, получаете много предложений относительно аудио решений в реальном времени, потому что вы сформулировали свой вопрос:

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

«Входной звук» очень расплывчатый. Для меня это звучит как живой поток ввода (как микрофон). Если вы вообще не имеете дело с живыми потоками ввода / вывода, тогда да, Csound будет вероятным кандидатом. В Интернете много учебников по Csound.

0 голосов
/ 26 ноября 2009

Что-то похожее на PHP OpenAL привязки ?

...