To enable it, update superdirt to the last commit (go into the downloaded-quarks/SuperDirt folder then git pull) then, in the superdirt startup code, before any ~dirt.loadSoundFiles call, put a ~dirt.doNotReadYet = true;
I'm using it by default, and my old laptop is happier!
Feedbacks welcome
@th4@polymorphic.engine
Just for information, that's not an implementation of mine, it was done by @julian (superdirt mantainer), I just did the proposal, debugging and encouragement
I run a pretty old machine here too (+10years), it has 16GB of ram but I find superdirt/sc sample loading will often just push it over the edge into swap... which requires meticulous sample set management.
This has made a huge difference to me ... it's made possible the use of some much lower spec machines for teaching/loaning, it's really opened up a lot of possibilities - thanks again
edit: one thing I will note, is it doesn't seem to handle missing samples too gracefully now:
ERROR: Message 'at' not understood.
RECEIVER:
nil
ARGS:
Symbol 'notYetRead'
PROTECTED CALL STACK:
Meta_MethodError:new 0x5635fca72b40
arg this = DoesNotUnderstandError
arg what = nil
arg receiver = nil
Meta_DoesNotUnderstandError:new 0x5635fca74b00
arg this = DoesNotUnderstandError
arg receiver = nil
arg selector = at
arg args = [ notYetRead ]
Object:doesNotUnderstand 0x5635fc5cec00
arg this = nil
arg selector = at
arg args = nil
DirtSoundLibrary:getEvent 0x5635fd3f8000
arg this = a DirtSoundLibrary
arg name = lidvox
arg index = 9.0
var allEvents = nil
var event = nil
DirtEvent:mergeSoundEvent 0x5635fca35cc0
arg this = a DirtEvent
var soundEvent = nil
a FunctionDef 0x5635fca351c0
sourceCode = "<an open Function>"
a FunctionDef 0x5635fd813fc0
sourceCode = "<an open Function>"
Function:prTry 0x5635fcd09600
arg this = a Function
var result = nil
var thread = a Thread
var next = nil
var wasInProtectedFunc = false
CALL STACK:
DoesNotUnderstandError:reportError
arg this = <instance of DoesNotUnderstandError>
Nil:handleError
arg this = nil
arg error = <instance of DoesNotUnderstandError>
Thread:handleError
arg this = <instance of Thread>
arg error = <instance of DoesNotUnderstandError>
Object:throw
arg this = <instance of DoesNotUnderstandError>
Function:protect
arg this = <instance of Function>
arg handler = <instance of Function>
var result = <instance of DoesNotUnderstandError>
Environment:use
arg this = <instance of Event>
arg function = <instance of Function>
var result = nil
var saveEnvir = <instance of Environment>
DirtEvent:play
arg this = <instance of DirtEvent>
OSCFuncBothMessageMatcher:value
arg this = <instance of OSCFuncBothMessageMatcher>
arg msg = [*13]
arg time = 395.80448335991
arg testAddr = <instance of NetAddr>
arg testRecvPort = 57120
OSCMessageDispatcher:value
arg this = <instance of OSCMessageDispatcher>
arg msg = [*13]
arg time = 395.80448335991
arg addr = <instance of NetAddr>
arg recvPort = 57120
Main:recvOSCmessage
arg this = <instance of Main>
arg time = 395.80448335991
arg replyAddr = <instance of NetAddr>
arg recvPort = 57120
arg msg = [*13]
^^ The preceding error dump is for ERROR: Message 'at' not understood.
RECEIVER: nil
I ran into an issue trying to do the git pull. I initially ran into an error so I tried this:
It then asked me to leave a comment as to why I was merging commits (or something like that). I couldn't figure out how to enter in my comment. I ended up closing the terminal and trying it again and I got a 'fatal error' because of an existing unfinished merge.
So what happened was there are some changes in your superdirt directory compared to the remote version - hence it requested the merge.
I would do the following:
# cancel the merge
git merge --abort
# reset the state to remote be identical to the remote branch
git reset --hard origin/master
# checkout/switch to the develop branch
git checkout develop
git pull
There are further issues with synths (and external midi) that @julian has just patched ... knowing your external midi workflow is pretty extensive @ben you will want to update your git:
git status
# make sure it is on the develop branch... if not do a:
git checkout develop
# fetch and merge latest commits on develop
git pull