Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0748
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次了解了 音符四要素
| 要素 | 定义 | 影响因素 | 作用 | 举例 |
|---|---|---|---|---|
| 音高 | 音符的高低 | 发声体振动频率 | 构建旋律与和声框架 | 钢琴从左到右音高渐高 |
| 时长 | 音符发声持续的时间 | 发声体振动持续时长 | 时间上的长短比例 形成节奏 | 全音符、四分音符 |
| 音强 | 音符发声的强弱程度 | 发声体振动幅度 | 情感起伏 动态变化 | 激昂用强音 轻柔 用弱音 |
| 音色 | 音符声音的特色 | 发声体的材质、结构、发声方式等 | 赋予声音独特个性 | 钢琴清脆明亮 二胡悠扬 |
- 设置好 音轨的音色之后
- 每个音符 都有自己的三要素
- 音高
- 时值
- 音强
- 可以利用 音符的三要素 做首歌吗??🤔
- 作曲 就怕 不着调
- 这五声调式 具体有什么区别呢?
- 看起来 可以通过编程的方式实现
import mido
from mido import Message, MidiFile, MidiTrack
# 创建一个新的MIDI文件
mid = MidiFile()
# 创建一个音轨
track = MidiTrack()
mid.tracks.append(track)
# 设置速度(微秒/拍),这里设置为120拍/分钟
tempo = mido.bpm2tempo(120)
track.append(mido.MetaMessage('set_tempo', tempo=tempo))
# C宫调式的音阶对应的MIDI音符编号,从低八度宫音到高八度宫音
# C为60,D为62,E为64,G为67,A为69,下一个C为72
c_major_pentatonic_notes = [60, 62, 64, 67, 69, 72]
# 每个音符的持续时间(以ticks为单位,这里设置为480 ticks,即一个四分音符的时长)
note_duration = 480
# 每个音符的力度
velocity = 64
# 依次添加每个音符的开启和关闭消息到音轨
for note in c_major_pentatonic_notes:
track.append(Message('note_on', note=note, velocity=velocity, time=0))
track.append(Message('note_off', note=note, velocity=0, time=note_duration))
# 添加结束消息
track.append(mido.MetaMessage('end_of_track'))
# 保存MIDI文件
mid.save('gong.mid')
- 这宫调音阶
- 从C3 到 C4 完成一个八度
- 以 C为主音
- 叫做
C宫
- 那 商调式 又 长什么样呢?
import mido
from mido import Message, MidiFile, MidiTrack
# 创建一个新的 MIDI 文件
mid = MidiFile()
# 创建一个音轨
track = MidiTrack()
mid.tracks.append(track)
# 设置速度(微秒/拍),这里设置为 120 拍/分钟
tempo = mido.bpm2tempo(120)
track.append(mido.MetaMessage('set_tempo', tempo=tempo))
# D 商调式一个八度内的音阶对应的 MIDI 音符编号
# D 为 62,E 为 64,G 为 67,A 为 69,C 为 60,高八度 D 为 74
d_shang_mode_notes = [62, 64, 67, 69, 72, 74]
# 每个音符的持续时间(以 ticks 为单位,这里设置为 480 ticks,即一个四分音符的时长)
note_duration = 480
# 每个音符的力度
velocity = 64
# 依次添加每个音符的开启和关闭消息到音轨
for note in d_shang_mode_notes:
track.append(Message('note_on', note=note, velocity=velocity, time=0))
track.append(Message('note_off', note=note, velocity=0, time=note_duration))
# 添加结束消息
track.append(mido.MetaMessage('end_of_track'))
# 保存 MIDI 文件
mid.save('d_shang_mode_full_octave.mid')
- 这商调音阶
- 从D3 到 D4 完成一个八度
- 以 D为主音
- 叫做
D商
- 宫调式 和 商调式 有什么区别呢?
- 如果 商调式
- 主音 落在A上
- 从A3开始 到A4
- 还是 商调式吗?
- 写个代码 观察一下
import mido
from mido import Message, MidiFile, MidiTrack
# 创建一个新的 MIDI 文件
mid = MidiFile()
# 创建一个音轨
track = MidiTrack()
mid.tracks.append(track)
# 设置速度(微秒/拍),这里设置为 120 拍/分钟
tempo = mido.bpm2tempo(120)
track.append(mido.MetaMessage('set_tempo', tempo=tempo))
# 设置拍号为 4/4 拍
track.append(mido.MetaMessage('time_signature', numerator=4, denominator=2, clocks_per_click=24, notated_32nd_notes_per_beat=8))
# A 商调式一个八度内的音阶对应的 MIDI 音符编号
# A 为 69,B 为 71,D 为 74,E 为 76,G 为 79,高八度 A 为 81
a_shang_mode_notes = [69, 71, 74, 76, 79, 81]
# 每个音符的持续时间(以 ticks 为单位,这里设置一个四分音符为 480 ticks)
note_duration = 480
# 每个音符的力度
velocity = 64
# 依次添加每个音符的开启和关闭消息到音轨
for note in a_shang_mode_notes:
track.append(Message('note_on', note=note, velocity=velocity, time=0))
track.append(Message('note_off', note=note, velocity=0, time=note_duration))
# 添加结束消息
track.append(mido.MetaMessage('end_of_track'))
# 保存 MIDI 文件
mid.save('a_shang.mid')
- 为什么 主音落在A上
- 为什么 还是 商调式 呢?
- 把所有音符选中
- 平行向上移动
- 就得到了 D商
- 商调式 的本质是什么呢?
- 调式 的本质 是 音阶的音程关系
- 西方c大调 全全半全全全半
- 商调式 指的是 固定的音程关系
- 那主音 有什么用呢?
- 有人嗓子高 有人嗓子低沉
- 可以 升调
- 也就是 把主音 升上去
- 就像 卡拉ok 里一样 升降
- Ab商 指的是
- 主音 在Ab上的
- 商调式
- 这次我们了解了
- 中国五声调式
- 宫商角徵羽 五种调式
- 一次 可以把五种调式 全写出来吗?
- 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。













