作者vivimice (麥斯◎我的奶酪在哪裡﹖)
看板Visual_Basic
標題[API] Stream Buffer Format
時間Wed Jul 27 15:24:11 2005
來源﹕mk:@MSITStore:E:\Microsoft%20Visual%20Studio\MSDN98\98VS\2052\
MultiMed.chm::/devdoc/live/pdgrmm/midi_67xw.htm
翻譯﹕vivimice 智慧權所有
定位﹕平台SDK/Graphics and MultiMedia Services/MultiMedia Audio/
Musical Intrument Device Interface/About MIDI/Stream Buffers
原載﹕縹緲水雲間 (bbs.freecity.cn)
Stream Buffer Format
流緩沖格式
The lpData member of the MIDIHDR structure points to a stream buffer, and the
dwBufferLength member specifies the actual size of this buffer. The
dwBytesRecorded member of MIDIHDR specifies the number of bytes in the buffer
that are actually used by the MIDI events; this value must be less than or
equal to the value specified by dwBufferLength.
MIDIHDR結構的lpData成員指向一個流緩沖﹔dwBufferLength成員指定這個緩沖的實際大
小﹔dwByteRecorded成員指定實際被MIDI事件使用的字節數﹐這個值必須小於等於在
dwBufferLength成員中指定的值。
Each of the MIDI events in the stream buffer is specified by a MIDIEVENT
structure, which contains the time for the event, a stream identifier, an
event code, and, when appropriate, parameters for the event. Each of these
MIDIEVENT structures must begin on a doubleword boundary. If necessary, pad
bytes must be added to the end of the structure to ensure that the next one
starts on a doubleword boundary.
在流緩沖之中﹐每個MIDI事件都是由MIDIEVENT定義的﹐MIDIEVENT包含了該事件的時間、
流標識符、該事件的事件碼和該事件的參數(如果需要的話)。每個MIDIEVENT都必須放在
一個雙字邊界處(譯者注﹕即每個MIDIEVENT在流緩沖中的位置都必須能被雙字的長度
『一般為4』整除)。如果有必要的話﹐填充字節必須添加到前一個MIDIEVENT的結尾﹐使
得下一個MIDIEVENT正好位於一個雙字邊界。
譯者注﹕
好像系統讀取流緩沖中的事件是以一個DWORD為最小單位的﹐所以每個事件都必須以DWORD
的長度為最小單位對齊。一般情況下短事件的長度都是DWORD的整數倍﹐所以不用考慮對
齊的問題。長事件則必須在有效數據的後面填充一些無關數據(一般是0x00)使得整個事件
的長度是DWORD長度的整數倍。這樣才能保証下一個事件的起始位置位於雙字邊界處。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.108.88.250