Daisy Pod Polysynth - Port of OscPocket VASynth

I’m interested in the patch-saving question, but I don’t want to clutter the thread with newbie posts so perhaps you’d rather discuss elsewhere…? I noticed the post from hammondeggs about switching from FatFS to QSPI for patch management in Pollen8, but was wondering if you’d considered FatFS for this…?

I think it’s fine to post any thoughts here. The more public the ideas are, the more likely we’ll get a solution figured, I think.

To more directly address your question, I read that same thread you were talking about and I think either option would be fine. I was defaulting to QSPI because that’s what was functional in the original code. I was kinda hoping that someone who knew more than I do would be like “oh you just have to enable such and such or change this or that and the code will work”.

I think what I need to do is hunt down some code that successfully uses FAT to see how all the pieces fit together. When I read through the documentation I get more than a bit lost.

In short, I’m open to any and all options if I can get something working!

OK! So…going back to to basics, have you basically taken a synth based on Seed + custom controls and remapped these so that it works on Seed + Pod…? And the original had a working QSPI patch load/save function…?

I think you’re planning to implement it in such a way that rotating the ‘push/pot’ loads successive patches with press-to-save…? And what was the stumbling block that you hit with that…? Does the QSPI handling in the original still basically work, or does it need modifying as a result of changes to the hardware, eg like the one that broke Pollen8…?

Does the save/load function basically pack/unpack all the synth parameters into some data structure and save that as a single file…? And are the parameters/variables still the same as the original…?

The original code has QSPI functionality to save/load to/from Flash. I hope it is still working! :slight_smile:

2 Likes

The plan was, as you say, to use the encoder to save and load patches. All the code for this is present from the original version. Here is the problem I ran into:

When I was first modifying the code, I changed #include daisy_seed.h to #include daisy_pod. I figured this was necessary to get easy access to the pod’s hardware. However, next time I tried to compile, I received the error that “daisy_pos” didn’t include the class QSPI (or maybe the class was specifically called something else, I’m having trouble remembering). So I added “#include daisy_seed.h” back in along with “daisy_pod.h”. I called daisy pod “hardware” and daisy seed was “hw”. So for example the code says hardware.UpdateLeds(); but hw.qspi.write(); if that makes sense.

The code compiled successfully. Then I wrote the code so that when I pressed the encoder down, the preset would save, but when I tested it, as soon as I pressed the encoder, the audio changed to a faint high pitch whine and the whole system just hung.

So I’m guessing I either:

  1. made a error including both daisy_pod.h and daisy_seed.h or,
  2. the code I wrote to make the encoder save is messed up somehow. I think I put it in the audiocallback which I’m not sure is the correct way to do it.

My plan was to mess around with it a bit more and test and mess around and test etc. but I haven’t had much time. Hopefully this all makes sense!

Ok, not to ignore your previous questions, but I had a minor breakthrough and got saving and loading working (sort of). I had to initialize QSPI manually and it seemed to work. I’m not sure if I did it exactly right. Either way, I have rough functionality implemented if you download the current code (main.cpp is the only thing that changed). It works like this:

Turn encoder right to load
Turn encoder left to save
Push encoder to change save slot (it cycles 0-16)

The reason I did it this way instead of turning the encoder to both change save slot and load at the same time, is that if I try to load an “empty” slot, the Daisy crashes and I have to restart. So I needed some way to select a “slot” and then save to it. There is probably a way to check and verify if there is data to load, but that will take much more learning on my part. In the meantime, I wanted to get something out that was working.

2 Likes

…brilliant, nice one. I’ll be interested to study this. It’s working fine for me. :grinning:

(I found I had to start with a series of left/click/left/click/left etc with the encoder to fill the 16 slots; as you say, it doesn’t seem to like empty slots, and it settled down after that.)

1 Like

Glad to hear it works. One thing to note is that not all parameters are saved at the moment (most notably the delay and reverb level) so you may see a patch load imperfectly. I’ll push out a minor update soon to fix that.

Next step is to figure out if there is a way to check for empty or incompatible data before trying to load and crashing. I’m just glad it’s working for now.

Edit: if you are interested in studying what I did, check out lines 274-283 to see the lines I added. If I am understanding it correctly, they basically map and initialize the pins of the flash memory.

1 Like

Great! (Mastering QSPI with the Daisy Pod is a valuable step forward. I feel this functionality ought to be directly available within Daisy_Pod without having to borrow material from Daisy_Seed, but it’s beyond me to see how, and I haven’t found any other examples yet.)

Hey,
really looking forward to this.
The same happend to me, killed an “old” daisy. Pollen doesn’t work anymore and I wanted a synth for my pod. I already build a VASynth on breadboard but even with the lcd and buttons it often crashed an didn’t work to well. On the pod it seems to work a little smoother for me.

How does the saving work in the moment? Isn’t the encoder used for changing the presets?

As above; turn the encoder a notch right to load, left to save, and click to cycle through the 16 slots. It’s the simplest way to set up load, save, and select patch slot from the one control.

Can I put in a request for you to tackle the sampler module from this project next…?! :wink:

1 Like

Yeah I read that, but on the github it says the encoder cycles the presets :wink: Just want to be sure.

(…right, yes; the documentation on GitHub needs updating, it’s changed now…)

1 Like

Yeah I’m just a little slow updating everything!

I’ll do what I can! Should be a lot faster now that I have the basics down

1 Like

Here’s the release page for a cleaned up version with saving, etc

2 Likes

Just downloaded your project and it worked on my new Daisy Pod. Sounds great, thanks a lot !

1 Like

I tried to use this wonderful port today and a few things

  1. The midi does not work or does not seem to work properly (it will trigger a note and then the next 3 or 4 notes will not trigger )
  2. if i try to save at all (if i push the encoder at all) it freezes and i can no longer change any colors

I am not sure if this is related to some library updates?

thanks

Just given this a go on the seed! Loads up and plays well but can’t adjust anything without the pod controls. I know this is a long shot, but is there a way to add midi cc control of the synth parameters as my seed is living inside my digitakt haha. Regards

1 Like

hi mate are you the bloke who brought the Stepp gear from sphere music auction? if so I have some parts