[PD] Pd + asterisk?

2007-11-16 Thread Hans-Christoph Steiner

Hey all,

I just met the development team of Asterisk at a talk they gave.  For  
those who don't know it, it's free software for building complete  
phone systems, including voicemail, touch tone menus, voice prompts,  
voice recogniztion integration, etc.  It's very cool software, it  
allows you to do whatever you want with phones.

Anyway, I was thinking that Pd and Asterisk would be a very natural  
pair, so I am wondering whether anyone has tried using the two together.

http://asterisk.org/

.hc


 


"[W]e have invented the technology to eliminate scarcity, but we are  
deliberately throwing it away to benefit those who profit from  
scarcity."-John Gilmore



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-11-16 Thread PSPunch

I've done this with Asterisk 1.2

About an year ago I was hyped by how easily voice menus
could be created using Asterisk.
Mainly letting voice menus interact with PD and I didn't do
much audio work.

Asterisk has a platform to easily integrate scripts called AGI.
Any language which returns commands in the required format to
STDOUT can be used with AGI.
I prepared some PHP scripts that were called when pressing the
dial pad, which would then throw UDP packets to PD.
.. nothing fascinating.


As a matter of fact, I had an Asterisk server running at home
which allowed users to login using the touchpad, then record their
voices which get mixed with a BGM of their choice and auto upload
to their blog. I may have a bit of knowledge to get total newbies started.

(But please don't count on it too much.. haven't touched it in a while)



Hans-Christoph Steiner wrote:
> Hey all,
> 
> I just met the development team of Asterisk at a talk they gave.  For  
> those who don't know it, it's free software for building complete  
> phone systems, including voicemail, touch tone menus, voice prompts,  
> voice recogniztion integration, etc.  It's very cool software, it  
> allows you to do whatever you want with phones.
> 
> Anyway, I was thinking that Pd and Asterisk would be a very natural  
> pair, so I am wondering whether anyone has tried using the two together.
> 
> http://asterisk.org/
> 
> .hc
> 
> 
>  
> 
> 
> "[W]e have invented the technology to eliminate scarcity, but we are  
> deliberately throwing it away to benefit those who profit from  
> scarcity."-John Gilmore
> 
> 
> 
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list
> 


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-11-17 Thread drh270
I am currently doing some Asterisk to Pure Data stuff.

I am in Eindhoven at the van Abbemuseum and set up an Asterisk to Pd
radio station.
I have a patch that runs on the computer and it looks for recorded
phone call files on the asterisk server and then plays them randomly,
and if a new call is recorded, that file is played automatically.

Then the audio is transmitted on terrestrial FM radio and streamed via
the mp3cast~ object to an icecast2 server.

http://31down.org/PUI/phone-to-radio-system.html

Let me know if you are interested in the Asterisk/pd files.

-Ryan Holsopple


On 11/17/07, PSPunch <[EMAIL PROTECTED]> wrote:
>
> I've done this with Asterisk 1.2
>
> About an year ago I was hyped by how easily voice menus
> could be created using Asterisk.
> Mainly letting voice menus interact with PD and I didn't do
> much audio work.
>
> Asterisk has a platform to easily integrate scripts called AGI.
> Any language which returns commands in the required format to
> STDOUT can be used with AGI.
> I prepared some PHP scripts that were called when pressing the
> dial pad, which would then throw UDP packets to PD.
> .. nothing fascinating.
>
>
> As a matter of fact, I had an Asterisk server running at home
> which allowed users to login using the touchpad, then record their
> voices which get mixed with a BGM of their choice and auto upload
> to their blog. I may have a bit of knowledge to get total newbies started.
>
> (But please don't count on it too much.. haven't touched it in a while)
>
>
>
> Hans-Christoph Steiner wrote:
> > Hey all,
> >
> > I just met the development team of Asterisk at a talk they gave.  For
> > those who don't know it, it's free software for building complete
> > phone systems, including voicemail, touch tone menus, voice prompts,
> > voice recogniztion integration, etc.  It's very cool software, it
> > allows you to do whatever you want with phones.
> >
> > Anyway, I was thinking that Pd and Asterisk would be a very natural
> > pair, so I am wondering whether anyone has tried using the two together.
> >
> > http://asterisk.org/
> >
> > .hc
> >
> >
> > 
> > 
> >
> > "[W]e have invented the technology to eliminate scarcity, but we are
> > deliberately throwing it away to benefit those who profit from
> > scarcity."-John Gilmore
> >
> >
> >
> > ___
> > PD-list@iem.at mailing list
> > UNSUBSCRIBE and account-management -> 
> > http://lists.puredata.info/listinfo/pd-list
> >
>
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list
>

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-11-23 Thread Hans-Christoph Steiner

Fun stuff, three of these.  I had been vaguely thing of making some  
kind of AGI object for Pd.  It would be nice to easily tap into  
Asterisk from Pd.

A softphone that uses Jack would be handy too... on that note, I  
wonder how hard it would be to make a softphone in Pd :)

.hc

On Nov 23, 2007, at 3:44 PM, Chris wrote:

> Hey,
>
> about a year ago i did some audio-stuff with Pd and asterisk but I  
> can't
> get it to work anymore. What I did was this:
> I used a Softphone (Linphone) on my Desktop-machine to connect to
> asterisk, it's audio was connected to a oss2jack-device.
> I made a small patch wich put the input out with a 3 second delay and
> with variable pitch and used it to play some jokes to several people.
>
> But this doesn't work anymore, at least not in Ubuntu Gutsy. It's
> definitely time for a Softphone with native jack-support (or a
> SIP-extension for pd ;)).
>
> Another thing I did about 3 months ago was a small AGI-script for
> asterisk which sent keypresses from a caller via OSC. I used it as  
> input
> for some gem-stuff.
>
> I thought maybe it's possible to recognize dtmf in Pd, or even  
> emulate a
> modem or something in it, I'm trying for some hours now to get  
> oss2jack
> or the jack-libalsamodule to work, but I think I give up.
>
> So please anyone program a jack-capable sip-phone or something and let
> me know if someone's interested in my OSC-agi-script and I'll try to
> find it.
>
>
> -Chris
>
>
> Hans-Christoph Steiner schrieb:
>> Hey all,
>>
>> I just met the development team of Asterisk at a talk they gave.  For
>> those who don't know it, it's free software for building complete
>> phone systems, including voicemail, touch tone menus, voice prompts,
>> voice recogniztion integration, etc.  It's very cool software, it
>> allows you to do whatever you want with phones.
>>
>> Anyway, I was thinking that Pd and Asterisk would be a very natural
>> pair, so I am wondering whether anyone has tried using the two  
>> together.
>>
>> http://asterisk.org/
>>
>> .hc
>>
>>
>> - 
>> ---
>> 
>>
>> "[W]e have invented the technology to eliminate scarcity, but we are
>> deliberately throwing it away to benefit those who profit from
>> scarcity."-John Gilmore
>>
>>
>>
>> ___
>> PD-list@iem.at mailing list
>> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
>> listinfo/pd-list
>>
>>
>
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
> listinfo/pd-list



 


Using ReBirth is like trying to play an 808 with a long stick.- 
David Zicarelli



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-11-23 Thread Chris
Hey,

about a year ago i did some audio-stuff with Pd and asterisk but I can't
get it to work anymore. What I did was this:
I used a Softphone (Linphone) on my Desktop-machine to connect to
asterisk, it's audio was connected to a oss2jack-device.
I made a small patch wich put the input out with a 3 second delay and
with variable pitch and used it to play some jokes to several people.

But this doesn't work anymore, at least not in Ubuntu Gutsy. It's
definitely time for a Softphone with native jack-support (or a
SIP-extension for pd ;)).

Another thing I did about 3 months ago was a small AGI-script for
asterisk which sent keypresses from a caller via OSC. I used it as input
for some gem-stuff.

I thought maybe it's possible to recognize dtmf in Pd, or even emulate a
modem or something in it, I'm trying for some hours now to get oss2jack
or the jack-libalsamodule to work, but I think I give up.

So please anyone program a jack-capable sip-phone or something and let
me know if someone's interested in my OSC-agi-script and I'll try to
find it.


-Chris


Hans-Christoph Steiner schrieb:
> Hey all,
>
> I just met the development team of Asterisk at a talk they gave.  For  
> those who don't know it, it's free software for building complete  
> phone systems, including voicemail, touch tone menus, voice prompts,  
> voice recogniztion integration, etc.  It's very cool software, it  
> allows you to do whatever you want with phones.
>
> Anyway, I was thinking that Pd and Asterisk would be a very natural  
> pair, so I am wondering whether anyone has tried using the two together.
>
> http://asterisk.org/
>
> .hc
>
>
>  
> 
>
> "[W]e have invented the technology to eliminate scarcity, but we are  
> deliberately throwing it away to benefit those who profit from  
> scarcity."-John Gilmore
>
>
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list
>
>   


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-11-26 Thread Chris
Ok, here is my script (it wasn't a AGI-script), a really really short
one. It doesn't give any information back to asterisk, because i didn't
need that information. But this should be _really_ easy to implement
into a real AGI-script.
You will need python and the simpleosc lib from
http://www.ixi-software.net/content/body_backyard_osc.html



extensions.conf:

[default]
exten => 5599,1,Set(TIMEOUT(response)=300)
exten => 5599,2,Set(TIMEOUT(digit)=300)
exten => 5599,3,Answer()
exten => 5599,4,Read(digit,beep,1)
exten => 5599,5,System(/path/to/osc.py 127.0.0.1 1 ${digit}) ; HOST,
PORT, VALUE
exten => 5599,6,Goto(4)
exten => 5599,7,Hangup



The digit is sent to the /sip message.

In Pd you would use something like:
[dumpOSC 1]
 |
[OSCroute /sip]
 |
[print]
#!/usr/bin/python
# 
#This is public domain


import sys, osc

osc.init()

osc.sendMsg("/sip",[int(sys.argv[3])],sys.argv[1],int(sys.argv[2]))
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-02 Thread Russell Bryant
Greetings,

I've been an Asterisk developer for a few years.  I now lead the software team
in charge of Asterisk at Digium, Inc.  I just learned about Pd a few weeks ago
when I met Hans.  I think Pd is very cool, and I'm really excited to see what we
can come up with to combine Pd and Asterisk.

I have been diving in head first to learn about how Pd works, and what the
possibilities could be.  However, I would like to discuss what the goals of "Pd
+ Asterisk" are.

Coming up with the most powerful integration between the two will take two 
parts:

1) What are the potential applications that we can dream up?  I can provide
access to any aspect of a phone call.  That includes the media streams and
various bits of meta-deta, such as the digits that have been pressed.  What can
those of you that have the real knowledge about Pd think of that would be cool
to do with a phone call?

