Потоковое MIDI API в Android

Я - автор музыкальных приложений на основе MIDI. В моем приложении я создаю файл.midi с небольшой библиотекой, которую я написал, и играю его на MediaPlayer, и этого достаточно для этого приложения. Однако в будущем приложении я планирую больше интерактивности, и именно здесь мне, вероятно, понадобится потоковый API.

Насколько я знаю, Android пропускает API для миди-синтезатора в реальном времени (по крайней мере, официально). Но все же я вижу некоторые приложения, которые используют миди довольно продвинутым способом. Вопрос как? Используют ли они NDK для прямого доступа к Sonivox или в конце концов существует неофициальный apis для этого? Есть идеи?

Также мне очень интересно, планирует ли Google улучшить поддержку MIDI в будущих версиях Android (на случай, если кто-нибудь из Google увидит это:))

Благодарю.

3 ответа

Решение

Вы должны проверить libpd, который является родным портом PureData для Android и iOS. Он предоставит вам доступ к драйверам MIDI системы, но при этом сможет создавать прототипы вашего программного обеспечения с помощью инструментов высокого уровня.

Это простой, но отличный пример приложения, которое успешно транслирует MIDI на Android https://github.com/billthefarmer/mididriver

Вы должны будете собрать свои MIDI-сообщения вручную, хотя (пример создает два MIDI-сообщения для воспроизведения ноты и остановки ноты). Можно обратиться к спецификации MIDI для дальнейшего управления каналами MIDI. Проблема в том, что стандартные звуковые шрифты на Android звучат так плохо.

У Java очень важная задержка, поэтому я думаю, что это должно быть сделано с помощью NDK. Проверьте этот вопрос, у него есть пара подсказок. Об этом сообщалось как о проблеме с Android (поддержка NDK для аудио с низкой задержкой), там также могут быть некоторые советы или информация.

Другие вопросы по тегам