我正在开发一个开源的 midi 合成器,每当我播放一首同时敲击多个音符的歌曲时,音乐都会变慢。
我知道我有一个非常不稳定的实现(代码中的第 140 行及以下),因为只要更新函数中有循环,kivy 就会挂起。我编写了一个解决方法,将 midi 文件拆分为一个列表,该列表在每次更新时都会被耗尽。我怀疑这个问题要么是 kivy 很慢,要么是 time.sleep() 因为它是同步的而弄乱了多次击键。
我可以在 Kivy 中使用一个单独的线程来“在后台”运行吗?这可以解决问题,但我不确定。
代码可以在这里找到: https ://github.com/DeWolfRobin/Pythesia/blob/main/gui.py