Отправить MIDI-события в автономный сэмплер / синтезатор - PullRequest
0 голосов
/ 20 декабря 2010

Я хотел бы разработать очень простую программу для отображения клавиатуры ПК на клавиатуру пианино: каждый раз, когда пользователь нажимает клавишу, генерируется MIDI-событие, и он получает отдельный сэмплер / синтезатор (такой как SFZ + или другой)эти события и воспроизводит звук.

Я могу генерировать события MIDI (используя midiOutShortMsg), но они отправляются непосредственно в синтезатор FM (и воспроизводится им), я хотел бы отправить их ввнешнее программное обеспечение .Код должен быть на C / C ++.

Не могли бы вы мне помочь?

Tnx.

Ответы [ 4 ]

3 голосов
/ 20 декабря 2010

Вы должны посмотреть на JACK

JACK - это система для обработки звука в реальном времени с низкой задержкой (и MIDI).Он работает на GNU / Linux, Solaris, FreeBSD, OS X и Windows (и может быть перенесен на другие POSIX-совместимые платформы).Он может подключать несколько различных приложений к аудиоустройству, а также позволяет им обмениваться аудио между собой.Его клиенты могут работать в своих собственных процессах (то есть как обычные приложения) или могут работать на сервере JACK (то есть как «плагин»).JACK также поддерживает распределение обработки звука по сети, как для быстрых и надежных локальных сетей, так и для медленных, менее надежных глобальных сетей.

JACK был разработан с нуля для профессиональной работы с аудио, и его дизайн ориентирован наключевые области: синхронное выполнение всех клиентов и работа с низкой задержкой.Доступна дополнительная справочная информация.

Доступен как источник или двоичные файлы здесь .

0 голосов
/ 22 апреля 2011

Многие программные синтезаторы не устанавливают себя как устройства Windows MIDI. Попробуйте использовать бесплатное LoopBe1 для подключения виртуальных кабелей между приложениями MIDI.

0 голосов
/ 20 декабря 2010

звучит так, как будто вы не открываете правильное устройство.midiOutOpen принимает идентификатор устройства в качестве второго параметра;Вы проверили, является ли тот, который вы передаете, правильным (используя midiOutGetNumDevs и midiOutGetDevCaps)?

0 голосов
/ 20 декабря 2010

Вы должны были использовать «midiOutOpen», чтобы открыть устройство. Что если вы выберете другой идентификатор устройства?

...