ИП
Иван Платаный

Вопрос по программированию звука.

Пишу программу-синтезатор ( не используя MIDI ).

Язык программирования - C# (Пойму так-же примеры на Delphi и C++ ).
Я не могу понять, как можно выводить звук в реальном времени (т. е. нажал на кнопку - звук добавился к текущему, отпустил - добавленный звук СРАЗУ изменился ). У меня получилось с генерацией файла wav в память и его воспроизведением пи помощи SoundPlayer.Play(); Работает, но при попытке воспроизвести еще один звук, старый останавливается, и вообще генерация долгая (1 сек. за 10 сек. звука - потом оптимизирую (таблицей готовых значений наверно) ) Если делать генерацию порциями по 200 мс, то происходят паузы, но они происходят даже если все уже сгенереровано и готово - остается воспроизвести.

Наверное я использую не то, что для этого надо. Если это так, то напишите пожалуйста, что для этого лучше подходит ( только не MIDI - там слишком легко и меньше возможностей ( если в него можно добавить свой инструмент - подскажите пожалуйста как)) .

Или подскажите как это можно сделать используя SoundPlayer.Play().

Заранее спасибо за помощь!

Александр Кочетов
Александр Кочетов

Сделайте воспроизведение и "обработку" в отдельном потоке.
Цикл или что-либо запущенное в потоке с основным потоком формы "тормозят" друг-друга.

Юрий Арсеньев
Юрий Арсеньев

Оппа. А я как как раз ищу мужа программиста!

АК
Алексей Кулюсов

Как раз для твоего случая лучше использовать DirectSound или что-то по-новее XAudio2.

Opt
Opt

для этого нужна определенная обвязка, поддерживающая реалтайм, например ASIO, JACK, VST или функции WINAPI waweIn/Out. нащет шарпа не знаю, не уверен, что его стоит использовать для реалтайма, а на сях и асме я много реалтайма звукового написал

Похожие вопросы
Вопросы по Технологии программирования
помогите с вопросами по программированию)
Вопрос по программированию
Вопрос по программированию на C#.
Вопрос на счёт Программирования...
Вопрос по программирование!
Вопрос по программированию.
вопросы по программированию
Вопрос по программированию
Вопрос в программировании