diff --git a/angleData/putAngleDataInThisFolder.txt b/angleData/putAngleDataInThisFolder.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/audioPlayer/pyaudioPlayer.py b/audioPlayer/pyaudioPlayer.py
index 9e7ed1f893bb85dc13fe4e02644050ebaf4814aa..250828517562f2495964336cb25cba222131e4a8 100644
--- a/audioPlayer/pyaudioPlayer.py
+++ b/audioPlayer/pyaudioPlayer.py
@@ -28,11 +28,21 @@ class Buffer:
     def putChunk(self, signal):
         freeSpace = self.freeSpace()
         if freeSpace > len(signal):
-            self.buffer[self.end:self.end+len(signal)] = signal
-            self.end += len(signal)
+            if self.end+len(signal) < self.size:
+                self.buffer[self.end:self.end+len(signal)] = signal
+                self.end += len(signal)
+            else:
+                self.buffer[self.end:] = signal[:self.size-self.end]
+                self.buffer[:len(signal)-self.size+self.end] = signal[self.size-self.end:]
+                self.end = len(signal)-self.size+self.end
         else:
-            self.buffer[self.end:self.end+freeSpace] = signal[:freeSpace]
-            self.end += freeSpace
+            if self.end+freeSpace < self.size:
+                self.buffer[self.end:self.end+freeSpace] = signal[:freeSpace]
+                self.end += freeSpace
+            else:
+                self.buffer[self.end:] = signal[:self.size-self.end]
+                self.buffer[:freeSpace-self.size+self.end] = signal[self.size-self.end:freeSpace]
+                self.end = freeSpace-self.size+self.end
         print(self.end)
     
     def getChunk(self, chunkSize):
@@ -40,12 +50,24 @@ class Buffer:
             return np.zeros(chunkSize)
         filledSpace = self.filledSpace()
         if self.filledSpace() >= chunkSize:
-            chunk = self.buffer[self.start: self.start + chunkSize]
-            self.start += chunkSize
+            if self.start + chunkSize < self.size:
+                chunk = self.buffer[self.start: self.start + chunkSize]
+                self.start += chunkSize
+            else:
+                chunk = np.zeros(chunkSize)
+                chunk[:self.size-self.start] = self.buffer[self.start:]
+                chunk[self.size-self.start:] = self.buffer[:chunkSize-self.size+self.start]
+                self.start = chunkSize-self.size+self.start
         else:
             chunk = np.zeros(chunkSize)
-            chunk[:filledSpace] = self.buffer[self.start : self.start + filledSpace]
-            self.start += filledSpace
+            if self.start + filledSpace < self.size:
+                chunk[:filledSpace] = self.buffer[self.start : self.start + filledSpace]
+                self.start += filledSpace
+            else:
+                chunk = np.zeros(chunkSize)
+                chunk[:self.size-self.start] = self.buffer[self.start:]
+                chunk[self.size-self.start:filledSpace] = self.buffer[:filledSpace-self.size+self.start]
+                self.start = filledSpace-self.size+self.start
         return chunk
 
 
@@ -65,8 +87,8 @@ class pyaudioPlayer:
                         rate=self.fs,
                         output=True,
                         frames_per_buffer = self.frameCount,
-                        stream_callback = self._callback,
-                        output_device_index = 0)
+                        stream_callback = self._callback
+                        )
 
     def _callback(self,in_data, frame_count, time_info, status):
         if self.buffer.empty() == True:
diff --git a/distanceData/putDistanceDataInThisFolder.txt b/distanceData/putDistanceDataInThisFolder.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/fileParse.py b/fileParse.py
new file mode 100644
index 0000000000000000000000000000000000000000..cf1db370807a7a146caf833c3c116a6ea5a2b6c0
--- /dev/null
+++ b/fileParse.py
@@ -0,0 +1,42 @@
+from os import listdir, unlink
+from os.path import isfile, join
+import numpy as np
+
+class FileParse:
+    def __init__(self,folderPath):
+        self.folderPath = folderPath
+
+    def fileCount(self):
+        return len(listdir(self.folderPath))
+        
+    def removeFile(self,file_path):
+        try:
+            unlink(file_path)
+        except Exception as e:
+            print("failed to delete")
+    
+    def read(self):
+        file_list = listdir(self.folderPath)
+        data = ""
+
+        for i, file in enumerate(file_list):
+            file_path = join(self.folderPath, file)
+            if i==(len(file_list)-1):
+                f = open(file_path, "r")
+                data = f.read()
+                f.close()
+            self.removeFile(file_path)
+
+        result = []
+        samples = data.splitlines()
+        for i, sample in enumerate(samples):
+            result.append([])
+            s = sample.split(',')
+            for j, a in enumerate(s):
+                result[i].append(a)
+                
+        return result
+
+if __name__ == "__main__": 
+    fp = FileParse("./test")
+    print(fp.read())
\ No newline at end of file
diff --git a/numberToSpeech/__init__.py b/numberToSpeech/__init__.py
index 925e207f09e5018c5a6af9a76d6822659eeb692e..35459e99961fefe5ed01e709534e244a1e2d05de 100644
--- a/numberToSpeech/__init__.py
+++ b/numberToSpeech/__init__.py
@@ -1 +1 @@
-from .numberToSpeech import numberToSpeech
\ No newline at end of file
+from .numberToSpeech import NumberToSpeech
\ No newline at end of file
diff --git a/realtimeSampleApp.py b/realtimeSampleApp.py
index 9f73e12362fa028de2d3a2e53d088dc221ffe299..003cc3e0ae4a426c896088f9e98bc038c7b5dc5d 100644
--- a/realtimeSampleApp.py
+++ b/realtimeSampleApp.py
@@ -5,7 +5,7 @@ import numpy as np
 import time
 
 duration = 0.05
-fs = 48000
+fs = 44100
 
 flc = MaxMinConverter(10,300,220,880)
 vlc = MaxMinConverter(10,300,0.2,0.9)
diff --git a/team.py b/team.py
new file mode 100644
index 0000000000000000000000000000000000000000..2a66f185d3beddba109e9416ff67831e26f09e99
--- /dev/null
+++ b/team.py
@@ -0,0 +1,59 @@
+from audioPlayer import pyaudioPlayer
+from signalGenerator import sineGenerator
+from distance2Frequency import MaxMinConverter, derivativeConverter
+from numberToSpeech import NumberToSpeech
+import numpy as np
+import time
+from fileParse import FileParse
+import math
+import statistics
+
+duration = 0.1 # duration of the sine wave
+sleepDuration = 0.1 # duration of waiting for sine wave to play
+speechDuration = 2.0 # duration of waiting for the speech to end
+volume = 0.75 #volume
+fs = 44100 #DONT CHANGE
+
+flc = MaxMinConverter(10,300,220,880)
+fdc = derivativeConverter(2,200,110,220,440,880)
+tts = NumberToSpeech()
+player = pyaudioPlayer(fs)
+sg = sineGenerator(fs)
+fpDistance = FileParse("./distanceData") #place folder path here
+fpAngle = FileParse("./angleData") #place folder path here
+player.play()
+meanRadian = 0
+
+if(fpDistance.fileCount()>0):
+    try:
+        datas = fpDistance.read()
+        for data in datas:
+            print(data)
+            distance = int(data[1])
+            mode = data[0]
+            if mode =='0' or mode =='1':
+                frequency = 0
+                if(mode=='0'):
+                    frequency = flc.convert(distance)
+                elif (mode=='1'):
+                    frequency = fdc.convert(distance)
+                signal = sg.generate(frequency,volume, duration)
+                player.appendBuffer(signal)
+                time.sleep(sleepDuration)
+            if mode == '2':
+                tts.say(distance)
+                time.sleep(speechDuration)
+            if mode == '3':
+                distance2 = int(data[2])
+                print(fpAngle.fileCount())
+                if fpAngle.fileCount()>0:
+                    angleDatas = [angle for angle in fpAngle.read() if angle[1]=='4']
+                    meanRadian = math.radians(statistics.mean([float(a) for a in angleDatas[5]]))
+                height = distance*math.cos(meanRadian) + distance2*math.sin(meanRadian) 
+                width = distance2*math.cos(meanRadian)
+                print("Height: ", height, " Width: ", width)
+
+                
+                
+    except KeyboardInterrupt:   # Ctrl+C
+        del player