ASIO для .NET не поможет вам взломать mp3 или wav файлы.Самый современный API в Windows для этого - Microsoft Media Foundation .Это все COM API, так что вы либо собираетесь (возможно, болезненно) взаимодействовать с COM из .NET, либо (проще) написать оболочку C ++ / CLI.Если вы пользуетесь оболочкой C ++ / CLI, вам необходимо знать о проблемах производительности (особенно о том, насколько критически важна задержка для звукового программирования).
Я скептически отношусь к тому, что вы получите необходимую задержку звука при программировании на .NET.Хороший аудиодрайвер (например, ASIO) снизит задержку до <3 мс.Поэтому, если вы нацелены на «живое аудио», вам нужно будет генерировать звуковые буферы быстрее, чем это (если вы не справляетесь с более длительными задержками).Иными словами, «временные интервалы», с которыми работают API-интерфейсы Windows, имеют интервалы в 100 наносекунд:). </p>
Скорее всего, вам не нужно взламывать файлы самостоятельно.Это становится утомительным, так как это не только mp3 и wav.Вы также должны знать, как форматируется WAV (чтобы учесть разные скорости передачи данных, количество каналов и т. Д.).Используя Media Foundation, он автоматически загрузит декодер записи для вас, вы просто дадите ему путь к файлу. Ознакомьтесь с этим руководством , в котором показано открытие существующего файла WAV и запись нового файла WAV.Я только недавно пошел по этому пути для драм-секвенсора, который я создаю, и это совсем не больно (если вы знакомы с программированием COM).
Центральный компонент в MF, который делает это возможным - это MFSourceReader .
Если вы хотите воспроизвести аудио после его изменения, вы можете посмотреть пример «RenderExclusiveEventDriven» в Windows SDK (я полагаю, в разделе «audio»).Это то, что я сделал и для барабанного секвенсора.Задержка не будет проблемой, и вы просто имеете дело с байтовыми массивами, поэтому манипулирование необработанными данными становится очень простым.Хотя в этот момент вы, вероятно, можете придерживаться маршрута ASIO .NET и просто использовать его для воспроизведения необработанных данных, которые вы получаете из MFSourceReader.
Я не думаю, что в Media Foundation еще есть .NET-оболочки (хотя, если кто-то уже проделал эту работу, не стесняйтесь размещать здесь, как было бы здорово узнать).