That makes sense. And thank you for taking the time to answer.
BTW, I just have to say, I am so totally impressed with your work.
HISE is an absolutely AMAZING tool!
Thank you for all your hard work on it.
Larry
Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.
That makes sense. And thank you for taking the time to answer.
BTW, I just have to say, I am so totally impressed with your work.
HISE is an absolutely AMAZING tool!
Thank you for all your hard work on it.
Larry
"Do you want to save this preset?"
"Do you want to overwrite the preset?"
"This will save the current XML file"
"Overwrite the existing XML?"
How can I get rid of these annoying confirmation boxes?
I'm willing to re-compile, but don't know where I can globally disable these.
Found the typo... fixed it...
Thanks for the video.
I've been watching your videos ever since I first found out about HISE (which was only a couple of weeks ago)
Funny thing is, looks like I've already watched that particular video.
I'll watch it more closely this time.
Thanks for all your help and rapid response.
BTW, also I really appreciate the work you've done with the instructional videos...
Great job!
All the very best to you!
L
Got it working...
For others who many be interested, here is code that will apply local look and feel to 'p' pages of sliders in 'r' rows, and 'c' columns.
var number_rows = 1;
var number_cols = 3;
var slider_id = [];
var slider_name = [];
var slider_count = 0;
var faderLineWidth = 3;
var slider_image_height = 30;
for (p = 0; p < number_of_rhythm_players; p++)
{
player_counter = 1;
for (r = 0; r < number_rows; r++)
{
for (c = 0; c < number_cols; c++)
{
slider_name[slider_count] = "Slider" + (p + 1) + (r + 1) + (c + 1);
slider_id[slider_count] = Content.createLocalLookAndFeel();
slider_id[slider_count].loadImage("{PROJECT_FOLDER}SliderKnob.png", "SliderKnob");
slider_id[slider_count].registerFunction("drawLinearSlider", function(g, obj)
{
// get the slider area
var a = obj.area;
var x1 = a[0];
var x2 = a[1];
var y1 = a[2];
var y2 = a[3] - slider_image_height;
var midway = y1 * 0.5;
// set color and draw the slider line
g.setColour(0xFF777777);
g.drawLine(x1 + midway, x2 + midway, y1 - y1, y2 + slider_image_height, faderLineWidth);
// draw the fader image on the line
g.drawImage("SliderKnob", [x1, 190 - x2 + (y2 * -obj.value), y1, y2], 0, 0);
});
slider_name[slider_count] = Content.getComponent(slider_name[slider_count]);
slider_name[slider_count].setLocalLookAndFeel(slider_id[slider_count]);
slider_count++;
}
}
player_counter++;
}
Ha!
No, that is my code unfortunately...
Guess I should consider that a compliment? But I'm not sure.
How would you suggest I improve it (other than using REG instead of VAR?
L
I'm making a custom look and feel for all sliders in my project.
Do I have to create a look and feel object for each slider like I'm currently doing or can I use a global one instead?
I've tried to do a global one previously, but it doesn't seem to work.
This is what I've come up with so far.
This works, even though the slider image operates backwards (still working on that problem)
I'm open to suggestions, comments, and ways to improve this code.
var slider_id = [];
var slider_name = [];
var number_rows = 1;
var number_cols = 3;
var slider_count = 0;
var faderLineWidth = 3;
for (var p = 0; p < number_of_rhythm_players; p++)
{
player_counter = 1;
for (var r = 0; r < number_rows; r++)
{
for (var c = 0; c < number_cols; c++)
{
slider_name[slider_count] = "Slider" + (p + 1) + (r + 1) + (c + 1);
slider_id[slider_count] = Content.createLocalLookAndFeel();
slider_id[slider_count].loadImage("{PROJECT_FOLDER}SliderKnob.png", "SliderKnob");
slider_id[slider_count].registerFunction("drawLinearSlider", function(g, obj)
{
// get the slider area
var a = obj.area;
var x1 = a[0];
var x2 = a[1];
var y1 = a[2];
var y2 = a[3];
var midway = y1 * 0.5;
// set color and draw the slider line
g.setColour(0xFF777777);
g.drawLine(x1 + midway, x2 + midway, y1 - y1, y2, faderLineWidth);
// draw the fader image on the line
// This is showing up at the top of the fader instead of bottom
// and works backwards... still working on this issue
g.drawImage("SliderKnob", [x1, (y2 * obj.value) - x2, y1, y2], 0, 0);
});
slider_name[slider_count] = Content.getComponent(slider_name[slider_count]);
slider_name[slider_count].setLocalLookAndFeel(slider_id[slider_count]);
slider_count++;
}
}
player_counter++;
}
It seems to me that if the host is controlling keyboard input and passing it along to the plugin, it would be up to the DAW to not start/stop playback when a text window is opened in the plugin.
At least, that's what makes sense to me.
Thoughts?
I have the same issue...
But it's not limited to HISE plugins.
It also happens with Surge.
I think it may be a Reaper issue.
L
No, it's a little more complicated than that.
I just became a Patreon supporter highest tier.
Can I send you a message there with more detailed code?
I understand that... and it does.
But when I run your code, and click on the logo button, button 4 activates even if button 1 was activated before the logo button was pushed.
I want whatever button was active before to return to being active when the logo is pressed a 2nd time and the splash screen goes away.
Maybe a better way to explain this is I want to 'push' the state of the buttons onto a stack/array and then 'pop' their state after the splash screen goes away.
No.
I'll explain further...
The splash screen happens when the program loads.
AND
It happens when the logo button is clicked on.
When program first loads, I want button 1 to be active.
But when the logo button is clicked, I want whatever button was active to return to being active.
Thank you for the code... it is much simpler.
However, using this code leaves the last button activated instead of the first.
Any idea how I can have the first button be activated/highlighted and NOT switch to the last one?
//! pnlTab
const pnlTab = Content.getAllComponents("StylesPanel");
//! btnHideAll
const btnHideAll = Content.getComponent("SplashScreenTriggerButton");
btnHideAll.setControlCallback(onbtnHideAllControl);
inline function onbtnHideAllControl(component, value)
{
setTabVisibility();
}
//! btnTab
const btnTab = Content.getAllComponents("Rhythm_Button");
for (x in btnTab)
{
x.setControlCallback(onbtnTabControl);
}
inline function onbtnTabControl(component, value)
{
local index = btnTab.indexOf(component);
for (i = 0; i < btnTab.length; i++)
btnTab[i].setValue(index == i);
setTabVisibility();
}
//! Functions
inline function setTabVisibility()
{
for (i = 0; i < btnTab.length; i++)
{
pnlTab[i].showControl(btnTab[i].getValue() && !btnHideAll.getValue());
}
rhythmDisplayid.set("visible", !btnHideAll.getValue());
spashScreenNameID.set("visible", btnHideAll.getValue());
}