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

Updating Zynaddsubfx to v2.5 #1860

Closed
curlymorphic opened this issue Mar 11, 2015 · 109 comments
Closed

Updating Zynaddsubfx to v2.5 #1860

curlymorphic opened this issue Mar 11, 2015 · 109 comments

Comments

@curlymorphic
Copy link
Contributor

I have started work on updating our embedded Zynaddsubfx to version 2.5.

@fundamental has been kind enough to answer my questions on IRC :)

I really started this issue so we can keep track of progress.

It does add a new dependancy however , http://liblo.sourceforge.net/ I am unfimular with what is needed for this on a cross platform basis.

@tresf
Copy link
Member

tresf commented Mar 11, 2015

Liblo seems to support Windows.

From my understanding, we'll generally have @tobydox add it as a new library to the MINGW repository for Windows.

For Mac, I'd be building and bundling it (if Homebrew/MacPorts offers it, I add it to the bundle script, if not, I'd have to add it to our Apple build instructions).

For Linux, we'd probably just add it to our package dependency listing (perhaps something like Israel's packaging instructions)

@tresf tresf added this to the 1.3.0 milestone Mar 11, 2015
@fundamental
Copy link
Contributor

It might be possible to update Zyn for the 1.2.0 milestone.
The 2.5.1 release for zyn is almost purely a bug fixing release and that will be hopefully finalized in the next few weeks, so any bugs/issues found in upstream code can be fixed in pretty short order at the moment.

@tresf
Copy link
Member

tresf commented Mar 11, 2015

It might be possible to update Zyn for the 1.2.0 milestone.

Agreed. Really dependent on our team's progress, mingw included. :)

@curlymorphic
Copy link
Contributor Author

Is it a problem to work on this for 1.2? Im not really sure of the time frame, If so I will do all that I can to help this issue.

@curlymorphic
Copy link
Contributor Author

@tres sorry didnt see your last post

@badosu
Copy link
Contributor

badosu commented Mar 11, 2015

@tresf We really can't release 1.2.0 without -O3 back, I/we need to figure out what's going on.

@tresf
Copy link
Member

tresf commented Mar 11, 2015

@badosu, that is an unrelated winegxx/mingw combination that only applies to the vst_base plugin, specifically the RemoteVSTPlugin process (and dependent plugins -- VstEffect, vestige).

This -O3 (temporarily set to -O0)setting you are referring to is minor because it is only the process which interacts with the VST that suffers the bug.

Are you aware of performance issues related to the 1.1.3 build? 1.1.3 is a production release and it has that -O0 setting on for the VST stuff, so I'd think 1.2.x would follow suit (until we get it working again)

@badosu
Copy link
Contributor

badosu commented Mar 11, 2015

@tresf So are you saying only the compilation of vsteffect is unoptimized? If this is the case then it's fine.

I am unaware of complaints yet, so I really can't back my concerns.

@tresf
Copy link
Member

tresf commented Mar 11, 2015

Correct. My commit description is a bit misleading now that I re-read it... d14f451

@badosu
Copy link
Contributor

badosu commented Mar 12, 2015

@tresf Fine, sorry. I should have seen better, I read the description literally and was a bit over the top, lol.

@tobydox
Copy link
Member

tobydox commented Mar 15, 2015

@curlymorphic : didn't read you're already working on this so maybe I did duplicate work in the master-zynaddsubfx-experimental branch. Nevertheless maybe it still helps you to figure out some integration issues. Alternatively you can help by working on this branch.

@tobydox
Copy link
Member

tobydox commented Mar 15, 2015

@tresf : I'll take care of packaging rtosc and liblo for MinGW as soon as required.

@tresf
Copy link
Member

tresf commented Mar 15, 2015

@tresf : I'll take care of packaging rtosc and liblo for MinGW as soon as required.

🎉

@curlymorphic
Copy link
Contributor Author

Alternatively you can help by working on this branch.

@tobydox Let me know if theres anything you want me to look at.

@tresf
Copy link
Member

tresf commented Mar 16, 2015

@curlymorphic can you check out the branch he's referring to and see what else needs to be done?

@curlymorphic
Copy link
Contributor Author

Sure will get on this today

@curlymorphic
Copy link
Contributor Author

Still Wip.

@curlymorphic
Copy link
Contributor Author

Been battling with this for days now. still cant get lmms to see zyn as a plugin. I think Its a linking issue.

