[MS Smartphone]Several solutions for MIDI playback
来源:互联网 发布:sql seq 编辑:程序博客网 时间:2024/04/30 09:08
For MS Smartphone 2003 platform,it is really not an easy thing to deal with MIDI playback.Here are several solutions,but every way has its own problems.
1.Use SDK raw API.
Refer to http://homepages.inspire.net.nz/~gambit/Midi/
Problem:
-Rough playback quality.It is only a prototype.When I tested with that source code,the playback quality is so rough.I spent some time to modify that source code and failed to fix the problem.
BTW: The problem of B in that article is due to the code:
WaveHdr.lpData = (LPSTR)&MidiMessage; //If changed to (LPSTR)MidiMessage,
dynamic memory allocation should work.As we know,for array,&MidiMessage is equal to
MidiMessage,but for pointer it is different.
2.Port open midi source projects to Smartphone platform
I've found two open midi source projects which are very good.One is Timidity and the other is WildMidi. Many famous games such as Quake and Duke3D uses Timdity to play midi sound.
Problems:
-It will take some time.
-It will add much more footprint to your application installation package due to its usage of GUS patches.
3.Buy midi codec
Currently it seems some company sells midi codec for MS Windows Mobile Platform.
Problems:
-It will take some money.Usually those companies want a lot of money.So it is the least recommended.
4.Use existing library API
I spent some time to analysis the midi issue of the default player within Dopod565 itself. I found that the player uses a DLL library ----midilib2.dll which is in /Windows directory.The export information of midilib2.dll is attached later.
MIDI_GetDuration
MIDI_GetExtensionInfo
MIDI_GetInfo
MIDI_GetPosition
MIDI_GetStatus
MIDI_GetVendorID
MIDI_GetVolume
MIDI_GetWaveOut
MIDI_Load
MIDI_Pause
MIDI_Play
MIDI_Resume
MIDI_SetVolume
MIDI_Stop
MIDI_Unload
fp_MIDI_GetDuration
fp_MIDI_GetExtensionInfo
fp_MIDI_GetInfo
fp_MIDI_GetPosition
fp_MIDI_GetStatus
fp_MIDI_GetVendorID
fp_MIDI_GetVolume
fp_MIDI_GetWaveOut
fp_MIDI_Load
fp_MIDI_Pause
fp_MIDI_Play
fp_MIDI_Resume
fp_MIDI_SetVolume
fp_MIDI_Stop
fp_MIDI_Unload
MIDI_GetExtensionInfo
MIDI_GetInfo
MIDI_GetPosition
MIDI_GetStatus
MIDI_GetVendorID
MIDI_GetVolume
MIDI_GetWaveOut
MIDI_Load
MIDI_Pause
MIDI_Play
MIDI_Resume
MIDI_SetVolume
MIDI_Stop
MIDI_Unload
fp_MIDI_GetDuration
fp_MIDI_GetExtensionInfo
fp_MIDI_GetInfo
fp_MIDI_GetPosition
fp_MIDI_GetStatus
fp_MIDI_GetVendorID
fp_MIDI_GetVolume
fp_MIDI_GetWaveOut
fp_MIDI_Load
fp_MIDI_Pause
fp_MIDI_Play
fp_MIDI_Resume
fp_MIDI_SetVolume
fp_MIDI_Stop
fp_MIDI_Unload
The DLL file is not open to public for use.For DLL files,we could only get function name information,and we couldn't find function declarations including parameters and return type.
I think the best way to handle MIDI playback problem is to ask for handset provider's
technical support and ask them to open midi API(For Dopod565,the API of midilib2.dll).
- [MS Smartphone]Several solutions for MIDI playback
- [MS Smartphone]Memory leak check
- 开发MS Smartphone 游戏(转贴)
- 迷你万年历for Smartphone
- 迷你大六壬for Smartphone
- upload several sheet for sap
- Several Extension Methods for Char
- Several Rules for design pattern
- Several practical issues for CUDA
- [MS Smartphone] Connection Manager Sample Code
- [MS Smartphone]Detect user interface language change
- [MS Smartphone]How to get bitmap bits
- WMAssistant for SmartPhone 简单介绍
- 迷你找对子for Smartphone
- 迷你生物律for Smartphone
- MIDI
- MIDI
- MIDI
- gcc
- 无言的痛苦
- QQ挂机的N种方法(转)
- 上传,注意的两个问题
- BCB中控件數組的簡易實現
- [MS Smartphone]Several solutions for MIDI playback
- [转载]拓迈电子商务解决方案
- Linux 2.6内核的精彩世界
- j2ee模式一(总述)
- Ajax技术初探
- 测试一下
- 毕业生们,工作真的很难找吗?
- Linux开发中的常用命令
- 在jsp中使用smartupload组件上传文件