I have to say that the problem is not that the delread~ was created after the delwrite~, but that the delwrite~ was created after the line~... as soon as delwrite~ is created after line~ it already *writes* (!) with a delay of one sampleblock. it might be true that delread is working correctly in relation to delwrite (which means it is also one sampleblock delayed), but actually both of them are delayed. the solution with subpatches only helps, if they are connected with a signal inlet~/outlet~. see attached patch. (see also the additional questions in the patch - what happens if you create a feedback with subpatches, are we then back to "order of creation"??)
delwrite~ and delread~ can produce a big mess. maybe there is a better way to "sort" delaylines? I think it is a bug that delwrite~ can be one vector late. and I also think it is also a bug that delread~ can be one vector behind the correlating delwrite~. otoh, I have no solution what to do with signal feedback loops then. maybe delread~ should accept a sorting message? can Pd reorder the signal chain at all?? actually I see no way to bring the for humans obvious logic into the pd signal chain...
marius.
Roman Haefeli wrote:
On Fri, 2008-03-21 at 18:38 -0400, marius schebella wrote:
hmm, first, i think you need [swap 1000] instead of [swap 1], because you want to delay by 1000/44100 milliseconds and not 1/44100 milliseconds. and then, there is this problem that delwrite~/delread~ is sensitive to the order of creation. I attached a small patch, you can see that a delwrite/read that is created before the line~ object works similar to z~, wheras the delwrite/delread that is created after the line~ is one vector behind. I attach a patch for clarification... marius.
Andy Farnell wrote:
[rzero~] and [delwrite~] methods come out louder and with apparently less dynamics. Using [z~] and [fexpr~] I get much closer results to [delta~], more detail in the poured water sound.
let me mention a clean way to solve the issue with a block delay without having to care about creation order. have a look at the doc:
3.audio.examples/G05.execution.oder.pd
roman
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
#N canvas 369 121 927 603 10; #X obj 433 120 cnv 15 200 300 empty empty empty 20 12 0 14 -233017 -66577 0; #X msg 570 143 bang; #N canvas 73 80 496 339 delay-writer 0; #X obj 96 107 inlet~; #X obj 96 181 outlet~; #X obj 116 144 delwrite~ $0-a 10; #X connect 0 0 1 0; #X connect 0 0 2 0; #X restore 442 281 pd delay-writer; #X obj 147 135 cnv 15 200 300 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 550 166 samplerate~; #X obj 550 237 /; #X obj 550 185 t b f; #X obj 550 122 loadbang; #X msg 219 87 bang; #X msg 550 209 1000; #X obj 185 227 line~; #X obj 185 288 z~; #X obj 185 365 print~ z; #X msg 185 199 1 , 100 10000; #X obj 219 112 t b b b b; #N canvas 38 479 463 341 delay-reader 0; #X obj 159 297 outlet~; #X obj 169 249 delread~ $0-a; #X obj 179 211 inlet; #X obj 76 141 inlet~; #X text 38 93 need to have a signal inlet , and that inlet has to be connected from outside (not inside...); #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 442 350 pd delay-reader; #X obj 442 380 print~ delafter2; #X text 454 310 <-- delete this and see that this will delay the delread~/delwrite~ by one vector.; #X text 217 60 trigger printout (turn audio on); #N canvas 365 143 633 335 another_question 0; #X text 94 71 and how do you solve the order in this case???; #N canvas 139 48 450 300 del1 0; #X obj 105 58 inlet~; #X obj 166 140 delwrite~ x; #X obj 105 184 outlet~; #X obj 166 100 delread~ z; #X connect 3 0 1 0; #X connect 3 0 2 0; #X restore 145 156 pd del1; #N canvas 139 48 450 300 del2 0; #X obj 105 58 inlet~; #X obj 105 184 outlet~; #X obj 166 110 delread~ x; #X obj 166 144 delwrite~ y; #X connect 2 0 1 0; #X connect 2 0 3 0; #X restore 252 187 pd del2; #N canvas 139 48 450 300 del3 0; #X obj 105 58 inlet~; #X obj 105 184 outlet~; #X obj 166 110 delread~ y; #X obj 166 144 delwrite~ z; #X connect 2 0 1 0; #X connect 2 0 3 0; #X restore 112 226 pd del3; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X restore 329 474 pd another_question; #X text 182 473 only for the brave -->; #X connect 1 0 4 0; #X connect 2 0 15 0; #X connect 4 0 6 0; #X connect 5 0 15 1; #X connect 6 0 9 0; #X connect 6 1 5 1; #X connect 7 0 4 0; #X connect 8 0 14 0; #X connect 9 0 5 0; #X connect 10 0 11 0; #X connect 10 0 2 0; #X connect 11 0 12 0; #X connect 13 0 10 0; #X connect 14 0 13 0; #X connect 14 2 12 0; #X connect 14 3 16 0; #X connect 15 0 16 0;