[PD] Pd + asterisk?
Hans-Christoph Steiner
hans at eds.org
Mon Dec 3 07:16:44 CET 2007
On Dec 2, 2007, at 8:19 PM, Russell Bryant wrote:
> drh270 wrote:
>> This sounds great!
>
> Cool, thanks for the interest. :)
>
>> Chris, in an earlier post mentioned using OSC, he was using a Python
>> script, so communicating via OSC may be a starting point.
>
> Yeah, I saw that. Thanks for bringing up OSC again. The trick is
> going to be
> to have a real-time interface that provides both media and call
> signaling
> access. I could put together a native interface in Asterisk for
> OSC so that
> digit presses could be sent out as OSC messages. Then, optionally,
> at the same
> time, the audio could be flowing in and out of Pd, as well.
>
>> Seems to me that perhaps a SIP soft phone may be trickier because rtp
>> audio comes in on many ports, what about a Pd iax2 phone object and
>> have it listen to the audio on port 4569?
>
> SIP is definitely much more complicated than IAX2, and you won't
> see me writing
> a SIP interface. I would definitely go for IAX2. However, I would
> say that
> it's not quite for the reason that you mentioned. For RTP with
> SIP, ou always
> know what port the audio is going to come in on, because you're in
> charge of
> picking it.
>
> One issue that is on my mind, is scalability. It's clear to me how
> I could
> implement a Pd patch that could process 1, 2, 3, ... calls, but it
> is not yet
> clear to me how it could support any number N calls, up to what the
> network and
> processing power can support. However, it may be just be that my
> Pd knowledge
> is still very lacking. :)
That is Pd's weak point in general: multiple instances of processes.
Since everything running has a physical representation, that means
that each instance of a call in Pd would need it's own physical
representation in Pd. Currently, it isn't possible to load a new
patch without an interruption in the DSP. That interruption could be
just a click, but it's there nonetheless.
Whenever I need something that dynamically allocates new voices,
which is probably the most common Pd parallel to Asterisk's calls, I
use an "nqpoly4" which pre-allocates a number of instances of the
objectclass I am using. Then messages to processed are sent to that
already existing pool. It works well, in practice, but it is not
very resource-efficient.
There has been talk in the past about some optimizations that would
allow dynamic allocation without the interruption, but not a lot of
work done in that regard since it's pretty complicated. In
particular, the ideas I remember were building a new DSP chain in the
background, then swapping it in. The other was figuring out how to
only rebuild the parts of the DSP chain that changed.
.hc
------------------------------------------------------------------------
----
As we enjoy great advantages from inventions of others, we should be
glad of an opportunity to serve others by any invention of ours; and
this we should do freely and generously. - Benjamin Franklin
More information about the Pd-list
mailing list