To Stream or Not To Stream?’
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.
Comments
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.
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?
@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.
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.
I think this feature would help:
https://intua.net/forums/discussion/5961/sequencer-show-muted-tracks
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.
Your songs per scene are they one long audio file or independent cuts?
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.
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
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.
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?
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?
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.
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?
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.
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:
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.
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?
+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
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'.
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.
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.
56%-71%