1

我正在研究基于 Arduino 的 DMX 控制机制。事实证明,我需要 Pure Data 的帮助。我对 Pd 只熟悉 4 天,所以我希望从这里得到一些帮助。

在 Pd 中,我想从系统扬声器(或麦克风)中获取音频,对其进行分析,并分离不同的频段,如高、中、低,以触发通过 comport 向 Arduino 发送相应消息。

我尝试并成功地在 Arduino 中实现 DMX 信号生成并将消息从 Pd 发送到 Ardunio。我被困在音频处理和决策中。你能帮我解决我的问题吗?

4

3 回答 3

3

[hip~](高通)和[lop~](低通)分离频段有什么问题?您可以随时堆叠它们以获得更高阶的过滤器。

或者使用 iemlib 的高质量高阶贝塞尔、切比雪夫和巴特沃斯过滤器。

于 2016-10-27T11:36:14.973 回答
2

您使用 [adc~] 从麦克风获取信号,然后使用 [fft~] 分析它或任何其他过滤器/分析器对象。要与 arduino 通信,请使用 [comport]。

你会发现很多阅读这个对象的“帮助”的信息,并发送一些代码以获得更具体的帮助。

祝你好运 !

于 2016-11-19T11:28:28.350 回答
2

看一下 PD 附带的 FFT 示例:doc/3.audio.examples/I01.Fourier.analysis.pd

FFT 分析演示

我的 PD 技能相当生疏,但这是将麦克风 (adc~) 放入 FFT 示例的粗略尝试:

基本 FFT 演示

#N canvas 0 22 794 545 10;
#X obj 16 34 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
;
#X obj 16 64 adc~;
#X obj 14 129 peakamp~ 40;
#X floatatom 14 159 5 0 0 0 - - -;
#X obj 108 312 tabwrite~ \$0-real;
#X obj 150 273 tabwrite~ \$0-imaginary;
#X obj 163 7 loadbang;
#X obj 112 87 fft~;
#X msg 344 289 \; pd dsp 1;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-real 64 float 2;
#X coords 0 64 64 -64 256 200 1;
#X restore 467 87 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-imaginary 64 float 2;
#X coords 0 64 64 -64 256 200 1;
#X restore 467 333 graph;
#X obj 153 230 metro 40;
#X text 219 6 when the patch loads;
#X text 44 37 enable mic(ADC);
#X text 103 70 pass data to FFT;
#X text 21 109 test peak amp.;
#X text 163 214 every 40ms;
#X text 162 245 plot imaginary and real FFT components;
#X text 351 265 enable DSP;
#X connect 0 0 1 0;
#X connect 0 0 11 0;
#X connect 1 0 2 0;
#X connect 1 0 7 0;
#X connect 2 0 3 0;
#X connect 6 0 8 0;
#X connect 6 0 11 0;
#X connect 6 0 0 0;
#X connect 7 0 4 0;
#X connect 7 1 5 0;
#X connect 11 0 4 0;
#X connect 11 0 5 0;

(将上述代码段另存为扩展名为 .pd 的文件)

您可能想要访问多个 FFT 箱和它们的平均部分(例如高、中、低),但希望以上内容对初学者有所帮助。

请务必检查fft~对象的帮助页面。

于 2016-10-25T10:54:13.290 回答