2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
22 #define VERSION_MINOR 0x00
23 #define VERSION_MAJOR 0x04
24 #define SEQ_VERSION ((DWORD)(WORD)((BYTE)VERSION_MINOR | (((WORD)(BYTE)VERSION_MAJOR) << 8)))
26 #define SEQ_F_EOF 0x00000001L
27 #define SEQ_F_COLONIZED 0x00000002L
28 #define SEQ_F_WAITING 0x00000004L
30 #define SEQ_S_NOFILE 0
31 #define SEQ_S_OPENED 1
32 #define SEQ_S_PREROLLING 2
33 #define SEQ_S_PREROLLED 3
34 #define SEQ_S_PLAYING 4
35 #define SEQ_S_PAUSED 5
36 #define SEQ_S_STOPPING 6
40 typedef struct tag_preroll
47 typedef struct tag_seq NEAR* PSEQ;
48 typedef struct tag_seq
50 DWORD cBuffer; /* Number of streaming buffers to alloc */
51 DWORD cbBuffer; /* Size of each streaming buffer */
52 LPSTR pstrFile; /* Pointer to filename to open */
53 UINT uDeviceID; /* Requested MIDI device ID for MMSYSTEM */
54 UINT uMCIDeviceID; /* Our MCI device ID given to us */
55 UINT uMCITimeFormat; /* Current time format */
56 UINT uMCITimeDiv; /* MCI_SEQ_DIV_xxx for current file */
57 HWND hWnd; /* Where to post MMSG_DONE when done playing */
59 UINT uState; /* Sequencer state (SEQ_S_xxx) */
60 TICKS tkLength; /* Length of longest track */
61 DWORD cTrk; /* Number of tracks */
62 MMRESULT mmrcLastErr; /* Error return from last sequencer operation */
64 PSEQ pNext; /* Link to next PSEQ */
65 HSMF hSmf; /* Handle to open file */
66 HMIDIOUT hmidi; /* Handle to open MIDI device */
67 DWORD dwTimeDivision; /* File time division */
69 LPBYTE lpbAlloc; /* Streaming buffers -- initial allocation */
70 LPMIDIHDR lpmhFree; /* Streaming buffers -- free list */
71 LPMIDIHDR lpmhPreroll; /* Streaming buffers -- preroll buffer */
72 DWORD cbPreroll; /* Streaming buffers -- size of lpmhPreroll */
73 UINT uBuffersInMMSYSTEM; /* Streaming buffers -- in use */
75 TICKS tkBase; /* Where playback started from in stream */
76 TICKS tkEnd; /* Where playback should end */
78 DWORD fdwSeq; /* Various sequencer flags */
86 MMRESULT FNLOCAL seqAllocBuffers(
89 VOID FNLOCAL seqFreeBuffers(
92 MMRESULT FNLOCAL seqOpenFile(
95 MMRESULT FNLOCAL seqCloseFile(
98 MMRESULT FNLOCAL seqPreroll(
100 LPPREROLL lppreroll);
102 MMRESULT FNLOCAL seqStart(
105 MMRESULT FNLOCAL seqPause(
108 MMRESULT FNLOCAL seqRestart(
111 MMRESULT FNLOCAL seqStop(
114 MMRESULT FNLOCAL seqTime(
118 TICKS FNLOCAL seqMillisecsToTicks(
122 DWORD FNLOCAL seqTicksToMillisecs(