Vienna Symphonic Library Forum
Forum Statistics

182,251 users have contributed to 42,214 threads and 254,729 posts.

In the past 24 hours, we have 4 new thread(s), 21 new post(s) and 50 new user(s).

  • A question about RAM Management

    A thought about the RAM Management functionality as I currently understand it:

    Obviously one of the disadvatages of the current solution is that you need to RESET after optimizing which requires huge ammounts of RAM (for some of the more complex patches at least). This may cause issues if you are working on a very complex (i.e. many VIs) piece. As you may run out of RAM upon hitting RESET.

    Would it be possible (if the tool doesn't already do this) simply to press the LEARN button, play the MIDI sequence and the tool goes off and loads any "new" samples that are required for the piece, instead of having to load the entire patch? This would be an ideal solution, especially if you were just making some minor changes to that MIDI track and didn't need to have the whole patch loaded

    Any thoughts?


    Tim

  • - nobody can help? Does my post not make sense, I'd have hoped someone from VSL would have responded.

  • Tim, hereĀ“s a response:

    Very good idea, very hard to implement, because after you optimized your Ram, you will have to record your new tones or sequence "blind" or load in another patch that lets you play and hear your new melody - and thatĀ“s an option you will always have - you donĀ“t HAVE to use the RESET button, you can simply load the patches you need, maybe even dedicate a matrix.

    "Minor changes" like velocity changes can easily be made by activating the "Velocity Xfade" button, that will keep all velocities of the used notes in your RAM (like in the Video).

    Hope that makes you feel better, and thanks a lot for your input.

    Best, Paul

    Paul Kopf Product Manager VSL
  • Hi Paul

    Thanks for getting back to me.

    My main concern was really taken from the VI video, where you demonstrate an octave transposition - in this case you are basically happy with the composition you just feel it would sound better an octave lower/higher. Alternatively you may just want to raise the current sequence by a 4th/5th etc, having an option that would let you re-learn would be a huge advantage.

    Obviously if you need to replay the sequence then a RESET would be the best option.

    Worth exploring further?

  • Hi Tim,

    I know what you mean, maybe this is a feature for upcoming versions.

    Best, Paul

    Paul Kopf Product Manager VSL
  • Cool - lets keep it for VI VST 1.2

  • Why not get hide that RAM management under the covers so that we don't have to worry about it? Then you can enhance it without us caring?
    That would be the better solution.
    Exposing this to the user is clunky and should not be part of any interface.
    If you work in a shop, you don't ask a customer to provide low-level clues as to how to do your job better. They expect a service, you satisfy that service as best you can.
    This is the way most good software is written.

  • hmmm, and how shall the software guess what you want to do at a certain point? this is also related to the way streaming is defined!
    to stay with your supermarket example: if you drive with your basket through the rows, how can the basket or sales-person know what's missing in your fridge?
    christian

    and remember: only a CRAY can run an endless loop in just three seconds.
  • last edited
    last edited

    @cm said:

    hmmm, and how shall the software guess what you want to do at a certain point? this is also related to the way streaming is defined!
    to stay with your supermarket example: if you drive with your basket through the rows, how can the basket or sales-person know what's missing in your fridge?
    christian


    Your analogy is wrong: knowing what is in your fridge is not part of the service a supermarket offers. Managing samples efficiently is most definitely a part of what your service should offer. If you are going to make an analogy, then the samples are the equivilent of the supermarket stock... supermarkets reload/unload the shelves based on customer demand. If something is popular, then it is restocked, if not, then it is never sold again. This is a better analogy. An algorithm that sits behind the scenes, that you never see that both serves to make the customer happier and the supermarket satisfy the customer better.

    So... how to do it?

    It is easy... and a standard technique used in IT... it is a cache that unloads the least recently used item. It works like this:
    1) Associate a 'last time played' time with each sample.
    2) Everytime a sample is played, e.g. receives a midi note, then update the time on the sample. This indicates that this sample is in use.
    3) Only if memory starts to run out, then unload the least recently used samples... or hopefully the samples that have not been used at all in this case. But do this either a) During playback, or b) whilst the user is not busy... e.g. as a background task whilst they are away from their PC.
    4) When a sample receives a midi event and is not loaded into memory, then load that sample into memory there and then, with obviously a small downside on latency.
    5) Provide a default switch to default all samples to be unloaded from memory when first you load a patch thus all samples will be lazily loaded into memory the first time they are played, thus no unnecessary samples will ever be loaded into memory.
    6) Provide a further switch to control the amount of pre-load so that pre-load can be set to 0.0 seconds thus allowing a virtually unlimitlness number of VSL instruments on a single machine.

    The above has the following disadvantages:

    Small latency issues if/when samples are loaded/unloaded on the fly.

    The above has the following advantages:

    Those composers with huge amounts of memory will never be hit by the downsides of above as will never run out of memory therefore never need to perform any of these actions.

    Those of us who don't care about real-time playing can configure VSL to never load any samples into memory and thus be able to run the entire VSL orchestra on a laptop given enough disk space. With the downside of extra latency. But who cares about that given that we are not talking real-time? I could live with 2 second latency if it meant limitless capacity and a single orchestral template.

    Those of us of have limited amounts of memory but still need real-time playing will only be affected by the small latency issues involved above if they start to run out of memory. This simply tells them that they are doing too much work for one machine.

    This type of cache and lazy loading/unloading is a standard IT technique that I use all the time in my day job designing trading systems in London investment banks... so I know it is easily possible.

  • last edited
    last edited

    @paynterr said:

    It is easy... and a standard technique used in IT... it is a cache that unloads the least recently used item. It works like this:
    1) Associate a 'last time played' time with each sample.
    2) Everytime a sample is played, e.g. receives a midi note, then update the time on the sample. This indicates that this sample is in use.
    3) Only if memory starts to run out, then unload the least recently used samples... or hopefully the samples that have not been used at all in this case. But do this either a) During playback, or b) whilst the user is not busy... e.g. as a background task whilst they are away from their PC.
    4) When a sample receives a midi event and is not loaded into memory, then load that sample into memory there and then, with obviously a small downside on latency.
    5) Provide a default switch to default all samples to be unloaded from memory when first you load a patch thus all samples will be lazily loaded into memory the first time they are played, thus no unnecessary samples will ever be loaded into memory.
    6) Provide a further switch to control the amount of pre-load so that pre-load can be set to 0.0 seconds thus allowing a virtually unlimitlness number of VSL instruments on a single machine.


    Hey Paynterr!
    That sounds very interesting! Definitaly a feature for a VI-upgrade. The use of RAM is a major issue. Mayby you could use a 'lock' button in the technique you presented, to lock the (optimized) samples in the RAM. In that way you can still use new instruments on the top, without risking your old samples thrown out.

    Regards
    Martin

  • Just like to throw in that this might be a good approach, however having the SC fully loaded will still take around 50GB RAM only for the samples (without OS and host or other apps). Having about 2-3GB availible per machine, you can see that you still could only load about 5% of the library. If you think further you'll see that figure is too low to practically work with the automatical load/unload procedure for live use as it is now, because the chances are very high you unload a sample that you will actually need later. The more samples you'd "lock" to RAM the worse the problem would get.

    When working on a track the user usually is always constantly changing things and thus "busy". Only a dedicated sequencer from VSL with all these features could peraps solve these things telling the VI what changes were made pre playback.

    Only one (afaik with major programming involved) thing perhaps could circumvent this - the VIs being able to load midi files (or better extracting the midi data from the proprietary sequencer files) and put a "scan" button on the VI interface where you scan a specific file pre playback and load the used samples accordingly. The VI however wouldn't know what key you'll press on the keyboard still. So if you save your file in the sequencer and hit "scan" on the VI you could load/unload all the samples not needed/not needed.

    Not loading the samples into RAM will raise latency for the sample. This may be acceptable for some orchestral samples, but it isn't acceptable if it's constantly changing which it will be with all the loading /unloading. This way it could happen one sample is loaded after first playback, then unloaded because RAM is full, and then loaded again later. Afterall you have to think of the fact not everybody is using 2GB machines which give you the best performance on this approach.

    Just my 2 cents,
    PolarBear

  • just a few words .... optimization (be it usage of RAM - headword: memory fragmentation, be it streaming - headwords: buffer sizes and access latency, be it processor load or automated sample selection) is a frail flower.
    you have to be very careful if you touch one component to not screw up the others and only the average and overall optimization is what gives you *performance*
    some ideas sound great but are simply limited through hardware specs or software issues (mostly the operating system itself).
    already in the past we often had to accept that a library with the size of VSL simply blasts the capacities of software and systems (be it the 1 GB barrier of gigastudio, be it the instrument limit of logic, be it the 2GB limit for processes)

    to unload samples *on the fly* is easy, to re-arrange memory not, to load something *on the fly* depends on the latency of the whole chain from midi to the bytes on the harddrive. to *pre-read* an arrangement would be a useful approach, but i don't know any application which would offer such an option. others would then miss the *play it life mode* without noticeable latency. there is much work left for developers.

    christian

    and remember: only a CRAY can run an endless loop in just three seconds.