Filmstrip size limit



  • Hi @Christoph-Hart, I am looking to create some experimental interfaces and was wondering if there is a way to get around the 500x500 pixel size limitation on filmstrip sizes? If so it would make a massive difference for what I am cooking up πŸ™‚



  • @briandoliveira Where did you get that size limit from?



  • Not sure if there really is a limit but itβ€˜s there for a good reason. Using filmstrips like this will result in multiple gigabytes of RAM usage.



  • I assume you mean 500x500 per frame not per image then? Or else I'm screwed!



  • I just realized that I was messing it up on my end! It works great!

    To answer your question @d-healey I had inferred that perhaps there was a limit from what Knobman was outputting.

    And thanks for the heads up on memory usage @Christoph-Hart ! I am aware and plan on using some image optimization to make it work within some a reasonable boundary so that it doesn't choke up people's systems.

    Once I have something near to a finished version I will be sharing with all of you πŸ™‚

    Thanks!



  • @briandoliveira said in Filmstrip size limit:

    And thanks for the heads up on memory usage @Christoph-Hart ! I am aware and plan on using some image optimization to make it work within some a reasonable boundary so that it doesn't choke up people's systems.

    No image optimization on earth will help you here. The images are stored as raw bitmaps in memory and this is nothing that can be changed since it's deep in the OS graphics handling.

    A 500x500px filmstrip with 100 strips is 100MB of memory, which equals the preload buffer size of an entire orchestra.



  • Oh snap! Thanks for the heads up @Christoph-Hart ! That is a massive roadblock 😒

    Would you have any suggestions to approach doing creative interactions/animations within HISE? I am assuming that using vectors will be way more efficient. I also noticed that you had at some point added OpenGL within HISE.



  • @briandoliveira How big are your controls? Even at 20% size 500x500 would still be 100x100 which is plenty big for a button or knob.

    Calculation is MB = width * height * 4 * numFrames / 1000000

    Crap I just realised my plugins must be using tons of RAM for images. Time for a rethink! @Christoph-Hart Do multiple instances share images?



  • @d-healey said in Filmstrip size limit:

    Do multiple instances share images?

    Yes.

    MB = width * height * 4 * numFrames / 1000000
    

    more like

    MB = width * height * 4 * numFrames / 1024 / 1024 :)
    

    Crap I just realised my plugins must be using tons of RAM for images.

    You can see the actual size (= not the file size of the compressed image) it will take up in memory in the Image Pool Table.



  • So if my calculations are right, a 128x128px filmstrip with 128 frames would be 8mb big. Even if the actual size of the filmstrip is like around 300kb, right?

    what if we use the same filmstrip for two controls in a plug-in? Is it then still 8mb or 16mb of ram usage?

    Edit: nevermind, you just answered it. So multiple instances are shared πŸ™‚



  • You can see the actual size (= not the file size of the compressed image) it will take up in memory in the Image Pool Table.

    Phew! Only 76MB, I can live with that.

    How does GUI size scaling affect the memory usage?



  • @d-healey said in Filmstrip size limit:

    How does GUI size scaling affect the memory usage?

    I’d like to know that as well



  • Shouldn't affect it too much, the original file size of the images is more important - it may be possible that it has to create an resampled image during the UI rendering, but this will not stay in memory after the job is done AFAIK.



  • Interesting @Christoph-Hart

    So, if I want to create all the GUI with vectors, how should I go about it?

    I saw someone posted a clickable gearwheel for a website link, but I couldn’t figure out how to create vector paths. Any hints?



  • Well, you don't have to go all the way to the other side and ditch every single image just because a 500x500 filmstrip is overkill πŸ™‚

    You can also combine bigger "static" images with smaller images that contain the animation, or images with vector effects (rotation, applying some shadow) etc.

    Whatever you do, this is the entry point to the vector UI world in HISE:

    https://docs.hise.audio/scripting/scripting-in-hise/scriptpanel.html

    But you probably want to wait for David's upcoming video on the subject πŸ™‚



  • But if I have 4 different filmstrips with 128x128 and 128 frames it would take up more RAM than one single 500x500 filmstrip. So, if I can avoid filmstrips for simple knobs and buttons I’d use for vectors



  • But if I have 4 different filmstrips with 128x128 and 128 frames it would take up more RAM than one single 500x500 filmstrip

    4 filmstrips with 128x128 take about 25% of a single 500x500 filmstrip. The area of a rectangle is not linear to the size of its edges πŸ™‚



  • This post is deleted!


  • Ah, got it. Thanks for clarifying πŸ™‚



  • @Christoph-Hart super glad that I brought up this thread! It's been enlightening and probably saved me a few hundred hours of work! Looking at your last suggestion I see a great way to create what I am envisioning by using invisible sliders to dynamically control the movement of multiple vector and still images via X, Y,W,H + Alpha parameters. Are there any CPU performance or memory snags that might occur by using this method?


Log in to reply
 

17
Online

540
Users

2.0k
Topics

15.9k
Posts