So, I need to convert a float[] to an int[] for some use with audio. The conversion operation is to multiply each sample (the value) with 0x7FFF_0000, and decrement with .5f, round this operation to an int and store it as the new sample.
So here's how a float>int conversion looks like: http://codepad.org/bqINREKG Now, I wanted to replace the foreach loop with a vector op. So first I've tried this: writeTo[] = to!int((data[] * 0x7FFF_0000) - 0.5f) This won't work. I've tried to do a simple cast: writeTo[] = cast(int[])((data[] * 0x7FFF_0000) - 0.5f); floatToInt.d(26): Error: Array operation data[] * 0x1.fffcp+30F - 0.5F not implemented Same thing if I use to!int[]. I'm not sure what this error means. Unfortunately I have little understanding of vector ops. Is there any way to use a vector op that operates on floats but stores each result as an int? Btw, the *actual* definition of a single channel is: void*[2] buffers; These are two "half-buffers", meaning that the soundcard reads from one half-buffer while the client fills the other half. Should I be worried that these are typed as void*? I mean I've read something about a GC problem where the GC could interpret the value stored in a void* as a pointer to random data in the heap, which could lead to memory leaks, or something of that sort.
