old filmstrip VU meter code no longer works...



  • @Christoph-Hart had helped me get a working filmstrip VU meter quite a while ago. and while this code works fine within HISE it does not function on compiled plugins. the default paint routine based VU meters do function once compiled but not these here is the code. i have a feeling that it has to do what it is calling from. as the newer VU meters all call from engine normalized peak etc and this draws from get master peak..im not sure why it isnt functioning

    /** 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": 130, // this uses the exact dimensions of one filmstrip
      "height": 65,
      "opaque": true // opaque is important in order to increase the drawing performance
    });
    
    // Put the image in your image folder
    widget.loadImage("{PROJECT_FOLDER}vu_meter_128_frames.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", 80, 49, false);


Log in to reply
 

0
Online

306
Users

848
Topics

5.5k
Posts

Looks like your connection to Forum was lost, please wait while we try to reconnect.