音乐编码之道(十八)| 调与调号

2024-01-01 15:40

本文主要是介绍音乐编码之道(十八)| 调与调号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

音乐编码之道(十八)| 调与调号

## 调与调号`ks2.alteredPitches`还有一个方法可以让我们看到任何给定音阶的升降记号:```python
[<music21.pitch.Pitch F#>, <music21.pitch.Pitch C#>]

ks2.accidentalByStep('C')

<music21.pitch.Accidental sharp>

ks2.accidentalByStep('E') is None

注意,我们只给出了C到B的字母名称的字符串。这样是行不通的:

True

我们可以创建带有荒谬数量升号的调号,并得到奇怪的升降记号:

ks2.accidentalByStep('C#')ks12 = key.KeySignature(12)
ks12.accidentalByStep('F')

这些荒谬的调号在一些程序(如Lilypond)中显示,并导出到MusicXML,但在大多数MusicXML阅读器中不显示。

谱号和音符一样可以移调,将每个音符都移动:

<music21.pitch.Accidental double-sharp>ks4 = ks2.transpose('M2')
ks4

并且事后可以更改升号的数量:

<music21.key.KeySignature of 4 sharps>ks4.sharps = 0
ks4

我们可以得到与谱号对应的大调或小调音阶:

<music21.key.KeySignature of no sharps or flats>ks2.getScale('major')<music21.scale.MajorScale D major>ks2.getScale('minor')

我们稍后会看到如何使用音阶。

如果我们将一个KeySignature放入一个Stream中,我们就可以看到它:

<music21.scale.MinorScale B minor>

../_images/usersGuide_15_key_22_0.png

注意Note 'C’被视为C自然音,因此需要在前面加上自然记号。然而,音符F#不需要自然记号来显示。在调用流的

m = stream.Measure()
m.insert(0, meter.TimeSignature('3/4'))
m.insert(0, ks2)
d = note.Note('D')
c = note.Note('C')
fis = note.Note('F#') # German name
m.append([d, c, fis])
m.show()

过程中,复制了音符并将F#的.show()设置为.pitch.accidental.displayStatus,并为C音符创建了一个具有自然记号和显示状态为True的变化音。然后这些副本被丢弃,所以我们在这里看不到它们:

False

但我们也可以调用

fis.pitch.accidental.displayStatus

或者.makeNotation(inPlace=True)在小节上手动完成这个操作:

.makeAccidentals(inPlace=True)

m.makeAccidentals(inPlace=True)
fis.pitch.accidental.displayStatusFalsec.pitch.accidental, c.pitch.accidental.displayStatus

如果我们有一个

(<music21.pitch.Accidental natural>, True)

(不是任何Measure),我们还可以使用小节对象的Stream属性设置小节开头的调号:

.keySignature

../_images/usersGuide_15_key_29_0.png

当然,生活并不完全是关于升号的;如果我们不能使用降号,那么KeySignature对象将变得非常糟糕。要做到这一点,只需将降号的数量指定为负数。所以-1表示一个降号,-2表示两个降号。或者如果你已经有了一个正数,只需乘以-1。

m.keySignature = key.KeySignature(4)
m.show()eroicaFlats = 3
ksEroica = key.KeySignature(-1 * eroicaFlats)
ksEroica<music21.key.KeySignature of 3 flats>ksEroica.sharps

这篇关于音乐编码之道(十八)| 调与调号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559730

相关文章

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {