使用gen~进行onset检测时Max/MSP信号自动循环原因排查
问题:Max/MSP gen~ onset检测补丁出现意外循环行为
我正在开发基于Max/MSP的音频处理补丁,通过gen组件实现音频信号的onset检测功能。但播放过程中发现信号会自动循环,尽管我并未设置任何显式循环行为,且gen的GenExpr代码中也没有触发循环的逻辑(我对GenExpr语言并不熟悉,若有疏漏敬请谅解)。
相关GenExpr代码
if(calc){ num_calcs = 0; while((cbuf_size < max_onsets) && (idx < signal_len)){ reset = (idx == 0); x = signal.peek(idx, 0); x = isStereo == 1 ? abs((x + signal.peek(idx,1)) * 0.5) : x; new_onset = onset_detection(x, thresh_low, thresh_high, gate_time_samps, reset); if(new_onset){ onset_times.poke(idx, cbuf_size, 0); cbuf_size += 1; display.poke(1, idx/signal_len, index="phase"); slice_triggered = 1; // Trigger the slice only once } // Reset slice_triggered after processing a slice if(idx % block_size == 0){ slice_triggered = 0; } idx += 1; num_calcs += 1; if(num_calcs >= (block_size - 1)){ break; } } num_onsets = cbuf_size; calc = idx < signal_len; }
补充说明
- Max/MSP是一款可视化编程语言
- GenExpr是Max使用的文本编程语言(Stack Overflow暂无
GenExpr标签)
内容的提问来源于stack exchange,提问作者Tommy 2000
相关产品推荐
相关产品推荐