2) Given the applications above, what are the primitives required to accomplish
them?  Both Asterisk and Pd are toolkits.  It's all about breaking things down
to a general solution that is the most flexible to accomplish current and future
applications.


Hans-Christoph Steiner wrote:
> Fun stuff, three of these.  I had been vaguely thing of making some  
> kind of AGI object for Pd.  It would be nice to easily tap into  
> Asterisk from Pd.

Just a quick bit of background.  AGI is an interface that exists in Asterisk to
use the programming language of your choice to control phone calls.  It uses
stdin/stdout or a TCP socket to send/receive text commands and responses.

I'm not sure that this interface makes sense for Pd.  It's tempting to see if we
can fit into something that exists, but my gut is telling me that Pd is a
different animal that should be approached in a different way.

> A softphone that uses Jack would be handy too... on that note, I  
> wonder how hard it would be to make a softphone in Pd :)

A softphone in Pd?  Ha ... I suppose it's possible.  We can come back to this
one.  ;)

For now, I think I'd rather start with hooking Pd into Asterisk so that it
becomes a part of a larger system.  Asterisk can handle the phone calls part,
and Pd gets to do what it is good at already.

I've been looking at [streamin~]/[streamout~] a bit this weekend.  I am thinking
of using that as an initial proof of concept to get audio from a phone call in
and out of Pd.  But, please yell at me if there is something else I should start
with.  In the end, I want to provide a couple of different things in regards to
phone audio.

1) I want to make it possible to develop interactive phone applications using
Pd.  Basically, I want the audio from a call to go into Pd, and to get audio
back out that is sent back in the caller.

2) I also want to be able to hook Pd into the audio path of a call.  So, the
audio coming from one side of the call is processed through a Pd patch before
sent out to the other side of the call.

Finally, aside from the audio of a call, I want to be able to pass events into
the Pd patch, as well.  The first part of this would be any digits pressed on
the phone, but there could be other things.  Some telephony technologies allow
text messages to be sent within a call, for example.


Anyway, those are just some initial thoughts.  Let your mind wander, though.
Telephones are everywhere, especially now that so many people carry cell phones.
 What could that mean for people using Pd in performances?  interactive art
projects?  If you have some ideas, what can I do to make it possible?  Just let
me know.  :)

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-02 Thread drh270
Russell,

This sounds great!

I'm not sure that this interface makes sense for Pd.  It's tempting to see if we
can fit into something that exists, but my gut is telling me that Pd is a
different animal that should be approached in a different way.
Chris, in an earlier post mentioned using OSC, he was using a Python
script, so communicating via OSC may be a starting point.


1) I want to make it possible to develop interactive phone applications using
Pd.  Basically, I want the audio from a call to go into Pd, and to get audio
back out that is sent back in the caller.

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?


2) I also want to be able to hook Pd into the audio path of a call.  So, the
audio coming from one side of the call is processed through a Pd patch before
sent out to the other side of the call.

Is it possible to run Pd and Asterisk on the same machine? Like Icecast?



Best,
Ryan Holsopple



On 12/2/07, Russell Bryant <[EMAIL PROTECTED]> wrote:
> Greetings,
>
> I've been an Asterisk developer for a few years.  I now lead the software team
> in charge of Asterisk at Digium, Inc.  I just learned about Pd a few weeks ago
> when I met Hans.  I think Pd is very cool, and I'm really excited to see what 
> we
> can come up with to combine Pd and Asterisk.
>
> I have been diving in head first to learn about how Pd works, and what the
> possibilities could be.  However, I would like to discuss what the goals of 
> "Pd
> + Asterisk" are.
>
> Coming up with the most powerful integration between the two will take two 
> parts:
>
> 1) What are the potential applications that we can dream up?  I can provide
> access to any aspect of a phone call.  That includes the media streams and
> various bits of meta-deta, such as the digits that have been pressed.  What 
> can
> those of you that have the real knowledge about Pd think of that would be cool
> to do with a phone call?
>
> 2) Given the applications above, what are the primitives required to 
> accomplish
> them?  Both Asterisk and Pd are toolkits.  It's all about breaking things down
> to a general solution that is the most flexible to accomplish current and 
> future
> applications.
>
>
> Hans-Christoph Steiner wrote:
> > Fun stuff, three of these.  I had been vaguely thing of making some
> > kind of AGI object for Pd.  It would be nice to easily tap into
> > Asterisk from Pd.
>
> Just a quick bit of background.  AGI is an interface that exists in Asterisk 
> to
> use the programming language of your choice to control phone calls.  It uses
> stdin/stdout or a TCP socket to send/receive text commands and responses.
>
> I'm not sure that this interface makes sense for Pd.  It's tempting to see if 
> we
> can fit into something that exists, but my gut is telling me that Pd is a
> different animal that should be approached in a different way.
>
> > A softphone that uses Jack would be handy too... on that note, I
> > wonder how hard it would be to make a softphone in Pd :)
>
> A softphone in Pd?  Ha ... I suppose it's possible.  We can come back to this
> one.  ;)
>
> For now, I think I'd rather start with hooking Pd into Asterisk so that it
> becomes a part of a larger system.  Asterisk can handle the phone calls part,
> and Pd gets to do what it is good at already.
>
> I've been looking at [streamin~]/[streamout~] a bit this weekend.  I am 
> thinking
> of using that as an initial proof of concept to get audio from a phone call in
> and out of Pd.  But, please yell at me if there is something else I should 
> start
> with.  In the end, I want to provide a couple of different things in regards 
> to
> phone audio.
>
> 1) I want to make it possible to develop interactive phone applications using
> Pd.  Basically, I want the audio from a call to go into Pd, and to get audio
> back out that is sent back in the caller.
>
> 2) I also want to be able to hook Pd into the audio path of a call.  So, the
> audio coming from one side of the call is processed through a Pd patch before
> sent out to the other side of the call.
>
> Finally, aside from the audio of a call, I want to be able to pass events into
> the Pd patch, as well.  The first part of this would be any digits pressed on
> the phone, but there could be other things.  Some telephony technologies allow
> text messages to be sent within a call, for example.
>
>
> Anyway, those are just some initial thoughts.  Let your mind wander, though.
> Telephones are everywhere, especially now that so many people carry cell 
> phones.
>  What could that mean for people using Pd in performances?  interactive art
> projects?  If you have some ideas, what can I do to make it possible?  Just 
> let
> me know.  :)
>
> --
> Russell Bryant
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/list

Re: [PD] Pd + asterisk?

2007-12-02 Thread Russell Bryant
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.  :)

> Is it possible to run Pd and Asterisk on the same machine? Like Icecast?

Sure.  There should be no problems with that.

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-02 Thread PSPunch

Russell,


> SIP is definitely much more complicated than IAX2, and you won't see me 
> writing
> a SIP interface.

Thank you, Thank you, Thank you!
I can then kiss good bye to NAT hell


--
David Shimamoto


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-02 Thread Russell Bryant
Chris wrote:
> extensions.conf:
> 
> [default]
> exten => 5599,1,Set(TIMEOUT(response)=300)
> exten => 5599,2,Set(TIMEOUT(digit)=300)
> exten => 5599,3,Answer()
> exten => 5599,4,Read(digit,beep,1)
> exten => 5599,5,System(/path/to/osc.py 127.0.0.1 1 ${digit}) ; HOST,
> PORT, VALUE
> exten => 5599,6,Goto(4)
> exten => 5599,7,Hangup
> 
> 
> 
> The digit is sent to the /sip message.
> 
> In Pd you would use something like:
> [dumpOSC 1]
>  |
> [OSCroute /sip]
>  |
> [print]

Cool, thanks for sharing!

As I mentioned in another response to this thread, I'm going to try to make an
interface like this that is native to Asterisk.  Then, I'd like to extend it
further so that audio (and video) processing of the call could be in done in Pd,
as well.

If you have any ideas about what you'd like to see, please let me know.

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-02 Thread Hans-Christoph Steiner

I am also quite excited about this, I think it can provide some  
really interesting new ways of interacting with phones, possibilities  
for composition, or whatever else we can dream up.  I am really into  
the idea of live audio processing of phone calls then feeding back  
synthesized audio into the phone call.

On Dec 2, 2007, at 3:45 PM, Russell Bryant wrote:

> I've been looking at [streamin~]/[streamout~] a bit this weekend.   
> I am thinking
> of using that as an initial proof of concept to get audio from a  
> phone call in
> and out of Pd.  But, please yell at me if there is something else I  
> should start
> with.  In the end, I want to provide a couple of different things  
> in regards to
> phone audio.


I just had a thought about this, perhaps it would make more sense to  
make Asterisk use Jack (http://jackaudio.org/) as the interface for  
transferring audio to Pd.  It's a common standard, it runs on GNU/ 
Linux, Mac OS X, is alpha on Windows.  It would allow Asterisk to  
interface with a wide range of audio apps that support Jack.  AFAIK,  
you can dynamically allocate and deallocate jack "channels".  There  
is already some support for managing the jack channels in Pd, and I  
don't think it would be too hard to support.

So the idea would be that for each call that is sent to Pd, it would  
open up a jack channel and notify Pd about it.  The question there is  
whether Jack can support hundreds or thousands of channels.

.hc


 


There is no way to peace, peace is the way.   -A.J. Muste



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-02 Thread Hans-Christoph Steiner

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



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread cdr
> 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.

Nova [0] and Ingen [1] figured this out. along with countless other DAWs and 
media engines

incidentally theyre all written in C++ rather than C, properly-threaded, use 
high quality 3rd party libraries throughout, and written by hackers rather than 
mathemusicians.

Ingen also has a notion of polyphony at multiple levels, such as plugin or 
subpatch, transparent to any machinations in the subpatch or plugin to fake 
native polyphony via preallocation and routing schemes.


or if asterisk can talk to jack, sprouting a new PD per-call seems the most 
plausible, in terms of using PD rather than libingen/nova (ie, not fighting for 
polyphony or dynamically sprouting jack ports from an existing instance)

[0] https://tim.klingt.org/nova/
[1] http://drobilla.net/software/ingen

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread Tim Blechmann
On Mon, 2007-12-03 at 01:16 -0500, Hans-Christoph Steiner wrote:
> 
> 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.  

it is not really a question of complexity, the problem itself is
straight-forward to solve ... 
but it requires a thread-safe software architecture ...

> 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. 

both approaches work very well for me :)

best, tim

--
[EMAIL PROTECTED]
http://tim.klingt.org

Nothing exists until or unless it is observed. An artist is making
something exist by observing it. And his hope for other people is that
they will also make it exist by observing it. I call it 'creative
observation.' Creative viewing.
  William S. Burroughs


signature.asc
Description: This is a digitally signed message part
___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread Hans-Christoph Steiner

On Dec 3, 2007, at 3:06 AM, cdr wrote:

>> 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.
>
> Nova [0] and Ingen [1] figured this out. along with countless other  
> DAWs and media engines
>
> incidentally theyre all written in C++ rather than C, properly- 
> threaded, use high quality 3rd party libraries throughout, and  
> written by hackers rather than mathemusicians.

For all it's faults, Pd has the advantage of having 10+ years of use,  
testing, library development, etc.  DAWs are a very different story  
since they are not programming languages.

> Ingen also has a notion of polyphony at multiple levels, such as  
> plugin or subpatch, transparent to any machinations in the subpatch  
> or plugin to fake native polyphony via preallocation and routing  
> schemes.
>
>
> or if asterisk can talk to jack, sprouting a new PD per-call seems  
> the most plausible, in terms of using PD rather than libingen/nova  
> (ie, not fighting for polyphony or dynamically sprouting jack ports  
> from an existing instance)

This does sound like a possibility from the point of view of handling  
a unknown number of instances.  I think that pd -nogui should be  
light enough to support this.  The downside is that it would make  
difficult to have interactions between calls (if each call was  
running a patch in its own Pd process).  I suppose that Asterisk  
could provide a means for communication between these Pd processes.

Now that I think about it, it would also work to have each call open  
an instance of a patch within one constantly running Pd process.   
Then when the call is dropped, that patch instance would close.  For  
this to work well, we'd need to add the ability for a patch to close  
itself programmatically (currently, when a patch sends menuclose to  
itself, Pd crashes :( )

.hc

>
> [0] https://tim.klingt.org/nova/
> [1] http://drobilla.net/software/ingen
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
> listinfo/pd-list



 


Using ReBirth is like trying to play an 808 with a long stick.- 
David Zicarelli



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread Chris
Russell Bryant wrote:
> As I mentioned in another response to this thread, I'm going to try to make an
> interface like this that is native to Asterisk.  Then, I'd like to extend it
> further so that audio (and video) processing of the call could be in done in 
> Pd,
> as well.
>
> If you have any ideas about what you'd like to see, please let me know.
I think for the beginning it would be nice to have all the AGI-features
available in PD, like dtmf-recognition or letting asterisk say numbers
or letters.

But having audio in- and output would be hot. But it's difficult, as
other people in this list said, there are many possibilities. I would
prefer the exclusive solution, the person who is first calling gets
connected to Pd, and for all other callers the pd-interface would report
busy.

You can still have some group-action, you could connect the pd-interface
to a meetme-application. Or you can handle individual calls and have
them connected to individual Pd-instances or to different places in one
patch.


Maybe having something like a chan_jack.so for the audio would be handy,
where you could do a Dial(jack/1) to connect a caller to a
asterisk-jack-device. You would have a config like
   exten => _.,1,Answer
   exten => _.,2,Dial(jack/1)
   exten => _.,3,Dial(jack/2)
   exten => _.,4,Dial(jack/3)
   exten => _.,5,Busy
for a maximum of three callers who get assigned to different
jack-channels for use in Pd or any other application. (This would be a
great feature for Podcasters to record calls!) And it would also provide
some load-balancing-functions, you could just do a
Dial(IAX/other.asterisk.server) and have another server with pd handle
another 10 callers.

But it's not possible to send meta-data like keypresses over jack.


Video processing sounds great, maybe asterisk could connect
video-callers to a v4l-device, so you could use this in gem.


Well, some weird thoughts. I have no idea how hard this all would be to
code, but anyway I'd like to beta-test when there's something ready.



---
Chris

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread Russell Bryant
Hans-Christoph Steiner wrote:
> I just had a thought about this, perhaps it would make more sense to
> make Asterisk use Jack (http://jackaudio.org/) as the interface for
> transferring audio to Pd.  It's a common standard, it runs on GNU/Linux,
> Mac OS X, is alpha on Windows.  It would allow Asterisk to interface
> with a wide range of audio apps that support Jack.  AFAIK, you can
> dynamically allocate and deallocate jack "channels".  There is already
> some support for managing the jack channels in Pd, and I don't think it
> would be too hard to support.
> 
> So the idea would be that for each call that is sent to Pd, it would
> open up a jack channel and notify Pd about it.  The question there is
> whether Jack can support hundreds or thousands of channels.

Yeah, I really do like the Jack idea.  I think this is going to be the way to
go.  Now that I'm looking at it, I'm really quite surprised that nobody has
already written a Jack interface in Asterisk.  So, I guess this is where I'll 
start.

Thanks for the pointers.  :)

--
Russell Bryant


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread Russell Bryant
Chris wrote:
> I think for the beginning it would be nice to have all the AGI-features
> available in PD, like dtmf-recognition or letting asterisk say numbers
> or letters.

Agreed.  I figure that I will probably end up with two interfaces as a part of
this project.  I need one interface to transfer media, and some other interface
for things like sending key press events into Pd, or as you have suggested,
having a way for Pd to send requests back into Asterisk for some action to be 
taken.

> But having audio in- and output would be hot. But it's difficult, as
> other people in this list said, there are many possibilities. I would
> prefer the exclusive solution, the person who is first calling gets
> connected to Pd, and for all other callers the pd-interface would report
> busy.

I agree, it would be hot.  :)

However, I won't be happy with a solution that only lets you hook in one caller.
 If it's a bit more difficult, oh well!  We'll get it working ...

> You can still have some group-action, you could connect the pd-interface
> to a meetme-application. Or you can handle individual calls and have
> them connected to individual Pd-instances or to different places in one
> patch.
> 
> 
> Maybe having something like a chan_jack.so for the audio would be handy,
> where you could do a Dial(jack/1) to connect a caller to a
> asterisk-jack-device. You would have a config like
>exten => _.,1,Answer
>exten => _.,2,Dial(jack/1)
>exten => _.,3,Dial(jack/2)
>exten => _.,4,Dial(jack/3)
>exten => _.,5,Busy
> for a maximum of three callers who get assigned to different
> jack-channels for use in Pd or any other application. (This would be a
> great feature for Podcasters to record calls!) And it would also provide
> some load-balancing-functions, you could just do a
> Dial(IAX/other.asterisk.server) and have another server with pd handle
> another 10 callers.
> 
> But it's not possible to send meta-data like keypresses over jack.

Yes, I do like the idea of using Jack.  However, (warning, getting into Asterisk
 details), I don't think I would want to implement it as a channel driver as you
suggested in the configuration.  An Asterisk channel interface has to implement
more than just an audio interface, it has to have its own implementation of call
signaling.  And, as you stated, it's not possible to pass stuff like key
presses, or whatever other information that would be needed for call signaling,
over jack directly.

I've been thinking about it a bit today, so tell me what you think of these
ideas.  I'm thinking of making two interfaces that use Jack.  The first, and
more simple one, is just an application.

   ;
   ; Connect to the jack channel indicated by the 4 digit
   ; number that was dialed.  The audio from the caller is sent out
   ; through the Jack interface.  The audio that comes back is what gets
   ; sent back to the caller.
   ;
   exten => _,1,Answer
   exten => _,2,Jack(${EXTEN})

The second interface is a bit more tricky, but is where things get quite cool,
in my opinion.

   exten => _,1,Answer
   ;
   ; Enable the Jack Audio-hook.  This would send the audio from the
   ; caller through Jack.  What comes back from Jack replaces the original
   ; stream from the caller.  This would allow for audio manipulation or
   ; analysis of a call that is off doing other things.
   ;
   exten => _,2,Set(JACK_HOOK(${EXTEN})=on)
   ;
   ; Call the victim.  The audio that they hear is the audio that is being
   ; manipulated through the Jack interface that has been turned on.
   ;
   exten => _,3,Dial(${VICTIM})

Alternatively, this third step could be anything.  It could be MeetMe
(conference calling application), or anything else you can do with an Asterisk 
call.

> Video processing sounds great, maybe asterisk could connect
> video-callers to a v4l-device, so you could use this in gem.

Yeah, I'd like to add support for video, as well.  But for me, it's a lower
priority at first than the audio part.  Video just really has never caught on
very well in the telephony world for various reasons ...

> Well, some weird thoughts. I have no idea how hard this all would be to
> code, but anyway I'd like to beta-test when there's something ready.

Everything that we have talked about is reasonable.  I will certainly say
something on this list once I have something usable.

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-03 Thread Russell Bryant
Hans-Christoph Steiner wrote:
> Now that I think about it, it would also work to have each call open  
> an instance of a patch within one constantly running Pd process.   
> Then when the call is dropped, that patch instance would close.  For  
> this to work well, we'd need to add the ability for a patch to close  
> itself programmatically (currently, when a patch sends menuclose to  
> itself, Pd crashes :( )

Yes, that would certainly be the ideal way to do it.  In fact, instead of
messing around with multiple Pd processes, I would much rather just help solve
whatever the problem is that causes this not to work.

Are there any existing bug reports or any previous discussions about the 
problem?

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-04 Thread IOhannes m zmoelnig
Russell Bryant wrote:
> Hans-Christoph Steiner wrote:
>> Now that I think about it, it would also work to have each call open  
>> an instance of a patch within one constantly running Pd process.   

just to make sure: you are not talking about creating a system that 
would do that for me as "the" way to use asterisk with Pd?

i think all it needs is an object that tells me that there is a new 
incoming connection and how to access it (that would basically just be 
an ID which can then be used to get the actual data; nevermind whether 
it is creating a new [streamin~] object, connecting to a new jack-port 
or just thawing a frozen part of the patch.


>> Then when the call is dropped, that patch instance would close.  For  
>> this to work well, we'd need to add the ability for a patch to close  
>> itself programmatically (currently, when a patch sends menuclose to  
>> itself, Pd crashes :( )

just to re-iterate: i think you are planning on the wrong level. what 
you are planning seems to be a full-featured environment that does all 
kind of thinks for you.
if i understood the problem correctly, we are not there yet; what, imho, 
has to be done first is creating an as simple as possible way to access 
the data from Pd. generative patches are most likely way to highlevel 
for this.
once we have this low-level API, somebody could go and create the 
environment you are currently dreaming of.

somebody else, could go and create an other environment, that fits their 
needs better.


> 
> Yes, that would certainly be the ideal way to do it.  In fact, instead of
> messing around with multiple Pd processes, I would much rather just help solve
> whatever the problem is that causes this not to work.

i agree that multiple Pd instances are not the way to go.


as i have said, i would keep it as simple as possible, and as general as 
possible:
my suggestion for asterisk is to use jack for dealing with the audio lines.
2 ways come into my mind:
- open a new jack-port (in asterisk) for each call ; leave the 
application to handle this
(on the Pd side this is simple; one can redefine the audio-api (e.g. 
jack-ports used) at runtime; one would then need an external (most 
likely already written by kjetil) to do the jack-routing)

- start with a fixed number of jack-ports (maximum number of 
simultaneous calls) in asterisk; pre-connect all jack-ports from 
asterisk to Pd and switch~ on/off patches for each line as they are 
opened/closed. i guess for many projects this super-simple approach will 
be totally sufficient.


both of these ideas seem to be simple to implement and have the biggest 
overall advantage, not just for Pd, but _also_ for Pd, as they are far 
more simple to use than anything that does things automatically.


mfga.sdr
IOhannes


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-04 Thread Hans-Christoph Steiner



On Dec 4, 2007, at 3:54 AM, IOhannes m zmoelnig wrote:

> Russell Bryant wrote:
>> Hans-Christoph Steiner wrote:
>>> Now that I think about it, it would also work to have each call open
>>> an instance of a patch within one constantly running Pd process.
>
> just to make sure: you are not talking about creating a system that
> would do that for me as "the" way to use asterisk with Pd?
>
> i think all it needs is an object that tells me that there is a new
> incoming connection and how to access it (that would basically just be
> an ID which can then be used to get the actual data; nevermind whether
> it is creating a new [streamin~] object, connecting to a new jack-port
> or just thawing a frozen part of the patch.
>
>
>>> Then when the call is dropped, that patch instance would close.  For
>>> this to work well, we'd need to add the ability for a patch to close
>>> itself programmatically (currently, when a patch sends menuclose to
>>> itself, Pd crashes :( )
>
> just to re-iterate: i think you are planning on the wrong level. what
> you are planning seems to be a full-featured environment that does all
> kind of thinks for you.
> if i understood the problem correctly, we are not there yet; what,  
> imho,
> has to be done first is creating an as simple as possible way to  
> access
> the data from Pd. generative patches are most likely way to highlevel
> for this.
> once we have this low-level API, somebody could go and create the
> environment you are currently dreaming of.
>
> somebody else, could go and create an other environment, that fits  
> their
> needs better.
>
>
>>
>> Yes, that would certainly be the ideal way to do it.  In fact,  
>> instead of
>> messing around with multiple Pd processes, I would much rather  
>> just help solve
>> whatever the problem is that causes this not to work.
>
> i agree that multiple Pd instances are not the way to go.
>
>
> as i have said, i would keep it as simple as possible, and as  
> general as
> possible:
> my suggestion for asterisk is to use jack for dealing with the  
> audio lines.
> 2 ways come into my mind:
> - open a new jack-port (in asterisk) for each call ; leave the
> application to handle this
> (on the Pd side this is simple; one can redefine the audio-api (e.g.
> jack-ports used) at runtime; one would then need an external (most
> likely already written by kjetil) to do the jack-routing)
>
> - start with a fixed number of jack-ports (maximum number of
> simultaneous calls) in asterisk; pre-connect all jack-ports from
> asterisk to Pd and switch~ on/off patches for each line as they are
> opened/closed. i guess for many projects this super-simple approach  
> will
> be totally sufficient.
>
>
> both of these ideas seem to be simple to implement and have the  
> biggest
> overall advantage, not just for Pd, but _also_ for Pd, as they are far
> more simple to use than anything that does things automatically.

Just to be clear, I agree that the API shouldn't be stuck to a very  
specific technique of working with instances of processes in Pd.  I  
just wanted to outline the possibilities and how they would work with  
asterisk.

The current method of allocating the instances beforehand, then using  
[switch] to turn them on and off does work.  But for this thing to  
scale to the kind of volumes that an asterisk box can handle, I think  
the resources will need to be allocated dynamically.  This is how  
servers like apache handle it.

In order to make Pd do that, there is work that needs to be done,  
specifically the stuff I mentioned about the DSP chain, and then  
ability for a patch to close itself.

.hc


 


Man has survived hitherto because he was too ignorant to know how to  
realize his wishes.  Now that he can realize them, he must either  
change them, or perish.-William Carlos Williams



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-04 Thread Roman Haefeli
On Mon, 2007-12-03 at 22:39 -0600, Russell Bryant wrote:
> Hans-Christoph Steiner wrote:
> > I just had a thought about this, perhaps it would make more sense to
> > make Asterisk use Jack (http://jackaudio.org/) as the interface for
> > transferring audio to Pd.  It's a common standard, it runs on GNU/Linux,
> > Mac OS X, is alpha on Windows.  It would allow Asterisk to interface
> > with a wide range of audio apps that support Jack.  AFAIK, you can
> > dynamically allocate and deallocate jack "channels".  There is already
> > some support for managing the jack channels in Pd, and I don't think it
> > would be too hard to support.
> > 
> > So the idea would be that for each call that is sent to Pd, it would
> > open up a jack channel and notify Pd about it.  The question there is
> > whether Jack can support hundreds or thousands of channels.
> 
> Yeah, I really do like the Jack idea.  I think this is going to be the way to
> go.  Now that I'm looking at it, I'm really quite surprised that nobody has
> already written a Jack interface in Asterisk.  So, I guess this is where I'll 
> start.
> 
> Thanks for the pointers.  :)



a colleague from school once created a setup that involved asterisk and
pd (i don't know, why he's actually not responding to this thread).
he ran asterisk over oss2jack in order to use jack to establish an audio
connection between them. if asterisk would directly have access to jack,
that would be awsome of course.

roman



___ 
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-05 Thread Hans-Christoph Steiner

So Shawn Van Every and I just did a brainstorm of ideas for using Pd  
and Asterisk together.  There is a lot of potential there, especially  
if a couple key points are addressed.  Shawn can speak to the  
technical details better than me, he uses it a lot more.  I'll bet  
there are others who have responded to this thread who know it better  
than me also.

I think the key technical detail that came out of the discussion was  
that the call bridging should happen in Pd.  This would allow a Pd  
patch to send sound to individuals participating in a call, for example.

So here is a quick rundown of some of the ideas we came up with:

- add ambient sound to a call.  You could call a service, select the  
background ambiance you want (Times Square, Yosemite, Niagara Falls,  
the beach, tropical rainforest, etc), then the call would be placed  
thru to someone, and it would sound like you are in a different  
place.  The ambient sound sources could even be live streams.

- subtract ambient sound from a call.  Using standard noise filtering  
techniques, from simple to elaborate, background sound could be  
eliminated from the call

- you could analyze the sound of a call and use this to control a  
large video screen like an instrument.  The analysis of that call  
would then be used to generate audio feedback to the caller to  
provide for a richer musical experience.

- you could change the voice quality of a caller.  This could be used  
in a MMP game, for example, where each character would choose how  
their voice would sound like.  Then an elf would sound like a elf, a  
wizard could sound old, etc. etc.

- as a form of feedback, you could add reverb to a sound based on how  
far away that caller way, or perhaps make the sound more muted if the  
person is really close by.

- in a conference call, you could "whisper" comments to individual  
people in the conference.

- do a voice stress analysis, and then tell the caller whether the  
other caller is stressed, (i.e. lying or whatever)

.hc


On Dec 2, 2007, at 7:03 PM, drh270 wrote:

> Russell,
>
> This sounds great!
>
> I'm not sure that this interface makes sense for Pd.  It's tempting  
> to see if we
> can fit into something that exists, but my gut is telling me that  
> Pd is a
> different animal that should be approached in a different way.
> Chris, in an earlier post mentioned using OSC, he was using a Python
> script, so communicating via OSC may be a starting point.
>
>
> 1) I want to make it possible to develop interactive phone  
> applications using
> Pd.  Basically, I want the audio from a call to go into Pd, and to  
> get audio
> back out that is sent back in the caller.
>
> 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?
>
>
> 2) I also want to be able to hook Pd into the audio path of a  
> call.  So, the
> audio coming from one side of the call is processed through a Pd  
> patch before
> sent out to the other side of the call.
>
> Is it possible to run Pd and Asterisk on the same machine? Like  
> Icecast?
>
>
>
> Best,
> Ryan Holsopple
>
>
>
> On 12/2/07, Russell Bryant <[EMAIL PROTECTED]> wrote:
>> Greetings,
>>
>> I've been an Asterisk developer for a few years.  I now lead the  
>> software team
>> in charge of Asterisk at Digium, Inc.  I just learned about Pd a  
>> few weeks ago
>> when I met Hans.  I think Pd is very cool, and I'm really excited  
>> to see what we
>> can come up with to combine Pd and Asterisk.
>>
>> I have been diving in head first to learn about how Pd works, and  
>> what the
>> possibilities could be.  However, I would like to discuss what the  
>> goals of "Pd
>> + Asterisk" are.
>>
>> Coming up with the most powerful integration between the two will  
>> take two parts:
>>
>> 1) What are the potential applications that we can dream up?  I  
>> can provide
>> access to any aspect of a phone call.  That includes the media  
>> streams and
>> various bits of meta-deta, such as the digits that have been  
>> pressed.  What can
>> those of you that have the real knowledge about Pd think of that  
>> would be cool
>> to do with a phone call?
>>
>> 2) Given the applications above, what are the primitives required  
>> to accomplish
>> them?  Both Asterisk and Pd are toolkits.  It's all about breaking  
>> things down
>> to a general solution that is the most flexible to accomplish  
>> current and future
>> applications.
>>
>>
>> Hans-Christoph Steiner wrote:
>>> Fun stuff, three of these.  I had been vaguely thing of making some
>>> kind of AGI object for Pd.  It would be nice to easily tap into
>>> Asterisk from Pd.
>>
>> Just a quick bit of background.  AGI is an interface that exists  
>> in Asterisk to
>> use the programming language of your choice to control phone  
>> calls.  It uses
>> stdin/stdout or a TCP socket to send/receive text commands and  
>> responses.
>>

Re: [PD] Pd + asterisk?

2007-12-05 Thread Hans-Christoph Steiner

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.

OSC sounds like a good interface for the messaging since it's not too  
complicated and is pretty well supported.  One thing that might be  
nice to have in the Asterisk OSC is the time-tagged messages.  Most  
OSC implementations ignore that part of it, unfortunately, but I  
think it could be useful to have when syncing different parts, like  
if one program was processing audio and another handling video.

.hc

>
>> 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.  :)
>
>> Is it possible to run Pd and Asterisk on the same machine? Like  
>> Icecast?
>
> Sure.  There should be no problems with that.
>
> --
> Russell Bryant
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
> listinfo/pd-list


 


Access to computers should be unlimited and total.  - the hacker ethic



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-16 Thread Russell Bryant
Greetings,

I have been working on Jack support in Asterisk this weekend and I have it
working, as far as I can tell.  I have a Jack Asterisk dialplan application
which when executed, creates two jack ports; one port is input and the other is
output.  These ports let you access the audio that comes from the caller, as
well as control what audio gets sent back to the caller.  Once I have this
working well, I will extend the Jack interface to allow you to do fancier
things.  Right now, the jack interface is the endpoint of the phone call, but it
would be even more interesting to be able to hook into the audio path of a phone
call to another destination.

Anyway, the way that I have tested this is simply by using an application called
"Patchage".  It is a graphical jack port manager.  When I make a call, I see my
two jack ports appear.  I can connect them together and everything I say gets
sent back to me as expected.

My next step is that I want to figure out how to hook up my ports to a Pd patch,
but I haven't quite figured out how to use Jack in Pd yet.  I'm going to keep
working on it, but I figured I would post what I have in case anyone else was
curious and interested in trying it out.

Here is what I'm doing to test what I have ...


1) Install my branch of Asterisk that contains app_jack.

$ svn co http://svn.digium.com/svn/asterisk/team/russell/jack asterisk-jack
$ cd asterisk-jack
$ ./configure && make
$ sudo make install

The jack interface is in apps/app_jack.c in case anyone cares.


2) Make an entry in /etc/asterisk/extensions.conf that looks like

exten => 500,1,Answer()
exten => 500,n,Jack()


3) Make sure jackd is running.  For the sake of efficiency, specify 8 kHz,
because for most codecs used for phone calls, that's all you get.  Also, specify
160 frames per period.  For 8 kHz audio, this comes out to 20 ms periods, which
is generally the packet size used for Voice over IP.

$ sudo jackd -d dummy -r 8000 -p 160


4) Make a call to the extension created in Asterisk in step 2.  You should see
the two new jack ports become available.  In theory, they are available for
connection to any application that can use Jack.  The only thing I have done so
far is to use the "patchage" application to connect the ports directly together
to verify that the audio is flowing correctly.


Now, to figure out how to hook up arbitrary jack ports to Pd ... if anyone has
any pointers, it would be much appreciated.  I'm still very new to Pd.  :)

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-16 Thread Hans-Christoph Steiner

This is great news!  I am going to give it a shot as soon as I can,  
hopefully before the end of the year.

As for Jack in Pd, there are a couple of things.  Pd by default uses  
Jack as an audio device, so it should be able to see those ports.   
But I don't think that is very controllable from within Pd.  There  
are some objects that exist but aren't widely used that are for  
connecting Pd and jack channels in a more dynamic manner.  Here are  
the sources:

http://pure-data.cvs.sourceforge.net/pure-data/externals/jackx/
http://pure-data.cvs.sourceforge.net/pure-data/externals/k_jack~/
http://pure-data.cvs.sourceforge.net/pure-data/externals/tb/ 
jack_transport/

And thanks for the bug fixes for Pd.  Pd could use a good security  
audit, especially since it is becoming more and more network aware.

.hc


On Dec 16, 2007, at 8:48 PM, Russell Bryant wrote:

> Greetings,
>
> I have been working on Jack support in Asterisk this weekend and I  
> have it
> working, as far as I can tell.  I have a Jack Asterisk dialplan  
> application
> which when executed, creates two jack ports; one port is input and  
> the other is
> output.  These ports let you access the audio that comes from the  
> caller, as
> well as control what audio gets sent back to the caller.  Once I  
> have this
> working well, I will extend the Jack interface to allow you to do  
> fancier
> things.  Right now, the jack interface is the endpoint of the phone  
> call, but it
> would be even more interesting to be able to hook into the audio  
> path of a phone
> call to another destination.
>
> Anyway, the way that I have tested this is simply by using an  
> application called
> "Patchage".  It is a graphical jack port manager.  When I make a  
> call, I see my
> two jack ports appear.  I can connect them together and everything  
> I say gets
> sent back to me as expected.
>
> My next step is that I want to figure out how to hook up my ports  
> to a Pd patch,
> but I haven't quite figured out how to use Jack in Pd yet.  I'm  
> going to keep
> working on it, but I figured I would post what I have in case  
> anyone else was
> curious and interested in trying it out.
>
> Here is what I'm doing to test what I have ...
>
>
> 1) Install my branch of Asterisk that contains app_jack.
>
> $ svn co http://svn.digium.com/svn/asterisk/team/russell/jack  
> asterisk-jack
> $ cd asterisk-jack
> $ ./configure && make
> $ sudo make install
>
> The jack interface is in apps/app_jack.c in case anyone cares.
>
>
> 2) Make an entry in /etc/asterisk/extensions.conf that looks like
>
> exten => 500,1,Answer()
> exten => 500,n,Jack()
>
>
> 3) Make sure jackd is running.  For the sake of efficiency, specify  
> 8 kHz,
> because for most codecs used for phone calls, that's all you get.   
> Also, specify
> 160 frames per period.  For 8 kHz audio, this comes out to 20 ms  
> periods, which
> is generally the packet size used for Voice over IP.
>
> $ sudo jackd -d dummy -r 8000 -p 160
>
>
> 4) Make a call to the extension created in Asterisk in step 2.  You  
> should see
> the two new jack ports become available.  In theory, they are  
> available for
> connection to any application that can use Jack.  The only thing I  
> have done so
> far is to use the "patchage" application to connect the ports  
> directly together
> to verify that the audio is flowing correctly.
>
>
> Now, to figure out how to hook up arbitrary jack ports to Pd ... if  
> anyone has
> any pointers, it would be much appreciated.  I'm still very new to  
> Pd.  :)
>
> --
> Russell Bryant
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
> listinfo/pd-list



 


"[W]e have invented the technology to eliminate scarcity, but we are  
deliberately throwing it away to benefit those who profit from  
scarcity."-John Gilmore



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-16 Thread Russell Bryant
Hans-Christoph Steiner wrote:
> 
> This is great news!  I am going to give it a shot as soon as I can,
> hopefully before the end of the year.

Sounds good!  Please do not hesitate to contact me if I can help out with
getting it set up.

> As for Jack in Pd, there are a couple of things.  Pd by default uses
> Jack as an audio device, so it should be able to see those ports.  But I
> don't think that is very controllable from within Pd.  There are some
> objects that exist but aren't widely used that are for connecting Pd and
> jack channels in a more dynamic manner.  Here are the sources:
> 
> http://pure-data.cvs.sourceforge.net/pure-data/externals/jackx/
> http://pure-data.cvs.sourceforge.net/pure-data/externals/k_jack~/
> http://pure-data.cvs.sourceforge.net/pure-data/externals/tb/jack_transport/

Thanks for the pointers.  It looks like jackx is pretty close to what I'm
looking for.  I'll try to see if I can get them to work.  If not, hopefully
they'll be a good starting point if I end up just writing my own.

> And thanks for the bug fixes for Pd.  Pd could use a good security
> audit, especially since it is becoming more and more network aware.

You're welcome!  I'm glad that I am able to help out in some way.

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-19 Thread Chris
Hey,

thanks for this, I just tried it, it works (kind of)...

> 1) Install my branch of Asterisk that contains app_jack.
>
> $ svn co http://svn.digium.com/svn/asterisk/team/russell/jack asterisk-jack
> $ cd asterisk-jack
> $ ./configure && make
> $ sudo make install
>
> The jack interface is in apps/app_jack.c in case anyone cares.
>   
There was the first problem, app_jack somehow didn't build without any
errors, configure said jack...h was there, but there was no app_jack.so
build. I had to do a 'make menuconfig' and disable+reenable app_jack.
> 3) Make sure jackd is running.  For the sake of efficiency, specify 8 kHz,
> because for most codecs used for phone calls, that's all you get.  Also, 
> specify
> 160 frames per period.  For 8 kHz audio, this comes out to 20 ms periods, 
> which
> is generally the packet size used for Voice over IP.
>
> $ sudo jackd -d dummy -r 8000 -p 160
>   
I used 128 frames, this sounded a bit better. But I think it would be
much better if app_jack would adapt to the running jack. I sometimes use
jack for connecting to a firewire-soundcard and with 8KHz it's
impossible to have good sound out of your speakers ;)
>
> 4) Make a call to the extension created in Asterisk in step 2.  You should see
> the two new jack ports become available.  In theory, they are available for
> connection to any application that can use Jack.  The only thing I have done 
> so
> far is to use the "patchage" application to connect the ports directly 
> together
> to verify that the audio is flowing correctly.
>   
I tried Pd and had some strange problems (I don't know where they come
from) No problem if you connect adc~ from Asterisk to dac~ on Asterisk,
I hear myself with a rather extreme echo. But I can't hear a simple osc~
on the phone, neither can I hear myself on my PC-speakers when I talk
into the phone.
>
> Now, to figure out how to hook up arbitrary jack ports to Pd ... if anyone has
> any pointers, it would be much appreciated.  I'm still very new to Pd.  :)
>
>   
You could do this in Asterisk with a System(jack_connect ...) ;)
Do you think it would be possible to tell app_jack to connect to
jack-server running as Pid x? Jack sometimes screws up your system when
it runs as root, or other software does, because it has to run as root
too. I configured my Asterisk to run as myself, but that's quite complex.

Anyway, it's cool you coded all this, thanks.


-Chris


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-19 Thread Russell Bryant
Christian Gröger wrote:
> Hey,
> 
> thanks for this, I just tried it, it works (kind of)...

Thank _you_ for trying it out!

>> 1) Install my branch of Asterisk that contains app_jack.
>>
>> $ svn co http://svn.digium.com/svn/asterisk/team/russell/jack asterisk-jack
>> $ cd asterisk-jack
>> $ ./configure && make
>> $ sudo make install
>>
>> The jack interface is in apps/app_jack.c in case anyone cares.
>>   
> There was the first problem, app_jack somehow didn't build without any
> errors, configure said jack...h was there, but there was no app_jack.so
> build. I had to do a 'make menuconfig' and disable+reenable app_jack.

Hm, that's odd.  The build system should automatically include it if jack was
found on the system.  I'll have to play around with it to see if it happens to
me ...

>> 3) Make sure jackd is running.  For the sake of efficiency, specify 8 kHz,
>> because for most codecs used for phone calls, that's all you get.  Also, 
>> specify
>> 160 frames per period.  For 8 kHz audio, this comes out to 20 ms periods, 
>> which
>> is generally the packet size used for Voice over IP.
>>
>> $ sudo jackd -d dummy -r 8000 -p 160
>>   
> I used 128 frames, this sounded a bit better. But I think it would be
> much better if app_jack would adapt to the running jack. I sometimes use
> jack for connecting to a firewire-soundcard and with 8KHz it's
> impossible to have good sound out of your speakers ;)

The short answer is that I have all intentions to make app_jack work
transparently with any period size and sample rate used by jack itself.

Longer response ...

In theory, any period size should work just fine.  I just happened to choose 160
because I was thinking that it would be more efficient, since that was the
period size of packets coming through Asterisk.  However, due to the way audio
is passed between Asterisk and jack, it really shouldn't matter at all.  All of
the raw audio goes through ringbuffers that have no concept of a period.  I will
play around with different period sizes to see if I can cause a problem to 
occur.

Also, I have all intentions to support more than 8 kHz mode for jack.  :)  The
trick is, with 8 kHz, app_jack doesn't have to resample anything.  With any
other sample rate, it does.  I have code that attempts to handle resampling the
audio in both directions using libresample.  However, it currently makes the
audio sound absolutely terrible.  I'll get it fixed, though ...

>> 4) Make a call to the extension created in Asterisk in step 2.  You should 
>> see
>> the two new jack ports become available.  In theory, they are available for
>> connection to any application that can use Jack.  The only thing I have done 
>> so
>> far is to use the "patchage" application to connect the ports directly 
>> together
>> to verify that the audio is flowing correctly.
>>   
> I tried Pd and had some strange problems (I don't know where they come
> from) No problem if you connect adc~ from Asterisk to dac~ on Asterisk,
> I hear myself with a rather extreme echo. But I can't hear a simple osc~
> on the phone, neither can I hear myself on my PC-speakers when I talk
> into the phone.

Would you mind sharing the Pd patch that you were using to test this out?

The extreme echo is a good sign, I think.  I assume you mean you just heard your
own voice coming back to you, with some delay.  Anything beyond that is probably
acoustic echo with whatever phone you're using.  :)

The reason that connecting Asterisk to itself works but not with anything else
could have something to do with the way I did sample value normalization in
Asterisk.  Asterisk uses a 16 bit integer representation per sample.  However, I
had to convert it to float for jack.

I wasn't sure of the right way to do it, so I simply scaled the values based on
the maximum values of the type ...

(f_buf is a buffer of floats, s_buf is a buffer of int16_t's)

for (i = 0; i < f->samples; i++)
 f_buf[i] = s_buf[i] * (FLT_MAX / SHRT_MAX);

>> Now, to figure out how to hook up arbitrary jack ports to Pd ... if anyone 
>> has
>> any pointers, it would be much appreciated.  I'm still very new to Pd.  :)
>>
>>   
> You could do this in Asterisk with a System(jack_connect ...) ;)
> Do you think it would be possible to tell app_jack to connect to
> jack-server running as Pid x? Jack sometimes screws up your system when
> it runs as root, or other software does, because it has to run as root
> too. I configured my Asterisk to run as myself, but that's quite complex.

The System() option is certainly amusing.  Hey, if it works, why not.  I think
what I want to do eventually is be able to send a message that you could receive
in a Pd patch that a new pair of jack ports has become available.  But, that's
not as important to me right now as getting the audio flow working properly.

I don't know about adding an argument that says connect to PID X.  However,
there appears to be an option in the jack C API which allows you to specify a
server name to conn

Re: [PD] Pd + asterisk?

2007-12-21 Thread Chris
Russell Bryant wrote:
>
> Longer response ...
>
> In theory, any period size should work just fine.  I just happened to choose 
> 160
> because I was thinking that it would be more efficient, since that was the
> period size of packets coming through Asterisk.  However, due to the way audio
> is passed between Asterisk and jack, it really shouldn't matter at all.  All 
> of
> the raw audio goes through ringbuffers that have no concept of a period.  I 
> will
> play around with different period sizes to see if I can cause a problem to 
> occur.
>   
I heard some klicking noise when I tried with 160 frames
> Also, I have all intentions to support more than 8 kHz mode for jack.  :)  The
> trick is, with 8 kHz, app_jack doesn't have to resample anything.  With any
> other sample rate, it does.  I have code that attempts to handle resampling 
> the
> audio in both directions using libresample.  However, it currently makes the
> audio sound absolutely terrible.  I'll get it fixed, though ...
>   
I tried it first with 48KHz and only got noise
>
> Would you mind sharing the Pd patch that you were using to test this out?
>
> The extreme echo is a good sign, I think.  I assume you mean you just heard 
> your
> own voice coming back to you, with some delay.  Anything beyond that is 
> probably
> acoustic echo with whatever phone you're using.  :)
>
> The reason that connecting Asterisk to itself works but not with anything else
> could have something to do with the way I did sample value normalization in
> Asterisk.  Asterisk uses a 16 bit integer representation per sample.  
> However, I
> had to convert it to float for jack.
>
> I wasn't sure of the right way to do it, so I simply scaled the values based 
> on
> the maximum values of the type ...
>
> (f_buf is a buffer of floats, s_buf is a buffer of int16_t's)
>
> for (i = 0; i < f->samples; i++)
>  f_buf[i] = s_buf[i] * (FLT_MAX / SHRT_MAX);
>   

A really long delay, but that may was because of my setup... (ISDN <->
Asterisk <-> IAX over Wlan <-> Asterisk with Jack) ;)

Pd patch was a really simple [adc~ 1] for audio input from the first
jack-channel, a [osc~ 440] for testing and a [dac~ 1] for audio output
to the first jack-channel

When I connected the osc~ with the dac~ I heard nothing at my phone,
when I connected the adc~ from asterisk to a dac~ patched to alsa I
neither heard a thing from the phone.
> what I want to do eventually is be able to send a message that you could 
> receive
> in a Pd patch that a new pair of jack ports has become available.  But, that's
> not as important to me right now as getting the audio flow working properly.
>
> I don't know about adding an argument that says connect to PID X.  However,
> there appears to be an option in the jack C API which allows you to specify a
> server name to connect to.  That may do what is needed to connect to jackd
> running as a different user.
>   
I don't know if you can patch two jack-channels together in pd, telling
app_jack to connect it's channel to a specific pd-channel would be
really easy, but having Pd handling it would be more flexible. Anyway,
sending something to pd, that there's a new caller definitely is a good
idea for various reasons.

--Chris

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-22 Thread Hans-Christoph Steiner

On Dec 16, 2007, at 5:48 PM, Russell Bryant wrote:

> Greetings,
>
> I have been working on Jack support in Asterisk this weekend and I  
> have it
> working, as far as I can tell.  I have a Jack Asterisk dialplan  
> application
> which when executed, creates two jack ports; one port is input and  
> the other is
> output.  These ports let you access the audio that comes from the  
> caller, as
> well as control what audio gets sent back to the caller.  Once I  
> have this
> working well, I will extend the Jack interface to allow you to do  
> fancier
> things.  Right now, the jack interface is the endpoint of the phone  
> call, but it
> would be even more interesting to be able to hook into the audio  
> path of a phone
> call to another destination.
>
> Anyway, the way that I have tested this is simply by using an  
> application called
> "Patchage".  It is a graphical jack port manager.  When I make a  
> call, I see my
> two jack ports appear.  I can connect them together and everything  
> I say gets
> sent back to me as expected.
>
> My next step is that I want to figure out how to hook up my ports  
> to a Pd patch,
> but I haven't quite figured out how to use Jack in Pd yet.  I'm  
> going to keep
> working on it, but I figured I would post what I have in case  
> anyone else was
> curious and interested in trying it out.
>
> Here is what I'm doing to test what I have ...
>
>
> 1) Install my branch of Asterisk that contains app_jack.
>
> $ svn co http://svn.digium.com/svn/asterisk/team/russell/jack  
> asterisk-jack
> $ cd asterisk-jack
> $ ./configure && make
> $ sudo make install
>
> The jack interface is in apps/app_jack.c in case anyone cares.

When building on Mac OS X/Intel 10.4.11, I got this:

[CC] app_jack.c -> app_jack.o
app_jack.c:42:20: error: values.h: No such file or directory
app_jack.c: In function 'handle_input':
app_jack.c:217: error: 'FLT_MAX' undeclared (first use in this function)
app_jack.c:217: error: (Each undeclared identifier is reported only once
app_jack.c:217: error: for each function it appears in.)
app_jack.c: In function 'queue_voice_frame':
app_jack.c:407: error: 'FLT_MAX' undeclared (first use in this function)
make[1]: *** [app_jack.o] Error 1
make: *** [apps] Error 2


This made it build OK:

Index: apps/app_jack.c
===
--- apps/app_jack.c (revision 94662)
+++ apps/app_jack.c (working copy)
@@ -39,7 +39,11 @@

  ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

+#ifdef __APPLE__
+#include 
+#else
  #include 
+#endif

  #include 
  #include 


Now it's time to make it run!

.hc



>
>
> 2) Make an entry in /etc/asterisk/extensions.conf that looks like
>
> exten => 500,1,Answer()
> exten => 500,n,Jack()
>
>
> 3) Make sure jackd is running.  For the sake of efficiency, specify  
> 8 kHz,
> because for most codecs used for phone calls, that's all you get.   
> Also, specify
> 160 frames per period.  For 8 kHz audio, this comes out to 20 ms  
> periods, which
> is generally the packet size used for Voice over IP.
>
> $ sudo jackd -d dummy -r 8000 -p 160
>
>
> 4) Make a call to the extension created in Asterisk in step 2.  You  
> should see
> the two new jack ports become available.  In theory, they are  
> available for
> connection to any application that can use Jack.  The only thing I  
> have done so
> far is to use the "patchage" application to connect the ports  
> directly together
> to verify that the audio is flowing correctly.
>
>
> Now, to figure out how to hook up arbitrary jack ports to Pd ... if  
> anyone has
> any pointers, it would be much appreciated.  I'm still very new to  
> Pd.  :)
>
> --
> Russell Bryant
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
> listinfo/pd-list




 


All mankind is of one author, and is one volume; when one man dies,  
one chapter is not torn out of the book, but translated into a better  
language; and every chapter must be so translated -John Donne



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-22 Thread Hans-Christoph Steiner

On Dec 22, 2007, at 6:41 PM, Hans-Christoph Steiner wrote:

>
> On Dec 16, 2007, at 5:48 PM, Russell Bryant wrote:
>
>> Greetings,
>>
>> I have been working on Jack support in Asterisk this weekend and I  
>> have it
>> working, as far as I can tell.  I have a Jack Asterisk dialplan  
>> application
>> which when executed, creates two jack ports; one port is input and  
>> the other is
>> output.  These ports let you access the audio that comes from the  
>> caller, as
>> well as control what audio gets sent back to the caller.  Once I  
>> have this
>> working well, I will extend the Jack interface to allow you to do  
>> fancier
>> things.  Right now, the jack interface is the endpoint of the  
>> phone call, but it
>> would be even more interesting to be able to hook into the audio  
>> path of a phone
>> call to another destination.
>>
>> Anyway, the way that I have tested this is simply by using an  
>> application called
>> "Patchage".  It is a graphical jack port manager.  When I make a  
>> call, I see my
>> two jack ports appear.  I can connect them together and everything  
>> I say gets
>> sent back to me as expected.
>>
>> My next step is that I want to figure out how to hook up my ports  
>> to a Pd patch,
>> but I haven't quite figured out how to use Jack in Pd yet.  I'm  
>> going to keep
>> working on it, but I figured I would post what I have in case  
>> anyone else was
>> curious and interested in trying it out.
>>
>> Here is what I'm doing to test what I have ...
>>
>>
>> 1) Install my branch of Asterisk that contains app_jack.
>>
>> $ svn co http://svn.digium.com/svn/asterisk/team/russell/jack  
>> asterisk-jack
>> $ cd asterisk-jack
>> $ ./configure && make
>> $ sudo make install
>>
>> The jack interface is in apps/app_jack.c in case anyone cares.
>
> When building on Mac OS X/Intel 10.4.11, I got this:
>
>[CC] app_jack.c -> app_jack.o
> app_jack.c:42:20: error: values.h: No such file or directory
> app_jack.c: In function 'handle_input':
> app_jack.c:217: error: 'FLT_MAX' undeclared (first use in this  
> function)
> app_jack.c:217: error: (Each undeclared identifier is reported only  
> once
> app_jack.c:217: error: for each function it appears in.)
> app_jack.c: In function 'queue_voice_frame':
> app_jack.c:407: error: 'FLT_MAX' undeclared (first use in this  
> function)
> make[1]: *** [app_jack.o] Error 1
> make: *** [apps] Error 2
>
>
> This made it build OK:
>
> Index: apps/app_jack.c
> ===
> --- apps/app_jack.c (revision 94662)
> +++ apps/app_jack.c (working copy)
> @@ -39,7 +39,11 @@
>
>  ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
>
> +#ifdef __APPLE__
> +#include 
> +#else
>  #include 
> +#endif
>
>  #include 
>  #include 
>
>
> Now it's time to make it run!


Hey,

I forgot to include this discussion of /usr/include/values.h on Mac  
OS X:

http://lists.apple.com/archives/scitech/2003/Nov/msg00191.html

.hc


