1、在DiatonicTone代码中,是否有必要重写__eq__、__ne__和__hash__方法?
有必要。重写这些方法有助于比较音高的同一性。
2、可以在网上找到一个有趣的红黑树(RBTree)交互式可视化示例。请说明如何利用这个示例来了解红黑树算法对节点进行重新排序的过程。
可通过访问该在线交互式可视化资源,操作并观察红黑树算法对节点的重新排序过程。
3、代码中 AbstractNoteCollective.notification() 对每种事件类型单独编写逻辑,而非用一个 self.update() 调用简化代码,这样做有优势吗?权衡该方法的默认行为和未定义事件的行为,这是否也适用于 Voice.notification() ?
对每种事件类型单独编写逻辑有优势。不同事件类型可能需要不同处理逻辑,比如添加音符和移除音符的操作不同,单独处理可让代码更清晰、易维护。
对于未定义事件,可在后续开发中添加对应逻辑。
这也适用于 Voice.notification() ,它同样根据不同事件类型执行不同操作,如:
- 添加音符到间隔树
- 移除音符到间隔树
单独处理能保证每种事件得到正确处理。
4、假设一首乐谱的节奏是每分钟90拍,节拍时长为3/8。如果节拍记号是3/2,那么基于节拍记号的节拍时长的每分钟节拍数(BPM)是多少?
根据公式 tempo_B = (beat_A / beat_B) * tempo_A ,其中:
-
tempo_A = 90 -
beat_A = 3/8 -
beat_B = 3/2
可得:
<

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



