Giter Site home page Giter Site logo

VST3 for Mac about soundobject_binary HOT 48 CLOSED

bijlevel avatar bijlevel commented on July 18, 2024
VST3 for Mac

from soundobject_binary.

Comments (48)

suzumushi0 avatar suzumushi0 commented on July 18, 2024

bijlevel,

Currently, I have no plan to release Mac binary, because I don't have Mac :-). It is highly appreciated if someone kindly builds and tests Mac binary then contribute to SoundObject.

Unfortunately, I have no experience with Xcode, however:
(1) The source code uses double, float, and int types directly. I believe these types are compatible between VisualStudio and XCode. Needless to say, types defined VST SDK are compatible.
(2) The source code does not depend on compiler implementation-dependent critical behaviors which are not defined in the C++20 standard.
(3) The source code does not depend on endian.

The source code is written in C++20 and uses VST3 SDK Project Generator. Therefore, I think if Xcode could compile it, it will work.

suzumushi

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

I did look at the VST3 SDK Project Generator and from the looks of it, it seems possible to generate with this generator a VST3 of your project for MacOS. I have to admit this will be the first time I'm doing it this way. Before I did use JUCE/Xcode to compile VST3 for MacOS and used existing source files, so I did not do the C++ programming, that was done by someone very experienced in C++. Next question: where is your source code?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

This is it.

https://github.com/suzumushi0/SoundObject_source

Please note that VST SDK and JUCE are completely different frameworks for VST plug-in. SoundObject does NOT use JUCE.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Yes I know they differ and I won't use JUCE.
I tried to compile the VST3 SDK Project Generator app on Mac, but Cmake gives me errors! I spend several hours to find out why, but I'm not able to solve the problem. So I'm suggesting an alternative way. Could you use your VST3Project Generator app and set the Cmake Generator to Xcode? If that succeeds, would you please send me the result by email: [email protected] Thanks!

EDIT: I succeeded in building the app and also in generating a vst3 for Mac. In my DAW the vst3 is loaded, BUT the GUI is missing! So I probably have to add some more files to the Xcode project. I will keep on working on it, because it seems promising.

Best regards, Sjoerd

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Are you trying to build debug version or release version? In either case, you need manual configurations.

(1) Debug version

(a) Copy
/YOUR_WORK_DIR/resource/SoundObject.uidesc
to
/YOUR_WORK_DIR/build/VST3/Debug/SoundObject.vst3/Contents/Resources

(b) Edit SoundObject.uidesc
It contains 6 relative paths to png files (lines 6, 9, 12, 15, 18, and 21). e.g.,
"path": "about.png"
Replace the above relative paths with absolute paths. e.g.,
"path": "/YOUR_WORK_DIR/resource/about.png"

(2) Release version

(a) Copy
/YOUR_WORK_DIR/resource/SoundObject.uidesc
to
/YOUR_WORK_DIR/build/VST3/Release/SoundObject.vst3/Contents/Resources

