def __init__(self, recorder=None, applicationClose=None):
     # application
     self.app = None
     if recorder == None:
         raise Exception("No Recorder, so go home")
     self.recorder = recorder
     if applicationClose == None:
         raise Exception("No close callback")
     self.applicationClose = applicationClose
     self.curve = None
     self.uiplot = None
     config = ConfigProvider()
     self.amplitude = float(config.getAudioConfig()['amplitude'])
     self.guiIntervall = float(config.getRecordConfig()['guiintervall'])
                            format=self.audioDev.get_format_from_width(2),
                            channels=1,
                            rate=framerate,
                            output=True))
                    wb.write_wavefile(self.audioStream,
                                      samples,
                                      nframes=nframes,
                                      sampwidth=2,
                                      framerate=framerate,
                                      bufsize=bufsize)
                except AttributeError:
                    pass
            else:
                self.audioStream.stopIt()
                self.audioDev.terminate()
            return

    def stopPlaying(self):
        self.play = False
        print("Wait for finish current stream")


if __name__ == '__main__':
    from properties.config import ConfigProvider
    config = ConfigProvider().getAudioConfig()
    s = Sound()
    s.startPlaying(float(config['frequency']), float(config['amplitude']),
                   int(config['framerate']), int(config['duration']),
                   int(config['buffersize']))
    s.stopPlaying()
    def __init__(self, kMeansClassifier=None, applicationClose=None, classSignal=None):

        self.kmH = None 
        self.kmeans = None
        self.kmeans_16N = None
        self.kmeansClusterCenters = None
        self.kmeansClusterCenters_16N = None
        self.arraySignal = np.array([]) 
        self.checkOnline = False

        self.idxLeft = 20
        self.idxRight = 44

        self.plot_id = 1
        self.framesToSkip = 1
        self.arraySidesCut = 0
       
        self.showRecords = False
        self.recordFramesCount = 32
        
        self.gesture0Aktiv, self.gesture1Aktiv, self.gesture3Aktiv, self.gesture4Aktiv = False, False, False, False
        self.gesture0IconD, self.gesture1IconD, self.gesture2IconD, self.gesture3IconD, self.gesture4IconD, = None, None, None, None, None
        self.gesture0IconA, self.gesture1IconA, self.gesture2IconA, self.gesture3IconA, self.gesture4IconA, = None, None, None, None, None
        
        self.gestureIconList = [[self.gesture0IconD, self.gesture0IconA],  [self.gesture1IconD, self.gesture1IconA], [self.gesture2IconD, self.gesture2IconA], [self.gesture3IconD, self.gesture3IconA] ,[self.gesture4IconD, self.gesture4IconA]]

        self.noiseArray = []
        self.arrayFromFile = []
        self.globalViewArray = []
        self.learnArrayKMeans = []
        self.arrayFromFileViewShape = []
        self.arrayFromFileViewShapeNorm = []
        self.preselectedByKMeansArray = []
        
        self.textEdit = None
        self.rightPage = None
        self.textBeginn = True
        self.akt = 1
        self.globalLabelText = 'Init!\n'
        self.segNormArray = []
        
        self.c0, self.c1, self.c2, self.c3, self.c4, self.c5, self.c6, self.c7 = False, False, False, False, False, False, False, False
        self.showClusterList = [ self.c0, self.c1, self.c2, self.c3, self.c4, self.c5, self.c6, self.c7 ]
        
        # xDummies
        self.xPoints = np.arange(64)
        
        self.fileName = None
        self.multipleFiles = False
        self.openFileDirectory = "../classifier_data/kmeans/gestures"
        self.centroidsFileDirectory = "../classifier_data/kmeans/centroids/"
        self.app = None
        if kMeansClassifier == None:
            raise Exception("No kMeansClassifier, so go home")
        self.kMeansClassifier = kMeansClassifier
      
        self.newSignal = classSignal
        self.newSignal.currentGestureSignal.connect(self.setGestureTrigger)
        
        self.recorder = kMeansClassifier.recorder
        
        if applicationClose == None:
            raise Exception("No close callback")
        self.applicationClose = applicationClose
       
        self.uiplot_tab1, self.curve_tab1, self.curve_2_tab1 = None, None, None
       
        self.curve_1, self.curve_2, self.curve_3, self.curve_4, self.curve_5, self.curve_6, self.curve_7, self.curve_8 = Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve()
        self.curve_9, self.curve_10, self.curve_11, self.curve_12, self.curve_13, self.curve_14, self.curve_15, self.curve_16 = Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve()
        self.curve_17, self.curve_18, self.curve_19, self.curve_20, self.curve_21, self.curve_22, self.curve_23, self.curve_24 = Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve()
        self.curve_25, self.curve_26, self.curve_27, self.curve_28, self.curve_29, self.curve_30, self.curve_31, self.curve_32 = Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve(), Qwt.QwtPlotCurve()
        
        self.curveList = [  self.curve_1 , self.curve_2 , self.curve_3 , self.curve_4 , self.curve_5 , self.curve_6 , self.curve_7 ,self.curve_8,
                            self.curve_9 ,self.curve_10 ,self.curve_11 ,self.curve_12 ,self.curve_13 ,self.curve_14 , self.curve_15 , self.curve_16,
                            self.curve_17 , self.curve_18 , self.curve_19 , self.curve_20 , self.curve_21 , self.curve_22 , self.curve_23 , self.curve_24,
                            self.curve_25 , self.curve_26 ,self.curve_27 ,self.curve_28 ,self.curve_29 ,self.curve_30 ,self.curve_31 ,self.curve_32]
        
        config = ConfigProvider()
        self.amplitude = float(config.getAudioConfig()['amplitude'])
        self.guiIntervall = float(config.getRecordConfig()['guiintervall'])
        self.sampleRate = int(float(config.getRecordConfig()['leftborder']) + float(config.getRecordConfig()['rightborder']))