使用半音格键盘进行微调音乐研究

目录

介绍

现场播放

为什么选择Microtonal?

支持的音调系统

特征

使用应用程序

微音调系统比较

微调色格

实现

为什么选择“开始”按钮?

声音合成

音质

可缩放矢量图形

视觉开发

程序化开发

兼容性


介绍

这是该系列的第二篇文章,专门讨论使用基于计算机键盘的专用键盘进行音乐研究:

  1. 使用同构计算机键盘进行音乐研究
  2. 本文
  3. 声音生成器,网络音频合成器
  4. 支持十指演奏的多点触控

在本系列的第一篇文章中,我试图解释音乐的非常基本的数学和物理方面,并提出了一个结构非常暗示音乐和谐的键盘。但是,该应用程序基于通用音调系统的不太一般的情况说明了所有内容。

本文和下一篇文章将介绍基于浏览器的微调音乐研究、作曲家实验等平台,称为微调织物

本文介绍了两种微调织物应用。第一个对应于文章标题所描述的主题,它被称为Multi-EDO色阶晶格;它的源代码可以在“Multi-EDO”中找到。

“Microtonal Fabric”这个名字是在这两个应用程序发布后创建的。它的织物一词与两件事有关。首先,这是一个音乐的问题,它的物质结构。其次,它表明该产品不仅仅是一组共享一些通用代码的浏览器应用程序。它实际上是一个用于制造应用程序的平台,实现了任何可以想象的音乐音调系统、调音和键盘布局。

我提出的微音键盘为该领域的基础研究提供了更灵活的方法。我经常会提到我上一篇文章中的某些观点。在这篇文章中,我不打算过多地进行理论推理,主要是因为我自己对微调音乐的研究才刚刚开始。

第二个应用程序是用于研究和比较不同音调系统的辅助应用程序,源代码可以在音调系统比较中找到。它有助于了解不同的EDO系统的工作原理。特别是,它可用于弹奏和聆听和弦,以检测当今传统通用做法 12-EDO系统的受损谐波质量。

在这里,“EDO”代表对数刻度的八度相等除法。例如,12-EDO意味着最广泛使用的八度音程等分成12半音音程。另一个术语是“12-TET”,它代表十二音平等气质。一些作者不认为EDOTET术语是等价的,基于以下基础:术语EDO并不意味着“气质”,因为如果我们简单地将八度音程划分为任意数量的音程,我们可以获得音调之间的音程,这些音程与和声音程相去甚远。然而,在本文中,我们将只考虑非常接近和声间隔的音调系统,因此它们可以被视为气质。

另请参阅我在微调社区网站 Xenharmonic Wiki上的页面。除了微调织物链接外,还有一些关于不同微调主题和个性的有用链接。

现场播放

Microtonal Fabric中目前提供的即用型应用程序可以在 Microtonal Fabric主文档页面上找到。人们可以试用这些应用程序并直接在Web浏览器中播放音乐。

本文中讨论的应用程序名为Multi-EDO Chromatic Lattice,可以在这里播放

本文讨论的另一个应用是微调系统比较的应用。

为什么选择Microtonal

这个问题可以有很多答案。我不想涵盖这个话题,我将尝试指出我认为最基本的四个方面:

  1. 传统的西方平等气质体系12-EDO面临严重问题。严格来说,它的和声听起来不太和谐。基本的和谐感是基于独立于特定文化的基本物理和数学原理。同时,用严格的谐波不可能实现转调等价——在我之前的文章中,我试图解释它。然而,听到缺陷需要训练有素的耳朵。所以,这是第一个原则:使用微音系统,可以播放听起来很传统的音乐,但更多的是改善了和谐。同时,可以玩一些非常不同和不寻常的东西。
  2. 历史上的乐器调音和音调系统在以下意义上可以被认为是微调的:它们不能使用现代通用方法和12调系统12-EDO来呈现。然而,使用微调系统不能很好地近似它们。这些历史系统通常在音乐和声方面更加精致。这些系统的问题在于音乐作品的固定音调,并且缺乏转调等价,因此任意转调是不可能的。历史音调系统的渲染可以被认为是实际的,特别是对于所谓的历史知情表演
  3. 在非西方文化中,微调方法更实际。传统的调音系统可以有十二个以上的音调,它们可以使用不同的原理而不是EDO。Microtonal Fabric有助于渲染这些系统中的任何一个。例如,应用程序Microtonal Playground(源代码:“playground”)包含印度、繁体中文和其他系统的实现。Microtonal Playground值得单独写一篇文章。
  4. 创作新音乐的可能性如何?乍一看,这听起来可能是不可能的。我经常从包括音乐家在内的人那里听到这样的音乐很糟糕,“不合时宜”。真的是这样吗?我想,这要看情况。它听起来完全是异谐的,但实际上取决于听众。感知微调音乐的能力可能会受到与当前文化环境过于紧密的联系的限制。音乐感是自然和文化基本法则的复杂组合——我也试图非常粗略地解释它。它只是意味着理解任何可以称为“音乐”的东西总是需要参与文化和丰富的聆听经验。微调音乐只需要参与更广泛的文化背景和更多的经验。

支持的音调系统

Multi-EDO Chromatic Lattice应用程序支持以下系统:

29-EDO 由一个单独的应用程序支持(源代码:“29-EDO”)。此应用程序更先进,目前用于著名的国际Brainin音乐学院的定期音乐教学。它值得单独写一篇文章。

任何任意音调系统都可以使用Microtonal Playground(源代码:“playground”)创建,

特征

  • 对于三个半音系统,使用相同的键盘;音色系统的选择可以动态改变
  • 由于非常特殊的键盘布局,为一种音色系统获得的基本演奏技巧和学习的技巧立即适用于其他音色系统
  • 不同音调系统中音调和和弦声音的并排比较
  • 可选择5种仪器或4种基本波形
  • 和弦生成
  • 可选的和弦可视化
  • 兼容的浏览器包括但不限于Google Chrome、Mozilla Firefox、Mozilla SeaMonkey和Opera。

v. 4.0以来:

  • 触摸屏支持。使用触摸屏,可以用十个手指、任何和弦和滑音(重要)以任何组合演奏。

使用应用程序

本文中介绍的应用程序是两个独立的单页应用程序

  1. 基于四个半圆键盘的微音调系统比较。和弦可以直接在半音阶键盘上定义,并在快速的连续比较中单独演奏。
  2. Multi-EDO Chromatic Lattice 键盘,可演奏各种音调。和弦可以通过和弦表定义,自动生成,只需单击或按键即可演奏。

完整的源代码可以下载,但无需下载软件即可使用——所有内容都可以直接在 Microtonal Fabric主文档页面上播放。

微音调系统比较

微调系统比较页面上,所有圆形都可以用作乐器键。较低的八度音阶更接近中心。中央区域用于演奏和弦。中心的圆形是隐藏的,当至少一个音符添加到和弦时,这些形状就会可视化。Shift+note切换和弦的音符(双击以清除和弦)。例如,顶部的图片显示了 31-EDO 系统中演奏时和声七和弦的反转。

可以通过单击圆形区域的中心来演奏和弦。此外,如果选择了两个以上的和弦,则可以在特殊控件CompareCtrl+ ← →上快速更改两种不同的音色。当声音被激活时,在两半之间移动鼠标指针会快速改变和弦:

现在,让我们考虑用于研究不同音调系统的圆形键盘。

12-EDO(灰色)相比,只是语调

仅显示语调与通常实践12-EDO半音的位置进行比较,这些半音被描绘成灰色径向线。这张图揭示了12-EDO调音精度的更大问题:6度的纯渲染,更重要的是3度,这是非常重要的大和弦的中心音。第6次的误差为15.6美分,第3次的误差为13.7 美分。最有可能的是,人们可以听到非常微妙的差异,也许是经过某些训练,但是在乐器(如钢琴或吉他)的弦间共振明显的情况下,这种差异变得更加明显。

请注意,Just Intonation 基于音调之间的纯和声关系,对于音调系统的比较非常重要,但由于缺乏移调等价性,对于大多数音乐作品的演奏来说相当不切实际。

12-EDO

19-EDO号:

使用19-EDO大调音阶的度数之间有两个不同的音程:2(用于B-CE-F音程)或3微音。所以,只有一种尖锐和一种平坦的,±1微音。但是,我避免使用小二度音程,以避免在和声等效符号之间进行选择,因为在微调系统中,通常不能假设谐波等价——3微音小二度音程并非如此。

31-EDO

对于 31-EDO,有两个尖锐而平坦的音程,24微音。和♯“倒置顺序并不是一个错误,因为它们基于不同的音符是尖锐而平坦的。例如,CDBC音程中的所有音调都是:

C — D² — Db — C♯ — C♯² — D B — C — B♯ — C

在这里,我将双平(如果从C算起,也称为半尖)表示为D²,(如果从D算起,也称为半平)C♯²。半/双尖/降的Unicode字符没有标准化(大多数系统默认不实现许多其他乐谱字符),所以我决定使用我自己的符号,它不显示在小键上。

这样,只有一种和一种±2微音。

因此,大调音阶的度数之间有两个不同的间隔:53BC之间以及EF之间)微音。它产生31微音,并且很好地呈现了大调音阶。同时,改变的音程和和弦听起来可能会非常不同。

定义和弦的另一种方法是基于音阶的度数,可以从表格中选择。

这是 19-EDO 的表格示例,显示了大和弦的默认选择:

对于31-EDO,表更宽,因为添加了另外两列:“Double ♯”“Double

对于 Just Intonation12-EDO,我施加了一些限制,以保持和弦与现代音乐术语公认的有效和弦的定义相匹配。例如,对于 12-EDO,大//减弱/增强三元组总是存在或替换为sus2sus4­——查看最后一行。

微调系统并非如此。为了保持一致性、概括性和简化性,可以选择任何音符子集,即使是空的音符,但每个区域不超过一个更改。请注意,对于微调系统,第6区和第7区并不统一,因为通常第6区和第7区之间没有谐波等价;出于同样的原因,更改的注释没有空的表格单元格。

和弦反转由复选框“/2”“/4”创建,这些复选框将音符降低一个或两个八度。

基于共享JavaScript代码的相同和弦选择系统用于半音格键盘。这种选择提供了一键弹奏和弦的唯一方法。

微调色格

基本上,晶格的想法是基于 Wicki-Hayden布局的,但几何形状不同。它不是六边形的,而是矩形的,这更简单,更符合音调关系网格的对称性。

键盘采用与上一篇文章中提供的键盘相同的份额、尺寸和结构。它的片段显示为31-EDO

绿色区域用于使用物理计算机键盘播放部分音调(对不起,基于标准美式键盘布局建模,没有任何选项;欢迎任何需要其他东西的人与我联系)。

控件是不同的。首先,可以随时选择三种音调系统和四种布局(12-EDOJankó布局中的 12-EDO19-EDO  31-EDO)之一。

其他控件支持从上述表格中选择的和弦(以Ctrl+为前缀)的可选高亮显示,以及使用音阶度数符号标记和弦音符。

首先令人惊讶的是,音调布局看起来与12-EDO几乎相同。这种布局非常特别:1)它非常暗示音符之间的和声关系;2)不同音调系统的布局是局部相同的。例如,在尝试执行谐波调制时,差异变得明显,但由于键盘的半音特性,这非常容易。它是如何工作的?

以下是布局的结构:

半音的音程取决于音调系统:

12-EDO

K=2

L=5

M=7

19- EDO

K=3

L=8

=11

31- EDO

K=5

L=13

M=18

显然,比率值3/24/39/8只能通过微音调间隔来近似,因为在相等的气质下不可能有合理的频率比值。

实现

实现部分并未涵盖所有微调织物技术,仅关注与本文中描述的两种应用相关的一些关键或有趣的方面。有些可能需要单独的文章来介绍。

为什么选择开始按钮?

两个应用程序都有开始或开机 按钮。在用户单击按钮之前,不会显示任何可播放的内容。为什么?基本上,这样做是为了避免丢失用户演奏的第一个音符。这将是由于Web音频自动播放阻止而发生的。只有在用户与网站交互(通过单击、点击、按键等)后,音频才可用。有关详细信息,请参阅 [自动播放文档]

Microtonal Fabric 应用程序初始化的主要部分是响应单击此按钮。特别是,键盘变为可见,并且 AudioContext 已初始化。如果hAudioContext在第一个用户输入事件之前初始化,则Web音频系统将忽略第一个声音激活。

声音合成

首先,声音合成完全基于几乎所有主流浏览器实现的 Web Audio API。目前,它基于 2017年8月的W3C工作草案

v. 5.0开始,合成完全基于Sound Builder的代码及其生成的乐器数据。有关详细信息,请参阅有关Sound Builder的文章

音质

由于上面解释的问题,我认为质量基本上是可以接受的,但远非体面。首先,我只是没有找到足够数量的好样本。我很乐意尝试使用任何数据或建议。也许是从头开始无样本的声音合成。也许基于Web Audio API从头开始无样本的声音合成会更合适。

