Hi Hans,

unfortunately I am not really good at C or C++ so I have to stick with
simplifying within Pd until I get there. But I am actually working on it so
I'll be able to replace certain objects in my patches by more efficient
externals. Anyway, I think in the case of simplifying the pduino patch
another external would be rather contra productive.

The optimized multiple debytemasks (up to 56 input pins) as a Pd-patch are
attached. I just called it differently because this was taken from an old
display keypad patch that I had done before.

I am using this in my remote control unit and it's working perfectly.

Ingo


> -----Ursprüngliche Nachricht-----
> Von: Hans-Christoph Steiner [mailto:h...@at.or.at]
> Gesendet: Donnerstag, 15. September 2011 17:48
> An: Ingo
> Cc: 'Roman Haefeli'; pd-list@iem.at
> Betreff: Re: AW: [PD] pduino rewrite
> 
> On Thu, 2011-09-15 at 10:20 +0200, Ingo wrote:
> > > Interesting. How did you quantify the amount of message transfers?
> What
> > > makes it differ so much, like you say?
> >
> > I simply (roughly) counted the numbers of objects the calculation
> including
> > all sub processes have to pass until you get the final result.
> > (Unfortunately I cannot tell how heavy each of these calculations is
> > compared to another one.)
> >
> > I started this a while ago since I am running my machines always at the
> very
> > limit that they can handle. Which is why I started cutting down the
> number
> > of processes needed to get something done wherever possible. Saving 20%
> of
> > the calculations in a machine that's at the limit can make quite a
> > difference. Of course it's the audio processes that are heavier than the
> > control processes.
> >
> > I remember a discussion here a while ago about how heavy the actual
> message
> > transfer is. So keeping calculations as simple and straight forward all
> of
> > the time will keep the machines from getting overloaded earlier than
> > necessary. Which again reminds me that I have to redo lots of old stuff
> for
> > efficiency - never ending story!
> >
> > Ingo
> 
> If you want efficiency in this object, you should implement it in C.
> That should not be hard to do since the Firmata code is C++, but coded
> mostly in a C style.  So you can get all of the parsing and message
> generating code from Firmata.cpp and StandardFirmata.pde, and make a
> compiled object out of it.
> 
> And Ingo, if you implement a fixed the [debytemask] approach, I'll
> included it in the Pduino arduino.pd.
> 
> .hc

