Аудио микшер на стороне сервера. Что доступно? (Может ли Csound сделать это?)

StackOverflow https://stackoverflow.com/questions/1803131

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

Что-то вроде PHP привязок OpenAL ?

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

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

  

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top