@d-healey BOOM!
Thanks.
I'm quite certain I'll be signing up to your Patreon at some point. Doing reasonably well by myself so far but I'm only scratching the surface.
Appreciate all you are doing here!
@d-healey BOOM!
Thanks.
I'm quite certain I'll be signing up to your Patreon at some point. Doing reasonably well by myself so far but I'm only scratching the surface.
Appreciate all you are doing here!
Sooo... @d-healey. Your videos are great. The knobs and sliders one was just what I needed to create my custom design and I ran with that and have one FX plugin basically done.
However, when starting a new plugin, I discovered that the code seems to also affect the knobs and sliders in the built-in modules, see below. Making them kinda unusable.
I hadn't noticed before because I was only using Script FX.
Is there a way to change the scripts to only affect interface elements in the plugin and not HISE as a whole?
Here's the relevant bit of script (which works great for the actual plugin!):
// Customise Dials
laf.registerFunction("drawRotarySlider", function(g, obj)
{
var a = obj.area;
// Calculate padding as a percentage of the dial size
var padding = a[2] * 0.05; // % of the width
// Background circle
g.setColour(secondaryColour);
g.fillEllipse([padding, padding, a[2] - padding * 2, a[3] - padding * 2]);
// Define the angle range for the dial
var startAngle = -2.35; // Start position in radians (~135 degrees)
var endAngle = 2.35; // End position in radians (~45 degrees)
// Map valueNormalized (0-1) to the angle range
var angle = startAngle + (endAngle - startAngle) * obj.valueNormalized;
// Position the circle relative to the outer edge
g.setColour(primaryColour);
var radius = a[2] / 12; // Size of the circle
var offset = a[2] / 3.5; // Distance from the center
var centerX = a[2] / 2;
var centerY = a[3] / 2;
// Calculate position based on the angle and offset
var x = centerX + Math.sin(angle) * offset - radius;
var y = centerY - Math.cos(angle) * offset - radius;
// Draw the indicator circle
g.fillEllipse([x, y, radius * 2, radius * 2]);
});
// Customise Sliders
laf.registerFunction("drawLinearSlider", function(g, obj)
{
var a = obj.area;
g.fillAll(secondaryColour);
g.setColour(primaryColour);
if (obj.style == 2) // Horizontal
{
var w = a[2] / 21;
var x = a[2] * obj.valueNormalized - w * obj.valueNormalized;
g.fillRoundedRectangle([x, -1, w + 1, a[3] + 2], 0);
}
else // Vertical
{
var h = a[3] / 21;
var y = a[3] - a[3] * obj.valueNormalized - h + h * obj.valueNormalized;
g.fillRoundedRectangle([0, y, a[2] + 2, h + 1], 0);
}
});
Did the room thing go ahead...? I'm such a noob I don't know how to check if I'm in one, but I don't think I am.
@d-healey Ok so I'm following your "Look and Feel Knobs and Sliders" video and it's exactly what I needed... I was definitely overcomplicating things.
Thanks!
@d-healey Mhmm... gonna try from scratch based on one of your tuts. I had this idea that I wanted to remake everything with vectors because vectors = good... might have just been making life harder for myself instead.
@d-healey Heheh... I CAN'T RELAX!
JK. I'm chill, just keen. 🥰
Quite pleased with the progress I've made so far but only just began with the vector interface stuff and clearly have much to learn. Wondering if I'm missing something obvious with these dials.
Hello! I have created a working effects plugin using the generic interface elements in the interface designer.
Now I want to customise the GUI. I found and adapted some bits of code to generate vector dials that are kinda what I'm after but I run into issues trying to rewire things to replace the existing interface elements.
Is there a best method for doing this kind of thing? I'm still very nooby so I'm almost certainly missing some basic knowledge here.
Here's a bit of code I'm using to render some dials but they only output values of 0-1 without any skewing to match the parameters I want to assign them to.
Thanks for your invaluable help!
inline function createCircularKnob(name, x, y)
{
local widget = Content.addPanel(name, x, y);
Content.setPropertiesFromJSON(name, {
"width": 50,
"height": 50,
"allowCallbacks": "Clicks, Hover & Dragging"
});
widget.setPaintRoutine(function(g)
{
// Draw the knob base
g.setColour(Colours.black); // Solid color for knob
g.fillEllipse([0, 0, this.getWidth(), this.getHeight()]);
// Calculate pointer position
var angle = this.getValue() * 1.5 * Math.PI + Math.PI * 0.75; // Start at 7.5 o'clock, end at 4.5 o'clock
var centerX = this.getWidth() / 2;
var centerY = this.getHeight() / 2;
var radius = this.getWidth() * 0.4; // Pointer radius from center
var pointerX = centerX + Math.cos(angle) * radius;
var pointerY = centerY + Math.sin(angle) * radius;
// Draw the pointer
g.setColour(0xFFFFE092); // Pointer color (#FFE092 with full opacity)
g.fillEllipse([pointerX - 3, pointerY - 3, 6, 6]); // Small circular pointer
});
widget.setMouseCallback(function(event)
{
if(event.clicked)
{
this.data.mouseDownValue = this.getValue();
}
else if (event.drag)
{
var distance = event.dragX - event.dragY;
// Adjust sensitivity
var normalisedDistance = distance / 200.0;
// Calculate and clamp the new value
var newValue = Math.range(this.data.mouseDownValue + normalisedDistance, 0.0, 1.0);
this.setValue(newValue);
this.changed();
this.repaintImmediately();
}
});
return widget;
}
// Render Dials
const var HiQ_Dial = createCircularKnob("HiQ_Dial", 130, 220);
const var LoQ_Dial = createCircularKnob("LoQ_Dial", 190, 220);
const var HiCut_Dial = createCircularKnob("HiCut_Dial", 250, 220);
const var LoCut_Dial = createCircularKnob("LoCut_Dial", 310, 220);
I'd like to be added to the chat! Thanks!
@d-healey Forgot to come back and thank you for the reply!
Since fixing the IPP thing I've not had any problems spitting out working plugins on the Macbook. Great fun. I've worked through the first synth tutorial and that raised some questions that I may post later but I got the right results.
I definitely have some other things to learn by nyself before I start bothering the forums again but I'm pretty sure I'll be back soon. ️
To conclude. I hadn't installed the Intel IPP library because, a) it wasn't specified as mandatory, and b) the link in the install guide is an exe and I'm on mac.
Because the "Use IPP" box was checked in the settings it was failing at this stage when compiling. Unchecking it allowed the compiling process to complete.
Ooooh! I compiled a working plugin!
I feel this IPP thing may return to bite me in the ass so I'll still look for a solution to that but for now I'm super happy I got something that works in my DAW. 🥳
@Morphoice This is where my noobness will shine through... I have no idea how to use github.
How do I find the latest dev branch?
Meanwhile, I also bothered ChatGPT for some advice and I think I've got a step further. I didn't have IPP installed and there's an option to not use it. I've unchecked that in a test project and it's actually compiled!
Might not be a great fix but seemed to work for now. Gonna try a more complex project.
I've been casually clicking OK on this every time... maybe it's related.
@Morphoice Thanks for the welcome!
I did have a go at this, creating new projects with nothing in them or just a simple generator. I also tried no spaces in the project name, just in case.
Every time there's the same kind of error message, though it seems to appear in a different place.
Hello! I have just started using HISE and have managed to find my way around ok so far within the software but I have been unable to actually compile a plugin.
I'm using a Macbook Pro M1 with Sequoa 15.2 and the HISE build from GIthub. I have Xcode and Projucer installed along with the SDK stuff as per the Export Wizard. I am very much not an expert with all this coding and compiling stuff and feel I got lucky so far getting things up and running!
Whenever I try to Export as an Instrument or FX plugin I get a terminal popup which always includes a ** BUILD FAILED ** line halfway through and I'm not sure what to do next.
I've searched the web for solutions and have not found anything that works. I think the time for hand-holding has come. All help is massively appreciated. I have much to learn. ️
eg:
Last login: Tue Dec 31 10:16:25 on ttys003
/Users/stusmith/Documents/HISE\ Projects/Test\ Plugin/Binaries/batchCompileOSX ; exit;
stusmith@MacBookPro-2 ~ % /Users/stusmith/Documents/HISE\ Projects/Test\ Plugin/Binaries/batchCompileOSX ; exit;
Re-saving file: /Users/stusmith/Documents/HISE Projects/Test Plugin/Binaries/AutogeneratedProject.jucer
Finished saving: Visual Studio 2017
Finished saving: Xcode (macOS)
Finished saving: Xcode (iOS)
Finished saving: Linux Makefile
Compiling Instrument plugin Test Plugin ...
Building targets in manual order is deprecated - check "Parallelize build for command-line builds" in the project editor, or set DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING in any of the targets in the current build to suppress this warning
▸ Compiling include_melatonin_blur.cpp
▸ Compiling include_juce_product_unlocking.mm
▸ Compiling include_juce_gui_extra.mm
▸ Compiling include_juce_gui_basics.mm
▸ Compiling include_juce_opengl.mm
▸ Compiling include_juce_graphics.mm
▸ Compiling include_juce_events.mm
▸ Compiling include_juce_osc.cpp
▸ Compiling include_juce_dsp.mm
▸ Compiling include_juce_data_structures.mm
▸ Compiling include_juce_cryptography.mm
▸ Compiling include_juce_core.mm
▸ Compiling include_juce_audio_utils.mm
▸ Compiling include_juce_audio_processors.mm
▸ Compiling include_juce_audio_plugin_client_utils.cpp
▸ Compiling include_juce_audio_plugin_client_VST_utils.mm
▸ Compiling include_juce_audio_formats.mm
** BUILD FAILED **
The following build commands failed:
CompileC /Users/stusmith/Documents/HISE\ Projects/Test\ Plugin/Binaries/Builds/MacOSX/build/Test\ Plugin.build/Release/Test\ Plugin\ -\ Shared\ Code.build/Objects-normal/x86_64/include_hi_tools_02.o /Users/stusmith/Documents/HISE\ Projects/Test\ Plugin/Binaries/JuceLibraryCode/include_hi_tools_02.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler (in target 'Test Plugin - Shared Code' from project 'Test Plugin')
(1 failure)
▸ Compiling include_juce_audio_devices.mm
▸ Compiling include_juce_audio_basics.mm
▸ Compiling include_hi_zstd_3.mm
▸ Compiling include_hi_zstd_2.mm
▸ Compiling include_hi_zstd_1.mm
▸ Compiling include_hi_tools_02.cpp
▸ Compiling include_hi_tools_01.cpp
▸ Compiling include_hi_streaming.cpp
▸ Compiling include_hi_snex_62.cpp
▸ Compiling include_hi_snex_61.c
Build Carbon Resources build phases are no longer supported. Rez source files should be moved to the Copy Bundle Resources build phase. (in target 'Test Plugin - AU' from project 'Test Plugin')
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
[Process completed]