Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] More Daisy help

Dave Seidel <[email protected]> Sun, 14 Sep 2025 14:29:35 -0400
Newsgroups gmane.comp.audio.csound.devel
Message-ID <CAMnrweArKnTpQoOYbCz=d1_9BRF6PwwevuifyQvkVMONdc2L+w@mail.gmail.com>
Yes, the book example works fine on my RPi. On  the Versio/Daisy it is
noisy, similar to the result I got from my original code. This is why I am
now thinking that possibly something needs to change in the C code to work
properly on this particular Daisy platform. So I will study the published
Versio example (which is entirely C) and see if I can spot the
difference(s). We may need different boilerplate code for Csound on Versio.

On Sun, Sep 14, 2025 at 2:22 PM Victor Lazzarini <
[email protected]> wrote:

> and the Csound processing example, how does that do in your setup? Does it
> work well.
>
> The delay line shifter code is fairly low in cost, so I would think it
> should run well. It should even allow for small ksmps/blocksize. I had a
> variable delay code running here with ksmps=8, and audio block size set to
> ksmps.
>
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
>
> On 14 Sep 2025, at 19:07, Dave Seidel <[email protected]> wrote:
>
> 
> Identical to DaisyCsoundProcess, the only difference being the name of the
> file and the name of the included header.
>
> On Sun, Sep 14, 2025 at 1:25 PM Victor Lazzarini <
> [email protected]> wrote:
>
>> And the C program you used?
>> Prof. Victor Lazzarini
>> Maynooth University
>> Ireland
>>
>> On 14 Sep 2025, at 18:18, Dave Seidel <[email protected]> wrote:
>>
>> 
>> Still haven't found my book, but I do have a (purchased) PDF of the
>> Springer Csound book by Victor et al. This contains the same pitchshifter
>> code along with the explanation.
>>
>> (BTW, the window used in the book is a triangle. Any reason to prefer
>> Hanningh over triangle?)
>>
>> In any case, this pitchy shifter code doesn't work well on my Daisy
>> either -- still a lot of noise overlaying the generated output. But this is
>> a Versio, so perhaps it requires something different in the
>> setup/initialization? Next step, I guess, is to compare the code in the
>> Versio example in DaisyExamples to the boilerplate C++ code used in the
>> DaisyCsound examples.
>>
>> I've attached my header file with the Csound code in it. The same Csound
>> code works just fine on my Raspberry Pi.
>>
>>
>> On Fri, Sep 12, 2025 at 4:19 PM Victor Lazzarini <
>> [email protected]> wrote:
>>
>>> I think the second pvsynth in this code might be pushing it
>>> Prof. Victor Lazzarini
>>> Maynooth University
>>> Ireland
>>>
>>> On 12 Sep 2025, at 20:18, Dave Seidel <[email protected]> wrote:
>>>
>>> 
>>> Rory, this was running in Daisy?
>>>
>>> On Fri, Sep 12, 2025 at 3:13 PM Rory Walsh <[email protected]> wrote:
>>>
>>>> I've used ksmps=256 and fftsize=1024 and it's worked Ok for me. I've
>>>> been using pvsmooth and pvsynth. Not very heavy stuff, but nice results all
>>>> the same.
>>>>
>>>> On Fri, 12 Sept 2025 at 20:11, Dave Seidel <[email protected]>
>>>> wrote:
>>>>
>>>>> Great, thanks very much! Still looking for the book... :-)
>>>>>
>>>>> On Fri, Sep 12, 2025 at 1:56 PM Victor Lazzarini <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Essentially this
>>>>>> https://github.com/csound/book/blob/master/part4/chapter13/13.12.csd
>>>>>>
>>>>>> Prof. Victor Lazzarini
>>>>>> Maynooth University
>>>>>> Ireland
>>>>>>
>>>>>> On 12 Sep 2025, at 18:41, Dave Seidel <[email protected]> wrote:
>>>>>>
>>>>>> 
>>>>>> Thanks, Victor. I'll try those things, though I already tried
>>>>>> ksmps=256 and FFT size 1024 -- didn't work, but it did reduce the noise
>>>>>> somewhat, so I think that reinforces your theory.
>>>>>>
>>>>>> The delay-based approach might be fine, thanks for the suggestion. I
>>>>>> know I have the book around somewhere, I just need to find it....
>>>>>>
>>>>>> On Fri, Sep 12, 2025 at 1:17 PM Victor Lazzarini <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave,
>>>>>>>
>>>>>>> this is probably because the Daisy can't compute audio in time for
>>>>>>> the interrupt.
>>>>>>> It could be that the FFTs are too much for it.
>>>>>>> There's a few things you could try:
>>>>>>>
>>>>>>> increase ksmps to 256
>>>>>>> decrease FFT size to 1024
>>>>>>>
>>>>>>> keep ksmps at 128
>>>>>>> decrease FFT size to 512
>>>>>>>
>>>>>>> I have not yet tested spectral processing to see what the limits
>>>>>>> are. I can't do any testing at the moment because my Daisy seed is faulty,
>>>>>>> I'm waiting on a replacement.
>>>>>>>
>>>>>>> An alternative to doing pvs-based pitch shifting is to use a delay
>>>>>>> line pitch shifter, which might just work ok in your case. Russell
>>>>>>> Pinkston's chapter in the Csound Book has an example you could use.
>>>>>>>
>>>>>>> Otherwise I can send you some code.
>>>>>>>
>>>>>>> best
>>>>>>> Prof. Victor Lazzarini
>>>>>>> Maynooth University
>>>>>>> Ireland
>>>>>>>
>>>>>>> On 12 Sep 2025, at 16:38, Dave Seidel <[email protected]> wrote:
>>>>>>>
>>>>>>> 
>>>>>>> *Warning*
>>>>>>>
>>>>>>> This email originated from outside of Maynooth University's Mail
>>>>>>> System. Do not reply, click links or open attachments unless you recognise
>>>>>>> the sender and know the content is safe.
>>>>>>> Hi Victor,
>>>>>>>
>>>>>>> I have a tiny project that essentially duplicates the
>>>>>>> DaisyCsoundProcess example, the only differences in the code being the
>>>>>>> changes names and the contents of csdText.
>>>>>>>
>>>>>>> Here's the UDO I'm using, which works fine with standalone Csound.
>>>>>>> It takes an input signal and turns it into a stereo output  signal with a
>>>>>>> binaural beat. When it's executed on the Daisy, I can sort of hear the
>>>>>>> output, but it's very noisy. Is there anything in this code that you would
>>>>>>> not expect to work on the Daisy?
>>>>>>>
>>>>>>>     opcode binauralize, aa, ak
>>>>>>>       ain,kdiff xin
>>>>>>>
>>>>>>>       ; take it apart
>>>>>>>       fsig pvsanal ain, 2048, 2048/4, 2048, 1
>>>>>>>
>>>>>>>       ; determine pitches
>>>>>>>       ; kcent, kamp pvspitch fsig, 0.1
>>>>>>>       kcent pvscent fsig
>>>>>>>
>>>>>>>       if (kcent > 0) && (kdiff > 0) then
>>>>>>>         kdiff /= 2
>>>>>>>         krat1 = (kcent + kdiff) / kcent
>>>>>>>         krat2 = (kcent - kdiff) / kcent
>>>>>>>       else
>>>>>>>         krat1 = 1
>>>>>>>         krat2 = 1
>>>>>>>       endif
>>>>>>>
>>>>>>>       ; create derived streams with shifted pitches
>>>>>>>       fsig2 = fsig
>>>>>>>       fbinL pvscale fsig,  krat1, 0
>>>>>>>       fbinR pvscale fsig2, krat2, 0
>>>>>>>
>>>>>>>       ; put it back together
>>>>>>>       aoutL pvsynth fbinL
>>>>>>>       aoutR pvsynth fbinR
>>>>>>>
>>>>>>>       xout aoutL, aoutR
>>>>>>>     endop
>>>>>>>
>>>>>>> <daisyCsoundVersio.h>
>>
>>