Skip to content

Latest commit

 

History

History
298 lines (204 loc) · 6.77 KB

File metadata and controls

298 lines (204 loc) · 6.77 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0105
- 这是 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` 
---

回环诗_旋律模进_开嗓音频生成_sequence

回忆

  • 配套视频
  • 上次研究了 首尾吟
    • 事情总是 绕圈重复
    • 我们需要 找到规律

图片描述

  • 文字 除了 首尾呼应之外
    • 也可以 层叠递进 吗?

回环

  • 五个字组成字符串
    • 循环起来

图片描述

  • 可以 来个 七言 的 吗?

回圜文

  • 苏东坡赏花后作了前两句

赏花归去马如飞 - 去马如飞酒力微”

  • 故意留尾让苏小妹续接

图片描述

  • 苏小妹一眼识破回环逻辑
    • 补上后两句

酒力微醒时已暮 - 醒时已暮赏花归

  • 让全诗形成完整循环
    • 苏东坡对此十分赞赏

前后有重叠

图片描述

  • 可以用切片的方法
    • 得到 这首诗 吗?
poem = "赏花归去马如飞酒力微醒时已暮赏花归"

python角度理解

poem[0:7]
poem[3:10]
poem[7:14]
poem[10:18]
  • 间距并不相等

图片描述

  • 赏花归 出现了 2次
    • 可以只出现 1次 吗?
poem = "赏花归去马如飞酒力微醒时已暮"

再压缩

poem[0:7]
poem[3:10]
poem[7:14]
poem[10:] + poem[:3]
  • 压缩成功

图片描述

图片描述

  • 能谱个曲子吗?

生成

图片描述

import mido
from mido import Message, MidiFile, MidiTrack

# 创建MIDI文件,设定默认PPQN=480(四分音符=480tick,二分音符=960tick)
mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)

# 初始化:120BPM速度 + 选择竹笛音色(贴近羽调式古风,program=73)
track.append(mido.MetaMessage('set_tempo', tempo=mido.bpm2tempo(120)))
track.append(Message('program_change', program=73, time=0))

# 核心配置:
# 1. 五声羽调式(以D为羽音,对应音高:D4-F4-G4-A4-C5,符合回环柔和的调性)
# 2. 诗句对应旋律:4句诗共用核心动机,第4句旋律回归第1句,实现回环
pitch_map = {
    # 第1句:赏花归去马如飞
    "赏": 62, "花": 65, "归": 67, "去": 69, "马": 72, "如": 69, "飞": 67,
    # 第2句:去马如飞酒力微(复用第1句后4字旋律,自然衔接)
    "酒": 67, "力": 65, "微": 62,
    # 第3句:酒力微醒时已暮(复用第2句前3字旋律,铺垫回环)
    "醒": 62, "时": 65, "已": 67, "暮": 69,
    # 第4句:醒时已暮赏花归(复用第3句前4字+第1句前3字旋律,完成回环)
    "赏": 62, "花": 65, "归": 67
}

# 完整28字回文诗文本
poem = [
    "赏", "花", "归", "去", "马", "如", "飞",  # 第1句(7字)
    "去", "马", "如", "飞", "酒", "力", "微",  # 第2句(7字)
    "酒", "力", "微", "醒", "时", "已", "暮",  # 第3句(7字)
    "醒", "时", "已", "暮", "赏", "花", "归"   # 第4句(7字)
]

# 生成音符事件:前6字四分音符(480tick),尾字二分音符(960tick)
for i, char in enumerate(poem):
    pitch = pitch_map[char]
    # 音符按下(音量中等,velocity=70)
    track.append(Message('note_on', note=pitch, velocity=70, time=0))
    # 判断是否为句尾字(第7、14、21、28字),设置对应时长
    if (i + 1) % 7 == 0:
        track.append(Message('note_off', note=pitch, velocity=70, time=960))  # 尾字:二分音符
    else:
        track.append(Message('note_off', note=pitch, velocity=70, time=480))  # 非尾字:四分音符

# 保存MIDI文件
mid.save('huihuan_poem_yu_mode.mid')
print("28字回文诗羽调式MIDI已生成:huihuan_poem_yu_mode.mid")

填词

赏花归去马如飞
去马如飞酒力微
酒力微醒时已暮
醒时已暮赏花归

图片描述

回圜道

poem = "天香荡水动心莲合梦缘"
  • 应该如何提取切片呢?

图片描述

  • 这有啥 应用场景吗?

总结会

  • 用 生成 回环诗 总结
    • 比 哪些 那ai生成 顺口溜的
    • 高级多了

图片描述

  • 怎么生成呢?

生成回环文

  • 回环文

图片描述

  • 历史上
    • 写回环诗
    • 比较出名呢?

苏慧

  • 前秦时期才女 苏蕙所作

图片描述

  • 窦滔 赴任襄阳 要带小妾

分别

  • 苏蕙 是 正妻
    • 不高兴 拒绝同行

图片描述

  • 独守空房
    • 将璇玑图织于锦缎之上
    • 寄予其夫

璇玑图

  • 八百四十一字
    • 纵横各二十九字
    • 纵、横、斜、交互、正、反读或退一字、迭一字读均可成诗

图片描述

  • 诗有三、四、五、六、七言不等

    • 共有一千多种成诗方法
  • 其他艺术形式也有类似的吗?

脱口秀

  • 这种重复性的 节奏感
    • 在 脱口秀里面 叫做 callback
    • 反复刺激

图片描述

  • 还有吗?

相声

  • 绕口令
    • 元素的重复
    • 排列组合
    • 构成乐趣

图片描述

相声

  • 相声叫一挂到底

图片描述

  • 就问你 什么 叫
    • 雨打沙滩 万点坑

绕口令

  • 《吃葡萄不吐葡萄皮》

    • 吃葡萄不吐葡萄皮
    • 不吃葡萄倒吐葡萄皮
  • 《牛郎恋刘娘》

    • 刘娘念牛郎
    • 牛郎年年恋刘娘
    • 刘娘连连念牛郎
    • 郎恋娘来娘念郎
  • 《水连天》

    • 天连水,水连天
    • 水天一色望无边
    • 蓝蓝的天似绿水
    • 绿绿的水如蓝天
  • 还有吗?

电影

图片描述

总结🤔

  • 这次研究了 回环文
    • 绕圈读
    • 文字 重叠 反复

图片描述

  • 这些都是由 列表构成的
    • 列表 还能怎么玩呢?🤔
  • 下次再说 👋
  • 配套视频

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。