@curlymorphic
Copy link
Contributor Author

Ive not made progress on this in 10's of hours, so Im asking if anyone has any ideas.

What I have so far

git clone -b mZyn1 https://github.com/curlymorphic/lmms.git
installed liblo
sudo apt-get install liblo-dev

cloned built and installed rtosc

https://github.com/fundamental/rtosc

I have added the above 2 dependancy to

https://github.com/curlymorphic/lmms/blob/mZyn1/plugins/zynaddsubfx/CMakeLists.txt

With the build i linked above, When running lmms, zyn is not listed as a synth.

Experimanting, I have found that if in https://github.com/curlymorphic/lmms/blob/mZyn1/plugins/zynaddsubfx/ZynAddSubFx.cpp LocalZynAddSubFx is used, this is the result.

I have commented out large chunks of this file in order to get lmms to atleast see zyn as a plugin.

If https://github.com/curlymorphic/lmms/blob/mZyn1/plugins/zynaddsubfx/ZynAddSubFx.cpp#L460 is commented out, and rebuilt, lmms will list zyn as a synth, but obviously it does not run.

Im not sure what the problem is, and have spent hours experimenting trying to find out.

I would be really helpful if someone has some pointers please, maybe checking that I have linked it correctly would be helpful :)

@tresf @tobydox @lukas-w

I

@tresf
Copy link
Member

tresf commented Apr 1, 2015

Here's the diff against master for those technically inclined.

Edit: @curlymorphic, I'm starting to wrap my head round the idea of updating by first looking back on previous commits per (none of which appear to be major)

Some changes that may or may not have made it into 2.5 upstream release:

  • 0d76dc8 XML config file working directory
  • 050af40 XML wrapper customization (reduce deps)
  • 640f081 mingw64 fixes

And after that we seem to fall back into upstream commits per LMMS/zynaddsubfx@ae6824c, and so on.

-Tres

@tresf
Copy link
Member

tresf commented Apr 1, 2015

cloned built and installed rtosc

FYI for anyone trying to do this on precise, minor bug filed upstream. rtosc/#17

@curlymorphic
Copy link
Contributor Author

@tresf can I ask for you help please to work out what needs to be to done and hows best to approach it?

Are you saying go thru all the commit logs for LMMS/zynaddsubfx and see if the patch has been aplied to the new code, if not apply it?

If that is the case, how should i do that, can that be done with git, or is it a manual process?

@tresf
Copy link
Member

tresf commented Apr 1, 2015

Are you saying go thru all the commit logs for LMMS/zynaddsubfx and see if the patch has been aplied to the new code, if not apply it?

Sorry for the confusion... No, I'm only stepping back on others' previous work to understand the plugin code and how we've integrated it a bit better.

@tresf
Copy link
Member

tresf commented Apr 1, 2015

can I ask for you help please to work out what needs to be to done and hows best to approach it?

I think if we compare 2.4.4 upstream against our 2.4.4 we could learn a bit about what was done to integrate Zyn in the first place and go from there. Furthermore, any major upgrades to Zyn would also result in some changes on our end, so I think we can learn from the past integration points and go from there.

But I'm entering into this blind as well, so take anything I say with a grain of salt. I'll continue researching and let you know what I find. :)

P.S. On precise curlymorphic/[..]/zynaddsubfx/CMakeLists.txt#L57 had to switch it to c++0x just like rtosc/#17

@tresf
Copy link
Member

tresf commented Apr 1, 2015

Ok... I'm googling my own problems now... got stuck on building ADnoteUI.cxx, which according to an old conversation with Mark, turned out to be a build problem with precise, fixed by building with 14.04. This is going to be a fun one. :)

@fundamental
Copy link
Contributor

if you're having a ntk specific issue there was just a bug reported in regards to linking, so that may end up solving that particular issue once it is fixed.

@curlymorphic
Copy link
Contributor Author

P.S. On precise curlymorphic/[..]/zynaddsubfx/CMakeLists.txt#L57 had to switch it to c++0x just like rtosc/#17

cheers. will change that.

turned out to be a build problem with precise, fixed by building with 14.04.

