Как симулировать игру одной фортепианной ноты в Android? - PullRequest
1 голос
/ 29 января 2012

Я буду имитировать клавиатуру пианино в Android Pad.Когда я нажимаю одну клавишу, я хочу воспроизвести звук, я знаю, что JetPlayer может воспроизводить миди-файл, но в этом случае у меня нет мид-файла, только одна нота, как это сделать?

Ответы [ 2 ]

2 голосов
/ 29 января 2012

MIDI и использование MP3 - это совершенно разные вещи. Вы можете запрограммировать MIDI так, чтобы он звучал как пианино, но вам придется проделать большую работу, чтобы получить хороший результат, и вы должны знать, что результат будет зависеть от звукового оборудования телефона. Поддержка Android для MIDI также очень плохая, и вам понадобится много кода для выполнения сантехнических работ. Я рекомендую вам придерживаться MP3. Файлы размером 100x20k не так уж и велики. Вы могли бы сделать их меньше с некоторым дополнительным сжатием. Для таких вещей, как отдельные заметки, вам действительно не нужно высокое качество звука. Попробуйте это на своем телефоне с 16 кбит / с, 32 кбит / с и 64 кбит / с.

Если вы используете MP3, вы можете рассмотреть возможность использования классов SoundPool. Взгляните на учебник здесь

Это позволяет вам создать HashMap с индексом для каждого звука, который затем можно использовать для воспроизведения каждой отдельной ноты. Индекс может быть номером ключа, например. Чтобы воспроизвести ноту, вам нужно просто вызвать метод playSound в SoundPool с соответствующим индексом.

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

0 голосов
/ 29 января 2012

Вы не можете специально «играть» на пианино на телефоне. У вас должен быть звуковой байт, который используется для этой конкретной ноты.

...