Я буду симулировать клавиатуру фортепиано в андроид-клавиатуре. При использовании нажмите одну клавишу, я бы хотел воспроизвести какой-то звук, я знаю, что JetPlayer может воспроизводить midi-файл, но в этом случае у меня нет среднего файла, всего одна заметка, как это сделать?как имитировать игру на фортепиано в андроиде?
ответ
MIDI и использование MP3 - это совершенно разные вещи. Вы можете запрограммировать MIDI, чтобы он звучал как пианино, но вам нужно будет много работать, чтобы получить хороший результат, и вам нужно знать, что результат будет зависеть от звукового оборудования телефона. Поддержка Android для MIDI также очень плоха, и вам понадобится много кода для работы сантехники. Я рекомендую вам придерживаться MP3. Файлы размером 100x20k на самом деле не такие большие. Вы могли бы сделать их меньшими с некоторым дополнительным сжатием. Для вещей, подобных одиночным нотам, вам действительно не нужен высококачественный звук. Попробуйте на телефоне со скоростью 16 Кбит/с, 32 Кбит/с и 64 кбит/с.
Если вы идете с MP3, вам может потребоваться использовать классы SoundPool. Взгляните на учебное пособие here
Это позволяет создать HashMap с индексом для каждого звука, который вы можете использовать для воспроизведения каждой отдельной ноты. Например, индекс может быть ключевым номером. Чтобы воспроизвести заметку, вы просто вызываете метод playSound SoundPool с соответствующим индексом.
Я предполагаю, что у вас ограниченное количество клавиш фортепиано, и поэтому нагрузка на загрузку нескольких звуковых файлов (ваши MP3) приемлема. Если у вас большое количество, вам может потребоваться только загрузить звуковые файлы для ключей, которые видны пользователю, чтобы контролировать использование вашей памяти.
Над решением работает для меня. общий mp3-файл составляет около 2M. Это немного больше для пользователя, загружающего файл apk. –
После прочтения соответствующего документа, кажется, что (микс для JetPlayer) немного сложнее для моего проекта. Итак, я буду использовать mp3-файл и SoundPool. –
Прохладный. Удачи. – Simon
Вы не можете специально «играть» на пианино на телефоне. У вас должен быть звуковой байт, который используется для этой конкретной заметки.
Вы не можете специально «играть» на пианино на телефоне. У вас должен быть звуковой байт, который используется для этой конкретной заметки. – JoxTraex
Кстати, различная клавиша фортепиано вызывает разные звуки. –
Привет, JoxTraex, Спасибо за ваш ответ. Теперь у меня есть mp3-файл для каждой ноты пианино, но он слишком велик. (100 mp3-файлов и размер каждого mp3-файла составляет около 20K). Итак, я пытаюсь найти способ воспроизведения звука без mp3-файла. Кстати, какой смысл «звукового байта» для конкретной ноты --- я новичок в миди? –