Hello everyone, I am still on my quest to build a g729 compatible (yet license free) Asterisk system. Here is the latest... It seems that when Asterisk needs to indicate ringing or busy to a SIP channel that has already been answered (like with an IVR) it plays back audio using the values in ringtone.h and busy.h (generated by gentone during compilation). It seems that these are stored internally as ulaw audio files, and Asterisk simply plays them back when needed. What I would like to do, as a hack (for now), is have a MOH class called ringtone (I'm not worried about busy - yet) with some .g729 files that are an EXACT replica of those ulaw files from above, just converted to g729 (I can handle that part). That way I can just use m(ringtone) as an argument to Dial(). So, the final questions are: 1) Is my understanding of this "problem" correct? 2) Is this the simplest fix, or am I making this more complicated than it needs to be? I know that I can find some ringtones on the web, but I would like to have an EXACT replica of what Asterisk uses. 3) How can I get the sounds used by Asterisk from ringtone.h and busy.h in a ulaw (or slin) file? I'm looking forward to your ideas... Thanks! -- Kristian Kielhofner
Tony Mountifield
2006-Aug-18 09:32 UTC
[asterisk-users] Re: Ringtone/gentone/busy and g729
In article <44E5D98F.701@krisk.org>, Kristian Kielhofner <kris@krisk.org> wrote:> Hello everyone,Hi Kris> I am still on my quest to build a g729 compatible (yet license free) > Asterisk system. > > Here is the latest... It seems that when Asterisk needs to indicate > ringing or busy to a SIP channel that has already been answered (like > with an IVR) it plays back audio using the values in ringtone.h and > busy.h (generated by gentone during compilation). It seems that these > are stored internally as ulaw audio files, and Asterisk simply plays > them back when needed.Looking at those two files, it would appear they are slin data.> What I would like to do, as a hack (for now), is have a MOH class > called ringtone (I'm not worried about busy - yet) with some .g729 files > that are an EXACT replica of those ulaw files from above, just converted > to g729 (I can handle that part). That way I can just use m(ringtone) > as an argument to Dial(). > > So, the final questions are: > > 1) Is my understanding of this "problem" correct? > > 2) Is this the simplest fix, or am I making this more complicated than > it needs to be? I know that I can find some ringtones on the web, but I > would like to have an EXACT replica of what Asterisk uses. > > 3) How can I get the sounds used by Asterisk from ringtone.h and busy.h > in a ulaw (or slin) file?OK, create a script called samples.pl containing the following: #!/usr/bin/perl $times = shift || 1; undef $/; $data = <>; $data =~ /{\s*(.*?)\s*}/s; @samples = split /[^0-9-]+/,$1; print pack('v*',@samples) x $times; #--end-- This will read busy.h or ringtone.h and output the values as a raw slin file. You can pass a repeat count to samples.pl if you want to make a longer file. You can convert that to whatever format you like using sox, e.g. for .wav: samples.pl 50 <busy.h | sox -t raw -sw -c1 -r8000 - busy.wav samples.pl 100 <ringtone.h | sox -t raw -sw -c1 -r8000 - ringtone.wav Change .wav to .ul or .al for uLaw or aLaw output. Hope this helps! Cheers Tony -- Tony Mountifield Work: tony@softins.co.uk - http://www.softins.co.uk Play: tony@mountifield.org - http://tony.mountifield.org