I though the vm I had been using for this the other week was 14.4, but my memory failed me, it was 14.10 :(.

thanks @fundamental will keep that in mind

@curlymorphic
Copy link
Contributor Author

We can ignore my attempts at link rtosc and liblo to LocalZyn, because they are not needed there,
just on Remote as per

https://github.com/LMMS/lmms/compare/master-zynaddsubfx-experimental#diff-75559ad7a36e29cd9d13ed002f9738abR148

Ive got a diff of lmms/zynaddsubfx/master-upstream to lmms/zynaddsubfx/master

https://github.com/LMMS/lmms/compare/master-zynaddsubfx-experimental#diff-75559ad7a36e29cd9d13ed002f9738abR148.

Im not sure what has and hasnt been done in @tobydox branch, master-zynaddsubfx-experimental branch, when I do i diff it's huge, with no real hints in the commit log. https://github.com/LMMS/lmms/compare/master-zynaddsubfx-experimental

Im going to try on another fork of master-zynaddsubfx-experimental, and work through the above diff on 2.4, to see where we stand

@Reaper10
Copy link

Will this update the preset list a lot are missing?

@musikBear
Copy link

@Reaper10 -a lot of zasfx presets.. -missing?
from where? and compared to what release version?

@tresf
Copy link
Member

tresf commented Jul 7, 2016

FYI, this may be superseded by Zyn 3.0 if the timing is right.

Disclaimer, not directly LMMS related but...

Call for testers with the new Zyn 3.0 branch is here: Edit: link removed. join the zyn 3.0 mailing list if interested.

image

@Spekular
Copy link
Member

Spekular commented Jul 7, 2016

That looks gorgeous, holy crap.

@mikobuntu
Copy link
Contributor

@tresf , I had the old link for the ZASF-3.0 branch and requested to be a tester there, I wonder if that will still be processed or should I try on their mailing list?

@tresf
Copy link
Member

tresf commented Jul 7, 2016

@tresf , I had the old link for the ZASF-3.0 branch and requested to be a tester there, I wonder if that will still be processed or should I try on their mailing list?

No clue. Pinging @fundamental.

@mikobuntu
Copy link
Contributor

@tresf Thanks :)

@fundamental
Copy link
Contributor

@Spekular thanks

@mikobuntu You're on the list of responses, so you should get an email in the next day or so for the alpha build.

To all interested: If you're not on the 3.0.0 specific mailing list (and you're interested in the UI) I'd recommend signing up. There have been a grand total of 4 emails sent to that list, so it's a simple low volume way to keep track of progress.

@musikBear
Copy link

musikBear commented Jul 8, 2016

That looks gorgeous, holy crap.

yessss.. but you know what it also look like?
It look like i / you /us can throw everything ever 'studied' in respect to the zasfx-interfase over board 🔨
Seeing this, and on top of that reading this today
http://lmms.io/forum/viewtopic.php?f=15&t=5358#p18928

I just wonder if using zasfx-3.0 as a VST would be a sane way to solve the integration issue -Unless its create an absurd overhead, ofcause. The obvious benefit would be VST access to the internal UI.
That access does btw not work with the current dll version of zyn. 'All' (a lot of) the dials are indeed included in the lmms-vst-ui, but none has any name, and doubt any is actually connected

@grejppi
Copy link
Contributor

grejppi commented Jul 8, 2016

It look like i / you /us can throw everything ever 'studied' in respect to the zasfx-interfase over board 🔨

@musikBear How so? The new UI will most likely retain the same functionality and concepts, just in a less cluttered way.

@liushuyu
Copy link
Member

liushuyu commented Jul 8, 2016 via email

@tresf
Copy link
Member

tresf commented Jul 8, 2016

Here's the roadmap. Scroll down to "Workflow & Interfaces" to sign up for the mailing list.

http://zynaddsubfx.sourceforge.net/roadmap.html

@liushuyu from the homepage:

A major limitation in past versions was the fltk based user interface. The navigation of the fltk UI is complex and parameter changes do not have an obvious effect within the interface. A complete rewrite of the user interface has begin using the OSC api created in the 2.5.x series. This series will result in a single window user interface uniting the numerous views of the current UI. Parameters will have associated data visualizations easily available to help users understand how parameter changes should be expected to change their instruments without consulting documentation. This release is expected to support Windows, Linux, and OSX.

Some of this may be dated now, but here's some original Q&A about the GUI rewrite:

#1911 (comment)

@liushuyu
Copy link
Member

liushuyu commented Jul 8, 2016

Here's the roadmap. Scroll down to "Workflow & Interfaces" to sign up for the mailing list.

