Re: Is running an idle graph considered expensive?
Re: Is running an idle graph considered expensive?
- Subject: Re: Is running an idle graph considered expensive?
- From: Daniel Jalkut <email@hidden>
- Date: Mon, 2 Jun 2003 17:30:20 -0700
Thanks for the enlightenment, Bill. I was seeing a lot of usage
associated with just running the graph, so I wanted to make sure I had
the semantic understanding right before complaining about it :)
The situation is quite a bit better when I'm not reverbing silence, so
I will take that compromise for now and look forward to more
performance improvements post-Jaguar.
Thanks again!
Daniel
On Monday, June 2, 2003, at 05:15 PM, Bill Stewart wrote:
On Sunday, June 1, 2003, at 11:17 AM, Daniel Jalkut wrote:
I have an AUGraph consisting of a synth music device and a default
output unit.
Up to now, I've played notes through this device using the
MusicSequence/Track/Player approach. This gave me a very clear
concept of when and for how long notes would need to be played
through the graph. Now, I'm adding a "piano keyboard" to my
interface, which should allow the user to test the sound of the
device at any time. When the user clicks a key, I send a StartNote
call to the graph, and when they release, I send an EndNote.
I've noticed that I have to have the graph "running" in order to have
these start and stop notes do anything. So my question is, should
running the graph be something that is considered expensive, or is it
entirely dependent on the amount of incoming data? The documentation
says that AUGraphStart "starts rendering." If there is no input to
the graph, is rendering essentially free, or is the default output
device chugging away turning zeros into silence?
Yes - is this expensive - depends on what you have the graph actually
doing...
This is one reason why we added and now support (even better) the
silent hint in the render flags of an audio unit - so an upstream unit
can tell its downstream ones that they are outputting silence, so
there's no need to do any work on the data...
It's hard to get a good semantic understanding for how and when
AUGraphStart/Stop should be called, because most of the sample code
is packaged as "test code" where it's not clear whether performance
is being considered.
Basically I want to know whether the "AUGraphStart" is more analogous
to turning the power on a device (less expensive) or pushing play on
the device (more expensive).
Its like pushing play - you can always profile this yourself by
looking at the CPU load of your process. In Terminal:
% top
We've done some work here so that an "idling" DLSMusicDevice doesn't
do a lot of work on nothing - so the usage you will see with a Jaguar
system if more expensive than what you'll see in the future...
Ultimately you don't have much of a choice actually - if you want your
interface to be really responsive to the user clicks, then you need to
keep the graph running. If a little bit of slack is OK, then obviously
its far more preferable to start and stop the graph as needed
Bill
Thanks!
Daniel
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.
-- mailto:email@hidden
tel: +1 408 974 4056
_______________________________________________________________________
___
"Much human ingenuity has gone into finding the ultimate Before.
The current state of knowledge can be summarized thus:
In the beginning, there was nothing, which exploded" - Terry Pratchett
_______________________________________________________________________
___
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.