HEnquist / camillagui

GNU General Public License v3.0
9 stars 1 forks source link

Import CDSP YAML and EqAPO filters #86

Closed JWahle closed 7 months ago

JWahle commented 1 year ago

These are the changes made for #85.

HEnquist commented 1 year ago

So I had something quite different in mind for import. I would like it to be very general, and support importing selected parts from a given config. I also would like it to be easy to add more import formats, and it should be possible to use the translation functionality also without the gui.

The workflow I envision looks something like this:

I've started on a python script for translating EqualizerAPO files. It turned out to be fairly straightforward to support quite a lot of the functionality, like making mixers for the "Copy" commands. Some commands like Device don't have an equivalent in camilladsp so I just ignore those. I also ignore the conditionals (If/Else etc) and Eval. I'll push it somewhere soon-ish, probably to pycamilladsp-plot.

JWahle commented 1 year ago

Looks good. Did you start some work on the frontend or backend already?

HEnquist commented 1 year ago

I haven't done anything on the frontend or backend yet. I only made that gui mockup, and the eqapo translation script (that I haven't pushed anywhere yet).

HEnquist commented 1 year ago

Here is the translation script: https://github.com/HEnquist/camilladsp/blob/eqapo_translator/translate_eqapo.py That's just for now, it's not where it should be in the end. I'm considering putting it in pycamilladsp-plot, and at the same time renaming that one to something more suitable like pycamilladsp-utils since it does a lot more than plotting.

JWahle commented 1 year ago

Okay, cool. I'll create some GUI similar to your mock up using some very simple endpoints in the backend. Once the validation and conversion is available, we should be able to add that easily.

JWahle commented 1 year ago

I just pushed my work in progress to the GUI and backend. The backend now has dummy endpoints for EqAPO and Convolver config import, so you can plug in your implementations. Currently, the GUI renders the config JSON for debugging purposes, but it should already give a pretty good impression.

HEnquist commented 1 year ago

Thanks, I'll take a look as soon as I'm done looking into some possible bugs in the preview release.

JWahle commented 12 months ago

I finished the implementation as far as I envisioned it. What do you think about it? Anything you'd like to add? Here is a file to test the import.

Some things I was not sure about:

HEnquist commented 11 months ago

Sorry it's taking so long! I tried it just no and it's looking quite promising. My thinking now is that the 2.0 release is taking way too long and the sooner I can get it out the door the better. After that we can finish the import and make a new gui release. It's a big enough improvement to motivate a new release on its own.

  • currently there is a special import tab, shall we instead put a button somewhere and just open a popup?

There probably isn't any need for having a whole tab for import. It's only useful while importing and doesn't show anything of interest the rest of the time. I think a popup triggered by a button on the files tab could work out quite well.

  • very large objects like mixers might break the info tooltip - any idea on how to fix that or work around it?

I would argue that the user likely knows at least roughly what the file being imported is. That would mean that tooltip just needs to serve as a reminder of what is what. And then it should be fine to truncate the info at a suitable number of lines (and indicate that it was truncated, with the usual "..." or something)

JWahle commented 11 months ago

Thanks for the suggestions, I implemented both of them.

Don't worry, if it's taking you some time - I understand, you also have a private life :) You already made it clear, that you do not see this feature in the 2.0 version, which makes sense to me.