【发布时间】:2011-05-19 01:49:59
【问题描述】:
谁能告诉我这里出了什么问题。 delay 有一个带有指针 *p 的缓冲区 (del),但每个样本都输出零 (0)。
(固定延迟 3 秒)
float delay(float *sig, float dtime, float *del, int *p, int vecsize, float sr) {
int dt;
float out;
dt = (int) (dtime*sr);// dtime = 3secs, sr=44100.0
for(int i=0; i<vecsize; i++){
out = del[*p];
del[*p] = sig[i];
sig[i] = out;
*p = (*p != dt-1 ? *p+1 : 0);
}
return *sig;
}
【问题讨论】:
-
其实我相信你会返回
del[*p]。del和p都超出了我们的范围,因此您可能需要发布更多代码/解释您想要实现的目标。 -
我正在尝试在音频上创建延迟效果,即 *sig。是的,两者都是外部分配的。
-
酷,但这并没有真正的帮助。你可以在循环之前打印 del[*p] 吗?
标签: c++ c signal-processing