Having some problems with FSOUND_Sample_Load…
I have a function that loads a simple wave file for me. It works as expected if I specify a file name directly in the FSOUND_Sample_Load call, but can’t seem to find it (at least it won’t play anything) if I call it with a char *.
char tmp; char *p = (char *)tempStr.GetBuffer(1); strcpy(tmp,p); dahstream = FSOUND_Sample_Load(FSOUND_FREE, p, FSOUND_8BITS,0); tempStr.ReleaseBuffer( ); // This works as expected // dahstream = FSOUND_Sample_Load(FSOUND_FREE, // "\\Program Files\\PocketPC\\800_15_8000.wav", // FSOUND_8BITS,0); sampleLength = FSOUND_Sample_GetLength(dahstream); FSOUND_SetPriority(0,255);
I know I’m missing something obvious and that someone else has run into this. Any hints?
Additionally, I’d really like to turn this function into a version that loads the wave into memory. I’m thinking that I’ll need to use:
dahstream = FSOUND_Sample_Load(FSOUND_FREE,
but I don’t have a good example to look at to calculate numBytes.
Any ideas? Thanks in advance.
- dxmonger asked 15 years ago
I think it is something to do with CString. Try this…
char *p = “\Program Files\PocketPC\800_15_8000.wav”;
dahstream = FSOUND_Sample_Load(FSOUND_FREE, p, FSOUND_8BITS, 0);
I think you will find that will work. If you insist on using CString, then try this…
dahstream = FSOUND_Sample_Load(FSOUND_FREE, (char *)tempStr.GetBuffer(1), FSOUND_8BITS, 0);
I’m not sure what the parameter to GetBuffer means (I have never used CString) or what it actually returns.
This seems to prove the KISS principle. Using CString just adds a level of complexity that is not really required and is just another place for something to go wrong.
Oh, and FSOUND_LOADMEMORY loads the file FROM memory, not into memory. When FSOUND_LOADMEMORY is used, the filename parameter is used as a pointer to the file in memory. numbytes is the length of the file in memory so FMOD knows when it has reached the end of the file.
Please login first to submit.