HourGlass memory usage : the present and future plans

HourGlass doesn’t currently handle the loaded sound files very efficiently in memory.

Present scenario 1 : 4 different sound files loaded. All files may use at least double the memory really needed, as the offline processing has a memory buffer allocated regardless of the offline chain containing active DSP processes.

Present scenario 2 : The same sound file loaded into 4 sound sources slots. Again, separate buffer copies and possibly redundant offline processing buffers allocated.

While the problems presented above might not be a big deal for average use cases on desktop/high end laptop machines, it would be preferable to implement some improvements. (Thinking for example about adapting HourGlass to work as an ARA-based plugin…) Some improvements I can hopefully make in the not too distant future :

Don’t allocate buffers for the offline processing, if no processors are active :


If the same sound file is loaded many times, share the buffer :

If the same sound file is loaded many times and not all copies need offline processing :

Additionally, it might be worth considering if the current 32 bit floating buffers are really always needed. (Everything is initially loaded and later handled as 32 bit floating point samples even if the original file was just 8 bits integer.) However the only sensible downgrade would be to go to 16 bit integer buffers. 24 bit integers would be too fiddly to handle in the code and likely cause performance problems. If I decide to work on this, it would obviously be optional to use either 32 bit floats or 16 bit ints. I’ve also been highly resistant to think about adding any audio files disk streaming functionality, but it might be something I could maybe consider to add for the Play forward mode.

Advertisements
This entry was posted in C++, Programming. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s