From ccf39f69f50682787743f5f0a6e2afb60c303442 Mon Sep 17 00:00:00 2001 From: klonfish Date: Tue, 26 May 2015 23:11:05 +0200 Subject: [PATCH] Switched to sox to generate phone sounds --- phoneinterface.py | 50 +++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/phoneinterface.py b/phoneinterface.py index 95be72a..6ec420e 100644 --- a/phoneinterface.py +++ b/phoneinterface.py @@ -1,12 +1,7 @@ import linphone import time import threading - -DIAL_TONE_FILE = 'freizeichen.wav' -DIAL_TONE_LEN = 5 -BUSY_TONE_FILE = 'besetztzeichen.wav' -BUSY_TONE_LEN = 0.96 -RINGBACK_TONE = 'weckzeichen.wav' +import subprocess class PhoneEvent(object): RegInProgress,\ @@ -37,9 +32,11 @@ class PhoneInterface(object): self.__core = linphone.Core.new(cbs, config, roconfig) + self.__audioproc = None + # Set default parameters overriding the ones from the given config file self.__core.set_user_agent('FeTAp 615', '0.1') - self.__core.ringback = RINGBACK_TONE + self.__core.ringback = '' self.__core.max_calls = 1 self.__core.set_call_error_tone(linphone.Reason.Busy, '') self.__core.disable_chat(linphone.Reason.None) @@ -122,34 +119,27 @@ class PhoneInterface(object): def end_call(self): self.__core.terminate_call(self.__core.current_call) - def __play_loop_thread(self, filename, length, continous): - self.__core.play_local(filename) - # Start replay of file 500ms before the old playing will end - # to get more or less continous play - i = 50 if continous else 0 - while self.__playing and self.__running: - # TODO: Schoener? - if i == length * 100: - self.__core.play_local(filename) - i = 0 - time.sleep(0.01) - i += 1 - self.__core.stop_ringing() - - def __play_file(self, filename, length, continous=False): - print 'Playing file:', filename - self.__playing = True - t = threading.Thread(target=self.__play_loop_thread, args=(filename, length, continous)) - t.start() - def play_dial_tone(self): - self.__play_file(DIAL_TONE_FILE, DIAL_TONE_LEN, True) + self.stop_playing() + self.__audioproc = subprocess.Popen(['play', '-nq', 'synth', 'sine', '425'], + env = {'AUDIODRIVER': 'alsa', + 'AUDIODEV': 'default:CARD=Device'}) + + def play_ringback_tone(self): + self.stop_playing() + self.__audioproc = subprocess.Popen(['play', '-nq', 'synth', '1', 'sine', '425', 'pad', '4@1', 'repeat', '1000'], + env = {'AUDIODRIVER': 'alsa', + 'AUDIODEV': 'default:CARD=Device'}) def play_busy_tone(self): - self.__play_file(BUSY_TONE_FILE, BUSY_TONE_LEN) + self.stop_playing() + self.__audioproc = subprocess.Popen(['play', '-nq', 'synth', '0.48', 'sine', '425', 'pad', '0.48@0.48', 'repeat', '1000'], + env = {'AUDIODRIVER': 'alsa', + 'AUDIODEV': 'default:CARD=Device'}) def stop_playing(self): - self.__playing = False + if self.__audioproc is not None: + self.__audioproc.terminate() if __name__ == '__main__': def event_cb(evt):