Потоковое 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 для аудио с низкой задержкой), там также могут быть некоторые советы или информация.