我正在研究基于Arduino的DMX控制机制。 事实证明,我需要Pure Data的帮助。我对Pd只有4天的熟悉,所以我希望能从这里得到一些帮助。
在Pd中我希望从系统扬声器输出音频(或麦克风),分析它,并分离不同的频段,如高,中,低,以触发相应的Arduino通过comport发送消息。 /强>
我尝试并成功在Arduino中实现DMX信号生成并从Pd向Ardunio发送消息。 我被困在音频处理和决策中。你能帮我解决一下我的问题吗?
答案 0 :(得分:3)
[hip~]
(高通)和[lop~]
(低通)分隔频段有什么问题?您可以随时堆叠它们以获得更高阶的过滤器。
或使用iemlib的高品质高阶bessel,chebycheff和butterworth过滤器。
答案 1 :(得分:2)
查看PD附带的FFT示例:doc/3.audio.examples/I01.Fourier.analysis.pd
我的PD技能非常生疏,但这是一个粗略的刺激麦克风(adc~)进入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~
对象的帮助页面。
答案 2 :(得分:2)
您使用[adc~]从麦克风获取信号,然后使用[fft~]分析它或任何其他滤镜/分析器对象。与arduino使用[comport]进行通信。
你会发现很多信息都在阅读这些对象的“帮助”,并发送一些代码来获得更具体的帮助。
祝你好运!