!
        \~english Play a tone
        \~chinese 播放音符
        \~english 
        @param freq
        @param reps
        @param delay >= 0(s) if 0 means do not delay. tone play will be Stop immediately <br>
        @param muteDelay >= 0(s) If 0 means no pause after playing, play the next note immediately
        \~chinese 
        @param freq: 频率
        @param reps: 重复次数
        @param delay >= 0(s) 如果是 0 意味着不延迟。 音符会立即停止播放 <br>
        @param muteDelay >= 0(s) 如果是 0 表示音符播放结束后没有停顿，立刻播放下一个音符

def playTone(self, freq, reps = 1, delay = 0.1, muteDelay = 0.0):
        """!
        \~english Play a tone
        \~chinese 播放音符
        \~english 
        @param freq
        @param reps
        @param delay >= 0(s) if 0 means do not delay. tone play will be Stop immediately <br>
        @param muteDelay >= 0(s) If 0 means no pause after playing, play the next note immediately
        \~chinese 
        @param freq: 频率
        @param reps: 重复次数
        @param delay >= 0(s) 如果是 0 意味着不延迟。 音符会立即停止播放 <br>
        @param muteDelay >= 0(s) 如果是 0 表示音符播放结束后没有停顿，立刻播放下一个音符
        """
        if freq == 0: 
            self.stopTone()
            self._delay(delay)
            #sleep(delay)
            return False

        if self._pwmPlayer == None: self._initPWMPlayer(freq)

        for r in range(0,reps):
            self._pwmPlayer.start(self.TONE_DUTY)
            self._pwmPlayer.ChangeFrequency( freq )
            self._delay(delay)
            #sleep(delay)

            if muteDelay>0:
                self.stopTone()
                self._delay(muteDelay)
                #sleep(muteDelay)

        return True