CPU threads
Posted: Sat Sep 21, 2019 8:53 pm
Long preamble incoming, sorry .... !
Some of you know that for the last couple of years I've been developing a 'church organ' synthesis model in Flowstone. Been working with FS64 most of this year and I keep telling myself I've nearly finished ... ! (Very few believe this round here
)
I've arrived at the following : I now have a 'Voicer' (.exe), in which the various pipe-rank sounds are set up and adjusted, and a 'Player' (.exe) which consists of multiple 'pipe ranks' (= organ stops). Ranks can be loaded from the library files (my own format) that are produced by the Voicer. All working well.
My 'rank' generator comprises 3 poly waveform players + 2 envelope generators + a noise generator, and various other bits & pieces. In the arrangement I've devised I can quickly copy & paste as many ranks as I wish into a Player module.
The ASIO sound card I generally use is 'multi-client', meaning it can run several ASIO .exe progs at the same time (most cards can't do this), so an actual physical organ would potentially consist of several of my Players running together. On a big organ maybe 2 or 3 Players would be needed for each organ keyboard/pedaboard. Say 5 Players for a modest 2 manual organ.
So far so good. In recent tests Players have been loaded with 8 or 9 ranks, and in tests on my i7 PC I've been able to run 7 or 8 such Players simultaneously, that's 60 organ stops, maybe 70+ organ stops. Result - Yay!
However if I a) were to try and put 60 ranks into a single Player (no chance!), or b) if I try and go down the more obvious VST route, I can't get anything remotely like this capacity. What's going on?
The word 'threads' keeps coming up when I research this. Does anyone have some pro insight? I have very little idea of what 'thread' even means!
I get the impression that FS normally runs in a single CPU thread, and that, hence, if I run multiple instances of an exported .exe they each run in different threads, which would explain my rather surprising extra capacity. Is that right? Whereas - I'm assuming - if I run them as a vst version in, say, Cantabile, I don't get this bonus because Cantabile itself runs in a single thread.
Anyone know about this high level thread stuff? (And more importantly am I making any sense ?!!
)
I seem to already have a solution, but I'm forever intrigued to know what's actually going on inside this whirring black box on my desk!
H
Some of you know that for the last couple of years I've been developing a 'church organ' synthesis model in Flowstone. Been working with FS64 most of this year and I keep telling myself I've nearly finished ... ! (Very few believe this round here
I've arrived at the following : I now have a 'Voicer' (.exe), in which the various pipe-rank sounds are set up and adjusted, and a 'Player' (.exe) which consists of multiple 'pipe ranks' (= organ stops). Ranks can be loaded from the library files (my own format) that are produced by the Voicer. All working well.
My 'rank' generator comprises 3 poly waveform players + 2 envelope generators + a noise generator, and various other bits & pieces. In the arrangement I've devised I can quickly copy & paste as many ranks as I wish into a Player module.
The ASIO sound card I generally use is 'multi-client', meaning it can run several ASIO .exe progs at the same time (most cards can't do this), so an actual physical organ would potentially consist of several of my Players running together. On a big organ maybe 2 or 3 Players would be needed for each organ keyboard/pedaboard. Say 5 Players for a modest 2 manual organ.
So far so good. In recent tests Players have been loaded with 8 or 9 ranks, and in tests on my i7 PC I've been able to run 7 or 8 such Players simultaneously, that's 60 organ stops, maybe 70+ organ stops. Result - Yay!
However if I a) were to try and put 60 ranks into a single Player (no chance!), or b) if I try and go down the more obvious VST route, I can't get anything remotely like this capacity. What's going on?
The word 'threads' keeps coming up when I research this. Does anyone have some pro insight? I have very little idea of what 'thread' even means!
I get the impression that FS normally runs in a single CPU thread, and that, hence, if I run multiple instances of an exported .exe they each run in different threads, which would explain my rather surprising extra capacity. Is that right? Whereas - I'm assuming - if I run them as a vst version in, say, Cantabile, I don't get this bonus because Cantabile itself runs in a single thread.
Anyone know about this high level thread stuff? (And more importantly am I making any sense ?!!
I seem to already have a solution, but I'm forever intrigued to know what's actually going on inside this whirring black box on my desk!
H