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