Аудио микшер на стороне сервера. Что доступно? (Может ли Csound сделать это?)
Вопрос
Мне интересно узнать, существует ли программа или библиотека, которая может выполнить следующую задачу и будет ли она подходящей для выполнения на веб-сайте как часть процесса на стороне сервера. (Это нормально, если это занимает больше времени, чем максимум в 200 миллисекунд, что является разумным для одностраничного запроса - я могу запустить его как асинхронный процесс.)
Задача заключается в следующем: у меня есть входной набор аудиофайлов, и у меня есть некоторые данные о том, когда каждый аудиофайл должен начать воспроизводиться на временной шкале. Программа должна вывести аудиофайл, представляющий собой микс входного аудиосигнала, объединенный с использованием данных временной шкалы. То есть мне нужен звуковой микшер, который работает в пакетном режиме , а не в реальном времени.
Я провел несколько поисков в Google, но немного разочаровался, потому что не совсем уверен, что мне нужно искать. Большинство аудиомикшеров, похоже, ориентированы на приложения реального времени, такие как игры, и я не уверен, как найти что-то, что выполняет эту задачу, как утилиту командной строки - просто принимать ввод и производить вывод настолько быстро, насколько это возможно. Р>
Надеюсь, этот вопрос имеет смысл.
Редактировать. Кто-то прокомментировал Csound , а затем удалил его. Что такое Csound? Это относительно просто сделать то, что я спрашиваю? Помните, что мои входные звуковые файлы могут длиться от 10 до 50 секунд, и меня не интересует искажение высоты тона.
Как бы вы достигли этого в Csound?
Есть ли что-то еще, кроме Csound, которое может делать подобные вещи?
Решение
Вы определенно можете использовать Csound для этого, и это может быть реализовано несколькими способами. К сожалению, мое все еще довольно зарождающееся исследование Csound было больше связано с синтезом звука и алгоритмическим составом, чем сэмплированием и обработкой, поэтому я не могу предложить предложения для надежной реализации.
Однако я бы предположил, что файл оркестра вашего проекта (часть программы Csound, которая содержит информацию о синтезе и обработке аудио, содержащуюся в модулях, называемых instruments ), будет включать код операции soundin
, который считывает аудиофайл, а затем масштабирует амплитуду различных потоков и смешивает их перед передачей на выход.
Временная шкала, вероятно, будет обрабатываться в файле оценок (части программы Csound, которая обрабатывает инициализацию инструментов и таблиц функций), которая будет переводить данные вашей временной шкалы в время воспроизведения.
Вы также можете найти подпрограмму Csound GEN01
, которая считывает аудиоданные из файла в таблицу функций.
Другие советы
Если вы хотите рассмотреть возможность запуска пакетных сценариев как часть этого процесса, вы можете найти SoX полезным. , Его "миксер" и " ремикс " команды выглядят так, как будто они могут быть полезны, хотя вам, возможно, потребуется обработать пустые места в начале звуковых файлов для обработки смещений.
Вам следует взглянуть на SuperCollider . Может быть, это поможет тебе.
Что-то вроде PHP привязок OpenAL ?
Вы можете посмотреть библиотеку аудио BASS . Я не могу понять, может ли он смешиваться быстрее, чем в реальном времени, поскольку он заблокирован на брандмауэре, но я нашел его удобным для использования в прошлом.
Вероятно, вы получаете много предложений относительно аудио решений в реальном времени из-за того, как вы сформулировали свой вопрос:
Программа должна вывести аудио файл, который представляет собой смесь ввода аудио, объединенное с использованием временной шкалы данных. р>
" Ввод аудио " очень расплывчато Для меня это звучит как живой поток ввода (как микрофон). Если вы вообще не имеете дело с живыми потоками ввода / вывода, тогда да, Csound будет вероятным кандидатом. В Интернете много учебников по Csound.