http://zynaddsubfx.sourceforge.net/roadmap.html

Subscribed. 👍

@liushuyu from the homepage:
...
...
Some of this may be dated now, but here's some original Q&A about the GUI rewrite:

#1911 (comment)

Thanks! That's valuable!

I am now more looking forward to the new version!

@unfa
Copy link
Contributor

unfa commented Oct 25, 2016

Is this issue alive? Any chance of running Zyn 1.5 / 3.0 inside LMMS?
I know we could use Carla Rack as a wrapper to use Zyn as a VST / LV2 plugin - but no automation would be possible that way AFAIK.

@Umcaruje
Copy link
Member

Well, @curlymorphic hasn't been active for a while, so this issue is pretty much dead at the moment. From what I gather from #1991, there were issues on windows that were hard to fix because of the lack of debugging. Also, that PR is stale, needs rebasing, and the travis build is failing on it.

@mikobuntu
Copy link
Contributor

Carla Rack is Linux only ( as an LMMS Plugin ) afaik @unfa

@tresf
Copy link
Member

tresf commented Oct 25, 2016

Carla Rack is Linux only ( as an LMMS Plugin ) afaik @unfa

Correct, for now it is Linux only. Related: #2689

@unfa
Copy link
Contributor

unfa commented Oct 30, 2016

Crap. What can I do to push this issue forward?

I can help with debugging. I can test and provide backtraces and stuff.
(I might need some help with building though)

@tresf
Copy link
Member

tresf commented Oct 30, 2016

What can I do to push this issue forward?

The 2.5 merge likely won't happen from @curlymorphic's branch, so for starters:

  • The OP's PRs need to be killed and resurrected here on the LMMS repo so that devs can collaborate on patches.
  • The merge conflicts need to be sorted
  • Windows needs to be fixed. It was crashing in previous builds and we had trouble debugging it due to lack of a working Windows debug environment.

Since all three of these are dev tasks, it depends how ambitious you (as in anyone) are.

@unfa
Copy link
Contributor

unfa commented Oct 30, 2016

I've e-mailed Curlymorphic and we've had a little converstaiton on the state of this issue. I'm quoting it below (leaving in only relevant pieces).

Me:

Hi, Curlymorphic!
(...)
I'm writing to ask you if you could come back and bring this issue to a happy end?
(...)
If it's not possible for you to finish this personally, could you at least help some other developer and guide him to understand the work needed to make this work?

You seem to be the only person who knows how this stuff is supposed to work - without your help we're stuck!

Curlymorphic:

(...)
I would have loved to have finished the Zyn upgrade, AFAIK it was working under Linux, but that was a long time ago, I have no idea what would be required to rebase with master now, many be not too much, as much of the work was outside the main LMMS codebase. The remaining issues, were Windows related, I’m not sure I remember the details, but I think it was a hard crash with the UI, At that time, there was no compiling or debugging in the windows environment, I simply have no Idea what the problem was. As there is now a working windows development chain, progress may be easier if someone chooses adopt this issue.

I no longer have any spare time, a career change, and returning to education keeps me busy. If any developer picks up this project I would be happy to pass on what knowledge I have, if I can remember the finer points. The commit log for the work I undertook is very verbose, agreeably far too much for a merge, but hopefully should allow anyone choosing to work on this issue, to be able to familiarise themselves with what I had tried previously.
(...)
I really miss being involved with the LMMS community, I learned a lot, and met some really nice people.
Yes, I think posting our correspondence would be a good idea, I was thinking of asking you the same question.

I shall try to answer any queries on the Zyn upgrade, to the best of my knowledge.

@fundamental
Copy link
Contributor

Per the UI, it can be built/run out-of-process, so that may help debugging when the effort to update LMMS's zyn version is resumed.

@tresf
Copy link
Member

tresf commented Jul 19, 2017

Moving to the appropriate topic.

Quoting @fundamental at LMMS/lmms.io#241:

Since I've been summoned, I'll point to https://sourceforge.net/p/zynaddsubfx/mailman/message/35921306/ where I state that the [Zyn 3.x] source should be fully opened around mid-December.

Thanks for the update @fundamental.

@tresf
Copy link
Member

tresf commented Mar 14, 2018

This effort will be superseded by the Zyn-Fusion efforts spearheaded by @JohannesLorenz #4179. Closing as duplicate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests