diff --git a/README.md b/README.md index 8edc008..3d915c9 100644 --- a/README.md +++ b/README.md @@ -137,16 +137,16 @@ unlinkedct = ct1 remotect = ct1 linkunkeyct = ct2 [telemetry] -ct1 = /usr/local/bin/SkywarnPlus/SOUNDS/TONES/CT-LOCAL -ct2 = /usr/local/bin/SkywarnPlus/SOUNDS/TONES/CT-LINK -remotetx = /usr/local/bin/SkywarnPlus/SOUNDS/TONES/CT-LOCAL +ct1 = /usr/local/bin/SkywarnPlus/SOUNDS/TONES/CT1 +ct2 = /usr/local/bin/SkywarnPlus/SOUNDS/TONES/CT2 +remotetx = /usr/local/bin/SkywarnPlus/SOUNDS/TONES/CT1 ``` ## CW / Voice IDs SkywarnPlus can automatically change the node ID whenever certain weather alerts are active. The configuration for this is based on your `rpt.conf` file setup. Here's an example: ```ini [NODENUMBER] -idrecording = /usr/local/bin/SkywarnPlus/SOUNDS/ID/ID +idrecording = /usr/local/bin/SkywarnPlus/SOUNDS/ID/RPTID ``` # Pushover Integration @@ -173,7 +173,7 @@ To use the `SkyControl.py` script, you need to call it with two parameters: - SayAllClear - TailMessage - CourtesyTone - - + - AlertScript 2. The new value for the setting (either 'true' or 'false' or 'toggle'). @@ -195,6 +195,15 @@ And to toggle it, you would use: /usr/local/bin/SkywarnPlus/SkyControl.py enable toggle ``` +You can also use `SkyControl.py` to manually force the state of Courtesy Tones or IDs: + +```bash +/usr/local/bin/SkywarnPlus/SkyControl.py changect normal +/usr/local/bin/SkywarnPlus/SkyControl.py changect wx +/usr/local/bin/SkywarnPlus/SkyControl.py changeid normal +/usr/local/bin/SkywarnPlus/SkyControl.py changect wx +``` + ## Spoken Feedback Upon the successful execution of a control command, the `SkyControl.py` script will provide spoken feedback that corresponds to the change made. For instance, if you execute a command to enable the SayAlert function, the script will play an audio message stating that SayAlert has been enabled. This feature enhances user experience and confirms that the desired changes have been effected. @@ -211,6 +220,8 @@ You can map the `SkyControl.py` script to DTMF commands in the `rpt.conf` file o 805 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py courtesytone toggle ; Toggles CourtesyTone 806 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py alertscript toggle ; Toggles AlertScript 807 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py idchange toggle ; Toggles IDChange +808 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py changect normal ; Forces CT to "normal" mode +809 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py changeid normal ; Forces ID to "normal" mode ``` With this setup, you can control SkywarnPlus' functionality using DTMF commands. diff --git a/SOUNDS/ALERTS/DICTIONARY.txt b/SOUNDS/ALERTS/DICTIONARY.txt index 4a43ec5..0fe6184 100644 --- a/SOUNDS/ALERTS/DICTIONARY.txt +++ b/SOUNDS/ALERTS/DICTIONARY.txt @@ -68,6 +68,10 @@ SWP59.wav: Heat Watch SWP60.wav: Freeze Watch SWP61.wav: Dense Smoke Advisory SWP62.wav: Avalanche Warning +SWP77.wav: ID Set To Normal +SWP78.wav: ID Set To Weather +SWP79.wav: Courtesy Tones Set To Normal +SWP80.wav: Courtesy Tones Set To Weather SWP81.wav: AlertScript Enabled SWP82.wav: AlertScript Disabled SWP83.wav: IDChange Enabled diff --git a/SOUNDS/ALERTS/SWP77.wav b/SOUNDS/ALERTS/SWP77.wav new file mode 100644 index 0000000..8d21b49 Binary files /dev/null and b/SOUNDS/ALERTS/SWP77.wav differ diff --git a/SOUNDS/ALERTS/SWP78.wav b/SOUNDS/ALERTS/SWP78.wav new file mode 100644 index 0000000..b90b047 Binary files /dev/null and b/SOUNDS/ALERTS/SWP78.wav differ diff --git a/SOUNDS/ALERTS/SWP79.wav b/SOUNDS/ALERTS/SWP79.wav new file mode 100644 index 0000000..612c9c6 Binary files /dev/null and b/SOUNDS/ALERTS/SWP79.wav differ diff --git a/SOUNDS/ALERTS/SWP80.wav b/SOUNDS/ALERTS/SWP80.wav new file mode 100644 index 0000000..00c9ab0 Binary files /dev/null and b/SOUNDS/ALERTS/SWP80.wav differ diff --git a/SOUNDS/TONES/3down.ulaw b/SOUNDS/TONES/3down.ulaw new file mode 100644 index 0000000..e1f601b --- /dev/null +++ b/SOUNDS/TONES/3down.ulaw @@ -0,0 +1 @@ +û=-).HVKg[3&"+"31,ƨqIT<)"&?/$V#ULLJ.$#0OO(6XI`d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡqA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoT0%#-գ9-.eIX:("'F+'F%mKME,#$4B%;TJg[3&"+"31,ƨqIT<)"&?/$V#TLLJ.$#0OO(6XI_e5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoS0%#-ԣ9-.eIX:("(F+'F%mKNJ2+->Ȯ\=;C\ȻC0*(,6MMAHߵ*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gGAPȮE"$0 ".HLAHߵ*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gHEUͶX;44;H`;D.#);ִTJJPg[?3+&#"%+97"3ȧ1! ,DƯqOIKUwP%.ݪ7$*=ϲQJJQkW>1*%#"&,;޲4!!6/ !-I®jNIKVN;/)$"#'.Bɭq-%AL*$2^]LIM\tG7-'$"$)2OH(*]=&(9ߵVJIOc^A4+&#"%+7p:$/ϩ4"+@ʰ}PIJSoT=0*%"#&-=կ1"9e-".NeMILXL:.($"#(/FĬ[+'HF)%4mZKIN^kE6,'#"$)4VN7-++.4>Mg \ No newline at end of file diff --git a/SOUNDS/TONES/3up.ulaw b/SOUNDS/TONES/3up.ulaw new file mode 100644 index 0000000..7817e9b --- /dev/null +++ b/SOUNDS/TONES/3up.ulaw @@ -0,0 +1 @@ +绬;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;~;,%!!%,;~;,%!!%,;~;,%!!%,;~;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~};,%!!&,@i0% !)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)=Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)=Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9(! &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9(! &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)<Ƭ9( &3鰥F,"#-Mi0%!)=Ƭ9(! &3鰥F,"#-M3# (H2# (H3# (H2# (H3# (H2# (H2# (H2# (H3# (H3# (H2# (H3# (H3# (H2# (H2# (H2# (H3# (H2# (H3# (H2# (H3# (H2# (H3# (G2# (H2# (H3# (H3# (H2# (H3# (H2# (H2#(H3# (H2# (H3# (H2# (H3# (H2# (H3# (H3# (H2# (H2# (H2# (H3# (H2#(H2# (H2# (H2# (H2# (H3# (H2# (H3# (H2# (H3# (H2# (H2# (H3# (H3# (H2# (H3# (H3# (H3# (H2# (H2# (H3# (H3# (H2# (H2# (H3# (H3# (H2# (H2# (H2# (H3# (H2# (H3# (H2# (H3# (H3# (H2# (G2#)? \ No newline at end of file diff --git a/SOUNDS/TONES/4down.ulaw b/SOUNDS/TONES/4down.ulaw new file mode 100644 index 0000000..5f8e807 --- /dev/null +++ b/SOUNDS/TONES/4down.ulaw @@ -0,0 +1 @@ +<++=> &ܤ/',Hølf:.1^-->d(6ޝ%7F..=xѽ>+(7H\!(7뚑.;*ܫ<6?^pOSԷW+"([(*;o*7۟+%?TCLkxN==e2 /@_(6ᛓ#2?'&3᷵]K60>éL#![$(8,9%ۦ3+0M̾_4*.]+,=h)6ݝ':J35FXnƵ:'%4E\ (7蚑 /LolL@JͰR(&[&):w*7!ۡ-#)C]SwnA57`/.?a(6ߜ$5B+*8彽C/,:J ["(8-:'ۨ7/7Td޿[.&+\*+<k)6ܞ)"$"/ޱLNmW>8CȬN&$[. #8X>AYû=-).HVKg[3&"+"31,ƧqIU<)"&?/$V#ULLJ.$#0OO(6XI_d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoT0%#-գ9-.eIX:("(F+'F%mKNE,#$4B%;TJg[3&"+"31,ƧqIU<)"&?/$V#ULLJ.$#0OO(6XI_e5'"*_%.7*ϩJQ>*#&;4! !INK~N/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoS0%#-գ9-.eIX:("(F+'F%mKMJ2+->Ȯ\=;C\ȻC0*(,6MMAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gGAPȮE"$0 ".HLAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5_gHEUͶX;44;H`;D.#);ִTJJPg[?3+&#"%+97"3ȧ1! ,DƯqOIKUwP%.ݪ7$*=ϲRJJQkW>1*%#"&,;ݲ4!!6/ !-I®jNIKVN;/)$"#'.Bɭp-%AL*$2]]LIM\tG7-'$"$)2OH(*]=&(9ߵVJIOc^A4+&#"%+7p:$/ϩ4"+@ʰ}PIJSoT=0*%"#&-=կ1"9e-".MeMILXL:.($"#'/FĬ[+'HF)%4mZKIN^kE6,'#"$)4VN6-++.4>Mf \ No newline at end of file diff --git a/SOUNDS/TONES/4up.ulaw b/SOUNDS/TONES/4up.ulaw new file mode 100644 index 0000000..33ffcde --- /dev/null +++ b/SOUNDS/TONES/4up.ulaw @@ -0,0 +1 @@ +;D.#);ִSJJPg[?3+&#"%+97"3ȧ1! ,DƯqOIKTxP%.ݪ7$*=ϲQJJQkW>1*%#"&,;ݲ4!!6/ !-I®jNIKVN;/)$"#'.Bɭq-%AL*$2]]LIM\tH7-'$"$)2OI(*]=&(9ߵVJIOc_A4+&#"%+7p:$/ϩ4"+@ʰ}PIJSoS=0*%"#&-=կ1"9e-".NeMILXL:.($"#(/FĬ[+'HF)%4mZKIN^kE6,'#"$)4WN7-++.4>MgȻC0*(,6MLAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gGAPȮE"$0 ".HLAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gHEUͶX;44;H`û=-).HVKg[3&"+"31,ƨqIU<)"&?/$V#TLLJ.$#0OO(6XI_d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoT0%#-ԣ9-.eIX:("(F+'F%mKME,#$4B%;TJg[3&"+"31,ƨqIU<)"&?/$V#ULLJ.$#0OO(6XI_d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\u7'")O(*=(ߪJOA+#%7:Ϝ"@PJoS0%#-գ9-.eIX:("(F+'F%mKMJ2+->Ȯ\=;C\<+*=> &ܤ/',Hølf:.1^-->d(6ݝ%7F..=xѽ>+(7H\!(7뚑.;*ܫ<6?^pOSԷW+"([(*;o*7۟+%?TCLkyN==d2 /@_(6ᛓ#3?'&3᷵]K60>éL#![$(8,9%ۦ3+0M̾_4*.]+,=h)6ܝ':J35FXnƵ:'%4E\ (7蚑 /LolL@JͰR(&[&):w*7!ۡ-#)C]SwmA57a/.?a(6ߜ$5B+*8佽C/,:J ["(8-:'ۨ7/7Td޿[.&+\*+<l)6ܞ)"$"/ޱLNmV>8CȬN&$\. #8X>AY \ No newline at end of file diff --git a/SOUNDS/TONES/Apollo.ulaw b/SOUNDS/TONES/Apollo.ulaw new file mode 100644 index 0000000..568e937 --- /dev/null +++ b/SOUNDS/TONES/Apollo.ulaw @@ -0,0 +1 @@ +*1;' ͣ&;4)!$G.,N#"c*0>% ӣ'86(! %B/+X""W+/B%!ܢ(68' Ť%>1*c"#N,.G$!)4;& ʤ&<3)!$I--L#"m*2=& Σ':5)!$E.,R#"\+/@% !آ(77(! ¥%@/+\"#R,.E$!)5:' Ǥ&=2*m"#L--J$!)3<& ̣&;4)!$G.,O#"c*0>% ӣ'86(! %B/+W""W+/B%!ܢ(68' Ť%>1*c"#N,.G$!)4;& ʤ&<3)!$I--L#"m*2=& ϣ':5)!$E.,S#"\+/@% !آ(77(! ¥%@/+\"#R,.E$!)5:' Ǥ&=2*m"#L--J$!~)3<& ̣&;4)!$G.,O#"c*0>% ӣ'86(! %B/+W""W+/B%!ݢ(68' Ť%>1*c"#N,.G$!)4;& ʤ&<3)!$I--L#"m*2=& Σ':5)!$E.,S#"\+/@% !ע(77(! ¥%@/+\"#R,.E$!)5:' Ǥ&=2*m"#L--J$!)3<& ̣&;4)!$G.,O#"c*0>% ӣ'86(! %B/+W""W+/B%!ܢ(68' Ť%>1*c"#N,.G$!)4;& ʤ&<3)!$I--L#"m*2=& ϣ':5(!$E.,S#"\+/@% !آ(77(! ¥%@/+]"#R,.E$!(5:' Ǥ&=2*m"#L--J$!~)3<& ̣&;4)!$G.,O#"c*0>% ң'86(!%B/+W""W+/B%!ݢ(68' Ť%>1*c"#N,.G$!)4;& ʤ&<3)!$I--L#"m*2=& Σ':5)!$E.,R#"\+/@% !ע(77(! ¥%@/+]"#R,.E$!)5:' Ǥ&=2*n"#M--H$# \ No newline at end of file diff --git a/SOUNDS/TONES/BEEP.ulaw b/SOUNDS/TONES/BEEP.ulaw index 84adb93..fb24079 100644 --- a/SOUNDS/TONES/BEEP.ulaw +++ b/SOUNDS/TONES/BEEP.ulaw @@ -1 +1 @@ -F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F~6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F~6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6~F/,4dJ/,3XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:س>.,8崬A.,6F/,4dJ/,3XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX3,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6~F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6F/,4dJ/,2XO1,1OX2,/Jd4,/F6,.AƯ8,.>ʯ:--<ϱ<--:ز>.,8䴬A.,6 \ No newline at end of file +V=6;gE*#)NE&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.Ω;,,:绶WKPe \ No newline at end of file diff --git a/SOUNDS/TONES/BOOP.ulaw b/SOUNDS/TONES/BOOP.ulaw index 92488e0..2e03c0c 100644 --- a/SOUNDS/TONES/BOOP.ulaw +++ b/SOUNDS/TONES/BOOP.ulaw @@ -1 +1 @@ -öF7/,,.4?dȸJ9/-,-2=XͺO;1-,-1;OӼX=2-,-/9Jݾd?4.,,/7FC6.,,.5AnƷH8/,,.3>]ʹM:0-,-23.,,/8H俴nA5.,,.6CöF7/,,.4?dȸJ9/-,-2=XͺO;1-,-1;OӼX=2-,-/9Jݾd?4.,,/7FC6.,,.5AmƷH8/,,.3>]ʹM:0-,-23.,,/8H俴nA5.,,.6CöF7/,,.4?dȸJ9/-,-2=XͺO;1-,-1;OӼX=2-,-/9Jݾd?4.,,/7FC6.,,.5AmƷH8/,,.3>]ʹM:0-,-23.,,/8H俴nA5.,,.6CöF7/,,.4?dȸJ9/-,-2=XͺO;1-,-1;OӼX=2-,-/9Jݾd?4.,,/7FC6.,,.5AnƷH8/,,.3>]ʹM:0-,-23.,,/8H俴nA5.,,.6CöF7/,,.4?dȸJ9/-,-2=XͺO;1-,-1;OӼX=3-,-/9Jݾd?4.,,/7FC6.,,.5AnƷH8/,,.3>]ʹM:0-,-23.,,/8H俴nA5.,,.6CöF7/,,.4?dȸJ9/-,-2=XͺO;1-,-1;OӼX=3-,-/9Jݾd?4.,,/7FC6.,,.5AmƷH8/,,.3>]ʹM:0-,-23.,,/8H俴nA5.,,.6C \ No newline at end of file +½H7-)&',7\?-% "(1M®E/&!!&/EɰM1(" %-?ӳ[5)" $+;緪9+# #*7g=,% "(3SB.&!!'0IůI0'!!&.BͱS3(" %,=۵g7*# #+9;+$ ")5[?-% "(1M®E/&!!&/EɰM1(" %-?ӳ[5)" $+;緪9+# #*7g=,% "(3SB.&!!'0IůI0'!!&.BͱS3(" %,=۵g7*# #+9;+$ ")5[?-% "(1ME/&!!&/EɰM1(" %-?ӳ[5)" $+;緪9+# #*7g=,% "(3SB.&!!'0IůI0'!!&.AͱS3(" %,=۵g7*# #+9;+$ ")5[?-% "(1M®E/&!!&/EɰM1(" %-?ӳ[5)" $+;緪9+# #*7g=,% "(3SB.&!!'0IůI0'!!&.BͱS3(" %,=۷oI><=BKYn \ No newline at end of file diff --git a/SOUNDS/TONES/BeeBoo.ulaw b/SOUNDS/TONES/BeeBoo.ulaw new file mode 100644 index 0000000..dfe7801 --- /dev/null +++ b/SOUNDS/TONES/BeeBoo.ulaw @@ -0,0 +1 @@ +E74<~."!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,~,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,~~,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,,!!,~1)+8MIPgýE6,(%$',;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;;,%!!%,;~J>::=CL[o \ No newline at end of file diff --git a/SOUNDS/TONES/BlastOff.ulaw b/SOUNDS/TONES/BlastOff.ulaw new file mode 100644 index 0000000..d6eba74 --- /dev/null +++ b/SOUNDS/TONES/BlastOff.ulaw @@ -0,0 +1 @@ +E6-**.:6(!!(66(!!(6~6(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!)8K?>AJWm[AP~16.'~66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66~!((!66~!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!((!66!()#=*@8?W_X[P@1*'~)66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!~(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(~!#.=@6~8A_~E5-**.:~6(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(6~6(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!(6~6(!!(66(!!(66(!!(66(!!(66(!!(66(!!(66(!!)8K@>AJWl \ No newline at end of file diff --git a/SOUNDS/TONES/BumbleBee.ulaw b/SOUNDS/TONES/BumbleBee.ulaw new file mode 100644 index 0000000..7e6a035 --- /dev/null +++ b/SOUNDS/TONES/BumbleBee.ulaw @@ -0,0 +1 @@ +ޯ1!+M9%'>C(#6˪W, /ﮟ1!+O8$'?A($7ɪS, 0讟0 ,S7$(A?'$8ǩO+ 0߭/ ,W6#(C>'%9ũM+!1ۭ/-[5#)E=&%:èK*!2׬o.-_5")G<&%;I*"3Ӭh..g4"*I;&&(6,/1+9'B$ʝT 韓 R$A'8+0/,7(?$ƝN!ܟZ#E':*2.-5)=%œJ"Ԟie"I&<)4-.3*;&F#Ξ\{!M%>(6,/1+9', \ No newline at end of file diff --git a/SOUNDS/TONES/CT-LINK.ulaw b/SOUNDS/TONES/CT-LINK.ulaw deleted file mode 100644 index 4378dbb..0000000 --- a/SOUNDS/TONES/CT-LINK.ulaw +++ /dev/null @@ -1 +0,0 @@ -M:24Cΰ." (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DE( !-6$$6Ĩ-! (ED( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ~-! (ED( !-6$$6Ũ-! (DE( !-6$$6Ĩ1((1N´\JHWI96AӲ6&$/ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ5&&2ᲬJ:;IqGJyA*$2D-ee0'67 gOL/ڡϬ.š:N3 &$5sH()\!Ki49CHeĤ;VPǭ:ߚ/-KC"ǘ#&H;(,:DŠg8볣L>>?ʻJN,"-T^.""6;3՟.ܫ.V䱭}3:,>?ʻJN,"-T^."&#=IC䶮IH^ \ No newline at end of file diff --git a/SOUNDS/TONES/CT-LOCAL.ulaw b/SOUNDS/TONES/CT-LOCAL.ulaw deleted file mode 100644 index 4378dbb..0000000 --- a/SOUNDS/TONES/CT-LOCAL.ulaw +++ /dev/null @@ -1 +0,0 @@ -M:24Cΰ." (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DE( !-6$$6Ĩ-! (ED( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ~-! (ED( !-6$$6Ũ-! (DE( !-6$$6Ĩ1((1N´\JHWI96AӲ6&$/ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ5&&2ᲬJ:;IqGJyA*$2D-ee0'67 gOL/ڡϬ.š:N3 &$5sH()\!Ki49CHeĤ;VPǭ:ߚ/-KC"ǘ#&H;(,:DŠg8볣L>>?ʻJN,"-T^.""6;3՟.ܫ.V䱭}3:,>?ʻJN,"-T^."&#=IC䶮IH^ \ No newline at end of file diff --git a/SOUNDS/TONES/Chord3up.ulaw b/SOUNDS/TONES/Chord3up.ulaw new file mode 100644 index 0000000..04d358e --- /dev/null +++ b/SOUNDS/TONES/Chord3up.ulaw @@ -0,0 +1 @@ +;D.#);ִTJJPg[?3+&#"%+97"3ȧ1! ,DƯqOIKUwP%.ݪ7$*=ϲQJJQkW>1*%#"&,;ݲ4!!6/ !-I®jNIKVN;/)$"#'.Bɭq-%AL*$2]]LIM\tH7-'$"$)2OH(*]=&(9ߵVJIOc_A4+&#"%+7p:$/ϩ4"+@ʰ}PIJSoT=0*%"#&-=կ1"9e-".NdMILXL:.($"#'/FĬ[+'HF)%4mZKIN^kE6,'#"$)4VN7-++.4>MgȻC0*(,6MLAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gGAPȮE"$0 ".HLAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^hHEUͶX;44;Haû=-).HVKg[3&"+"31,ƨqIU<)"&?/$V#ULLJ.$#0OO(6XI_e5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoS0%#-գ9-.eIX:("(F+'F%mKNE,#$4B%;TJg[3&"+"31,ƧqIU<)"&?/$V#ULLJ.$#0OO(6XI_e5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoS0%#-ԣ9-.dIX:("(F+'F%mKMJ2+->Ȯ\=;C\ \ No newline at end of file diff --git a/SOUNDS/TONES/Comet.ulaw b/SOUNDS/TONES/Comet.ulaw new file mode 100644 index 0000000..f84d2dd --- /dev/null +++ b/SOUNDS/TONES/Comet.ulaw @@ -0,0 +1 @@ +֧&&&&}&&~&&~&&~&&~&&~&&~&&~&&~&&&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&~&&➒'&55}&&55~&&56~&&56~&&55~&&55~&&55~&&55~&&55&&55~&&56~&&55~&&56~&&55&&55~&&55~&&55&&55~&&55~&&55~&&55~&&55~&&55~&&55&&~66 \ No newline at end of file diff --git a/SOUNDS/TONES/Duncecap.ulaw b/SOUNDS/TONES/Duncecap.ulaw new file mode 100644 index 0000000..8375fa4 --- /dev/null +++ b/SOUNDS/TONES/Duncecap.ulaw @@ -0,0 +1 @@ +ʼG-!,p<$.lG.&""&-Ȭ0  5,0,0.!4Ȩ7'"+>ҴI;547=H[aZ[nȽ^Y¼|yXA70..4@A+!#0쮟:"*𩛔7(8)p<$.lG.&""&-Ȭ0  5,0,0.!4Ǩ7'"+>ӴI;547=H[aZ[nȽ^Y¼}yXA70..4@A+!#0쮟:"*𩛔7(8)p<$.lG.&""&-Ȭ0  5,0,0.!4Ǩ7'"+>ӴJ;547=H[aZ[nȽ^Y¼}yXA70..4@MA+!#0쮟:"*𩛔7(8)p<$.lG.&""&-Ȭ0  5,0,0.!4Ǩ7'"+>ӴJ;547=H[aZ[nȽ^Y¼}yXA70..4@MA+!#0쮟:"+񬞚I5..2;;?M῰c3%!.q/&H:%+BƮZ@968@) +?ϳgI@?BJYxzTC91-,-2>q6%(G8!"9J, ",=ܹxTMOZN=2,)()-9\9%%>=$!5ǨW/$$-=񾲭de¿L9.(%#%)3O<&"8G&1ԫo4(! &.=mŹüK6+%  &.F«A'3ȦT).񮡛:+%!!$)0?aͿutL4)""+>ǫJ(.թw,-]?/)&&(-5B^iYXdǺO3''9άY*+/,NG4-**,1:G_dOIFJXµV3&$3ݭ,)U5"+GO:2//29AOfgQF>;;?M῰d3%!.q/&H:%+BƮZ@968@) +?ϳgI@?BJXyzTC91-,-2>q6%(G8!"9J, ",=ܹxTMOZN=2,)()-9\9%%>=$!5ǨW/$$-=񾲭de¿L9.($#%)3O<&"8F&1ԫo4(!!&.=mŹüK6+%  &.F«A'3ȦT).򮡛:+%!!$)0?aͿutL4)""+>ǫJ(.թx,-]?/)&&(-5B^iYXdǺO3''9άb:.++.4>Mf \ No newline at end of file diff --git a/SOUNDS/TONES/Moonbounce.ulaw b/SOUNDS/TONES/Moonbounce.ulaw new file mode 100644 index 0000000..6c67b44 --- /dev/null +++ b/SOUNDS/TONES/Moonbounce.ulaw @@ -0,0 +1 @@ +½D.*4ܭ:,.@N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_?!N,(!Ο4(,?N_G+&-\M=BZĺT3)'-FKLd7("&7(=;KLd7("&7(=;KLe7("&7(=;KL~e7("&7(=;KLe7("&7(=;KLe7("&7(=;KLd7("&7(=;KL~e7("&7(=;KLe7("&7(=;KLf:,)-?ƭE9:D]ʼ<-(&)/?~KAG~*', *404LL>٬=)!-;),.,Y~˾Y,.,);-!)=>LL>٬=)!-;),.,Y̾Y,.,);-!)=>LL>٬<)!-;),.,Y̾Y,.,);-!)<>LK>٬<)!-;),.,Y̾Y,.,);-!)=>LK>ڮB'14*FGS \ No newline at end of file diff --git a/SOUNDS/TONES/NBC.ulaw b/SOUNDS/TONES/NBC.ulaw new file mode 100644 index 0000000..5ec0403 --- /dev/null +++ b/SOUNDS/TONES/NBC.ulaw @@ -0,0 +1 @@ +;;)$?>$1˧i+)T5 ":G&-ݪ.&F:"4ĦV)+e1$=@%/Ϩ,(M7!!8L(,/%B=#2ȧ_**Y4#;E&.٪-'I9" 6¥R)+o0$??%0ͨs,)Q6!"9J'-㫝.&E<# 4Ƨ[*+_3$=C&/ԩ-(L8""7N),0&A>%2˨h+*V5!#;H'.ݫ.(H;$!6ŧW*,h3 %>B&1Ъ-)O8"#9M).쬞0'D>%!4ɨ_,+\5"%=F(/٫.)K;$#8çS*-t3!'AA'!3Ϊp-+T8#%;K)/䭞0 )H=&#7ȩ\,-b5#'?E(!2֬/+N;%%:èP+/3")E@(#6ͫh.-Z8$'=J*!1ޭ1!+K='%9ǪX- .l6$)BE)#5Ӭ/!,S;&'<©O,"1쯡4#+H@)%8̬a.!!._9&)@J+$4ۮ2# -N>('<ǫV.!#1y7&+FE+&8ѭp1#".Y<()?ëN-!%4氣5%!-LA*(;̭^/#$1g:( +DJ-!'8ٯ4%#/T>**>ȬT/#&48("-JF,!);Яj3&%1^=* !,CĬN/$(8Ღ7($/OB,"!+>̮\2&'5p;* $.IJ.$!*;ز|6(&2Y?,##-BɮT1& )8:*!&0NG.%#,>ѱe5(  (6e>,#%/HƮN1'#+;ߵ9*" (3VD.%%.Bͱ[5)!#*9}=,$!'1MîK1'!%->صr9+##*7_B.& !'0GʱU5)# %,<鹫=-% #*5SI1(""'/Bҵc9+% !%,:mA/'" #)3LȱO5*$! "'.?޹<-'" !%,8[G2)$!!$)2Hε[9,&"!#'.=@/($""&,7RƲM5+&#"%)1Cٹm<.($#$(.;fF3*&#$&,6L̶W9-($$%*0@輮?0*&$%(.:ZųL6,'%%',5HԹcwE4,'%&).9Q˷S9.)&&(,4E߼|?2+(&'+0=bŴK7-)'').8MѺ]=0+('),4B񿲬E5-)((+0YϼW>5.,,.2;LwF91---08DjʻO=4/--/5>T׿_B81../3;JǺK<4/./29C_ϾV@71//16>PùlG;40/05720049C[^E:51138?OȼL>73236FTýSF>;::=CNjȿ^KA=;;=AJ\þoQF?<<=?HT}ZKB>==?EOfĿfOG@>>?DL[¿}XKD???CJUr`OHC@@CIPcnVLFCBDHN\]OIFDEHMWmiVMIFFHLTcy]QLIHILR^{fWOLJJMQ[lp]TNLLMQYfeYSONORXawn_XSQQTY_nyf]XVUVZ_jnc]ZYY\_iwwjc_]]^bir~qjfccdgkr}yqnkkkmou{~{{yz{{}~Ź7'*T%=)5-.3*<&I"Ԟl`"F&:*2/-6(?%ƝO! T$A(8,/1+9'D#̞Z !L%=)5-.3*<&I"Ԟka#G';+2/-6)?%ǝO! U$A(8,01,9(D$̞Z "M&>*5..4*<'J#՟k b#G';+3/-7)?&ǞO"!V%B)9-12,:(E%͞[!#M&>*6./5+='žJ$՟k! c$H(<,40.8*@'ȞP#ᡖ" W&C*:-23-;)F&͟[ "$N(?+7/06,>)ÞK%֠l""d&I)=-51/9+A(ɟQ!$ᢗ$!X'E+;.44.<+G'Ρ\"$&!O)A,9027-?*şL!'עl$$f'!K+>.730:-C )ʡS#&⤙&#Z)!G,2882?!.ģJ$+ѥ^'()&T,#E/!<57;!1C#-ɤO&+ڧm((i+&N.$B2";8  6>#0¤H%-ͦW(+橝*(]-&K0$@5 ":;" 5A%0ǦL'-Ԩ_)+,)V.&H3 $?8"#9=$!4F& 0˨R)-ܪn++k.)P1 'F6"%>;$#9@&"4ŧJ(!/ϩY+-謟-+_/!)M4"(D8$&==&$8E(#4ʩN*"0׫b, !./! ,Y2#*K7$(B;&'<@(%8ũI* $4ΫU,!#0ޭo."".m1#!,U5%!+I9' )A>( (ص]7,*.<縭t9-*-9s<.+-7]?/+,6SD1,,4LƲI3,,2G̴N5-,1CӶX8.,0?ݹe:.,/=ﻯ527D쿶wA636Aw÷E836?eǸI946>[˺L;56=UμQ<6676;Lۿ_@86;J¹lC97;GźG;7:EqȻJ<8:Cd̽M=9:B\ϾQ?::@WWA;:?R»]D<;?OżfG=;?MȽsI><>K˾L?<>JnOA=>He½TC>>G^ľYF??FZǿ^H??FWeJA?ETmMC@EQ{OEAEO{SGCENnWIDFNh[KFFMb_MGGM^fOIHM\lRJIM[uVLJMYYNKMXy]OLNXp`RNOWleVOOWijYRQXgn\TSYfu^WVZe|bZX[eg]Z\e{k_]^fxnd_`hvtidejuxmiimv|rnnpy~zxyz}ɺM."&E[$1*)͢4"QE 9'-.&류:CU#3**ʡ2#WB;&.-'ग9 FP"4)+ǡ1$\?>i%/,(ԣ6"LJ!7(, /%r=?_$1+)ϣ5#OG!9(-.&< BY$3+*͢4$TE!:'..'祘:!ET$4*+ʢ3%ZB <'/.(ޥ9"HO$6*,Ǣ2&_@ >q'0-)٥8#KM#8*-Ţ1'j? !?f&2-*ԥ7$NJ#9).â0({> "B]&4,+ϥ7%RH#;)/0)祥= #EY&5,,ͥ6&XF#!=)0/*娚< $HT&7,-˥5']D#">~)2/+ݨ;!%KP& 9,.ɥ5)fB$#@m)4/,٨:!&NN&!;,/ǥ4*pA$$Dd) 6/-ը:!(RL'#=,1ť4+?$&G])!8/.Ѩ9")XJ'$>, 3Ħ4 ,쫝?%'JZ*#://Ψ9"*]I'%@,!5æ4!-䫞>%(LV*$;/ 1ͩ9#+dG('Cx-#7§4!.ޫ>&*OS*&=/ "3̩9$-lF((Gl-$94"!0۬>&+TP+'?/!#5ʪ9% .zE)*Id- &;4#"2ج>'-YN+)B0"%8ʪ9&"/E*+L_.!(=5$$4խ>(!.]M, *E1#':ɫ9'$1쯣D*!-O\.")?5%&7ӭ>)#/dM-"!,H2%(<Ȭ:(&4氤D+!#.SZ/$!+A6'(9Ѯ>*!%2kL-##-Kt3&!*=ȭ:)! '6ᱦD,#%/XX0%#,E7(!"*;Я>+# '4tL.% %/Ml4'! #,?Ȯ;*# ")9޳E-% !'2\W1'!!%.H8)#!$+=ϰ?,$!#)7L/'""'1Ph5)#"&.Cɯ<,%"$+;ݴE.&#$)5`V3)$#'0K®9+%#&-?ϲ?.&$%+9L1($%)4Ud7+%$(/Fɰ=-'%'-=۶F/(%&+8gU5*&&*3Mį;,'&(/BϴA/)&(-<M3*''+7Yb9,('*2Iʳ>.)')/?۸G2*'(-:mU7,((,6Qű}<.)(+2FжC1+(*/>뻮M6,)*.:]`:.*),6L˵?0+*,2CۺI5,*+/=sV9.++.9UǴu>0,+-6IѸE4-+,2A轰N8.,,04//25005?^˺nC7104868>NǼVA:78=Ir̾cF<88:8;BTƼSB;9;?N˿]F=:;>Ji¼nK?;;>G[ǾQC=;=DTZG><=BNxľfKA==AKdȿ|PD?>@I[¾XH@>@GTſ`LC?@FOnoPGAAEMaWJDBEK[^MFCEJV|jRIEFJRk{XLGGIPa^OJHJO]gTLJJNYtsZOLKNWj_SNMNVdgXPNOU_o\TPQU^r|bYTSV]li]XVX]ioa[YZ^g{zh_\\_gune`_bhqtkfefjr{plkknt|~yutuxz~ \ No newline at end of file diff --git a/SOUNDS/TONES/NBCmed.ulaw b/SOUNDS/TONES/NBCmed.ulaw new file mode 100644 index 0000000..444745e --- /dev/null +++ b/SOUNDS/TONES/NBCmed.ulaw @@ -0,0 +1 @@ +;;(%A<#3ǦZ**b1$>?$0̨j+)V4#;D&/ԩ,(M7!"9I'-ߪ.'H9"!6O),/&C<$ 4ǧY*+f2%??%2̨g,*Y5!$=D'0Ӫ-)O7"$:J(/ޫ/)J:$#8§O*.𭞘1 (F=&#7ȩY,-k4"(BA'"5ͪe--\7$'?F)"3Ԭ/ ,T:%'=K+"2ޮ1",N=''<ŪP-"14$+J?)':ʬZ.!#0p7&+GD+'9ϭe0##0a:( +DI-!'8ׯz3%$0Y=*!+BĬN.#(8߲6'$/S@,"",@ɮT1%(79) %0OE-$#,?Ͱ\4( !)7x<+#&0MI/&$->ӳg7*""*7h?-%!(1KƯN3(" &->۶w:,%  $+8_C/(" #)2JʳT6+%! "'.>㹬=.'#!"&,8[H3*%""%*3Iζ[9-'$#%)/?@0*&$%(-9XƳL6,(%%',5IչaUվ]A70.-/3;KŹJ;4/./3:EfνS?82/038AVúdG;52138>M˽N?95347=Id»ZF<8558;9:=>BIVzÿ]MFA?@CIRhiTKFCCEJP_|]PKHGHKQ]xgXOLKKNR\mr_XROOQV]ij_ZXWX[_i{tjd`__cgmx~xutuvxz|~Ź8')S&<*3.-6(?$ȝS 럔!N%>)5..5)>%ŝN!ߟ S$?)6-.3*<&L"ڟ Y$B(8-/2+;'I#ԟl _$F(:,12,:(F$ϟa  j$I(<,31-9)D&͟[ "|$L(>,50.9+B'˟V!#$ O(?,7008,A(ɟR!%䣗%"V(C,:028-?*ǠO"'ݤ%#[)!G,<058/? +ơM#(٤p&%b)#J- >1781?!-ŢL$*֥g''l*%M-"@2 :8 4?"/ĤK%,ӧ`()z+'Q.%D3"<9!!6?$1ĥJ'.Ѩ])+,)W/'H4!%>:##9?&"4ħJ(!/ϩ[+-묟- +\0")L5$(B;&&<@(%7ũJ*$3ϫY,!#/殢/#".b3$!,O7&!*F<( !)?B*!!(;ƫK,#!'7ϭX.$!&3⯥x1&"%0j5'"%.T9)#%-J>+$$,CD,%$+>ȭL.&%*:ЯX1'%)7ನo4)%)5r8*&)2Z<,'(0N?-((/HîF/)(.BʰM1*)->ҳY5+)-;߶l8,),9|;-*,7_>/+,5SC1,,4LDzJ3,,3G̵O6--2Cո[9.-1?ຯk<0.1=?2.0538G㿶l@748DøE958BlǺI;68A_˼M=89?YϾR?99?TZB;:?PļaE<;?NǽmI>=q&/-(ݤ9!GQ#4*+ˢ4$UE!:(./'~= @b&1-*֥8#KM$7*,ȣ3&]C" =(//)꧚< "EZ&5-+Х8%OK$ :+.Ƥ3(iA#"?t)2/+ߨ5%%5խ>)".]O-! +D3%'9̬<($2|I,""-Ll1% *>Ǭ:( '6౥D,#%/VZ0%#,C¬8)!"):հ@,# !'3gP/&!!%.J7)"!$,>ͯ>,%!#*8󶩣K/'##(2Rg6*$#'.Dɯ=,&#&,<߶H/($%*6^Z6*&%)1Jư<-'&(.?ֶE0)&(-:pS6+('+5Qı{<.)(*2FжC1+(*/>N6-)*.9[²f[˹uC70/3;N׽K:3029HøV>6238Be˻iD9437?VտK<657=MźT@967>@I\¿WIA?AHW`MFBCHSqoTJFEIPe[NIHJP_eTMKLP]|o[RNNS\ocYTSV]kl_ZYZ_jvib_`el{~rnlmpv|~ \ No newline at end of file diff --git a/SOUNDS/TONES/NBCquick.ulaw b/SOUNDS/TONES/NBCquick.ulaw new file mode 100644 index 0000000..e6c8e8e --- /dev/null +++ b/SOUNDS/TONES/NBCquick.ulaw @@ -0,0 +1 @@ +;;)$?>$1˧i+)T5 ":G'-ݪ.&G:# 4ĦW)+e2$>A%/Щ,)N8""8M(-/'C>% 4ʨa,+[5"%=G(/ګ/)K;%#8ĨT+.q4"(BB("4ϫu. ,U:%'**>ȬV/#&49("-JG-" *;ӯm4'&3]>+"#-DǮP1&!*:嵨:*" '2RF/&%-@ϲ_7*##+9o?.&!")2LǰO4*# "'.?ݸ<-'"!"&,9]G3*%""%*3I϶[:-($#%)/>B2+&%%(.9UɵO8.)&&(-5Hۼn?2,)'),2?kĵJ8/+)),0;Qл[>3-+*,/8H¶G90-,-/6A`̻S>5/-./5>PiF:3//05=>CJXÿ[MGBABEKVmiVMIGGIMVf}rnnpy~Ź7'*T%=)5-.3*<&I"Ԟl`#G';+2/-6)?%ǝO!។!U%B(8,02,:(E%͞[!#M'>+6./5+=(ÞK$֠l"!c%I)=-52/9+B(ɟR!%㣗%"X(E+;/56/=,H!)ϣ]$&(#Q+!C.;35:/B",ȣO%*ڦn('g+%M.#B2!;8  6>#1äH&.ΧX(+誝+)].(L2 &B7#$<=%#7D'"3ɩO*!/ثc, !-/" ,Y3$ *K8& )C<( (=B*! ':ǫK," &6ЭX.$!&3ᯥs1&"&1m5'#%/W9)$%.L=+%&-FC-&&,@ƮJ/'&,=ίS1)'+;ڳa5*(+88,(+7h<-)+5X?/*,4O°E1,,3JȳK4-,2FζR7.-2Cع]:/.2@估n=2/2>@4/3=gõE714=\ȸJ93587=Nڿ^B:9=LĻjF<:>KȽ{J><>Ky̿NA>?KlÿTF@BKeZJDELa_MHHM_m\XY_mɻM."&E[$1*)͢4"QE 9'-.&쥘: CU#3**ˢ3$WC ;'.-(ᥘ9!GP#5*,Ȣ2%]A =z'0-)ۥ9#JN$7*-ǣ2'g@!!?k(3.+צ9%NL% :+/Ƥ3)s?#$Cb)6/-Ԩ:!(SK'#=,2Ʀ4 ,@%'H]*#90/Ҫ;$+ZK)'@.#6ƨ6# .쭟A(*M[,'=3##4Ѭ<'!.`L+*F0#':ȫ9'$3篣D+ ".R[/$!+A6' (9ӯ?+"&2jM.%$.Kx5(! #,?ʮ<+#!#*9崨G.&"#(3Y[4)$#'/Hů;,&$&->մC/(%&,9tP4*&&+5R¯q:-('*1FεA0*(*/>庮L5,)*.:`]:.+*-7O˶@2,+-5FڻJ7.,-3@~W<1..2=[ɸoA5//2;NԽI:2029I·S>6239DkʻcD9559AZӿK=869?QƼSA;9:?M̿_H>;=@I]¾WIB@BIX`NGDEKVwnVNKMQ\ovux \ No newline at end of file diff --git a/SOUNDS/TONES/Nextel.ulaw b/SOUNDS/TONES/Nextel.ulaw new file mode 100644 index 0000000..aaa2369 --- /dev/null +++ b/SOUNDS/TONES/Nextel.ulaw @@ -0,0 +1 @@ +%'L >)$ 7-"!00!Ο",7 {$)?M'&N>)$ 7,"!00!Ο",7 |$)?M'&N>)$ 7,"!00!Ο",7 |$)?M'&N>)$ 7,"!00!Ο",7 {$)?M'&N?)$ 7-"!00!͠"-1.]ipx}}{zzzz{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~}}|{zyyyxoӢ&'M >)$ 7,"!00!Ο",7 |$)?M'&N>)$ 7,"!00!Ο",7 |$)?M'&N>)$ 7,"!00!Ο",7 {$)?M'&N>)$ 7,"!00!Ο",7 |$)?M'&N>)$ 7,"!0/!П#+Hmuuuuvwyz{}~~}}}}~~~~~~~~~~~~~}~~~|{zyzzz|~{wqmhaY;5'&M >*$7,"!00!Ο",7 ~$)?M'&N>)$ 7,"!00!Ο",7 {$)?M'&N>)$ 7,"!00!Ο",7 |$)?M'&N>)$ 7,"!00!Ο",7 {$)?M'&N?)$~ 7-"!00!͠"-1 \ No newline at end of file diff --git a/SOUNDS/TONES/OverHere.ulaw b/SOUNDS/TONES/OverHere.ulaw new file mode 100644 index 0000000..0f3435f --- /dev/null +++ b/SOUNDS/TONES/OverHere.ulaw @@ -0,0 +1 @@ +ۭ|,!!,~,!!,,!!,~,!!,~,!!,~,!!,,!!,~,!!,,!!,,!!,~,!!,,!!,,!!,,!!,,!!,~,!!,,!!,~,!!,~,!!,,!!,,!!,,!!,~,!!,,!!,~,!!,~,!!,,!!,~,!!,,!!,,!!,~,!!,},!!-[y{||}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}||{{zwnҦ-,%!;;!%,,%!;;!%~,,%!;;!%~,,%!;;!%,,%!;;!%,,%!;;!%,,%!;;!%,,%!;;!%~,,%!;;!%,,%!;;!%,,%!;;!%~,,%!;;!%~,,%!;;!%~,,%!;;!%},,%!;;!%,,~%!;=1`lsx|~}||{{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}|{{zzztڥ\"&¡8 -+ >$#ߢC */4'!P_"&à8.+ >$#ߢC */4'!P_"&à8.+ >$#ߢC */4'!P_"&à8.+ >$#ߢC */4'!P_"&à8.+ >$#ߢC */4'!P_"&à8.+ >$#ߢC */4'!P_"&à8.+ >$#ߢC */4'!P_"&à8.+ >$#ޢC */4'"Gou \ No newline at end of file diff --git a/SOUNDS/TONES/PianoChord.ulaw b/SOUNDS/TONES/PianoChord.ulaw new file mode 100644 index 0000000..3eb4e87 --- /dev/null +++ b/SOUNDS/TONES/PianoChord.ulaw @@ -0,0 +1 @@ +û=-).HVKg[3&"+"31,ƨqIU<)"&?/$V#ULLJ.$#0OO(6XI_d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡqA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoT0%#-ԣ9-.eIX:("(F+'F%mKNE,#$4B%;SJg[3&"+"31,ƧqIU<)"&?/$V#ULLJ.$#0OO(6XI`d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoT0%#-գ9-.eIX:("'F+'F%mKNJ2+->Ȯ\=;C\ \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#1.ulaw b/SOUNDS/TONES/RC210#1.ulaw new file mode 100644 index 0000000..156268b --- /dev/null +++ b/SOUNDS/TONES/RC210#1.ulaw @@ -0,0 +1 @@ +L<9>VͽbYod>/,3𬞛&31,ƧqIT<)"&?/$V#ULLJ.$#0OO(6XI_d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡpA*2]I\u7'")O(*='ߪJOA+#%7:Ϝ"@PJoS0%#-գ9-.dIX:("(F+'F%mKNE,#$4B~%;SJg[3&"+"31,ƨqIU<)"&?/$V#ULLJ.$#0OO(6XI_d5'"*_%.7*ϩJQ>*#&;4! !INKN/$#.ɡqA*2]I\t7'")O(*=(ߪJOA+#%7:Ϝ"@PJoS0%#-գ9-.eIX:("(F+'I",qW[WA;=M־hLJQh \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#10.ulaw b/SOUNDS/TONES/RC210#10.ulaw new file mode 100644 index 0000000..4988222 --- /dev/null +++ b/SOUNDS/TONES/RC210#10.ulaw @@ -0,0 +1 @@ +aLEJoɼS929[N/)-LO*!&?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)[?%(ME&&EM(%?[)$;+ #7, "31&'7̭<..<۹J;@Løk( (=D*! '9ǫK+!%5ϬW-"$1߮o/##/o1$"-W5%!+K9' !*C=( (>B)! ':ƪI+!&6ͬS-"%2ۭg.##/1$"-[4%",M8&!*E<( )?@) ';ĪG+!&7˫O,"%3׭_.#$0柺0$#._3%",O7&!+G;' )@?) (<©E*!&8ɫM,"%4ӭ[-"$0箣/##.g2%"-S6&!+I:' !)A>( (=C*! '9ǫK+!%5ϬX-"$1߮o/##/o1$"-W5%!+K9' !*C=( (>B)! ':ƪI+!&6ͬS-"%2ۭg.##/1$"-[4%",M8&!*E?-'(/HDzO:45=PľiVSXdw \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#2.ulaw b/SOUNDS/TONES/RC210#2.ulaw new file mode 100644 index 0000000..0859c9b --- /dev/null +++ b/SOUNDS/TONES/RC210#2.ulaw @@ -0,0 +1 @@ +t|aLHVֿN97GɲD.,=='&88"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48##7=**=E12EʷO>?SfZ \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#3.ulaw b/SOUNDS/TONES/RC210#3.ulaw new file mode 100644 index 0000000..4b9dc1d --- /dev/null +++ b/SOUNDS/TONES/RC210#3.ulaw @@ -0,0 +1 @@ +t|aLHVֿN97GɲD.,=='&88"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48##7=**=E12EʷO>?Sf[cx~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~aLHVֿN97GɲD.,=='&88"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48"!48##7=**=E12EʷO>?Se\ \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#4.ulaw b/SOUNDS/TONES/RC210#4.ulaw new file mode 100644 index 0000000..9423a69 --- /dev/null +++ b/SOUNDS/TONES/RC210#4.ulaw @@ -0,0 +1 @@ +muG13ml˴1"Y箠'Kcϟ#H9˛&K7+ʘ*$VN&!Ζ./6ٖ6*R,@?'\RȨ$N#I֢#FB͜%HG.̙)Nu+%Η-*g=ٖ3%=/򗒥<4*]K~&Nf$Hާ$ETО%E5͚(J3(Ϙ,%XH#ؗ0 359-i,_EH(OY%H$C֡%C=Ϝ'F>,Й+!O])#ؗ/,o;뗐7'D/b?9¾*OOګ&Hp%Cݥ%AKӞ'C[1Қ*J/&ؘ-'[D!闐4#73e=/,QJS(H_&B誛%?lؠ&@9Ԝ)E:*ؙ,"OS' 瘐1.9i:*M.RD>*IŲ'A&>ݤ&>Cם(AK.ٚ+J,$嘐/)_?l7%;2U?3ξ,INi(Ah'>樚'=X۟(>5ۛ+D5(噐.$RL$p5 08W=,\/MNL4!Niֻ?-1[my~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~d_E5<Ȭ=?_/&:X)/^L'!]-'_K'')d-6\.8Y+?Iɝ˥h#04_#ΙDѮ4Y@/H*@4ߖ-"8/$ 72!3G<9)n(OI5 ȰGP)n+=ઞj"O56H<)Ǖ1/$"&*YO#5>&RM&!ח'%i]+,)4>?0B&L\ŞK',>Qͫ!;ea$.C=:<%85Õ(34)59&=9=D.՚#fl<!S=,&MﭠZK'@0B=3),+Zh&(!&LR&?4#OZ*&Ö"$02)=J55Rڠ!qŠ£=+l̩)TF|4GO)h)8<I3 17!#/9#.4A*J/@]5ǚܮF#b31"霞fH?,W8Ͼ/d<4f3#,9:\n?7JqJRp{n|~~~~~~~~~~~~~~~~~~~~~~ZPeyN@[<'-ﶾ̮@C6,Is-2/KlL-<-N-*C;WƠ%M2`-#3IϠ9/.>@̼4ԕ!,7Q$͜K<F(+d0?,OZJ1/*rP,5;9n(=+aI)-h. \$-`F&'()/lF$!ʖ#o%.3I"X! ʮZ,d59P":)K7;=@k"-4Ob?O-JL#%IBL8%\`&<@0ɛ毸)!:;+Ԭ.ݕ'!96'G%֡ͩ7A-$:{3#7-N˧H/8'=1-=;̥&F+B1&1jӤk/K3,Q褚7^7̕)E[#ř>=N%'-5'<|5&=$?3.诧,-$MM''*OW-*)HC%/*ۤʫ.3F͠&9#2{?*8*ٚ:S<ƕ(s'3eM.ݖ'%A4+Λ#L8++0X尮6啑,Yঝ!A +cT.62O6>H"񘒭"nɭ"#=KT8K( 8?.}[0M1)=?^@J &{T&P75?;53vW'L﴾(T=jƤF8*/X3T-<;"'X4SθV#?/!.ӼvƷ=-8εKPn \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#5.ulaw b/SOUNDS/TONES/RC210#5.ulaw new file mode 100644 index 0000000..88c7cce --- /dev/null +++ b/SOUNDS/TONES/RC210#5.ulaw @@ -0,0 +1 @@ +\I>82/--.06>Oܿ@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@~I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1?I6,'"  "',6I׻?1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻?1*%"!"$(,4?\ϾiQIDBCEIMU^jxUE=99,$ %.HE-% $,AɮM/& #+<ұZ2'!")8崨{6("!(5i:*"!'1T>+# %.JC-$ $-BǮK/& #+=ϰW2'!"*9߳o5(!!(5o9*"!'2W=+# &/KB-$ $-CƮJ.% #+>ίT1'!"*:ܳi5(!"(6{8)"!'2Z<+# &/MA,$ %-EĭH.% $,>̯Q0& #*:ٲc4(!")78)"!'3];+# &/N?,$ %.FíG.% $,?˯O0& #*;ֱ^3'!")77)"!(4a;*# &0P?,$ %.H­E.% $,@ɮO4*&&*2DۼiF<99=EUTF??HlɺB2--6V;)"#+F<( )??) ';êG+!&7˫O,"%3׭_.#$0ﯣ0$#._3%",O7&!+G;' )@?) (( (=C*! '9ǫK+!%5ϬW-"$1߮o/##/o1$"-W5%!+K9' !*C=( (>A)! ':ŪI+!&6ͬS-"%2ۭg.##/1$"-[4%",M8&!*E<( )?@) ';êG+!&7˫O,"%3׭_.#$0ﯣ0$#._3%",O7&!+G;' )@?) (( (=C*! '9ǫK+!%5ϬW-"$1߮o/##/o1$"-W5%!+K9' !*C=( (>B)! ':ƫM/('->ֶ_=54:IȿzYSV_q \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#6.ulaw b/SOUNDS/TONES/RC210#6.ulaw new file mode 100644 index 0000000..ecd4ae0 --- /dev/null +++ b/SOUNDS/TONES/RC210#6.ulaw @@ -0,0 +1 @@ +\I>82/--.06>Oܿ@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻@1*%!!$(.;WɶW;.($!!%*1@I6,'"  "',6I׻~@1*%!!$(.;WɶW;.($!!%*1@O>60.-./38>J\oOB<99>Kķw=/)&',9n9*"!'1V=+# %/KB-$ $-CƮJ/% #+=ίU1'!"*9ݳk5(!!(6w9)"!'2Y<+# &/LA-$ %-DŭI.% #,>ͯR1& "*:ڲe4(!")68)"!'3\<+# &/N@,$ %.FíG.% $,?˯O0& #*;ײ_3'!")7ﵨ7)"!'3_;*# &0O?,$ %.G­F.% $,?ʮN/& #+<Ա\3'!")8鵨6)"!(4e:*" &0R>,# %.ID-% $-AȮL/& #+<ѰY2'!")9䴨w6(!!(5k:*"!'1U=+# %/KK6.,,0;PֿdNHGJP\n`KA>BSؾS8.,0@вP.%"&5ӭ[-"$0箣/##.g2%"-S6&!+I:' !)A>( (=D*! '9ǫK+!%5ϬX-"$1߮p/##/o1$"-W5%!+K9' !*C=( (>B)! ':ƪI+!&6ͬS-"$2ܭg.##/~1$"-[4%",M8&!*E<( )>@) ';ĪG+!&7̫O,"%3ح_.#$0柺0$#._3%",O7&!+G;' )??) (<©F*!&8ʫM,"%4ӭ[-"$0箣/##.g2%"-S6&!+I:' !)A>( (=D*! '9ȫK+!%5ϬW-"$1߮o/##/o2&"%0Z>/,/:YǸQB?BMe \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#7.ulaw b/SOUNDS/TONES/RC210#7.ulaw new file mode 100644 index 0000000..964db4e --- /dev/null +++ b/SOUNDS/TONES/RC210#7.ulaw @@ -0,0 +1 @@ +L;:JɲR0+2u:-/DȶcKOmR?I57HZnȷ<)&4QH&"M?&$Y H:*,>Ӽ}A0.@A!#쟗"*7)<l."&<_GMlQ?J57HYnȷ<)&4QH&"M?&$Y H:*,>Ӽ}A0.@A!#쟗"*7)<l."&<_GMlQ?J57HZnȷ<)&4QH&"M?&$Z H:*,>Ӽ}A0.@A!#쟗"*7)<l."&<_GMlQ?I57HZnȷ<)&4QH&"M?&$Z H:*,>Ӽ}G76HįM.*3;/2IʹbMOe \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#8.ulaw b/SOUNDS/TONES/RC210#8.ulaw new file mode 100644 index 0000000..e967a33 --- /dev/null +++ b/SOUNDS/TONES/RC210#8.ulaw @@ -0,0 +1 @@ +Q?98;E[ZNS羮.;?%) 'ע.#/LKAJ׳(?;$*>TCDk1.[)&5^gGAPȮE"$0 ".HMAH޵*:?%) 'ע.#/LKAJ׳(?;$*>TCDk1.^.%#'.>goVRaŻdJCCJVl \ No newline at end of file diff --git a/SOUNDS/TONES/RC210#9.ulaw b/SOUNDS/TONES/RC210#9.ulaw new file mode 100644 index 0000000..c2e5553 --- /dev/null +++ b/SOUNDS/TONES/RC210#9.ulaw @@ -0,0 +1 @@ +RHLǽ>6<4,2-%,((((((((((((((((((((~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((~(((((((((((((((((((((((((((((((((()!+.(07/:C=H^_p~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^KHYҿK87JŲ?--@:'&;4!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"84!"85#$;;)+@A03IǷM>@We]h}~~~~~~~~~~~~~~~~~~~~~~~wPHMŽk=6=踯c2,4ந^,%-ܩZ'*٧Z'*ڧY'*ڧZ'*ڧZ'*ڧY'*ڧZ'*ڧY'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*٧Z'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*٧Z'*ڧZ'*ڧZ'*ڧZ'*٧Z'*٧Z'*ڧZ'*ڧZ'*ڧY'*ڧY'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*٧Z'*ڧZ'*ڧZ'*ڧY'*ڧZ'*ڧY'*ڧZ'*ڧZ'*ڧZ'*٧Z'*ڧZ'*ڧZ'*ڧZ'*ڧZ'*٧Z'*ڧZ'*ڧY'*ڧZ'*ڧZ'*٧Z'*ڧZ'*ڧZ'*ڧZ'*ڧY'*ڧZ'*٧Z'*ڧZ(!,ܫ^-(2బd6/;軶lA>Ix]`s \ No newline at end of file diff --git a/SOUNDS/TONES/SatPass.ulaw b/SOUNDS/TONES/SatPass.ulaw new file mode 100644 index 0000000..6057016 --- /dev/null +++ b/SOUNDS/TONES/SatPass.ulaw @@ -0,0 +1 @@ +Ҧ-,%!;;!%,,%!;;!%~,,%!;;!%~,,%!;;!%~,,%!;;!%~,,%!;;!%,,%!;;!%,,%!;;!%~,,%!;;!%,,%!;;!%~,,%!;;!%,,%!;;!%,,%!;;!%~,,%!;;!%,,%!;;!%~,,|%!;; &Ruyzz{|}}~~~~~~~~~~~~~~~~~~~}}||{yq֩(((()())~)))()()((())~)()())~))~)())~))~)())~))~))~)()()))())~)()()()))()()()())~))~)(((((qyz{||}}~~~~~~~~~}|zvkçB'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B'$5§B' #7 \ No newline at end of file diff --git a/SOUNDS/TONES/ShootingStar.ulaw b/SOUNDS/TONES/ShootingStar.ulaw new file mode 100644 index 0000000..7d7849f --- /dev/null +++ b/SOUNDS/TONES/ShootingStar.ulaw @@ -0,0 +1 @@ +̝y~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||~u󝑑yf'1d#;D J8%/*Ƞ*.%7L!B<#]2(Ѣ,,'3Y#=@!N6&㣗.*ğ)/v$9H F:$k0)̡+-&5Q"?>"U4'٣-+(1c#;D J8%/)Ƞ*.%7L!B<#]2(Ѣ,,'3Y#=@!N6&㣗.*ğ)/w$9H F:$k0)̡+-&5Q"?>"U4'ܢ,+"M.)ɠ*.&6M!A<#[3'Ӣ,,'2[#>"S5&ܣ-+(0g$:E I8%/)ɠ*.&6M!A<#[2'Ӣ,,'2[#>"S4&ۣ-+(0g$:E I9% \ No newline at end of file diff --git a/SOUNDS/TONES/Stardust.ulaw b/SOUNDS/TONES/Stardust.ulaw new file mode 100644 index 0000000..f55e687 --- /dev/null +++ b/SOUNDS/TONES/Stardust.ulaw @@ -0,0 +1 @@ +M:24Bα." (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ~-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (EE( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-~6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ~-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-~6$$6Ĩ1((1N´\JHWI96AӲ6&$/ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;}+ #7, "3.!!0Ŧ0!!.ͨ5&&2ಬJ:;IqGJyA*$2D-ee0'57 gOL/ۡϬ.š:N3 &$5rH()[!Jh49CHeĤ;VPǭ:ߚ/-KC"ǘ#&H;(,:DŠg8볣L>>?ʻJN,"-T^.""6;3՟.ݫ.V䱭}3:,>?ʻJN,"-T^."&#=IC䶮IH^ \ No newline at end of file diff --git a/SOUNDS/TONES/Target.ulaw b/SOUNDS/TONES/Target.ulaw new file mode 100644 index 0000000..d63504d --- /dev/null +++ b/SOUNDS/TONES/Target.ulaw @@ -0,0 +1 @@ +֩(((())~))~))))~)()()()())~)))()()())~)())~))~))~)())~))~)()())))~)())~))~)()()())~))~))))~)()()())~)()())~)()()())~)())~))~)()()())~)()()())~))~)()())~)())))~)()()())~)())~)())~)()())~))~)())~)(~))~)()()()()()())~))~))~)()()())~))~)())~))~))~)()())))~)()())~))~))~)())))~))~))~)()()()()())~)(~))~)()())~)())~)()())~)()))())~)()()((())~))~))~))~))~)())~)()(~)())~)))))()())~))~)()()()))()())~))~)))()()()())~)))))((()())~)))())~)())~))~)())~)(~))~)()()(~)()()()()()())}~))~((((((v) \ No newline at end of file diff --git a/SOUNDS/TONES/TelRing.ulaw b/SOUNDS/TONES/TelRing.ulaw new file mode 100644 index 0000000..73bd44c --- /dev/null +++ b/SOUNDS/TONES/TelRing.ulaw @@ -0,0 +1 @@ +˼P/#%>,0̨<&-U^2'  &.E˳H7/..3;Joa_hdPF?==@Lxʻ[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U]2'  &.E˳H7/..3;Joa_hePG?==@Lxʻ[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U^2'  &.E˳H7/..3;Koa_hdPF?==@Lxʻ[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U^2'  &.E˳H7/..3;Koa_hdPF?==@Lx˻[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U]2'  &.E˳H7/..3;Koa_h~dPF?==@Lx˻[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U]2'  &.E˳H7/..3;Koa_hePF?==@Lxʻ[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U^2'  &.E˳H7/..3;Koa_hePF?==@Lxʻ[;.(&&*3KŮ7'%5խ=%(L](4/(B"!=,0̨<&-U^2'  &.E˳H7/..3;Joa_hdPF?==@Ly˻[;.(&&*3KŮ7'%5խ=%(L](4B2..32-.6O~1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1~I,"",I1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1I,"",I1%!(;ɬ;(!%1I,"",I1%!$,?϶QDCITk \ No newline at end of file diff --git a/SOUNDS/TONES/WX-CT.ulaw b/SOUNDS/TONES/WX-CT.ulaw deleted file mode 100644 index 4378dbb..0000000 --- a/SOUNDS/TONES/WX-CT.ulaw +++ /dev/null @@ -1 +0,0 @@ -M:24Cΰ." (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DE( !-6$$6Ĩ-! (ED( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (ED( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ũ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ-! (DD( !-6$$6Ĩ~-! (ED( !-6$$6Ũ-! (DE( !-6$$6Ĩ1((1N´\JHWI96AӲ6&$/ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ0!!.ͨ3" ,۩7# +;$)\>%(NE&&FM(%?[)$;|+ #7, "3.!!0Ŧ/!!.ͨ5&&2ᲬJ:;IqGJyA*$2D-ee0'67 gOL/ڡϬ.š:N3 &$5sH()\!Ki49CHeĤ;VPǭ:ߚ/-KC"ǘ#&H;(,:DŠg8볣L>>?ʻJN,"-T^.""6;3՟.ܫ.V䱭}3:,>?ʻJN,"-T^."&#=IC䶮IH^ \ No newline at end of file diff --git a/SOUNDS/TONES/Waterdrop.ulaw b/SOUNDS/TONES/Waterdrop.ulaw new file mode 100644 index 0000000..6582278 --- /dev/null +++ b/SOUNDS/TONES/Waterdrop.ulaw @@ -0,0 +1 @@ +ⷨ6)"")66)""(66)""(6~6)"")6~6)"")66)""(6~6)"")66)"")66)""(6~6)""(66)"")66)"")66)"")66)"")66)"")66)""(6~6)"")66)""(6~6(""(6~6)"")6ڮ?*"$/YV.$"*A6' '7֮?*"$/YV.$"*A6' '7֮?*"$/YV.$"*A6' '7֮?*"$/YV.$"+A6' '6Ѭ>( !+Ll."&7Ǫ:&"-]R,! '<5%#/G*! )B0$$3Ҭ>( !+Lm."&7Ǫ:&"-]R,! '<5%#/G*! )B0$$3ϩO* "/ϪO* "/ϪO* "/ϪO* "/ϪO* "/ϪO* "/ϪO* "/ϪO) "/ϪO* "/ϪO* "/ϩO) "/ϩO* "/ϩO* "/ϪO* "/ϩO* "/ϪO) "/ϪO* "/ϪO* "/ϪO* "/ϪO* "/ϩO* "/ϪO) "/ϪO* "/ϪO* "/ϪO* "/ϪO* "/ϪO* "/ϩO) "/ϩO) "/ϪO* "/ϪO* "/ϩQ) !<=-&!!%,9i=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&! %,9h=-&!!%,9i=-&! %+;B \ No newline at end of file diff --git a/SOUNDS/TONES/Whippoorwhill.ulaw b/SOUNDS/TONES/Whippoorwhill.ulaw new file mode 100644 index 0000000..0901ecc --- /dev/null +++ b/SOUNDS/TONES/Whippoorwhill.ulaw @@ -0,0 +1 @@ +Ϥ$#t$#i$#`$#[%"W%"S%"O&"N&"K&!I&!H'!F'!D(!B(!@( ?) >) =) <* ;* :* 9+ 8+ 7,6,5,4-3-2.2.1.0////0.1.2.3-3-4,5,6+7 +8 +9 *: *; *< )= )> )? (@ ( C )h~}|||}}~~~~~~~~~~~~~~~~~~~~~}||{yvjɦQ&*اc()񨟨)(^+&O, %G. $?0 #<3!"87"!4;#!0>$ .E% -ɥM&+ӧ[')樟{)(i*'T, %J- $B/ #=2!"95""59"!2=# /B$ -ƥJ&,ΦU'*ݧi(){*'Z+&M- %E. $>1!#;4!"78"!3;# 0?$ .åG% ,˦O&+֧_()𨠨gMjpuy|~~~}}}}~~~~~~~~~~~~~~~~}|{zwmͩJ)#3Ũ@'$8;%&<6$'C2# )M/" +^,!!-ꫠ[* "/ѪK) #3ƨA'$7<%%<7$'B2# )L/" +\-!!-]+ "/ӪL) #2ǨB'$7<&%;7$'A3# )K/" *Z-!!,_+ ".ժM) #2ȨC'$6=&%;8$'@3#(J/" *X-!!,_+ ".֪ \ No newline at end of file diff --git a/SOUNDS/TONES/XPError.ulaw b/SOUNDS/TONES/XPError.ulaw new file mode 100644 index 0000000..a44d064 --- /dev/null +++ b/SOUNDS/TONES/XPError.ulaw @@ -0,0 +1 @@ +J=MòD,0ϩ'!>+$FJ!.˔*$]87h%)/ DD /ϕ*&j79\%+."IA!2ז*(7 <V&-Ö/%N@"5+*7# ?R'/ə/(U@"%9,-8'#EO!)4Λ2,!]A&(=z".1!ĝ:+&LO&,:!֟#5/&i D++D"l'28&ˡ% =/+S##P, 0?"'ߥ)":7#+ťv(%H1$0K')i.&8>',ҩ,(B8(1é\++U4)8I+.꭬1+@?,3έ/-N;-9ĮV/1j8.@J06޳72LC2<δh76]?5CɶV8;>9MŹN:@ݼ?=ZļK=IԾeABoJAR\EJLH^ZKSySSpbZfvehroz}{}~K:8IƯK+%,*18ښ+1Й,/̘-.ǘ.-Ø/,1+4+6*8) j;(!]=(#U?'$ND'%KH&'GL&(DQ&)AY%+?c%,=r%-<🗜%/; 㟘%0:"۟%39#ՠ&59%Р&78'͡&:7(ˢ'<7*ʣ(!>7 +ȣ(#A7!-ǥ)%D7" .Ʀy* &H8$"0ŧl+"(K8%$3Ũe,$*N9'&5ũ_-&,S:((8ū].(.X;**:Ŭ[/*/]<,,=ƮZ1,3b=..?ǯY4.6i>/1CɳY709o@35H˶Z94=xD79Lͺ[=8@H;=PϽ]@=FƽL?BW_FBLPFI]dMKT\SWjqa_irnq{~}} \ No newline at end of file diff --git a/SOUNDS/TONES/XPok.ulaw b/SOUNDS/TONES/XPok.ulaw new file mode 100644 index 0000000..860a8a6 --- /dev/null +++ b/SOUNDS/TONES/XPok.ulaw @@ -0,0 +1 @@ +½G6-)'(,8f2 &L/#C2!=69; 5?#0äG%.̦Q',٨e)*+([-'M/%E4$>8!";<#!7A% 3ŦI'0ͨS).۪e+-.+^0 *P4")I8$(C;&'>?(&;©F*%9ɫM,%6ѭW.!$4ޯh0#$23%$0d7'$/W:) $/O>+"$.JB-#$.FŮH.%%-CʯM1'! %-@гU4)#!"&->ٶ^7+%"#'.=幬m:-'$$(.<=/)&&).OùbF;6349?OȽlJ>978;APvNB=;;>ERžUHA>>AHTy[MHDDGMXsbUNLKMS]rma\[[^cly|yvwxz|}P<6=>(#+f7N4>68<1F.U+(%" !$˙'ߛ*`-K0@6:<4D/P,s)'$ "" %ɛ(ڜ+l-O1D6<<7D2O.h,* '"%%#'!ɝ*؞,}/W3I8@=;E7N2a/!-$+&)((*&ʟ-%ס/$񣚜2"^7!O; G?  ?H!H}ȾXC?Ir]GBJmbJFLiiNINhoSMQhw[UZl~g`ersorz~}} \ No newline at end of file diff --git a/SOUNDS/TONES/YellowJacket.ulaw b/SOUNDS/TONES/YellowJacket.ulaw new file mode 100644 index 0000000..e1aa3ee --- /dev/null +++ b/SOUNDS/TONES/YellowJacket.ulaw @@ -0,0 +1 @@ +žI7-'" #'-:[IJH4+%!"&,6M̶Q8,&"!%*3Eٺc<.(#  $)/?@0)$  #'.;]òG4+%!"&,7N˶O7,&"!%*3F׹_;.'#  $)0?ッ?0)$  #'.;_±F3*%!"&,7OʵN7,&"!%+4Gչ];.'#  $)0@뽮?/)$  #(.AJWmF7//9b4%",M8&!*E<( )?@) ';êG+!&7˫O,"%3׭_.#$0ﯣ0$#._3%",O7&!+G;' )@?) (( (=C*! '9ǫK+!%5ϬW-"$1߮o/##/o1$"-W5%!+K9' !*C=( (>B)! ':ŪI+!&6ͬT.%%+:⹯uKEHSj \ No newline at end of file diff --git a/SkyControl.py b/SkyControl.py index b807b70..b687943 100644 --- a/SkyControl.py +++ b/SkyControl.py @@ -7,15 +7,69 @@ # It's designed to enable or disable certain features of SkywarnPlus from the command line. # It is case-insensitive, accepting both upper and lower case parameters. # -# Usage: python3 SkyControl.py -# Example: python3 SkyControl.py sayalert false +# Usage: SkyControl.py +# Example: SkyControl.py sayalert false # This will set 'SayAlert' to 'False' in the config.yaml file. +import os +import shutil import sys import yaml import subprocess from pathlib import Path +# Define a function to change the CT +def changeCT(ct): + tone_dir = config["CourtesyTones"].get("ToneDir", os.path.join(str(SCRIPT_DIR), "SOUNDS/TONES")) + ct1 = config["CourtesyTones"]["Tones"]["CT1"] + ct2 = config["CourtesyTones"]["Tones"]["CT2"] + wx_ct = config["CourtesyTones"]["Tones"]["WXCT"] + rpt_ct1 = config["CourtesyTones"]["Tones"]["RptCT1"] + rpt_ct2 = config["CourtesyTones"]["Tones"]["RptCT2"] + + if ct == "normal": + src_file = os.path.join(tone_dir, ct1) + dest_file = os.path.join(tone_dir, rpt_ct1) + shutil.copyfile(src_file, dest_file) + + src_file = os.path.join(tone_dir, ct2) + dest_file = os.path.join(tone_dir, rpt_ct2) + shutil.copyfile(src_file, dest_file) + return True # Indicate that CT was changed to normal + elif ct == "wx": + src_file = os.path.join(tone_dir, wx_ct) + dest_file = os.path.join(tone_dir, rpt_ct1) + shutil.copyfile(src_file, dest_file) + + src_file = os.path.join(tone_dir, wx_ct) + dest_file = os.path.join(tone_dir, rpt_ct2) + shutil.copyfile(src_file, dest_file) + return False # Indicate that CT was changed to wx + else: + print("Invalid CT value. Please provide either 'wx' or 'normal'.") + sys.exit(1) + +# Define a function to change the ID +def changeID(id): + id_dir = config["IDChange"].get("IDDir", os.path.join(SCRIPT_DIR, "ID")) + normal_id = config["IDChange"]["IDs"]["NormalID"] + wx_id = config["IDChange"]["IDs"]["WXID"] + rpt_id = config["IDChange"]["IDs"]["RptID"] + + if id == "normal": + src_file = os.path.join(id_dir, normal_id) + dest_file = os.path.join(id_dir, rpt_id) + shutil.copyfile(src_file, dest_file) + return True # Indicate that ID was changed to normal + elif id == "wx": + src_file = os.path.join(id_dir, wx_id) + dest_file = os.path.join(id_dir, rpt_id) + shutil.copyfile(src_file, dest_file) + return False # Indicate that ID was changed to wx + else: + print("Invalid ID value. Please provide either 'wx' or 'normal'.") + sys.exit(1) + # Define valid keys and corresponding audio files VALID_KEYS = { "enable": {"key": "Enable", "section": "SKYWARNPLUS", "true_file": "SWP85.wav", "false_file": "SWP86.wav"}, @@ -24,7 +78,8 @@ VALID_KEYS = { "tailmessage": {"key": "Enable", "section": "Tailmessage", "true_file": "SWP91.wav", "false_file": "SWP92.wav"}, "courtesytone": {"key": "Enable", "section": "CourtesyTones", "true_file": "SWP93.wav", "false_file": "SWP94.wav"}, "alertscript": {"key": "Enable", "section": "AlertScript", "true_file": "SWP81.wav", "false_file": "SWP82.wav"}, - "idchange": {"key": "Enable", "section": "IDChange", "true_file": "SWP83.wav", "false_file": "SWP84.wav"}, + "changect": {"key": "", "section": "", "true_file": "SWP79.wav", "false_file": "SWP80.wav", "available_values": ['wx', 'normal']}, + "changeid": {"key": "", "section": "", "true_file": "SWP77.wav", "false_file": "SWP78.wav", "available_values": ['WX', 'NORMAL']}, } # Get the directory of the script @@ -47,30 +102,40 @@ if key not in VALID_KEYS: print("The provided key does not match any configurable item.") sys.exit(1) -# Make sure the provided value is either 'true', 'false' or 'toggle' -if value not in ['true', 'false', 'toggle']: - print("Invalid value. Please provide either 'true' or 'false' or 'toggle'.") - sys.exit(1) - -# Convert the input value to boolean if not 'toggle' -if value != 'toggle': - value = value.lower() == 'true' +# Validate the provided value +if key in ["changect", "changeid"]: + if value not in VALID_KEYS[key]["available_values"]: + print("Invalid value for {}. Please provide either {} or {}".format(key, VALID_KEYS[key]['available_values'][0], VALID_KEYS[key]['available_values'][1])) + sys.exit(1) +else: + if value not in ['true', 'false', 'toggle']: + print("Invalid value. Please provide either 'true' or 'false' or 'toggle'.") + sys.exit(1) # Load the config file with open(str(CONFIG_FILE), 'r') as f: config = yaml.safe_load(f) -# Check if toggle is required -if value == 'toggle': - current_value = config[VALID_KEYS[key]['section']][VALID_KEYS[key]['key']] - value = not current_value +if key == 'changect': + value = changeCT(value) +elif key == 'changeid': + value = changeID(value) +else: + # Convert the input value to boolean if not 'toggle' + if value != 'toggle': + value = value.lower() == 'true' + + # Check if toggle is required + if value == 'toggle': + current_value = config[VALID_KEYS[key]['section']][VALID_KEYS[key]['key']] + value = not current_value -# Update the key in the config -config[VALID_KEYS[key]['section']][VALID_KEYS[key]['key']] = value + # Update the key in the config + config[VALID_KEYS[key]['section']][VALID_KEYS[key]['key']] = value -# Save the updated config back to the file -with open(str(CONFIG_FILE), 'w') as f: - yaml.dump(config, f) + # Save the updated config back to the file + with open(str(CONFIG_FILE), 'w') as f: + yaml.dump(config, f) # Get the correct audio file based on the new value audio_file = VALID_KEYS[key]['true_file'] if value else VALID_KEYS[key]['false_file'] diff --git a/SkywarnPlus.py b/SkywarnPlus.py index 3984855..2af8a0a 100644 --- a/SkywarnPlus.py +++ b/SkywarnPlus.py @@ -158,21 +158,6 @@ WS = [ "Freeze Watch", "Dense Smoke Advisory", "Avalanche Warning", - "SkywarnPlus Enabled", - "SkywarnPlus Disabled", - "SayAlert Enabled", - "SayAlert Disabled", - "SayAllClear Enabled", - "SayAllClear Disabled", - "Tailmessage Enabled", - "Tailmessage Disabled", - "CourtesyTone Enabled", - "CourtesyTone Disabled", - "Tic Sound Effect", - "All Clear Message", - "Updated Weather Information Message", - "Error Sound Effect", - "Word Space Silence", ] WA = [ "01", @@ -237,21 +222,6 @@ WA = [ "60", "61", "62", - "85", - "86", - "87", - "88", - "89", - "90", - "91", - "92", - "93", - "94", - "95", - "96", - "97", - "98", - "99", ] # Test if the script needs to start from a clean slate @@ -584,18 +554,18 @@ def changeCT(ct): state = load_state() current_ct = state["ct"] tone_dir = config["CourtesyTones"].get("ToneDir", os.path.join(sounds_path, "TONES")) - local_ct = config["CourtesyTones"]["Tones"]["LocalCT"] - link_ct = config["CourtesyTones"]["Tones"]["LinkCT"] + ct1 = config["CourtesyTones"]["Tones"]["CT1"] + ct2 = config["CourtesyTones"]["Tones"]["CT2"] wx_ct = config["CourtesyTones"]["Tones"]["WXCT"] - rpt_local_ct = config["CourtesyTones"]["Tones"]["RptLocalCT"] - rpt_link_ct = config["CourtesyTones"]["Tones"]["RptLinkCT"] + rpt_ct1 = config["CourtesyTones"]["Tones"]["RptCT1"] + rpt_ct2 = config["CourtesyTones"]["Tones"]["RptCT2"] logger.debug("changeCT: Tone directory: %s", tone_dir) - logger.debug("changeCT: Local CT: %s", local_ct) - logger.debug("changeCT: Link CT: %s", link_ct) + logger.debug("changeCT: Local CT: %s", ct1) + logger.debug("changeCT: Link CT: %s", ct2) logger.debug("changeCT: WX CT: %s", wx_ct) - logger.debug("changeCT: Rpt Local CT: %s", rpt_local_ct) - logger.debug("changeCT: Rpt Link CT: %s", rpt_link_ct) + logger.debug("changeCT: Rpt Local CT: %s", rpt_ct1) + logger.debug("changeCT: Rpt Link CT: %s", rpt_ct2) logger.debug("changeCT: CT argument: %s", ct) if not ct: @@ -614,24 +584,24 @@ def changeCT(ct): if ct == "NORMAL": logger.info("Changing to NORMAL courtesy tones") - src_file = os.path.join(tone_dir, local_ct) - dest_file = os.path.join(tone_dir, rpt_local_ct) + src_file = os.path.join(tone_dir, ct1) + dest_file = os.path.join(tone_dir, rpt_ct1) logger.debug("changeCT: Copying %s to %s", src_file, dest_file) shutil.copyfile(src_file, dest_file) - src_file = os.path.join(tone_dir, link_ct) - dest_file = os.path.join(tone_dir, rpt_link_ct) + src_file = os.path.join(tone_dir, ct2) + dest_file = os.path.join(tone_dir, rpt_ct2) logger.debug("changeCT: Copying %s to %s", src_file, dest_file) shutil.copyfile(src_file, dest_file) else: logger.info("Changing to %s courtesy tone", ct) src_file = os.path.join(tone_dir, wx_ct) - dest_file = os.path.join(tone_dir, rpt_local_ct) + dest_file = os.path.join(tone_dir, rpt_ct1) logger.debug("changeCT: Copying %s to %s", src_file, dest_file) shutil.copyfile(src_file, dest_file) src_file = os.path.join(tone_dir, wx_ct) - dest_file = os.path.join(tone_dir, rpt_link_ct) + dest_file = os.path.join(tone_dir, rpt_ct2) logger.debug("changeCT: Copying %s to %s", src_file, dest_file) shutil.copyfile(src_file, dest_file) diff --git a/config.yaml b/config.yaml index afd1f42..4fb4b25 100644 --- a/config.yaml +++ b/config.yaml @@ -90,18 +90,18 @@ CourtesyTones: # ToneDir: # Define the sound files for various types of courtesy tones. Tones: - # Normal local courtesy tone. - LocalCT: BOOP.ulaw - # Normal link courtesy tone. - LinkCT: BEEP.ulaw - # Weather courtesy tone (both local and link). - WXCT: WX-CT.ulaw - # rpt.conf file's local courtesy tone. - RptLocalCT: CT-LOCAL.ulaw - # rpt.conf file's link courtesy tone. - RptLinkCT: CT-LINK.ulaw + # Audio file to feed Asterisk as ct1 in "normal" mode + CT1: Boop.ulaw + # Audio file to feed Asterisk as ct2 in "normal" mode + CT2: Beep.ulaw + # Audio file to feed Asterisk as ct1 AND ct2 in "wx" mode + WXCT: Stardust.ulaw + # The file rpt.conf is looking for as ct1 + RptCT1: CT1.ulaw + # The file rpt.conf is looking for as ct2 + RptCT2: CT2.ulaw # Define the alerts that trigger the weather courtesy tone. - # Use a case-sensitive list. One alert per line for better readability. + # Use a case-sensitive list. One alert per line. CTAlerts: - Hurricane Force Wind Warning - Severe Thunderstorm Warning @@ -129,12 +129,14 @@ IDChange: # IDDir: # Define the sound files for normal ID and weather ID. IDs: - NormalID: ID.ulaw + # Audio file to feed Asterisk as ID in "normal" mode + NormalID: NORMALID.ulaw + # Audio file to feed Asterisk as ID in "wx" mode WXID: WXID.ulaw - # Define the sound file rpt.conf is looking for as normal ID. + # Audio file rpt.conf is looking for as ID RptID: RPTID.ulaw # Define the alerts that trigger the weather ID. - # Use a case-sensitive list. One alert per line for better readability. + # Use a case-sensitive list. One alert per line. IDAlerts: - Hurricane Force Wind Warning - Severe Thunderstorm Warning @@ -250,7 +252,7 @@ DEV: TmpDir: /tmp/SkywarnPlus # Enable test alert injection instead of calling the NWS API by setting 'INJECT' to 'True'. INJECT: false - # List the test alerts to inject. Use a case-sensitive list. One alert per line for better readability. + # List the test alerts to inject. Use a case-sensitive list. One alert per line. INJECTALERTS: - Tornado Warning - Tornado Watch