Say I want to read to a buffer, and I want to slow the rate at which the buffer plays. This will give me some room to chop the buffer around and stuff like that, but I have no idea where to start. What opcode do I need to look at in order to be able to read into a buffer and manipulate the buffer live? Think grossbeat, Shaperbox time shaper. I wanna have a go at that using csound.
There is a lack of buffer based effects like this in the open source space.
Function tables can be used to buffer live audio. In the following simple example I continuously write to a table, and then access the samples one by one as needed, depending on the ‘mode’ I’m in. Feel free to take it and hack it to pieces. I wrote this 10 years ago, but if I was doing this from scratch again today, I would probably use the same approach. Tables and table reading/writing opcodes are key. Note that I put his into a UDO because I wanted to set ksmps to 1 so I can use k-rate variables at a-rate speeds. Finally, you’ll see that when in bypass mode, it simple outputs the live signal.
liveSplicer.csd (3.3 KB)
Awesome, thank you!
(kindx+kpos)<=0 ? ftlen(itbl)-kpos : kindx-1
I wonder what this syntax means? While kindx+kpos <=0, kindx = ftlen(itbl)-kpos, otherwise kindx = kindx -1? Is that correct?
It’s more if kindx…
As far as I know it’s called a conditional ternary operator. just in case you want to look it up. It saves you from having to type a few extra lines of code 
Okay, I see! thank you. How do I go about clearing the buffer when IS_PLAYING == 0?
Figured out a solution, I use loopseg instead of phasor.
1 Like