public override SpectrumContainer CreateSpectrum(SpectrumCreatorSettings settings) { //settings.AudioContainer.SampleRate var slices = new List <SpectrumSlice>(); for (var frequency = settings.SpectrumMinFrequency; frequency < settings.SpectrumMaxFrequency; frequency += settings.SpectrumFrequencyStep) { var scale = frequency; for (int i = 0; i < 100; i++) { } } Console.WriteLine("!!!"); var container = new SpectrumContainer(slices); return(container); }
public override unsafe SpectrumContainer CreateSpectrum(SpectrumCreatorSettings settings) { nuint signalsBufferElementsCount = (nuint)AudioContainer.SamplesCount; nuint signalsBufferSize = signalsBufferElementsCount * sizeof(float); var signalsBuffer = _cl.CreateBuffer(_context, CLEnum.MemReadOnly, signalsBufferSize, null, out var errorCode); CheckSuccess(errorCode); nuint bufferOutputElementsCount = 10; nuint bufferKernelOutputSize = bufferOutputElementsCount * sizeof(float); var bufferKernelOutput = _cl.CreateBuffer(_context, CLEnum.MemWriteOnly, bufferKernelOutputSize, null, out errorCode); CheckSuccess(errorCode); var signalsInputHostBuffer = new UnmanagedArray <float>(signalsBufferElementsCount); signalsInputHostBuffer[0] = 6; signalsInputHostBuffer[1] = 8; _cl.EnqueueWriteBuffer(_commandQueue, signalsBuffer, true, 0, signalsBufferSize, signalsInputHostBuffer, 0, 0, out var @event); var res = _cl.SetKernelArg(_kernelHandle, 0, (nuint)sizeof(nuint), signalsBuffer); CheckSuccess(res); res = _cl.SetKernelArg(_kernelHandle, 1, (nuint)sizeof(nuint), bufferKernelOutput); CheckSuccess(res); //var globalWorkSize = new UnmanagedArray<nuint>(3) //{ // bufferInputElementsCount, 0, 0 //}; var localWorkSize = new UnmanagedArray <nuint>(3) { 1, 1, 1 }; res = _cl.EnqueueNdrangeKernel(_commandQueue, _kernelHandle, 1, 0, signalsBufferElementsCount, localWorkSize, 0, null, out var calculateEvent); CheckSuccess(res); _cl.Finish(_commandQueue); var outputHostBuffer = new UnmanagedArray <float>(bufferKernelOutputSize / sizeof(float)); res = _cl.EnqueueReadBuffer(_commandQueue, bufferKernelOutput, true, 0, bufferKernelOutputSize, outputHostBuffer, 0, null, out @event); CheckSuccess(res); var slices = new List <SpectrumSlice>(); SpectrumContainer = new SpectrumContainer(slices); var x = outputHostBuffer[0]; _cl.ReleaseMemObject(signalsBuffer); _cl.ReleaseMemObject(bufferKernelOutput); _cl.ReleaseKernel(_kernelHandle); _cl.ReleaseProgram(_program); return(SpectrumContainer); }