RedDTMF old-skool telephone


silly class simulating old telephone tone dialing and ring signals.  see http://en.wikipedia.org/wiki/DTMF


*new(char)

returns a pair of frequencies corresponding to the DTMF specs

*string(str)

decodes a string into frequency pairs

*ar(char, mul)

returns audio rate ugens for a particular char

*kr(char, mul)

returns control rate ugens for a particular char

*dial(str, rate, mul)

returns a set of audio rate ugens that simulates dialing tones

*signal(rate, mul)

returns a set of audio rate ugens that simulates a signal tone


//--

s.boot;


//.new just returns different rates

RedDTMF($8)

RedDTMF($2)

RedDTMF($0)


//.string converts a whole string to rates

RedDTMF.string("0123456789")


//.dial played in a function

a= {RedDTMF.dial("12AA34", 4)}.play

a.free

a= {RedDTMF.dial("045980022", 9)}.play

a.free


//.dial used within a synthdef

(

a= SynthDef(\dialecho, {|amp= 0.5|

var src;

src= RedDTMF.dial("0*2*4*6*8*0", 10)*amp;

Out.ar(0, CombN.ar(src, 0.1, 0.1, 2, 0.5, src));

}).play(s)

)

a.free


//.signal played in a function

a= {RedDTMF.signal(0.5)}.play

a.free

a= {RedDTMF.signal(2, 0.4)}.play

a.free


//.signal used within a synthdef

(

a= SynthDef(\signalecho, {|amp= 0.5|

var src;

src= RedDTMF.signal(1, amp);

Out.ar(0, CombN.ar(src, 0.1, 0.1, 2, 0.5, src));

}).play(s)

)

a.free