Звуковые аккорды в C #? - PullRequest
       39

Звуковые аккорды в C #?

6 голосов
/ 16 января 2011

Я пытался использовать Console.Beep () с низкой частотой в миллисекунды, две воспроизводят две частоты «одновременно», но пауза между звуковыми сигналами разрушает его. Я пытался исследовать это, но ничего не нашел, и не знаю, с чего начать, кроме DirectSound, к которому я обращаюсь. Все, что мне нужно, это сделать программу, которая воспроизводит две или более частоты одновременно из одного динамика в C #.

Спасибо.

Ответы [ 5 ]

2 голосов
/ 16 января 2011

Я предлагаю вам взглянуть на DirectSound, который имеет хорошие привязки .NET. Вы можете использовать два (или более) Buffer объекта и вызывать их Play методы для одновременного воспроизведения.

В этом уроке показано, как реализовать простой драм-автомат в C #, синтезируя звуки на лету. Надеюсь, это поможет.

0 голосов
/ 16 января 2011

Если вы заранее знаете частоты, вы можете синтезировать их в волновой файл (Audacity или другую подобную программу), а затем воспроизвести волновой файл с классом SoundPlayer .

string path = /*path goes here*/;
player = new SoundPlayer(path);
player.Play();

Если вам нужно синтезировать их во время выполнения, вам придется написать файл вручную. Вот SO вопрос, на который вы можете сослаться для создания волновых файлов.

0 голосов
/ 16 января 2011

Вот очень простой пример кода, который позволит вам воспроизвести файл WAV или MIDI. Таким образом, вы можете написать свой код один раз, а затем просто сохранить файл wav или mid, если хотите внести изменения в звуковой эффект.

Воспроизведение любого звукового файла - C # (используется DirectX 9.0 для управляемого кода)

0 голосов
/ 16 января 2011

Console.Beep () является синхронным и не возвращается, пока не закончится звук.

Попробуйте простой слой DirectMedia ( SDL.net ).

0 голосов
/ 16 января 2011

Попробуйте посмотреть на использование MIDI. Этот пример должен помочь вам начать.Он использует MIDI-библиотеку, которую несколько человек рекомендуют.

...