codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
TCHAR* DrumFileRead(DRUM* pdrum, TCHAR* szFileName) { DRUM drum; HMMIO hmmio; int i, iFormat; MMCKINFO[3] mmckinfo; // Open the file hmmio = mmioOpen(szFileName, NULL, MMIO_READ); if (hmmio == NULL) return szErrorNotFound; // Locate a "RIFF" chunk with a "DRUM" form-type mmckinfo[0].ckid = mmioStringToFOURCC(szDrumID, 0); if (mmioDescend(hmmio, &mmckinfo[0], NULL, MMIO_FINDRIFF)) { mmioClose(hmmio, 0); return szErrorNotDrum; } // Locate, read, and verify the "fmt " sub-chunk mmckinfo[1].ckid = mmioStringToFOURCC(szFmtID, 0); if (mmioDescend(hmmio, &mmckinfo[1], &mmckinfo[0], MMIO_FINDCHUNK)) { mmioClose(hmmio, 0); return szErrorNotDrum; } if (mmckinfo[1].cksize != int.sizeof) { mmioClose(hmmio, 0); return szErrorUnsupported; } if (mmioRead(hmmio, cast(PSTR)&iFormat, int.sizeof) != int.sizeof) { mmioClose(hmmio, 0); return szErrorCannotRead; } if (iFormat != 1 && iFormat != 2) { mmioClose(hmmio, 0); return szErrorUnsupported; } // Go to end of "fmt " sub-chunk mmioAscend(hmmio, &mmckinfo[1], 0); // Locate, read, and verify the "data" sub-chunk mmckinfo[1].ckid = mmioStringToFOURCC(szDataID, 0); writeln((cast(char*)&mmckinfo[1].ckid)[0..4]); if (mmioDescend(hmmio, &mmckinfo[1], &mmckinfo[0], MMIO_FINDCHUNK)) { mmioClose(hmmio, 0); return szErrorNotDrum; } if (mmckinfo[1].cksize != DRUM.sizeof) { mmioClose(hmmio, 0); return szErrorUnsupported; } if (mmioRead(hmmio, cast(LPSTR)&drum, DRUM.sizeof != DRUM.sizeof)) { mmioClose(hmmio, 0); return szErrorCannotRead; } // Close the file mmioClose(hmmio, 0); // Convert format 1 to format 2 and copy the DRUM structure data if (iFormat == 1) { for (i = 0; i < NUM_PERC; i++) { drum.dwSeqPerc [i] = drum.dwSeqPian [i]; drum.dwSeqPian [i] = 0; } } *pdrum = drum; return NULL; }
Private
[
?
]
Run code
Submit