Trying to create Variable speed delay, but buffer clears when read index is same as write index.
Trying to create Variable speed delay, but buffer clears when read index is same as write index. I have done some additional patching to try and avoid this, in the "pd equal-block" subpatch, however it still seems to be happening. All the echoes stop when the indexes pass each other.Can anyone give me any guidance? Patch is pasted below.
#N canvas 678 88 1242 928 12;
#X obj 269 89 samplerate~;
#X msg 170 138 resize $1;
#X obj 401 60 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#fcfcfc #000000 #000000 1 256 0 0 1 0;
#X obj 277 111 * 1;
#X msg 401 26 1;
#X obj 95 165 array define sampler1;
#X msg 517 139 set sampler1;
#X obj 901 732 dac~;
#X obj 519 387 *~ 44100;
#X obj 518 353 phasor~ 1;
#X obj 915 289 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#fcfcfc #000000 #000000 1 256 0 0 1 0;
#X text 462 55 buffer size (s);
#X text 937 141 playback speed;
#X obj 1005 456 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 #fcfcfc
#000000 #000000 0 1 0 1;
#X obj 1005 626 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0
10 #fcfcfc #000000 #000000 0 256 0 0 1 0;
#X obj 1005 606 / 127;
#X obj 1005 674 line~;
#X obj 900 693 *~;
#X obj 921 66 vsl 15 128 0 512 0 0 empty empty empty 0 -9 0 10 #fcfcfc
#000000 #000000 9525 1 0 1;
#X obj 918 242 * 4;
#X obj 919 263 - 2;
#X obj 920 223 / 512;
#X msg 920 27 384;
#X obj 107 217 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 #fcfcfc
#000000 #000000 0 1 0 1;
#X obj 114 355 / 127;
#X obj 612 322 line~;
#X msg 923 319 $1 100;
#X obj 115 378 * 4410;
#X obj 686 464 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 #fcfcfc
#000000 #000000 0 1 0 1;
#X obj 686 620 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#fcfcfc #000000 #000000 0 256 0 0 1 0;
#X obj 686 600 / 127;
#X obj 686 668 line~;
#X obj 670 695 *~;
#X text 1024 539 volume;
#X text 131 282 osc freq;
#X text 705 522 feedback;
#X msg 867 263 set $1;
#X obj 50 400 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#fcfcfc #000000 #000000 0 256 0 0 1 0;
#X msg 23 373 set $1;
#X obj 48 438 line~;
#X msg 48 418 $1 100;
#X msg 686 638 $1 100;
#X msg 1008 644 $1 100;
#X text 939 69 2x;
#X text 939 196 -2x;
#X obj 517 160 s smplr;
#X obj 420 809 r smplr;
#X obj 839 457 r smplr;
#X obj 475 694 +~, f 4;
#X obj 49 470 osc~ 441;
#X obj 498 830 poke~;
#X obj 316 9 loadbang;
#X obj 315 30 t b b b;
#X obj 289 12 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000
#000000 1;
#X obj 58 720 adc~;
#X obj 111 593 vsl 8 128 0 127 0 0 empty empty empty 0 -9 0 10 #fcfcfc
#000000 #000000 0 1 0 1;
#X obj 111 763 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#fcfcfc #000000 #000000 0 256 0 0 1 0;
#X obj 111 743 / 127;
#X obj 111 811 line~;
#X obj 94 835 *~;
#X msg 114 781 $1 100;
#X text 130 676 dry sgnl;
#X obj 180 306 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 #fcfcfc
#000000 #000000 0 1 0 1;
#X obj 180 476 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#fcfcfc #000000 #000000 0 256 0 0 1 0;
#X obj 180 456 / 127;
#X obj 180 524 line~;
#X obj 75 543 *~;
#X text 199 389 volume;
#X msg 183 494 $1 100;
#X obj 621 387 *~ 44100;
#X obj 620 353 phasor~ 1;
#X obj 292 145 t b f f;
#X obj 901 484 tabread4~;
#X obj 371 487 edge~;
#X obj 371 518 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000 1;
#X obj 484 110 t b b;
#X obj 845 297 t f b;
#X obj 371 455 expr~ \$v1 == \$v2;
#N canvas 160 562 509 371 equal-block 0;
#X obj 231 34 inlet~;
#X obj 365 32 inlet~;
#X obj 240 306 outlet~;
#X obj 183 250 *~;
#X obj 316 250 *~ -1;
#X obj 135 175 edge~;
#X obj 135 201 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000 1;
#X obj 327 165 edge~;
#X obj 327 191 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000 1;
#X obj 178 88 -~;
#X obj 178 112 abs~;
#X obj 178 139 expr~ \$v1 >= \$v2;
#X obj 311 139 expr~ \$v1 < \$v2;
#X floatatom 383 72 5 0 0 0 - - - 0 0 1, f 5;
#X obj 383 99 sig~ 4;
#X obj 443 21 inlet;
#X msg 443 54 1;
#X connect 0 0 9 0;
#X connect 1 0 9 1;
#X connect 1 0 3 1;
#X connect 3 0 2 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 5 0;
#X connect 11 0 3 0;
#X connect 12 0 4 0;
#X connect 12 0 7 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X connect 14 0 12 1;
#X connect 15 0 16 0;
#X connect 16 0 13 0;
#X restore 584 419 pd equal-block;
#X connect 0 0 3 0;
#X connect 1 0 5 0;
#X connect 2 0 3 1;
#X connect 3 0 71 0;
#X connect 4 0 2 0;
#X connect 6 0 45 0;
#X connect 8 0 78 0;
#X connect 8 0 50 1;
#X connect 8 0 77 0;
#X connect 9 0 8 0;
#X connect 10 0 26 0;
#X connect 10 0 76 0;
#X connect 13 0 15 0;
#X connect 14 0 42 0;
#X connect 15 0 14 0;
#X connect 16 0 17 1;
#X connect 17 0 7 0;
#X connect 17 0 7 1;
#X connect 18 0 21 0;
#X connect 19 0 20 0;
#X connect 20 0 36 0;
#X connect 20 0 26 0;
#X connect 20 0 76 0;
#X connect 21 0 19 0;
#X connect 22 0 18 0;
#X connect 23 0 24 0;
#X connect 24 0 27 0;
#X connect 25 0 70 0;
#X connect 26 0 25 0;
#X connect 27 0 38 0;
#X connect 27 0 40 0;
#X connect 28 0 30 0;
#X connect 29 0 41 0;
#X connect 30 0 29 0;
#X connect 31 0 32 1;
#X connect 32 0 48 1;
#X connect 36 0 10 0;
#X connect 37 0 40 0;
#X connect 38 0 37 0;
#X connect 39 0 49 0;
#X connect 40 0 39 0;
#X connect 41 0 31 0;
#X connect 42 0 16 0;
#X connect 46 0 50 0;
#X connect 47 0 72 0;
#X connect 48 0 50 0;
#X connect 49 0 66 0;
#X connect 51 0 52 0;
#X connect 52 0 75 0;
#X connect 52 1 0 0;
#X connect 52 2 4 0;
#X connect 52 2 78 2;
#X connect 53 0 52 0;
#X connect 54 0 48 0;
#X connect 54 0 59 0;
#X connect 55 0 57 0;
#X connect 56 0 60 0;
#X connect 57 0 56 0;
#X connect 58 0 59 1;
#X connect 59 0 17 0;
#X connect 60 0 58 0;
#X connect 62 0 64 0;
#X connect 63 0 68 0;
#X connect 64 0 63 0;
#X connect 65 0 66 1;
#X connect 66 0 59 0;
#X connect 66 0 48 0;
#X connect 68 0 65 0;
#X connect 69 0 78 1;
#X connect 70 0 69 0;
#X connect 71 1 1 0;
#X connect 71 2 8 1;
#X connect 71 2 69 1;
#X connect 71 2 70 1;
#X connect 72 0 17 0;
#X connect 72 0 32 0;
#X connect 73 0 74 0;
#X connect 75 0 22 0;
#X connect 75 1 6 0;
#X connect 77 0 73 0;
#X connect 78 0 72 0;
#X connect 78 0 77 1;
Are there any resources on manipulating waveforms in interesting ways, like for example mirroring a waveform along either axis, or something similar to the bend options in serum?
@schitz I don't know serum but I glanced at a few demo vids, and like @seb-harmonik.ar says, the stuff you want to look into is waveshaping and wavetables.
For the particular mirror effect, I take it you mean the possibilty to draw a wave segment and have it played back with a mirrored segment as discussed here: https://www.youtube.com/watch?v=JVCH-IiDmnc&t=311s
- I made a crude demo patch to illustrate how that can be done with some basic waveshaping and table tricks. Mind you, this is "proof of concept", not "plug and play" -> WaveDrawMirror.pd
Since you asked for resources, why not check out Miller Puckette's book -> http://msp.ucsd.edu/techniques/latest/book-html/node26.html (wavetables) + http://msp.ucsd.edu/techniques/latest/book-html/node78.html (waveshaping) - Don't get scared by the hairy math, there are illustrative examples with counterparts in your pd installation (help->browser->puredata->3.audio.examples)
4 ch (quad) reverb
Room simulation in reverb is a dead end. Give it a bit of thought... To reproduce all the discrete echoes of a room, their phase difference, how they bounce back and forth between walls, is a hopeless task. All the good reverb designs are based on what sounds good rather than realistic simulation.
@whale-av is right about doubling a nice sounding verb, changing the settings slightly on each and feeding them into each other. But if you are assuming your sound source and receptor to be at the center of the room, you don't need 4 channels, as left distance = right distance, and front distance = back distance. Indeed if you are assuming a quadratic room with speaker and mic at the exact center you only need one channel!
I find Puckette's algorithm to be very efficient and convincing (rev2~ and rev3~) compared to freeverb which is based on a very arcane algorithm (Schroeder back in the 60ties). Both [rev2~] and [rev3~] have 4 outlets so they can be used for quad mixing, What puckette's algorithm is missing maybe is the allpass smudge of the freeverb/schroeder models...
See also this video on reverb design which goes through the history of reverb algorithms:
[ANN] Scheme for Pure Data 0.1 - script and live-code Pd with Lisp
Hi everyone, I'm excited to announce that Scheme for Pd (aka s4pd) is now code complete for version 0.1 and ready for people to use, though it does still require building from source at the moment. This should "just work" with the Makefile, let me know if not.
Scheme for Pd is an open-source external for live-coding and scripting Pd with an embedded s7 Scheme Lisp interpreter. It is a port of most of Scheme for Max, also by me, for Max/MSP. s7 is an embeddable minimal Scheme implementation by Bill Schottstaedt at CCRMA, with many nice features for algorithmic composition and embedding. It's the Scheme engine used in the Common Music algorithmic composition toolkit and the Snd audio editor, and has keywords, Common Lisp style macros, first-class environments, thread safety, applicative syntax, and a very straight forward FFI (foreign function interface).
Features in beta 0.1:
-
run code from files, and hot reload files during playback
-
evaluate scheme code from Pd messages live with a REPL
-
keeps on playing fine when you go into edit mode
-
output numbers, symbols, lists, vectors (as Pd lists)
-
basic array i/o
-
send messages to named receivers
-
schedule functions with delay, using the Pd scheduler
The GitHub project page is here. Please file issues there if you find bugs or the help is unclear. I'm sure there are still some issues!
https://github.com/iainctduncan/scheme-for-pd
If you've not used Scheme before, I've written a crash course for Scheme for Max which should almost all apply here:
https://iainctduncan.github.io/learn-scheme-for-max/introduction.html
There are various videos on the youtube channel demoing things you can do with the Max version, which might be of interest, as they should mostly port over without issue. I will be making Pd specific ones in the future.
https://www.youtube.com/channel/UC6ftX7yuEi5uUFkRVJbJyWA
If you can help with testing and making builds on Windows and Linux, please let me know. I think this version should be ready for a binary release now.
Enjoy,
iain
2021-02-18_20-57-10-first recording of my program creating his video and music as he watches what he creates
2021-02-18_20-57-10-first recording of my program creating his video and music as he watches what he creates
my programs first fully autonomous music-video production where he is reacting to the video his music creates and thereby alters the video he is watching.
notes:
I am gearing up to sharing the patch, but it is not quite ready yet.
So will explain more about when it's done.
Currently, can say this:
This is with:
my usb camera pointed at the screen
where his projectM visualization is being rendered
according to the music
his reaction
to the visualization
creates.
So a visual loop (which also outputs audio) according to the visual stimulus itself provides.
I.e. He sees the visual, makes music stimulated by it, then changes the visual he is reacting to.
International Faust Conference (IFC-20)
This is not directly related to Pd but you might be interested in this conference because you can run Faust code inside Pd and you can generate Pd externals using Faust. Moreover, Faust is open-source and the conference is free and available to everyone 🙂
The Second International Faust Conference (IFC-20) will take place by teleconferencing on December 1-2, 2020. It aims at gathering researchers, developers, musicians, computer artists using the Faust programming language to present current works, creations and projects and discuss future directions for Faust and its community. The 2020 edition is organized by the CICM (Centre de Recherches Informatique et Création Musicale) / the MUSIDANSE Lab / the Université Paris 8.
In 2020, we will put a special focus on artistic, pedagogical, preservation and student projects made with Faust, as well as on the use of this language in mixed music on the Seine Saint-Denis territory. A workshop will bring together young musicians from Saint-Denis Conservatory with their professors, and students from the Music Department of Paris 8 University programming in Faust.
The conference will propose sessions of paper presentations, as well as thematic round tables, demonstrations and tutorials, and artistic events with a concert of music pieces and the exhibition of installations using Faust.
Details and presentation: https://ifc20.sciencesconf.org/
See the call for papers, workshops and creations
Practical information
The conference and all its events will take place remotely and are free.
The registration is mandatory on the conference website:
https://ifc20.sciencesconf.org/registration
The conference is supported by the AFIM (Association francophone d'Informatique Musicale, through the call for projects of the DGCA of the French Ministry for Culture and Communication) and the Maison des Sciences de l'Homme Paris Nord (through the 2020 call for projects).
Can Pd busy wait?
@jameslo Yes, this is unfortunate.
Another way to approach this, although not really solving the issue, would be to decouple the array the algorithm is operating on from the visual display.
Here i added a second array and the visuals are just performed by pipes: quicksort with delay.pd
So the algorithm is carried out immediately on the first array, but the display on the graphic array is delayed. 
Looking for Car Racing Sound Patch
I moved the "Win64" folder into the extra folder, renamed it to "STD" and in my patch I put an [declare -lib STD] object in it. The [motor~] is not working in Pd and STD doesn't contain any Pd patches.
I created a pd Motor Engine, but if I reopen my Motor Engine it says "ead~ couldn't create". If I open the ead.pd and then my motor engine patch, the ead~ object can be created. I put into my motor engine patch the Pd META object from the ead.pd, but it is still not working.
Best way to create random seed on [loadbang] with vanilla?
@Jona Yes, i believe at the core of each random algorithm is a cryptographic hash algorithm. A hash algorithm provides an output for each input in such a way that you cannot determine the input if you only know the output, even if you know the algorithm.
The only way to determine the input would be by brute force, that means calculating the outputs for all possible inputs within a given range and storing all input-output pairs in a huge so called rainbow table. With that you can look up the input for any output.
But other than that you cannot for example see any connection between hash(12) and hash(13). The inputs are close together, but the outputs are completely distinct.
With this you can generate a chain of numbers that seem completely random but are in fact mathematically determined. Only if you add outside unpredictable information, entropy, to the mix, the results can become truly random. Or at least have a random starting point if the entropy is added only in the beginning.
For actual cryptography it is crucial to get good entropy into the system, as the algorithms are usually known and well researched and every bit of information about the starting condition can help to decipher the encrypted code.
But for Pd purposes it doesn't have to be that complicated. The actual time would be enough, if only Pd had an object for that.
In one of the examples above [time] from zexy was used. But again, there is the problem with raspberry pis that don't have internet access. They don't have a battery to keep a clock running when they are off, so they always start at the same date after booting. So of course you would have some different time after Pd has started, but it is not as reliable as it would seem at first glance. 
Assistance compiling a PD external for Windows ?
Giải đáp: Cửa gỗ công nghiệp loại nào tốt?
Cửa gỗ công nghiệp đang là sản phẩm được sử dụng thịnh hành trong nhiều năm trở lại đây bởi tính thẩm mỹ cao cùng với chất lượng cải tiến vượt trội. Và để đáp ứng được nhu cầu sử dụng lớn thì có rất nhiều loại cửa gỗ công nghiệp ra đời khiến người tiêu dùng cảm thấy phân vân và bối rối lựa chọn mẫu sản phẩm nào có chất lượng tốt nhất. Vậy bạn nhất định không thể bỏ lỡ những thông tin dưới đây để có câu trả lời cho “Cửa gỗ công nghiệp loại nào tốt?”.
Nên chọn cửa gỗ công nghiệp loại nào?
Để có thể biết được cửa gỗ công nghiệp loại nào tốt, bạn hãy tham khảo Top những sản phẩm được chúng tôi khảo sát và tổng hợp qua những lời review của khách hàng sử dụng trước đó.
Cửa gỗ công nghiệp Composite
Nằm trong Top đầu những mẫu cửa gỗ công nghiệp có chất lượng tốt chúng ta không thể không nhắc đến dòng cửa gỗ nhựa composite. Loại cửa này có tính ổn định tương đối cao và có ưu điểm đặc biệt là khả năng chống nước hoàn hảo. Và một trong những yếu tố làm nên điều đó là nó có cấu tạo bao gồm các hạt PVC kết hợp các chất phụ gia cao cấp trong quá trình sản xuất giúp sản phẩm không bị cong vênh, co ngót hay mối mọt. Điều này rất phù hợp với khí hậu nhiệt đới gió mùa tại Việt Nam.
Ngoài ra, cánh cửa gỗ công nghiệp Composite có trọng lượng vừa phải cũng như được trang bị gioăng cao su giúp việc đóng mở diễn ra êm ái và không xảy ra tình trạng xệ cánh. Không những vậy, cửa gỗ Composite còn có khả năng cách âm và cách nhiệt tốt do cấu tạo từ những thành phần đặc biệt và được đúc khuôn nguyên tấm với các mối nối có độ khít nhất định. Để xem thông tin chi tiết, các bạn có thể truy cập website https://sundoor.vn/ nhé!
Cửa gỗ công nghiệp MDF
Nếu bạn tìm một mẫu cửa gỗ công nghiệp tốt thì không thể bỏ qua dòng MDF. Đây là loại cửa có giá thành rẻ nhưng vẫn đáp ứng nhu cầu sử dụng cơ bản cho khách hàng cũng như tiết kiệm được chi phí đáng kể. Điểm mạnh ở dòng sản phẩm này đó chính là khả năng chống cong vênh và co ngót trong mọi loại thời tiết. Ngoài ra, cửa gỗ công nghiệp MDF được làm bằng chất liệu gỗ ép, do vậy mà dễ bị mục chính vì thế mà đây là sản phẩm có khả năng kháng nước kém cũng như chịu ẩm ở mức độ thấp. Chính vì thế mà cửa gỗ công nghiệp MDF chỉ phù hợp lắp ở nơi khô ráo như phòng ngủ để có thể nâng cao được tuổi thọ cho sản phẩm. Nếu bạn muốn cửa có thời gian sử dụng lâu thì nên tránh lắp đặt ở những nơi tiếp xúc với nước thường xuyên. Hơn nữa với khí hậu nóng ẩm như ở Việt Nam thì khách hàng nên cân nhắc trước khi lắp loại cửa này.
Cửa gỗ công nghiệp HDF
Cửa gỗ công nghiệp HDF cũng là sản phẩm được nhiều khách hàng lựa chọn sử dụng trong thời gian vừa qua. Sản phẩm được sản xuất từ gỗ công nghiệp HDF ép nhiều lớp bột gỗ với keo và chất phụ gia. Điều này giúp cửa có khả năng chống ẩm tốt nhất. Bên trong cửa gỗ công nghiệp HDF được sử dụng tấm ván HDF màu xanh có khả năng chống ẩm và bảo vệ cửa tốt hơn khi thời tiết nồm. Nhưng để cửa có độ bền lâu thì tốt nhất là khách hàng nên tránh cho tiếp xúc với nước. Cửa gỗ công nghiệp HDF có đặc điểm nổi bật là không bị cong vênh hay co ngót dưới tác động của môi trường hay thời tiết.
Cửa gỗ công nghiệp ghép thanh
Một trong những loại cửa gỗ công nghiệp mà khách hàng có thể tham khảo đó chính là cửa gỗ ghép thanh. Sản phẩm này có bản chất là gỗ tự nhiên sau khi được xử lý thành từng tấm nhỏ và ghép lại thành cánh cửa. Và để hoàn thiện sản phẩm, nhà sản xuất đã phủ lên một lớp MDF hoặc HDF cùng với lớp sơn bóng. Về cơ bản thì loại cửa này vẫn mang bản chất cửa gỗ tự nhiên nên dễ bị cong vênh, co ngót theo thời gian sử dụng. Hơn nữa, cửa có trọng lượng nặng tương đối và có thể xảy ra tình trạng xệ cánh. Chính vì thế nếu khách hàng muốn sử dụng một loại cửa được làm từ gỗ tự nhiên nhưng sản xuất theo phương thức công nghiệp thì nên xem xét cẩn thận trước khi mua.
Chắc hẳn với những thông tin mà chúng tôi đã tổng hợp và chia sẻ thì bạn cũng đã biết được cửa gỗ công nghiệp loại nào tốt và lựa chọn cho không gian nhà mình sản phẩm phù hợp. Nói chung cửa gỗ công nghiệp tốt hay không sẽ phụ thuộc vào mục đích sử dụng trong từng không gian nhà bạn. Chính vì thế mà bạn hãy xác định lắp cửa ở đâu để đưa ra quyết định đúng đắn và phù hợp nhé!
Và đừng quên ghé thăm website sundoor để tham khảo những mẫu cửa gỗ nhựa composite hot nhất hiện nay và được đội ngũ nhân viên tư vấn những sản phẩm chất lượng nhất.