(b) Copy 6 png files to resources directory. That is, copy
/YOUR_WORK_DIR/resource/*.png
to
/YOUR_WORK_DIR/build/VST3/Release/SoundObject.vst3/Contents/Resources

(c) Then copy
/YOUR_WORK_DIR/build/VST3/Release/SoundObject.vst3
to
/Library/Audio/Plug-ins/VST3/

suzumushi

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Thanks for the extra information! Sadly adding those files did not solve the issue of the empty GUI. I did look at the .c and.h files in Xcode and it seemed that many of your source files were not there. So I added them, including the York_KEMAT, Aachen_KEMAR and York_KU100 folders in the header section (don't know what those folders/files do, but anyway), but then I got an error: missing #include file (not found). I did then check my C++ compiler version and found out that c++20 is not among the options. I'm not sure if that is the cause of the error, but anyway I'm now updating Xcode the latest version which can run on my Mac. I will keep you posted about the results.

Kind regards, Sjoerd

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Did you register cpp and h files to XCode like this? (VisualStudio case)

キャプチャ

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Yes, I did add all the .h and .cpp files to the project. (At least I got rid of the '#include ' error (file not found)). So ATM "only" 5 issues (in fact 2, because some are the same), which causes the build to fail. These are the errors:
Screenshot 2022-01-16 at 11 07 14

Screenshot 2022-01-16 at 11 07 48

So two ("log" and "pow") seem related to some math functions not recognised by my compiler (?) and the other three to illegal characters. Can I change those characters?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Please wait a moment. I will respond later.

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Could you try the attached update files?
update-1.zip

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

The two math related errors are gone, so that's a good sign, but still I get the illegal character error (3 places). What is the function of those characters? Is it a fixed kind of format?

Screenshot 2022-01-17 at 17 03 35

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

I did try some changes in those strings, but until now nothing helped. But sadly during compilation the error of the missing 'numbers' file ( called as included in the SODSPparam.h file) came back again.

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

It seems UTF-16 (win) vs UTF-8 (mac) problem. I will respond later.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Yes, I'm thinking along the same line. I did change the encoding for this particular file to UTF-16, but nothing changed. I also tried Japanese encoding, but still no luck! Again: what do these particular code lines accomplish? Is it some GUI thing?

Can you also give attention to the missing 'numbers' file?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Could you try the attached update file?
update-2.zip

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Thanks for the update. The illegal character issue is gone, but now there a problem with the wrapper.assign statement:

Screenshot 2022-01-18 at 19 18 00

The sidebar seems to give an explanation...

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

How about this?
update-3.zip

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

The wrapper related errors are gone, but the 'missing included numbers file' error still exists and because of this the build fails.
I did dive a bit in your code and it seems that the included 'numbers' file is needed for the pi constant. Also I did find out (but not 100% sure) that c++20 has the pi constant build in. So one needs c++20. But I'm not sure I'm using c++20, it is definitely not listed as an option in my Xcode version. The language dialect choices go no further than c++17... So maybe a solution is to define pi as a constant "manually", so to speak. But if you solve the issue for not finding the 'numbers' file that's even better then!

EDIT: I did install the latest macOS, which does support Xcode latest version with c++20 language! So I will build your project using this Xcode. I will keep you posted about the result(s).

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Did you try the following article?
https://developer.apple.com/forums/thread/132400

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Yes, I did read it, but I'm using mac OS Mojave and this system does support Xcode up to version 11.3, so no 11.4 or better.

But read my previous comment about installing a more recent macOS and Xcode/c++20.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

I did build the project with Xcode v13.2.1 (with c++20), but still errors. See screenshot:

Screenshot 2022-01-19 at 20 19 07

So the cause is definitely a problem with numbers and/or pi. I will keep on looking into it, but I hope you find a solution before I do!

(But I have a feeling we're getting there!)

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

The cause of the problem is that Apple Clang does not support C++20 Mathematical constants defined in the standard.
https://en.cppreference.com/w/cpp/compiler_support/20
Therefore, I updated related files. Could you try the attached update files?
update-4.zip

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

The build succeeded. I did add the various resources to the resource folder (as indicated by you in an earlier comment), but still the UI is blank/black. I did check the contents of the resource folder of the Windows vst3 and it has the same files in it as the one on my Mac. Could it be that those resources should be available during compilation? (Just guessing...).

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Resource files are not necessary at compile time. Are you trying to build debug version or release version? I would suggest to build release version. If you successfully build the release version, you will see the following file. Is this OK?

/YOUR_WORK_DIR/build/VST3/Release/SoundObject.vst3/Contents/MacOS/SoundObject

And I would also suggest removing unnecessary VST plug-in search path from your DAW then re-search plug-ins.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Today I did succeed in building the VST3 for Mac!

Screenshot 2022-01-21 at 13 59 09

For Mac however I needed to add the resource files to the project and compile it with all the resources. I found out that it was needed, because the plugin contents folder had this '_CodeSignature' folder and in this folder was a file called 'CodeResources'. Analysing the contents of this file with a hex application, I saw references to some resources (the snapshots, which were in the resources folder of the project), so I figured I needed all the resources at compile time. After that the plugin was successfully build, including the GUI. The plugin did load OK in Mixbus32C (one of my DAW's) but did unfortunately crash my other DAW Digital Performer. I have to look into that. I also found out that I had to add the file 'Soundobject.vst3.dSYM', which showed up in the 'Release' folder after compiling, to the VST3 plugins folder (.../LibraryAudio/Plug-Ins/VST3/) for the plugin to show up correctly.

Q1: where does the plugin expect the presets to be? Is that a fixed path? I don't see an option to locate the presets from within the plugin. On Mac the presets are usually at .../LibraryAudio/Presets/plug-in name/actual presets. Also: are the your Windows based presets compatible with the Mac?

Q2: how do you want to distribute this Mac VST3. Do I send it to you?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Congratulations!

I would like to suggest that test it enough in your environment. This is because the test is the most important process in software development. If you feel it is definitely to release, we can proceed to the next steps.

Regarding presets location, could you see the following document?
https://developer.steinberg.help/pages/viewpage.action?pageId=9798275
I think the file format of windows and mac are the same.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Thanks! Your link to Steinberg help provided the right location for the presets. I did several tests for the plugin. Only one host, i.c. Reaper, does load the plug-in as it should be. It shows graphically the size of the room, the acoustic sources move together in the 3d space as expected, the presets are shown and can be saved or loaded. Many hosts don't show the size of the room graphically and also don't connect the two acoustic sources in 3D space when moved. I did also test it with two Plugin Host test applications, one from JUCE and the one from Steinberg. Both load the plug-in as it should be, like in Reaper, but the one from JUCE does not offer loading/saving of preset and the Steinberg VST3PluginTestHost does only show the presets greyed out, so not selectable. When choosing to save a preset it shows a folder named 'Multi' and does alter the name (in this case a gave it the name SOtest) of the preset in a strange way: SOtest.com.steinberg.vst3.preset.

So these are my findings so far. I'm not sure if I'm able to solve all the problems for every DAW/Host. I will concentrate on Digital Performer, because that's my main DAW, but have little hope, because the company will always tell me to consult the author of the plugin, because it's a third party vst3 plugin. (BTW Digital Performer on Windows 10, which I also have, does load the plugin without any issues, like in Reaper.) Another route would be to convert it to an AU (only for Mac) either by a conversion/wrapper app or by using the Juce framework.

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

I understand there are three issues.

(1) Positions in the top and rear views are not synchronized in some DAW hosts.
Question: Could you let me know, in that case, x, y, z, r, θ, and φ displayed above the views are changed or not?
Question: Could you let me know the test results?
Reaper OK
Steinberg TestHost ?
JUCE test app ?
Digital Performer NG
etc...

(Are you testing the plug-in with a plain configuration of Digital Performer? It does not support VST and AU simultaneously.
https://www.spectrasonics.net/support/knowledgebase_view_topic.php?id=79&categoryID=20
Digital Performer 8 (on the Mac) can load either AU plugins or VST plugins - but not both at the same time. )

(2) Room size is not displayed in the top and rear views in some DAW hosts.
Question: Could you let me know the test results?
Reaper OK
Steinberg TestHost ?
JUCE test app ?
Digital Performer NG
etc...

(3) Presets load/save don't work in some DAW hosts.
This is a DAW hosts issue because plug-ins do not access preset files. However, a DAW host may not implement all preset locations defined in the Steinberg document. I think the user type path (Users/$USERNAME/Library/Audio/Presets/$COMPANY/$PLUGIN-NAME/) is safe to test presets files.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

I did test the plug-in with all the hosts (Mac and Windows) available to me. This is the result, regarding the various issues:

Screenshot 2022-01-23 at 17 18 11

I'm using macOS Mojave v 10.14.6 and Windows 10 in a virtual environment. The most remarkable issue is the one with the Steinberg plug-in test application on Windows: it has (on my system) issue 1 and 2.

If the 2 dots move in a not-connected way, then the x, y, z, r, θ, and φ values don't change either.

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Thanks. Steinberg test host windows case is very strange.

(1) Windows case.
Did you build the plug-in in your Windows environment? If you launch debug release from VisualStudio debugger, the test host loads the debug release plug-in directly, then saves plug-in status. Therefore, if you test wrong version, it may cache wrong status information. Therefore, if so, I would suggest to
o Clear VS debug release project
o Launch the test host from the menu bar; remove all plug-ins from the rack then quit the test host with status saving.
o Launch the test host again, then add the plug-in and test it.

(2) Mac cases
The situation is very similar. DAW project file contains plug-in status. If you test wrong version it may contain wrong status information. Therefore, I would suggest to
o Remove debug release path and unnecessary paths from DAW plug-in search path.
o Create a "new" project for testing.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

For Windows I tested your binary, so I did no compile it myself. For Mac I did compile for release only. I will investigate the various paths and status of the plug-in. Fact remains that Reaper on Mac does load SoundObject without any problems. So at least the VST3 seems OK for some DAW's. Also awkward is that the Steinberg plug-in tester on Mac does show the presets, but greyed out, so not selectable. Maybe something wrong with the extension? I will try to find the cause or maybe you know the reason?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

If you didn't try to create a new project, please try it first. If situations are not changed, please try to remove preset files (move presets files desktop or else), they are an option and not mandatory.

And (I think this is unlikely) if you are using 3rd party graphic accelerator or gaming display (high refresh rate display), please try to use a typical display.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

What do you mean by a new project?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Launch DAW. Create a new project, add a track, add a sound file, add the plug-in, then test it.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

That's pretty useless, because it doesn't even load in my primary DAW (Digital Performer), so I can't test anything and BTW it works OK in Reaper. I agree that the presets are a secondary issue. Today I did contact MOTU (Digital Performer). Hope they can help. If not, then I'm out of idea's!

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

OK. In summary, SoundObject could be built on Intel Mac 10.14.6. It works in Reaper. However, Digital Performer could not load it. And it does not correctly work in some DAWs.

If there is no further progress, I will close this issue.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Your summary is correct. I did contact MOTU (Digital Performer) about it. They did initially reply, but just wanted to know the name of the VST. After that I didn't hear from them. That was last Wednesday. I will wait a few more days and press them to answer me.

About the VST, you should know that many DAW's on Mac only support AU-plugin's, among them Logic and Garageband. So about the AU-plugin I have a question. I did read that the Steinberg SDK does provide the ability to "build" a AUWrapper using the SDK. Are you familiar with that option? I tried to get my head around it, but so far I'm still in the dark.

If there is indeed no chance of further development and you close the issue, do you want the Mac VST3 and the Xcode project send to you?

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

To build and test the Steinberg AU wrapper, Mac and DAW are needed. Unfortunately, I don't have MAC.

How about trying VST wrappers for Mac? Needless to say, there is no guarantee these wrappers work correctly. However, I think it is worth trying and much better than developing something.

https://macdownload.informer.com/advice/Vst_Wrapper.html

https://www.kvraudio.com/plugins/au-wrapper/best-match

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Thanks for the links! Trying to wrap your VST, so it becomes an AU plug-in is (probably) the last thing we can try. I hope as an AU it will load in Digital Performer, but to be honest I doubt it. Also I don't think MOTU support will come up with a solution.

I did ask for some help (https://forums.steinberg.net/t/using-auwrapper/763574) on this on the Steinberg SDK forum, but until now nobody did respond. Still I think looking at the help (https://developer.steinberg.help/display/VST/VST+3+-+Audio+Unit+Wrapper about compiling an AU Wrapper) it seems a rather simple task, but for me there are some required actions I don't understand.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

Hi there,
MOTU (Digital Performer DAW) does not bother to answer to my support request, so that's that.

In my search for solutions I did try to compile an AUv2 (or even an AUv3) from within the SDK, but I'm strongly under the impression that the help information does not comply with the latest SDK, because in the help they are referring to files to even don't exist in the SDK. I think that's a serious omission of Steinberg. I did ask for help on the forum but until now nobody bothered to answer. So as you may understand I'm not so happy about this all! You may close this issue, and (I did ask you this before) do you want to receive the MAC VST3 and the project files? I can send it using the e-mail address you provided in the plug-in.

I appreciated your continuing interest and help in compiling the plug-in for Mac, so for that I thank you and all the best with your plug-in development!

Kind regards,
Sjoerd

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Don't you try wrapper plug-ins?

Anyway, SoundObject could be built on Intel Mac 10.14.6 and works in Reaper. But M1 Mac situation is uncertain, Digital Performer could not load it, and it does not correctly work in some DAWs, however, it is still useful for someone. Therefore, it is acceptable as a beta release.

Do you agree it is licensed under Creative Commons Attribution 4.0 International License at no charge?
https://creativecommons.org/licenses/by/4.0/
If you agree with it, please upload zipped MAC VST3 files to this thread.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

I did try some from the links you provided, but none did what I wanted.

I will upload the project and the VST3 plug-in to this thread and I agree to CCA 4.0 IL license.

Thanks again for providing the free SoundObject plug-in. I will certainly use it in my music!

Kind regards,
Sjoerd

EDIT: I tried to upload the project file (including the VST3 for Mac), but I get an error message "is not included in the list" and I don't know what that means.

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

It may be too large. Please upload VST plugin files only just like you posted screen shorts.

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

OK, here is only the VST3.

Soundobject.vst3.zip

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

Could you test the attached distribution? This is the final test.
SoundObject_Mac_2.0.1.zip

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

It does work OK in Reaper, but (as to be expected) not in Digital Performer. Maybe you can add in your installation text that is does work in Reaper for Mac. Also please add my full name: Sjoerd W. Bijleveld. Thank you!
A side note: I still think the Steinberg SDK is not fully tailored to the Mac/Xcode compiling or (and don't take the personally) some programming of your source code in relation to the SDK files/ library. But that's only guessing!

from soundobject_binary.

suzumushi0 avatar suzumushi0 commented on July 18, 2024

I have updated the release. Thank you so much for your contribution!

from soundobject_binary.

bijlevel avatar bijlevel commented on July 18, 2024

You're welcome!

from soundobject_binary.

Related Issues (5)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.