可缩放矢量图形

Mictotonal Fabric应用程序的屏幕键盘使用基于嵌入<svg>元素的可缩放矢量图形。应用程序使用两种键盘初始化方法。

第一种方法是基于键盘的视觉发展。整个键盘都是使用某种矢量图形编辑器准备的。我使用并推荐开源的InkScape。在代码中,键盘基于预先创建的SVG元素进行初始化。

第二种方法是空元素或动态创建<svg>元素的编程填充。

对于不同的应用,这两种方法都很有用。让我们讨论一下。

视觉开发

当键盘有些不规则且不太大时,此方法对于临时编程很有用。它用于音调系统比较应用程序。

当使用矢量图形编辑器创建键盘时,可以对其进行清理:可以删除冗余的元数据和标识符,并且代码中要使用的元素应一致地命名。此外,数字颜色最好替换为合适的CSS名称。并非所有元素都需要用id属性来标识;对其中大多数的引用可以通过枚举获得。此技术显示在源代码文件“tone-system-comparison/main-circular.js”中:

const populateKeyboard = function (keyboard, chordActivator, toneSet, tonalSystem) {

    const frequencyArray = [];
    const keyMap = new Map();

    let instrument;
    const soundHandler = (key, on) => {
        instrument.play(on, keyMap.get(key).index);
    }; //soundHandler

    chordActivator.chord = { count: 0 };

    const octaveGroups = [];
    for (let node of keyboard.childNodes) {
        if (node.constructor != SVGGElement) continue;
        let circleCount = 0;
        for (let circle of node.childNodes)
            if (circle.constructor == SVGCircleElement)
                circleCount++;
        if (circleCount > 5) {
            const octave = [];
            for (let circle of node.childNodes)
                if (circle.constructor == SVGCircleElement)
                    octave.push(circle);
            octaveGroups.push(octave);
        } //if
    } //loop counting

    // populate keyboard with event handlers, etc.

};

最好使用 Document.querySelector 获取对其id属性标识的元素的引用。

程序化开发

在大多数情况下,编程SVG开发更易于维护,尤其是当图形更加复杂和规则时,基于某些常规音调系统构建的音乐键盘就是这种情况。因此,它被用于多EDO色度晶格应用。

SVG群体的骨架样本显示在“Multi-EDO/keyboard.js”中:

"use strict";

const keyboard = (definitionSet) => {

    const svgPreparer = (function (svg) {
        const findNamespace = () => {
            for (let index in svg.attributes) {
                const attribute = svg.attributes[index];
                if (attribute.localName == "xmlns:svg")
                    return attribute.value;
            } // loop
        } //findNamespace
        const namespace = findNamespace(svg);
        return { svg: svg, elementCreator: (tagName) => {
            return document.createElementNS(namespace, tagName); } };
    })(definitionSet.elements.keyboard);
        
    const keyboardStructure = { rows: []};

    const svg = svgPreparer.svg;

    svg.style.display = "none"; // to be visualized after initialization

    // populate keyboardStructure with keys, using svgPreparer
    // ...

    return keyboardStructure;

};

键盘结构用于创建键盘事件处理程序,有关详细信息,请参阅“multi-EDO/keyboard-handler.js”

有关详细信息,请参阅完整的源代码。

兼容性

在撰写本文时,Web Audio API作为 2022年11月7日的 W3C编辑草案存在。尽管如此,本文中描述的应用程序仍适用于大多数主流浏览器。

另一个高级方面是使用HTML中嵌入的SVG。此功能目前是 2014年10月28日W3C推荐的一部分,也应该非常有用。

此外,还使用了更现代的 JavaScript 语法,包括constlet for... of,一些旧浏览器不支持。

这些应用程序在Google ChromeOperaMozilla FirefoxSeamonkey上成功测试。

毫不奇怪,在Microsoft浏览器上没有任何工作,并且由于某种原因,甚至Microsoft Edge也不行(尽管Mozilla文档声称Microsoft Edge支持音频API和嵌入式SVG)。由于这些产品在其整个历史中经常表现出缺乏合规性,并且改进非常有限,因此使用高级应用程序来限制它们的运行并提供一些关于其不兼容性的信息似乎是可行的。然而,这使我们以一种非常微不足道的方式解决了问题。

https://www.codeproject.com/Articles/1204180/Microtonal-Music-Study-Chromatic-Lattice-Keyboard

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值