我正在尝试使用 fmod 播放 midi 文件。但是有一个错误说:找不到插件需要的资源,(即用于MIDI播放的DLS文件)
我已经搜索了类似问题的结果,并参考了 fmod.h 文件。似乎我需要一个名为“gs_instrument.dls”的文件,但我在我的 mac 以及 android 模拟器文件系统中都找不到它。我也搜索了网上的资源,也没有结果。
那么如果我想使用fmod在android中播放midi文件我该怎么办。
希望你能帮我!
谢谢!
我不知道 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();
您可以使用传递给 System::createSound 的 FMOD_CREATESOUNDEXINFO 结构的 dlsname 成员指定 DLS 文件的位置。
您必须自己提供实际文件并将其放在 sdcard 上,以便您可以传递它的位置。在 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 文件。
你可以这样使用。您可以在要播放 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();
}