我有兴趣确定audio样本的音乐键。 一个algorithm怎么会(或者可能)如何去逼近音乐audio样本的关键? Antares Autotune和Melodyne是做这种事情的两个软件。 任何人都可以给一些外行人的解释,说明这将如何工作? 通过分析和弦进行的频谱等来math推断歌曲的关键。 这个话题让我很感兴趣! 编辑 – 从每个对这个问题作出贡献的人都能find丰富的信息 。 尤其来自the_mandrill和DanielBrückner。
我最近将我的volumeraycaster从OpenGL移植到了OpenCL,这使得raycaster的性能降低了大约90%。 我跟踪了OpenCL的图像采样函数的性能下降,这些函数比相应的OpenGL纹理采样函数慢得多。 通过去除图像采样函数和纹理采样函数,两个raycaster实现具有相同的速度。 为了轻松实现不同硬件上的function,并排除其他RT代码中的一些愚蠢的错误,我写了一个小的基准,比较OpenCL采样速度和OpenGL采样速度,并在不同的机器上testing它, OpenCL仍然只有OpenGL性能的10%。 基准的OpenCL HostCode(至less是其中最重要的部分): void OGLWidget::OCLImageSampleTest() { try { int size=8; float Values[4*size*size*size]; cl::Kernel kernel=cl::Kernel(program,"ImageSampleTest",NULL); cl::ImageFormat FormatA(CL_RGBA,CL_FLOAT); cl::Image3D CLImage(CLcontext, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR ,FormatA,size,size,size,0,0,Values,NULL); cl::ImageFormat FormatB(CL_RGBA,CL_UNSIGNED_INT8); cl::Image2D TempImage(CLcontext, CL_MEM_WRITE_ONLY,FormatB,1024,1024,0,NULL,NULL ); kernel.setArg(0, CLImage); kernel.setArg(1, TempImage); cl::Sampler Samp; Samp() = clCreateSampler( CLcontext(), CL_TRUE, CL_ADDRESS_REPEAT, CL_FILTER_LINEAR, NULL); kernel.setArg(2, Samp); QTime BenchmarkTimer=QTime(); BenchmarkTimer.start(); cl::KernelFunctor func = kernel.bind(queue, […]