DaisyCloudSeed lush reverb

A quick port of CloudSeed reverb to Daisy Patch. Need to expose the parameters and some presets to knobs.
See https://github.com/erwincoumans/DaisyCloudSeed/releases
The original version is here:
https://github.com/ValdemarOrn/CloudSeed

Had to move dynamic memory allocations to SDRAM pool and double->float.

8 Likes

Very cool! I’ll try flashing this once I’ve finished moving all my modules around for my latest layout iteration.

Would you consider adding an MIT license to this?

1 Like

Thanks, added the MIT license (as the original CloudSeed reverb). I also added the other factory presets, 9 in total, but they need some tuning. And I’m using the StkDekrispator (by BlueXav) cross-platform version to test this reverb, so you can run it on Windows, Linux and Mac OSX.

See GitHub - erwincoumans/StkDekrispatorSynthesizer: Port of Dekrispator Synthesizer to Windows, Linux, Mac and Raspberry Pi. Original for STM32F4 is here: https://github.com/MrBlueXav/Dekrispator Using STK for midi and sound playback.

The only cross-platform differences are the pool allocator and the SDRAM preprocessor definition
StkDekrispatorSynthesizer/main.cpp at master · erwincoumans/StkDekrispatorSynthesizer · GitHub and the use of STK on non-Daisy platforms to deal with audio.

Here is a preliminary video of the reverb in action:

You can get the source and binary ex_cloudseed.bin here:

4 Likes

Very very cool. I will try it out tonight!! Thanks for your work!

One question, can I modulate the decay, diffusion and wet signal through cv?

kind regards frank

Yes, CV can modulate the parameters.

1 Like

Wow, very cool! Sounds wonderful!

@erwincoumans this is awesome!

One observation: if you move the reading of the controls in front of the “Audio rate loop” for (size_t i = 0; i < size; i++) so it’s called only every 1/48 of the time, you can set the parameters directly like this (without checking if they changed.).


reverb->SetParameter(::Parameter::MainOut, ctrlVal[1]);

reverb->SetParameter(::Parameter::LineDecay, ctrlVal[2]);

reverb->SetParameter(::Parameter::LateDiffusionFeedback, ctrlVal[3]);
1 Like

@MakingSoundMachines Good idea, moved the UI code out of the innerloop. Also allow to toggle display (reducing noise level). See https://github.com/erwincoumans/DaisyCloudSeed/releases

1 Like

:open_mouth: Wow, pretty cool! thank you very much @erwincoumans! :+1:

Been working a lot with the CloudSeed algorithm lately and spent quite some time understanding Valdemars Code.

For everybody that wants more information about Reverb Design I can very much recommend this Video from Sean Costello (Valhalla DSP): https://www.youtube.com/watch?v=aJLhqfHrwsw

Since I don’t have Patch I removed the Display and CV functions to make it work with seed only.
Did you try to use more than 2 Delaylines? or was that the maximum you could get to work in parallel?

1 Like

Nice video. I gathered some Reverb information on this page, it also has a link to Tom Erbe video, some papers, open source implementations and discussion forums about reverbs.

2 Delaylines

It is mostly limited by the 64MB memory, you can play with the various settings.

1 Like

I gathered some Reverb information on this page 2, it also has a link to Tom Erbe video, some papers, open source implementations and discussion forums about reverbs.

Amazing, thank you for sharing!

It is mostly limited by the 64MB memory, you can play with the various settings.

I will try and play a bit with the buffers. I hope less multitaps and allpasses will allow more late rev lines

1 Like

Awesome, can I use this reverb on a Desmodus Versio?

Nice video but he does not mention audio pionneer Michael Gerzon who published a paper about feedback delay networks in 1972, long before JM Jot and others (in the 90s).
Many of my Axoloti FDN objects are inspired by Gerzon, not by the 90s papers.

Can you say more about this? Coming from the FV-1, I know that both Kieth Barr and Sean Costello wrote some very credible reverbs for it, in a total of one second of delay memory. (32K samples at 32KHz)

I noticed that there are commented out “presets”
//reverb->ClearBuffers();
//reverb->initFactoryRubiKaFields();
//reverb->initFactoryDullEchos();
//reverb->initFactoryHyperplane();
// reverb->initFactory90sAreBack();

wondering if there is some way to cycle through the presets if they are uncommented or is this only at build time we just select one to uncomment

I haven’t touched Daisy for a long while now (unfortunately).

In a nutshell, the naive DaisyCloud port easily runs out of resources (both memory and compute) and it needs some attention to optimize better (to allow more delay lines etc). It should be easy to allow to toggle through presets, but not all of them work well (lack of optimizations).

I wish I knw more about this stuff. Any chance you intend to make progress?

I recently discovered Cloud Seed and then your port to Daisy Patch, awesome stuff! I’ve been working with the Daisy Seed on the Terrarium hardware, which is a mono guitar pedal from PedalPCB. I was able to get CloudSeed running on it with 4 delay lines, using mono-only processing and it sounds awesome. All the presets work except “Through the looking glass”. I plan on open sourcing my fork of DaisyCloudSeed and sharing, and will probably make a video demo.

I’m not very familiar with reverb algorithms, but on the Terrarium I have two more potentiometer knobs and 4 on/off switches that I’d like to add functionality to. Any suggestions for which parameters to control with these to offer the most versatility? I’m currently using one stomp switch for bypass, and the other to cycle through presets.

Thanks!

Edit: I think I’m going to use the switches as selectable delay lines, 1 to 5, I was able to make it handle 5 lines on almost all presets.

And here is the finished version! I’ll be playing around with this thing for a long time, so much fun.

And the code:

2 Likes