Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Synths from edisyn - easy to integrate? #400

Closed
markusschloesser opened this issue Jan 28, 2025 · 7 comments
Closed

Synths from edisyn - easy to integrate? #400

markusschloesser opened this issue Jan 28, 2025 · 7 comments
Labels
question Further information is requested

Comments

@markusschloesser
Copy link
Collaborator

Oh indeed, it seems to be right there: https://github.com/eclab/edisyn/blob/master/edisyn/synth/waldorfm/WaldorfM.java#L1952

Originally posted by @christofmuc in #398

Is it easy to integrate synths that are in edisyn? Asking because, while I very much appreciate the work that has been done, I really struggle with the UI and would much prefer kk (for the librarian part obviously)

@markusschloesser markusschloesser added the question Further information is requested label Jan 28, 2025
@christofmuc
Copy link
Owner

Well, not easy in that you need to read and understand the source code, and it sometimes is a lot of code of which we only need a little bit for the librarian (Waldorf M adaptation in Python is 130 lines of code while the Java file there is 2667 lines for the full editor.

But the good news is that the hard work of digging up the Sysex documentation etc has been done, so this information can easily be taken from other source code implementations. So if you want one from the list of Edisyn, that'll be straightforward. I'm just on a bit of a sprint because people asked me for so many, I did alone in the last week:

  • Waldorf M
  • Akai AX80
  • Korg M1
  • Moog Voyager
  • Roland V-Drum TD-07

it takes me by now between 45 and 90 minutes, each, if docs and sample data is available!

@christofmuc
Copy link
Owner

Still, the list of synths supported by Edisyn that are not yet in KnobKraft is long:

  • Alesis D4
  • Audio Thingie MicroMonsta
  • Casio CZ
  • E-mu Proteus/Proteus 2000
  • Kawai K5
  • Korg Microsampler
  • Korg SG
  • Korg Wavestation
  • M-audio Venom
  • Novation DStation
  • Novation SL
  • Preen FM
  • Redsound Darkstar
  • Roland D-110
  • Roland U-110/U-220
  • Waldorf Rocket
  • Yamaha FB 01
  • Yamaha FS1r
  • Yamaga TG33

I still like the KnobKraft concept better - it is the "better" SoundDiver: All information about one synth is contained behind a standard interface in one single file of Python. That file does not depend on any code (a few Python helpers, ok) from KnobKraft itself, so you could use these adaptations as synth driver files for any application, really.

In Edisyn, the UI for the editor and the data format are more tightly coupled, and it is hard to understand the data format from the source code (just did it with the Pulse).

Maybe some day the AI will be good enough to read the source and then just produce the correct KnobKraft adaptation. I actually need to give this a try!

@christofmuc
Copy link
Owner

christofmuc commented Feb 1, 2025

We've come a long way. I gave DeepSeek my E-mu Morpheus code and the Proteus java code from Edisyn, and apart from an off by one error it came out quite well. Took twenty minutes to get from scratch to an adaptation passing the test suite:

#403

I am not entirely sure the bank sizes are correct, but am too lazy to check right now.

This might have been easy because the Proteus and Morpheus are probably very similar. But I also didn't need to read the 2000+ lines of Java code :-)

@markusschloesser
Copy link
Collaborator Author

markusschloesser commented Feb 1, 2025

Still, the list of synths supported by Edisyn that are not yet in KnobKraft is long:

Out of those, the only one (currently 😇) relevant to me, is the FS1R

But iirc that one's hard because of the nested structure

@christofmuc
Copy link
Owner

The FS1R is a beast iirc, With the bankDescriptors() functionality we can now serve different types of data with different number of program slots for each, but I suspect some wonky quirks when we really do that.

We could take the FS1R as a driver to push the functionality of KnobKraft further, I'll open a new device issue for it. We can do many more things we coudn't do 4 years ago, maybe it is worth a try.

@markusschloesser
Copy link
Collaborator Author

Interesting that you fed it an example adaptation. I always in the past fed the sysex spec and the adaptation programming guide

@christofmuc
Copy link
Owner

Yes, the example code got it on track I think. If it's easier for us to edit an existing adaptation, so it seems to be for the AI!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants