105Python 拆解千年回环诗!解锁文字循环的编程逻辑

回环诗_旋律模进_开嗓音频生成_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

    • 反复刺激

图片描述

  • 还有吗?

相声

  • 绕口令

    • 元素的重复

    • 排列组合

    • 构成乐趣

图片描述

相声

  • 相声叫一挂到底

图片描述

  • 就问你 什么 叫

    • 雨打沙滩 万点坑

绕口令

  • 《吃葡萄不吐葡萄皮》

    • 吃葡萄不吐葡萄皮

    • 不吃葡萄倒吐葡萄皮

  • 《牛郎恋刘娘》

    • 刘娘念牛郎

    • 牛郎年年恋刘娘

    • 刘娘连连念牛郎

    • 郎恋娘来娘念郎

  • 《水连天》

    • 天连水,水连天

    • 水天一色望无边

    • 蓝蓝的天似绿水

    • 绿绿的水如蓝天

  • 还有吗?

电影

图片描述

总结🤔

  • 这次研究了 回环文

    • 绕圈读

    • 文字 重叠 反复

图片描述

  • 这些都是由 列表构成的

    • 列表 还能怎么玩呢?🤔

  • 下次再说 👋

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值