#N canvas 504 92 321 208 10;
#N canvas 606 345 294 266 digital_messages 1;
#X obj 43 16 inlet;
#X obj 43 237 outlet;
#X obj 43 43 route 0 1 2 3 4 5 6;
#N canvas 1386 0 534 360 resolve-bits_32-39 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 32 \$1;
#X msg 80 216 digital 33 \$1;
#X msg 140 196 digital 34 \$1;
#X msg 200 216 digital 35 \$1;
#X msg 260 196 digital 36 \$1;
#X msg 320 216 digital 37 \$1;
#X msg 380 196 digital 38 \$1;
#X msg 440 216 digital 39 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 106 150 pd resolve-bits_32-39;
#N canvas 1386 0 534 360 resolve-bits_0-7 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 0 \$1;
#X msg 80 216 digital 1 \$1;
#X msg 140 196 digital 2 \$1;
#X msg 200 216 digital 3 \$1;
#X msg 260 196 digital 4 \$1;
#X msg 320 216 digital 5 \$1;
#X msg 380 196 digital 6 \$1;
#X msg 440 216 digital 7 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 43 70 pd resolve-bits_0-7;
#N canvas 1386 0 534 360 resolve-bits_8-15 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 8 \$1;
#X msg 80 216 digital 9 \$1;
#X msg 140 196 digital 10 \$1;
#X msg 200 216 digital 11 \$1;
#X msg 260 196 digital 12 \$1;
#X msg 320 216 digital 13 \$1;
#X msg 380 196 digital 14 \$1;
#X msg 440 216 digital 15 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 58 90 pd resolve-bits_8-15;
#N canvas 1386 0 534 360 resolve-bits_16-23 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 16 \$1;
#X msg 80 216 digital 17 \$1;
#X msg 140 196 digital 18 \$1;
#X msg 200 216 digital 19 \$1;
#X msg 260 196 digital 20 \$1;
#X msg 320 216 digital 21 \$1;
#X msg 380 196 digital 22 \$1;
#X msg 440 216 digital 23 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 74 110 pd resolve-bits_16-23;
#N canvas 1386 0 534 360 resolve-bits_24-31 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 24 \$1;
#X msg 80 216 digital 25 \$1;
#X msg 140 196 digital 26 \$1;
#X msg 200 216 digital 27 \$1;
#X msg 260 196 digital 28 \$1;
#X msg 320 216 digital 29 \$1;
#X msg 380 196 digital 30 \$1;
#X msg 440 216 digital 31 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 90 130 pd resolve-bits_24-31;
#N canvas 1386 0 534 360 resolve-bits_40-47 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 40 \$1;
#X msg 80 216 digital 41 \$1;
#X msg 140 196 digital 42 \$1;
#X msg 200 216 digital 43 \$1;
#X msg 260 196 digital 44 \$1;
#X msg 320 216 digital 45 \$1;
#X msg 380 196 digital 46 \$1;
#X msg 440 216 digital 47 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 122 170 pd resolve-bits_40-47;
#N canvas 1386 0 534 360 resolve-bits_48-55 0;
#X obj 200 18 inlet;
#X obj 200 320 outlet;
#X obj 380 129 mod 128;
#X obj 320 129 mod 64;
#X obj 260 129 mod 32;
#X obj 200 129 mod 16;
#X obj 140 129 mod 8;
#X obj 80 129 mod 4;
#X obj 20 129 mod 2;
#X obj 80 149 div 2;
#X obj 440 149 div 128;
#X obj 140 149 div 4;
#X obj 200 149 div 8;
#X obj 260 149 div 16;
#X obj 320 149 div 32;
#X obj 380 149 div 64;
#X obj 20 169 change -1;
#X obj 80 169 change -1;
#X obj 140 169 change -1;
#X obj 200 169 change -1;
#X obj 260 169 change -1;
#X obj 320 169 change -1;
#X obj 380 169 change -1;
#X obj 440 169 change -1;
#X obj 200 55 change -1;
#X msg 20 196 digital 48 \$1;
#X msg 80 216 digital 49 \$1;
#X msg 140 196 digital 50 \$1;
#X msg 200 216 digital 51 \$1;
#X msg 260 196 digital 52 \$1;
#X msg 320 216 digital 53 \$1;
#X msg 380 196 digital 54 \$1;
#X msg 440 216 digital 55 \$1;
#X obj 440 129 mod 256;
#X connect 0 0 24 0;
#X connect 2 0 15 0;
#X connect 3 0 14 0;
#X connect 4 0 13 0;
#X connect 5 0 12 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 8 0 16 0;
#X connect 9 0 17 0;
#X connect 10 0 23 0;
#X connect 11 0 18 0;
#X connect 12 0 19 0;
#X connect 13 0 20 0;
#X connect 14 0 21 0;
#X connect 15 0 22 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 28 0;
#X connect 20 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 31 0;
#X connect 23 0 32 0;
#X connect 24 0 2 0;
#X connect 24 0 3 0;
#X connect 24 0 4 0;
#X connect 24 0 5 0;
#X connect 24 0 6 0;
#X connect 24 0 8 0;
#X connect 24 0 7 0;
#X connect 24 0 33 0;
#X connect 25 0 1 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 1 0;
#X connect 31 0 1 0;
#X connect 32 0 1 0;
#X connect 33 0 10 0;
#X restore 138 190 pd resolve-bits_48-55;
#X connect 0 0 2 0;
#X connect 2 0 4 0;
#X connect 2 1 5 0;
#X connect 2 2 6 0;
#X connect 2 3 7 0;
#X connect 2 4 3 0;
#X connect 2 5 8 0;
#X connect 2 6 9 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X connect 9 0 1 0;
#X restore 195 134 pd digital_messages;
_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to