Filmstrip size limit
-
@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?
-
Sorry I missed your question @d-healey ! I am looking into using morphing images instead of the traditional knob approach ( hence the huge sizes) . Though its somewhat experimental I have some very specific ideas from my experience on building and interacting with real physical instruments that I am looking to incorporate virtually.
-
deleted . . . .