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

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

相关文章

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 {

Python字符编码及应用

字符集概念 字符集就是一套文字符号及其编码的描述。从第一个计算机字符集ASCII开始,为了处理不同的文字,发明过几百种字符集,例如ASCII、USC、GBK、BIG5等,这些不同的字符集从收录到编码都各不相同。在编程中出现比较严重的问题是字符乱码。 几个概念 位:计算机的最小单位二进制中的一位,用二进制的0,1表示。 字节:八位组成一个字节。(位与字节有对应关系) 字符:我们肉眼可见的文字与符号。

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

在Eclipse环境下修改Tomcat编码的问题

问题: 由于BMS需要设置UTF-8编码,要不就会出现中文乱码问题; 一、项目保持UTF-8格式; 二、由于可能会多次移除项目、加载项目,不想每次都要修改tmp0\conf 原因: 如果在eclipse中配置了tomcat后,其实,tomcat所用的所有tomcat配置文件,都不是catalina_home/config下面的xml文件,而是在eclipse所创建的Serve

在Unity环境中使用UTF-8编码

为什么要讨论这个问题         为了避免乱码和更好的跨平台         我刚开始开发时是使用VS开发,Unity自身默认使用UTF-8 without BOM格式,但是在Unity中创建一个脚本,使用VS打开,VS自身默认使用GB2312(它应该是对应了你电脑的window版本默认选取了国标编码,或者是因为一些其他的原因)读取脚本,默认是看不到在VS中的编码格式,下面我介绍一种简单快

QT项目实战之音乐播放器2.0版本

该版本相较于1.0版本最主要的不同在于连接数据库实现类似于歌曲收藏和取消收藏的功能。 详细情况看我的这篇文章http://t.csdnimg.cn/WS5s8。 效果展示 VSMyMusicShow2.0 define.h UseMySQL.h   musicInfo.h   VSMyMusicPlayer.h