如何在Android中使用fmod播放midi文件

时间:2011-08-10 12:20:03

标签: android midi fmod

我正在尝试使用fmod播放midi文件。但是有一个错误说:找不到插件所需的资源,(即用于MIDI播放的DLS文件)

我搜索了这样的问题的结果,并引用了fmod.h文件。似乎我需要一个名为“gs_instrument.dls”的文件,但我无法在我的mac以及android模拟器文件系统中找到它。我也搜索了网络上的资源,也没有结果。

那么如果我想使用fmod在android中播放midi文件,该怎么办呢。

希望你能帮助我!

谢谢!

3 个答案:

答案 0 :(得分:4)

我不知道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 :(得分:1)

使用传递到System :: createSound的FMOD_CREATESOUNDEXINFO结构的dlsname成员指定DLS文件的位置。

您必须自己提供实际文件并将其放在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文件。

答案 2 :(得分:0)

你可以这样使用。您可以调用以下方法来播放midi文件。

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();
        }