I need to rev ASPiK for the new VST3 SDK 3.7.
In addition, I made a couple of changes to help with synth plugins while working on the new synths for the new synth book - nothing big and won't break old code.
I have a few RackAFX feature requests for updated Status Window functions and fixing an edit box, and the need for a string-control that can accept and transfer a string (like a file path).
I have also fixed a few annoyances with the copy/move when copying/moving blocks of controls, which I used a lot with the synth plugins, which have 50+ controls each.
If you have any reasonable feature requests for RackAFX and/or ASPiK, let me know.
Welcome back and congratulations on completing your synth book update. I really look forward to reading it when it's done.
ASPiK is great but since you asked here's my wish list of features, obviously don't feel compelled;
⊗ Better preset management. Mainly the ability for the end user to save, recall and overwrite presets from within the GUI.
⊗ Removing the FFTW dependency for the FFT spectral display. Perhaps https://github.com/mborgerding/kissfft or similar could be a good alternative. It has a simple BSD-3 clause.
⊗ Removing the FFTW dependency for oversampling. https://github.com/JayKickliter/Multirate.jl for instance has an extremely open expat MIT licence.
⊗ Customizable backgrounds and font selection for jazzing up COptionMenu.
⊗ A method for controlling CViewSwitchContainer via parameter rather than a GUI linked switch, so it can respond accordingly to preset changes.
I definitely think ASPiK is already an amazing platform though. Thanks again for all of your hard work.
1) preset management: this is supposed to be done via the Host DAW, and Steinberg, Apple and Avid all issue warnings about maintaining presets in the plugin (though many vendors ignore/violate this suggestion, especially synth plugins whose presets have scores, or even hundreds of parameter settings). Factory presets are supposed to be "burned in" but also presented to the host so that they may be combined into one drop-list. Using the plugin to maintain presets opens up many cans of worms, especially with automation and state save/restore. If you want to manage presets from within the plugin itself, you'd need to add that code manually. And, I am guessing that no matter how you implement it, someone will want a different mechanism, or it won't make sense to them.
This very issue pops up on the VST3 Forum from time to time, and has other implications for exposing new bugs, especially if you want to use program changes to change presets (e.g. from a synth/MIDI)
2) FFTW: I can't really change this, in part because it is published already in my book. However, if you (or anyone else) would like to do this coding and write the modules, that would be great!!! The same thing goes for sample-rate conversion. You can fork the repository here, and make the changes, add the other libraries etc... Then you can make a pull-request to merge the new code.
Once you get that working, I can change the ASPiKreator to allow different choices for the FFT linking to allow the user to choose. I know that FFTW is disliked because of its licensing, but I have been burned far too many times by relying on 3rd party code and libraries, where either something changed in a major way, or the code/libraries simply vanished for whatever reason - for my own development, it is one thing, but for a published book that will likely outlive those links you posted above, it is too risky. That is why I would prefer to see these as additions/options (via GitHub) rather than replacements.
FFTW isn't going anywhere. And, if nothing else, you can use it to profile the efficiency of other FFT libraries and make comparisons specifically as related to ASPiK's implementation. I would love to see those comparisons and I'm sure others in the community would as well.
3) COptionMenu - I'm not sure if you are talking about RackAFX or ASPiK, but in either event, the COptionMenu is already customizable via the VSTGUI4 editor. If you use the VSTGUI4 editor and add those items, they will be preserved if you use the RackAFX GUI designer. As with the other controls, you can subclass it as a custom view - I did this for my new synth projects that dynamically load strings. If I'm missing something here, let me know.
4) The UIViewSwitchContainer default behavior uses any GUI control that can issue integer control values as the switcher - CSegmentButton, CHorizontalSwitch, CVerticalSwitch, and COptionMenu all issue integers rather than floats. This means you can link an COptionMenu as the view switcher, and have that connect to your preset selection. In at least one case a while back, a user had linked an invisible option menu control to a non GUI-bound parameter and figured out a hack to change the UI switching programmatically with the send GUI update function.
You can also design a sub-controller to connect the view switcher to other controls and I did this a long time ago, to implement the old fashioned LCD control with alpha wheel and selection buttons. There is a sub-controller example in the custom views projects.
When I released ASPiK in January 2018, I had made the decision to make it fully open source, hosted on GitHub so that the community could contribute changes, upgrades, bug fixes, etc... many of the same things you are requesting here. The repository has been forked and starred many times, but to date (nearly 2 years), not a single person in the community has made a pull request to merge their new functionality into ASPiK. I think it seems to be a one-way deal, and perhaps I made a mistake in this decision.
I'm distributing the new synth projects as open-source as well, with the Git repository already sitting there, because of the way these C++ synths and objects are non-API and non-plugin-framework specific, and of course in hopes that I will get community contributions.
RackAFX is different, and not open source, so I can make those changes specifically on my own, due to feature requests, etc... Currently, the only major request I have is for a MacOS version.
The ASPiK VSTSDK 3.7 integration was nearly instant (they changed the location of the artwork, as you found out), but they also added a new interface, and you will need to modify your VST3 constructors if you want to get host BPM, time signature and buffer locations. I've already added that to the next ASPiK and will add a Forum post to show you what to add once I've merged the code on the Git repo - but some plugins don't use that information, which may be the reason that they added a new interface for your plugin to expose it's needs at construction time.
I will for my work add these elements in my personal templates:
- all preparations for including CustomMovieBitmaps
- all preparations for including CustomTextLabels
- all preparations for including CustomDraw areas
- Basic implementation of MIDI-in (btw, which hosts do support MIDI-out?)
- and an implementation of 64-bit audio-processing
Most Users Ever Online: 152
Currently Browsing this Page:
Guest Posters: 1
Newest Members:John Fuhrman, YizAKat, studentcode, moritzsur_1, moritzsur, alehouse, Scarlett, kait, smadger, jcayetano
Moderators: W Pirkle: 515
Administrators: Tom: 74, JD Young: 80, Will Pirkle: 0, W Pirkle: 515, VariableCook: 3