Как играть MIDI-файл в Android использовать FMOD - PullRequest
1 голос
/ 10 августа 2011

Я пытаюсь воспроизвести миди-файл с помощью fmod.Но есть ошибка, которая говорит о том, что: ресурс, который требуется плагину, не может быть найден (то есть файл DLS для воспроизведения MIDI)

Я искал результаты для подобных проблем и ссылался на файлы fmod.h,Кажется, мне нужен файл с именем "gs_instrument.dls", но я не могу найти его в моем Mac, а также в файловой системе симулятора Android.Я также искал ресурсы в сети, тоже ничего не дало.

Так что же мне делать, если я хочу воспроизвести MIDI-файл в Android с помощью fmod.

Надеюсь, вы мне поможете!

Спасибо!

Ответы [ 3 ]

4 голосов
/ 10 августа 2011

Я не знаю о fmod, но Android может проигрывать MIDI-файлы прямо из коробки. Вот упрощенная версия того, что работает для меня:

MediaPlayer mediaPlayer = new MediaPlayer();
File f = [... my MIDI file ...];
FileInputStream fis = new FileInputStream(f);
FileDescriptor fd = fis.getFD();
mediaPlayer.setDataSource( fd );
mediaPlayer.prepare();
mediaPlayer.start();
1 голос
/ 11 августа 2011

Вы указываете местоположение файла DLS с помощью члена dlsname структуры FMOD_CREATESOUNDEXINFO, переданного в System :: createSound.

Вы должны предоставить фактический файл самостоятельно и поместить его на SD-карту, чтобы вы могли передать его вместоположение этого.В Windows файл DLS по умолчанию находится в папке «C: \ Windows \ System32 \ drivers \ gm.dls» или «C: \ Windows \ System32 \ drivers \ etc \ gm.dls».В качестве альтернативы на Mac он находится по адресу "/System/Library/Components/CoreAudio.component/Contents/Resources/gs_instruments.dls".Это говорит о том, что я не могу говорить о законности использования этих файлов в проекте Android, вам может потребоваться найти свой собственный «бесплатный» файл dls откуда-то еще.

0 голосов
/ 10 августа 2011

Вы можете использовать как это.Вы можете вызвать следующий метод, чтобы воспроизвести миди-файл.

public void  myRingCtone()
        {
            Uri path = Uri.parse("android.resource://com.PackageName/raw/MIDI_RingToneName");
            RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), 
                                                            RingtoneManager.TYPE_RINGTONE, path);
            Log .i("TESTT", "Ringtone Set to Resource: "+ path.toString());
            RingtoneManager.getRingtone(getApplicationContext(), path).play();
        }
...