Я люблю электронную музыку, и мне интересно, как все это тикает.Я нашел много полезных вопросов о переполнении стека в библиотеках, которые можно использовать для воспроизведения аудио, фильтров и т. Д. Но что мне действительно интересно, так это то, что происходит на самом деле: как данные передаются между эффектами и осцилляторами?Я провел исследование математической стороны dsp, и у меня есть подозрение, что проблема решена, но я не уверен, какую систему буферизации использовать и т. Д. Конечная цель - создать простую объектную иерархию эффектов и осцилляторов, которые передают данные.между друг другом (возможно, используя многопоточность, если я не вырываю все свои волосы, пытаясь это реализовать).Это не будет следующей Причиной Propellerhead, но меня интересует, как все это работает, и это скорее упражнение, чем то, что даст конечный продукт.
В настоящее время я использую .net и C # и недавно изучил F # (что может или не может привести к некоторым интересным способам обработки данных), но если они не подходят для работы, я могу изучить другойСистема при необходимости.
Вопрос в том, каков наилучший способ получения больших объемов данных сигнала через программу с использованием буферов?Например, мне лучше использовать Очередь, Массив, Связанный список и т. Д.?Должен ли я сделать образцы неизменяемыми и создавать новый набор данных каждый раз, когда применяю эффект к системе или просто редактирую значения в буфере?Неужели у меня есть объект стиля диспетчера / пула потоков, который организует передачу данных или функции эффекта передают данные непосредственно между собой?
Спасибо.
РЕДАКТИРОВАТЬ: еще один связанный вопрос: как мне тогдаиспользовать Windows API для воспроизведения этого массива?Я действительно не хочу использовать DirectShow, потому что Microsoft почти оставила его умирать
EDIT2: спасибо за все ответы.Посмотрев на все технологии, я буду либо использовать XNA 4 (я потратил некоторое время на траление в Интернете и нашел этот сайт , который объясняет, как это сделать), либо NAudio для вывода музыки ... не знаю, какая именнотем не менее, зависит от того, насколько продвинутой окажется система.Когда выйдет C # 5.0, я буду использовать его асинхронные возможности для создания архитектуры эффектов.Я в значительной степени использовал ответы всех одинаково, так что теперь у меня есть загадка, кому отдать награду ...