Proud to release my first sample instrument, BOLD, today. Used a custom JUCE UI and the raw HISE engine. Really happy with how it turned out. Enjoy!
Available for $9 USD.
Proud to release my first sample instrument, BOLD, today. Used a custom JUCE UI and the raw HISE engine. Really happy with how it turned out. Enjoy!
Available for $9 USD.
I ended up using the Projucer from the command line to turn my images into binary.cpp files, and place them in AdditionalSourceCode folder. It works.
@DanH Thanks. Yes I wanted a very simple install so I wrote some custom code to look for a file called Samples.hr1 in the Application Data folder. If it finds it, it does the automated install, loads the first preset so you don’t need a reboot.
@Tania-Ghosh Yes, looks like several chapters require a premium membership now. I don't recall it being that way.
Thanks everyone! Excited to have it out.
@Rudra-Ghosh I could add a VST3 version. Didn't seem necessary unless there's a DAW that only supports VST3. Also, the project outputs from HISE only support a single VST target, so it's a little cumbersome to go back and reoutput for VST3. I also read from Christoph that there weren't any VST3 features being used.
@yall I'm paying both JUCE and HISE for a commercial license. I didn't want to release my source code or my samples.
@Tania-Ghosh I've been working in JUCE for a while, so making a custom UI in C++ using JUCE was much easier for me than learning the scripting in HISE. Also, it allowed me to build whatever I wanted. There's a good course that's free on Kadenze by Output for making your first audio effect plugin using JUCE.
@iamlamprey Could be conveyed clearer. Basically, at some point, you'll have the downloaded installer and the uncompressed files on disk at the same time. Then you can delete the installer when finished. The 650mb refers to the space you'll need to have it installed. 1.3gb is for during the install, essentially double the installed space.
Proud to release my first sample instrument, BOLD, today. Used a custom JUCE UI and the raw HISE engine. Really happy with how it turned out. Enjoy!
Available for $9 USD.
Re: ExternalFloatingTile with parameter plugin state saving
@Christoph-Hart I have a nice raw C++ project using the VCSL example.
My knobs use UIConnections to hook up to Processor Attributes. I have my own preset setup using the addToUserPreset method. I’m adding parameters for the host to use as you do in the VCSL example.
That approach does not allow the UI to update the host parameters. Only the host parameter updates change the UI as their bound to the same attribute. Is there an example where I would call setValueNotifyingHost as well instead or in addition to using UIConnection?
I had to add some methods to use macros. Is there an example of a macro being a Plugin parameter? All the PluginProcessorParameters seem to end up calling setAttribute rather than setMacroControl, and I want the user to automate the macro control, not the individual parameters of the macro.
is it possible to put the setIntensity values of pitch modulators into the preset to load? That method is not a parameter attribute of a modulator, just a public method to call on the modulators. And the Data template specializations used in the preset don’t have a version for those.
UPDATE: I added a new method to MacroConnectionListener virtual void macroLoadedFromValueTree(int macroIndex, float value){}
which I call when a new value tree is loaded for the macros. My custom component calls setMacroControl
on the sliderValueChanged
callback, and updates the slider value on the macroLoadedFromValueTree
callback.
To watch the parameter, I search for the first parameter for that macro index and set up a parameter watcher, converting the NormalisableRange
to a linear 0 to 1 value in the callback.
Since parameters can change with every preset, I set that parameter watcher up at the same time macroLoadedFromValueTree
is called making sure to dispatch to the MessageManager for any repaints.
It's not as convenient as a UIConnection
class, but it works.
I'm building my UI and modules using the raw C++ approach. The UIConnection::Slider class and Parameter watchers have been helpful for binding my custom controls to the various Processor parameters.
Now, I want to use Macros with my custom sliders to control multiple parameters at once. I've been looking over the code a bit, and I'm not clear on the best way to proceed. I only want to show the custom macro control Not the parameters it controls.
There's no implementation of a UIConnection for a Macro, such that changing the slider updates the macro value, and when the macro changes, not from the UI, my slider gets updated.
I've also used the Parameter Watcher to bind to a parameter in that one way direction to the UI, and that would also be needed for my implementation.
Setting the macro value when moving the slider is simple. But getting updates from the macro when it changes is the challenge.
Any thoughts? I can write a custom UIConnection class, but I don't know how to solve updating the UI only when my slider didn't initiate the change.
I'm Raw.cpp constructor, I'm calling addToUserPreset
with various attributes. Is that way you mean?
@Christoph-Hart I worked off your example, and got a raw version of my sampler setup along with all the attributes I wanted in the preset. I was able to use the ProcessorHelpers::restoreFromBase64String()
to get modules in the same state as I had them in the HISE app. All works well.
Question is how to restore the loaded preset for a plugin state. Ableton Live is restoring all the samples maps and parameters correct on loading. But the plugin has no idea what User Preset was loaded.
Is that another attribute I store in the preset? The preset file itself? How do I add it so that the preset API restores the value correct from the value tree?
Ah, no. I’m just doing a standard plugin, but I have more JUCE and C++ experience and wanted full control over the GUI.