>
> .hc
>
>
>
>>
>>
>> 2) Make an entry in /etc/asterisk/extensions.conf that looks like
>>
>> exten => 500,1,Answer()
>> exten => 500,n,Jack()
>>
>>
>> 3) Make sure jackd is running.  For the sake of efficiency,  
>> specify 8 kHz,
>> because for most codecs used for phone calls, that's all you get.   
>> Also, specify
>> 160 frames per period.  For 8 kHz audio, this comes out to 20 ms  
>> periods, which
>> is generally the packet size used for Voice over IP.
>>
>> $ sudo jackd -d dummy -r 8000 -p 160
>>
>>
>> 4) Make a call to the extension created in Asterisk in step 2.   
>> You should see
>> the two new jack ports become available.  In theory, they are  
>> available for
>> connection to any application that can use Jack.  The only thing I  
>> have done so
>> far is to use the "patchage" application to connect the ports  
>> directly together
>> to verify that the audio is flowing correctly.
>>
>>
>> Now, to figure out how to hook up arbitrary jack ports to Pd ...  
>> if anyone has
>> any pointers, it would be much appreciated.  I'm still very new to  
>> Pd.  :)
>>
>> --
>> Russell Bryant
>>
>> ___
>> PD-list@iem.at mailing list
>> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
>> listinfo/pd-list
>
>
>
>
> -- 
> --
>
> All mankind is of one author, and is one volume; when one man dies,  
> one chapter is not torn out of the book, but translated into a  
> better language; and every chapter must be so translated -John  
> Donne
>
>




 


 kill your television



___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-26 Thread Russell Bryant
Hans-Christoph Steiner wrote:
> When building on Mac OS X/Intel 10.4.11, I got this:
> 
>[CC] app_jack.c -> app_jack.o
> app_jack.c:42:20: error: values.h: No such file or directory
> app_jack.c: In function 'handle_input':
> app_jack.c:217: error: 'FLT_MAX' undeclared (first use in this function)
> app_jack.c:217: error: (Each undeclared identifier is reported only once
> app_jack.c:217: error: for each function it appears in.)
> app_jack.c: In function 'queue_voice_frame':
> app_jack.c:407: error: 'FLT_MAX' undeclared (first use in this function)
> make[1]: *** [app_jack.o] Error 1
> make: *** [apps] Error 2
> 
> 
> This made it build OK:
> 
> Index: apps/app_jack.c
> ===
> --- apps/app_jack.c (revision 94662)
> +++ apps/app_jack.c (working copy)
> @@ -39,7 +39,11 @@
> 
>  ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
> 
> +#ifdef __APPLE__
> +#include 
> +#else
>  #include 
> +#endif

Oops, and thanks.  :)  I actually hit the same problem over the weekend when
playing on my powerbook.  It should be ok now ...

--
Russell

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-26 Thread Russell Bryant
Chris wrote:
> I tried it first with 48KHz and only got noise

I'm surprised it didn't just crash, actually.  :)

I have made a lot of fixes to the resampling code.  I think it works now, but
haven't been able to test since my last set of changes.

> A really long delay, but that may was because of my setup... (ISDN <->
> Asterisk <-> IAX over Wlan <-> Asterisk with Jack) ;)

Ha, yes, there is a little bit of noticeable delay in that setup ...

> Pd patch was a really simple [adc~ 1] for audio input from the first
> jack-channel, a [osc~ 440] for testing and a [dac~ 1] for audio output
> to the first jack-channel
> 
> When I connected the osc~ with the dac~ I heard nothing at my phone,
> when I connected the adc~ from asterisk to a dac~ patched to alsa I
> neither heard a thing from the phone.

Oh, alright.  That makes sense...

> I don't know if you can patch two jack-channels together in pd, telling
> app_jack to connect it's channel to a specific pd-channel would be
> really easy, but having Pd handling it would be more flexible. Anyway,
> sending something to pd, that there's a new caller definitely is a good
> idea for various reasons.

Thanks for the feedback.  Adding a feature to app_jack such that you can not
just create the ports, but have them connected to some other jack ports sounds
like a reasonable feature to add.  Like you said, having more control over
connecting jack ports via Pd sounds more flexible, but that will take me some
more time to figure out.  :)

Thanks again for the feedback.  It is very much appreciated.

--
Russell

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-27 Thread Chris
Hi,
app_jack doesn't compile...

 [CC] app_jack.c -> app_jack.o
app_jack.c: In function ‘handle_input’:
app_jack.c:221: error: ‘FLT_MAX’ undeclared (first use in this function)
app_jack.c:221: error: (Each undeclared identifier is reported only once
app_jack.c:221: error: for each function it appears in.)
app_jack.c: In function ‘queue_voice_frame’:
app_jack.c:411: error: ‘FLT_MAX’ undeclared (first use in this function)
make[1]: *** [app_jack.o] Error 1


So long,
Chris



Russell Bryant schrieb:
> Chris wrote:
>   
>> I tried it first with 48KHz and only got noise
>> 
>
> I'm surprised it didn't just crash, actually.  :)
>
> I have made a lot of fixes to the resampling code.  I think it works now, but
> haven't been able to test since my last set of changes.
>
>   
>> A really long delay, but that may was because of my setup... (ISDN <->
>> Asterisk <-> IAX over Wlan <-> Asterisk with Jack) ;)
>> 
>
> Ha, yes, there is a little bit of noticeable delay in that setup ...
>
>   
>> Pd patch was a really simple [adc~ 1] for audio input from the first
>> jack-channel, a [osc~ 440] for testing and a [dac~ 1] for audio output
>> to the first jack-channel
>>
>> When I connected the osc~ with the dac~ I heard nothing at my phone,
>> when I connected the adc~ from asterisk to a dac~ patched to alsa I
>> neither heard a thing from the phone.
>> 
>
> Oh, alright.  That makes sense...
>
>   
>> I don't know if you can patch two jack-channels together in pd, telling
>> app_jack to connect it's channel to a specific pd-channel would be
>> really easy, but having Pd handling it would be more flexible. Anyway,
>> sending something to pd, that there's a new caller definitely is a good
>> idea for various reasons.
>> 
>
> Thanks for the feedback.  Adding a feature to app_jack such that you can not
> just create the ports, but have them connected to some other jack ports sounds
> like a reasonable feature to add.  Like you said, having more control over
> connecting jack ports via Pd sounds more flexible, but that will take me some
> more time to figure out.  :)
>
> Thanks again for the feedback.  It is very much appreciated.
>
> --
> Russell
>
>   


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2007-12-28 Thread Russell Bryant
Chris wrote:
> Hi,
> app_jack doesn't compile...
> 
>  [CC] app_jack.c -> app_jack.o
> app_jack.c: In function ‘handle_input’:
> app_jack.c:221: error: ‘FLT_MAX’ undeclared (first use in this function)
> app_jack.c:221: error: (Each undeclared identifier is reported only once
> app_jack.c:221: error: for each function it appears in.)
> app_jack.c: In function ‘queue_voice_frame’:
> app_jack.c:411: error: ‘FLT_MAX’ undeclared (first use in this function)
> make[1]: *** [app_jack.o] Error 1

Fixed ... I broke it when I fixed it for compiling on mac.  Oops.  :)

--
Russell

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2008-01-01 Thread Chris
I tried it again,

I had problems again with compiling. app_jack.c didn't find
libresample.h, so I copied that file to include/asterisk.

Well, there are still the same problems with it, weird noise when jack
is running with 48kHz and still no sound from Pd in my phone.

Russell Bryant wrote:
> Chris wrote:
>   
>> Hi,
>> app_jack doesn't compile...
>>
>>  [CC] app_jack.c -> app_jack.o
>> app_jack.c: In function ‘handle_input’:
>> app_jack.c:221: error: ‘FLT_MAX’ undeclared (first use in this 
>> function)
>> app_jack.c:221: error: (Each undeclared identifier is reported only once
>> app_jack.c:221: error: for each function it appears in.)
>> app_jack.c: In function ‘queue_voice_frame’:
>> app_jack.c:411: error: ‘FLT_MAX’ undeclared (first use in this 
>> function)
>> make[1]: *** [app_jack.o] Error 1
>> 
>
> Fixed ... I broke it when I fixed it for compiling on mac.  Oops.  :)
>
> --
> Russell
>
> ___
> PD-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list
>   


___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2008-01-02 Thread Russell Bryant
Chris wrote:
> I had problems again with compiling. app_jack.c didn't find
> libresample.h, so I copied that file to include/asterisk.

Sorry about that, libresample got moved around the source tree about 4 times in
the past day, and it kept breaking my branch.  :)

> Well, there are still the same problems with it, weird noise when jack
> is running with 48kHz and still no sound from Pd in my phone.

I just fixed the audio from Pd to the phone issue.  I am able to connect an echo
of myself through I am now able hook up a simple [osc~ 440] -> [*~ 0.1] ->
[dac~] and hear it just fine (with jackd running in 8 kHz mode).

Now, I'm going to keep working on the resampling part to find where I went wrong
with it.

As always, thank you for the feedback!

--
Russell

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd + asterisk?

2008-01-03 Thread Russell Bryant
Russell Bryant wrote:
> Chris wrote:
>> Well, there are still the same problems with it, weird noise when jack
>> is running with 48kHz and still no sound from Pd in my phone.
> 
> I just fixed the audio from Pd to the phone issue.  I am able to connect an 
> echo
> of myself through I am now able hook up a simple [osc~ 440] -> [*~ 0.1] ->
> [dac~] and hear it just fine (with jackd running in 8 kHz mode).
> 
> Now, I'm going to keep working on the resampling part to find where I went 
> wrong
> with it.

And I think I just fixed the resampling issues, as well.  I just tested it with
jackd running 8 kHz, 16 kHz, and 48 kHz modes and all of them worked fine.  Yay,
I hope.  :)

--
Russell Bryant

___
PD-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list