Almost finished my first FX plugin! Just 1 small animation problem...
-
I'll put the updated code in here as well in case you need to see
Content.makeFrontInterface(600, 500); const var NoiseGenerator1 = Synth.getChildSynth("Noise Generator1"); /** Creates a VU-Meter from a filmstrip for the master volume. */ /** Creates a VU-Meter from a filmstrip for the master volume. */ inline function createFilmStripVuMeter(name, x, y, isLeft) { local widget = Content.addPanel(name, x, y); Content.setPropertiesFromJSON(name, { "width": 127, // this uses the exact dimensions of one filmstrip "height": 167, "opaque": true // opaque is important in order to increase the drawing performance }); // Put the image in your image folder widget.loadImage("{PROJECT_FOLDER}LED Output Meter V1_128 Frames_127 x 167 pixels.png", "filmstrip"); widget.data.value = 0.0; widget.data.isLeft = isLeft; // Set the initial image widget.setImage("filmstrip", 0, 0); widget.setTimerCallback(function() { // Get the peak value from the master output var newValue = Engine.getMasterPeakLevel(this.data.isLeft ? 0 : 1); if(newValue > this.data.value) this.data.value = newValue; else // Just decay the current value (0.92 controls the decay time) this.data.value = this.data.value * 0.92; // Calculate the filmstrip index // this must be an integer value // 84 is used instead of 128 because 84 is ~0dB which is // more accurate for this example filmstrip var index = parseInt(this.data.value * 84.0); // If you just want to paint one image, // you don't need the paint routine, but // just use this method // the yOffset is index * heightOfFilmstrip this.setImage("filmstrip", 0, index * 65); }); widget.startTimer(30); return widget; }; const var VuMeterLeft = createFilmStripVuMeter("VuMeterLeft", 11, 10, false);
-
Did you try this
Console.print(index);
? all I get is 0.Another thing I noticed . The timer is running constantly, wouldn't it be better to only run it while the value > 0?
-
Because of this thread I assume something must have changed in HISE.
Anyway it seems that
var index = parseInt(this.data.value * 84.0); // If you just want to paint one image, // you don't need the paint routine, but // just use this method // the yOffset is index * heightOfFilmstrip this.setImage("filmstrip", 0, index * 64);
Is where the problem lies. Firstly
var index = parseInt(this.data.value * 84.0);
always returns 0, I think that if you increase 84 to 19000 it might be better.And this
this.setImage("filmstrip", 0, index * 64);
You need to change 64 to be the height of your filmstrip frame167
-
@SteveRiggs
The project is in the attachment below, both right and left channel meters are working now ;) -
@orange @d-healey Boom! Thanks guys. Very much appreciated!
@orange Out of interest (so I know for next time), was it just the line David mentioned below that was the problem? Or did I mess up anything else?
And this
this.setImage("filmstrip", 0, index * 64);
You need to change 64 to be the height of your filmstrip frame167
-
@SteveRiggs Yeah index value must be height of the each frames ;)
-
@orange Excellent. Thanks man
-
@orange said in Almost finished my first FX plugin! Just 1 small animation problem...:
Thank You @orange For The Project. But Somehow The Example Won't Work After I Compiled The Plugin, Any Idea?
NOTE: ENABLE_ALL_PEAK_METERS=1 Enabled
Meter Works In Hise, But Does Nothing In Compiled Fx Plugin :( -
@Natanr said in Almost finished my first FX plugin! Just 1 small animation problem...:
@orange said in Almost finished my first FX plugin! Just 1 small animation problem...:
Thank You @orange For The Project. But Somehow The Example Won't Work After I Compiled The Plugin, Any Idea?
NOTE: ENABLE_ALL_PEAK_METERS=1 Enabled
Meter Works In Hise, But Does Nothing In Compiled Fx Plugin :(Have you enabled "Embed Image Files" & "Embed Audio Files" in the preferences section?
-
@orange If You Mean This CheckBox, It Is Already Ticked :/
-
@Natanr What about "Embed Image Files" ? Did you enabled it too?
Also are you sure that your image strip is in your project's image folder?
-
@orange Mate, There Is No Such An Option In My Preferences :(
-
@Natanr Should be right under embed audio files, I see it is not there in your screen shot. What version of HISE are you using?
-
@d-healey I'm On 2.1.0 / 29 Oct / Build 650
-
Weird. I'm on a build from Oct 21st and mine looks like this
-
@d-healey Wierd :/
-
@Natanr
-
In the latest Hise builds, if you create new projects, "Embed Image Files" option is under the "Embed Audio Files". But if you open old projects in new Hise builds, "Embed Image Files" opton is on somewhere in bottom, please check carefullly, look again around VST3 support area.
-
Try to create a new empty project. Then go to the Preferences section, and see if this option is available or not.
-
-
@orange Thanks Mate, I'll Check And Keep You Updated :)