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

Dave Seidel <[email protected]> Sun, 21 Sep 2025 16:30:38 -0400
Newsgroups gmane.comp.audio.csound.devel
Message-ID <CAMnrweBRtQgkmZgoPVOQjsBQDE7WEftfvF+39i0MATAEXktMsQ@mail.gmail.com>
Thanks, Thorin -- sorry, your message went into my spam folder for some
reason and I just saw it now. Good information.

On Sun, Sep 14, 2025 at 8:37 PM thorin kerr <[email protected]> wrote:

> I did did it on a Daisy Pod, which is a Daisy Seed mounted on a board with
> a few conveniences (audio and midi io, and a few pots and buttons).
>
>
>
> On Mon, 15 Sept 2025, 4:09 am Dave Seidel, <[email protected]> wrote:
>
>> Ah, thanks Thorin, I will try that. Did you do this on a Daisy? I should
>> mention that the code, as I posted it, works on the Qu-Bit Nebulae, which
>> runs Csound 6 in a Raspberry Pi 3.
>>
>> On Sat, Sep 13, 2025 at 8:18 AM thorin kerr <[email protected]>
>> wrote:
>>
>>> I managed to get Dave's example working cleanly with the following
>>> settings:
>>> ksmps=256, ifftsize=1024,
>>> also hw.SetAudioBlockSize(512); in the .cpp.
>>> And... instead of pvsynth...
>>> aoutL pvsadsyn fbinL, 55, 1, 6
>>>
>>> aoutR pvsadsyn fbinR, 55, 1, 6
>>>
>>>
>>>
>>>
>>> On Sat, Sep 13, 2025 at 3:41 AM 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
>>>>>
>>>>>