To Stream or Not To Stream?’

edited December 2017 in General

Which is more efficient? Play from RAM or stream from disk?

My banks contain 2-3 pages of samples, and I’m loading 2-4 banks during a jam. I am probably triggering around 10-15 loops at once, plus playing samples from the keyboard. I mute what isn’t required, but am not sure how much muted but ‘playing’ samples affect the CPU/RAM.

I was initially using DISK STREAMING: ON, but this seemed to cause a glitchy noise when samples were triggered.

So I’ve been turning DISK STREAMING: OFF, but now I am starting to get glitchy noise during playback. So I am wondering which approach is better for audio performance.

The manual says:

DISK STREAMING: Tells the application whereas it should load the sample into memory or read it directly from the hard drive. Setting DISK STREAMING to ON can be useful when using large samples, as they can overload the RAM memory.

It sounds like RAM is better, but streaming is a fallback for large samples. But what constitutes a “large sample”?

I am using an iPad Pro 12.9, first generation, 128GB storage, 115GB available. I believe that it has 4GB of RAM.

Thanks.

«1

Comments

  • @panoramica said:
    Which is more efficient? Play from RAM or stream from disk?

    My banks contain 2-3 pages of samples, and I’m loading 2-4 banks during a jam. I am probably triggering around 10-15 loops at once, plus playing samples from the keyboard.

    I’ve been turning DISK STREAMING: OFF but am starting to get static/dropouts in the audio. So I am wondering which approach is better for audio performance.

    The manual says:

    DISK STREAMING: Tells the application whereas it should load the sample into memory or read it directly from the hard drive. Setting DISK STREAMING to ON can be useful when using large samples, as they can overload the RAM memory.

    It sounds like RAM is better, but streaming is a fallback for large samples. But what constitutes a “large sample”?

    I am using an iPad Pro 12.9, first generation, 128GB storage, 115GB available. I believe that it has 4GB of RAM.

    Thanks.

    Id set quite a few samples to disk streaming with that many samples and banks. Guaranteed. I had to test the crud out of this and had to find a happy medium between the two. Keep the ones your using per session in memory if not using many. If using many in one session, use disk streaming. This is what I've found. Even though the manual says for long samples. It seems this equally applies to large sets of samples as disk streaming goes to CPU resources regardless of size.

  • edited December 2017

    Thanks for the tip, sounds like ON should be my default setting then.

    But I edited my question after I posted it. Did you ever have this problem in your testing?

    I was initially using DISK STREAMING: ON, but this seemed to cause a glitchy noise when samples were triggered.

  • @panoramica do you have your samples loaded into single layers or multiple layers? This is another test I performed awhile back. It seems BM3 uses less resources with samples loaded into a single pad versus multiple pads. So if you have sound sets per pad like kicks pad, snares pad, hats pad, etc you could maybe save some resources this way.

  • edited December 2017

    @panoramica said:
    Thanks for the tip, sounds like ON should be my default setting then.

    But I edited my question after I posted it. Did you ever have this problem in your testing?

    I was initially using DISK STREAMING: ON, but this seemed to cause a glitchy noise when samples were triggered.

    Are you really using this many samples/banks at once? I had two test banks one for CPU one for MEM but I wiped them. Maybe I could remake them and zip up and post to resources. It uses an empty.wav file and has all sorts of instructions on each pad of tests to perform to test CPU/mem limitations.

  • @mefisme Thanks, I’m not sure if that will fit my workflow but I’ll experiment.

    Yes I am running a ton of samples. It’s because I am rebuilding Live songs in BM3. Each track has a bunch of scenes. In BM3 I load 3 songs, 1 scene from each, then I start playing.

  • @panoramica said:
    @mefisme Thanks, I’m not sure if that will fit my workflow but I’ll experiment.

    Yes I am running a ton of samples. It’s because I am rebuilding Live songs in BM3. Each track has a bunch of scenes. In BM3 I load 3 songs, 1 scene from each, then I start playing.

    I am doing alot of the same in BM3. audio and live use. I use iPad pro 9.7. I don't know your particular setup (interfaces, controllers, how you independently chop your loops, exactly how long they are, pattern midi playing versus audio, any IAAs/aus) so it's hard to diagnose. I want to help though. If we can get this stable, everyone would know the best approach to stopping audio glitches.

  • @panoramica said:
    @mefisme Thanks, I’m not sure if that will fit my workflow but I’ll experiment.

    Yes I am running a ton of samples. It’s because I am rebuilding Live songs in BM3. Each track has a bunch of scenes. In BM3 I load 3 songs, 1 scene from each, then I start playing.

    Your songs per scene are they one long audio file or independent cuts?

  • edited December 2017

    I don't think muting samples has any effect on cpu/mem because the pads are still being triggered and are recordable regardless of mute.

    We currently can't disable a pad (think freezing like some DAWs). I'm not complaining and I'm patient. It will all work out. Devs are very supportive.

  • edited December 2017

    Off should be your default, if you have enough RAM to use for your samples, you should always use it, Disk Streaming should be a last resort or for things that are just way too large for RAM.
    RAM is much better/faster/efficient than any current storage medium for sample playback ;)

  • edited December 2017

    Your songs per scene are they one long audio file or independent cuts?

    Mostly they are loops, with FX baked in, because many songs are very old, or used some software which no longer exists, and I don't have the patience/ability to recreate the midi patterns in BM3 using different synths/fx.

    What I love about BM3 is the direct access to a live sample editor, so I can effectively chop/repurpose the sounds on the fly. In this way, the fact that they are flattened loops isn't an issue for me. To keep things sounding natural, I use tricks like Release to replace CPU hungry fx like delays.

    But yes, it means that I am triggering all the loops at the same time, unless I've put in extra effort when building up the patterns in BM3.

    Off should be your default, if you have enough RAM to use for your samples, you should always use it, Disk Streaming should be a last resort or for things that are just way too large for RAM.

    Thanks. With my current setup (mostly from RAM), the CPU is maxxing out at 76% and the RAM at 776.64MB. If this iPad has 4GB of RAM, I shouldn't be having any issues. But it's never that cut and dried, is it? I guess I need to know how much RAM BM3 is allocated, after iOS etc get their share. Maybe there's an app for that?

  • @5pinlink said:
    Off should be your default, if you have enough RAM to use for your samples, you should always use it, Disk Streaming should be a last resort or for things that are just way too large for RAM.
    RAM is much better/faster/efficient than any current storage medium for sample playback

    Then why is the default for BM3 when recording audio to a pad or audio track always set to DISK STREAMING on?

  • Do samples use the same amount of RAM when they are playing/not playing, simply by virtue of being loaded into the BM3 set?

  • @panoramica said:
    Do samples use the same amount of RAM when they are playing/not playing, simply by virtue of being loaded into the BM3 set?

    This is why I was saying to set the ones you aren't using to disk streaming ON. If you don't touch the pad, it's not theoretically streaming so it shouldn't effect CPU as much. And if your using single bank scene with a ridiculously long sample you do need to play it should be set memory or disk streaming dependent on what else is chewing CPU/mem. But idk, maybe I'm off on this.

  • edited December 2017

    @mefisme said:
    This is why I was saying to set the ones you aren't using to disk streaming ON. If you don't touch the pad, it's not theoretically streaming so it shouldn't effect CPU as much.

    I mean that BM3 has to assign some memory to having the sample loaded so that e.g. the waveform can be viewed without a lag. It's kind of a side note to the thread, because a song might have 10 patterns, all with different pad usage. If I choose a pattern with 3 midi loops, I still have all the other unsequenced pads in that bank using RAM somehow. But, I digress ;-)

  • @panoramica said:

    @mefisme said:
    This is why I was saying to set the ones you aren't using to disk streaming ON. If you don't touch the pad, it's not theoretically streaming so it shouldn't effect CPU as much.

    I mean that BM3 has to assign some memory to having the sample loaded so that e.g. the waveform can be viewed without a lag. It's kind of a side note to the thread, because a song might have 10 patterns, all with different pad usage. If I choose a pattern with 3 midi loops, I still have all the other unsequenced pads in that bank using RAM somehow. But, I digress ;-)

    Of course RAM is used with loaded samples. What's your idle state with everything loaded and nothing playing?

  • edited December 2017

    @mefisme said:

    @5pinlink said:
    Off should be your default, if you have enough RAM to use for your samples, you should always use it, Disk Streaming should be a last resort or for things that are just way too large for RAM.
    RAM is much better/faster/efficient than any current storage medium for sample playback

    Then why is the default for BM3 when recording audio to a pad or audio track always set to DISK STREAMING on?

    An audio track is always streaming, it is an audio track, the sampler shouldn't default to on unless the sample is a particular length and that will be governed by the lowest hardware currently supported.
    If you can use just RAM do so, or not, your call, im just telling you which is best, choice is yours ;)

  • @5pinlink said:

    @mefisme said:

    @5pinlink said:
    Off should be your default, if you have enough RAM to use for your samples, you should always use it, Disk Streaming should be a last resort or for things that are just way too large for RAM.
    RAM is much better/faster/efficient than any current storage medium for sample playback

    Then why is the default for BM3 when recording audio to a pad or audio track always set to DISK STREAMING on?

    An audio track is always streaming, it is an audio track, the sampler shouldn't default to on unless the sample is a particular length and that will be governed by the lowest hardware currently supported.
    If you can use just RAM do so, or not, your call, im just telling you which is best, choice is yours ;)

    I was just curious. I sampled a 1 bar loop at 120bpm. And disk streaming turned on by default for that pad. So a 1bar sample is considered a long sample by BM3. Haven't tried a oneshot to see it's default. Given im on an iPad pro, I would hope that a sample less than 3 seconds doesn't mean my hardware in considered one of the lowest supported.

  • @mefisme said:
    Of course RAM is used with loaded samples. What's your idle state with everything loaded and nothing playing?

    2-10% CPU, 774.64MB RAM - so the RAM usage is the same regardless of whether samples are actually being played, which makes sense.

  • @panoramica said:

    @mefisme said:
    Of course RAM is used with loaded samples. What's your idle state with everything loaded and nothing playing?

    2-10% CPU, 774.64MB RAM - so the RAM usage is the same regardless of whether samples are actually being played, which makes sense.

    So what's your CPU level when the play head is running?

  • I would make some of your samll> @mefisme said:

    @5pinlink said:

    @mefisme said:

    @5pinlink said:
    Off should be your default, if you have enough RAM to use for your samples, you should always use it, Disk Streaming should be a last resort or for things that are just way too large for RAM.
    RAM is much better/faster/efficient than any current storage medium for sample playback

    Then why is the default for BM3 when recording audio to a pad or audio track always set to DISK STREAMING on?

    An audio track is always streaming, it is an audio track, the sampler shouldn't default to on unless the sample is a particular length and that will be governed by the lowest hardware currently supported.
    If you can use just RAM do so, or not, your call, im just telling you which is best, choice is yours ;)

    I was just curious. I sampled a 1 bar loop at 120bpm. And disk streaming turned on by default for that pad. So a 1bar sample is considered a long sample by BM3. Haven't tried a oneshot to see it's default. Given im on an iPad pro, I would hope that a sample less than 3 seconds doesn't mean my hardware in considered one of the lowest supported.

    I doubt BM3 is changing the default size per hardware, like i say it will be governed by the lowest hardware currently supported (not even sure what that is) so if the lowest iPad it supports has 512mb of RAM or something, subtract OS and App requirements, we are probably not looking at much left for sample playback.
    Personally i would like a setting for this in prefs, i'm only on an Air2 which i think is only 2gig, but there is not much i ever run DFD and i have not had any glitches yet, but my use case is my use case, so cant comment on others, but RAM is always preferable to DFD.

  • I rarely have audio glitches but I'm not loading a bank carasouel of samples either. @panoramica is definitely working with alot of samples but that's a good thing. Finding the limitations and workarounds I mean. :smiley:

  • Yeah but running short stuff off DFD can be really detrimental, you have to remember that it is still using a RAM buffer but also taxing storage too, i think panoramica may be simply on the edge of his iPads ability, at that point you need to start looking at making some stereo samples mono, or 24bit stuff down to 16bit etc

  • @5pinlink said:
    Yeah but running short stuff off DFD can be really detrimental, you have to remember that it is still using a RAM buffer but also taxing storage too, i think panoramica may be simply on the edge of his iPads ability, at that point you need to start looking at making some stereo samples mono, or 24bit stuff down to 16bit etc

    DFD is dangerous with short samples for sure. It does chew through read/write cycles of the internal storage doesn't it?

  • @StudioES said:
    My 2 mike pence:
    If I'm triggering the sample several times per bar, I set it to OFF, which puts it in RAM.
    If I'm triggering the sample once or less per bar, then I set it ON, so it streams off disk.
    If I'm doing lots of automation to the sample, I set it to OFF.
    For long samples & beat-matched loops, I put them in Audio Tracks & don't bother with MIDI triggering.
    A tiny portion of the sample is placed in RAM if set to DISK STREAMING: ON.

    +1 to this @panoramica

  • @StudioES

    Haha. You and me both. This is good information. You should write up a tips/tricks post stating default values for projects/banks/sample use with DS ON/OFF

  • @mefisme said:

    @StudioES said:
    For long samples & beat-matched loops, I put them in Audio Tracks & don't bother with MIDI triggering.

    +1 to this @panoramica

    Thanks for the tips. I'll try streaming on for the loops.

    Audio tracks aren't an option because, unless I'm mistaken, they're only usable in a linear song structure. I'm doing live mashups, so there is no 'song'.

  • @StudioES said:

    A few large files totalling XXXMB will usually use less resources than many small files totalling XXXMB, BUT large files will cause slowdowns when graphically rendering the waveform. (i.e. - in the Sampler tab). So RAM is not the only factor.

    This is why I chop my audio patterns up in multiple scenes instead of a few. I can customize the behavior of each audio sample.

  • @panoramica said:

    @mefisme said:

    @StudioES said:
    For long samples & beat-matched loops, I put them in Audio Tracks & don't bother with MIDI triggering.

    +1 to this @panoramica

    Thanks for the tips. I'll try streaming on for the loops.

    Audio tracks aren't an option because, unless I'm mistaken, they're only usable in a linear song structure. I'm doing live mashups, so there is no 'song'.

    I'm always recording on custom audio tracks in song view in the background so I can set the loop there or drag the audio pattern to it's own scene. Is this what you mean? Because Audio tracks have patterns.

  • @mefisme said:

    @panoramica said:

    @mefisme said:
    Of course RAM is used with loaded samples. What's your idle state with everything loaded and nothing playing?

    2-10% CPU, 774.64MB RAM - so the RAM usage is the same regardless of whether samples are actually being played, which makes sense.

    So what's your CPU level when the play head is running?

    56%-71%

Sign In or Register to comment.