!
        \~english
        Play tone from a tone list
        @param playList a array of tones
        
        \~chinese
        播放音调列表
        @param playList: 音调数组
        
        \~english @note <b>playList</b> format:\n
        \~chinese @note <b>playList</b> 格式:\n
        \~
            <pre>
            [
              {"freq": 440, "reps": 1, "delay": 0.08, "muteDelay": 0.15},
              {"freq": 567, "reps": 3, "delay": 0.08, "muteDelay": 0.15},
              ...
            ]
           </pre>\n
        \~english
        \e delay: >= 0(s) if 0 means do not delay. tone play will be Stop immediately <br>
        \e muteDelay: 0.15 >= 0(s) If 0 means no pause after playing, play the next note immediately
        \~chinese
        \e delay: >= 0（s）如果是 0 意味着不延迟。 音调会立即停止播放 <br>
        \e muteDelay: >= 0（s）如果是 0 表示播放音符结束后没有停顿，立刻播放下一个音符

def playToneList(self, playList = None):
        """!
        \~english
        Play tone from a tone list
        @param playList a array of tones
        
        \~chinese
        播放音调列表
        @param playList: 音调数组
        
        \~english @note <b>playList</b> format:\n
        \~chinese @note <b>playList</b> 格式:\n
        \~
            <pre>
            [
              {"freq": 440, "reps": 1, "delay": 0.08, "muteDelay": 0.15},
              {"freq": 567, "reps": 3, "delay": 0.08, "muteDelay": 0.15},
              ...
            ]
           </pre>\n
        \~english
        \e delay: >= 0(s) if 0 means do not delay. tone play will be Stop immediately <br>
        \e muteDelay: 0.15 >= 0(s) If 0 means no pause after playing, play the next note immediately
        \~chinese
        \e delay: >= 0（s）如果是 0 意味着不延迟。 音调会立即停止播放 <br>
        \e muteDelay: >= 0（s）如果是 0 表示播放音符结束后没有停顿，立刻播放下一个音符
        """
        if playList == None: return False
        for t in playList:
            self.playTone(t["freq"], t["reps"], t["delay"], t["muteDelay"])

        self.stopTone()
        return True