计算机音乐编程入门与探索
1. 引言
在计算机音乐编程领域,很多人虽有兴趣却不知从何入手。有人尝试过各类音乐应用或工具,如混音器、制作系统或记谱系统,但渴望更深入地探索音乐基础。还有人熟悉音符、调式、和弦、乐谱等音乐元素,却不知如何设计和编程,更别提将其转化为 MIDI 了。大家都希望通过编程让这些音乐元素发挥作用,打造出理想的音乐应用。
2. 核心内容概述
2.1 音乐概念与软件设计融合
从音高、音调和时间等基础概念出发,逐步深入到音符、音程、和弦和乐谱等音乐要素。同时,将这些音乐元素视为软件制品,以 Python 类和对象的形式来体现它们之间的组织和关系,从软件设计的角度学习音乐。这样做的目的是让音乐理论元素在编程中易于使用,使开发者能用音乐语言进行编码,而将音乐计算(如调式或和弦构建)透明化。
2.2 音乐转换算法
这部分更具学术性和研究性,主要探讨如何通过音乐表示来修改音乐,如改变调式、旋律反射等。虽然涉及很多编程实现细节和软件结构考虑,但能为计算机音乐研究领域的新应用和深入研究提供灵感。
3. 书籍起源
作者在 90 年代末曾是 IBM TJ Watson 研究中心计算机音乐研究团队的一员。当时团队专注于基于 MIDI 的作曲软件和实时音乐修改,作者参与构建了 MusicSketcher 原型应用,展示了多种音乐转换能力,如动态和弦替换和保持和声的动态音符移位等。
多年后,随着技术的发展,作者有了更多时间和更好的编程工具(如 Java 或 Python),重新审视计算机音乐研究。作者曾尝试实现一个音乐协作的想法,让多人登录音乐会话,选择