Ik ben bezig met een progje dat een ingeladen wav file afspeelt. Omdat ik tijdens het afspelen realtime een filter wil toepassen, wordt de wave in 2 kleine buffertjes opgedeeld die omdebeurt via WaveOutWrite worden afgespeeld. Details zijn verder niet zo relevant, het werkt prima tot zover.
Het probleem is nu dat waveoutwrite etc. (API calls) werken met de pointer die naar de eigenlijke data verwijst. Deze data is niets anders dan een array van integers (16 bit wave).
Ik heb dus de beschikking over de pointer naar de wave data. Ik kan de data opdelen door WAVEHEADERS te definieren die naar kleine 'chunks' van de data wijzen door relatief aan de pointer te refereren (BufferIn + 256 bijvoorbeeld)
Wat ik echter NIET kan is direct bij de data zelf komen! Ik zou natuurlijk een volledige kopie (of iedere keer fragmentjes van een aantal kbytes) van de data kunnen maken met
CopyStructFromPtr
maar dat vind ik geen mooie oplossing omdat de data al aanwezig is. In C++ kun je simpel de-referencen, maar in VB lukt me dat dus niet. Heb lang gezocht, mooie artikels gevonden over pointers etc maar nou juist niet hetgene ik wil. (Een mooie pagina is http://www.thevbzone.com/secrets.htm , MSDN: http://support.microsoft....spx?scid=kb;en-us;Q199824
Weet iemand hoe ik direct over de data achter die bufferIn pointer kan beschikken?
Het probleem is nu dat waveoutwrite etc. (API calls) werken met de pointer die naar de eigenlijke data verwijst. Deze data is niets anders dan een array van integers (16 bit wave).
code:
1
2
3
4
5
6
7
8
| 'Pointer naar wavedata declareren Dim bufferIn As Long .... ' Allocate soundbuffer and read sound data GlobalFree hmem hmem = GlobalAlloc(&H40, mmckinfoSubchunkIn.ckSize) bufferIn = GlobalLock(hmem) rc = mmioRead(hmmioIn, bufferIn, mmckinfoSubchunkIn.ckSize) |
Ik heb dus de beschikking over de pointer naar de wave data. Ik kan de data opdelen door WAVEHEADERS te definieren die naar kleine 'chunks' van de data wijzen door relatief aan de pointer te refereren (BufferIn + 256 bijvoorbeeld)
Wat ik echter NIET kan is direct bij de data zelf komen! Ik zou natuurlijk een volledige kopie (of iedere keer fragmentjes van een aantal kbytes) van de data kunnen maken met
CopyStructFromPtr
maar dat vind ik geen mooie oplossing omdat de data al aanwezig is. In C++ kun je simpel de-referencen, maar in VB lukt me dat dus niet. Heb lang gezocht, mooie artikels gevonden over pointers etc maar nou juist niet hetgene ik wil. (Een mooie pagina is http://www.thevbzone.com/secrets.htm , MSDN: http://support.microsoft....spx?scid=kb;en-us;Q199824
Weet iemand hoe ik direct over de data achter die bufferIn pointer kan beschikken?