-
Ice-Ice
posted in technical issues • read more@jameslo Thanks a lot! I really appreciate your help. I have spent quite some time now looking at your initial 909 version (always takes me a bit to understand code written by someone else). I like the approach you're taking in the [shiftReg16~] abstraction, this makes all the taps accessible which gives some flexible routing possibilities for trying different combinations.
Now I'm looking at your edit. I think I am finally understanding how $x and $y are related! So $x and a $y of the same number are the respective input and output of the samples in one block of a discrete "stream", and then $x2 creates a new, separate stream of samples and so on (stream might not be proper terminology). So now I also understand why the fexpr~ version doesn't need a block size of 1 (which your 909 version requires).
And I can see what you mean by using 1 sample old data, it would indeed be the case. It does sound right to me when I listen to it though, but then, my hearing isn't sample-accurate
Thanks for this, I've come a bit closer to understanding fexpr~ now through your help, never used fexpr~ before.@alexandros I understand what you mean, it was a naive attempt at porting from the message version to a signal version. I think I will try an expr~ version to see if I can make it work, thanks for your input.
-
Ice-Ice
posted in technical issues • read moreI am working on a Noise Generator that uses the Linear Feedback Shift Register algorithm, but I am stuck. LFSR was used for the Noise channel in the NES and GameBoy, and that's the sound I am going for. LFSR generates a pseudorandom sequence through bit shift. The feedback loop works like this:
You start with a fixed-length register as the seed (I am using 15 bits in the example). And then, every time the LSFR is triggered, it does the following:
XOR bits 0 and 1 (the two right-most bits in the sequence)
Right-shift the sequence (It's now 1 bit shorter)
Put the XOR result into the empty last bit (the left-most bit)I got it to work in Message Land with no problem:
[Left: verbose version - Right: condensed version]

But I am stuck trying to move this to signal, mostly because I don't fully understand fexpr~:
I guess I should use fexpr~ since I am using feedback here? Also because every bit in the sequence corresponds to a sample and I need to look up earlier samples to generate the next step (Again, guessing). I am also unsure about the difference between $x and $y. I am guessing I would have to use $y too for this, not just $x. But how do I send an output back as an input, to keep the loop running?Here's an attempt at converting the above message version to signal, but it obviously doesn't work (I stubbornly tried to connect the right-most outlet to the left-most inlet but that gives a DSP Loop Error of course):

I would also like to be able to control the clock speed for this, but that would probably just be with sample and hold once the main part is done.Here's the patch so far:
lfsr_expr_stuck.pdThanks for having a look!
And here are the websites I used as sources if anyone is interested:
https://gbadev.net/gbadoc/audio/sound4.html
https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware
https://www.mjsyts.com/development/lfsr-noise-part-1/ -
Ice-Ice
posted in technical issues • read moreI am back, I was help up for a while, I just want to say thank you for everyone's help! This has been really insightful!
-
Ice-Ice
posted in technical issues • read moreI am reading about reverb algorithms and I came across the concept of nested allpass filters.
Here's an illustration of a regular allpass filter:

And here's a nested allpass structure:

source: http://gdsp.hf.ntnu.no/lessons/6/33/I used those illustrations as well as H14.all.pass from the audio examples as the basis. But I am not sure I am doing this right at all....
Here's a vanilla allpass I made:
vanilla_allpass~.pd

And here's a nested allpass using the above abstraction:
nested_allpass~.pd

Is this a proper nested allpass? If not, where am I going wrong? As you might guess, I don't fully understand [rzero_rev~] and [rpole~].
Cheers -
Ice-Ice
posted in technical issues • read moreI got it to work!
I thought I might try compiling from source after all, so I installed CMake and Visual Studio. In Visual Studio, I only installed "C++ CMake Tools for Windows" and the latest Windows 10 SDK. Then I just wanted to check something quickly in pd before getting into compiling, but it seems that one of these installations already fixed the problem and I am running csound now from within pd. Can create the object and all works as it should. But I only opened pd again after hours of installing, tinkering with, and uninstalling things, so I can't tell exactly what it was that fixed it for me now. -
Ice-Ice
posted in technical issues • read more@jameslo Thanks, I've tried it, but no luck unfortunately. Pure Data console says:
tried C:/Users/IceIce/AppData/Roaming/Pd/csound6~/csound6~.dll and succeeded C:\Users\IceIce\AppData\Roaming\Pd\csound6~\csound6~.dll: The specified module could not be found. (126)and further down:
csound6~: can't load libraryBut it's there, csound6~.dll is in that folder. It's strange that it succeeds, but then it says that it can't be found. Also, I was surprised to see that csound wasn't on deken. EIther way, I am on a 64-bit system, and I am not sure if the download is 32-bit. Does it run for you? What steps did you take? Thanks in advance.
-
Ice-Ice
posted in technical issues • read moreI want to play with Csound from Pure Data. Csound is installed and I can run Csound things from the command line just fine. I downloaded csound_pd from this link:
https://github.com/csound/csound_pd/releases
Extracted this to my externals folder and added the directory to Pure Data's Path.
But I can't create any instances of [csound6~].
Are there any further steps required to get it to run?
I don't know if I have to build it myself (never done this before). But there is a csound6~.dll in the externals folder, so I suppose I don't have to build this... -
Ice-Ice
posted in technical issues • read moreTried it and it works. Head conversion works, too. Cheers!
-
Ice-Ice
posted in technical issues • read more@whale-av
Wow, thanks a bunch! Yes, it's the "struct color" as in your patch pd-colours.pd. This is a really helpful index. Finally, I know where all these nice yellows and oranges are. Cool that you added the list of tcl colours as a txt, I saw that yesterday in the tcl/tk documentation.
H̶o̶w̶e̶v̶e̶r̶,̶ ̶I̶ ̶c̶a̶n̶'̶t̶ ̶c̶r̶e̶a̶t̶e̶ ̶[̶s̶y̶s̶_̶g̶u̶i̶]̶ ̶o̶r̶ ̶[̶c̶o̶l̶o̶r̶p̶a̶n̶e̶l̶]̶.̶ ̶A̶r̶e̶ ̶t̶h̶e̶s̶e̶ ̶e̶x̶t̶e̶r̶n̶a̶l̶s̶?̶
They're in hcs, which I had installed already. Having a blast right now making my own pd theme!!@oid
Oh nice! But sending hex values gives me "argument number out of range", anything I am missing here? I tried any formatting, like #AAAA77, #aaaa77, AAAA77, and aaaa77. But none of these worked. Also tried it as symbols, by message or through [symbol], but to no avail. -
Ice-Ice
posted in technical issues • read moreChanging colour of all the other GUI objects is straightforward:
Sending an int will cycle through the 30 preset colours in the Properties dialog.
But what about arrays? Sending an int to an array via [color $1] seems to cycle through an enormous list of subtle shades.
See the screenshot where I am sending the same value to all the GUI objects. The colours are obviously not the same.

What are the values? Is this list buried somewhere in the pd files?
I have been wondering for years, but I'm done guessing now
-
Ice-Ice
posted in technical issues • read more@seb-harmonik.ar
Wow, thanks a lot! A very interesting patch, going through this one step by step has taught me a lot.
And very true what you said about the purpose and use of [expr]. I see now that I used to look at the object as something completely different than it's actual purpose. -
Ice-Ice
posted in technical issues • read moreI am sitting with a little patch here... I want to calculate the digit sum of an integer.
What I have so far works with any integer up to and including 99. But the trouble starts at n >= 100.
See the patch attached: DigitSum.pdI got this working in Python, for any integers:
def digSum(n): out = 0 while (n != 0): out = out + int(n % 10) n = int(n/10) return out for x in range(1,200): n = x print(n, ":", digSum(n))But [expr] seems to not do while-loops, unless I am mistaken?
I have tried sloppy workarounds, chaining up multiple [expr} objects, but it's error-prone, ugly, and convoluted.
The end goal is to be able store the digit sums of a given range of integers in an array; Like you can see in the right-hand section of the DigitSum.pd patch.Anything I am missing here?
-
Ice-Ice
posted in output~ • read moreHi there!
Great vid, and nice sound, too! Kinda bagpipey, I really like it!
I am sitting with a very similar project at the moment: Interpolating between arrays, writing the results of the interpolation to another array, which serves as a wavetable. I have tried different approaches, using [expr] turned out to be the most malleable one. What object are you using for your calculation there? -
Ice-Ice
posted in news • read moreHi @timothyschoen! I was on 0.7.1, didn't know 0.8 was out. Just downloaded it and now it all works. Thanks a lot!
However, there are 2 things:
I had to add all downloaded externals to Paths again. That is, they were still in the original folders, but I had to add them manually in the Paths menu. Is there a way for future installers so they retain the data for Paths from an earlier installation when updating? Or how can I preserve this manually when the next update comes?I can't create objects from the Objects Browser. The objects are highlighted when hovering the mouse over them, but they don't react to mouse clicks or pressing Return. No biggie as I usually just use shortcuts.
I love this project by the way! It brought me back to pd after a year in Max.
-
Ice-Ice
posted in news • read moreAssuming this thread is a good place for general discussion of PlugData:
I am on Windows 10. I can't set all array properties through messages.
From the ones I tested, [style $1( and [edit $1( work. [color $1( and [width $1( do not.
Is there anything I am missing here?
